Skip to content

fix(autonomy): verify shell work before completing tickets - #131

Merged
ifuri-validator-agent[bot] merged 1 commit into
mainfrom
ticket-095--shell-finalization
Sep 6, 2026
Merged

fix(autonomy): verify shell work before completing tickets#131
ifuri-validator-agent[bot] merged 1 commit into
mainfrom
ticket-095--shell-finalization

Conversation

@tom-sapletta-com

Copy link
Copy Markdown
Contributor

A shell client can exit successfully while reporting denied edits or no changes. Preserve its actual output and veto automatic completion on explicit unsuccessful-work reports. In verified mode, run verification before marking the ticket done and require a result for the correct ticket.

Validation: 31 finalization/post-run tests, Ruff, managed governance, Docker Compose, compileall and whitespace checks pass. Negative prose is a conservative veto; ticket-specific positive acceptance evidence remains separate work.

Ticket: ticket-095.

@ifuri-validator-agent ifuri-validator-agent Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Deterministic Validator approval for exact head c39dcabc2297e6fa5dffd2b71e14fe277c2b8f51.

Ticket: ticket-095
Correlation ID: koru-pr-131-ticket-095
Model: zai/glm-5.3
Reviewed diff chunks: 2
Advisory LLM verdict: APPROVE
Advisory summary: Reviewed all 2 diff chunk(s). Chunk implements shell-drive finalization correctly: verification now runs before marking done, a missing/mismatched verification receipt blocks closure, and explicit unsuccessful-work prose vetoes auto-done. Note precedence was corrected to preserve raw stdout. Tests cover the new paths and all CI checks pass. | Reviewed chunk 2 of 2: adds tests to shell_drive_finalize covering failed verification paths (missing receipt, reopened ticket) asserting finalize returns verify_failed and never transiently completes tickets with 'ticket done'. No production code or security issues visible in this chunk. All CI checks pass.
Advisory findings: none
The LLM output above is advisory and was not used as the approval trust root.

Actual PR impact radar

Exact range: ab9dba9ec5b42ab68430ac96fd5b825bdbf665f0...c39dcabc2297e6fa5dffd2b71e14fe277c2b8f51
Change digest: dae578bbba17c50d776f6b546d3ab3ad6a1fcd210a76db30c4963694c49634bf
Score: 56/100 (L), estimated 65 min, split recommended: true
Affected services/components: repository-wide/unclassified

