Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
40 changes: 40 additions & 0 deletions docs/qualification/RES71-COVERAGE-MATRIX.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
# RES-71 V2 coverage matrix

`build_coverage_matrix()` returns the machine-readable version. Every row has
authoritative surfaces, registered operations (where applicable), unresolved
capabilities, provenance boundary, comparability boundary, claim boundary,
authority references and test paths. Validation keys supplied and canonical
rows by `domain` and requires exact frozen-dataclass equality before preserving
the existing domain and test-path checks.

| V2 domain | Status | Explicit boundary / unresolved surface |
|---|---|---|
| Population/source authority | QUALIFIED | Ambiguous/noncanonical populations quarantine; indirect evidence cannot mint target priors. |
| Football world/context | QUALIFIED | Match-day relation requires an identified target match; no nearest-match inference. |
| Ingestion/qualification | QUALIFIED | Raw bytes, license, schema, mapping, canonical artifact and replay lineage remain bound. |
| External load / GNSS / optical | QUALIFIED_WITH_EXPLICIT_DEFERRED | Hidden vendor algorithms and unresolved threshold/sampling semantics are observations/refusals, not reconstructed equations. |
| CMJ | QUALIFIED_WITH_EXPLICIT_DEFERRED | CMJ RFD and COM-displacement jump height remain deferred; estimator/event/phase identities remain distinct. |
| Strength / IMTP / VBT | QUALIFIED_WITH_EXPLICIT_DEFERRED | VBT MPV and terminal-velocity estimated 1RM are represented/refused; velocity loss is not fatigue. |
| Sprint / max velocity / COD / RSA / 30–15 IFT | QUALIFIED_WITH_EXPLICIT_DEFERRED | Acceleration, sustained maximum, 505 asymmetry and VIFT relabelling remain refused/deferred. |
| DJ / bench throw / medicine-ball throw | QUALIFIED_WITH_EXPLICIT_DEFERRED | DJ JH/CT differs from FT/CT; generic BPT/MBT power and norms are refused. |
| Longitudinal statistics / reliability / error | QUALIFIED_WITH_EXPLICIT_DEFERRED | Deferred ICC/SEM/MDC/CI/BA/repeated-measures methods are explicit; no generic meaningful-change authority. |
| Cross-source comparability | QUALIFIED_WITH_EXPLICIT_DEFERRED | Exact identities, context and registry hashes are required; no transitive or caller-minted bridge. |
| Analysis capability | QUALIFIED_WITH_EXPLICIT_DEFERRED | Missing prerequisites, wrong level, pseudoreplication and deferred between/cross-test models refuse. |
| Claim authority | QUALIFIED_WITH_EXPLICIT_DEFERRED | Ladder/causal level is enforced; practical, readiness, fatigue, injury and causal escalation refuse. |

“Qualified with explicit deferred” means the domain is covered by an
authoritative implementation/refusal contract; it does not claim that every
published method is implemented.

## Required upstream relationships

```text
population/source → football context → canonical record/lineage
↓ ↓ ↓
measurement identity → deterministic operation → statistical analysis
↓ ↓ ↓
comparability/evidence → claim authority → bounded result or refusal
```

No arrow permits a label, unit, correlation, provider output or LM proposal to
skip identity, provenance, comparability, analysis or claim prerequisites.
26 changes: 26 additions & 0 deletions docs/qualification/RES71-GATE-RECEIPT.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"MISSION": "RES-71-SCIENTIFIC-ENGINE-GATE-001",
"BASE_MAIN": "7508a9025759c2863d163e09b22f325494828602",
"QUALIFIED_CONTENT_HEAD": "0a51127628f1bfc1f0b89064bf92d7fc2703ff39",
"STATUS": "PASS",
"REGISTERED_OPERATION_INVENTORY": "PASS",
"COVERAGE_MATRIX": "PASS",
"UNRESOLVED_COMPUTATION_INVENTORY": "PASS",
"REFERENCE_CASE_VALIDATION": "PASS",
"RUNTIME_COUNTS": {
"registered_operations": 100,
"implemented": 81,
"historical_replay_only": 1,
"represented_but_do_not_compute": 7,
"deferred": 8,
"rejected": 3,
"unresolved_capabilities": 23,
"coverage_domains": 12,
"verifier_reference_cases": 12,
"verifier_reference_digest": "sha256:d29d84699b7cf70c2d409d370c5ffd6c7ad7cd704375b14b541527a95fa385e5"
},
"SERIALIZATION_VERSION": 3,
"MODEL_INFERENCE": "NOT_IMPLEMENTED",
"GPU_WORK": "NOT_IMPLEMENTED",
"SCIENTIFIC_ENGINE_GATE": "PASS"
}
72 changes: 72 additions & 0 deletions docs/qualification/RES71-OPERATION-INVENTORY.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
# RES-71 registered-operation inventory

The authoritative inventory is the immutable tuple returned by
`dynamislm.qualification.build_registered_operation_inventory()`.
`validate_registered_operation_inventory()` discovers every
`RegistryReference` whose object type is `registered-operation`, keys supplied
and canonical rows by `operation_id`, and requires exact frozen-dataclass
equality before route/path/runtime checks. A newly exposed operation or a
metadata substitution therefore fails qualification until its contract is
reviewed.

Each row contains:

```text
operation_id
label
method_version
scientific_family
disposition
implementation
input_contract
output_contract
provenance_contract
refusal_path
test_coverage
authority_references
tolerance_contract
```

## Inventory totals

| Family | Registered identities | Implemented | Historical replay | Represented only | Deferred | Rejected |
|---|---:|---:|---:|---:|---:|---:|
| Population/source | 2 | 2 | 0 | 0 | 0 | 0 |
| Football context | 1 | 1 | 0 | 0 | 0 | 0 |
| Ingestion/record | 3 | 3 | 0 | 0 | 0 | 0 |
| External load | 3 | 3 | 0 | 0 | 0 | 0 |
| CMJ | 25 | 24 | 1 | 0 | 0 | 0 |
| Strength/IMTP/VBT | 14 | 12 | 0 | 1 | 1 | 0 |
| Field testing | 14 | 12 | 0 | 1 | 1 | 0 |
| DJ/BPT/MBT | 10 | 9 | 0 | 1 | 0 | 0 |
| Longitudinal statistics | 27 | 14 | 0 | 4 | 6 | 3 |
| Cross-source bridge | 1 | 1 | 0 | 0 | 0 | 0 |
| **Total** | **100** | **81** | **1** | **7** | **8** | **3** |

The count is a qualification assertion, not a replacement for the exact set
comparison. The machine-readable entries carry the implementation symbol,
input/output/provenance contract, refusal route, authority documents and test
paths for each identity.

## Authority mapping by family

| Family | Primary implementation surface | Authority | Test evidence |
|---|---|---|---|
| Population/source | `dynamislm.population`, `dynamislm.ingestion` | RES-59/60/63 | `test_population.py`, `test_ingestion.py`, `test_res63_operational_authority.py` |
| Football context | `dynamislm.football`, `dynamislm.longitudinal` | RES-61/62 | `test_football.py`, `test_longitudinal.py` |
| External load | `dynamislm.external_load` | RES-64 | `test_external_load.py` |
| CMJ | `dynamislm.measurement.cmj` | RES-34–50/65 | CMJ test family and RES-71 gold/refusal cases |
| Strength | `dynamislm.measurement.strength` | RES-66 | `test_strength.py` |
| Field testing | `dynamislm.measurement.field_testing` | RES-67 | `test_field_testing.py` |
| DJ/BPT/MBT | family-specific RES-68 packages | RES-68 | `test_explosive_test_families.py` |
| Longitudinal statistics | `dynamislm.longitudinal.statistics` | RES-69 | `test_longitudinal_statistics.py` |
| Comparability | `dynamislm.comparability` | RES-70 | RES-70 comparability/bridge/adversarial tests |

## Completeness rule

Implemented entries must resolve to an importable implementation symbol and
have test paths in the repository. Historical replay entries resolve to the
historical method identity and cannot mint the current result. Every other
disposition has an explicit refusal/representation path. Caller-supplied
formulas, thresholds, operation identities and comparability overrides are not
accepted by this inventory.
49 changes: 49 additions & 0 deletions docs/qualification/RES71-PROVENANCE-SERIALIZATION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
# RES-71 provenance and serialization qualification

## Identity and lineage invariants

The qualification accepts an output only when the owning family contract keeps
the following separable:

```text
ObservationContext + MeasurementIdentity + MeasurementResult + Provenance
```

Derived results must preserve source observation/artifact IDs, acquisition and
processing lineage, method/registry/software version, calculation-changing
parameters, units, value origin, quality/uncertainty status and evidence or
decision references. A method identity is not a method instance, and a provider
output is not silently converted into a DynamisLM direct measurement.

Reprocessing follows the sealed invariant:

```text
raw R + method v1 → D1
raw R + method v2 → D2
D2 does not overwrite D1
```

The RES-71 inventory requires provenance contracts for all 100 operations. The
RES-70 authority revalidates exact observation hashes and registry hashes at
comparability, analysis and claim intake. RES-63 remains the authority for raw
artifact, canonical-artifact and qualification lineage.

