Skip to content

fork-landing: shrink always-loaded AGENTS.md and generate the skill index from frontmatter (upstream #1341) - #29

Closed
sbracewell64 wants to merge 3 commits into
mainfrom
landing/18-doc-truth-fleet-lane
Closed

fork-landing: shrink always-loaded AGENTS.md and generate the skill index from frontmatter (upstream #1341)#29
sbracewell64 wants to merge 3 commits into
mainfrom
landing/18-doc-truth-fleet-lane

Conversation

@sbracewell64

Copy link
Copy Markdown
Owner

Fork-landing branch for the contribution currently open upstream as kunchenguid#1341.

This branch is a separate branch cut from fork main, carrying only that contribution's own changes. The shared branch fm/doc-truth-fleet-lane is not touched and remains at 81fb495, so upstream kunchenguid#1341 is unaffected.

Screening

Measure Result
Contribution's own changes 14 files, +658 / -151
Merge result vs fork trunk 14 files, +673 / -159
Trunk content lost none (trunk is an ancestor)

The merge result is larger by +15 / -8. That is the reconciliation, itemised below, not unexplained drift.

Conflict reconciliation

The contribution shrinks always-loaded AGENTS.md two ways, and trunk had since added content to both places.

The layout tree. The contribution replaces the inline directory tree with a short list of state facts that must survive with no other document loaded, delegating the rest to docs/configuration.md. Every trunk entry the tree carried was confirmed present in docs/configuration.md before the tree was dropped: config/models.json, the admission-control policy, the startup memory budget, the cmux socket password, the wedge alarm, Herdr presentation spaces, pending replies, and public follow-up. Nothing was lost.

The skill roster. The contribution replaces the hand-maintained roster with bin/fm-skill-index.sh, which renders triggers from each skill's own frontmatter. Verified empirically rather than assumed: the generator emits all 15 agent-only skills, including the two trunk added after this branch was cut (model-onboarding and fleet-admission). The generator is silent under claude by design, because that harness already injects skill descriptions; --force and --list-agent-only confirm the content.

One genuine integration defect, fixed here

bin/fm-doc-audience-check.sh passes on trunk alone and passed on the contribution alone, but failed once combined: the contribution tightens the check to require injection and responsibility on every inventoried surface, and five surfaces added on trunk after this branch was cut carried only audience.

Fixed in its own commit by classifying each of the five by its audience's established value — lazy for the two agent-only reference skills, referenced for the operator example, the operator guide, and the maintainer verification record. This is the +15 / -8 above.

Verification

  • bin/fm-doc-audience-check.sh clean: ok surfaces=64 local_links=181.
  • tests/fm-skill-index.test.sh: 6 cases, 0 failures.
  • bin/fm-lint.sh clean (ShellCheck 0.11.0).

…c ownership

Lane B of the documentation single-source-of-truth commission: reduce the
always-loaded contract to what only it can own, and convert the review's
ownership table from prose into a mechanically enforced artifact.

B1/B4 - AGENTS.md section 2 becomes a pointer plus safety lines.
The 9,407-byte fenced home tree restated docs/configuration.md, which already
declares itself the layout owner and explicitly pushes exact child fields to
each producing script's header. Every artifact the tree named was verified to
have such an owner before removal. What survives is what has no other owner:
the wake-event-not-truth rule, the never-touch watcher/auto-arm/sub-supervisor
classes, the check.sh execution-trust boundary, the scout report's survival of
teardown, and the corrected secondmates.md wording (created lazily by
fm-home-seed.sh, so absence means no secondmate is registered).

B2 - section 13 becomes a generated trigger index.
bin/fm-skill-index.sh renders the roster from each skill's own frontmatter,
selecting on user-invocable:false. It stays silent on harnesses that already
inject skill descriptions (claude, grok - both verified) and emits everywhere
else, including unknown harnesses: suppression requires positive evidence,
because a wrongly suppressed index silently removes every load trigger. A new
agent-only skill is now registered once, in its own frontmatter.

B3 - documentation-audiences.json gains injection and responsibility per
surface, and fm-doc-audience-check.sh requires both. The one-sentence limit on
responsibility is the enforcement: a surface needing two sentences owns too
much. The always-loaded set is now a queryable list rather than a claim.

Measured byte deltas (always-loaded plane):
  AGENTS.md   55,237 -> 45,071  (-10,166)
    section 2  10,777 ->  2,758  (-8,019; plan target -6,907)
    section 13  2,913 ->    605  (-2,308; plan target -2,927)
  Generated index costs 5,329 bytes only on non-injecting harnesses, so the
  net is -10,166 on claude/grok and -4,837 elsewhere.
  documentation-audiences.json grows 8,344 -> 17,081, never injected.

Certification: session-start smoke read under both a claude and an opencode
primary confirms no operator action lost its instruction; new
tests/fm-skill-index.test.sh (6 cases) covers suppression, emission, roster
derivation, folded-description rendering, and digest composition;
tests/fm-documentation-audiences.test.sh gains 2 cases for the required
fields; fm-lint.sh and fm-doc-audience-check.sh green.
The consolidated doc-ownership check requires an injection and responsibility
on every inventoried surface. Five surfaces added on the fork trunk after this
branch was cut carried only an audience, so the check failed once the two were
combined even though each side passed alone.

Classify them by their audience's established value: the two agent-only
reference skills lazy, the operator example, operator guide, and maintainer
verification record referenced.
@sbracewell64

Copy link
Copy Markdown
Owner Author

Closing. This was opened as a fork-landing branch cut from fork main.

The required PR must be raised via no-mistakes check reads a marker the pipeline itself writes into the PR body. The pipeline never validated this new head, so this PR cannot carry a genuine signature, and writing one by hand would forge an attestation. That makes a landing branch structurally unable to be legitimately green.

Superseded pending a captain ruling. The shared contribution branch and its open upstream PR were never modified.

@sbracewell64
sbracewell64 deleted the landing/18-doc-truth-fleet-lane branch August 2, 2026 18:56
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant