fix(baton): inventory only live work — skip nested checkouts, ignore follow-up examples (#434, #431) - #435
Merged
Conversation
…follow-up examples (#434, #431) - Every Baton walker (unit inventory, coherence inventory, code scan) now stops at a sub-directory with its own .git entry: a linked worktree, a submodule or a nested clone is another checkout. On Estoa's local checkout one worktree under .worktrees/ inflated the inventory from 79 to 1946 tasks with 1839 duplicated unit ids (#434). - read_followups ignores HTML comments and fenced blocks, requires the canonical FU-<digits> id, and attaches metadata lines only to the entry heading right above them, so the shipped registry's commented FU-NNN example is no longer a unit (#431). Closes #434. Fixes the Baton half of #431; the CLI validator half ships with the follow-up writer work (#432). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
montfort
added a commit
that referenced
this pull request
Sep 18, 2026
…supported writer for follow-up work classification (#432) Track C asks follow-ups to declare Work verb / Design provenance, but the registry is CLI-owned and no verb could write those bullets (Estoa, #432). - `straymark followups declare FU-NNN --work-verb <v> [--design-provenance <p>]` writes an entry's declaration as one validated unit (provenance only with implement; omitting it removes a stale one; unchanged = no-op). - `followups new` takes the same flags; `followups status FU-NNN` shows them. - `straymark validate` stops warning on the registry template's commented example line (the CLI half of #431). - Skill (all mirrors), FOLLOW-UPS-BACKLOG-PATTERN x3, template note, CLI-REFERENCE x3, BATON.md x3 and the Track C kit document the writer. Closes #432. Closes #431 together with the Baton half in #435. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
montfort
added a commit
that referenced
this pull request
Sep 18, 2026
…supported writer for follow-up work classification (#432) (#436) Track C asks follow-ups to declare Work verb / Design provenance, but the registry is CLI-owned and no verb could write those bullets (Estoa, #432). - `straymark followups declare FU-NNN --work-verb <v> [--design-provenance <p>]` writes an entry's declaration as one validated unit (provenance only with implement; omitting it removes a stale one; unchanged = no-op). - `followups new` takes the same flags; `followups status FU-NNN` shows them. - `straymark validate` stops warning on the registry template's commented example line (the CLI half of #431). - Skill (all mirrors), FOLLOW-UPS-BACKLOG-PATTERN x3, template note, CLI-REFERENCE x3, BATON.md x3 and the Track C kit document the writer. Closes #432. Closes #431 together with the Baton half in #435. Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Merged
montfort
added a commit
that referenced
this pull request
Sep 18, 2026
Release the Track C fixes that landed after baton-0.2.0: task inheritance (#430), batch inheritance (#437) and inventory hygiene (#435). 0.3.0 rather than 0.2.1: the adopter already measured a from-source "0.2.1" without them, so reusing that number would blur its telemetry. The Track C kit now asks for baton >= 0.3.0 (and CLI >= 3.49 to declare follow-ups). Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
montfort
added a commit
that referenced
this pull request
Sep 18, 2026
…ject-wide walker skips nested checkouts (#434) (#440) Follow-up to #435 (Baton half). straymark-core's source scanner and two CLI walkers also read another checkout nested in the project — a linked worktree (`.worktrees/<name>/`), a submodule, a nested clone — as the project's own code: on an adopter repo, `architecture generate` invented a `.worktrees` component holding a full copy of it. - core: `walk::is_nested_checkout` (a sub-directory with its own `.git`) used by `architecture::collect_source_files` → architecture generate / sync / validate, status --where, Loom's architecture view + Intent plane, Baton's overlay. - cli: tree_grep (followups verify --claims, analyze declared-vs-wired) and the analyze walker use the same rule. - baton: reuses the core rule (behavior unchanged, no release). - straymark-core bound moved to 0.10.1 in cli, loom AND baton together. Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #434. Fixes the Baton half of #431; the CLI half (
straymark validatewarning on the template's example line) ships with the follow-up writer work for #432.What changes
.gitentry is another checkout: a linked worktree (.gitfile), a submodule, or a nested clone (.gitdirectory). All three Baton walkers now stop there:units::find_files(tasks and batch ledgers),coherence::Inventory::scanandcodescan::walk_code. They share one helper,scan::is_nested_checkout. The check is structural, so it needs no gitignore parsing and adds nothing for adopters to configure.read_followupschanges in three ways:FU-<digits>ID thatstraymark followupsalso uses;- **Label**:lines only to the entry heading directly above them. Before, a line under an unrelated###heading or inside an example could fill an earlier entry's field.Impact, measured read-only (git status unchanged)
main.worktrees/)Validation
cargo test -p straymark-baton --locked: 90 passed (84 existing + 6 new intests/inventory_hygiene.rs).dist/as data. The PR also includes the [adopter] Baton inventories the commented FU-NNN template as real work #431 reproduction and a mixed registry of live entries and examples.main.cargo clippy -p straymark-baton --all-targets --locked -- -D warningsis clean.straymark validatereports 0 errors..straymark/07-ai-audit/agent-logs/AILOG-2026-09-17-002-baton-inventory-hygiene.md.Not in scope
straymark_core::architecture::collect_source_fileshas the same blind spot. Fixing it needs acorebump that also touches the CLI and Loom.specs/inside the main tree, such as evidence snapshots, are still inventoried. Handling them would need an explicit exclude setting. That only makes sense if an adopter actually needs it.Independent of #430: it branches from
main, touches different functions, and uses a different AILOG ID.🤖 Generated with Claude Code