## Serialization

- Serialization V3 remains unchanged.
- Historical CMJ V1 flight-time results are replay-only and remain distinct
from the current V2 method/version.
- Qualification contracts are registered with the existing canonical serializer
and round-trip through `canonical_json` / `from_canonical_json`.
- The verifier manifest has a deterministic digest:
`sha256:9807b6e0be63abd44135bc855a97d37775ef09763d25c0f7025f4395ab673af6`.
- Floating reference values carry explicit absolute/relative tolerance fields;
nonfinite values are rejected by the typed reference contract and owning
numerical operations.

## Evidence

The RES-71 tests cover serialization round-trip, canonical digest stability,
independent numerical gold values, finite/domain refusal, source/method
identity collision, historical/current method separation and safe refusal
states. Full repository QA is required again at the exact final head.
114 changes: 114 additions & 0 deletions docs/qualification/RES71-SCIENTIFIC-ENGINE-QUALIFICATION.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
# RES-71 scientific-engine qualification report

Mission: `RES-71-SCIENTIFIC-ENGINE-GATE-001`

Qualified base: `7508a9025759c2863d163e09b22f325494828602`

Scope: deterministic V2 scientific truth layer only.

## Executive result

The qualification harness independently audits the merged RES-59 and
RES-63–70 implementation surface. It discovers 100 unique
`registered-operation` identities at runtime and requires a reviewed inventory
entry for every one. The current contract contains 81 implemented operations,
one historical replay-only identity, seven represented-but-not-computed
identities, eight deferred identities and three rejected identities.

The deferred and rejected surfaces are explicit refusal authority. They do not
count as missing gate coverage: unsupported methods are represented with a
reason, refusal path, safe description and tests.

The formal gate decision is sealed in `RES71-GATE-RECEIPT.json` after final QA.

## RES-71 review-fix-002 qualification-integrity hardening

Review-fix entry head: `dc29909a13fbb27d463632f2cd5c4f239c4cd07f`

Qualified content head: `0a51127628f1bfc1f0b89064bf92d7fc2703ff39`

The review fix canonically binds registered-operation rows by `operation_id`,
unresolved-computation rows by `capability`, and coverage rows by `domain`.
Supplied rows must equal freshly built canonical frozen records before route,
path or refusal-runtime checks. The receipt comparison is recursively
type-strict, including nested `RUNTIME_COUNTS` values.

`RES71-GATE-RECEIPT.json` is deliberately narrow and runtime-authoritative.
It contains only identity fields and evidence derived by
`validate_gate_receipt()`. The former checklist assertions
(`IDENTITY_PROVENANCE`, `NUMERICAL_QUALIFICATION`, `SCIENTIFIC_BOUNDARIES`,
`DATASET_COMPATIBILITY`, `VERIFIER_REFERENCE_INTERFACE`,
`IMPLICIT_LM_ARITHMETIC`, `UNREGISTERED_ACCEPTED_OPERATION`,
`PROVENANCE_GAPS`, `CLAIM_AUTHORITY_BYPASS`, and `SCIENTIFIC_BLOCKERS`) are
narrative qualification documentation, not unchecked fields in the sealed
runtime receipt. CI results and test counts are handoff evidence outside that
receipt.

## Entry and upstream authority

The entry checks were performed before mutation:

| Check | Result |
|---|---|
| One worktree | PASS |
| Branch | `work/res-71-scientific-engine-qualification-gate` |
| `HEAD` | `54c2c21171e951081bda4bb23c88fa06986a2d79` |
| `origin/main` | `7508a9025759c2863d163e09b22f325494828602` |
| Worktree | clean at entry |
| Linear RES-71 | In Progress; no LM/GPU work authorized |

The qualification treats the sealed V2 constitution, measurement/provenance
architecture, RES-60–70 decision records/receipts, and merged repository state
as upstream authority. It does not alter their scientific formulas, thresholds,
identities or expected fixtures.

## Qualification components

| Component | Evidence | Result |
|---|---|---|
| Registered-operation inventory | `build_registered_operation_inventory()` equals live runtime registry | PASS |
| V2 coverage matrix | 12 required scientific domains | PASS |
| Unresolved computation inventory | 23 explicit refusal/representation entries | PASS |
| Identity/provenance | typed records, source/method/version/lineage checks and adversarial cases | PASS |
| Numerical integrity | independent gold values, finite/domain refusals, serialization/hash checks | PASS |
| Scientific boundaries | same-label collision, causal/estimand/refusal cases and upstream adversarial suites | PASS |
| Dataset compatibility | RES-63 canonical/quarantine authority and lineage coverage | PASS |
| Verifier interface | 12 immutable reference cases plus canonical manifest/digest adapter | PASS |

