Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
d53acf3
feat(analysis): bind template-copy identity refusals to an analysis-r…
seonghobae Aug 31, 2026
99309b1
fix(analysis): bind copy identity availability
seonghobae Aug 31, 2026
8dc7f87
feat(analysis): bind location-membership refusals to an analysis-run …
seonghobae Aug 31, 2026
bafef7e
fix(analysis): enforce location census cutoff bounds
seonghobae Sep 1, 2026
c0fbaab
feat(analysis): bind membership-target refusals to an analysis-run pr…
seonghobae Sep 1, 2026
e6dc87e
feat(analysis): bind episode-membership refusals to an analysis-run p…
seonghobae Sep 1, 2026
3c66702
feat(analysis): bind inferred-status refusals to an analysis-run profile
seonghobae Sep 1, 2026
9332f05
fix(analysis): bound inferred-status artifact claims
seonghobae Sep 1, 2026
9ae0488
docs: make inferred-status verification code-current
seonghobae Sep 1, 2026
765e38c
test(analysis): reject impossible compact membership census
seonghobae Sep 1, 2026
04a2546
fix(analysis): bound serialized membership census
seonghobae Sep 1, 2026
d3fa727
test(analysis): bound membership-target profile and artifact
seonghobae Sep 1, 2026
a976c99
fix(analysis): enforce membership-target execution bound
seonghobae Sep 1, 2026
a4b57c8
test(analysis): reject impossible location census artifact
seonghobae Sep 1, 2026
5b5791b
fix(analysis): bound location-membership artifacts
seonghobae Sep 1, 2026
c4c7851
test(analysis): reject impossible copy census artifact
seonghobae Sep 1, 2026
d5c9811
fix(analysis): bound copy-identity artifacts
seonghobae Sep 1, 2026
b7312ee
test(analysis): reproduce equivalent cutoff offset rejection
seonghobae Sep 2, 2026
a6ba5d7
fix(analysis): compare knowledge cutoffs by instant
seonghobae Sep 2, 2026
e0e4480
feat(analysis): fold inferred-status into landing vehicle
seonghobae Sep 2, 2026
3b6049d
test(analysis): reproduce location cutoff offset equivalence
seonghobae Sep 2, 2026
8bbe557
fix(analysis): compare location cutoff instants
seonghobae Sep 2, 2026
f1124c5
feat(analysis): bind subevent-containment refusals to an analysis-run…
seonghobae Sep 2, 2026
94daa47
test(analysis): reproduce subevent containment contract defects
seonghobae Sep 2, 2026
c8d7d17
fix(analysis): separate containment validation and cutoff semantics
seonghobae Sep 2, 2026
bd28fe5
feat(analysis): fold location-membership into landing vehicle
seonghobae Sep 2, 2026
1fb1efc
feat(analysis): fold episode-membership into landing vehicle
seonghobae Sep 2, 2026
3ae423d
feat(analysis): fold subevent-containment into landing vehicle
seonghobae Sep 2, 2026
b0d6cb8
feat(analysis): fold membership-target into landing vehicle
seonghobae Sep 2, 2026
560512a
test(analysis): reproduce terminal validation-status semantic drift
seonghobae Sep 2, 2026
5f67b97
fix(analysis): separate copy inference from validation status
seonghobae Sep 2, 2026
30d1709
fix(analysis): separate inferred evidence claim from validation status
seonghobae Sep 2, 2026
17ac1a0
fix(analysis): separate location inference from validation status
seonghobae Sep 2, 2026
d5e4206
test(analysis): reproduce episode cutoff and validation drift
seonghobae Sep 2, 2026
53a1597
fix(analysis): normalize episode cutoff and validation status
seonghobae Sep 2, 2026
dae93fa
test(analysis): reproduce target cutoff and validation drift
seonghobae Sep 2, 2026
10b61fc
fix(analysis): normalize target cutoff and validation status
seonghobae Sep 2, 2026
ffee655
test(analysis): expose future identity leakage in base execution
seonghobae Sep 2, 2026
0b7155c
fix(analysis): enforce cutoff before identity admission
seonghobae Sep 2, 2026
aecb7d8
fix(analysis): canonicalize episode cutoff fixture
seonghobae Sep 3, 2026
2baf45c
style(analysis): format episode membership profile
seonghobae Sep 3, 2026
e71b750
fix(analysis): canonicalize membership-target cutoff fixture
seonghobae Sep 3, 2026
a741505
style(analysis): format copy-identity bound contract
seonghobae Sep 3, 2026
f1b794d
style(analysis): format location-membership bound contract
seonghobae Sep 3, 2026
aa730c6
style(analysis): format subevent regression contract
seonghobae Sep 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,12 @@ All notable changes to TEPP are documented here. The format follows Keep a Chang

