Skip to content

refactor(ticket-193): extract helpers from publish (STARTER-612) - #377

Merged
ifuri-validator-agent[bot] merged 1 commit into
mainfrom
ticket/193-publication-cc
Sep 20, 2026
Merged

ifuri-validator-agent[bot] merged 1 commit into
mainfrom
ticket/193-publication-cc

Conversation

@tom-sapletta-com

Copy link
Copy Markdown
Contributor

Planfile queue ticket STARTER-612: project/analysis.toon.yaml reported publish (src/koru/ticket_command/publication.py) with CC=16 over the code2llm limit 15.

Behavior-preserving decomposition into module-level helpers (_require_verified_head, _publish_direct_main, _publish_through_validator, _listed_pulls, _create_pull_request, _merge_through_validator, _observed_pull); publish now only dispatches between main-only and validator delivery. The duplicated gh pr list argv collapses into _listed_pulls; command order, argv payloads, diagnostics, environment handling, the raw post-creation listing semantics and both published result payloads are unchanged.

Local verification: re-measured worst-function CC is 12 (publish itself 2); delivery and consumer suites pass (67 passed, 4 skipped) including two new tests pinning the PR-creation path and raw-listing binding; ruff clean; project/governance-check.sh --base origin/main passes.

Decompose publish in src/koru/ticket_command/publication.py (CC 16 -> 2;
worst helper 12, under the code2llm limit 15) into module-level helpers:
_require_verified_head, _publish_direct_main, _publish_through_validator,
_listed_pulls, _create_pull_request, _merge_through_validator and
_observed_pull. The duplicated gh pr list argv collapses into _listed_pulls;
command order, argv payloads, diagnostics, environment handling, the raw
post-creation listing semantics and both published result payloads are
unchanged. tests/test_ticket_command_delivery.py gains coverage for the
previously untested pull-request creation path and pins the raw-listing
binding semantics.

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

Ticket: ticket-193
Correlation ID: local-semcod-koru-pr-377-ticket-193
Model: zai/glm-5.3
Reviewed diff chunks: 2
Advisory LLM verdict: APPROVE
Advisory summary: Reviewed all 2 diff chunk(s). Chunk 1 of a behavior-preserving complexity refactor of publish() into focused helpers. The visible refactor (head verification, direct-main publication, pull listing consolidation, validator-delivery orchestration) keeps diagnostics, command payloads and result structure equivalent to the original inline code. Required checks (onedev/local-verify, standard packs / conformance) pass; protected assessment confirms required_checks_passed=true. Ticket intent, allowedPaths and README are consistent with the changed files. | Chunk 2 of a behavior-preserving refactor of publication.py extracting helpers (_create_pull_request, _merge_through_validator, _observed_pull). Two new tests pin PR-creation argv/body and raw-listing binding. All required checks (onedev/local-verify, standard packs / conformance) pass; no failed checks. No security concerns: no secrets read, no workflow changes, commands are unchanged in structure.
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: 9bbd7ff89a907df1affbea1e1578956940ccdc49...65dae1142da15377db114fc6e10374f5b4119135
Change digest: 6f4136943f1c7d571b523acf2b75ee88c047940220d6b1180a672cb38bf54c61
Score: 56/100 (L), estimated 66 min, split recommended: true
Affected services/components: repository-wide/unclassified

Machine-readable radar JSONL and SVG
{"actual_change":{"additions":341,"base_sha":"9bbd7ff89a907df1affbea1e1578956940ccdc49","binary_files":0,"categories":{"code":1,"configuration":1,"docs":2,"tests":1},"change_digest":"6f4136943f1c7d571b523acf2b75ee88c047940220d6b1180a672cb38bf54c61","comparison":"9bbd7ff89a907df1affbea1e1578956940ccdc49...65dae1142da15377db114fc6e10374f5b4119135","deletions":91,"file_count":5,"files":["project/TICKETS.md","project/ticket-193/README.md","project/ticket-193/intent.json","src/koru/ticket_command/publication.py","tests/test_ticket_command_delivery.py"],"head_sha":"65dae1142da15377db114fc6e10374f5b4119135","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":66,"within_budget":false},"impact":{"components":["origin","project","src/koru","tests"],"files":["origin/main","project/TICKETS.md","project/analysis.toon.yaml","project/governance-check.sh","project/ticket-193/README.md","project/ticket-193/intent.json","src/koru/ticket_command/publication.py","tests/test_ticket_command_delivery.py"],"public_interfaces":[],"runtime_dependencies":0},"schema":"subactor.ticket-radar/v1","score":56,"split":{"parts":[{"estimated_minutes":14,"name":"Implement origin","scope":["origin"]},{"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-193"}
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" viewBox="0 0 128 128" role="img"><title>ticket-193: refactor(ticket-193): extract helpers from publish (STARTER-612)</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 · 66m</text></svg>
Merge will be attempted after this approval when explicitly authorized. ## Decision record (recomputable)
DECISION D-193-5179
TICKET ticket-193
HEAD_SHA 65dae1142da15377db114fc6e10374f5b4119135
CORRELATION_ID local-semcod-koru-pr-377-ticket-193
ACTOR agent:ifuri-validator-agent[bot]
APPLIED_RULE P-CORE-015
INPUT author_login = "tom-sapletta-com"
INPUT observed_checks = ["governance / remote lifecycle=PASS","standard packs / conformance=PASS","governance / enforce=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 semantic_review_assessment = {"schema":"subactor.validator/semantic-review-assessment/v1","subject":{"repository":"semcod/koru","pull_request":377,"head_sha":"65dae1142da15377db114fc6e10374f5b4119135","base_sha":"9bbd7ff89a907df1affbea1e1578956940ccdc49","diff_sha256":"f3f7dbc8f0e6983ec79d8f517a088b47ce2138e75ad8ecfebc6e7862400c6896"},"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-193/README.md","project/ticket-193/intent.json","src/koru/ticket_command/publication.py","tests/test_ticket_command_delivery.py"]},"grounding":"full-diff-not-per-finding-proof","execution_authority":false,"status":"not_required","reason":null,"review_sha256":null,"unresolved":[]}
INPUT superseded_checks = ["smoke"]
INPUT ticket_radar_receipt = {"schema":"subactor.ticket-radar/v1","base_sha":"9bbd7ff89a907df1affbea1e1578956940ccdc49","head_sha":"65dae1142da15377db114fc6e10374f5b4119135","change_digest":"6f4136943f1c7d571b523acf2b75ee88c047940220d6b1180a672cb38bf54c61","score":56,"complexity":"L","estimated_minutes":66,"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 0f61e0e into main Sep 20, 2026
5 checks passed
@ifuri-validator-agent
ifuri-validator-agent Bot deleted the ticket/193-publication-cc branch September 20, 2026 08:43
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