Skip to content

Four Procedure and Layout Defects in Carried Text That Need a Decision, Not a Reword #1155

Description

@ptr727

Found by the canonical-content review pass on the PR for #1075/#1120/#1114/#1119/#1129/#1078. The path-qualification defects that pass found are fixed there; these four need a decision about what the text should say, so they are filed instead.

1. repo-worktree forbids in one unit the command it requires in another

The Base Branch says of the base clone:

outside "Listing and Cleanup"'s own terminal step below, nothing else does: never checkout, pull, reset, commit, or any other command that mutates its own working tree, index, or HEAD while a task is in progress.

Creating a Worktree says, of a continuation whose branch is already checked out somewhere:

Return that checkout to its own working branch first when its tree is clean, and stop when it is not, because a dirty tree there may be another task's uncommitted work.

When the "somewhere" is the base clone, which is the case the mandate exists for, the two units give opposite instructions and neither states an exception. The reader either stalls or performs the base-clone checkout the first sentence forbids.

Mechanically the switch is already permitted: gh-write-guard.py exempts checkout <ref>/switch <ref> carrying no force flag, and The Base Branch names that exemption. So only the prose conflicts, and prose is the only layer that binds a non-Claude-Code agent. What it needs is one sentence saying which unit wins.

2. resync-a-repo omits the --branch flag its own cited procedure requires

The skill says:

Then run the audit end to end, RESYNC.md section 2, against the target's main branch, never develop. A finding is a snapshot, so quote the run stamp in anything derived from it and re-run before acting on a finding read earlier in the session.

RESYNC.md section 2 documents python3 spec/audit.py --branch <ref> <Repo> as "the supported way to read something else, and a resync is when it earns its place", because convergence lands on a feature branch and reaches main only after the maintainer merges. The skill names no flag.

Following both sentences literally fails mid-resync: a reader re-running the audit after applying fixes measures main, sees every finding their in-flight branch already fixed, and cannot tell converged work from outstanding work.

3. GOVERNANCE.md "Repository Layout" mis-describes two entries and omits two trees

The hub-only trees now carry their qualifier, but three content problems remain.

.github/workflows/ is described as:

this repo's own lint-only CI and source-only release, the workflow contract it dogfoods.

The directory also holds the fleet's reusable task workflows every downstream repo calls (build-release-task.yml, validate-task.yml, deploy-site-task.yml among others), which this does not account for. In a carrier the same line asserts that repo's CI is lint-only and its release source-only, which is wrong for every csharp, python, docker and hugo repo in the fleet.

docs/ is described as holding "hub-only procedure and measurement docs", but STANDUP.md and RESYNC.md are hub-only procedure docs sitting at the repository root, and neither appears in the layout at all. A reader asking where the STANDUP.md that AGENTS.md "Fleet Bootstrap" routes them to lives is sent to docs/ and finds it is not there.

The section is the fleet's answer to "where a file belongs in the tree" and omits .agents/ and host-setup/, both cited by path from other canonical units. The omission is invisible because the list otherwise reads as complete.

4. Nothing lints .github/actions/**/action.yml

workflow-ci-contract "After Any Workflow Edit" tells the reader to run actionlint locally before pushing. That check covers only .github/workflows/*.yml|yaml: scripts/docker_lint.py's actionlint entry declares exactly those two patterns, and the raven-actions/actionlint step in .github/workflows/validate-task.yml passes no file list, so it uses the same default.

The hub holds nine composite actions under .github/actions/, and the same skill's "Reached, not carried" bullet makes them part of the workflow surface. A reader edits a composite action's action.yml, runs the prescribed check, gets a clean result that read zero of their changed files, and pushes a malformed action that surfaces only when a publish run executes it.

This is a gate gap rather than a wording one, which is why it is filed rather than patched: whether docker_lint.py and the CI step widen their patterns is a tooling decision.

Not This Issue

  • #1152 covers WORKFLOW.md section 4's contract claims.
  • #1153 covers CODESTYLE.md's language coverage.
  • #1154 covers the commit-subject length rule.

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

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions