Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
61 commits
Select commit Hold shift + click to select a range
d337259
docs: add canonical product requirements
seonghobae Aug 9, 2026
a5f9f8f
docs: add canonical technical requirements
seonghobae Aug 9, 2026
c982f01
docs: add canonical architecture description
seonghobae Aug 9, 2026
f37fb22
docs: add architecture decision record index
seonghobae Aug 9, 2026
c272670
docs(adr): define measurement ownership boundary
seonghobae Aug 9, 2026
73e84be
docs(adr): define Rust-first numerical ownership
seonghobae Aug 9, 2026
08aa056
docs(adr): define content-addressed measurement contracts
seonghobae Aug 9, 2026
186f448
docs(adr): define governed rubric item-bank lifecycle
seonghobae Aug 9, 2026
0779678
docs(adr): define automated scoring rater model
seonghobae Aug 9, 2026
7075c84
docs(adr): define relation-safe model selection
seonghobae Aug 9, 2026
046f816
docs(adr): define multilevel and temporal architecture
seonghobae Aug 9, 2026
cc383b4
docs(adr): define true-parameter recovery evidence
seonghobae Aug 9, 2026
2332f2f
docs(adr): define adaptive rotation selection
seonghobae Aug 9, 2026
7ba3d34
docs(adr): define LLM orchestration credential boundary
seonghobae Aug 9, 2026
599be48
docs(uml): add component architecture diagram
seonghobae Aug 9, 2026
07bffed
docs(uml): add governed scoring sequence
seonghobae Aug 9, 2026
3d450a3
docs(uml): add model selection sequence
seonghobae Aug 9, 2026
f94bce4
docs(erd): add logical domain model
seonghobae Aug 9, 2026
667b331
docs(uml): add deployment composition diagram
seonghobae Aug 9, 2026
3b771bf
docs(uml): add item lifecycle state diagram
seonghobae Aug 9, 2026
8e52e0e
docs(uml): add diagram index
seonghobae Aug 9, 2026
d1b7306
docs(traceability): map requirements to implementation
seonghobae Aug 9, 2026
c245f7a
docs(traceability): record research to architecture basis
seonghobae Aug 9, 2026
8229066
docs(uml): add canonical item-bank state view
seonghobae Aug 9, 2026
a1f497a
docs: deprecate stale PRD TRD summary
seonghobae Aug 9, 2026
8f4e9e7
test(docs): pin canonical architecture documentation
seonghobae Aug 9, 2026
24eeec3
docs(changelog): record canonical architecture baseline
seonghobae Aug 9, 2026
66f915c
docs: add canonical documentation authority map
seonghobae Aug 9, 2026
93671dd
docs(security): add reusable-core threat model
seonghobae Aug 9, 2026
ee1aeb3
docs: add architecture documentation completeness matrix
seonghobae Aug 9, 2026
22fc5c1
docs(adr): define canonical PyO3 public export registry
seonghobae Aug 9, 2026
219a203
docs(adr): define purpose-limited sensitive-data handling
seonghobae Aug 9, 2026
fe5371e
docs(adr): index PyO3 and sensitive-data decisions
seonghobae Aug 9, 2026
82e4d25
docs(traceability): add security privacy binding and scientific inter…
seonghobae Aug 9, 2026
bb9deb1
test(docs): enforce security completeness and interpretation invariants
seonghobae Aug 9, 2026
c5a9139
docs(changelog): include security and documentation governance baseline
seonghobae Aug 9, 2026
847ab1a
docs(adr): add canonical decision-record template
seonghobae Aug 9, 2026
ca49a77
docs(adr): index canonical ADR template
seonghobae Aug 9, 2026
2f82315
docs(architecture): add standards watch registry
seonghobae Aug 9, 2026
3e231bf
docs(validation): add canonical V&V plan
seonghobae Aug 9, 2026
8e69581
docs(adr): record continuous execution governance
seonghobae Aug 9, 2026
fe402bc
docs(adr): index continuous execution governance
seonghobae Aug 9, 2026
941456e
fix(docs): conform ADR 0013 status contract
seonghobae Aug 9, 2026
1e1a61f
test(docs): pin standards and V&V architecture spine
seonghobae Aug 9, 2026
88c6127
docs(architecture): index standards and V&V authorities
seonghobae Aug 9, 2026
c49eea2
test(docs): require standards and V&V index links
seonghobae Aug 9, 2026
9323166
docs(adr): align architecture reference edition
seonghobae Aug 9, 2026
61842ee
docs(architecture): track standards and V&V completeness
seonghobae Aug 9, 2026
a5259f5
test(docs): reject nested PlantUML lifecycle alias
seonghobae Aug 9, 2026
df4bb5d
fix(docs): avoid nested PlantUML lifecycle document
seonghobae Aug 9, 2026
8ea339d
test(docs): require execution-governance traceability
seonghobae Aug 9, 2026
ec4f0a3
docs: consolidate orchestration research doctoring
seonghobae Aug 9, 2026
08353f4
docs: make active standards revisions explicit
seonghobae Aug 9, 2026
7923ae7
docs: align rotation maturity with protected main
seonghobae Aug 9, 2026
b893560
docs: accept protected-main adaptive rotation policy
seonghobae Aug 9, 2026
17ae968
docs: align ADR index with implemented rotation
seonghobae Aug 9, 2026
232a2c6
docs: align traceability with protected-main rotation
seonghobae Aug 9, 2026
92d3fe5
test(docs): pin implemented rotation maturity
seonghobae Aug 9, 2026
02569a3
docs(adr): exclude template from live decision index
seonghobae Aug 9, 2026
b24aefd
fix(docs): complete canonical architecture contract
seonghobae Aug 11, 2026
a672a6c
Merge remote-tracking branch 'origin/main' into codex/pr-604-canonica…
seonghobae Aug 11, 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
401 changes: 291 additions & 110 deletions ARCHITECTURE.md

