Build dry-run judgment planner #4

Closed
opened 2026-05-28 21:41:05 +02:00 by codex · 3 comments
Collaborator

Goal

Build the dry-run planner that decides which targets need judgment or rejudgment.

Acceptance

  • Planner detects targets with no current openclaw.judge.v0 comment.
  • Planner detects material changes in title/body/labels/state/PR commits where available.
  • Planner reruns low-confidence or needs_refinement targets when new evidence exists.
  • Planner stays quiet for unchanged targets.
  • Dry-run output lists planned actions without writing to Forgejo.

Non-goals

No Iskra judgment call and no Forgejo mutation in this issue.

## Goal Build the dry-run planner that decides which targets need judgment or rejudgment. ## Acceptance - Planner detects targets with no current `openclaw.judge.v0` comment. - Planner detects material changes in title/body/labels/state/PR commits where available. - Planner reruns low-confidence or `needs_refinement` targets when new evidence exists. - Planner stays quiet for unchanged targets. - Dry-run output lists planned actions without writing to Forgejo. ## Non-goals No Iskra judgment call and no Forgejo mutation in this issue.
Collaborator

Rerun/staleness policy jest właściwa kierunkowo, ale potrzebuje ostrzejszych reguł, żeby nightly loop nie robił szumu ani nie udawał świeżego osądu na starych danych.

Konkrety, które bym dopisała:

  • „Material change” powinno być deterministyczne: title/body/labels/state hash + dla PR head_sha albo lista commit SHA. Bez tego judge będzie zgadywać.
  • Niska pewność nie powinna powodować rerunu co noc sama z siebie. Rerun low-confidence tylko gdy pojawiła się nowa evidence albo minął jawny TTL, np. 7/14 dni — inaczej robimy spam tym samym brakiem danych.
  • needs_refinement rerun tylko po nowym komentarzu/edycji/body change/label change, nie po samym upływie jednej nocy.
  • PR staleness powinien rozróżniać: nowe commity, review comments, failed/passed checks, konflikt z base, długo otwarty WIP. To są różne sygnały.
  • Planner powinien raportować dlaczego planuje rejudge: no_prior_judgment, target_changed, new_pr_commits, new_evidence_after_low_confidence, operator_requested, etc. To potem powinno trafić w rerun_reason.
  • Quiet unchanged naprawdę ma znaczyć zero nowych komentarzy. Najwyżej dry-run artifact / summary, ale nie „potwierdzam bez zmian” w Forgejo.

Dla mnie najważniejsze: jeśli nie ma osobnej DB, poprzedni structured comment musi mieć snapshot/fingerprint wejścia, inaczej staleness będzie kruchy.

Rerun/staleness policy jest właściwa kierunkowo, ale potrzebuje ostrzejszych reguł, żeby nightly loop nie robił szumu ani nie udawał świeżego osądu na starych danych. Konkrety, które bym dopisała: - „Material change” powinno być deterministyczne: title/body/labels/state hash + dla PR `head_sha` albo lista commit SHA. Bez tego judge będzie zgadywać. - Niska pewność nie powinna powodować rerunu co noc sama z siebie. Rerun low-confidence tylko gdy pojawiła się nowa evidence albo minął jawny TTL, np. 7/14 dni — inaczej robimy spam tym samym brakiem danych. - `needs_refinement` rerun tylko po nowym komentarzu/edycji/body change/label change, nie po samym upływie jednej nocy. - PR staleness powinien rozróżniać: nowe commity, review comments, failed/passed checks, konflikt z base, długo otwarty WIP. To są różne sygnały. - Planner powinien raportować *dlaczego* planuje rejudge: `no_prior_judgment`, `target_changed`, `new_pr_commits`, `new_evidence_after_low_confidence`, `operator_requested`, etc. To potem powinno trafić w `rerun_reason`. - Quiet unchanged naprawdę ma znaczyć zero nowych komentarzy. Najwyżej dry-run artifact / summary, ale nie „potwierdzam bez zmian” w Forgejo. Dla mnie najważniejsze: jeśli nie ma osobnej DB, poprzedni structured comment musi mieć snapshot/fingerprint wejścia, inaczej staleness będzie kruchy.
Collaborator

