Skip to content

Promotion candidates and two interface gaps found resyncing NxWitness #1116

Description

@ptr727

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

  1. 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.
  2. The maintenance-promotion version hold: git checkout main -- version.json
    when promoting a maintenance fix that must not carry develop's minor bump.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    decisionNeeds the maintainer's decision before it can be worked

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions