ContextLab / ContextLab/claude-skill-compounder
No forge has run since the diet landed: round cap, 30-minute target, apply and verdict rows all unexercised
- Dominant language
- Python
- Stars
- 1
- Forks
- 0
- Avg merge
- 1h 29m
- Merged PRs (30d)
- 1
Description
Residual from #22 (forge diet) and #24 (measurement fixes), both of which shipped and are
otherwise closed. Everything they built is in the code and none of it has met a real forge.
## Evidence
The last three ledger rows for a forge, from
`jq -r 'select(.event=="start" or .event=="done" or .event=="fail") | "\(.ts) \(.event) \(.name)"' ~/.claude/skill-compounder/ledger.jsonl | tail -4`:
```
1788234424 start finish-task
1788234425 start let-the-run-finish
1788253726 fail let-the-run-finish
1788255352 fail finish-task
```
`1788255352` is 2026-09-01. The diet landed in `7507a0b` (CLI) and `15b3b28` (docs) on
2026-09-02, so no forge has started under it.
The ledger event tallies, from `jq -r '.event' ... | sort | uniq -c`: 886 `use`, 18 `note`,
13 `origin`, 10 `start`, 6 `done`, 4 `fail`, 1 `horizon`, **1 `apply`**, **0 `verdict`**.
So four things are implemented and unexercised:
1. **The hard round cap.** `skillforge round` refuses a round past the forge's budget
(`bin/skillforge:2181`), and `skillforge escalate` is the only way past it. Neither has
refused or granted anything on a real forge.
2. **The 30-minute target.** #22 set it against a measured median of 3.3 hours over ten
closed forges. No forge has run since, so the target has no reading against it.
3. **`skillforge apply`.** One row in 938, and that row records the skill failing. Step 6 of
`skills/skill-compounder/SKILL.md:347-360` now requires the call.
4. **`skillforge verdict`.** #24 asked for it to be wired into the protocol or removed. It
was wired, at `SKILL.md:353`. Zero rows.
## Why this is one issue and not four
They are the same missing event. One forge run end to end under the new protocol produces a
reading for all four, or shows which of them does not fire.
## Acceptance
One narrow skill forged under the diet, from a real trigger, with:
- `skillforge round` records both planned rounds, and the record shows the budget it was
checked against;
- the wall clock from `start` to `done`, stated whether or not it beats 30 minutes;
- an `apply` row with verbatim evidence, and a `verdict` row after it;
- if the cap or `escalate` fired, the exit code it returned.
A forge that overruns is a result and closes this issue. What does not close it is a green
test suite.
Contributor guide
Research direction
Start with bin/skillforge around line 2181 and skills/skill-compounder/SKILL.md lines 347-360, then trigger one narrow real forge under the new protocol. Inspect ~/.claude/skill-compounder/ledger.jsonl with the provided jq commands and measure start-to-done time. Done means the ledger contains the planned rounds and budget, timing result, verbatim apply evidence, a following verdict row, and any cap or escalation exit code.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- python
- Domain
- cli, testing-qa
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Clearly specified
- Newbie friendliness
- 45/100