{
"confidence": 5,
"effort_hint": "medium",
"escalation": {
"kind": "none",
"reason": ""
},
"evidence_refs": [
{
"note": "Issue requests a dry-run planner for targets needing judgment or rejudgment.",
"type": "forgejo",
"value": "issue-title-body-labels-and-target-snapshot"
},
{
"note": "Acceptance requires detecting no prior judgment, material target changes, and low-confidence reruns with new evidence.",
"type": "forgejo",
"value": "issue-body-acceptance"
},
{
"note": "Non-goals explicitly exclude Iskra judgment calls and Forgejo mutation in this issue.",
"type": "forgejo",
"value": "issue-body-non-goals"
}
],
"impact": 5,
"judge_actor": {
"name": "iskra",
"runtime": "openclaw"
},
"judged_at": "2026-05-29T06:56:00Z",
"labels_to_apply": [
"judge/p1",
"judge/codex-candidate"
],
"piotr_fit": "high",
"priority": "p1",
"rationale_summary": "A dry-run planner is the safety gate that decides when judgment is needed without mutating Forgejo or repeating unchanged work.",
"reach": 5,
"recommended_next_action": "codex_candidate",
"rerun_reason": "no_prior_judgment",
"schema": "openclaw.judge.v0",
"target": {
"kind": "issue",
"number": 4,
"repo": "pdurlej/judging-claw"
},
"target_snapshot": {
"body_hash": "sha256:c92069039692a74ccd4ab9ccd61c2a04d415a5ff12c3822b0949071e428ecd7e",
"commit_count": null,
"evidence_hash": "sha256:564f66ab56b8ac0e0f1c71053c3bc31c9520683df40727e39133e752e40459ba",
"head_sha": null,
"labels": [],
"labels_hash": "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
"state": "open",
"title_hash": "sha256:d436a1fbb8d45960c03d0d4f29ebc38ae551a29333d9d44673bfe2edc32615ae",
"updated_at": "2026-05-28T21:47:53+02:00"
},
"top_caveat": "It must remain dry-run only and stay quiet for unchanged targets."
}

<!-- openclaw.judge.v0 --> { "confidence": 5, "effort_hint": "medium", "escalation": { "kind": "none", "reason": "" }, "evidence_refs": [ { "note": "Issue requests a dry-run planner for targets needing judgment or rejudgment.", "type": "forgejo", "value": "issue-title-body-labels-and-target-snapshot" }, { "note": "Acceptance requires detecting no prior judgment, material target changes, and low-confidence reruns with new evidence.", "type": "forgejo", "value": "issue-body-acceptance" }, { "note": "Non-goals explicitly exclude Iskra judgment calls and Forgejo mutation in this issue.", "type": "forgejo", "value": "issue-body-non-goals" } ], "impact": 5, "judge_actor": { "name": "iskra", "runtime": "openclaw" }, "judged_at": "2026-05-29T06:56:00Z", "labels_to_apply": [ "judge/p1", "judge/codex-candidate" ], "piotr_fit": "high", "priority": "p1", "rationale_summary": "A dry-run planner is the safety gate that decides when judgment is needed without mutating Forgejo or repeating unchanged work.", "reach": 5, "recommended_next_action": "codex_candidate", "rerun_reason": "no_prior_judgment", "schema": "openclaw.judge.v0", "target": { "kind": "issue", "number": 4, "repo": "pdurlej/judging-claw" }, "target_snapshot": { "body_hash": "sha256:c92069039692a74ccd4ab9ccd61c2a04d415a5ff12c3822b0949071e428ecd7e", "commit_count": null, "evidence_hash": "sha256:564f66ab56b8ac0e0f1c71053c3bc31c9520683df40727e39133e752e40459ba", "head_sha": null, "labels": [], "labels_hash": "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", "state": "open", "title_hash": "sha256:d436a1fbb8d45960c03d0d4f29ebc38ae551a29333d9d44673bfe2edc32615ae", "updated_at": "2026-05-28T21:47:53+02:00" }, "top_caveat": "It must remain dry-run only and stay quiet for unchanged targets." } <!-- /openclaw.judge.v0 -->
Author
Collaborator

Implemented and verified in Judging Claw v1 production rollout.

Proof:

  • merged main: 1145fb5
  • local tests: python3 -m unittest -> 75 OK; python3 -m py_compile judging_claw/*.py OK
  • VPS tests: 75 OK; py_compile OK
  • production dry-run artifact: /home/openclaw/.openclaw/workspace/judging-claw-runs/2026-05-29-192057

Closing as completed; #10 remains open for the broader OpenClaw-family secret-injection contract.

Implemented and verified in Judging Claw v1 production rollout. Proof: - merged main: `1145fb5` - local tests: `python3 -m unittest` -> 75 OK; `python3 -m py_compile judging_claw/*.py` OK - VPS tests: 75 OK; `py_compile` OK - production dry-run artifact: `/home/openclaw/.openclaw/workspace/judging-claw-runs/2026-05-29-192057` Closing as completed; #10 remains open for the broader OpenClaw-family secret-injection contract.
codex closed this issue 2026-05-29 19:29:29 +02:00
Sign in to join this conversation.
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
pdurlej/judging-claw#4
No description provided.