## [Unreleased]

- **Copy-identity analysis-run profile**: `analysis_engine` binds existing `copy_identity::refuse_copy_as_source_identity` and `refuse_copy_as_transition` to cutoff-safe `copy_identity_v1` (`tepp.copy_identity.v1`) with inference status `template_copy_is_not_source_identity_not_transition`. `identity_recovery_rate` stays library-side. Not a simulation method-effect census, not GPU, not MCMC, and not topic birth/split/merge.
- **Location-membership analysis-run profile**: `analysis_engine` binds existing `location_membership::refuse_location_as_entity_identity` and `refuse_location_as_language_channel` to cutoff-safe `location_membership_v1` (`tepp.location_membership.v1`) with explicit document availability, a shared 100,000-document execution bound, five accurately reported census statistics, and inference status `location_is_not_entity_identity_not_language_channel`. `identity_recovery_rate` stays library-side. Not membership-posterior ICC, not copied-text, not citation-edge, not corpus-background, not GPU, not MCMC, and not topic birth/split/merge.
- **Episode-membership analysis-run profile**: `analysis_engine` binds existing `episode_membership::EventWindow` and `refuse_membership_outside_episode` to cutoff-safe `episode_membership_v1` (`tepp.episode_membership.v1`) with inference status `membership_window_cannot_escape_episode_interval`. `identity_recovery_rate` stays library-side. Not relation-absence, not outcome-order, not membership-target, not location-membership, not membership-posterior ICC, not copied-text, not copy-identity, not citation-edge, not subevent containment, not GPU, not MCMC, and not topic birth/split/merge.
- **Subevent-containment analysis-run profile**: `analysis_engine` binds existing `subevent_containment::EventInterval` and `refuse_escaped_subevent` to cutoff-safe `subevent_containment_v1` (`tepp.subevent_containment.v1`) with inference status `subevent_interval_cannot_escape_parent_interval`. `containment_recovery_rate` and `identity_recovery_rate` stay library-side. Not episode-membership, not inferred-status, not relation-absence, not outcome-order, not membership-target, not location-membership, not membership-posterior ICC, not copied-text, not copy-identity, not citation-edge, not GPU, not MCMC, and not topic birth/split/merge.
- **Membership-target analysis-run profile**: `analysis_engine` binds existing `membership_target::MembershipTargetKind` and `refuse_collapsed_target` to cutoff-safe `membership_target_v1` (`tepp.membership_target.v1`) with inference status `language_episode_template_department_opportunity_pool_are_not_entities`. `identity_recovery_rate` stays library-side. Not location-membership, not membership-posterior ICC, not copied-text, not copy-identity, not GPU, not MCMC, and not topic birth/split/merge.

- `event_core` adds bounded Allen interval-consistency classification, atomic path-consistency closure, contradiction/resource refusals, and an explicit dependency-error fallback without claiming unrestricted global satisfiability.

