Repository navigation
[ticket-131] Cache explicit GitHub API reads from monitors - #156
Conversation
There was a problem hiding this comment.
Validator approval after policy checks for exact head 4817c538b6a2ce3ca7dec15053c69fbb8cba9935.
Ticket: ticket-131
Correlation ID: local-semcod-monag-pr-156-ticket-131
Model: openai/cursor-auto
Reviewed diff chunks: 1
Advisory LLM verdict: APPROVE
Advisory summary: Reviewed all 1 diff chunk(s). The visible change safely enables caching for context-independent gh api requests and repository commands with explicit --repo/-R context, preserves bypass for cwd-dependent placeholders and implicit repository context, honors zero TTL after runner initialization, and avoids duplicate transport calls after cache-layer failures. The regression tests directly exercise these behaviors.
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: a373f608ca484389ac820eed576043e153f7f87d...4817c538b6a2ce3ca7dec15053c69fbb8cba9935
Change digest: 84d7db5ce0f7056f1df6d2ce62a3eb2d0b3ca6cebb5a2cb6c2c83ca549b1c874
Score: 60/100 (L), estimated 67 min, split recommended: true
Affected services/components: repository-wide/unclassified
Machine-readable radar JSONL and SVG
{"actual_change":{"additions":193,"base_sha":"a373f608ca484389ac820eed576043e153f7f87d","binary_files":0,"categories":{"code":1,"configuration":1,"docs":1,"tests":1},"change_digest":"84d7db5ce0f7056f1df6d2ce62a3eb2d0b3ca6cebb5a2cb6c2c83ca549b1c874","comparison":"a373f608ca484389ac820eed576043e153f7f87d...4817c538b6a2ce3ca7dec15053c69fbb8cba9935","deletions":5,"file_count":4,"files":["project/ticket-131/README.md","project/ticket-131/intent.json","src/monag/cache.py","tests/test_procache_integration.py"],"head_sha":"4817c538b6a2ce3ca7dec15053c69fbb8cba9935","service_count":0,"services":[]},"assessment_mode":"observed-pr","axes":{"coupling":5,"delivery":4,"scope":2,"uncertainty":3,"validation":1},"complexity":"L","confidence":0.9,"diagnostics":["RADAR-ACCEPTANCE-MISSING","RADAR-BUDGET-EXCEEDED"],"estimate":{"budget_minutes":30,"minutes":67,"within_budget":false},"impact":{"components":["--repo","cache","project","src/monag","tests"],"files":["--repo/-R","cache/monitor","project/ticket-131/README.md","project/ticket-131/intent.json","src/monag/cache.py","tests/test_procache_integration.py"],"public_interfaces":[],"runtime_dependencies":1},"schema":"subactor.ticket-radar/v1","score":60,"split":{"parts":[{"estimated_minutes":12,"name":"Implement --repo","scope":["--repo"]},{"estimated_minutes":12,"name":"Implement cache","scope":["cache"]},{"estimated_minutes":12,"name":"Implement project","scope":["project"]},{"estimated_minutes":12,"name":"Implement src/monag","scope":["src/monag"]},{"estimated_minutes":12,"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-131"}<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" viewBox="0 0 128 128" role="img"><title>ticket-131: [ticket-131] Cache explicit GitHub API reads from monitors</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,47 105,51 79,85 59,71 31,53" 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 · 67m</text></svg>DECISION D-131-2337
TICKET ticket-131
HEAD_SHA 4817c538b6a2ce3ca7dec15053c69fbb8cba9935
CORRELATION_ID local-semcod-monag-pr-156-ticket-131
ACTOR agent:ifuri-validator-agent[bot]
APPLIED_RULE P-CORE-015
INPUT author_login = "tom-sapletta-com"
INPUT observed_checks = ["governance / enforce=PASS","governance / remote lifecycle=PASS","onedev/local-verify=PASS"]
INPUT required_checks = ["onedev/local-verify","governance / remote lifecycle","governance / enforce"]
INPUT required_checks_source = "protected registry (env/request)"
INPUT reviewer_login = "ifuri-validator-agent[bot]"
INPUT semantic_review_assessment = {"schema":"subactor.validator/semantic-review-assessment/v1","subject":{"repository":"semcod/monag","pull_request":156,"head_sha":"4817c538b6a2ce3ca7dec15053c69fbb8cba9935","base_sha":"a373f608ca484389ac820eed576043e153f7f87d","diff_sha256":"f6f3d391df50d5b39165c89b7a57d8ee035eb5ebd462b7e9ed1163e4b83696c9"},"policy":{"policy_schema":"subactor.validator/semantic-review-policy/v1","policy_version":1,"policy_sha256":"676cb4516bbfed2a000e40b9b1b6e4a430ecc761ec546aeb53d721a1905cfdd7","required":false,"critical_paths":[],"observed_paths":["project/ticket-131/README.md","project/ticket-131/intent.json","src/monag/cache.py","tests/test_procache_integration.py"]},"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":"a373f608ca484389ac820eed576043e153f7f87d","head_sha":"4817c538b6a2ce3ca7dec15053c69fbb8cba9935","change_digest":"84d7db5ce0f7056f1df6d2ce62a3eb2d0b3ca6cebb5a2cb6c2c83ca549b1c874","score":60,"complexity":"L","estimated_minutes":67,"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 "openai/cursor-auto"
ASSERT VERDICT_AUTHORITY != "ADVISORY"
The monitor bypasses Procache whenever a working directory is supplied without --repo. Explicit gh api endpoints do not use that flag, so repeated record reads unnecessarily hit GitHub. Admit context-independent API endpoints and explicit --repo/-R forms while keeping repository placeholders and implicit repository commands on the direct path. Honor TTL=0 even after runner initialization.
Validation: 42 scoped cache/monitor tests and 16 subtests pass against accepted canonical Procache, plus scoped lint and managed governance. The five new regression methods also pass under unittest discovery, matching the protected Monag collector. Regressions cover cache reuse, cwd-sensitive bypass, zero-TTL direct execution and avoiding duplicate calls on transport failure. No dependency or unrelated integration file changes.
Ticket: ticket-131. Frozen head: 4817c53.