RE-CUT: Split the templates out of gauntlet.md into templates.md - #10
Conversation
c188608 to
1ad2280
Compare
|
Taking you up on your own offer: yes to the fields-only re-cut, independent of #9. Take
The templates split itself is fine by me if it comes independent of #9 — you are right that Leave out
One caution on the whole directionEvery field added to the EVIDENCE template is paid for by every future report, and the human reading it has a fixed attention budget. The four above earn it because each one lets a reader distinguish two states they would otherwise conflate. I would hold that as the bar for anything further: a field earns its place if its absence would let a reader believe something false, not if its presence would be nice to have. |
…ree ways gauntlet.md had become two documents read at different moments: how to run each layer, and the fill-in forms for SPEC and EVIDENCE. The file is loaded in full either way. `references/templates.md` now holds the Gherkin scenario template, the SPEC template, the EVIDENCE template, and the tracker roll-up; gauntlet.md keeps a pointer and drops 74 lines. Four fields come with it, each earning its place by the same test -- its absence lets a reader believe something false: - "Skipped layers" becomes "Layers not run as specified", split into N-A / UNAVAILABLE / SUBSTITUTED. One list collapses "no such surface here", "tool missing, nothing ran", and "something else ran, here is its blind spot" into one word. Those are three different confidence claims that currently read identically. - A Dismissed-findings section, one line each naming the command or file:line that disproves the finding. A fix carries its own evidence; a dismissal carries none, so "not a real problem" and "did not check" are indistinguishable. - A Structural-blind-spot line, naming the layer this project cannot run at all -- otherwise it reads as absent rather than accepted. - A `## Revisions` section in SPEC. The spec is required to be append-only and revised visibly, and there was nowhere to write the revision. The demo's evidence.md carried the exact conflation this fixes: mutmut replaced by tools/mutants.py (SUBSTITUTED) and shellcheck never run (UNAVAILABLE) sat under one "Skipped layers" heading, reading as the same claim. Relabelled; no numbers change, and evidence.md is not in source_state.sh's hashed set, so the recorded tree hash still holds. Not included, per the review on AmazingAng#10: the per-layer wall-clock column, and the Config header line that depended on the deferred config format. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1ad2280 to
fe4bf35
Compare
|
Re-cut per your review. The description at the top of this PR is the original one and no longer matches the diff — this comment is what the PR now contains. Restacked. The branch is cut fresh off Dropped, per your review: the per-layer wall-clock column, and the Config header line. What it carries now — the split, plus the four you named:
Each of the four carries its argument in the file itself rather than only here, since the file is what a future contributor reads when deciding whether a fifth field is worth it. What these do when they are broken. Straight answer: they are prose fields with no checker, so a writer who wants to misreport still can. What the split changes is the shape of the misreport. "Skipped: mutation" is vague enough to be written without deciding anything; A fifth field, which you did not name — flagging it rather than slipping it in. The EVIDENCE header gained one line: It exists because the tracker roll-up is in this PR and is otherwise unreportable: without the line, "a roll-up was posted", "one was written and deliberately withheld", and "the SPEC named no issue" are indistinguishable, and the first is an outward-facing action that happened. That is the bar you set, applied to a field you did not accept — so it is your call, and striking it costs this PR nothing. Say the word and it comes out. One change outside the skill directory. READMEs left alone deliberately. Both file-tree lines read |
|
@AmazingAng -- Ready for more feedback |
Three adjustments to the templates split, kept separate from the merge so the contributor's commit lands as written. - Defer tracker linkage. The roll-up section, the SPEC `Issue:` field and the EVIDENCE `Tracker:` line are removed for the same reason `.old-coder.toml` was deferred in #9: adding tracker integration changes what this skill is, and that is a positioning decision that should be made on its own rather than arriving inside a technical PR. The four accepted EVIDENCE fields do not depend on it. Nothing here is a quality judgement on the writing. - Move "commit the spec at approval" into SKILL.md step 1. It is a process rule, not a template, and spec rules living in two files will drift. Its argument — a compaction loses the approved contract while the code it authorized remains — is worth keeping. - Say "files the gauntlet will add **by path**" in step 1, matching the template. The two wordings had already diverged. Also correct a sentence in the demo evidence report that this PR falsified: commits after `8b88bda` no longer touch only `skills/`, since #10 edits the report itself. The tree-hash binding is unaffected — `evidence.md` is not in the set `source_state.sh` hashes — but the stated reason was wrong. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The roadmap said what each re-cut should contain but not how to perform one, so the mechanics were rediscovered per PR -- and AmazingAng#10 showed what that costs: the branch carried AmazingAng#9's commits, and the PR body advertised two fields the maintainer had already rejected, at the top of the page above his own review. Adds a procedure section ahead of the standing rules, in four parts: read the ruling from the PR rather than from this file's summary; build the branch by restacking on upstream and porting selectively (fork main is a superset, so the port selects and never copies); verify with the out-of-scope sweep, the dangling-reference hunt, and a context-free subagent whose findings are claims to check rather than verdicts; and publish by force-pushing to the existing head branch, prefixing the title RE-CUT:, banner-prepending the stale body instead of rewriting it, and posting a comment that discloses every addition beyond the accepted list. Each step names the defect that skipping it produces, and cites what it caught on AmazingAng#10 -- so the next re-cut can tell whether a step is doing work or is ceremony. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
1a is done: 37 lines cut to 12 carrying only the five rules the maintainer listed, repositioned below the thesis paragraph, +13/-1, pushed and left in draft for review. The old line said the re-cut "is not done yet", which the push made false within the hour -- the exact failure the status block exists to catch, so it gets corrected the same way it would for anyone else's stale entry. Also notes the procedure as validated twice rather than once. AmazingAng#7 exercised different steps than AmazingAng#10 did: a length and position constraint rather than a scope one, and a disclosed addition to a part the maintainer had said to keep as-is. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Upstream merged AmazingAng#9 (isolation) and AmazingAng#10 (templates split) and then moved on, so this brings back our own contributions in their edited form along with 19 commits of upstream work we did not have. Resolved toward upstream's wording wherever the meaning matched, per the bookkeeping rule. Where the fork's text was materially richer it stayed: - Isolation now uses upstream's three-paragraph form -- clearer than the fork's single block, and it is the shared text now, so keeping a variant would guarantee a conflict every sync. The fork's detection-chain pointer is appended to it. - The gauntlet.md Templates pointer takes upstream's fuller wording, with the tracker roll-up added back since the fork keeps that. - templates.md drops the spec-commit paragraph, which upstream moved into SKILL.md step 1. The fork already carried that rule there in a stronger form, so the two are structurally aligned rather than merely similar. - templates.md adopts upstream's tightened source-state rule: derive the tree hash from version-controlled inputs, fail on staged, unstaged, deleted or non-ignored untracked files, never hash ambient build artifacts. - The setup-plan bullet keeps the fork's version, which already required files named individually by path and adds the tooling audit upstream lacks. Kept as deliberate divergence: the tracker roll-up, the SPEC Issue field and the EVIDENCE Tracker line, all of which upstream removed in acc5a89 as a deferred positioning question rather than a rejection. The merge falsified five numbers in the demo's Orientation block, which is the mechanical check earning its place: upstream rebound the evidence to source state 4734451, so the summary's 8b88bda, 41 tests, 28/28 scenarios, 28 mapping rows and 13 layers were all stale against the tables below them. Now 4734451, 50 tests, 31/31, 31 rows and 15 layers, with the third harness self-test named. New from upstream: skills/old-coder-api (a second skill, 4 files), a Python source-state implementation with 229 lines of tests, and README refocus in both languages -- reworded to point at this fork and to list what this fork adds. Not verified by running the demo gauntlet: this worktree has no gitignored content, so no virtualenv, which is the exact trap the isolation paragraph describes. Rather than report green from a tree that never ran the suite, confirmed instead that every .py, .sh and .yml file is byte-identical to upstream after the merge -- the demo code carries no fork changes for a suite run to exercise. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
gauntlet.mdhad become two documents: how to run each layer, and the fill-in forms for SPEC and EVIDENCE. They're read at different moments — the layer guidance while building the gauntlet, the templates while writing the two artifacts the human actually reads — and the file gets loaded in full either way.So
references/templates.mdnow holds the Gherkin scenario template, the SPEC template, the EVIDENCE template, and the tracker roll-up.gauntlet.mdkeeps a two-line pointer and drops ~70 lines; SKILL.md's EVIDENCE step points at the new location.The templates also gained the fields this fork found it needed while running the loop:
file:linethat disproves the finding.Your Independent-verification EVIDENCE fields from #5 move across intact, with a note that they're prose and get no row in the layer table.
If you'd rather keep the templates inline in
gauntlet.md, the added fields are separable — say the word and I'll re-cut this as a fields-only PR.Part of a series from a fork that has been running this skill daily (drmikecrowe/old-coder).
🤖 Generated with Claude Code