Repository navigation
fix(application): push the release tag on publish completion (ticket-210) - #213
Conversation
…210) - Governed modes skip the remote release tag before the merge (commit is not on the base branch), and the completion published the registry without any tag, so releases had to be tagged manually and could not serve as release evidence. - On publish completion goal now creates the annotated tag when missing and pushes only that tag through the governed push capability; an existing local tag is reused and push failures are reported without failing the completed publication. - Tests: 15 in the completion module (3 new); full suite green; governance check PASS.
There was a problem hiding this comment.
Validator approval after policy checks for exact head 521eacd0ddeca6b8ce0a50fce9995283933688c9.
Ticket: ticket-210
Correlation ID: local-semcod-goal-pr-213-ticket-210
Model: ollama/qwen2.5:7b
Advisory LLM review: LLM_UNAVAILABLE
Reason: LLM response contains unexpected keys: reason
This approval rests on the deterministic checks alone; no advisory opinion was recorded for this head.
Semantic review prerequisite: not_required; policy 676cb4516bbfed2a000e40b9b1b6e4a430ecc761ec546aeb53d721a1905cfdd7.
Actual PR impact radar
Exact range: ef1c5bb3fd27ebf1baf89c1149c2db2ae88b6f12...521eacd0ddeca6b8ce0a50fce9995283933688c9
Change digest: d57e486e7c831d3e3f42abddbb71411630360c9f0d85e7e3fc658c545b5346fd
Score: 52/100 (M), estimated 60 min, split recommended: true
Affected services/components: repository-wide/unclassified
Machine-readable radar JSONL and SVG
{"actual_change":{"additions":218,"base_sha":"ef1c5bb3fd27ebf1baf89c1149c2db2ae88b6f12","binary_files":0,"categories":{"code":1,"configuration":1,"docs":2,"tests":1},"change_digest":"d57e486e7c831d3e3f42abddbb71411630360c9f0d85e7e3fc658c545b5346fd","comparison":"ef1c5bb3fd27ebf1baf89c1149c2db2ae88b6f12...521eacd0ddeca6b8ce0a50fce9995283933688c9","deletions":4,"file_count":5,"files":["goal/push/core.py","project/TICKETS.md","project/ticket-210/README.md","project/ticket-210/intent.json","tests/test_push_workflow_completion.py"],"head_sha":"521eacd0ddeca6b8ce0a50fce9995283933688c9","service_count":0,"services":[]},"assessment_mode":"observed-pr","axes":{"coupling":3,"delivery":3,"scope":2,"uncertainty":3,"validation":2},"complexity":"M","confidence":0.9,"diagnostics":["RADAR-ACCEPTANCE-MISSING","RADAR-BUDGET-EXCEEDED"],"estimate":{"budget_minutes":30,"minutes":60,"within_budget":false},"impact":{"components":["goal","project","tests"],"files":["goal/push/core.py","project/TICKETS.md","project/governance-check.sh","project/ticket-210/README.md","project/ticket-210/intent.json","tests/test_push_workflow_completion.py"],"public_interfaces":[],"runtime_dependencies":0},"schema":"subactor.ticket-radar/v1","score":52,"split":{"parts":[{"estimated_minutes":17,"name":"Implement goal","scope":["goal"]},{"estimated_minutes":17,"name":"Implement project","scope":["project"]},{"estimated_minutes":17,"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-210"}<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" viewBox="0 0 128 128" role="img"><title>ticket-210: fix(application): push the release tag on publish completion (ticket-210)</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 89,56 79,85 54,78 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">M · 60m</text></svg>DECISION D-210-2808
TICKET ticket-210
HEAD_SHA 521eacd0ddeca6b8ce0a50fce9995283933688c9
CORRELATION_ID local-semcod-goal-pr-213-ticket-210
ACTOR agent:ifuri-validator-agent[bot]
APPLIED_RULE P-CORE-015
INPUT author_login = "tom-sapletta-com"
INPUT observed_checks = ["governance / enforce=PASS","test (3.13)=PASS","governance / remote lifecycle=PASS","test (3.12)=PASS","onedev/local-verify=PASS"]
INPUT required_checks = ["onedev/local-verify","test (3.12)","test (3.13)","governance / remote lifecycle","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":"semcod/goal","pull_request":213,"head_sha":"521eacd0ddeca6b8ce0a50fce9995283933688c9","base_sha":"ef1c5bb3fd27ebf1baf89c1149c2db2ae88b6f12","diff_sha256":"54c72e1778b706dc9f7e2cff34cf4d005c5141eea84a345796316de3e87b58a7"},"policy":{"policy_schema":"subactor.validator/semantic-review-policy/v1","policy_version":1,"policy_sha256":"676cb4516bbfed2a000e40b9b1b6e4a430ecc761ec546aeb53d721a1905cfdd7","required":false,"critical_paths":[],"observed_paths":["goal/push/core.py","project/TICKETS.md","project/ticket-210/README.md","project/ticket-210/intent.json","tests/test_push_workflow_completion.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":"ef1c5bb3fd27ebf1baf89c1149c2db2ae88b6f12","head_sha":"521eacd0ddeca6b8ce0a50fce9995283933688c9","change_digest":"d57e486e7c831d3e3f42abddbb71411630360c9f0d85e7e3fc658c545b5346fd","score":52,"complexity":"M","estimated_minutes":60,"split_recommended":true,"services":[],"authority":"ADVISORY","promotion":"FORBIDDEN"}
VERDICT APPROVE AUTHORITY DETERMINISTIC
REJECTED REQUEST_CHANGES BECAUSE NO_UNSAFE_CHANGE_REASON_FOUND
ADVISORY llm_verdict = "" MODEL "ollama/qwen2.5:7b"
ASSERT VERDICT_AUTHORITY != "ADVISORY"
Summary
Validation
./project/governance-check.sh— PASS