|
| 1 | +# Capability assurance |
| 2 | + |
| 3 | +Research Forge separates a product feature list from machine capability claims. |
| 4 | +The human catalog has 22 features; the registry has 18 capability IDs. A product |
| 5 | +feature may compose several registered capabilities, and several product |
| 6 | +features may reuse the same capability. Therefore `22` and `18` are not two |
| 7 | +competing scores. |
| 8 | + |
| 9 | +The authoritative mapping is |
| 10 | +`research_forge/product_capability_map.yaml`. The assurance command rejects the |
| 11 | +mapping unless features 1-22 are consecutive, every referenced capability ID |
| 12 | +exists, and the union of mapped IDs is exactly the 18-item registry. |
| 13 | + |
| 14 | +## Three audit layers |
| 15 | + |
| 16 | +```text |
| 17 | +registry audit |
| 18 | + schema, claim boundary, evidence locators, declared maturity |
| 19 | +
|
| 20 | +evidence audit |
| 21 | + verified commit, verification time, environment digest, expiry, |
| 22 | + source/test drift, positive/negative/mutation coverage |
| 23 | +
|
| 24 | +capability replay |
| 25 | + rerun the registered positive, negative, and mutation suites |
| 26 | +``` |
| 27 | + |
| 28 | +Run the first two layers and reuse the latest still-fresh CI replay: |
| 29 | + |
| 30 | +```powershell |
| 31 | +python scripts/audit_capability_assurance.py --root . |
| 32 | +``` |
| 33 | + |
| 34 | +Force a new local replay of every registered falsification suite: |
| 35 | + |
| 36 | +```powershell |
| 37 | +python scripts/audit_capability_assurance.py --root . --execute-replay |
| 38 | +``` |
| 39 | + |
| 40 | +Evidence becomes stale when its expiry passes, a registered source/test/evidence |
| 41 | +file changes after the verified commit, a locator disappears, or replay fails. |
| 42 | +The command then exits non-zero instead of preserving a green capability label. |
| 43 | + |
| 44 | +## Three independent dimensions |
| 45 | + |
| 46 | +Each capability reports three dimensions rather than combining them into one |
| 47 | +ambiguous label: |
| 48 | + |
| 49 | +- **Implementation maturity C0-C4 for release acceptance**: concept, |
| 50 | + implementation, component validation, controlled E2E, and real-case |
| 51 | + validation. |
| 52 | +- **Evidence level E0-E3 for release acceptance**: documented, component |
| 53 | + tested, controlled replay, and real-case evidence. |
| 54 | +- **Scope**: `component`, `bounded`, `limited_real_case`, or `extension_only`. |
| 55 | + |
| 56 | +For example, controlled clean-room replay is implementation maturity C3, |
| 57 | +evidence level E2, scope `limited_real_case`. C5/E4 values remain readable only |
| 58 | +for historical-schema compatibility. Research Forge does not require an |
| 59 | +external independent researcher, and C5/E4 is not a product gap or release |
| 60 | +milestone. |
| 61 | + |
| 62 | +## Product-to-registry mapping |
| 63 | + |
| 64 | +| Product feature | Registered capability ID(s) | |
| 65 | +|---|---| |
| 66 | +| 1. Four-stage Study workflow | `workflow.control_loop` | |
| 67 | +| 2. Project scan and claim discovery | `workflow.control_loop`, `retrieval.gateway` | |
| 68 | +| 3. External retrieval | `retrieval.gateway` | |
| 69 | +| 4. PaperQA evidence analysis | `retrieval.paperqa_fulltext` | |
| 70 | +| 5. Discovery portfolio | `workflow.control_loop`, `retrieval.gateway` | |
| 71 | +| 6. Stage 2 contract | `research_contract.compiler` | |
| 72 | +| 7. Typed profiles and unsupported routing | `scientific_execution.typed_profiles`, `scientific_completion.cross_domain_autonomy` | |
| 73 | +| 8. OpenML hidden-target experiment | `scientific_execution.hidden_target_benchmark` | |
| 74 | +| 9. AIRS RAD | `benchmark.official_airs_rad` | |
| 75 | +| 10. Existing-project replay | `reproduction.sealed_existing_project_replay` | |
| 76 | +| 11. Structural data qualification | `data_quality.great_expectations_gate` | |
| 77 | +| 12. Evidence and verdict chain | `scientific_completion.empirical_loop` | |
| 78 | +| 13. PROV projection | `interchange.prov_external_validation` | |
| 79 | +| 14. Workflow Run RO-Crate | `interchange.rocrate_external_validation` | |
| 80 | +| 15. Repair and rollback | `workflow.control_loop`, `research_contract.compiler` | |
| 81 | +| 16. Controlled clean-room replay | `reproduction.controlled_clean_room_replay` | |
| 82 | +| 17. Public reproduction package | `reproduction.public_minimal_research_package` | |
| 83 | +| 18. Evidence-bound paper authoring | `authoring.evidence_bound` | |
| 84 | +| 19. SCI/SSCI writing constraints | `authoring.evidence_bound` | |
| 85 | +| 20. Nuwa panel | `review.nuwa_panel` | |
| 86 | +| 21. Editable scientific diagrams | `visualization.drawio_export` | |
| 87 | +| 22. Completion/public replay record | `workflow.control_loop`, `reproduction.public_minimal_research_package` | |
| 88 | + |
| 89 | +## Signature and provenance boundary |
| 90 | + |
| 91 | +Research Forge uses two different objects: |
| 92 | + |
| 93 | +1. A Research Forge Completion Record uses the project-defined schema and |
| 94 | + Ed25519 verification. It is not Sigstore or SLSA provenance. |
| 95 | +2. A public GitHub-hosted build or replay artifact may carry GitHub artifact |
| 96 | + attestation, a Sigstore-issued certificate, and an SLSA provenance predicate. |
| 97 | + This proves the artifact's hosted build origin and workflow identity, not an |
| 98 | + independent scientific conclusion. |
| 99 | + |
| 100 | +Neither object is described as external independent scientific reproduction. |
| 101 | + |
| 102 | +## Scientific Contribution Gate |
| 103 | + |
| 104 | +The gate is implemented separately from Nuwa review in |
| 105 | +`research_forge/scientific_contribution_gate.py`. It checks baseline weakness, |
| 106 | +arm identity, mechanism isolation, expected information value, sample adequacy, |
| 107 | +novelty, and claim identifiability before contract freeze. Nuwa remains an |
| 108 | +advisory same-model review panel and cannot override the deterministic gate. |
| 109 | + |
| 110 | +## Evaluator-family robustness |
| 111 | + |
| 112 | +When a contract uses a learned evaluator, Contract Compiler v2 requires a |
| 113 | +second, genuinely distinct evaluator family plus a frozen disagreement policy. |
| 114 | +Stage 3 stores append-only family results and reports aggregate metric |
| 115 | +agreement, row-level disagreement, directional agreement, and verdict |
| 116 | +stability. An unstable or unadjudicated comparison blocks formal completion; |
| 117 | +it never rewrites either evaluator's historical output. |
0 commit comments