Skip to content
Merged
Show file tree
Hide file tree
Changes from 36 commits
Commits
Show all changes
41 commits
Select commit Hold shift + click to select a range
a3c57a9
feat(api): publish terminal analysis result contract
seonghobae Aug 20, 2026
003dae3
fix(api): preserve existing contract documentation
seonghobae Aug 20, 2026
0cb693f
fix(api): restore strict terminal result implementation
seonghobae Aug 20, 2026
cffbf4e
test(api): cover terminal analysis result contract
seonghobae Aug 20, 2026
24f00c0
feat(api): add analysis run status contract
seonghobae Aug 20, 2026
30918e5
fix(api): harden analysis result serialization bindings
seonghobae Aug 20, 2026
020c353
fix(api): bound accepted analysis run payloads
seonghobae Aug 20, 2026
f1c94f7
fix: validate terminal result bindings
seonghobae Aug 20, 2026
fb783f5
test(api): cover empty https origin
seonghobae Aug 20, 2026
0cb9ff6
test(api): close unreachable HTTP branch
seonghobae Aug 20, 2026
1fa8e9e
Merge main into completed analysis result contract
seonghobae Aug 21, 2026
63a419e
fix(docs): align naruon maturity with protected main
seonghobae Aug 21, 2026
7625dc6
fix(api): harden accepted receipts and provider headers
seonghobae Aug 21, 2026
6852e9d
fix: harden analysis result contract boundaries
seonghobae Aug 21, 2026
95add88
test: close coverage and match guarded arms
seonghobae Aug 21, 2026
e3770a6
test: cover provider credential header branches
seonghobae Aug 21, 2026
910a54e
fix(api): reject delimiter-free credential headers
seonghobae Aug 21, 2026
efd5386
test: configure repository root for pytest
seonghobae Aug 21, 2026
48643e5
fix(coverage): preserve multiline match guards
seonghobae Aug 21, 2026
8e96984
Merge remote-tracking branch 'origin/feat/completed-analysis-result-c…
seonghobae Aug 21, 2026
a9a49d3
fix(coverage): respect match arm boundaries
seonghobae Aug 21, 2026
ef45763
fix(coverage): reject block-boundary false guards
seonghobae Aug 21, 2026
3b07002
fix coverage guard after destructuring match arm
seonghobae Aug 21, 2026
9238c3a
cover nested and long match guards
seonghobae Aug 21, 2026
e06e504
cover split nested match guard
seonghobae Aug 21, 2026
12ada13
retain guards after sibling match arms
seonghobae Aug 21, 2026
cce90a1
feat(engine): execute cutoff-safe analysis runs (#178)
seonghobae Aug 22, 2026
7402745
test(engine): include evidence available exactly at cutoff
seonghobae Aug 23, 2026
3400874
fix(quality): keep sibling-block guards and lone closes in coverage gate
Aug 24, 2026
810e3a9
Merge current main into analysis result contract
seonghobae Aug 24, 2026
88f10c4
docs: assign analysis engine ADR a unique number
seonghobae Aug 24, 2026
e22dcb1
fix: retain compact guarded match coverage
seonghobae Aug 24, 2026
41a7218
remove dead coverage guard branch
seonghobae Aug 24, 2026
d245a9d
fix(coverage): stop nested match guard scans at let bindings
seonghobae Aug 24, 2026
7521a15
Merge remote-tracking branch 'origin/main' into fix/pr157
seonghobae Aug 24, 2026
f8de47e
Merge remote-tracking branch 'origin/main' into fix/pr157b
seonghobae Aug 24, 2026
e65023f
merge: reconcile analysis-run result contract with protected main
seonghobae Aug 25, 2026
5d1492c
Merge remote-tracking branch 'origin/main' into rebase/157
seonghobae Aug 25, 2026
959108d
Merge remote-tracking branch 'origin/main' into rebase/157
seonghobae Aug 25, 2026
f31d822
Merge remote-tracking branch 'origin/main' into rebase/157
seonghobae Aug 25, 2026
f204ec9
Merge remote-tracking branch 'origin/main' into rebase/157
seonghobae Aug 25, 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
8 changes: 7 additions & 1 deletion ARCHITECTURE.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,11 @@ flowchart LR

Every boundary must be independently usable and expose versioned contracts for integration with organization repositories, `naruon`, and `contextual-orchestrator`.

The `analysis_engine` vertical slice is intentionally separate from `tepp_api`:
the API owns wire contracts while the engine owns deterministic execution. It
does not replace the future topic or psychometric estimators and does not read
another service's application tables.

## Implemented foundation topology

Task 1 materializes the first storage-independent workspace boundaries. The
Expand All @@ -61,7 +66,8 @@ boundaries above remain the target modular MSA architecture.
| `corpus_split` | cutoff-safe, relation-aware partitioning |
| `tepp_simulation` | known-truth temporal/event data generation |
| `validation_core` | RMSE, bias, coverage, graph, and Monte Carlo metrics |
| `tepp_api` | versioned DTO, schema, and export contracts |
| `tepp_api` | versioned DTO, schema, terminal-result, and export contracts |
| `analysis_engine` | bounded cutoff-safe temporal evidence readiness execution and digest-bound terminal artifacts |
| `location_membership` | location is not entity identity and not a language channel |
Comment on lines +69 to +72

@devin-ai-integration devin-ai-integration Bot Aug 25, 2026 •

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟡 Duplicate, conflicting crate rows in topology table

The added rows for validation_core, tepp_api, and location_membership duplicate rows that already exist in the same table further down. validation_core and tepp_api now appear twice with different descriptions, so the table states two conflicting responsibilities for each.

Open in Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

| `prompt_source` | prompt boilerplate is not unique latent content and not stopword deletion |
| `corpus_background` | corpus-background wording is not unique latent content and not stopword deletion |
Expand Down
11 changes: 11 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,17 @@ All notable changes to TEPP are documented here. The format follows Keep a Chang

### Added

- Stacked `analysis_engine` vertical slice (ADR 0021): bounded Rust execution
from an accepted analysis run to a cutoff-safe, multiple-membership-aware,
SHA-256-digest-bound terminal artifact or redacted no-eligible-evidence
result. This remains active-PR evidence and does not claim estimator
authority.
- `tepp_api` request-bound terminal analysis results and typed analysis-run
status/read responses: accepted/running states cannot carry measurement
evidence, and terminal results bind exact request and receipt identities.
- Coverage classification now preserves multiline Rust `match` guard expression
lines while ignoring structural closing parentheses and match-arm labels.

- `corpus_split` Unicode canonical identity: NFC/NFD-equivalent bodies produce `CanonicalEquivalent` leakage links and cannot occupy independent partitions; empty bodies and duplicate document identities fail closed (ADR 0004/0008/0013; PR #59).
- `semantic_core` binds exact `evidence_core` source spans as semantic units. Language profiles are `unresolved` or a primary ISO 639 subtag with an IANA-registered ISO 3166-1 alpha-2 or UN M.49 region (RFC 5646; IANA File-Date 2026-08-08); private-use and unknown regions fail closed. Unresolved metadata keeps the caller-supplied Korean `측정` span and does not retokenize. `SemanticIdentity::from_language_tag` fails closed. Korean and English report sentences remain distinct units. Not concept alignment, not invariance, not a topic estimator (ADR 0020; issue #168). The APA register cites RFC 5646 once, in the Unicode/language-tags section; the slice-specific note remains `docs/research/span-grounded-semantic-units.md`.
- `corpus_background` identity gate: corpus-level background wording is not unique latent content or a state transition; recovery tests distinguish background evidence from unique content.
Expand Down
110 changes: 61 additions & 49 deletions Cargo.lock

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

2 changes: 2 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ members = [
"crates/interpretation_gateway",
"crates/model_selection",
"crates/checkpoint_authority",
"crates/analysis_engine",
]
default-members = [
"crates/evidence_core",
Expand Down Expand Up @@ -99,6 +100,7 @@ default-members = [
"crates/interpretation_gateway",
"crates/model_selection",
"crates/checkpoint_authority",
"crates/analysis_engine",
]

[workspace.package]
Expand Down
2 changes: 2 additions & 0 deletions DOCUMENTATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ TEPP's approved PRD v0.4 and implementation plan are the primary product baselin
| Provider-payload minimization doctoring | [`docs/research/provider-payload-minimization.md`](docs/research/provider-payload-minimization.md) |
| Adaptive orchestration router doctoring | [`docs/research/adaptive-orchestration-router.md`](docs/research/adaptive-orchestration-router.md) |
| 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) |
| 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
Loading
Loading