|
| 1 | +# v0.5.0 dependency integration gate |
| 2 | + |
| 3 | +Issue 506 is an offline, isolated decision gate between the Issue 505 |
| 4 | +analysis-only dependency benchmark and any future optional profile. Its |
| 5 | +canonical boundary is `targetintel.functional_dependency.dependency_integration`. |
| 6 | +It reads only an explicit baseline TSV and Issue 505 artifacts; it does not |
| 7 | +import production scoring, intent ranking, role classification, feature |
| 8 | +construction, modality, CLI, reports, LLMs, or network code. |
| 9 | + |
| 10 | +The controlled evidence scopes are `synthetic_fixture`, `local_real_data`, |
| 11 | +and `externally_validated_real_data`. Scope is a required caller argument and |
| 12 | +enters the decision identity. Synthetic fixture scope always produces |
| 13 | +`blocked_fixture_evidence`; a real-data label alone does not establish |
| 14 | +scientific adequacy. |
| 15 | + |
| 16 | +The controlled states are `blocked_fixture_evidence`, |
| 17 | +`blocked_insufficient_evidence`, `blocked_incompatible_inputs`, |
| 18 | +`blocked_policy_failure`, `eligible_for_human_activation`, |
| 19 | +`human_review_required`, and `explicitly_rejected`. Unknown values fail closed. |
| 20 | +Eligibility is not activation. |
| 21 | + |
| 22 | +`DependencyIntegrationPolicy` is immutable and content-addressed. It fixes |
| 23 | +coverage, holdout, eligible-count, Recall@K, negative-control, bounded-overlay |
| 24 | +stability, displacement, band-violation, ablation, and missing-profile |
| 25 | +thresholds; construction method; fallback; opt-in; human-approval requirement; |
| 26 | +and limitations. It rejects target-specific settings, tuning, callbacks, |
| 27 | +expressions, credentials, and hidden reasoning. Results never enter policy |
| 28 | +identity. |
| 29 | + |
| 30 | +The gate verifies frozen-universe, benchmark-universe, profile-run, baseline |
| 31 | +ranking and SHA-256 fingerprint, Issue 505 policy, and context identities. |
| 32 | +Missing or conflicting identities fail closed and retain exact reasons. Every |
| 33 | +criterion has an ID, source artifact/field, observed value, operator, |
| 34 | +threshold, pass/fail/unavailable result, and limitations. Unavailable is never |
| 35 | +pass; no aggregate score exists. |
| 36 | + |
| 37 | +The deterministic candidate is named |
| 38 | +`dependency_aware_melanoma_anti_pd1_candidate_v1`. It is context-bound, |
| 39 | +analysis-only, non-default, and contains no benchmark or holdout labels, |
| 40 | +target-specific weights, credentials, or clinical-validation claim. Its |
| 41 | +bounded overlay retains baseline score and rank separately, only reorders |
| 42 | +eligible rows inside fixed baseline bands, and preserves missing-profile order. |
| 43 | + |
| 44 | +The baseline TSV bytes and fingerprint are checked before and after evaluation. |
| 45 | +The gate emits separate proof that scores/ranks are retained and that production |
| 46 | +configuration/defaults remain untouched; it cannot register a global profile. |
| 47 | +`select_dependency_profile` returns baseline when selection is absent, rejects |
| 48 | +unknown or blocked selection, and requires a future approved authorization even |
| 49 | +after eligibility. |
| 50 | + |
| 51 | +`DependencyProfileAuthorization` is a future contract only. It requires the |
| 52 | +candidate, real-data benchmark, decision, context, reviewer reference, status, |
| 53 | +and limitations. Fixture authorization is rejected. Issue 506 emits no approved |
| 54 | +authorization. |
| 55 | + |
| 56 | +The activation-readiness bundle is immutable and reports blocked, eligible for |
| 57 | +human review, or rejected. The bundled synthetic fixture is blocked, although |
| 58 | +it still emits an overlay for audit. Issue 507 must run the same gate after a |
| 59 | +pinned local real-data benchmark, inspect every failure/unavailable result, and |
| 60 | +obtain separate human authorization; it must not auto-enable the candidate. |
0 commit comments