ContextLab / ContextLab/claude-skill-compounder

No forge has run since the diet landed: round cap, 30-minute target, apply and verdict rows all unexercised

Open
#34 5 comments 0 reactions 0 assignees View on GitHub
enhancement
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.