Skip to content

feat(analysis): bind prediction-contradiction refusals to an analysis-run profile - #487

Draft
seonghobae wants to merge 10 commits into
feat/copy-identity-analysis-run-gap-004from
feat/prediction-contradiction-analysis-run-gap-004
Draft

feat(analysis): bind prediction-contradiction refusals to an analysis-run profile#487
seonghobae wants to merge 10 commits into
feat/copy-identity-analysis-run-gap-004from
feat/prediction-contradiction-analysis-run-gap-004

Conversation

@seonghobae

@seonghobae seonghobae commented Sep 3, 2026

Copy link
Copy Markdown
Contributor

Consolidation status

fold_into_landing_vehicleprediction_contradiction_v1 / tepp.prediction_contradiction.v1 is a Validation / Analysis Run profile and changes the same shared integration surface as #416 (Cargo.lock, crates/analysis_engine/Cargo.toml, crates/analysis_engine/src/lib.rs, DOCUMENTATION.md, docs/TRACEABILITY.md, and docs/adr/README.md). It remains a Draft fold child of #416, not an independent protected-main landing authority.

Current exact child head: 8d89bd5f21d7188981bcd990ee5b3b1e2ab826ac. Current surviving #416 head: 03f8de2ed0a0fb842d2022d411814e440df7cfb4. Fresh comparison is diverged: the child has 8 commits not in the surviving vehicle and is 81 surviving-vehicle commits behind, with protected main@a243f18da4a4ca8a8d068c39922537f1f8ed6ad0 as merge base. GitHub therefore reports this child non-mergeable. This is a repair finding, not a reason to Close: unique source/tests/doctoring remain here until a real conflict-resolving ordinary fold verifies inheritance on the surviving head. Because #416 is still actively acquiring causal scientific repairs and exact-head evidence, finish that foundation first rather than repeatedly churning this dependent branch.

Scientific finding and repair

The initial profile incorrectly treated a deliberately mixed four-class fixture as a production-data prerequisite: assignment_count >= 4 and nonzero covered, partial-overlap, adjacent, and contradictory counts were required during execution/artifact validation. Those Allen support classes are observations, not design strata. A real historical census may legitimately contain only covered predictions or only contradictions; absence of a relation class must remain a truthful zero count.

RED a2892b6ad4f632882f63da39eed2d4706ddf9213 adds covered-only and contradiction-only censuses. Causal source repair a64020152300232cb3214a66b45d97225b6d2b5b removes the artificial minimum/four-class gate while preserving nonempty admitted evidence, MAX_EVIDENCE_UNITS, exact class-count sums, refused_promotion_count + covered_count == assignment_count, cutoff-before-duplicate admission, digest validation, and the fixed claim boundary. 6b0c8de64f41bc11f8bf908e0f9cbe854c1e213c removes predecessor tests that encoded the rejected fixture-as-validity rule.

Fresh docs-to-code review found ADR 0079 still contradicted that repaired source: it remained Accepted on a conflicted fold child and still said a mixed four-class census was required. Commit e07b2ff9f78ef456ff911b8643710af20921fe54 repairs the ADR to Proposed implementation lineage under ADR 0002/0016/0022, removes the false class-strata prerequisite, records sparse-census RED/repair lineage, and leaves canonical ADR identity/status normalization to #437. The shared ADR index remains part of the #416 conflict-resolving fold surface rather than independent architecture authority on this child.

The four-class mixed fixture remains useful coverage because it exercises every PredictionContradictionError mapping; it is not a scientific eligibility condition.

Preserved profile evidence

  • Profile/contract prediction_contradiction_v1; schema tepp.prediction_contradiction.v1.
  • Inference status unmatched_prediction_is_not_observed.
  • Binds existing protected-main prediction_contradiction::refuse_promotion semantics rather than duplicating interval truth.
  • Covered pairs may authorize promotion; partial overlap, adjacency, and disjoint predictions stay hypothetical/refused as appropriate.
  • Request cutoff equality is typed through KnowledgeCutoff::instant().
  • AvailableTime <= knowledge_cutoff admission occurs before duplicate-identity checks, so future-unavailable rows cannot perturb historical identity/count results.
  • MAX_EVIDENCE_UNITS bounds execution admission and artifact validation.
  • contradiction_agreement_rate remains library-side; inspect payloads remain metric-free.
  • Not GPU, not MCMC, not topic birth/split/merge, and not implemented-main.

