Spec — product contract
What the live app is responsible for (PROMPT_VERSION=trust-v8).
Surfaces
| Surface | Purpose |
|---|---|
Dashboard / |
Sticky Focus (severity) · within-focus Action · Intelligence · Cards (Source/Chain filters live inside Approval chains) |
Admin /admin |
Scan, routing, snapshots, benchmarks (admin-only), reference links |
Grounding /grounding |
Curated docs (Trust · Why · Methods · Spec) — viewers; bake-off docs admin-only |
Data volume /app/data |
cards.json, cache, detection, org snapshot, deep corpus (proposals/issues/workflows/deep_scan/corpus_index) |
Rules
- Comments from the issues endpoint; assert ≥95% coverage.
- Cited grounding only — authority is TRUST_GROUNDING.md; runtime table
cited_facts.py. - Trust rules sit at the top of every classify prompt (confidence tags carried into responses).
- Attribution evidence-only — DA ≠ Foundation; no invented institutions from handles.
- Project 3 = Incoming; Project 5 = Milestones (both labeled).
- Proposal content =
/proposals/*.md(not PR body checklist). - Severity = single resolve pass (highest wins), including architectural invariant overrides (
violated→critical,at_risk→≥watch). - Every action card shows collapsible Sources; Intelligence cards show Sources + Citing. Cards also show invariants (privacy / authorization / composability) and optional trade_off on watch/critical.
- Hide empty sections rather than hollow cards.
- DA self-funding share from proposal filenames is a first-class dashboard insight.
- Architectural integrity frame (v8) — proposals tested against Elsner's three invariants;
sdk_impactand discrepancy types remain. SeePATCH_privacy_architecture_first.md.
Lenses
| Lens | Module / UI |
|---|---|
| Approval chains (tech ↔ economics ↔ collision) | approval_chains.py · Intelligence |
| Know vs assume | story.py + detection.py |
| Deep scan (proposals / issues / workflows) | deep_scan.py |
| Focus filters | sticky severity chips → cards; Action row narrows within Focus |
Product lens (sdk / ledger / splice) |
da_product_context.py · grounding + Reference strip only — same cards |
Product lens is the TPM view (ARCH_NOTE). It does not change classification; it reorders grounding emphasis and the Reference strip. Config: product_lens · CLI: scanner.py --lens.
Out of scope (confirmed cut)
- Author-trajectory prediction (n too small)
- Board-to-completion prediction from column timestamps
- Template-compliance scoring from PR bodies (wrong target)
- Multi-day people / CI deep modes (unless added deliberately)
Deferred polish
Fork radar + snapshots · pulse sparklines · fuller budget parse from proposal markdown.
(Corpus-backed Patterns / Predictions are live; grant-execution lists stay Admin corpus — not a chip.)