- `psychometric_core` recovers the Driver, Oud, and Voelkle (2017, Table 2, p. 12 `MANIFESTTRAITVAR`; §7.1, p. 19; p. 16 `MANIFESTTRAITVARstd`; footnote 4; 2017-era ctsem `summary.ctsemFit.R`; JSS PDF re-opened 2026-08-27T14:20Z from https://www.jstatsoft.org/index.php/jss/article/download/v077i05/1104) scalar standardised manifest-trait variance on current main after `0ce16e8` dropped the pre-consolidation code while research notes already named the map (register items 83–84). Table 2 names `MANIFESTTRAITVAR` `Ψ_τ` the additional time-invariant variance-covariance on the measurement level and sets it `NULL` when there is no manifest trait. Equation 5 writes `Γ ~ N(τ, Ψ)` and names that covariance the manifest traits. Section 7.1 names manifest traits stable individual differences in indicator levels, distinct from process-level `TRAITVAR` `φ_ξ`. Page 16 prints standardised matrices with the suffix `std` when appropriate. The printed example on p. 16 is `discreteDRIFTstd`, not `MANIFESTTRAITVARstd`. Footnote 4 standardises using only the relevant variance, not the total. The relevant variance for that named indicator-level correlation is `MANIFESTTRAITVAR`, not process-level `TRAITVAR` and not residual `MANIFESTVAR` `θ`. The 2017-era source forms `MANIFESTTRAITVARstd` only when `MANIFESTTRAITVAR != 0`, as `solve(sqrt(diag(MANIFESTTRAITVAR) + ridging)) %&% MANIFESTTRAITVAR` when `verbose = TRUE`. OpenMx `%&%` is `t(A) %*% B %*% A`. Unlike `TRAITVARstd`, that formation adds `diag(c(ridging), n.manifest)`. The default `ridging = FALSE` adds 0, not `0.0001`; that ridge is a numerical hack and is not this exact map. The scalar correlation is `ψ / ψ = 1` after strictly positive `MANIFESTTRAITVAR`. Form strictly positive `ψ` first, then `1 / √ψ`, then `(1 / √ψ) ψ (1 / √ψ)`. Unstandardised `MANIFESTTRAITVAR` is defined for a zero trait; standardised `MANIFESTTRAITVAR` is not. Zero `MANIFESTTRAITVAR` skips forming `MANIFESTTRAITVARstd` in the 2017-era source and fails closed here. Indicator-level trait variance is an event-time structural quantity, so a non-event clock fails closed. `MANIFESTTRAITVAR` does not require stable `a < 0`. Distinct positive `ψ` recover the same 1. `trait / trait = 1` is `TRAITVARstd` and recovers the same number and remains a distinct named quantity. `θ` is `MANIFESTVAR` and is measurement error, not this correlation. Meredith (1993) remains unread (web search 2026-08-27T14:20Z: Springer/Cambridge Core paywalled; Unpaywall historically `is_oa: false`; Springer `content/pdf` is an HTML stub). Mislevy (1991, *Psychometrika, 56*, 177–196) remains unread on the same terms (DOI `10.1007/bf02294457`). Still not a Kalman filter, not a matrix `expm`, not ESEM estimation, not DSEM, and not ctsem estimation.
Expand Down
6 changes: 6 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

5 changes: 5 additions & 0 deletions DOCUMENTATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,11 @@ TEPP's approved PRD v0.4 and implementation plan are the primary product baselin
| Hourly NIM OpenCode doctoring | [`docs/doctoring/hourly-nim-opencode-development.md`](docs/doctoring/hourly-nim-opencode-development.md) |
| Analysis engine v1 doctoring | [`docs/doctoring/analysis-engine-v1.md`](docs/doctoring/analysis-engine-v1.md) |
| Analysis engine gap-closure doctoring | [`docs/doctoring/analysis-engine-gap-closure.md`](docs/doctoring/analysis-engine-gap-closure.md) |
| Copy-identity analysis-run doctoring | [`docs/doctoring/copy-identity-analysis-run.md`](docs/doctoring/copy-identity-analysis-run.md) |
| Location-membership analysis-run doctoring | [`docs/doctoring/location-membership-analysis-run.md`](docs/doctoring/location-membership-analysis-run.md) |
| Episode-membership analysis-run doctoring | [`docs/doctoring/episode-membership-analysis-run.md`](docs/doctoring/episode-membership-analysis-run.md) |
| Subevent-containment analysis-run doctoring | [`docs/doctoring/subevent-containment-analysis-run.md`](docs/doctoring/subevent-containment-analysis-run.md) |
| Membership-target analysis-run doctoring | [`docs/doctoring/membership-target-analysis-run.md`](docs/doctoring/membership-target-analysis-run.md) |
| Corpus-split leakage-audit wire doctoring | [`docs/research/corpus-split-manifest-wire.md`](docs/research/corpus-split-manifest-wire.md) |
| Unicode canonical-identity doctoring | [`docs/research/unicode-canonical-identity.md`](docs/research/unicode-canonical-identity.md) |
| Change history | [`CHANGELOG.md`](CHANGELOG.md) |
Expand Down
8 changes: 7 additions & 1 deletion crates/analysis_engine/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,22 @@ publish = false

[dependencies]
event_core = { path = "../event_core", version = "0.2.0" }
episode_membership = { path = "../episode_membership", version = "0.2.0" }
inferred_status = { path = "../inferred_status", version = "0.2.0" }
membership_target = { path = "../membership_target", version = "0.2.0" }
subevent_containment = { path = "../subevent_containment", version = "0.2.0" }
serde = { workspace = true }
serde_json = { workspace = true }
sha2 = { workspace = true }
tepp_api = { path = "../tepp_api", version = "0.2.0" }
temporal_core = { path = "../temporal_core", version = "0.2.0" }
topic_measurement = { path = "../topic_measurement", version = "0.2.0" }
copy_identity = { path = "../copy_identity", version = "0.2.0" }
corpus_split = { path = "../corpus_split", version = "0.2.0" }
location_membership = { path = "../location_membership", version = "0.2.0" }
uuid.workspace = true

[dev-dependencies]
corpus_split = { path = "../corpus_split", version = "0.2.0" }
membership_core = { path = "../membership_core", version = "0.2.0" }
relation_graph = { path = "../relation_graph", version = "0.2.0" }

Expand Down
Loading
Loading