Cook execute 3/N: delta-risk runner (pure gate, no I/O) #51
No reviewers
Labels
No labels
cook/idea
judge/codex-candidate
judge/hermes-candidate
judge/low-confidence
judge/needs-refinement
judge/operator-needed
judge/p0
judge/p1
judge/p2
judge/p3
judge/park
judge/patchwarden-candidate
judge/stale-priority
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
pdurlej/judging-claw!51
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "claude-cook3-runner"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Third execute step for Cook. Pure, deterministic, no I/O.
What
The pre-LLM core of the Cook lane — Iskra's nightly delta-risk feed ("what changed that could bite Piotr"), not an idea generator. One pure pipeline:
judging_claw/cook_runner.py:CookSignal— a normalized delta-risk signal:source/ref/why/kind+hard(concrete changed-state risk) +piotr_pattern(ties to Piotr himself: a promise, an owed decision, a deadline). ValidatessourceagainstCOOK_EVIDENCE_SOURCES.whyis short and paraphrased on purpose.signals_from_judgments— this run'sopenclaw.judge.v0output:p0/p1, hard actions (operator_needed/needs_refinement/hermes_candidate), low-confidence, operator escalation. Reuses Judge's already privacy-scrubbedtop_caveataswhy, so nothing new leaks.signals_from_open_loops—open-loops.jsonloops[],promised/workingonly, with overdue detection fromnextCheckpointAt/promisedAt. An open loop is a Piotr-facing promise by definition.signals_from_matrix_search— a sidecar/v1/events/searchresponse. Only the matched marker words enterwhy(pilnuj/jutro/deadline/nie działa/uciekło), never the raw message text.evaluate_gate— Iskra's runtime spec: ration first (max 1/night), then ≥2 distinct hard refs + a Piotr-pattern signal. Two flags on one target count once — the feed is about his week, not one issue's metadata.run_cook_precheck— pure entry point → acook_silence_template(reason)object (caller must NOT spend an LLM call) or a request packet forcook_contract.render_cook_prompt.constants.py:COOK_MAX_PER_NIGHT,COOK_HARD_JUDGE_PRIORITIES/ACTIONS,COOK_ACTIVE_LOOP_STATUSES,COOK_MATRIX_MARKERS. (The olderCOOK_RATION_PER_JUDGEDis now superseded by the 1/night cap; kept as a secondary guard.)Spec source: issue #46 (Iskra's own answer), refined live ("delta-risk feed, max 1/night, Honcho is per-candidate grounding not the generator").
Boundaries — nothing here is live
The runner does no I/O: no sidecar/Forgejo reads, no LLM call, no grounding-note or issue writes. That is Cook 4/N (nightly wiring + ration enforcement + the staging write), which is production-touching and operator-gated. This PR only makes the fire/silence decision testable.
Recon note for 4/N (operator-gated precondition)
Confirmed live on vps1000: the sidecar's
obsidian_writehard-validatesroot ∈ allowed_obsidian_rootsand returnsroot_not_allowedotherwise. Before 4/N's grounding-note write can land,01 Projects/Judging Claw/Cookmust be added to the sidecar's allowed roots (a gated config change on the running sidecar). Flagging now so it isn't a surprise — the write client (#50) already refuses gold defensively.Suite: 184 tests OK (157 + 27),
py_compileclean.🤖 Generated with Claude Code