Skip to content

feat(comparison): persist and expose base/workspace diagnostics artifacts (ticket-110) - #139

Merged
ifuri-validator-agent[bot] merged 1 commit into
mainfrom
ticket/110-diagnostics-artifacts
Oct 20, 2026
Merged

ifuri-validator-agent[bot] merged 1 commit into
mainfrom
ticket/110-diagnostics-artifacts

Conversation

@tom-sapletta-com

Copy link
Copy Markdown
Contributor

Closes #137.

compare-workspace already reads both runs' diagnostics. It now writes them as base.diagnostics.json and workspace.diagnostics.json next to the graphs, and adds artifacts.baseDiagnostics / artifacts.workspaceDiagnostics through artifactPaths, so the path separators are normalised. Both keys are additive; existing keys are unchanged.

With this, subactor/platform#655 can drop the re-compaction and re-diagnosis of two 207 MB graphs on every PR.

Willman (koru.develop_ticket, glm-5.3) drafted the patch; I corrected it in review. My spec targeted an older pin, and on main artifactPaths lives in workspace-trend.ts.

Verification: npm run build && T2C_USE_SUBLLM=false node --test dist/test/workspace.test.js dist/test/cli-compare-workspace.test.js → 6 pass. ./project/governance-check.sh --base origin/main → GOV-PASS.

🤖 Generated with Claude Code