Exact-head merge authority

Only the eventual surviving #416/successor exact head counts after the fold. Child-head checks/reviews do not transfer. Reacquire all required workflows and qualifying independent review on the eventual surviving head. Preserve this Draft while #416 moves; once the foundation vehicle reaches a stable exact head, integrate this child's unique delta through an ordinary conflict-resolving non-force merge/restack and verify every source/test/doctoring/ADR item survived before any successor-based Close. No self-approval, force push, destructive rebase, routine admin bypass, or child-head evidence transfer.

…-run profile

GAP-004: cutoff-safe prediction_contradiction_v1 / tepp.prediction_contradiction.v1.
Binds refuse_promotion already on protected main.
Distinct from support-edge, summarizes-edge, retrospective-edge,
role-contradiction, subevent-containment, inferred-status, episode-membership,
relation-absence, outcome-order, membership-target, citation-edge, and
copy-identity. contradiction_agreement_rate stays library-side.
AvailableTime cutoff runs before duplicate checks; MAX_EVIDENCE_UNITS bounds
execution and artifact validation.
@coderabbitai

coderabbitai Bot commented Sep 3, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

* ci(actions): reduce duplicate TEPP workflow load

Remove the repository-local hourly PR scheduler now owned by the central required workflow. Isolate PR validation by repository and pull request, and avoid duplicate documentation runs for crate-only changes.

Signed-off-by: Seongho Bae <me@seonghobae.me>

* ci(actions): reduce duplicate TEPP workflow load

Remove the repository-local hourly PR scheduler now owned by the central required workflow. Isolate PR validation by repository and pull request, and avoid duplicate documentation runs for crate-only changes.

Signed-off-by: Seongho Bae <me@seonghobae.me>

---------

Signed-off-by: Seongho Bae <me@seonghobae.me>
* fix(actions): centralize hourly development admission

Signed-off-by: Seongho Bae <me@seonghobae.me>

* fix(actions): opt in to central development coordinator

Signed-off-by: Seongho Bae <me@seonghobae.me>

---------

Signed-off-by: Seongho Bae <me@seonghobae.me>
seonghobae and others added 3 commits September 13, 2026 21:04
…-004

Resolve the CHANGELOG.md append conflict by keeping both entries.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Protected main's documentation contract admits only
implemented-main|active-PR|partial|accepted-target|research-only|out-of-scope.
Source/tests/doctoring live on Draft #487, so the honest value is active-PR;
the lineage note about #416/#437 is unchanged.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@seonghobae

Copy link
Copy Markdown
Contributor Author

Restack on protected main (a243f18)

Local evidence on the pushed head (toolchain 1.98.0): cargo test -p analysis_engine all green (incl. 21 + 6 contract tests), cargo clippy -p analysis_engine --all-targets -D warnings clean, cargo fmt --all --check clean, documentation/workspace/docstring contracts PASS, git diff --check clean.

The other 26 CONFLICTING gap-004/gap-003a/gap-006 Drafts most likely share the same two findings (CHANGELOG append conflict, fold-child maturity); they can be restacked the same way, one PR per verification unit.

🤖 Generated with Claude Code

@seonghobae

Copy link
Copy Markdown
Contributor Author

Base-lineage finding (no change pushed)

This PR's declared base is feat/copy-identity-analysis-run-gap-004 (#416), but #416 is not an ancestor of this head (git merge-base --is-ancestor fails). A trial merge of the restacked #416 into this head conflicts on six files including crates/analysis_engine/src/lib.rs, crates/analysis_engine/Cargo.toml, Cargo.lock, DOCUMENTATION.md, docs/adr/README.md, and CHANGELOG.md — a real fold integration, not an append conflict.

So the remaining CONFLICTING state is against #416, not main (this head already contains main since ddde5f34). Two coherent options for the owner, per the "fold into #416" lineage in the ADR note:

  1. fold this artifact into feat(analysis): bind template-copy identity refusals to an analysis-run profile #416 (resolve lib.rs/Cargo.toml module registration once, on feat(analysis): bind template-copy identity refusals to an analysis-run profile #416), then close this Draft as fully superseded with evidence; or
  2. retarget this PR to main, where it is conflict-free and independently reviewable.

I did not pick either because it changes the landing authority that #416/#437 define.

🤖 Generated with Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant