Skip to content

feat(analysis): bind retrospective-edge refusals to an analysis-run profile - #483

Draft
seonghobae wants to merge 3 commits into
feat/copy-identity-analysis-run-gap-004from
feat/retrospective-edge-analysis-run-gap-004
Draft

feat(analysis): bind retrospective-edge refusals to an analysis-run profile#483
seonghobae wants to merge 3 commits into
feat/copy-identity-analysis-run-gap-004from
feat/retrospective-edge-analysis-run-gap-004

Conversation

@seonghobae

@seonghobae seonghobae commented Sep 2, 2026

Copy link
Copy Markdown
Contributor

Consolidation status

fold_into_landing_vehicle — this cutoff-safe retrospective_edge_v1 profile targets #416 (feat/copy-identity-analysis-run-gap-004), not protected main. It changes the same Analysis Run/Validation shared Cargo/lib/docs surfaces as #416, so it remains a Draft fold child rather than independent architecture authority.

Current exact source head: 847d96f913bb261803ac0bd751ad7e4f51324cee.

Preserved profile evidence

  • Profile/contract retrospective_edge_v1; schema tepp.retrospective_edge.v1.
  • Inference status retrospective_report_is_not_transition_and_not_translation.
  • Source-specific implementation crates/analysis_engine/src/retrospective_edge_artifact.rs plus cutoff/execution contracts and doctoring.
  • Request cutoff equality is typed through KnowledgeCutoff::instant().
  • MAX_EVIDENCE_UNITS bounds execution admission and artifact validation.
  • Retrospective reports remain distinct from forward reports and are refused as both state transitions and translations without erasing compatible forward relations.
  • Terminal summary.validation_status is validated; the domain claim remains in inference_status.
  • identity_recovery_rate remains library-side and inspect payloads remain metric-free.

Leakage repair

Fresh source review found the same historical-cutoff leak as #482: census_admitted_assignments inserted every assignment identity into duplicate detection before excluding assignments whose available_time was after the knowledge cutoff. A future-unavailable row could therefore make an earlier historical run fail DuplicateEvidence, meaning future evidence existence affected an earlier decision even though the row was inadmissible.

  • RED 32394a327148ad57578f40436233f051cd31eb54 adds future_duplicate_identity_cannot_change_a_historical_cutoff_result with a future ForwardReport reusing an eligible retrospective identity.
  • Causal repair 847d96f913bb261803ac0bd751ad7e4f51324cee applies the availability cutoff before duplicate-identity admission. Duplicate identities among evidence actually available at the cutoff still fail closed.

This ordering is part of TEPP's leakage-safe AvailableTime/knowledge-cutoff contract and must survive the eventual #416 fold. Hosted exact-head evidence must be reacquired on this new source head; predecessor checks are stale.

GitHub still reports this child as non-mergeable against #416 because the shared Cargo/lib/docs surfaces require a real conflict-resolving fold. Do not land this child independently and do not discard its unique source/tests/doctoring or RED/repair lineage.

ADR 0076 remains implementation lineage pending repository-wide normalization under #437; implementation maturity does not create branch-local architecture authority.

Merge authority

Only the eventual surviving #416/successor exact head counts after the fold. Reacquire all live required workflows, resolve current review threads, and satisfy the live organization ruleset's qualifying independent-review requirement on that surviving head. No self-approval, force push, routine admin bypass, or stale evidence transfer.

…rofile

GAP-004: cutoff-safe retrospective_edge_v1 / tepp.retrospective_edge.v1.
Binds refuse_retrospective_as_transition and refuse_retrospective_as_translation
already on protected main. Distinct from role-contradiction, subevent-containment,
inferred-status, episode-membership, relation-absence, outcome-order,
membership-target, and copy-identity. identity_recovery_rate stays library-side.
@coderabbitai

coderabbitai Bot commented Sep 2, 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.

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