Skip to content

feat(analysis): bind template-copy identity refusals to an analysis-run profile - #416

Draft
seonghobae wants to merge 81 commits into
mainfrom
feat/copy-identity-analysis-run-gap-004
Draft

seonghobae wants to merge 81 commits into
mainfrom
feat/copy-identity-analysis-run-gap-004

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 31, 2026 •

Copy link
Copy Markdown
Contributor

Consolidation status

landing_vehicle_candidate — Validation / Analysis Run simple-refusal/census landing vehicle tracked by #435. It is not a new bounded context. Folded profiles preserve domain refusal semantics and focused tests here; per-profile ADR numbers remain implementation lineage pending #437 repository-wide ADR normalization.

Fold lineage already preserved here: #473 inferred_status_v1, #430 location_membership_v1, #461 episode_membership_v1, #478 subevent_containment_v1, and #434 membership_target_v1. Those closed children are lineage into this Draft branch, not protected-main delivery.

Current exact branch head is 03f8de2ed0a0fb842d2022d411814e440df7cfb4 on protected main@a243f18da4a4ca8a8d068c39922537f1f8ed6ad0. History remains ordinary forward history; no rebase or force update is used.

Scientific and cross-profile contract repairs

AnalysisResultSummary.validation_status remains provider-authored validation status, not a domain inference claim. Folded profiles compare parsed KnowledgeCutoff::instant() values rather than timestamp text and keep domain inference_status separate from terminal validation_status == "validated".

The leakage invariant is explicit: evidence with AvailableTime > knowledge_cutoff must not enter the historical scientific census, duplicate/domain admission, counts, artifacts, or terminal scientific result. Duplicate identities among evidence actually available at the cutoff still fail closed. The engine-wide raw input cardinality guard remains an operational admission bound and is not weakened by this rule.

Current repair lineage:

  • copy_identity_v1: RED contract c89123d7c7165ec3acf2bffcd40676ea81f72c92 proves that a future-unavailable row reusing a visible document identity must not change a historical replay. Repair 745345544bd424cf410debab6d78a232638db8be excludes future rows before duplicate/domain admission and derives document_count from admitted identities. Exact coverage artifact from predecessor 93be3e043ddd21625d0b4aa67ba046bce8ef7621 also showed the post-validation to_json byte-limit branch uncovered. Because valid IDs are bounded to 256 UTF-8 bytes, the census is bounded by MAX_EVIDENCE_UNITS, and all other serialized fields are fixed/bounded, 9ee6d60ff4443d7e843e5b20c745a332dca6d097 adds a maximal-valid serialization proof and ced4b09dbbc1310c5c2503c787ae69815b4660e1 removes only that unreachable egress branch. The untrusted-input from_json 256 KiB cap remains fail-closed.
  • inferred_status_v1: 12bbcfbce7e3248f1237c601e99c7cf9426ffa57 removes a bounded, unreachable post-validation output-size branch while preserving the untrusted-input from_json cap; provider-result drift is checked through a directly testable fail-closed refusal guard. Fresh historical-replay RED d669d6f4367f9dfb88289920e22698d6963fe7cd proves a future-unavailable duplicate evidence identity cannot change an earlier run; repair 4591837f4d11617232779e0447a56751a0b5cce0 performs availability admission before duplicate/domain admission.
  • location_membership_v1: 294f091cfb353e90267932da67289a65afc17cda stops discarding the two canonical location-refusal results and verifies the exact expected domain errors. It also proves the maximal valid canonical artifact remains below the input wire cap. Fresh RED f0e9f425843d1ff0628e18f4b963a217aef3ed0b proves that a future-unavailable location row reusing a visible document identity cannot perturb the historical artifact or terminal result. Repair 03f8de2ed0a0fb842d2022d411814e440df7cfb4 excludes future rows before identity/domain admission and derives document_count from the admitted identity set rather than raw input length.
  • episode_membership_v1: RED b4a135ed0149b7020383f071edda6db9f5d3ff60 proves that a future-unavailable duplicate identity must not change a historical run; repair cb5d97cb159958ef259b2f2d97968fdd7830a1e3 moves availability admission before duplicate insertion. Exact predecessor coverage also left the post-validation output-size and unexpected-provider-error paths uncovered. 17b98449b391b178d8a777172536fceca4fc51d0 proves a maximal valid artifact remains below the 256 KiB wire cap, 21eda89ee8ce68a5ef35621676d0ab7cc72ad0b7 removes only that unreachable egress check while preserving from_json admission, and 03f6870c8b5cd201185cd7d53b503e3cea930121 moves the non-exhaustive provider-result fallback into a directly testable fail-closed classifier without weakening future-variant refusal.
  • subevent_containment_v1: RED 21d85de0793c1a386d693aefc42399d5d558d584 and repair 315de53a0f03de9d476ea578e47b43798a3a4deb apply the same cutoff-before-identity rule without weakening visible-duplicate refusal. Exact predecessor coverage likewise exposed an unreachable post-validation output-size branch and an unexercised provider-drift fallback. 7dad37591e8f220c95bc08227dfbb7b591b6a4a7 adds the maximal-valid wire-bound proof, b3a3edcc09f6cd25e2067308e83d71f29c6711f4 removes only the unreachable egress check while retaining the untrusted-input cap, and 722affdd2c02d331bfba3816fbda799059cc1778 makes the provider-drift fallback directly testable and fail-closed.
  • membership_target_v1: RED 66951df7d6c704e03edc7fd9b41a1857788034ca exposes that the profile called itself cutoff-safe while MembershipTargetDocument carried no availability provenance. Repair 5f3bd54f6aaf6bf01d95953f5ff5f74decd019df adds explicit AvailableTime, excludes future-unavailable rows before identity/domain admission, and makes document_count the admitted count rather than raw input length. 93be3e043ddd21625d0b4aa67ba046bce8ef7621 migrates the existing integration contract to explicit availability. Exact predecessor coverage also showed its post-validation output-size branch uncovered; 8ea980da36e73edde8a0512d8ea6710f17e34861 proves a maximal valid artifact stays below the 256 KiB wire cap and 441545fa9ea3d994a10f005329734fb249e98f5a removes only that unreachable egress check while preserving the inbound cap. There is no compatibility constructor that invents an availability timestamp.

