Skip to content

Move the templates out of gauntlet.md into templates.md - #10

Draft
drmikecrowe wants to merge 2 commits into
AmazingAng:mainfrom
drmikecrowe:contrib/templates
Draft

Move the templates out of gauntlet.md into templates.md#10
drmikecrowe wants to merge 2 commits into
AmazingAng:mainfrom
drmikecrowe:contrib/templates

Conversation

@drmikecrowe

Copy link
Copy Markdown
Contributor

⚠️ Stacked on #9 (config/isolation). Until that merges, this PR's diff shows #9's commits too. Review the top commit only, or merge #9 first and this will shrink to its own +238/-74.

gauntlet.md had 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.md now holds the Gherkin scenario template, the SPEC template, the EVIDENCE template, and the tracker roll-up. gauntlet.md keeps 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:

  • A Revisions section in SPEC. Spec drift is supposed to be visible, which needs somewhere to write it down.
  • A Config line and per-layer wall-clock in the EVIDENCE header.
  • "Layers not run" split into N-A / UNAVAILABLE / SUBSTITUTED, because those mean very different things to a reader — no such surface here, tool missing and nothing ran, versus something else ran and here's what it can't detect.
  • A Dismissed-findings section. Fixes are self-evidencing; dismissals are not. One line each, naming the command or file:line that disproves the finding.
  • A Structural-blind-spot line naming the layer this project cannot run at all (e.g. "the suite never exercises the container runtime, so nothing here is evidence about deployment behaviour").

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

drmikecrowe and others added 2 commits August 12, 2026 11:43
…r's tree

Two things this skill relies on but never wrote down: where per-repo settings
live, and how work is kept out of the user's working tree.

`references/setup.md` (new) documents an optional `.old-coder.toml`:
`isolation`, `install`, `commit`, `commit_args`, `tracker`, `artifacts`, and
`[commands]`. Nothing blocks on it -- absent, everything defaults to `propose`
and `isolation = "auto"`.

The part worth arguing about is the restrict-only asymmetry. A TRACKED config
may tighten permissions and never loosen them: `install = "allow"` in a
committed file is ignored, because otherwise cloning a repo would hand its
config authority over the machine that cloned it. Grants live only in a
gitignored or absolute-path config, where they are the machine owner's
statement rather than the repo author's.

Alongside it, the permission rule stated once: an operation proceeds if policy
permits it AND (it is reversible OR an approver is present). Policy can grant
standing permission; it cannot manufacture a human. The consequence matters for
unattended runs -- with `propose` and nobody present, skip the operation, record
the consequence, and continue. A run that halts on configuration produces
neither code nor evidence.

Isolation is stated as an invariant rather than a mechanism: do not mutate the
user's working tree to do your work. The trap is worth the paragraph it gets --
a fresh worktree contains no gitignored content, so the gauntlet frequently
cannot run there until dependencies are rebuilt, and the tempting move is to
report green from a tree that never ran the suite.

That trap has a second half: an isolated tree and the tree the change lands in
can differ by ignored content, so a green worktree run is not automatically
evidence about the main tree. That gets one sentence here, and EVIDENCE says
when it applies. An executable layer for it is a heavier proposition and is
deliberately not in this PR.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
gauntlet.md had become two documents: how to run each layer, and the fill-in
forms for SPEC and EVIDENCE. They are 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 is loaded in full either way.

So `references/templates.md` now holds the Gherkin scenario template, the
SPEC.md template, the EVIDENCE.md template, and the tracker roll-up. gauntlet.md
keeps a two-line pointer and drops 70 lines, and SKILL.md's EVIDENCE step points
at the new location.

The templates gained the fields this fork found it needed while running the loop:
a Revisions section in SPEC (spec drift is supposed to be visible, which needs
somewhere to write it), a Config line and per-layer wall-clock in the EVIDENCE
header, a split of "layers not run" into N-A / UNAVAILABLE / SUBSTITUTED because
those mean different things to a reader, a Dismissed-findings section (fixes are
self-evidencing, dismissals are not), and a Structural-blind-spot line naming
the layer this project cannot run at all.

Depends on the config/isolation PR: the templates reference `setup.md` for the
artifact directory layout and the `tracker` setting.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@AmazingAng

Copy link
Copy Markdown
Owner

Taking you up on your own offer: yes to the fields-only re-cut, independent of #9.

Take

  • N-A / UNAVAILABLE / SUBSTITUTED. The current "skipped layers" collapses three things a reader needs to tell apart — no such surface here, versus tool missing and nothing ran, versus something else ran and here is what it cannot detect. The second and third are very different confidence claims and right now they read identically. This one I would take even on its own.
  • Dismissed findings. "Fixes are self-evidencing; dismissals are not" is the right principle, and one line each naming the command or file:line that disproves the finding is the right cost. It is the same rule the verification protocol already applies to attack lists: say what you tried, not only what you found.
  • The structural blind-spot line. Naming the layer a project cannot run at all is exactly the kind of thing that otherwise reads as absent rather than accepted.
  • The Revisions section in SPEC. Spec drift is required to be visible and there was nowhere to write it. Fair.

The templates split itself is fine by me if it comes independent of #9 — you are right that gauntlet.md is two documents read at different moments.

Leave out

  • Per-layer wall-clock. EVIDENCE is one of the two artifacts a human actually reads, and we just pruned spec.md from 339 to 255 lines for exactly that reason. Timing per layer is diagnostics, not evidence about the code; it costs a column in the table everyone must read to buy information almost nobody acts on.
  • The Config header line. Depends on Config and isolation: where settings live, and staying out of the user's tree #9's config format, which is deferred pending a positioning decision — see my note there.

One caution on the whole direction

Every 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.

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.

2 participants