Financial-Modeling has completed the convergence tracked downstream, and the audit is clean:
audit run 2026-07-31T01:46:35Z | hub 80a3c68
== Financial-Modeling (python, source-only; release) @ main@121e642 ==
1 repo(s) audited; 0 defect/letter/error finding(s).
It adopted the AGENTS.md router split, added GOVERNANCE.md with all 16 verbatim sections byte-identical to hub main, and extracted its repo-specific content to OPERATIONS.md. Seven items surfaced along the way that belong at the source. None of them blocked the convergence, and that repo stays green either way.
1. The no-coordination-references rule justifies itself with a fact that is no longer true
GOVERNANCE.md "Documentation Style Conventions" says a reference to the template repo is banned because "it is private, so a link 404s for a downstream repo's users". ProjectTemplate is public.
The rule is still right, on its other two grounds: the coordination flow is machinery a consumer should never see, and the present-tense rule independently forbids derived-from framing. Only the stated reason is wrong, and it is quoted verbatim into every carried repo. Suggest recasting the justification and letting the fleet re-vendor.
2. OPERATIONS.md is standardized in README but absent from the section model
README.md (backlog) standardizes OPERATIONS.md as "the operational-repo analogue of ARCHITECTURE.md" and notes HomeAssistant-Config and ESPHome-Config both extract to it. But spec/section-model.md still names only CODESTYLE and ARCHITECTURE as the extraction targets for repo-specific content.
A downstream agent following the section model alone picks the wrong destination. Financial-Modeling used OPERATIONS.md on the maintainer's instruction, not because the spec said so. Suggest recording it in the section model's topical-doc guidance, as the backlog item itself proposes.
3. The reference-style-links rule contradicts the file it is written in
"Documentation Style Conventions" states that every markdown file except AGENTS.md and .github/copilot-instructions.md uses reference-style links only, with "No inline [text](uri) targets in prose".
The hub's own GOVERNANCE.md uses inline links throughout, including lines 3, 14, and 47. So the rule is false in the file that states it, and every downstream repo inherits both the rule and the violation. Copilot flagged this independently on two separate PRs in Financial-Modeling, and it cannot be answered downstream: converting local docs would not make the rule true where it is written, and editing the rule breaks the byte match.
Suggest either adding GOVERNANCE.md to the exception list or converting it, whichever reflects the intent.
4. OPERATIONS.md needs adding to that same exception list
The exception exists for "the agent-instruction files ... which optimize for agents and keep inline links". OPERATIONS.md now holds exactly that: agent-instruction content extracted out of AGENTS.md by the split. It is not in the list, because it did not exist when the list was written. Related to item 2.
5. Verbatim sections violate the fleet's own no-clause-semicolon rule
A sweep of the carried GOVERNANCE.md finds clause-splicing semicolons in these verbatim sections:
| Section |
Example |
Branching Model |
"Feature branches -> develop is squash-only; develop is kept linear." |
PR Review Etiquette |
line 222, the mergeStateStatus: CLEAN bullet |
Workflow YAML Conventions |
four instances |
Supported Development Platforms |
"set by its dependencies, not tooling effort; decide it per repo" |
Editor and Tasks |
"maintained by the Markdown All in One extension; markdown.extension.toc.levels" |
Repository Details |
"Topics are optional; any that are present match..." |
This is the same class Financial-Modeling reported in round 2 item 7 and round 3, and A review flags an instance - fix the class was fixed since. The rest were not, so downstream Copilot reviews keep surfacing them one at a time, in a different section each round, and none are fixable downstream. The ask is a single sweep of all verbatim sections against the Documentation Style Conventions, rather than one fix per downstream report.
6. spec/audit.py cannot target a branch without editing the registry
groundTruthBranch is a registry field only. To verify a convergence before promoting, Financial-Modeling had to temporarily edit registry/repos.json in a local hub clone, run the audit, and restore it.
That is the difference between validating work pre-merge and discovering problems after main already moved. A --branch override on the CLI, leaving the registry as the default, would make pre-promotion self-checks routine for every repo. It is a read-only tool, so the override carries no risk.
7. This repo's registry driftNotes are stale
The audit reports them itself:
DRIFT registry: driftNote says 'pending' but the audit is clean
DRIFT registry: driftNote says 'owed' but the audit is clean
The "Release standup owed downstream: WORKFLOW.md, version.json + NBGV, source-only dispatch publisher, dependabot.yml, uv.lock LF pin" note is complete. Financial-Modeling carries all of it, and status is still cataloged. Suggest reconciling the notes and the status.
Two rules offered for promotion
Both were written in Financial-Modeling after the fault happened, both are absent from the canonical (confirmed by probing hub GOVERNANCE.md for their distinctive phrasing), and both look fleet-general rather than repo-specific. They are kept locally in OPERATIONS.md for now.
- Config with a uniqueness rule is validated on read, and its consumers assert what it promised. A repeated key in a lookup table is not a precedence question to resolve quietly, it is two answers to one question. Block it at read rather than keeping whichever came last.
- Validate and read on the same normalized key. A guard that compares stripped names while the join looks up the raw one passes a padded key and then matches nothing, which is precisely the fault the guard exists to stop, sitting inside the guard.
One note on the triage method, since it nearly went wrong
The nine governance sections that repo carried were not stale copies. They held 121 lines of local additions, so a mechanical re-vendor would have deleted them silently.
A word-overlap heuristic rated only 4 of those 121 lines as novel, because a repo-specific rule written in ordinary governance vocabulary reads as a reworded duplicate. Trusting it would have dropped both rules above plus a punctuation-substitution table. What worked was probing the canonical for each rule's distinctive phrase instead. If the fleet expects other repos to make this same transition, that distinction is worth stating in the migration guidance, because the cheap check is confidently wrong.
Financial-Modeling has completed the convergence tracked downstream, and the audit is clean:
It adopted the
AGENTS.mdrouter split, addedGOVERNANCE.mdwith all 16 verbatim sections byte-identical to hubmain, and extracted its repo-specific content toOPERATIONS.md. Seven items surfaced along the way that belong at the source. None of them blocked the convergence, and that repo stays green either way.1. The no-coordination-references rule justifies itself with a fact that is no longer true
GOVERNANCE.md"Documentation Style Conventions" says a reference to the template repo is banned because "it is private, so a link 404s for a downstream repo's users". ProjectTemplate is public.The rule is still right, on its other two grounds: the coordination flow is machinery a consumer should never see, and the present-tense rule independently forbids derived-from framing. Only the stated reason is wrong, and it is quoted verbatim into every carried repo. Suggest recasting the justification and letting the fleet re-vendor.
2.
OPERATIONS.mdis standardized in README but absent from the section modelREADME.md(backlog) standardizesOPERATIONS.mdas "the operational-repo analogue ofARCHITECTURE.md" and notes HomeAssistant-Config and ESPHome-Config both extract to it. Butspec/section-model.mdstill names onlyCODESTYLEandARCHITECTUREas the extraction targets for repo-specific content.A downstream agent following the section model alone picks the wrong destination. Financial-Modeling used
OPERATIONS.mdon the maintainer's instruction, not because the spec said so. Suggest recording it in the section model's topical-doc guidance, as the backlog item itself proposes.3. The reference-style-links rule contradicts the file it is written in
"Documentation Style Conventions" states that every markdown file except
AGENTS.mdand.github/copilot-instructions.mduses reference-style links only, with "No inline[text](uri)targets in prose".The hub's own
GOVERNANCE.mduses inline links throughout, including lines 3, 14, and 47. So the rule is false in the file that states it, and every downstream repo inherits both the rule and the violation. Copilot flagged this independently on two separate PRs in Financial-Modeling, and it cannot be answered downstream: converting local docs would not make the rule true where it is written, and editing the rule breaks the byte match.Suggest either adding
GOVERNANCE.mdto the exception list or converting it, whichever reflects the intent.4.
OPERATIONS.mdneeds adding to that same exception listThe exception exists for "the agent-instruction files ... which optimize for agents and keep inline links".
OPERATIONS.mdnow holds exactly that: agent-instruction content extracted out ofAGENTS.mdby the split. It is not in the list, because it did not exist when the list was written. Related to item 2.5. Verbatim sections violate the fleet's own no-clause-semicolon rule
A sweep of the carried
GOVERNANCE.mdfinds clause-splicing semicolons in these verbatim sections:Branching Modeldevelopis squash-only; develop is kept linear."PR Review EtiquettemergeStateStatus: CLEANbulletWorkflow YAML ConventionsSupported Development PlatformsEditor and Tasksmarkdown.extension.toc.levels"Repository DetailsThis is the same class Financial-Modeling reported in round 2 item 7 and round 3, and
A review flags an instance - fix the classwas fixed since. The rest were not, so downstream Copilot reviews keep surfacing them one at a time, in a different section each round, and none are fixable downstream. The ask is a single sweep of all verbatim sections against the Documentation Style Conventions, rather than one fix per downstream report.6.
spec/audit.pycannot target a branch without editing the registrygroundTruthBranchis a registry field only. To verify a convergence before promoting, Financial-Modeling had to temporarily editregistry/repos.jsonin a local hub clone, run the audit, and restore it.That is the difference between validating work pre-merge and discovering problems after
mainalready moved. A--branchoverride on the CLI, leaving the registry as the default, would make pre-promotion self-checks routine for every repo. It is a read-only tool, so the override carries no risk.7. This repo's registry driftNotes are stale
The audit reports them itself:
The "Release standup owed downstream: WORKFLOW.md, version.json + NBGV, source-only dispatch publisher, dependabot.yml, uv.lock LF pin" note is complete. Financial-Modeling carries all of it, and
statusis stillcataloged. Suggest reconciling the notes and the status.Two rules offered for promotion
Both were written in Financial-Modeling after the fault happened, both are absent from the canonical (confirmed by probing hub
GOVERNANCE.mdfor their distinctive phrasing), and both look fleet-general rather than repo-specific. They are kept locally inOPERATIONS.mdfor now.One note on the triage method, since it nearly went wrong
The nine governance sections that repo carried were not stale copies. They held 121 lines of local additions, so a mechanical re-vendor would have deleted them silently.
A word-overlap heuristic rated only 4 of those 121 lines as novel, because a repo-specific rule written in ordinary governance vocabulary reads as a reworded duplicate. Trusting it would have dropped both rules above plus a punctuation-substitution table. What worked was probing the canonical for each rule's distinctive phrase instead. If the fleet expects other repos to make this same transition, that distinction is worth stating in the migration guidance, because the cheap check is confidently wrong.