Large diffs are not rendered by default.

24 changes: 24 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -298,6 +298,19 @@

- Replaced the NumPy reference/fallback EAP expression `(posterior * nodes[None, :]).sum(axis=1)` with the algebraically equivalent matrix-vector product `posterior @ nodes`. This avoids constructing the explicit posterior-shaped broadcast product; NumPy may use optimized BLAS for matrix multiplication when available, while realized runtime remains dependent on array shape, layout, hardware, and the linked numerical library.

#### Canonical product and architecture documentation baseline

- Replaced the stale MVP-only PRD/TRD authority with canonical `docs/PRD.md` and `docs/TRD.md` requirements covering the current measurement, scoring, rubric/item-generation, model-selection, scientific-evidence, interoperability, security, lifecycle, and release boundaries.
- Added root `ARCHITECTURE.md`, a status-bearing ADR corpus, reviewable PlantUML component/sequence/state/deployment views, a logical reusable-domain ERD, and requirements/research traceability matrices.
- Added a canonical documentation authority index, explicit implementation-maturity/completeness matrix, and machine-checkable documentation contract so missing or stale PRD/TRD/ADR/UML/ERD/traceability/security artifacts remain visible release-maintenance debt rather than silently drifting.
- Added a reusable-core threat model covering provider/JSON replay, native/PyO3 input boundaries, resource and non-finite numerical failures, GPU evidence spoofing, supply-chain/self-modifying CI, credential separation, benchmark contamination, privacy/purpose limitation, and scientific-interpretation abuse while leaving hosted HTTP/session/tenant/database threats downstream.
- Added durable ADRs for converging future Rust-backed features on one canonical PyO3/public-export registry and for preserving legitimate sensitive-data linkage through purpose limitation and minimization rather than blanket masking that changes the measurement design.
- Extended requirements traceability with the conversation-wide invariants that human/LLM judges are fallible raters, correlation is not parameter recovery/absolute agreement, latent-space interaction follows substantive dimension/testlet/facet diagnosis, reference-free is not truth-free, and psychometric discrimination is not business or safety criticality.
- Explicitly deprecated the original narrow `docs/prd_trd_summary.md` as an authoritative requirements source while retaining its historical MLS2PLM MVP context.
- Defined the `fast-mlsirm-cjson-v1` fingerprint preimage, SHA-256 binding, null/ordering/Unicode/number rules, and cross-language normative vector instead of leaving canonical serialization as an interoperability assumption.
- Added the persistence-neutral `docs/uml/domain-public-contract.puml` view, indexed every UML source including the compatibility alias, modeled versioned calibration-design inputs as a many-to-many association, and made corrected quarantined items new immutable revisions.
- Added complete APA 7 research records and scope summaries for LLM-RUBRIC, AutoNuggetizer/TREC RAG, EvalGen, the 2025 AutoNuggetizer follow-up and 2026 reflective rubric research, plus NIST AI RMF governance inputs with explicit non-certification language.

#### Release cut 0.7.0

- Project version is bumped to 0.7.0 in `pyproject.toml`,
Expand All @@ -317,6 +330,12 @@

### Fixed

#### Subgroup validation evidence fails closed

- Automated-scoring subgroup SMD gates reject requested subgroups with fewer
than two paired cases or zero human variance instead of silently skipping
them and reporting a vacuous pass.

#### Serving bundle export requires Rust core

- `export_serving_bundle` fails closed when the compiled Rust core is unavailable
Expand All @@ -326,6 +345,11 @@

- Restricted the public `FitConfig.estimator` vocabulary to the implemented `jmle` and `mmle` fitting paths, so unsupported `em` and `bayes` requests fail during configuration validation instead of entering a fitting path that later raises `NotImplementedError`.