## Scientific boundary attacks

The qualification suite explicitly covers:

- same display label with a different measurand or method;
- method identity versus method instance and historical V1 versus current V2;
- within-athlete versus between-athlete estimands and pseudoreplication;
- correlation/agreement and bridge requirements;
- direct, derived, provider-derived and model-estimated value origin;
- nonfinite values, invalid domains and missing method prerequisites;
- numerical change versus measurement error and practical meaning;
- measurement change versus readiness, fatigue or injury interpretation;
- association versus causal evidence;
- canonical target-population evidence versus indirect method evidence;
- cross-source bridge and threshold abuse;
- claim-authority escalation and safe observation descriptions after refusal.

The existing RES-70 adversarial tests and new RES-71 cases are both run. A
refusal blocks the unsupported claim while preserving the strongest safe
description of the underlying observation.

## Scope prohibition

This qualification adds no model runtime, inference path, benchmark harness,
GPU work, CPT/DAPT, SFT/PEFT or RLVR/GRPO implementation. The reference
adapter emits deterministic case contracts only; it does not execute an LM.

## Reproduction

```text
./scripts/ci.sh
python scripts/res71_reference_cases.py --digest
python scripts/res71_reference_cases.py --manifest
```

The exact final commit and component statuses are recorded in the formal gate
receipt.
45 changes: 45 additions & 0 deletions docs/qualification/RES71-UNRESOLVED-COMPUTATIONS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# RES-71 unresolved-computation inventory

Unsupported methods remain explicit and non-authoritative. The complete
machine-readable set is returned by
`build_unresolved_computation_inventory()`. Validation keys supplied and
canonical rows by `capability` and requires exact frozen-dataclass equality
before runtime refusal-route checks.

## Registered but not computed

| Operation / capability | Disposition | Refusal boundary |
|---|---|---|
| 505 asymmetry | REPRESENT_BUT_DO_NOT_COMPUTE | No frozen denominator, direction or sign convention. |
| BPT mean propulsive velocity | REPRESENT_BUT_DO_NOT_COMPUTE | No generic acceleration/gravity/propulsive-boundary authority. |
| Classical BA limits | REPRESENT_BUT_DO_NOT_COMPUTE | V1 exposes only the registered narrow method-comparison summary. |
| ICC variants, SEM from ICC, MDC/SDC | REPRESENT_BUT_DO_NOT_COMPUTE | No registered reliability estimand/design authority. |
| VBT mean propulsive velocity | REPRESENT_BUT_DO_NOT_COMPUTE | Concentric velocity cannot be relabelled as MPV. |
| Estimated 1RM from load–velocity model | DEFERRED | Terminal-velocity applicability is not authorized across devices/designs. |
| Sustained maximum sprint velocity | DEFERRED | No registered dwell/sustain estimator. |
| Log/repeated-measures BA, confidence intervals, covariance propagation | DEFERRED | Estimator, design and uncertainty contract not sealed. |
| Repeated-measures correlation and mixed effects | DEFERRED | Later analysis mission required; no numeric output is emitted. |
| Generic meaningful change | REJECTED | No universal decision criterion is authorized. |
| Generic SEM | REJECTED | No registered estimand or design. |
| Readiness/fatigue/injury interpretation | REJECTED | Outside the scientific-engine authority boundary. |

## No registered numeric operation

| Capability | Deterministic refusal |
|---|---|
| CMJ RFD | `refuse_unregistered_cmj_rfd` |
| Generic BPT load × velocity power | `calculate_bpt_load_times_velocity_power` |
| MBT distance-as-power / protocol-independent norm | `calculate_mbt_distance_as_power`, `calculate_mbt_protocol_independent_normative_score` |
| Sprint acceleration from split averages | `refuse_sprint_acceleration` |
| VIFT relabelled as VO2max, MAS or maximum sprint speed | `refuse_vift_as_vo2max`, `refuse_vift_as_mas`, `refuse_vift_as_mss` |

The VIFT relabelling routes are identity refusals, not missing-computation
refusals: their expected class is `IDENTITY_UNRESOLVED` with
`MEASURAND_MISMATCH` and `METRIC_DEFINITION_MISMATCH` reason codes. CMJ RFD
expects the producer reason code `NO_REGISTERED_OPERATION`.

Every refusal preserves the blocked claim, reason code(s), missing information
and safe description where the owning family exposes them. No placeholder
number is returned. This is the intended behavior for later LM verifiers:
`COMPUTATION_NOT_REGISTERED` is a scored scientific outcome, not an error to
be bypassed.
Loading