Skip to content

CODESTYLE.md links to GOVERNANCE.md "Running the Linters Locally", which stopped being a carried section #1075

Description

@ptr727

Evidence

CODESTYLE.md (carried intent, whole file) links to a GOVERNANCE.md anchor three times,
all via the same reference definition:

[governance-running-the-linters-locally]: ./GOVERNANCE.md#running-the-linters-locally-known-working-invocations
  • ## General > ### Clean-Compile Verification, first bullet ("Each linter's known-working
    invocation is in...")
  • Same subsection, third bullet ("What that gate must cover... is...")
  • ## Shell, closing sentence ("Run the clean-compile check itself per...")

Commit 86783b9 ("Route a Missing Lint Binary to Its Documented Docker Invocation", #1012,
2026-08-25) promoted Running the Linters Locally from a ### subsection of GOVERNANCE.md's
## Workflow YAML Conventions (a section spec/files.json declares verbatim) to its own
top-level ## heading. Neither spec/files.json nor spec/section-model.md was updated in
that commit (or since) to declare the new top-level section as carried:

$ git log --oneline -S"Running the Linters Locally" -- spec/files.json spec/section-model.md
(no output)
$ git show 86783b9 -- spec/files.json spec/section-model.md
(no output)

So the section silently stopped being part of anything downstream carries. It is not verbatim
(absent from files.json's GOVERNANCE.md sections list), and it is not documented as
hub-only either (spec/section-model.md's "Not carried (hub-only)" paragraph names only
Repository Onboarding and Conformance).

Reproduced live during PhotoCleaner's resync against hub b823bc4: re-vendoring
GOVERNANCE.md's declared-verbatim Workflow YAML Conventions section from the current hub
canonical correctly drops Running the Linters Locally from the downstream copy (it matches
Workflow YAML Conventions's current ## -to-## extent, which no longer includes it), which
leaves CODESTYLE.md's three links above resolving to an anchor the downstream GOVERNANCE.md
does not have.

Why this isn't caught automatically

CODESTYLE.md carries at intent fidelity, checked for presence and a staleness advisory only,
never for content (spec/fidelity-model.md). No mechanical check reads whether an anchor a
carried intent file names still resolves in the carrying repo's own tree, so this can drift
silently in every repo that completes a resync after #1012, with nothing short of a human
re-reading the carried text (as this session did) to surface it.

Expected

Either:

  1. Add Running the Linters Locally back to spec/files.json's GOVERNANCE.md sections list
    (it was verbatim before Route a Missing Lint Binary to Its Documented Docker Invocation #1012 by virtue of being nested inside a verbatim section, and
    nothing about Route a Missing Lint Binary to Its Documented Docker Invocation #1012's actual change, routing a missing-lint-binary agent to a Docker
    invocation, argues for un-carrying it), restoring the carry and making the existing
    CODESTYLE.md links resolve again everywhere; or
  2. Deliberately mark it hub-only in spec/section-model.md's "Not carried" paragraph, and fix
    CODESTYLE.md's three references to stop pointing at a repo-relative anchor no downstream
    repo carries (an absolute github.com/ptr727/ProjectTemplate URL, matching the convention
    AGENTS.md's skill-dependency paragraph and others already use for hub-local paths, or a
    pointer to wherever the destination this content now describes actually lives per-repo, e.g.
    each repo's own OPERATIONS.md "Local Verification").

Repo, ref, and run stamp

  • Hub: ptr727/ProjectTemplate at main@b823bc4 (as of this filing)
  • Surfaced during: ptr727/PhotoCleaner resync, audit run 2026-08-29T01:09:26Z | hub b823bc4
  • Worked around locally in that repo (not a hub fix) by repointing the three links at its own
    OPERATIONS.md#local-verification, since that section's content is what was migrated there
    during the same resync.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions