skill: spool four lessons from this pass - #3327
Conversation
Refs #3236 Written with `tri skill add`, and deliberately NOT folded. A branch that runs `add` and `fold` together still picks its number against its own base and collides exactly like a direct append -- which is what the guard in #3323 refuses, correctly. Folding happens after the merge, on one branch, with the file in front of it. - a repair reveals the defect standing behind it coq-proofs: OPAMROOT fixed the first error and the job then failed on a package conflict that had never been printed in this repository, because opam had never got as far as computing a solution. "Fixed" and "green" are different claims. - a trigger that omits its own file cannot verify its own repair coq-proofs listed itself in `push:` paths and not in `pull_request:`, so a PR repairing it could not run it and any repair shipped unverified. - a diagnosis ages, and two of my four did not survive the log lean-proofs is not misconfigured (the two failures are marked LEFT FAILING, DELIBERATELY in the source) and release.yml was on a never-green list after run 33180327861 succeeded. Re-read the failure before applying a stored fix, including one you wrote. - the population is the spelling on disk, not the one you joined skill_files() read 3 of 5 tracked skill files; 2 are spelled `skill.md`, and on a case-insensitive filesystem it found them under a name git does not have. Both carry zero numbered headings, so the missing population was empty -- luck, not design. The spool already held one file from an earlier pass, so it is accumulating rather than being a tool nobody reaches for. `tri skill spooled --gate` 0 (this branch adds no section) - `skill check` 0 - `skill refs` 0.
|
📓 NotebookLM Notebook linked to this PR
This notebook contains session context, decisions, and artifacts for this work. |
Refs #3236 While building the guard in #3323, a control built two commits with `git add -A` and cleaned up with `git reset --hard $BASE~1`. That swept an uncommitted fix into the discarded commit. Every control passed, the PR body described the fix, and the branch did not carry it -- visible only from `git cat-file` on the pushed head. Second instance this session of a git command chosen for safety destroying work, after `git checkout HEAD@{1} -- <files>`. Both were cleanup steps, both exited zero, both were invisible until the tree was read on purpose.
|
📓 NotebookLM Notebook linked to this PR
This notebook contains session context, decisions, and artifacts for this work. |
PR DashboardGenerated at: 2026-09-05 18:58:24 UTC
Summary
Seal Status
|
Refs #3236 The first `tri skill fold` ever run from master. One spooled lesson became section 596, numbered against SKILL.md as it stands at this moment, and its spool file was deleted in the same commit. The diff is the point: .claude/skills/ci-gates/SKILL.md | 46 ++++++++++++++++++++++ incoming/2026-09-05-i-said-master-was-green-...md | deleted 46 insertions, ZERO deletions in SKILL.md, and one spool file removed. That one-section-per-spool-file shape is what makes a fold distinguishable from a direct append in a branch diff, and it is the whole reason the number can be assigned here rather than on a feature branch: this runs once, on one branch, with the file in front of it, so two branches cannot pick the same number. The lesson folded is the one about reporting "master is green" after reading two of sixty-three workflows -- 40 success, 11 failure, 12 never ran, with `Issue Gate` among the eleven and supplying one of the four required contexts. `tri skill check` 554 -> 555 sections, exit 0. `tri skill refs` exit 0. Five more lessons are spooled in #3327 and will fold after that merges. Co-authored-by: lab <lab@example.com>
|
📓 NotebookLM Notebook linked to this PR
This notebook contains session context, decisions, and artifacts for this work. |
PR DashboardGenerated at: 2026-09-14 13:12:06 UTC
Summary
Seal Status
|
The branch was 146 commits behind and the ruleset requires it up to date. The required freshness gate accepts only an entry dated yesterday..tomorrow UTC, and the shape gate requires the heading date to match the filename. The five spooled lessons are unchanged. Refs #3236 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
|
📓 NotebookLM Notebook linked to this PR
This notebook contains session context, decisions, and artifacts for this work. |
PR DashboardGenerated at: 2026-09-14 13:15:38 UTC
Summary
Seal Status
|
|
📓 NotebookLM Notebook linked to this PR
This notebook contains session context, decisions, and artifacts for this work. |
PR DashboardGenerated at: 2026-09-14 13:30:11 UTC
Summary
Seal Status
|
Refs #3236
Written with
tri skill add, and deliberately not folded. A branch that runsaddandfoldtogether still picks its number against its own base andcollides exactly like a direct append — which is what the guard in
#3323 refuses, correctly. Folding
happens after the merge, on one branch, with the file in front of it.
This is the first use of the spool as designed, and it found that the spool
already held a file from an earlier pass — so the mechanism is accumulating
rather than being a tool nobody reaches for.
The four
a repair reveals the defect standing behind it —
coq-proofs:OPAMROOTfixed the first error and the job then failed on a package conflict
(
coq-interval = 4.9.0 -> coq < 8.19~on an 8.19 image) that had never beenprinted in this repository, because opam had never got far enough to compute a
solution. "Fixed" and "green" are different claims.
a trigger that omits its own file cannot verify its own repair —
coq-proofslisted itself inpush:paths and not inpull_request:, so a PRrepairing it could not run it, and any repair shipped unverified. A plausible
account of how it stayed broken since August.
a diagnosis ages, and two of my four did not survive the log —
lean-proofsis not misconfigured (both failures are marked
LEFT FAILING, DELIBERATELYinthe source) and
release.ymlwas on a never-green list after run33180327861had succeeded. Re-read the failure before applying a stored fix, including one
you wrote.
the population is the spelling on disk, not the one you joined —
skill_files()read 3 of 5 tracked skill files; 2 are spelledskill.md, and ona case-insensitive filesystem it found them under a name git does not have. Both
carry zero numbered headings, so the missing population was empty — luck, not
design.
tri skill spooled --gate0 ·skill check0 ·skill refs0.