diff --git a/docs/workpad/reports/2026-10-17-00-gremlins-mvp-cuts.md b/docs/workpad/reports/2026-10-17-00-gremlins-mvp-cuts.md new file mode 100644 index 0000000..97b8e61 --- /dev/null +++ b/docs/workpad/reports/2026-10-17-00-gremlins-mvp-cuts.md @@ -0,0 +1,25 @@ +# Gremlins MVP: unrequested-surface calls + +- Author model: **claude-sonnet-5-5** · Date: 2026-10-17 · Branch `gremlins-mvp` @ `cfeb1bf` +- Source: [phase review](2026-10-17-gremlins-mvp-review.md) §2. The user ruled on the rows below: keep the useful ones, cut the rest, one-line reason each. This commit records the calls; the cuts follow in the next commit. + +| # | Item | Call | Reason | +|---|---|---|---| +| 2 | `briefs/.md`: full prompt per job | keep | Debugging aid. | +| 3 | Ledger torn-last-line repair | keep | Protects the ledger after a hard stop. | +| 4 | In-process `threading.Lock` around ledger append | cut | Each spawn is its own process, so it guards nothing; the spec says "without locks". | +| 5 | `MODEL_RE`, aliases refused at `init` | keep | An alias would change the fingerprint and break cache hits; B1 asks for a full id. | +| 6 | `EFFORTS` choices, default `high` | keep | Trivial argparse guard. | +| 7 | Tool deny list (`Bash(claude:*)`, `git push/rebase/reset --hard`) | keep | Headless unattended gremlins must not recurse or rewrite history. | +| 8 | `SPIRE_GREMLIN_CHILD=1` in the child env | cut | Rider: the refusal it served was dropped, so it is leftover. | +| 11 | `refused` / `model_refused` status case | cut | Not in the spec's classify; the harness substitutes unlisted models silently, so `error` covers it. | +| 12 | Stream fields tracked and never read (`init`, `msg_ids`, `_ids`, `events`, `turns`) | cut | Never read. | +| 13 | `mismatch` in `usage_from_result` | cut | Rider: computed and never read. | +| 14 | `wrote_only_5m` | cut | Rider: never called. | +| 16 | `NAME_RE` on base/job names | keep | Names become file paths. | +| 17 | Note detection by mtime with 2 s slack | cut | Replace with a plain existence check of `notes/.md`, since `spawn` refuses an existing job name (#20). | +| 22 | `base_state` in spawn output | cut | `status` reports warmth and `cache` reports the outcome. | +| 23 | `init` defaults cwd to the git toplevel | keep | cwd is in the fingerprint; a stable default avoids cache misses. | +| 25 | stderr to `raw/.err` | keep | Cheap debugging aid. | +| 26 | Reader join timeout 10 s | keep | Without it an orphan holding stdout hangs the helper (spec §7 leftover). | +| 28 | Unused `ss=None` injection parameter in `call.py` | cut | Used by no caller. |