The predecessor 93be3e043ddd21625d0b4aa67ba046bce8ef7621 Rust Foundation run exposed both the exact authored coverage deficit and a real cargo fmt --all -- --check RED in the newly added episode/subevent cutoff regressions and membership-target fixture. Ordinary forward formatting commits corrected only those rustfmt deltas before the later coverage-driven repairs; predecessor hosted receipts are not transferred to the current head.

#487 adds another scientific repair that must survive the fold: observed Allen relation classes are data, not run prerequisites. Its RED a2892b6ad4f632882f63da39eed2d4706ddf9213 and repair a64020152300232cb3214a66b45d97225b6d2b5b require sparse covered-only or contradiction-only censuses to report truthful zero class counts. Child head e07b2ff9f78ef456ff911b8643710af20921fe54 also changes ADR 0079 from premature Accepted branch authority to Proposed implementation lineage and removes its stale mixed-four-class eligibility claim. The eventual fold must inherit that corrected ADR semantics.

Profiles preserved on this head

  • copy_identity_v1: copy versus source identity/transition refusal, typed cutoff equality, cutoff-before-identity admission, bounded digest artifact.
  • inferred_status_v1: observed versus inferred remain distinct; inferred is neither observed evidence nor transition; future-unavailable rows are excluded before identity/domain admission.
  • location_membership_v1: location remains distinct from entity identity and language channel; future-unavailable rows are excluded before identity/domain admission; inspect remains recovery-metric-free.
  • episode_membership_v1: membership windows are checked against episode intervals with cutoff-safe admission; identity_recovery_rate stays library-side.
  • subevent_containment_v1: child intervals cannot escape parent intervals; TRACEABILITY excludes both containment_recovery_rate and identity_recovery_rate from inspect.
  • membership_target_v1: language/episode/template/department/opportunity-pool target kinds stay distinct from entity/project and carry explicit availability provenance.

Current fold children

