Skip to content

[ticket-105] Integrate the canonical merge conflict data contract - #126

Merged
ifuri-validator-agent[bot] merged 1 commit into
mainfrom
ticket/105-merge-conflict-contract
Sep 10, 2026
Merged

[ticket-105] Integrate the canonical merge conflict data contract#126
ifuri-validator-agent[bot] merged 1 commit into
mainfrom
ticket/105-merge-conflict-contract

Conversation

@tom-sapletta-com

Copy link
Copy Markdown
Contributor

Ticket: ticket-105

Material integration

Integrate the existing merge-conflict data from PR #125 under the shared contract owner. Add an explicit public MergeConflictFact projection without changing IntentRecord, the t2c.intent/v1 wire format or extractor behavior. Compile-time negative checks reject generic records, index-verification claims, merge approval and absent source paths. The normal verify command checks four real-extractor JSON projections, complete block hashes despite truncated excerpts, exact line ranges and non-authoritative provenance.

Historical ticket-104 and its failed governance receipts remain unchanged. This is a new material integration contract, not a claim that PR #125 passed governance.

Validation and publication

  • Managed exact-base/head governance passed with zero errors and warnings.
  • 455 tests passed, 1 optional test skipped, zero failures.
  • Four real wire-contract projections and compile-only type regressions passed.
  • Offline smoke: 227 records and 227 relations; Docker smoke passed.
  • Validator profile 1.3.67 was independently merged in subactor/validator-agent PR #438 and deployed before this PR. It requires governance before approval and in the review-triggered epoch. GitHub also requires governance / enforce in addition to all original checks.

Independent exact-head review and protected merge are required. Verify fresh main CI and governance without local terminal receipts after merge.

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

Ticket: ticket-105
Correlation ID: ticket-105-governance-aligned-canary
Model: openrouter/z-ai/glm-5.3-flash
Reviewed diff chunks: 1
Advisory LLM verdict: APPROVE
Advisory summary: Reviewed all 1 diff chunk(s). Additive integration of a typed MergeConflictFact projection over existing merge_conflict_fact wire data. The type in src/core/types.ts narrows IntentRecord without altering it; the compile-only fixture enforces positive and negative assignability (generic records, gitIndexVerified:true, action:'approve', null path all rejected). The verify script runs the real extractor on merge/diff3 styles with LF/CRLF and asserts wire invariants (schemaVersion, provenance, line ranges, blockSha256 over the full block, truncated rawExcerpt, non-authoritative metadata). It is wired into the verify chain after build, so the dist imports resolve. No extractor behavior, wire format, or authority semantics change. Required checks all report PASS: verify, Java adapter, koru / code-review, governance / enforce. The bare 'governance' SKIPPING entry is not in the protected required list and is an observation, not a failure.
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: 42c16669791cfda69ae6548503b5d4b288ac27e3...c481e1e570a0c7ca9f5f24f117c47d8ab38f8db9
Change digest: 0dbe95a0d166b91459be916957d563373f25524462f46e98867688c35a8924c0
Score: 68/100 (L), estimated 87 min, split recommended: true
Affected services/components: repository-wide/unclassified

Machine-readable radar JSONL and SVG
{"actual_change":{"additions":178,"base_sha":"42c16669791cfda69ae6548503b5d4b288ac27e3","binary_files":0,"categories":{"code":2,"configuration":2,"docs":1,"tests":1},"change_digest":"0dbe95a0d166b91459be916957d563373f25524462f46e98867688c35a8924c0","comparison":"42c16669791cfda69ae6548503b5d4b288ac27e3...c481e1e570a0c7ca9f5f24f117c47d8ab38f8db9","deletions":1,"file_count":6,"files":["package.json","project/ticket-105/README.md","project/ticket-105/intent.json","scripts/verify-merge-conflict-contract.mjs","src/core/types.ts","test/fixtures/contracts/merge-conflict-type.ts"],"head_sha":"c481e1e570a0c7ca9f5f24f117c47d8ab38f8db9","service_count":0,"services":[]},"assessment_mode":"observed-pr","axes":{"coupling":5,"delivery":3,"scope":4,"uncertainty":3,"validation":2},"complexity":"L","confidence":0.9,"diagnostics":["RADAR-ACCEPTANCE-MISSING","RADAR-BUDGET-EXCEEDED"],"estimate":{"budget_minutes":30,"minutes":87,"within_budget":false},"impact":{"components":["exact-base","project","repository-root","scripts","src/core","subactor","t2c.intent","test"],"files":["exact-base/head","package.json","project/ticket-105/README.md","project/ticket-105/intent.json","scripts/verify-merge-conflict-contract.mjs","src/core/types.ts","subactor/validator-agent","t2c.intent/v1","test/fixtures/contracts/merge-conflict-type.ts"],"public_interfaces":["test/fixtures/contracts/merge-conflict-type.ts"],"runtime_dependencies":0},"schema":"subactor.ticket-radar/v1","score":68,"split":{"parts":[{"estimated_minutes":20,"name":"Define contract and acceptance boundary","scope":["test/fixtures/contracts/merge-conflict-type.ts"]},{"estimated_minutes":10,"name":"Implement exact-base","scope":["exact-base"]},{"estimated_minutes":10,"name":"Implement project","scope":["project"]},{"estimated_minutes":10,"name":"Implement repository-root","scope":["repository-root"]},{"estimated_minutes":10,"name":"Implement scripts","scope":["scripts"]},{"estimated_minutes":10,"name":"Implement src/core","scope":["src/core"]},{"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-105"}
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" viewBox="0 0 128 128" role="img"><title>ticket-105: [ticket-105] Integrate the canonical merge conflict data contract</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 105,51 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">L · 87m</text></svg>
Merge will be attempted after this approval when explicitly authorized. ## Decision record (recomputable)
DECISION D-105-7202
TICKET ticket-105
HEAD_SHA c481e1e570a0c7ca9f5f24f117c47d8ab38f8db9
CORRELATION_ID ticket-105-governance-aligned-canary
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","verify=PASS","Java adapter (JDK 17 required)=PASS","koru / code-review=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":126,"head_sha":"c481e1e570a0c7ca9f5f24f117c47d8ab38f8db9","base_sha":"42c16669791cfda69ae6548503b5d4b288ac27e3","diff_sha256":"3194cea9444bc0836d3826a264813a1d9b42828eb836803e4f5f65446100d179"},"policy":{"policy_schema":"subactor.validator/semantic-review-policy/v1","policy_version":1,"policy_sha256":"676cb4516bbfed2a000e40b9b1b6e4a430ecc761ec546aeb53d721a1905cfdd7","required":false,"critical_paths":[],"observed_paths":["package.json","project/ticket-105/README.md","project/ticket-105/intent.json","scripts/verify-merge-conflict-contract.mjs","src/core/types.ts","test/fixtures/contracts/merge-conflict-type.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":"42c16669791cfda69ae6548503b5d4b288ac27e3","head_sha":"c481e1e570a0c7ca9f5f24f117c47d8ab38f8db9","change_digest":"0dbe95a0d166b91459be916957d563373f25524462f46e98867688c35a8924c0","score":68,"complexity":"L","estimated_minutes":87,"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 "openrouter/z-ai/glm-5.3-flash"
ASSERT VERDICT_AUTHORITY != "ADVISORY"

@ifuri-validator-agent
ifuri-validator-agent Bot merged commit 42f810f into main Sep 10, 2026
15 checks passed
@ifuri-validator-agent
ifuri-validator-agent Bot deleted the ticket/105-merge-conflict-contract branch September 10, 2026 18:58
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