#### Strict JSON artifact interoperability

- Governed JSON artifact writers now reject `NaN`, positive infinity, and negative infinity instead of emitting Python's non-standard JSON numeric extensions, preserving RFC 8259 interoperability and atomic publication failure.
- Non-finite serialization errors use a bounded package-owned message without reflecting the rejected artifact payload.

#### Node-rule fail-closed validation

- Public polytomous and 2PL fitters reject non-string integration-rule controls
Expand Down
281 changes: 281 additions & 0 deletions docs/PRD.md

Large diffs are not rendered by default.

51 changes: 51 additions & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
# fast-mlsirm documentation authority

This index distinguishes governing product/architecture documents from implementation history and method-local evidence.

## Canonical architecture package

| Document | Governing purpose |
|---|---|
| [`../ARCHITECTURE.md`](../ARCHITECTURE.md) | System of interest, bounded contexts, dependency direction, component/data/deployment/scientific views |
| [`PRD.md`](PRD.md) | Product requirements, users, workflows, non-goals, acceptance boundaries |
| [`TRD.md`](TRD.md) | Technical realization, numerical/runtime/security/resource/release requirements |
| [`adr/README.md`](adr/README.md) | Durable architecture/scientific decision log and status history |
| [`standards_watch.md`](standards_watch.md) | Published governing standards versus draft/revision watch items; no certification shortcut |
| [`verification_validation_plan.md`](verification_validation_plan.md) | Software, numerical, scientific, scoring/RAG, recovery, security, packaging and exact-artifact V&V evidence |
| [`uml/README.md`](uml/README.md) | PlantUML component, sequence, lifecycle, model-selection, deployment and reusable domain/public-contract views |
| [`uml/domain-public-contract.puml`](uml/domain-public-contract.puml) | Persistence-neutral reusable domain/public-contract classes and construction rules |
| [`erd/domain-model.puml`](erd/domain-model.puml) | Logical reusable-domain artifact relationships; **not** a hosted ORM schema |
| [`traceability/requirements-matrix.md`](traceability/requirements-matrix.md) | PRD/TRD/ADR -> protected-main implementation/evidence maturity |
| [`traceability/research-basis.md`](traceability/research-basis.md) | Scientific/standards evidence and APA 7 reference mapping |
| [`documentation_coverage.md`](documentation_coverage.md) | Documentation completeness states, remaining P0/P1/P2 gaps and maintenance gate |
| [`security/threat-model.md`](security/threat-model.md) | Reusable-core trust/threat model; hosted product threats remain downstream |
| [`doctoring/`](doctoring/) | Method/security/interoperability evidence and conservative implementation boundaries |
| [`../AGENTS.md`](../AGENTS.md), [`../CLAUDE.md`](../CLAUDE.md) | Agent/developer operating rules aligned to this architecture |
| [`../CHANGELOG.md`](../CHANGELOG.md) | User-visible released/unreleased change history |

`prd_trd_summary.md` is historical and must not compete with `PRD.md` and `TRD.md` as a requirements source.

## Authority and status

1. Protected-main source/tests define executable behavior.
2. Accepted ADRs define governing architecture/scientific decisions.
3. PRD/TRD define product/technical requirements and non-claims.
4. `ARCHITECTURE.md`, UML/ERD and the threat model define coherent system views.
5. The standards watch defines which published editions may govern claims and which drafts/revisions are only monitored.
6. The V&V plan defines what evidence is needed to verify software behavior and validate scientific/product interpretations.
7. Method-specific doctoring and primary literature justify local scientific/interoperability details.
8. Proposed ADRs, open PRs/issues and plans describe future/active work and are not released capability merely because they exist.

A conversation or PR body is discovery evidence until the durable decision is captured in the documents above.

## Implementation history

`docs/superpowers/specs/` and `docs/superpowers/plans/` preserve bounded design/implementation history. They do not automatically remain normative after implementation. If a plan creates a durable product/architecture/scientific decision, update the canonical PRD/TRD/ADR/traceability set.

## Completeness gate

A material change is incomplete if it creates a contradiction among code, accepted ADRs, PRD/TRD, architecture diagrams, security/threat model, standards status, V&V evidence, traceability, doctoring or release evidence. The documentation-contract test and `documentation_coverage.md` make these gaps visible; a missing or stale canonical artifact is release-maintenance debt rather than harmless prose drift.

## Cross-repository boundary

`fast-mlsirm` is the standalone reusable measurement/psychometric core. `ContextualWisdomLab/psychometrics-commons` or another owning downstream service is responsible for hosted HTTP/session/consent/tenant/RBAC/UI/database/deployment lifecycle. Architecture documents here may define interoperable reusable artifacts and versioned handoffs without creating a shared application database or reverse product dependency.
Loading
Loading