#458 outcome_order_v1 at 08165e3b3c929b4ae77396689549f72723ff8ff5, #460 relation_absence_v1 at dfab4eab5ff733731e565a9348072b8dab2e4912, #482 role_contradiction_v1 at 506dbae236a4484301b704b6c6a05b20faf0fe69, #483 retrospective_edge_v1 at 847d96f913bb261803ac0bd751ad7e4f51324cee, #484 summarizes_edge_v1 at 9a1be78b5342ff65e3cf2aac1e9331c68943f246, #485 support_edge_v1 at f71591864efc2beff336ced7ef35d5a013305c36, and #487 prediction_contradiction_v1 at e07b2ff9f78ef456ff911b8643710af20921fe54 remain conflict-resolving fold children.

#484, #485, and #487 change the same shared Analysis Run integration surface as this vehicle (Cargo.lock, analysis_engine Cargo/lib, DOCUMENTATION.md, TRACEABILITY and ADR index). They remain non-destructively retargeted here; unique source/tests/doctoring must survive a real conflict-resolving fold. Closing a child without verified inheritance is not consolidation.

Coverage and current exact-head evidence

Predecessor coverage receipts never transfer to a new source head. At 93be3e043ddd21625d0b4aa67ba046bce8ef7621, exact coverage.lcov reported 17 authored production lines uncovered. Four post-validation egress size branches identified in that artifact have now been removed only after maximal-valid serialization proofs were added; the inbound 256 KiB from_json caps remain. Episode/subevent unexpected-provider outcomes are now explicit testable fail-closed contract guards rather than unexercised inline fallbacks. Current-head coverage must be regenerated before any lower uncovered-line count is claimed.

The current source head 03f8de2ed0a0fb842d2022d411814e440df7cfb4 must obtain its own Rust Foundation, Documentation Quality, Security Scan, Semgrep, and CodeQL receipts. Those workflows have been freshly admitted; predecessor GREEN/RED states are not transferred. This body does not claim GREEN or merge readiness.

A separate protected-main repository-contract failure remains outside this lane: tests/quality/test_hourly_nim_product_development.py:79 still expects repository-local cron: "47 * * * *", although protected main removed repository-local scheduling under #490. Canonical repair remains Draft #492 (794ba9e6...) and owns the central-admission/dispatch-only contract. This Analysis Run fold must not restore or duplicate the old workflow policy.

The predecessor Security Scan failure was confined to dependency-review: Trivy, OSV and Scorecard were GREEN while authenticated dependency-graph compare returned HTTP 403 and failed closed. That remains a central support/control-plane finding rather than demonstrated source vulnerability here; no leaf bypass or scanner suppression is permitted.

DDD boundary and merge gate

The Analysis Run application/Validation boundary owns request admission, cutoff-safe temporal composition, digest-bound result projection and claim refusals. Source-specific rule crates own domain vocabulary. Folding proceeds through shared admission/artifact invariants plus profile-specific adapters, not a flat model enum or technical god-module.

This vehicle remains Draft. Fold scope, DDD/docs, #492 prerequisite, exact current-head line/branch coverage, security control-plane availability, required checks, qualifying independent review, and conflict-resolving inheritance of active children must converge on one unchanged surviving head before Ready/merge. No self-approval, coverage exclusion, fail-open security change, force push, destructive rebase, routine admin bypass, no-op retrigger, or predecessor-head evidence transfer is allowed.

…un profile

