Found while resyncing ptr727/NxWitness against hub f3b4cc9. Filing rather than
changing anything here, per the resync's own "fix systemic drift in the hub instead"
rule. Nothing in this issue is a defect in NxWitness.
Context
NxWitness's AGENTS.md predates the AGENTS.md/GOVERNANCE.md router split, so it
still carries topical rule text inline. Running the
carried-instruction-file-guard distinctive-phrase probe over it against the hub
canonical (AGENTS.md, GOVERNANCE.md, CODESTYLE.md, WORKFLOW.md,
OPERATIONS.md, README.md) turned up rules that are absent from all six and
that read as fleet-wide rather than repo-specific. Those are listed below as
promotion candidates.
A caveat on the probe's reach: the hub has moved much rule text into
.agents/skills/*/SKILL.md, and the probe was scoped to the six Markdown files.
Candidates 5 and 7 are marked accordingly and want a second check against the named
Skill before anyone acts on them.
Promotion candidates
- The develop-leads-main-by-a-minor version cadence, with
bump-version-X.Y
as the PR convention. Release-model mechanics that GOVERNANCE.md "Release
Model" does not state.
- The maintenance-promotion version hold:
git checkout main -- version.json
when promoting a maintenance fix that must not carry develop's minor bump.
- The one-time floor bump carve-out, a deliberate maintainer-directed version
floor move during a build/release overhaul, stated as an exception to the
routine cadence.
- Mirror to
develop any change that lands on main outside the
feature -> develop -> main flow, with git diff origin/develop origin/main as
the concrete pre-work staleness check. The case is a security PR or hotfix
landing on main directly; GOVERNANCE.md "Branching Model" does not give this
check.
Closes #N belongs on the develop -> main promotion PR, not on the
feature PR or the develop PR, so the issue closes when the work actually
reaches main.
- The title-case bind-word list
(a, an, the, and, but, or, of, in, on, at, to, by, for, from) plus the hyphenated-compound rule. Check
comment-and-doc-style SKILL.md first.
file does not report CRLF for JSON, as a caveat on byte-checking line
endings. GOVERNANCE.md:185 covers the Python read/write flattening mechanism
but not this detection failure. Relevant now that the fleet is normalizing to
LF.
- The three-rounds heuristic: three review rounds on the same style category
means the rule is wrong, not the author, so flip the rule once and stick to it.
Check pr-review-conduct SKILL.md first.
One negative candidate
NxWitness's AGENTS.md "PR Review Etiquette" opens with a blockquote reading
"Mandatory in every derived repo ... carried verbatim". That directive belongs
to the pre-Skill carry model the hub has since retired. It should be deleted on the
downstream side rather than promoted, and it is worth checking whether any other
repo still carries the same blockquote and would re-assert a model the hub no
longer runs.
Two interface findings that look like drift and are not
spec/audit.py reports these against NxWitness:
DRIFT interface: .github/workflows/publish-release.yml missing required job 'publish'
DRIFT interface: .github/workflows/merge-bot-pull-request.yml missing required job 'merge-bot'
Both requiredJobKeys contracts in spec/files.json resolve, through
requireTokensInJob, to calling a hub-hosted task workflow
(build-release-task.yml, merge-bot-task.yml). NxWitness has not adopted either,
and spec/divergences.json already says of the release chain that "adoption is a
separate, later change per repo". NxWitness's own jobs are plan, get-version,
build-base, validate, build-docker, github-release, docker-readme-repos,
docker-readme for the publisher, and merge-dependabot, merge-codegen,
disable-auto-merge-on-maintainer-push for the bot merger. That shape is its
documented multi-image, shared-base fan-out.
So the finding is accurate about the contract and misleading about the remedy: a
repo could satisfy it by renaming a job, which would report conformance without
adopting anything. Worth considering whether a pre-adoption repo should report
these as a pending adoption class rather than DRIFT, the way the manifest
already distinguishes a LETTER from a DRIFT.
Not filed here
NxWitness's own convergence issue is separate and uses
python3 spec/audit.py --issue NxWitness. No audit report or registry change is
being written back to this repo as part of that resync.
Found while resyncing
ptr727/NxWitnessagainst hubf3b4cc9. Filing rather thanchanging anything here, per the resync's own "fix systemic drift in the hub instead"
rule. Nothing in this issue is a defect in NxWitness.
Context
NxWitness's
AGENTS.mdpredates theAGENTS.md/GOVERNANCE.mdrouter split, so itstill carries topical rule text inline. Running the
carried-instruction-file-guarddistinctive-phrase probe over it against the hubcanonical (
AGENTS.md,GOVERNANCE.md,CODESTYLE.md,WORKFLOW.md,OPERATIONS.md,README.md) turned up rules that are absent from all six andthat read as fleet-wide rather than repo-specific. Those are listed below as
promotion candidates.
A caveat on the probe's reach: the hub has moved much rule text into
.agents/skills/*/SKILL.md, and the probe was scoped to the six Markdown files.Candidates 5 and 7 are marked accordingly and want a second check against the named
Skill before anyone acts on them.
Promotion candidates
bump-version-X.Yas the PR convention. Release-model mechanics that
GOVERNANCE.md"ReleaseModel" does not state.
git checkout main -- version.jsonwhen promoting a maintenance fix that must not carry develop's minor bump.
floor move during a build/release overhaul, stated as an exception to the
routine cadence.
developany change that lands onmainoutside thefeature -> develop -> main flow, with
git diff origin/develop origin/mainasthe concrete pre-work staleness check. The case is a security PR or hotfix
landing on
maindirectly;GOVERNANCE.md"Branching Model" does not give thischeck.
Closes #Nbelongs on thedevelop -> mainpromotion PR, not on thefeature PR or the develop PR, so the issue closes when the work actually
reaches
main.(a, an, the, and, but, or, of, in, on, at, to, by, for, from)plus the hyphenated-compound rule. Checkcomment-and-doc-styleSKILL.md first.filedoes not report CRLF for JSON, as a caveat on byte-checking lineendings.
GOVERNANCE.md:185covers the Python read/write flattening mechanismbut not this detection failure. Relevant now that the fleet is normalizing to
LF.
means the rule is wrong, not the author, so flip the rule once and stick to it.
Check
pr-review-conductSKILL.md first.One negative candidate
NxWitness's
AGENTS.md"PR Review Etiquette" opens with a blockquote reading"Mandatory in every derived repo ... carried verbatim". That directive belongs
to the pre-Skill carry model the hub has since retired. It should be deleted on the
downstream side rather than promoted, and it is worth checking whether any other
repo still carries the same blockquote and would re-assert a model the hub no
longer runs.
Two interface findings that look like drift and are not
spec/audit.pyreports these against NxWitness:Both
requiredJobKeyscontracts inspec/files.jsonresolve, throughrequireTokensInJob, to calling a hub-hosted task workflow(
build-release-task.yml,merge-bot-task.yml). NxWitness has not adopted either,and
spec/divergences.jsonalready says of the release chain that "adoption is aseparate, later change per repo". NxWitness's own jobs are
plan,get-version,build-base,validate,build-docker,github-release,docker-readme-repos,docker-readmefor the publisher, andmerge-dependabot,merge-codegen,disable-auto-merge-on-maintainer-pushfor the bot merger. That shape is itsdocumented multi-image, shared-base fan-out.
So the finding is accurate about the contract and misleading about the remedy: a
repo could satisfy it by renaming a job, which would report conformance without
adopting anything. Worth considering whether a pre-adoption repo should report
these as a pending adoption class rather than
DRIFT, the way the manifestalready distinguishes a
LETTERfrom aDRIFT.Not filed here
NxWitness's own convergence issue is separate and uses
python3 spec/audit.py --issue NxWitness. No audit report or registry change isbeing written back to this repo as part of that resync.