Proposed 2026-08-28. Companion to mathias/cad#14 (the cad-stuck query surface).
What this is
A skill for a deliberately narrow session: pick up whatever CAD has run into trouble on, work it with a human present, and stop. Not an autonomous supervisor — a babysitter with a person in the room.
Why a human-in-the-loop session rather than an unattended one
An unattended supervisor reproduces the exact failure it exists to catch. dispatch ran dead for eight weeks because it exited 0 and nobody noticed; a long-running watcher process that dies quietly has the same property one level up, and manufactures false confidence while doing it.
With a human present, the human is the liveness check. That removes the objection entirely and needs no new machinery.
The empirical case: on 2026-08-27/28, six real defects were found — an executor routing that fails open, shared turn ceilings starving the sovereign path, an agent able to edit the file that authorises it, no context management, a well-written issue steering an agent into a policy wall, and a committed plist that never parsed. Every one came from a human and an agent reading transcripts together. Zero came from a metric.
The skill's real content is the diagnostic ORDER
The findings are not the valuable part — the sequence is, because each step below corresponds to a mistake actually made:
Read the issue's own comments before anything else. A confident wrong root cause was produced from pod logs while the correct diagnosis sat in cad-atlas#10's comments from nine days earlier. The rule "read issue comments before working" was already written down and was not followed.
Then the Actions job logs — GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs returns 200 with full text, secrets masked. A prior note claiming this endpoint 404s was wrong and cost a diagnosis; find the run id via /actions/runs and match on run_number.
Separate infrastructure fault from task outcome. A run that died before turn 1 says nothing about the issue. Four claim labels were burned this way and the tracker recorded them as handled.
Re-read after every write. Two labels were silently dropped by Gitea in one session — an executor: label and a status:redispatch — each returning 200. Unknown label names are dropped without error.
Verify by exit code, never by grepped output. A go build && head chain printed "build ok" after a failed build in this very session.
Output contract — hold it to the gates it enforces
Every finding cites a locator: run id, commit sha, or log line. A finding without one is not actionable and should not be emitted.
Never closes an issue. Closing is the human gate; a reviewer that can close has no independent check.
Never dispatches or arms a label. Review is not control.
Anything that is the human's call surfaces as DECISION NEEDED (question / options / recommendation / blocks) rather than being decided.
State lives in Gitea, not in the session
The skill's first move is always re-derive, never recall. Sessions get compacted and lose exactly the cross-run history that makes this valuable, so the session must be disposable: invoke it cold, it reconstructs the stuck queue from labels, comments and Actions runs.
Honest limitation
A skill encodes the repeatable patterns. The novel findings this session produced came from unhurried reading with full context, and a checklist will not reproduce that. Expect it to catch the known eight states reliably and to miss the next new failure mode — which is fine, provided nobody mistakes a clean run for "nothing is wrong".
Depends on
mathias/cad#14 for the query surface. The skill is the ritual around it; without the query it would be a checklist with no input.
Proposed 2026-08-28. Companion to `mathias/cad#14` (the `cad-stuck` query surface).
## What this is
A skill for a **deliberately narrow session**: pick up whatever CAD has run into trouble on, work it with a human present, and stop. Not an autonomous supervisor — a babysitter with a person in the room.
## Why a human-in-the-loop session rather than an unattended one
An unattended supervisor reproduces the exact failure it exists to catch. `dispatch` ran dead for eight weeks because it exited 0 and nobody noticed; a long-running watcher process that dies quietly has the same property one level up, and manufactures false confidence while doing it.
With a human present, **the human is the liveness check.** That removes the objection entirely and needs no new machinery.
The empirical case: on 2026-08-27/28, six real defects were found — an executor routing that fails open, shared turn ceilings starving the sovereign path, an agent able to edit the file that authorises it, no context management, a well-written issue steering an agent into a policy wall, and a committed plist that never parsed. **Every one came from a human and an agent reading transcripts together.** Zero came from a metric.
## The skill's real content is the diagnostic ORDER
The findings are not the valuable part — the sequence is, because each step below corresponds to a mistake actually made:
1. **Read the issue's own comments before anything else.** A confident wrong root cause was produced from pod logs while the correct diagnosis sat in `cad-atlas#10`'s comments from nine days earlier. The rule "read issue comments before working" was already written down and was not followed.
2. **Then the Actions job logs** — `GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logs` returns 200 with full text, secrets masked. A prior note claiming this endpoint 404s was wrong and cost a diagnosis; find the run id via `/actions/runs` and match on `run_number`.
3. **Separate infrastructure fault from task outcome.** A run that died before turn 1 says nothing about the issue. Four claim labels were burned this way and the tracker recorded them as handled.
4. **Re-read after every write.** Two labels were silently dropped by Gitea in one session — an `executor:` label and a `status:redispatch` — each returning 200. Unknown label names are dropped without error.
5. **Verify by exit code, never by grepped output.** A `go build && head` chain printed "build ok" after a failed build in this very session.
## Output contract — hold it to the gates it enforces
- Every finding **cites a locator**: run id, commit sha, or log line. A finding without one is not actionable and should not be emitted.
- **Never closes an issue.** Closing is the human gate; a reviewer that can close has no independent check.
- **Never dispatches or arms a label.** Review is not control.
- Anything that is the human's call surfaces as `DECISION NEEDED` (question / options / recommendation / blocks) rather than being decided.
## State lives in Gitea, not in the session
The skill's first move is always **re-derive**, never *recall*. Sessions get compacted and lose exactly the cross-run history that makes this valuable, so the session must be disposable: invoke it cold, it reconstructs the stuck queue from labels, comments and Actions runs.
## Honest limitation
A skill encodes the *repeatable* patterns. The novel findings this session produced came from unhurried reading with full context, and a checklist will not reproduce that. Expect it to catch the known eight states reliably and to miss the next new failure mode — which is fine, provided nobody mistakes a clean run for "nothing is wrong".
## Depends on
`mathias/cad#14` for the query surface. The skill is the ritual around it; without the query it would be a checklist with no input.
skills:cad-babysit (mathias/skills@d40169f, auto-tagged v0.7.0, CI green — run #23, tag job conclusion: success, plugin.json bumped to 0.7.0 to match).
Wraps mathias/cad#14's cad stuck — the skill is the ritual around that query, not a
replacement for it, per the dependency this issue names.
The diagnostic order, as five phases
Query — run cad stuck fresh, cold, every session. No carried-forward worklist.
Read the issue's own comments FIRST. Named explicitly because it was skipped once and
cost a session (the cad-atlas#10 mistake this issue describes).
THEN Actions job logs — /actions/runs → match .run_number → /actions/jobs/{id}/logs.
Documented as working (200, full text, secrets masked), with the note that a prior claim it
404s was wrong.
Separate infrastructure fault from task outcome — a zero-turn "could not start" run is
not evidence about the issue.
Decide, or say DECISION NEEDED — closed diagnoses get a DIAGNOSIS/CAUSE/LOCATOR/ACTION
block; anything that's the operator's call gets DECISION NEEDED with question/options/
recommendation/blocks, never decided on their behalf.
Output contract, enforced as Iron Laws
Read-only: no dispatch, no label writes (including status:redispatch), no close/reopen.
Every finding cites a locator — a comment permalink, run id, or log line.
Re-derive, never recall — the worked example in the skill file even calls out that this
issue's own cited example (brain-gardener#190) stopped reproducing hours after it was
written, and that's the design working, not a bug.
Honest limitation, kept in
Per this issue's own framing: the skill encodes the repeatable sequence and will reliably
catch the known taxonomy. It will not by itself reproduce the genuinely novel findings an
unhurried human+agent session produced (an agent editing the file that authorizes it, an issue
body recommending a forbidden command). Said explicitly in the skill file so a clean pass never
reads as "nothing is wrong" rather than "nothing on the known list is wrong."
Next
Moving to the third piece, mathias/cad-atlas#11 (stuck-state pipeline overlay), the last
consumer of cad#14's query surface.
Closing out — built and shipped.
## What shipped
`skills:cad-babysit` (mathias/skills@d40169f, auto-tagged **v0.7.0**, CI green — run #23,
`tag` job `conclusion: success`, plugin.json bumped to 0.7.0 to match).
Wraps `mathias/cad#14`'s `cad stuck` — the skill is the ritual around that query, not a
replacement for it, per the dependency this issue names.
## The diagnostic order, as five phases
1. **Query** — run `cad stuck` fresh, cold, every session. No carried-forward worklist.
2. **Read the issue's own comments FIRST.** Named explicitly because it was skipped once and
cost a session (the `cad-atlas#10` mistake this issue describes).
3. **THEN Actions job logs** — `/actions/runs` → match `.run_number` → `/actions/jobs/{id}/logs`.
Documented as working (200, full text, secrets masked), with the note that a prior claim it
404s was wrong.
4. **Separate infrastructure fault from task outcome** — a zero-turn "could not start" run is
not evidence about the issue.
5. **Decide, or say `DECISION NEEDED`** — closed diagnoses get a `DIAGNOSIS/CAUSE/LOCATOR/ACTION`
block; anything that's the operator's call gets `DECISION NEEDED` with question/options/
recommendation/blocks, never decided on their behalf.
## Output contract, enforced as Iron Laws
- Read-only: no dispatch, no label writes (including `status:redispatch`), no close/reopen.
- Every finding cites a locator — a comment permalink, run id, or log line.
- Re-derive, never recall — the worked example in the skill file even calls out that this
issue's own cited example (`brain-gardener#190`) stopped reproducing hours after it was
written, and that's the design working, not a bug.
## Honest limitation, kept in
Per this issue's own framing: the skill encodes the *repeatable* sequence and will reliably
catch the known taxonomy. It will not by itself reproduce the genuinely novel findings an
unhurried human+agent session produced (an agent editing the file that authorizes it, an issue
body recommending a forbidden command). Said explicitly in the skill file so a clean pass never
reads as "nothing is wrong" rather than "nothing on the known list is wrong."
## Next
Moving to the third piece, `mathias/cad-atlas#11` (stuck-state pipeline overlay), the last
consumer of `cad#14`'s query surface.
Closing — verified live on main, not just reported.
skills/cad-babysit/SKILL.md present at mathias/skills@d40169f, still on main today (ls skills/cad-babysit → SKILL.md).
CI run #23 (id: 4755, head d40169f) conclusion: success; tag v0.7.0 exists and plugin.json matched it at the time.
The shipped-summary comment above already records the five-phase diagnostic order and the Iron Laws against the contract this issue set.
Left open only because nobody closed it. Nothing outstanding.
Closing — verified live on main, not just reported.
- `skills/cad-babysit/SKILL.md` present at `mathias/skills@d40169f`, still on `main` today (`ls skills/cad-babysit` → `SKILL.md`).
- CI run #23 (`id: 4755`, head `d40169f`) `conclusion: success`; tag `v0.7.0` exists and `plugin.json` matched it at the time.
- The shipped-summary comment above already records the five-phase diagnostic order and the Iron Laws against the contract this issue set.
Left open only because nobody closed it. Nothing outstanding.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Proposed 2026-08-28. Companion to
mathias/cad#14(thecad-stuckquery surface).What this is
A skill for a deliberately narrow session: pick up whatever CAD has run into trouble on, work it with a human present, and stop. Not an autonomous supervisor — a babysitter with a person in the room.
Why a human-in-the-loop session rather than an unattended one
An unattended supervisor reproduces the exact failure it exists to catch.
dispatchran dead for eight weeks because it exited 0 and nobody noticed; a long-running watcher process that dies quietly has the same property one level up, and manufactures false confidence while doing it.With a human present, the human is the liveness check. That removes the objection entirely and needs no new machinery.
The empirical case: on 2026-08-27/28, six real defects were found — an executor routing that fails open, shared turn ceilings starving the sovereign path, an agent able to edit the file that authorises it, no context management, a well-written issue steering an agent into a policy wall, and a committed plist that never parsed. Every one came from a human and an agent reading transcripts together. Zero came from a metric.
The skill's real content is the diagnostic ORDER
The findings are not the valuable part — the sequence is, because each step below corresponds to a mistake actually made:
cad-atlas#10's comments from nine days earlier. The rule "read issue comments before working" was already written down and was not followed.GET /repos/{owner}/{repo}/actions/jobs/{job_id}/logsreturns 200 with full text, secrets masked. A prior note claiming this endpoint 404s was wrong and cost a diagnosis; find the run id via/actions/runsand match onrun_number.executor:label and astatus:redispatch— each returning 200. Unknown label names are dropped without error.go build && headchain printed "build ok" after a failed build in this very session.Output contract — hold it to the gates it enforces
DECISION NEEDED(question / options / recommendation / blocks) rather than being decided.State lives in Gitea, not in the session
The skill's first move is always re-derive, never recall. Sessions get compacted and lose exactly the cross-run history that makes this valuable, so the session must be disposable: invoke it cold, it reconstructs the stuck queue from labels, comments and Actions runs.
Honest limitation
A skill encodes the repeatable patterns. The novel findings this session produced came from unhurried reading with full context, and a checklist will not reproduce that. Expect it to catch the known eight states reliably and to miss the next new failure mode — which is fine, provided nobody mistakes a clean run for "nothing is wrong".
Depends on
mathias/cad#14for the query surface. The skill is the ritual around it; without the query it would be a checklist with no input.Closing out — built and shipped.
What shipped
skills:cad-babysit(mathias/skills@d40169f, auto-tagged v0.7.0, CI green — run #23,tagjobconclusion: success, plugin.json bumped to 0.7.0 to match).Wraps
mathias/cad#14'scad stuck— the skill is the ritual around that query, not areplacement for it, per the dependency this issue names.
The diagnostic order, as five phases
cad stuckfresh, cold, every session. No carried-forward worklist.cost a session (the
cad-atlas#10mistake this issue describes)./actions/runs→ match.run_number→/actions/jobs/{id}/logs.Documented as working (200, full text, secrets masked), with the note that a prior claim it
404s was wrong.
not evidence about the issue.
DECISION NEEDED— closed diagnoses get aDIAGNOSIS/CAUSE/LOCATOR/ACTIONblock; anything that's the operator's call gets
DECISION NEEDEDwith question/options/recommendation/blocks, never decided on their behalf.
Output contract, enforced as Iron Laws
status:redispatch), no close/reopen.issue's own cited example (
brain-gardener#190) stopped reproducing hours after it waswritten, and that's the design working, not a bug.
Honest limitation, kept in
Per this issue's own framing: the skill encodes the repeatable sequence and will reliably
catch the known taxonomy. It will not by itself reproduce the genuinely novel findings an
unhurried human+agent session produced (an agent editing the file that authorizes it, an issue
body recommending a forbidden command). Said explicitly in the skill file so a clean pass never
reads as "nothing is wrong" rather than "nothing on the known list is wrong."
Next
Moving to the third piece,
mathias/cad-atlas#11(stuck-state pipeline overlay), the lastconsumer of
cad#14's query surface.Closing — verified live on main, not just reported.
skills/cad-babysit/SKILL.mdpresent atmathias/skills@d40169f, still onmaintoday (ls skills/cad-babysit→SKILL.md).id: 4755, headd40169f)conclusion: success; tagv0.7.0exists andplugin.jsonmatched it at the time.Left open only because nobody closed it. Nothing outstanding.