GAP-004 leftover / ADR 0058. Bind existing copy_identity refusals
(refuse_copy_as_source_identity, refuse_copy_as_transition) to cutoff-safe
copy_identity_v1. identity_recovery_rate stays library-side. Distinct from
simulation method-effect census (#415). Not GPU, not MCMC, and not topic
birth/split/merge.
@coderabbitai

coderabbitai Bot commented Aug 31, 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.

@devin-ai-integration devin-ai-integration Bot left a comment •

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note

This report is out of date. Scroll down for Devin Review's latest report on this PR.

Devin Review found 3 potential issues.

Devin Review

Comment thread crates/analysis_engine/src/copy_identity_artifact.rs
Comment thread crates/analysis_engine/src/copy_identity_artifact.rs
Comment thread crates/analysis_engine/src/copy_identity_artifact.rs

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 1 new potential issue.

Devin Review

Comment thread crates/analysis_engine/src/copy_identity_artifact.rs Outdated
…profile

GAP-004 leftover / ADR 0066. Bind existing location_membership refusals
(refuse_location_as_entity_identity, refuse_location_as_language_channel)
to cutoff-safe location_membership_v1. identity_recovery_rate stays
library-side. Distinct from membership-posterior ICC (#398), copied-text
(#427), citation-edge (#426), and corpus-background (#422). Not GPU,
not MCMC, and not topic birth/split/merge.
…ofile

GAP-004 leftover / ADR 0069. Bind existing MembershipTargetKind and
refuse_collapsed_target to cutoff-safe membership_target_v1. Language,
episode, template, department, and opportunity-pool targets are not
entities; identity_recovery_rate stays library-side.
…rofile

GAP-004 leftover / ADR 0072. Bind existing EventWindow and
refuse_membership_outside_episode to cutoff-safe episode_membership_v1
(tepp.episode_membership.v1). Mixed contained/escaped census,
AvailableTime cutoff exclusion, and MAX_EVIDENCE_UNITS fail closed.
identity_recovery_rate stays library-side. Distinct from relation-absence,
outcome-order, membership-target, location-membership, and copy-identity.
GAP-004 leftover / ADR 0073. Bind existing EvidenceStatus,
refuse_inferred_as_observed, and refuse_inferred_as_transition to
cutoff-safe inferred_status_v1. Mixed observed/inferred corpora emit a
digest-bound census. identity_recovery_rate stays library-side.

Fixes #472.
Use the review-reproduced oversized compact artifact as RED evidence. Enforce the same MAX_EVIDENCE_UNITS invariant at artifact deserialization/serialization that execution already enforces, and add regression coverage for both directions.
Document the artifact-count invariant and exact-head landing procedure, and collapse the duplicated documentation map into one canonical index so the new doctoring entry cannot diverge between copies.

Copy link
Copy Markdown
Contributor Author

Rubin activation fold handoff advanced: Draft #506 exact head is now aebf54b2331bc2fb0c2d87554b0645f64a7f4312 on #504. In addition to #507 owner-controlled Validation Evidence availability, #508 found that mutable locator refusal was narrower in code than the checked-in activation contract. Preserve RED 3cb07a51b65c3aba4b59c3ac1602070d23b02946 and repair aebf54b... when conflict-resolving this child: mixed-case/default/latest aliases, PR/pull/issue numeric aliases, bare GitHub paths, Git/SSH locators, and latest-release aliases must not enter immutable generator/analysis/evidence/design authority. Do not copy a broad heuristic into generic identifier validation; this is an activation-specific authority invariant. Do not close #506/#508 until exact inheritance is verified on the surviving head and fresh gates are reacquired.

Copy link
Copy Markdown
Contributor Author

Rubin projection child #506 has a new valid delta that must survive the eventual conflict-resolving fold. Current child exact head is e733e104c646172a08f7e12b9a4f74c88443fbc4 on #504 3d153b382..., ordinary forward ahead 28 / behind 0. New #509 lineage: RED 2dff30c9e544b9595a3ff5b73bf37b110f33da8d rejects mutable source_snapshot_id aliases; repair 5acbb658f5fcf536b4a07478565244c7e6c78891 includes source snapshot in activation-specific immutable-authority validation and rejects mutable expected snapshot aliases; a2d788571ae3c744b08f249bb1d6b1c9286312fc rustfmt-currentizes the regression; 3a16fbc... → e733e104... currentize research/ADR. Fold must preserve this together with prior #506 negative projection, evidence-availability authority, and mutable-locator contracts. Do not simple-close #506/#509 until the surviving vehicle has demonstrably inherited source/test/ADR/research deltas and reacquired its own default-branch gates.

Copy link
Copy Markdown
Contributor Author

Rubin projection fold handoff advanced again. #506 exact head is now d6d8fd23507397874278333d08dc9b5274ea29b1 (ordinary child of #504, ahead 32 / behind 0). New #510 lineage 616309e5665f964995ae45c5059b336d466d571e RED → da6a2f9ddbec242826287ac94e0147744a1f30ec causal fix → b328752c… research → d6d8fd23… ADR makes RubinProjectionActivationReceiptV1 itself require the canonical Rubin analysis ID and exact model-contract version before registry matching. The surviving Analysis Run vehicle must inherit that source/test/ADR/research delta together with #507–#509; a future pairing registry may approve generator/evidence/design combinations but may not redefine receipt analysis semantics. Do not simple-close #506/#510 before verified inheritance and reacquired default-branch gates.

Copy link
Copy Markdown
Contributor Author

#506/#511 handoff — surviving Analysis Run fold에서 다음 delta를 실제 conflict-resolving inheritance 해야 합니다.

  • RED e2e4f4597a1404b272f88d4bcd689816890864f9
  • source repair 32aa83da55c75ab22ebbca8a903790be119cc20e
  • research contract c4572953382e50d9c12735a500227ed4c9900a05
  • ADR 0034 currentization 85ab06bb948149fd4a93d96f91b75f25f1cbaec4

핵심 invariant는 receipt/runtime snapshot equality만으로 positive Rubin authority를 만들지 않는 것입니다. Owner-controlled approved Validation Evidence pairing이 자체 immutable source_snapshot_id를 소유하고, locator-safe validation을 통과하며, receipt/run snapshot과 정확히 일치해야 합니다. 같은 evidence ID/digest를 다른 immutable population에 재사용하거나 owner snapshot을 main 같은 mutable alias로 두면 fail closed입니다.

#506은 현재 #504 exact parent 위 ordinary forward stack이며 production approval registry는 비어 있습니다. #416 exact head에서 이 source/test/ADR/research delta가 실제 승계되고 새 default-branch gates를 취득하기 전에는 #506/#511을 simple-close한 것으로 보지 마십시오.

Copy link
Copy Markdown
Contributor Author

Surviving Analysis Run fold handoff from Draft #506 / issue #512: inherit the full source-snapshot content-authority lineage, not only the logical snapshot ID. Required delta is RED 940f271c2a252881af19d55641f134fcc7c0900b → causal source repair 62306d5b9207e348e0fd11168282923a39d1b973 → integration propagation 3b6419adb4b768dd4b3956d5a2cc5c82d26aef3, cb7dd6edb624f1f91376d1ac399314706610079e, 8c1e078e721c3a9063153249221033afb5e9f82d → research/ADR 1573d5c25eb6875d77b38ec57ca40d4bd34c87d8, cc4442bb779de9279b8eb264627a8c36e1e905f7. Positive Rubin authority must require canonical source_snapshot_sha256 equality across runtime, receipt, and owner-approved Validation Evidence pairing. Do not close #506/#512 until this delta is demonstrably present in the surviving vehicle and default-branch gates are reacquired.

Copy link
Copy Markdown
Contributor Author

#506 has a new valid delta that must survive ordinary conflict-resolving fold rather than simple-close: issue #515, concrete Rubin draw-payload authority. Inherit RED db8e7b484007be535260a7b16458a8718b0f0eb3, draw-bound source boundary ee93a01f4e9718bb6d7e8088288de250718ff0d6, public-boundary reroute 5c9e40e638b3c7279261fa7bf047068e41b85775, propagated integration contracts through 07d2cab97e69aa2e2d7f630a1cbaf983b4534ff3, schema-coherent Draft-v1 boundary 8e940e574817b35f986f64b41ad393538016f245, and research/ADR currentization through exact head 15fdd2c4d8808f29246bc9d0acd074190ce2bb32. The surviving Analysis Run vehicle must preserve: independent runtime snapshot ID/SHA-256, actual observation/draw counts, independent runtime complete-data-draw SHA-256, receipt/runtime draw-digest equality before class-level registry approval, empty production approval until independent scientific promotion, and the explicit non-claim that a matching digest proves approved-generator execution. Reacquire all default-branch checks/review on the surviving exact head; predecessor receipts do not transfer.

Copy link
Copy Markdown
Contributor Author

Additional #506 delta for the surviving Analysis Run fold: #516 makes analysis_engine the canonical complete-data draw-payload digest owner. Inherit RED fcd1c0c97594dac319dc4da12a5c09625abf4d78, source/artifact repair d4404370d012d214891cf24b4a79688ecd58b845, research cd71c98f85eec396a4bf144da9148e11eb800186, and ADR/current head 40fb4f6764afc0a32eb246bb27348c4c23ed7532. Preserve the exact hash contract: after cutoff/snapshot admission and draw-major transposition, domain tepp.rubin_loading.complete_data_draws.v1\0, admitted observation/draw counts as big-endian u64, finite f64 bits big-endian, read-only artifact digest. Future-unavailable rows must not change historical payload identity; an admitted draw-bit change must. This complements #515's receipt/runtime equality gate. Do not infer generator execution from the digest, and reacquire all default-branch checks/review on the surviving exact head.

Copy link
Copy Markdown
Contributor Author

Surviving Analysis Run fold handoff from #506/#519: preserve RED 75615fc5a3f6c2880bc8c572459ca3201088e5a6 and causal fix 75e72b19779d3b34ffdb2a5eedc4c3128c983937. The valid delta is a public-wire invariant: duplicate top-level JSON member names in RubinProjectionActivationReceiptV1 must fail closed before serde_json::Value can apply last-write-wins semantics; ordinary non-duplicate formatting/order remains admissible. Do not simple-close #506/#519 until this source+integration contract is demonstrably inherited and #416 reacquires its own exact-head default-branch gates.

Copy link
Copy Markdown
Contributor Author

Successor-fold handoff for #522: the surviving Analysis Run vehicle must inherit the full forward lineage, not only the earlier draw-matrix commitment. Required deltas are RED e9e6a13427eb7f5ea66e8a2e719b8323ec71ae9d, causal source repair 7dc449f0d2ed8d1a070e5d9d9793e954f41660b1, research contract 82f49c615bb4dc0a88ed9daaed181bca42acd39a, ADR 0034 647f4896b132e8ec715c9778090a7d67ffa9f038, and owned rustdoc 01c647665294d7290a4d4bf2c6862492397d72c5.

The scientific invariant is that every cutoff-admitted numeric input consumed by recover_loading_point_estimate_mean / combine_draw_level_ols_loadings is committed: admitted dimensions, factor-score design vector, then complete-data indicator draws. The domain is tepp.rubin_loading.analysis_payload.v1\0. Future-unavailable rows remain excluded. Do not fold a draw-only digest or infer generator/mapping attestation from content equality. #522 remains open until the unreleased Draft wire/accessor name is corrected and the successor reacquires its own exact-head gates.

Copy link
Copy Markdown
Contributor Author

#522 successor-handoff update: the semantic wire/API rename is now part of the required inherited delta. In addition to RED e9e6a134... and causal payload repair 7dc449f0..., #416 must inherit artifact/source 9101f6621a9ff26cb9a3ff21a527769040696d8d, public receipt/runtime f2596dbaffe0f3ffbae191c36ee7ac9b023b7875, regression propagation through f83de2b33e21df662708f333a90443671bed1da0, and research/ADR current through f4a7eb5c018530e57a197ab2da56532a73e41456.

The eventual v1 field/accessor is estimator_payload_sha256; do not reintroduce the old draw-only public name during conflict resolution. Exact-head gates must be reacquired after the fold.

Copy link
Copy Markdown
Contributor Author

#592 fold handoff for longitudinal_cwc_v1: PR #372 found that its adapter dropped the opaque evidence identity, allowing a cutoff-visible source observation to be replayed as extra CWC weight. Current child exact head is 63ac964e9f9c9e94f55a7b881e1ead1ec04a2495.

The fold must preserve this ordinary-forward lineage and its corrected cutoff order:

  • RED e66a90f3c6be7c04ecc9a310baf955b16dbd6f76: explicit evidence_id, visible duplicate refusal, distinct-identity/equal-value control;
  • production 138be1fb8ad3ae47a18d7e05645d2ca2830cd341 + fixture migrations 66cffe0... / 418222f...;
  • supplemental RED bb8cb21ac40fc9f1a2d86612e8cbaaac5ccecb67: future-unavailable duplicate identity must not change historical replay;
  • causal repair 6b07a4eafa3c009e36299aeca6e87a5b45201d56: availability admission precedes duplicate identity admission, matching this feat(analysis): bind template-copy identity refusals to an analysis-run profile #416 vehicle's existing historical-census invariant;
  • doctoring 63ac964e9f9c9e94f55a7b881e1ead1ec04a2495.

Required surviving behavior: raw cardinality remains bounded; cross-snapshot rows fail closed; AvailableTime > knowledge_cutoff rows are excluded before identity/domain census; duplicate identity among cutoff-visible evidence fails closed; numerically equal rows with distinct IDs remain distinct evidence; CWC arithmetic stays owned by psychometric_core. #501 recovery acceptance remains separate. Do not close #372/#592 until these source/test/doctoring deltas are verified on this surviving head or a verified successor.

Copy link
Copy Markdown
Contributor Author

Additional #593 fold handoff from #372 current head ac894bdc49ad622ecbe0c105cfb775299c2e6941: after aligning #592 identity admission with this vehicle's cutoff-before-domain rule, the historical-invariance regression exposed that LongitudinalCwcArtifact.excluded_after_cutoff_count itself leaked future corpus existence into digest-bound output.

Preserve this ordinary-forward delta in the surviving fold:

This matches #416's existing invariant that AvailableTime > knowledge_cutoff evidence must not enter historical counts/artifacts/terminal results. #501 recovery/attempt denominators remain acceptance-harness evidence, not future-only production artifact metadata. Keep #372/#592/#593 open until this delta is verified on #416 or a successor.

Copy link
Copy Markdown
Contributor Author

#372 has now been non-destructively retargeted onto this surviving Analysis Run vehicle. Current child head is c9a99ff5116c1b974535498d98d6731066b371ac; GitHub reports the child as Draft / non-mergeable, which is expected because the child and this vehicle both changed shared Cargo.lock, crates/analysis_engine/Cargo.toml, crates/analysis_engine/src/lib.rs, CHANGELOG.md, docs/TRACEABILITY.md, and docs/adr/README.md surfaces. Do not resolve by replacing this vehicle's unrelated profile history or #435-owned shared documentation.

Fresh child review also found #595: longitudinal_cwc_v1 checked per-row snapshot_id before AvailableTime, so a future-only row from another snapshot could change a historical replay to SnapshotMismatch. Public RED 0ea8f6573d8519762e3ef9038ec4c4892c8e3a8b now distinguishes visible foreign-snapshot refusal from future-unavailable invariance; causal repair 07360220cf8e7018107b271dc8e6e2c2f49b0c58 admits availability before snapshot/identity checks while preserving the raw MAX_EVIDENCE_UNITS ceiling. ADR/doctoring are current at b4edede35ef26e7445fce94883de918b46c962f2 / c9a99ff5116c1b974535498d98d6731066b371ac.

Conflict-resolution acceptance for the eventual #372 fold must preserve #592/#593/#595, use this vehicle's current shared-profile deltas, leave canonical TRACEABILITY/ADR-index/product-gap ownership to #435, and keep #501 open as the separate true-parameter recovery acceptance gap. No predecessor check/review receipt transfers after the surviving head changes.

seonghobae added a commit that referenced this pull request Sep 19, 2026
Carry #416 Cargo and shared documentation state forward while retaining the #592/#593/#595/#596 child deltas. Add only the production psychometric_core dependency required by the CWC adapter; leave lib.rs as the remaining explicit shared-source reconciliation.
seonghobae added a commit that referenced this pull request Sep 19, 2026
Preserve #592/#593/#595/#596 deltas on #416 without rewriting history. Reconcile analysis_engine shared source, retain #416 profile modules and dependencies, keep shared documentation at the surviving owner state, and leave the #596 finite-mean consumer contract intentionally RED pending a released numerical owner.
seonghobae added a commit that referenced this pull request Sep 19, 2026
Repair the first reconciliation tree without rewriting history. Start from exact #416, then overlay only the surviving longitudinal CWC production adapter, contracts, ADR/doctoring, merged manifest, and merged analysis_engine root. This restores every #416-owned file while retaining #592/#593/#595/#596 deltas.
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