…acts (ticket-110, Closes #137)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@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.

Validator approval after policy checks for exact head efe2793005c7a931f3f06c14f4248151e01b179c.

Ticket: ticket-110
Correlation ID: todo2code-pr-139-ticket-110-efe2793005
Model: zai/glm-5.3
Reviewed diff chunks: 1
Advisory LLM verdict: APPROVE
Advisory summary: Reviewed all 1 diff chunk(s). Additive change: compare-workspace persists already-loaded base/workspace diagnostics via artifactPaths and exposes two new additive artifact keys, with test assertions on file existence and diagnostics array shape. Required checks (verify, Java adapter, koru/code-review, governance/enforce) all pass; skipping observational governance checks are non-blocking. Code matches the stated intent, paths normalized through artifactPaths, no interface or data changes beyond the additive keys.
Advisory findings: none
The LLM output above is advisory and was not used as the approval trust root.
Semantic review prerequisite: not_required; policy 676cb4516bbfed2a000e40b9b1b6e4a430ecc761ec546aeb53d721a1905cfdd7.

Actual PR impact radar

Exact range: a85da84e72c6c3fc7d2ea1c8b6eaf790f972a63f...efe2793005c7a931f3f06c14f4248151e01b179c
Change digest: d1219a20906223ffd1b536abfabf36edf375c12cf03721d7bd236d62a908d70e
Score: 68/100 (L), estimated 99 min, split recommended: true
Affected services/components: repository-wide/unclassified

Machine-readable radar JSONL and SVG
{"actual_change":{"additions":117,"base_sha":"a85da84e72c6c3fc7d2ea1c8b6eaf790f972a63f","binary_files":0,"categories":{"code":2,"configuration":1,"docs":2,"tests":1},"change_digest":"d1219a20906223ffd1b536abfabf36edf375c12cf03721d7bd236d62a908d70e","comparison":"a85da84e72c6c3fc7d2ea1c8b6eaf790f972a63f...efe2793005c7a931f3f06c14f4248151e01b179c","deletions":0,"file_count":6,"files":["project/TICKETS.md","project/ticket-110/README.md","project/ticket-110/intent.json","src/comparison/workspace-trend.ts","src/comparison/workspace.ts","test/workspace.test.ts"],"head_sha":"efe2793005c7a931f3f06c14f4248151e01b179c","service_count":0,"services":[]},"assessment_mode":"observed-pr","axes":{"coupling":5,"delivery":3,"scope":5,"uncertainty":3,"validation":1},"complexity":"L","confidence":0.9,"diagnostics":["RADAR-ACCEPTANCE-MISSING","RADAR-BUDGET-EXCEEDED"],"estimate":{"budget_minutes":30,"minutes":99,"within_budget":false},"impact":{"components":["base","claude.com","dist","origin","project","src/comparison","subactor","test"],"files":["base/workspace","claude.com/claude-code","dist/test/cli-compare-workspace.test.js","dist/test/workspace.test.js","origin/main","project/TICKETS.md","project/governance-check.sh","project/ticket-110/README.md","project/ticket-110/intent.json","src/comparison/workspace-trend.ts","src/comparison/workspace.ts","subactor/platform","test/workspace.test.ts"],"public_interfaces":[],"runtime_dependencies":1},"schema":"subactor.ticket-radar/v1","score":68,"split":{"parts":[{"estimated_minutes":12,"name":"Implement base","scope":["base"]},{"estimated_minutes":12,"name":"Implement claude.com","scope":["claude.com"]},{"estimated_minutes":12,"name":"Implement dist","scope":["dist"]},{"estimated_minutes":12,"name":"Implement origin","scope":["origin"]},{"estimated_minutes":12,"name":"Implement project","scope":["project"]},{"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-110"}
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" viewBox="0 0 128 128" role="img"><title>ticket-110: feat(comparison): persist and expose base/workspace diagnostics artifacts (ticket-110)</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,21 105,51 79,85 59,71 39,56" 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 · 99m</text></svg>
Merge will be attempted after this approval when explicitly authorized. ## Decision record (recomputable)
DECISION D-110-2149
TICKET ticket-110
HEAD_SHA efe2793005c7a931f3f06c14f4248151e01b179c
CORRELATION_ID todo2code-pr-139-ticket-110-efe2793005
ACTOR agent:ifuri-validator-agent[bot]
APPLIED_RULE P-CORE-015
INPUT author_login = "tom-sapletta-com"
INPUT observed_checks = ["governance=SKIPPING","Live OpenRouter contract (opt-in)=SKIPPING","koru / code-review=PASS","Java adapter (JDK 17 required)=PASS","verify=PASS","governance / remote lifecycle=PASS","governance / enforce=PASS","Java adapter (JDK 17 required)=PASS","verify=PASS"]
INPUT required_checks = ["verify","Java adapter (JDK 17 required)","koru / code-review","governance / enforce","governance / governance / enforce"]
INPUT required_checks_source = "protected registry + GitHub applied rules (env/request)"
INPUT reviewer_login = "ifuri-validator-agent[bot]"
INPUT semantic_review_assessment = {"schema":"subactor.validator/semantic-review-assessment/v1","subject":{"repository":"autogrammar/todo2code","pull_request":139,"head_sha":"efe2793005c7a931f3f06c14f4248151e01b179c","base_sha":"fd4f81a252ecf40032a9f54add0ebc152e9b75bf","diff_sha256":"ff8471ef5ff012865aadf89685ba03a0f8935205c4ae0f34513dd260e896a5e3"},"policy":{"policy_schema":"subactor.validator/semantic-review-policy/v1","policy_version":1,"policy_sha256":"676cb4516bbfed2a000e40b9b1b6e4a430ecc761ec546aeb53d721a1905cfdd7","required":false,"critical_paths":[],"observed_paths":["project/TICKETS.md","project/ticket-110/README.md","project/ticket-110/intent.json","src/comparison/workspace-trend.ts","src/comparison/workspace.ts","test/workspace.test.ts"]},"grounding":"full-diff-not-per-finding-proof","execution_authority":false,"status":"not_required","reason":null,"review_sha256":null,"unresolved":[]}
INPUT superseded_checks = []
INPUT ticket_radar_receipt = {"schema":"subactor.ticket-radar/v1","base_sha":"a85da84e72c6c3fc7d2ea1c8b6eaf790f972a63f","head_sha":"efe2793005c7a931f3f06c14f4248151e01b179c","change_digest":"d1219a20906223ffd1b536abfabf36edf375c12cf03721d7bd236d62a908d70e","score":68,"complexity":"L","estimated_minutes":99,"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 104bdb5 into main Oct 20, 2026
15 checks passed
@ifuri-validator-agent
ifuri-validator-agent Bot deleted the ticket/110-diagnostics-artifacts branch October 20, 2026 02:00
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.

Persist and expose base/workspace diagnostics in compare-workspace artifacts

1 participant