Machine-readable radar JSONL and SVG
{"actual_change":{"additions":178,"base_sha":"ab9dba9ec5b42ab68430ac96fd5b825bdbf665f0","binary_files":0,"categories":{"code":2,"configuration":1,"docs":4,"tests":1},"change_digest":"dae578bbba17c50d776f6b546d3ab3ad6a1fcd210a76db30c4963694c49634bf","comparison":"ab9dba9ec5b42ab68430ac96fd5b825bdbf665f0...c39dcabc2297e6fa5dffd2b71e14fe277c2b8f51","deletions":23,"file_count":8,"files":["project/ticket-095/README.md","project/ticket-095/ai-codex-logs.txt","project/ticket-095/ai-codex.md","project/ticket-095/changelog.md","project/ticket-095/intent.json","project/ticket-095/preprompt.md","src/koru/autonomy/shell_drive_finalize.py","tests/test_shell_drive_finalize.py"],"head_sha":"c39dcabc2297e6fa5dffd2b71e14fe277c2b8f51","service_count":0,"services":[]},"assessment_mode":"observed-pr","axes":{"coupling":4,"delivery":2,"scope":4,"uncertainty":3,"validation":1},"complexity":"L","confidence":0.9,"diagnostics":["RADAR-ACCEPTANCE-MISSING","RADAR-BUDGET-EXCEEDED"],"estimate":{"budget_minutes":30,"minutes":65,"within_budget":false},"impact":{"components":["finalization","project","src/koru","tests"],"files":["finalization/post-run","project/ticket-095/README.md","project/ticket-095/ai-codex-logs.txt","project/ticket-095/ai-codex.md","project/ticket-095/changelog.md","project/ticket-095/intent.json","project/ticket-095/preprompt.md","src/koru/autonomy/shell_drive_finalize.py","tests/test_shell_drive_finalize.py"],"public_interfaces":[],"runtime_dependencies":0},"schema":"subactor.ticket-radar/v1","score":56,"split":{"parts":[{"estimated_minutes":14,"name":"Implement finalization","scope":["finalization"]},{"estimated_minutes":14,"name":"Implement project","scope":["project"]},{"estimated_minutes":14,"name":"Implement src/koru","scope":["src/koru"]},{"estimated_minutes":14,"name":"Implement tests","scope":["tests"]},{"estimated_minutes":15,"name":"Validate and project to trackers","scope":["tests","planfile","github/gitlab/jira projections"]}],"reason":"estimated_minutes_exceed_budget","recommended":true},"standards":[{"id":"wellmanifest/dsl","revision":"6c60fc4e0dd1f1bb74f46a7745e28019908d1203","version":"0.1.0-dev"},{"id":"wellmanifest/ticket-lifecycle","revision":"5bf581907a87b46a13a73e6c033d3abe4d9a306f","version":"0.1.0-dev"},{"id":"wellmanifest/git-lifecycle","revision":"7d77d4b7af57e69bc75c3a0290b3a4805c5c4438","version":"0.2.0-dev"},{"id":"wellmanifest/logs","revision":"48c284ef7a069055c0bcb6b900147ce5e65f8b43","version":"0.3.0"}],"ticket_ref":"ticket-095"}
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" viewBox="0 0 128 128" role="img"><title>ticket-095: fix(autonomy): verify shell work before completing tickets</title><rect width="128" height="128" rx="12" fill="#f8fafc"/><g stroke-width="1"><polygon points="64,55 72,61 69,71 59,71 56,61" fill="none" stroke="#d7dde5"/><polygon points="64,47 80,59 74,78 54,78 48,59" fill="none" stroke="#d7dde5"/><polygon points="64,38 89,56 79,85 49,85 39,56" fill="none" stroke="#d7dde5"/><polygon points="64,30 97,53 84,92 44,92 31,53" fill="none" stroke="#d7dde5"/><polygon points="64,21 105,51 89,99 39,99 23,51" fill="none" stroke="#d7dde5"/><line x1="64" y1="64" x2="64" y2="21" stroke="#aab4c0"/><line x1="64" y1="64" x2="105" y2="51" stroke="#aab4c0"/><line x1="64" y1="64" x2="89" y2="99" stroke="#aab4c0"/><line x1="64" y1="64" x2="39" y2="99" stroke="#aab4c0"/><line x1="64" y1="64" x2="23" y2="51" stroke="#aab4c0"/></g><polygon points="64,30 97,53 79,85 59,71 48,59" fill="#fb923c" fill-opacity="0.45" stroke="#c2410c" stroke-width="2"/><circle cx="64" cy="64" r="3" fill="#c2410c"/><g font-family="sans-serif" font-size="7" fill="#334155"><text x="64" y="11" text-anchor="middle">SCO</text><text x="114" y="48" text-anchor="middle">COU</text><text x="95" y="107" text-anchor="middle">UNC</text><text x="33" y="107" text-anchor="middle">VAL</text><text x="14" y="48" text-anchor="middle">DEL</text></g><text x="64" y="124" text-anchor="middle" font-family="sans-serif" font-size="8" fill="#0f172a">L · 65m</text></svg>
Merge will be attempted after this approval when explicitly authorized. ## Decision record (recomputable)
DECISION D-095-3404
TICKET ticket-095
HEAD_SHA c39dcabc2297e6fa5dffd2b71e14fe277c2b8f51
CORRELATION_ID koru-pr-131-ticket-095
ACTOR agent:ifuri-validator-agent[bot]
APPLIED_RULE P-CORE-015
INPUT author_login = "tom-sapletta-com"
INPUT observed_checks = ["governance / enforce=PASS","standard packs / conformance=PASS","governance / remote lifecycle=PASS","standard packs / conformance=PASS","onedev/local-verify=PASS"]
INPUT required_checks = ["onedev/local-verify","standard packs / conformance"]
INPUT required_checks_source = "protected registry + GitHub applied rules (env/request)"
INPUT reviewer_login = "ifuri-validator-agent[bot]"
INPUT superseded_checks = ["smoke"]
INPUT ticket_radar_receipt = {"schema":"subactor.ticket-radar/v1","base_sha":"ab9dba9ec5b42ab68430ac96fd5b825bdbf665f0","head_sha":"c39dcabc2297e6fa5dffd2b71e14fe277c2b8f51","change_digest":"dae578bbba17c50d776f6b546d3ab3ad6a1fcd210a76db30c4963694c49634bf","score":56,"complexity":"L","estimated_minutes":65,"split_recommended":true,"services":[],"authority":"ADVISORY","promotion":"FORBIDDEN"}
VERDICT APPROVE AUTHORITY DETERMINISTIC
REJECTED REQUEST_CHANGES BECAUSE NO_UNSAFE_CHANGE_REASON_FOUND
ADVISORY llm_verdict = "APPROVE" MODEL "zai/glm-5.3"
ASSERT VERDICT_AUTHORITY != "ADVISORY"

@ifuri-validator-agent
ifuri-validator-agent Bot merged commit 38380c3 into main Sep 6, 2026
6 checks passed
@ifuri-validator-agent
ifuri-validator-agent Bot deleted the ticket-095--shell-finalization branch September 6, 2026 19:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant