fix(source-control): state well-known rung git-tracked requirement on both surfaces - #1192
Conversation
… both surfaces #1185's P1 review hardening — the well-known rung activates only for a git-tracked file — landed only in the enforcement resolver bash. The two spec surfaces the model reads still described rung 2 as firing "when that file exists", and config-resolution.md claimed the drafting and enforcement surfaces were "identical" — false after the fix. That left a real divergence: a repo with an untracked/gitignored well-known file and a different markdown-H2 subject_pattern would have drafting resolve the untracked file while enforcement skips it, so the plugin drafts commits its own gate rejects. Add the git-tracked requirement (and how the drafting reader checks it, git ls-files --error-unmatch) to config-resolution.md, the commit-convention seam README, and the setup SKILL.md gotcha. Docs-only — the resolver already enforced tracked; this makes the specs match it and "identical on both surfaces" true again. source-control 0.25.0 -> 0.25.1. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
Claude finished @kyle-sexton's task in 1m 15s —— View job PR Review
This is a clean docs-only patch that closes the spec/implementation gap introduced by #1185. The enforcement resolver already required git-tracked; this PR makes the three documentation surfaces say the same thing. Review below. Correctness The core claim — rung 2 fires only when the well-known file is git-tracked — is accurately reflected in all three edited surfaces now:
All three now point to One formatting nit in
The surrounding prose wraps at ~96 characters; this line is well over that. The original had this content split across two lines. Non-blocking, but worth rewrapping for readability consistency with the rest of the block. Fix this → Version bump
Changelog The 0.25.1 entry is accurate, references the predecessor PR (#1185), and explains both what was wrong and that the resolver was already correct. No issues. Security / other concerns None. No code paths changed; no secrets, PII, or external egress introduced. Overall: LGTM. The one formatting nit is cosmetic and doesn't block merge. |
|
Claude finished @kyle-sexton's task in 1m 4s —— View job Security Review — PR #1192
No security issues found. This is a docs-only PR (5 markdown files + a semver bump in Shell command introduced in docs The only new shell invocation documented across the three changed markdown files is: ( This is a safe, read-only git plumbing call with a hardcoded repo-relative path — no user-controlled input, no shell expansion surface, no exec side-effects. It exits non-zero when the file is absent/untracked; the documentation correctly describes that exit code as the "skip rung 2" signal. There is no injection risk. plugin.json Change is a single field: Secrets / credentials None present anywhere in the diff. GitHub Actions / workflows No workflow files touched. Security posture assessment The PR strengthens the existing posture: it closes the spec gap where documentation claimed drafting and enforcement were "identical" while the enforcement resolver already enforced the git-tracked requirement and the drafting spec did not. A repo with an untracked/gitignored file at the well-known path could have had the agent draft commits its own gate would then reject — a drafting/enforcement divergence. Aligning both specs to require git-tracking and documenting the verification command is a correctness fix that also tightens predictability of the security gate. |
…ion (#1193) ## Summary Closes the #1187 provenance audit with a durable **decision record** in MIGRATION-PLAYBOOK, rather than a forgery-prone gate. **Finding:** in this solo-autonomous setup the operator and every agent act as the same `kyle-sexton` identity, so no in-repo signal (author / reviewer / merger / commit signature) distinguishes human ratification from agent accretion — a **repo-wide property**, not a per-seam defect. All 12 `docs/conventions/*` seams are PR-introduced and cite a ratifying issue/PR; none was silently accreted. **Decision:** decline `CODEOWNERS` / `human-ratified` label / signing gates under the shared identity — an agent satisfies the same gate, so they manufacture *false* assurance (theater). The only real distinguisher is a separate human-only identity/signing key agents don't hold; flagged as an infra option with a revisit trigger, **not imposed**. Interim posture: ratification stays trust-based and visible via cited issues/PRs + operator engagement, with the audit trail as the durable account. Docs-only (marketplace governance doc — no plugin shipped-content change, no version bump). ## Test plan - `lychee --offline docs/MIGRATION-PLAYBOOK.md` — clean. - Decision record follows the doc's existing dated-decision-record format. ## Related - Closes #1187 - Concludes the #163434 work stream (#1185 well-known path, #1190 config-cascade rename, #1192 cross-surface fix) 🤖 Generated with [Claude Code](https://claude.com/claude-code) --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Summary
#1185's P1 review hardening — the well-known convention-file rung activates only when the file is
git-tracked — landed only in the enforcement resolver bash. The drafting spec
(
config-resolution.md) and the commit-convention seam README still said rung 2 fires "when thatfile exists", and config-resolution.md claimed the surfaces were "identical" — false after the fix.
The drift it created: a repo with an untracked/gitignored well-known file + a different markdown-H2
subject_pattern→ drafting resolves the untracked file, enforcement skips it → the plugin draftscommits its own gate rejects. Exactly the two-surface divergence the design exists to prevent.
Adds the git-tracked requirement + how the drafting reader checks it (
git ls-files --error-unmatch)to config-resolution.md, the seam README, and the setup SKILL.md gotcha. Docs-only — the resolver
already enforced tracked; this makes the specs match and "identical on both surfaces" true again.
source-control
0.25.0 → 0.25.1.Test plan
lychee --offlineclean on the three edited docs.scripts/check-changelog-parity.sh --check-bump origin/main— bump has an entry.Related
🤖 Generated with Claude Code