task-pipeline-skill 1.16.1 → 1.17.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +98 -0
- package/CONTRIBUTING.md +16 -3
- package/README.md +23 -2
- package/SKILL-CARD.md +1 -1
- package/cursor/rules/task-pipeline.mdc +11 -1
- package/package.json +1 -1
- package/plugins/task-pipeline/.claude-plugin/plugin.json +2 -2
- package/plugins/task-pipeline/skills/task-pipeline/pipeline.example.json +2 -2
- package/plugins/task-pipeline/skills/task-pipeline/references/audit.md +16 -1
- package/plugins/task-pipeline/skills/task-pipeline/references/continuity.md +12 -0
- package/plugins/task-pipeline/skills/task-pipeline/references/conventions.md +65 -1
- package/plugins/task-pipeline/skills/task-pipeline/references/grill.md +1 -0
- package/plugins/task-pipeline/skills/task-pipeline/references/knowledge-sources.md +48 -0
- package/plugins/task-pipeline/skills/task-pipeline/references/learned.md +25 -2
- package/plugins/task-pipeline/skills/task-pipeline/references/portability.md +1 -0
- package/plugins/task-pipeline/skills/task-pipeline/references/stages.md +16 -3
- package/plugins/task-pipeline/skills/task-pipeline/templates/brief.md +1 -0
- package/evals/__pycache__/run.cpython-314.pyc +0 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,103 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v1.17.0 — 2026-08-06
|
|
4
|
+
|
|
5
|
+
**A carried-in claim is a recollection — `learned.md` rule 16, and the four places
|
|
6
|
+
it binds.**
|
|
7
|
+
|
|
8
|
+
A long autonomous run advanced one roadmap row per iteration and was correct every
|
|
9
|
+
time: gates green, defects planted and watched to fail, docs closed in the same
|
|
10
|
+
change. What was wrong was the sentence between the iterations — *"the remaining
|
|
11
|
+
rows are these"* — taken from a list that had reached the context through a
|
|
12
|
+
compaction, had once been a filtered subset, and had lost its provenance on the
|
|
13
|
+
way. Eleven iterations later one command over the register printed **36 open rows
|
|
14
|
+
out of 99**. Nothing had failed, because nothing compares a run's belief about the
|
|
15
|
+
work-list against the register: the claim only ever existed in prose.
|
|
16
|
+
|
|
17
|
+
The same class had already bitten that project twice from the other side, and its
|
|
18
|
+
own roadmap names the property — seven rows reading `blocked` on producers the
|
|
19
|
+
dependency board recorded as delivered, *"no gate can catch it because it breaks
|
|
20
|
+
nothing, it only removes work from consideration"*. **Stale state does not throw.**
|
|
21
|
+
It narrows what gets considered, and every downstream gate then passes honestly on
|
|
22
|
+
the smaller world.
|
|
23
|
+
|
|
24
|
+
Rule 8 was the neighbour and not the same rule: it governs a number *inside a
|
|
25
|
+
document*, checked when that document is. Rule 16 governs a fact that crossed a
|
|
26
|
+
**session boundary** and is being reported as current — where there is no document
|
|
27
|
+
to check, only a memory that reads like one.
|
|
28
|
+
|
|
29
|
+
What changed:
|
|
30
|
+
|
|
31
|
+
- **`references/learned.md`** — rule 16 with its incident, and two binding rows:
|
|
32
|
+
stage 0 harvest, and stage 10 plus every loop iteration.
|
|
33
|
+
- **`references/knowledge-sources.md`** — a new source (the task register, read for
|
|
34
|
+
its *state*, with a command) and a new section, *Carried-in claims — measured or
|
|
35
|
+
recalled*. Every inherited claim starts `recalled`; before it is acted on **or
|
|
36
|
+
reported to the operator** it is re-derived and marked `measured`, or it is not
|
|
37
|
+
stated. Three claims go stale most reliably and all three are cheap: the
|
|
38
|
+
work-list, `green`, and a blocker or premise.
|
|
39
|
+
- **`references/continuity.md`** — in loop mode the harvest's documents may be
|
|
40
|
+
carried between iterations; the work-list line may not, because the previous
|
|
41
|
+
iteration is what invalidated it. And *"next up is X"* in a closing report is a
|
|
42
|
+
claim about the board — the one sentence in the cycle no gate reads.
|
|
43
|
+
- **`references/audit.md`** — a third exit criterion at stage 10: the work-list is
|
|
44
|
+
re-measured and **printed beside the count the run opened with**. A pair of
|
|
45
|
+
numbers that has to agree cannot be filled in without looking, which is what
|
|
46
|
+
keeps the measurement load-bearing instead of ceremonial.
|
|
47
|
+
- **`references/grill.md`** + **`templates/brief.md`** — one autonomy-sweep row:
|
|
48
|
+
which register holds task state, and the command that reads it. Settled once; a
|
|
49
|
+
project without one records it empty and the rule costs nothing.
|
|
50
|
+
- **Guard + negative self-test** — the rule's own failure mode applied to itself:
|
|
51
|
+
doctrine carried in one file reads like doctrine in force. The validator names
|
|
52
|
+
each consumer, so a file that drops its citation fails rather than silently
|
|
53
|
+
ending the coverage. Guard count 119 → 120.
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
## v1.16.2 — 2026-08-06
|
|
57
|
+
|
|
58
|
+
### Added — a CI run is checked by reading it, not by assuming it
|
|
59
|
+
|
|
60
|
+
The bundle offered a place (`conventions.md`: *"CI: the workflow run."*) and a claim
|
|
61
|
+
(`release.verify`: *"CI green on the tagged commit"*) with no method between them.
|
|
62
|
+
Both are satisfiable by believing them, which is the class `gates.md` named in
|
|
63
|
+
v1.14.0: **an actor's own reply is not evidence about the world**, and the test —
|
|
64
|
+
*what does it print when it did not look?*
|
|
65
|
+
|
|
66
|
+
The occasion was v1.15.0's own release. `validate` was `completed/failure` on a push
|
|
67
|
+
to `main` and on the release tag. The failure was **correct**: the repository's own
|
|
68
|
+
*Every v\* tag must be contained in main* guard, firing on a tag that was not yet an
|
|
69
|
+
ancestor — precisely the defect v1.6.1 built it for. The guard worked, and **nothing
|
|
70
|
+
obliged anyone to read it**. A guard nobody reads is a fail-open hook with extra
|
|
71
|
+
steps; it surfaced only because the run happened to poll the API.
|
|
72
|
+
|
|
73
|
+
- **`conventions.md` gains *The CI verdict***: the commands (`gh run list … --json
|
|
74
|
+
databaseId,name,status,conclusion,headSha`, then `gh run view … --log-failed`), an
|
|
75
|
+
**unauthenticated fallback** on the `check-runs` API, and **three states** —
|
|
76
|
+
concluded, in progress (*"it was still running when I looked"* is a report, not a
|
|
77
|
+
verdict), and **no run found**, said out loud, because a project without CI is a
|
|
78
|
+
legitimate state and not a green one.
|
|
79
|
+
- **Read the log, not just the verdict.** A conclusion says *that* it failed; only the
|
|
80
|
+
log said *what* — the guard's name, the orphan tag and the one-line fix. A bare "CI
|
|
81
|
+
failed" hands the next reader a search the log had already finished.
|
|
82
|
+
- **Two paths because one credential died.** `gh`'s token expired mid-run that night,
|
|
83
|
+
and `gh auth status` reported it invalid from a **cached** verdict while `gh api
|
|
84
|
+
user` succeeded. The doctrine names the live call, never the status command.
|
|
85
|
+
- **Bound at stages 7, 8 and 9** — every stage of this flow that pushes. The incident
|
|
86
|
+
hit at the merge and again at the docs push; binding stage 8 alone would have caught
|
|
87
|
+
neither. The gates cite `conventions.md`; a guard rejects a second copy of the
|
|
88
|
+
commands.
|
|
89
|
+
- **It reports, it does not block** — the shape stage 8 already used for deploy logs.
|
|
90
|
+
Blocking would make a project *without* CI cheaper to ship from than one with it.
|
|
91
|
+
|
|
92
|
+
### Fixed — the negatives floor may no longer lag its own workflow
|
|
93
|
+
|
|
94
|
+
`MIN_EXPECTED` is a number in a living document, so rule 8 binds it: it must **equal**
|
|
95
|
+
the workflow's count, not merely sit below it. Its own comment records the first lag
|
|
96
|
+
(20 while the workflow carried 34); v1.15.0 was the second — four canon self-tests
|
|
97
|
+
landed and the floor stayed at 104 while the file carried 108. A floor below the count
|
|
98
|
+
cannot notice losing the difference, which is the entire job. Now guarded, and the
|
|
99
|
+
guard was watched rejecting a lowered floor.
|
|
100
|
+
|
|
3
101
|
## v1.16.1 — 2026-08-06
|
|
4
102
|
|
|
5
103
|
### Fixed — frontmatter that a regex called valid and a YAML parser silently dropped
|
package/CONTRIBUTING.md
CHANGED
|
@@ -235,7 +235,21 @@ commands and all three signal states — with a state missing, a graph that coul
|
|
|
235
235
|
be measured prints like a fresh one.
|
|
236
236
|
*(guard: `never requires it — a run passes intake quoting a`)*
|
|
237
237
|
|
|
238
|
-
**31.
|
|
238
|
+
**31. A CI run's verdict is read, never assumed — and every stage that pushes says so.**
|
|
239
|
+
`references/conventions.md` → *The CI verdict* keeps the commands, the unauthenticated
|
|
240
|
+
fallback and all three states; stages 7, 8 and 9 cite it rather than carrying a second
|
|
241
|
+
copy. A workflow run that nobody reads is the fail-open hook with extra steps: this
|
|
242
|
+
repo's own `validate` was red on a push to `main` and on a release tag, the guard that
|
|
243
|
+
failed was correct, and nothing obliged anyone to look.
|
|
244
|
+
*(guard: `never names it — the run it triggers is closed on an unread verdict`)*
|
|
245
|
+
|
|
246
|
+
**32. The negatives floor equals the workflow's count.**
|
|
247
|
+
`MIN_EXPECTED` is a number in a living document (rule 8). Below the count it cannot
|
|
248
|
+
notice losing the difference — it lagged at 20 against 34 once, and at 104 against 108
|
|
249
|
+
in v1.15.0.
|
|
250
|
+
*(guard: `a floor below the count is a floor that cannot`)*
|
|
251
|
+
|
|
252
|
+
**33. The evidence-docs navigator indexes the canons and never copies them.**
|
|
239
253
|
`skills/evidence-docs/SKILL.md` is a second skill in the same plugin: the ten canons as
|
|
240
254
|
a one-line index, a pointer to their one home, and a table of where to go next. The
|
|
241
255
|
guard holds the index to the doctrine's own list, requires the pointer, and resolves
|
|
@@ -243,8 +257,7 @@ every relative link **from the navigator's directory** — it sits one level ove
|
|
|
243
257
|
everything it names, which is canon 4 in the file that publishes canon 4.
|
|
244
258
|
*(guard: `index that has drifted from its doctrine`)*
|
|
245
259
|
|
|
246
|
-
**
|
|
247
|
-
This list claims to be *what the validator enforces*; it was eight guards behind when
|
|
260
|
+
**34. Every invariant above names the guard that enforces it, and that guard exists.**This list claims to be *what the validator enforces*; it was eight guards behind when
|
|
248
261
|
an audit measured it. A claim of enforcement is now checked like any other claim.
|
|
249
262
|
*(guard: `whose message does not appear in`)* — and a cited literal must lie inside
|
|
250
263
|
a **single** string in `test/validate.py`: the check reads that file as text, so a
|
package/README.md
CHANGED
|
@@ -58,7 +58,7 @@ Every gate is **typed**: `auto` — the orchestrator verifies it itself, pass/fa
|
|
|
58
58
|
|
|
59
59
|
| # | Stage | Gate | Type |
|
|
60
60
|
|---|---|---|---|
|
|
61
|
-
| 0 | Harvest + intake grill — **mandatory** | source ledger written
|
|
61
|
+
| 0 | Harvest + intake grill — **mandatory** | source ledger written **with the work-list measured, not recalled**; the documentation inventory answered into `docs/DOCMAP.md`; intent reconciled against as-built; shared understanding + autonomy sweep; brief locked | manual |
|
|
62
62
|
| 1 | Docs study | contracts grounded on current docs | auto |
|
|
63
63
|
| 2 | Brainstorm + decompose | design approved; UI verdict recorded; every REQ answered; platform: module map approved | manual |
|
|
64
64
|
| 3 | Spec | committed + reviewed; UI: super-ux chain validated, linter green | manual |
|
|
@@ -66,7 +66,7 @@ Every gate is **typed**: `auto` — the orchestrator verifies it itself, pass/fa
|
|
|
66
66
|
| 5 | Dev | tasks DONE (three review verdicts each), TDD green per task | auto |
|
|
67
67
|
| 6 | Tests | full suite green, new code covered | auto |
|
|
68
68
|
| 7 | Lint + deploy | lint clean + suite green before deploy | manual |
|
|
69
|
-
| 8 | Post-deploy | clean boot / honest degradation | auto |
|
|
69
|
+
| 8 | Post-deploy | clean boot / honest degradation, **and the CI verdict read rather than assumed** | auto |
|
|
70
70
|
| 9 | Docs + wiki | the propagation matrix walked and the documentation gate green with its ratchets printed; every stale source-ledger row updated; docs + wiki synced; the code graph refreshed and checked against the docs | auto |
|
|
71
71
|
| 10 | **Acceptance** | every REQ accounted for with evidence; every check leaned on seen failing once; operator signs off; the retro written — pruned before anything was added, every lesson carrying its commit | manual |
|
|
72
72
|
|
|
@@ -213,6 +213,27 @@ obsidian-wiki setup --vault /path/to/your/vault
|
|
|
213
213
|
It is a **recommendation, never a gate** — no stage blocks on a missing wiki, and
|
|
214
214
|
nothing asks twice in one run.
|
|
215
215
|
|
|
216
|
+
### The CI verdict — read the run, never assume it
|
|
217
|
+
|
|
218
|
+
A push either triggered a workflow run or it did not, and either way the run's own
|
|
219
|
+
reply is the only evidence. *"CI is green"* written without a command behind it prints
|
|
220
|
+
the same whether it looked or not.
|
|
221
|
+
|
|
222
|
+
This repository learned it the direct way: `validate` was `completed/failure` on a push
|
|
223
|
+
to `main` and on a release tag, the guard that failed was **correct** — a tag that was
|
|
224
|
+
not yet an ancestor of `main` — and nothing obliged anyone to read it. A guard nobody
|
|
225
|
+
reads is a fail-open hook with extra steps.
|
|
226
|
+
|
|
227
|
+
So stages 7, 8 and 9 — every stage of the flow that pushes — require the verdict to be
|
|
228
|
+
**read and quoted**: the conclusion with its run id, the failing step's log on anything
|
|
229
|
+
but success, and one of three states, including **`no run found`** said out loud,
|
|
230
|
+
because a project without CI is a legitimate state and not a green one. Two command
|
|
231
|
+
paths, authenticated and not, because a dead token must not end the check. It reports;
|
|
232
|
+
it does not block.
|
|
233
|
+
|
|
234
|
+
Method: [`conventions.md`](plugins/task-pipeline/skills/task-pipeline/references/conventions.md)
|
|
235
|
+
→ *The CI verdict*.
|
|
236
|
+
|
|
216
237
|
### The code graph — reach, and a second opinion on your docs
|
|
217
238
|
|
|
218
239
|
A grep finds a **name**. A graph finds **reach**: what actually calls this, what
|
package/SKILL-CARD.md
CHANGED
|
@@ -12,7 +12,7 @@ harmless.
|
|
|
12
12
|
|---|---|
|
|
13
13
|
| **Purpose** | Runs a substantial task through ten gated delivery stages — intake grill, docs study, brainstorm, spec, plan, subagent build, tests, lint/deploy, post-deploy, docs+registers, acceptance — refusing to advance until each gate passes |
|
|
14
14
|
| **Owner** | ssheleg ([github.com/ssheleg/task-pipeline](https://github.com/ssheleg/task-pipeline)) |
|
|
15
|
-
| **Version** | 1.
|
|
15
|
+
| **Version** | 1.17.0 |
|
|
16
16
|
| **Surface** | Claude Code (filesystem skill + plugin) and the vercel `skills` CLI. **Not** uploaded to the Skills API; custom Skills do not sync across surfaces |
|
|
17
17
|
| **Dependencies** | None required. Optional: `context7` (MCP), `figma` (MCP), super-ux, agent-sync, graphify, obsidian-wiki. Every stage's doctrine ships in-repo; the one conditional requirement is super-ux for the stage-3 UX track on a user-facing task |
|
|
18
18
|
| **Evaluation status** | Suite authored (15 evals, 5 categories). **Never executed** — see [`evals/RESULTS.md`](evals/RESULTS.md) |
|
|
@@ -243,7 +243,17 @@ not authorize an outward, irreversible action — stage 7 stops and asks.
|
|
|
243
243
|
outward → explicit user go, or the specific standing authorization recorded in
|
|
244
244
|
the stage-0 brief.
|
|
245
245
|
8. **Post-deploy** (auto) — tail logs / health-check; clean boot or an honest
|
|
246
|
-
degradation report (never silent success).
|
|
246
|
+
degradation report (never silent success). **Read the CI verdict, never assume
|
|
247
|
+
it** — `gh run list --branch <b> --limit 1 --json databaseId,name,status,conclusion,headSha`,
|
|
248
|
+
then `gh run view <id> --log-failed` on anything but success (unauthenticated
|
|
249
|
+
fallback: `curl -s https://api.github.com/repos/<owner>/<repo>/commits/<sha>/check-runs`).
|
|
250
|
+
Quote the conclusion with its run id, quote the failing step, and state one of
|
|
251
|
+
three states: concluded / in progress (wait and re-read — "it was still running"
|
|
252
|
+
is a report, not a verdict) / **no run found**, said out loud, because a project
|
|
253
|
+
without CI is a legitimate state and not a green one. Probe credentials with a
|
|
254
|
+
live call, never `gh auth status`, which answers from cache. This binds every
|
|
255
|
+
stage that pushes — 7, 8 and 9 — not just this one. It reports; it does not
|
|
256
|
+
block.
|
|
247
257
|
9. **Docs + wiki** (auto) — **the phase-1 source ledger is the work list**: every
|
|
248
258
|
source the harvest read gets updated if this run changed or disproved it. Module
|
|
249
259
|
docs and runbooks in the SAME change; the knowledge wiki via `wiki-update` when
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "task-pipeline-skill",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.17.0",
|
|
4
4
|
"description": "Full-cycle delivery pipeline for coding agents: a mandatory built-in intake grill, then 10 gated stages (docs, brainstorm+decompose, spec, plan, build, tests, lint/deploy, post-deploy, docs/wiki, acceptance). Every stage's doctrine ships inside the skill — no companion plugin required. This package is the installer CLI.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"task-pipeline": "bin/task-pipeline.js"
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "task-pipeline",
|
|
3
3
|
"displayName": "Task Pipeline",
|
|
4
|
-
"description": "Runs a substantial task through a mandatory built-in intake grill, then 10 gated stages (docs, brainstorm+decompose, spec, plan, subagent build, tests, lint/deploy, post-deploy, docs/wiki, acceptance). Every stage's doctrine is built into the skill
|
|
5
|
-
"version": "1.
|
|
4
|
+
"description": "Runs a substantial task through a mandatory built-in intake grill, then 10 gated stages (docs, brainstorm+decompose, spec, plan, subagent build, tests, lint/deploy, post-deploy, docs/wiki, acceptance). Every stage's doctrine is built into the skill \u2014 no companion plugin required \u2014 with typed auto/manual gates, a frozen requirement spine that must close with evidence, a loop guard that breaks churn, one provider-agnostic model confirmed up front, and an optional super-ux UX track for user-facing work.",
|
|
5
|
+
"version": "1.17.0",
|
|
6
6
|
"author": {
|
|
7
7
|
"name": "ssheleg",
|
|
8
8
|
"url": "https://x.com/sshlg93"
|
|
@@ -133,7 +133,7 @@
|
|
|
133
133
|
],
|
|
134
134
|
"gate": {
|
|
135
135
|
"type": "auto",
|
|
136
|
-
"check": "clean boot confirmed (no error spike, live subsystems healthy), or an honest degradation report with next steps"
|
|
136
|
+
"check": "clean boot confirmed (no error spike, live subsystems healthy), or an honest degradation report with next steps. THE CI VERDICT IS READ, NEVER ASSUMED (references/conventions.md -> The CI verdict): the run's conclusion for this commit is quoted with its run id, the FAILING STEP'S LOG is quoted on anything but success, and one of three states is stated — concluded / in progress (wait and re-read; 'it was still running' is a report, not a verdict) / NO RUN FOUND, said out loud, because a project without CI is a legitimate state and not a green one. 'CI is green' written without a command behind it prints the same whether it looked or not (references/gates.md -> False success). Two command paths, because a credential problem must not end the check: 'gh run list --branch <b> --limit 1 --json databaseId,name,status,conclusion,headSha' then 'gh run view <id> --log-failed', or unauthenticated 'curl -s https://api.github.com/repos/<owner>/<repo>/commits/<sha>/check-runs'. Probe credentials with a live call, never with 'gh auth status', which answers from cache. It reports, it does not block."
|
|
137
137
|
}
|
|
138
138
|
},
|
|
139
139
|
{
|
|
@@ -182,7 +182,7 @@
|
|
|
182
182
|
"npm publish (task-pipeline-skill) — a second job in the same workflow, armed per repository by the PUBLISH_NPMJS variable (NPM_TOKEN granular automation token, or trusted publishing via OIDC); unarmed it falls back to a human 2FA step"
|
|
183
183
|
],
|
|
184
184
|
"verify": [
|
|
185
|
-
"CI green on the tagged commit",
|
|
185
|
+
"CI green on the tagged commit — READ, not assumed: the run's conclusion quoted with its run id, and the failing step's log quoted on anything but success (references/conventions.md -> The CI verdict)",
|
|
186
186
|
"npx github:ssheleg/task-pipeline#<tag> from a clean cwd installs the skill + command",
|
|
187
187
|
"after npm publish: npm view task-pipeline-skill version == <tag>"
|
|
188
188
|
]
|
|
@@ -180,7 +180,22 @@ A deliverable is **not** audited when somebody has read it. It is audited when:
|
|
|
180
180
|
|
|
181
181
|
1. every rung has its artefact, **and**
|
|
182
182
|
2. **every check you are relying on has fired at least once against a planted
|
|
183
|
-
defect
|
|
183
|
+
defect**, **and**
|
|
184
|
+
3. **the work-list is re-measured and printed beside the count the run opened
|
|
185
|
+
with.**
|
|
186
|
+
|
|
187
|
+
Point 3 costs one command and covers the one claim nothing else reads. A run's
|
|
188
|
+
closing report says what shipped — and then, almost always, what is left and what
|
|
189
|
+
is next. That second half is a statement about the register, and if it came from
|
|
190
|
+
the same list the run started with, it has never been checked against anything. A
|
|
191
|
+
run can be entirely correct and still hand the operator a false map of the work
|
|
192
|
+
([`learned.md`](learned.md) rule 16, [`knowledge-sources.md`](knowledge-sources.md)
|
|
193
|
+
→ *Carried-in claims*).
|
|
194
|
+
|
|
195
|
+
Printing both numbers is what makes the measurement load-bearing rather than
|
|
196
|
+
ceremonial: **opened 36 open · closed 34 open · 2 rows closed this run.** A row in
|
|
197
|
+
a ledger that nobody reconciles stops being read by the third run. A pair of
|
|
198
|
+
numbers that has to agree cannot be filled in without looking.
|
|
184
199
|
|
|
185
200
|
**A green result from an unproven check is worth nothing.** This is the iron law of
|
|
186
201
|
[`tdd.md`](tdd.md) — *if you didn't watch it fail, you don't know it tests the
|
|
@@ -121,6 +121,18 @@ Do not write, and do not believe, that the ledger is what makes the interval saf
|
|
|
121
121
|
Someone will eventually remove the ledger on the strength of that sentence, and
|
|
122
122
|
the protection they think they are keeping is in the scheduler.
|
|
123
123
|
|
|
124
|
+
**Each iteration re-measures the work-list.** The harvest's *documents* may be
|
|
125
|
+
carried across iterations — an ADR did not change while you worked. The line that
|
|
126
|
+
says **what is still open** may not: the previous iteration is precisely what
|
|
127
|
+
invalidated it, and a loop that picks its next item from the list it started with
|
|
128
|
+
works a stale board for as long as the loop runs. One command, at the top of the
|
|
129
|
+
iteration, recorded ([`knowledge-sources.md`](knowledge-sources.md) → *Carried-in
|
|
130
|
+
claims*; [`learned.md`](learned.md) rule 16).
|
|
131
|
+
|
|
132
|
+
This is also where a loop's report goes wrong most quietly. *"Next up is X"* at the
|
|
133
|
+
end of an iteration is a claim about the board, and it is the one sentence in the
|
|
134
|
+
whole cycle that no gate reads. It cites the measurement or it is not written.
|
|
135
|
+
|
|
124
136
|
## Parked at a manual gate
|
|
125
137
|
|
|
126
138
|
A fixed interval firing into a `manual` gate is a nag. Five minutes later it fires
|
|
@@ -8,6 +8,16 @@ names its doc repos, its knowledge base and its house rules
|
|
|
8
8
|
Prefer explicit host instructions over detection; if a step's convention can't be
|
|
9
9
|
found, surface it and **ask** rather than guessing.
|
|
10
10
|
|
|
11
|
+
## Contents
|
|
12
|
+
|
|
13
|
+
- Lint + test
|
|
14
|
+
- Deploy / release
|
|
15
|
+
- Post-deploy logs
|
|
16
|
+
- The CI verdict — read the run, never assume it
|
|
17
|
+
- Docs + wiki
|
|
18
|
+
- Documentation regime (stage 0, then 9 and 10)
|
|
19
|
+
- Issue tracker (stage 10)
|
|
20
|
+
|
|
11
21
|
## Lint + test
|
|
12
22
|
- `CLAUDE.md` usually names the commands. Else detect: `package.json` scripts
|
|
13
23
|
(`npm test` / `npm run lint`), `pyproject.toml` / `ruff` (`ruff check`), `pytest`,
|
|
@@ -30,7 +40,61 @@ found, surface it and **ask** rather than guessing.
|
|
|
30
40
|
|
|
31
41
|
## Post-deploy logs
|
|
32
42
|
- Heroku: `heroku logs -a <app>`. Docker / k8s: `docker logs` / `kubectl logs`.
|
|
33
|
-
|
|
43
|
+
Hit the health endpoint if one is defined. **CI: the workflow run — and a run is
|
|
44
|
+
checked by reading it, below.**
|
|
45
|
+
|
|
46
|
+
## The CI verdict — read the run, never assume it
|
|
47
|
+
|
|
48
|
+
A push either triggered a run or it did not, and either way **the run's own reply is
|
|
49
|
+
the only evidence** ([`gates.md`](gates.md) → *False success*). "CI is green" written
|
|
50
|
+
without a command behind it is a sentence that prints the same whether it looked or
|
|
51
|
+
not.
|
|
52
|
+
|
|
53
|
+
This is not hypothetical. On 2026-08-06 this repository's `validate` was
|
|
54
|
+
`completed/failure` on a push to `main` and on a release tag. The failure was
|
|
55
|
+
**correct** — the *Every v\* tag must be contained in main* guard firing on a tag that
|
|
56
|
+
was not yet an ancestor — and nothing in this bundle obliged anyone to read it. A
|
|
57
|
+
guard nobody reads is a fail-open hook with extra steps.
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
# authenticated
|
|
61
|
+
gh run list --branch <branch> --limit 1 \
|
|
62
|
+
--json databaseId,name,status,conclusion,headSha
|
|
63
|
+
gh run view <databaseId> --log-failed # only when conclusion != success
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
# unauthenticated fallback — public repo, no token needed
|
|
68
|
+
curl -s "https://api.github.com/repos/<owner>/<repo>/commits/<sha>/check-runs"
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
**Two paths on purpose.** A credential problem must not end the check: this repo's
|
|
72
|
+
`gh` token expired mid-run the same night, and `gh auth status` reported it invalid
|
|
73
|
+
from a **cached** verdict while `gh api user` succeeded. Probe credentials with a
|
|
74
|
+
live call, never with the status command.
|
|
75
|
+
|
|
76
|
+
**Three states, and the third is why this is written down:**
|
|
77
|
+
|
|
78
|
+
| State | Condition | Record |
|
|
79
|
+
|---|---|---|
|
|
80
|
+
| **concluded** | a run exists for this sha, `status == completed` | the conclusion and run id — and on any non-`success`, the **quoted failing step** |
|
|
81
|
+
| **in progress** | a run exists, not finished | wait and re-read. *"It was still running when I looked"* is a report, not a verdict |
|
|
82
|
+
| **no run found** | no run for this sha | say so out loud — a project without CI is a legitimate state and **not a green one** ([`gates.md`](gates.md) → *Progressive arming*) |
|
|
83
|
+
|
|
84
|
+
**Read the log, not just the verdict.** A conclusion says *that* it failed; only the
|
|
85
|
+
log says *what*. In the incident above the log named the guard, the orphan tag and the
|
|
86
|
+
one-line fix — a bare "CI failed" would have handed the next reader a search the log
|
|
87
|
+
had already finished. On any non-`success`: read the failing step and quote the line
|
|
88
|
+
that names the failure.
|
|
89
|
+
|
|
90
|
+
**It reports; it does not block.** Same shape stage 8 already uses for deploy logs — a
|
|
91
|
+
red run the operator has seen and ruled on is a decision, a red run nobody printed is
|
|
92
|
+
the failure. Blocking would also make a project *without* CI cheaper to ship from than
|
|
93
|
+
one with it.
|
|
94
|
+
|
|
95
|
+
**Promote it when it breaks** ([`gates.md`](gates.md) → *Axis B*): this sits at rung 2,
|
|
96
|
+
a criterion in the stage gates. Promote it to a script the first time a run is observed
|
|
97
|
+
closing a stage with an unread CI verdict.
|
|
34
98
|
|
|
35
99
|
## Docs + wiki
|
|
36
100
|
- **Start from the stage-0 source ledger** ([`knowledge-sources.md`](knowledge-sources.md)):
|
|
@@ -142,6 +142,7 @@ explicit "stop and ask me here":
|
|
|
142
142
|
| run-wide | the model decision ([`model-tiering.md`](model-tiering.md)); what to decide autonomously vs escalate |
|
|
143
143
|
| run-wide Pacing | the **run mode** ([`continuity.md`](continuity.md)): does the run advance item-by-item with no check-in between items, and on what interval? Read `pipeline.json` → `run.loop` first — a recorded mode is the answer and is not re-asked. **Absent, it is off**: recommend it, take the answer, record it. It never collapses a `manual` gate or an outward act, so this row buys pacing, not authorization |
|
|
144
144
|
| 0 Harvest | doc sources beyond this repo — other repos, hosted doc systems, the knowledge wiki, **the code graph** ([`knowledge-graph.md`](knowledge-graph.md): built / installed-not-built / absent) — and whether stage 9 may write to them (another repo is outward: propose + PR, never a direct push) |
|
|
145
|
+
| 0 Work-list | which register holds task **state** — a roadmap, a board, a backlog, a tracker — and the **command that reads it**. Recorded once; the harvest and every loop iteration re-run it, and a closing report that names what is left cites it. No register → record the row empty, and the rule costs nothing ([`knowledge-sources.md`](knowledge-sources.md) → *Carried-in claims*) |
|
|
145
146
|
| 0 Setup audit | doc map absent or stale: run the entry audit over the existing documentation before building on it ([`setup.md`](setup.md))? Asked once; a refusal is recorded and never re-asked |
|
|
146
147
|
| run-wide Escalation | cost of being wrong: decide alone while it stays inside the repository and reversible; escalate price, legal posture, promise, money, reputation, irreversible outward acts. Project exceptions? |
|
|
147
148
|
| 0 Docs regime | where settled things live (the decision home — **one** per project, and an existing `docs/adr/` **is** it), who may write it, whether a lease mechanism is present or the run is `ungated`, the gate command and its ratchet floors, and whether this run may raise a floor ([`documentation.md`](documentation.md)) |
|
|
@@ -17,6 +17,7 @@ that goes stale when the answer changes.
|
|
|
17
17
|
- The knowledge wiki — recommended
|
|
18
18
|
- How to harvest — retrieval, not reading
|
|
19
19
|
- Record it — the source ledger
|
|
20
|
+
- Carried-in claims — measured or recalled
|
|
20
21
|
- Phase 2 — validate the answers against the harvest
|
|
21
22
|
- Close the loop — stage 9 updates what stage 0 read
|
|
22
23
|
- Rationalizations
|
|
@@ -43,6 +44,7 @@ makes the grill's answers *checkable* instead of merely confident.
|
|
|
43
44
|
| 3 | **Host agent docs** | `CLAUDE.md`, `AGENTS.md`, `.cursor/rules/` | conventions, commands, deploy path, house rules |
|
|
44
45
|
| 4 | **Domain docs** | `CONTEXT.md` / `CONTEXT-MAP.md`, `docs/adr/` | the glossary and the decisions with their reasons |
|
|
45
46
|
| 4a | **The decision register and the doc map** | `docs/DECISIONS.md` **or** `docs/adr/` — `docs/DOCMAP.md` says which ([`documentation.md`](documentation.md)) | what is already settled, what it superseded, and which documents this run will owe |
|
|
47
|
+
| 4b | **The task register, for its *state*** | `docs/ROADMAP.md`, a board, a backlog, the tracker `CLAUDE.md` names | **what is open right now** — read with a command, never from memory; see *Carried-in claims* |
|
|
46
48
|
| 5 | **Product/UX docs** | `docs/ux/` (super-ux chain), `README`, runbooks | user-facing behavior that is already specified |
|
|
47
49
|
| 6 | **Pipeline history** | `docs/superpowers/specs/`, `plans/`, past `-carryover.md` | what a previous run of this pipeline decided or deferred |
|
|
48
50
|
| 7 | **The retro, in force** | `docs/superpowers/retro.md` ([`retrospective.md`](retrospective.md)) | what previous runs got wrong here — **read in full**: standing instructions (capped at ten), run stamps and the recent-log window, all bounded by construction |
|
|
@@ -169,6 +171,49 @@ source nobody will update.
|
|
|
169
171
|
**"No sources found" is a valid, recorded outcome.** Write the row. An empty ledger
|
|
170
172
|
tells the next run that the search happened and came back empty — silence doesn't.
|
|
171
173
|
|
|
174
|
+
## Carried-in claims — measured or recalled
|
|
175
|
+
|
|
176
|
+
The harvest exists because *the operator misremembers*. This section exists because
|
|
177
|
+
**the agent does too**, and it is the harder case: a run that resumes from a
|
|
178
|
+
summary, a handoff note or a compacted context inherits a pile of statements that
|
|
179
|
+
read exactly like findings and have no source attached.
|
|
180
|
+
|
|
181
|
+
They are not lies and they were not wrong when they were written. They are **stale
|
|
182
|
+
by construction** — a filtered subset that lost its filter, a status true two weeks
|
|
183
|
+
ago, a blocker that cleared while nobody was looking. And unlike a wrong number,
|
|
184
|
+
stale state **does not throw**. It narrows what the run considers, and every gate
|
|
185
|
+
after it passes honestly on the smaller world ([`learned.md`](learned.md) rule 16).
|
|
186
|
+
|
|
187
|
+
**Every inherited claim starts as `recalled`.** Before it is acted on *or reported
|
|
188
|
+
to the operator*, it is either re-derived from its source and marked `measured`, or
|
|
189
|
+
it is not stated. Add the column to the ledger and use it:
|
|
190
|
+
|
|
191
|
+
| Claim | Whence | State | Re-derived by |
|
|
192
|
+
|---|---|---|---|
|
|
193
|
+
| 36 of 99 rows open; 4 blocked | `docs/ROADMAP.md` | measured | `bash scripts/board.sh` |
|
|
194
|
+
| the suite is green | prior session | measured | `npm test` → 601 pass |
|
|
195
|
+
| `NBA-046` has no producer | prior session | **recalled** | not checked — do not report |
|
|
196
|
+
|
|
197
|
+
Three claims that go stale most reliably, and all three are cheap to re-derive:
|
|
198
|
+
|
|
199
|
+
- **The work-list.** What is open, what is blocked, and *on what*. If the project
|
|
200
|
+
has a register, the harvest reads it with a command and records the counts. A run
|
|
201
|
+
that says *"what remains is X"* without this is guessing out loud.
|
|
202
|
+
- **Green.** A suite, a gate, a deploy. Run it; the answer is a minute old, not a
|
|
203
|
+
session old.
|
|
204
|
+
- **A blocker or a premise.** *"Blocked on Y"*, *"nothing produces this"*,
|
|
205
|
+
*"that endpoint doesn't exist"*. These clear silently — somebody else's work
|
|
206
|
+
lands and no signal reaches this run.
|
|
207
|
+
|
|
208
|
+
**Where the command comes from.** The grill's autonomy sweep settles it once, at
|
|
209
|
+
stage 0: which register holds task state and what reads it. A project without one
|
|
210
|
+
records the row empty and the rule costs nothing.
|
|
211
|
+
|
|
212
|
+
**And it is per iteration, not per session.** In loop mode ([`continuity.md`](continuity.md))
|
|
213
|
+
the harvest's documents may be carried between iterations — they did not change.
|
|
214
|
+
**The work-list line may not.** It is the one row the previous iteration's own work
|
|
215
|
+
invalidates.
|
|
216
|
+
|
|
172
217
|
## Phase 2 — validate the answers against the harvest
|
|
173
218
|
|
|
174
219
|
This is the payoff, and it belongs to the grill loop
|
|
@@ -251,3 +296,6 @@ written list instead of from whatever the search happened to surface.
|
|
|
251
296
|
| "The operator knows their own system" | They do — a year ago, before three other people changed it. That's the exact case where quoting the doc pays. |
|
|
252
297
|
| "Reading the whole wiki costs too much" | The harvest is a query per task noun, not a read. If it feels expensive, you're reading instead of retrieving. |
|
|
253
298
|
| "I'll update the docs at the end from memory" | The ledger exists because the end is exactly when you no longer remember which sources you leaned on. |
|
|
299
|
+
| "The summary said what's left, that's the same list" | It was a list *once*, under a filter nobody wrote down. Re-deriving it costs one command; being wrong about it costs every iteration after. |
|
|
300
|
+
| "Nothing changed since last iteration" | The previous iteration changed it. That is what an iteration is. |
|
|
301
|
+
| "Re-measuring every cycle is overhead" | It is one command against a file you already have open. The overhead is the eleven cycles spent working from a list that was wrong at cycle one. |
|
|
@@ -40,6 +40,7 @@ to be enforced and is not is the same failure as a gate that prints `FAIL` and e
|
|
|
40
40
|
| 13 | **Local infrastructure does not fight the host** | any dev compose or service definition | assume the host already runs the defaults | services reachable with the host's own still running |
|
|
41
41
|
| 14 | **A document may not send a reader to something absent** | any instruction naming a command, file or install | resolve it | the gate fails when the target does not exist |
|
|
42
42
|
| 15 | **Identity before coordination** | any lease, lock, claim or run id | ask what two instances with the same identity would do, and make the tool answer it | two instances demonstrably get two identities |
|
|
43
|
+
| 16 | **A carried-in claim is a recollection** | any run resuming from a summary, a handoff or a compacted context | re-derive the claim from its source before acting on it or reporting it | every state claim the run makes is marked `measured` with the command behind it, or it is not made |
|
|
43
44
|
|
|
44
45
|
---
|
|
45
46
|
|
|
@@ -115,6 +116,26 @@ than only in that list because it **has** a check. Follow-on, from the first two
|
|
|
115
116
|
in a process command line matched the throwaway shell of every tool call, and matching the binary
|
|
116
117
|
path hit the same wall. Prefer a fact something authoritative wrote down.
|
|
117
118
|
|
|
119
|
+
**16 · A carried-in claim.** A long autonomous run advanced one roadmap row per iteration. Each
|
|
120
|
+
iteration was correct: gates green, defects planted and watched to fail, docs closed. What was wrong
|
|
121
|
+
was the sentence between them — *"the remaining rows are these"* — taken from a list that had
|
|
122
|
+
arrived in the context through a compaction, had once been a filtered subset, and had lost its
|
|
123
|
+
provenance on the way. Eleven iterations later a single command over the register printed **36 open
|
|
124
|
+
rows out of 99**, not the handful being worked from. Nothing had failed, because nothing compares a
|
|
125
|
+
run's belief about the work-list against the register; the claim only ever appeared in prose.
|
|
126
|
+
|
|
127
|
+
The same class had already bitten that project twice from the other side, and its roadmap names the
|
|
128
|
+
property exactly: seven rows read `blocked` on producers the dependency board recorded as delivered,
|
|
129
|
+
and *"no gate can catch it because it breaks nothing — it only removes work from consideration"*;
|
|
130
|
+
and a row filed as *"the object nothing produces"* whose producer had shipped in between. **Stale
|
|
131
|
+
state does not throw.** It narrows what gets considered, silently, and every downstream gate passes
|
|
132
|
+
honestly on the smaller world.
|
|
133
|
+
|
|
134
|
+
Rule 8 is the neighbour, not the same rule: it governs a number *inside a document*, checked when
|
|
135
|
+
that document is checked. This one governs a fact that crossed a **session boundary** and is being
|
|
136
|
+
reported as current — the case where there is no document to check, only a memory that reads like
|
|
137
|
+
one.
|
|
138
|
+
|
|
118
139
|
---
|
|
119
140
|
|
|
120
141
|
## The two that are not in the table, and why
|
|
@@ -150,6 +171,7 @@ answer would have exposed it in a minute.
|
|
|
150
171
|
| Stage | Rules that apply |
|
|
151
172
|
|---|---|
|
|
152
173
|
| 0 Inventory · 9 Docs · any register write | 8 (compute), 14 (targets resolve — including every commit SHA in the retro), 15 (identity before a lease) — see [`documentation.md`](documentation.md) |
|
|
174
|
+
| 0 Harvest · any run resuming from a summary | 16 — the work-list and every inherited state claim re-derived before use, [`knowledge-sources.md`](knowledge-sources.md) → *Carried-in claims* |
|
|
153
175
|
| any check you write | 4, 5, 7, 10, 11 — the procedure is [`gates.md`](gates.md) |
|
|
154
176
|
| 3 Spec · 4 Plan | 2 (both directions), 8 (compute, never restate) |
|
|
155
177
|
| 5 Dev | 9 (generators seed green), 12 (tests create their own state), 13 (local infra) |
|
|
@@ -158,9 +180,10 @@ answer would have exposed it in a minute.
|
|
|
158
180
|
| 4 Plan | 14 — every command, path and file a DoD names must resolve |
|
|
159
181
|
| 9 Docs | 8, 14 — every number computed, every target resolvable |
|
|
160
182
|
| 10 Acceptance | 1, 3, 6, 7 — axis rotation recorded, closure verified against artefacts, classes swept, ratchets printed |
|
|
183
|
+
| 10 Acceptance · every loop iteration | 16 — the work-list re-measured at close and printed beside its opening count ([`audit.md`](audit.md), [`continuity.md`](continuity.md)) |
|
|
161
184
|
|
|
162
|
-
**This file is the shipped list; a project keeps its own.**
|
|
163
|
-
earned on someone else's build and
|
|
185
|
+
**This file is the shipped list; a project keeps its own.** Every rule in the table
|
|
186
|
+
above was earned on someone else's build and travels with the skill. The lessons *your*
|
|
164
187
|
project buys go in its retro ([`retrospective.md`](retrospective.md) →
|
|
165
188
|
`docs/superpowers/retro.md`), where they are capped, pruned and retired — and a
|
|
166
189
|
lesson there that would be true in any repository belongs here instead, as an issue
|
|
@@ -75,6 +75,7 @@ a row pointing outside the bundle is the defect this file exists to catch.
|
|
|
75
75
|
| Which companions exist, what is required, self-currency | `references/companion-skills.md` |
|
|
76
76
|
| The code graph: queries, refresh, the graph↔docs divergence | `references/knowledge-graph.md` |
|
|
77
77
|
| How the graph's staleness is measured and stated in the ledger | `references/knowledge-graph.md` |
|
|
78
|
+
| How a CI run's verdict is established, and its three states | `references/conventions.md` |
|
|
78
79
|
| Model policy — tier not id, ask once at preflight | `references/model-tiering.md` |
|
|
79
80
|
| This boundary | `references/portability.md` |
|
|
80
81
|
|
|
@@ -345,14 +345,24 @@ never that the work was skipped quietly.
|
|
|
345
345
|
`partial` ships only with the operator's explicit acceptance. A gap is cheapest to
|
|
346
346
|
close before it ships, and the operator is already present at this gate. **The
|
|
347
347
|
carry-over count is printed beside this verdict.** Deploy is outward → explicit
|
|
348
|
-
operator go. Respect deploy-from-main rules if the project mandates them.
|
|
348
|
+
operator go. Respect deploy-from-main rules if the project mandates them. **Before
|
|
349
|
+
tagging, the CI verdict for what was just pushed is READ, not assumed**
|
|
350
|
+
([`conventions.md`](conventions.md) → *The CI verdict*) — a tag on a commit whose
|
|
351
|
+
run nobody read is how a red `main` ships.
|
|
349
352
|
|
|
350
353
|
## 8 — Post-deploy
|
|
351
354
|
- **Freedom: medium** — where the logs live varies; 'clean boot or an honest degradation report' does not ([`gates.md`](gates.md) → *Axis C*).
|
|
352
355
|
- Tail deploy logs / health-check per conventions. Confirm clean boot, no error
|
|
353
356
|
spike, live subsystems healthy.
|
|
357
|
+
- **Read the CI verdict for the deploy's own commit** ([`conventions.md`](conventions.md)
|
|
358
|
+
→ *The CI verdict*): the run's conclusion quoted, the **failing step's log quoted**
|
|
359
|
+
on anything but `success`, and one of the three states stated — including **`no run
|
|
360
|
+
found`**, out loud, because a project without CI is a legitimate state and not a
|
|
361
|
+
green one.
|
|
354
362
|
- **GATE (auto):** clean boot confirmed, or an **honest degradation report** with next
|
|
355
|
-
steps — never silent success.
|
|
363
|
+
steps — never silent success. **The CI verdict is one of the reported facts, with
|
|
364
|
+
its run id** — "CI is green" written without a command behind it prints the same
|
|
365
|
+
whether it looked or not ([`gates.md`](gates.md) → *False success*).
|
|
356
366
|
|
|
357
367
|
## 9 — Docs + wiki
|
|
358
368
|
- **Freedom: low** — the matrix walk and the gate are mechanical; what a doc says is not this stage's call ([`gates.md`](gates.md) → *Axis C*).
|
|
@@ -405,7 +415,10 @@ never that the work was skipped quietly.
|
|
|
405
415
|
written and reconciled**; UI: super-ux layers current + linter green; wiki synced
|
|
406
416
|
(or absent and recommended once); **the code graph
|
|
407
417
|
refreshed where one exists, or the reason it wasn't written into the carry-over
|
|
408
|
-
ledger** (absent and recommended once is fine); dangling links fixed; **the
|
|
418
|
+
ledger** (absent and recommended once is fine); dangling links fixed; **the CI
|
|
419
|
+
verdict read for this stage's own push** ([`conventions.md`](conventions.md) →
|
|
420
|
+
*The CI verdict*) — this stage pushes like any other and is the one that habitually
|
|
421
|
+
ends a run, so an unread red here is a red `main` nobody is coming back to; **the
|
|
409
422
|
carry-over count printed beside this verdict**.
|
|
410
423
|
|
|
411
424
|
## 10 — Acceptance
|
|
@@ -120,6 +120,7 @@ is not neutral — it is a scheduled interruption.
|
|
|
120
120
|
| run-wide | Decide autonomously vs escalate to me | … |
|
|
121
121
|
| run-wide Pacing | Run mode: item-by-item with no check-in between items, and on what interval? (the skill's `references/continuity.md`; read `pipeline.json` → `run.loop` first) | … (**absent ⇒ off**; it never collapses a manual gate or an outward act) |
|
|
122
122
|
| 0 Harvest | Doc sources beyond this repo — other repos, hosted docs, the knowledge wiki, the code graph; and may stage 9 write to them? | … (another repo is outward: propose + PR, never a direct push; graph built / not built) |
|
|
123
|
+
| 0 Work-list | Which register holds task **state**, and the command that reads it — re-run at every harvest, at every loop iteration and at the close | … (e.g. `bash scripts/board.sh`; none → record empty) |
|
|
123
124
|
| 0 Setup audit | … (yes / no — recorded either way) | doc map absent or stale: run the entry audit over the existing documentation before building on it (the skill's `references/setup.md`)? Asked once; a refusal is recorded and never re-asked |
|
|
124
125
|
| 0 Docs regime | Where settled things live (register or ADR set — one home, never both); who may write it; lease mechanism present, or is this run `ungated`? Gate command + ratchet floors; may this run raise a floor? | … |
|
|
125
126
|
| 1 Docs | External libs/APIs/SDKs in play; any context7 can't resolve → where their docs live | … |
|
|
Binary file
|