docs(stage2): map disclosure-bus implementation state and next slices
This commit is contained in:
parent
9cff9755cd
commit
426adbd197
1 changed files with 317 additions and 0 deletions
|
|
@ -0,0 +1,317 @@
|
|||
# Stage 2 Disclosure Bus Implementation Map — session pivot to current slices
|
||||
|
||||
**Date:** 2026-06-09
|
||||
**Status:** implementation map / controlling checklist — docs only
|
||||
|
||||
This document reconciles the June 8 session-design pivot with the implementation slices that have now landed. It is not a new architecture. It is the map that prevents the work from drifting into isolated feature patches.
|
||||
|
||||
## 0. Why this map exists
|
||||
|
||||
The recent implementation work touched ASK and VERIFIED serving foundations in small slices. That was correct, but the controlling plan is larger than any one PR:
|
||||
|
||||
- `docs/sessions/2026-06-08-practice-attempts-and-servability-blade.md`
|
||||
- `docs/sessions/2026-06-08-epistemic-question-articulation-first-skill-of-contemplation.md`
|
||||
- `docs/analysis/stage2-epistemic-disclosure-bus-verified-v1-scoping-2026-06-08.md`
|
||||
- `docs/analysis/q1-epistemic-question-articulation-v1-scoping-2026-06-08.md`
|
||||
- `docs/analysis/ask-serving-integration-scoping-2026-06-09.md`
|
||||
- `docs/analysis/verified-serving-wiring-scoping-2026-06-09.md`
|
||||
|
||||
The governing pivot is:
|
||||
|
||||
```text
|
||||
wrong=0 is not a binary answer/refuse command.
|
||||
wrong=0 is no false presentation of epistemic status.
|
||||
practice/contemplation may explore typed, isolated candidates.
|
||||
serving must disclose only what is truthfully labelable.
|
||||
```
|
||||
|
||||
Therefore the served surface should not grow by one-off feature branches. It should grow by activating tenants on the already-scoped Epistemic Disclosure Bus.
|
||||
|
||||
## 1. Controlling doctrine from the session docs
|
||||
|
||||
### 1.1 Practice versus serving
|
||||
|
||||
The practice/servability session separates two lanes:
|
||||
|
||||
| Lane | Purpose | License | Primary danger |
|
||||
| --- | --- | --- | --- |
|
||||
| practice / contemplation | explore, attempt, eliminate, learn | typed and isolated candidates may exist | getting stuck / never learning |
|
||||
| serving | emit to a user/downstream surface | no false presentation of epistemic status | misrepresenting uncertainty as truth |
|
||||
|
||||
The practical consequence is that internal attempts, ASK artifacts, proposals, and verification proofs may exist off-serving without being user-visible. Serving requires an explicit governance decision.
|
||||
|
||||
### 1.2 The servability blade is not a new parallel system
|
||||
|
||||
The session document explicitly amends the initial sketch: the servability blade must reuse the already-shipped ADR-0206 response-governance seam (`ReachPolicy`, `govern_response`, `shape_surface`) rather than invent a new parallel object.
|
||||
|
||||
For Stage 2 work, every served-surface slice must therefore ask:
|
||||
|
||||
```text
|
||||
Does this activate the existing governance seam, or is it bypassing it?
|
||||
```
|
||||
|
||||
A bypass is architectural drift.
|
||||
|
||||
### 1.3 ASK is typed intake, not chat clarification
|
||||
|
||||
The question-articulation session defines a question as a typed request for missing state. The first contemplative move is not “ask a question”; it is:
|
||||
|
||||
```text
|
||||
What is preventing resolution — and what KIND of limitation is it?
|
||||
```
|
||||
|
||||
Only limitations of kind `missing_information` or `ambiguous_structure` may become ASK. Capability gaps propose. Hard boundaries refuse. Contradictions report. Input-shape cases step aside.
|
||||
|
||||
### 1.4 QUESTION_NEEDED and PROPOSAL_EMITTED are siblings
|
||||
|
||||
The session doc draws a hard line:
|
||||
|
||||
| Terminal | Meaning |
|
||||
| --- | --- |
|
||||
| `QUESTION_NEEDED` | the input is under-specified but the problem is potentially knowable after one missing datum is supplied |
|
||||
| `PROPOSAL_EMITTED` | the input is sufficiently specified but CORE lacks the transform/capability |
|
||||
|
||||
This distinction must be preserved in artifacts, paths, tests, and served surfaces.
|
||||
|
||||
## 2. Stage 2 bus frame
|
||||
|
||||
The Stage 2 scoping doc reframes the frontier:
|
||||
|
||||
```text
|
||||
What may CORE disclose through the served surface — and under what governed disposition?
|
||||
```
|
||||
|
||||
The bus is the consolidating view:
|
||||
|
||||
```text
|
||||
EpistemicState + LimitationAssessment + proof/license evidence
|
||||
-> ServedDisposition / disclosure decision
|
||||
-> shaped surface through the governance seam
|
||||
```
|
||||
|
||||
VERIFIED is not the whole system. It is one tenant. ASK is another. Scope-boundary explanation, contradiction reporting, proposal-only, partial progress, multiple candidates, and provisional working answers are later tenants or modes on the same governance surface.
|
||||
|
||||
## 3. Current implementation state
|
||||
|
||||
### 3.1 ASK tenant — landed foundation
|
||||
|
||||
The following ASK foundation is now present:
|
||||
|
||||
```text
|
||||
Q1-B typed ASK residue / MissingSlot / LimitationAssessment ask_question
|
||||
Q1-C grounded-only renderer
|
||||
Q1-D off-serving DeliveredQuestion / deliver_ask / teaching/questions sink
|
||||
ask_serving_enabled helper, default-dark
|
||||
RuntimeConfig.ask_serving_enabled = False
|
||||
pass_manager off-serving ASK integration behind exercise_ask
|
||||
ContemplationResult.question_path separated from proposal_path
|
||||
```
|
||||
|
||||
Important preserved boundaries:
|
||||
|
||||
```text
|
||||
no chat/runtime.py serving path
|
||||
no served ASK surface
|
||||
no Q1B_ASK_CARVE_OUT retirement
|
||||
no proposal_allowed registry flip
|
||||
no CLAIMS or benchmark movement
|
||||
boundary-first remains before ASK
|
||||
question_only sink remains distinct from proposal_only sink
|
||||
```
|
||||
|
||||
### 3.2 ASK tenant — not yet done
|
||||
|
||||
The following are still open:
|
||||
|
||||
```text
|
||||
served ASK / QUESTION_NEEDED through the governance bus
|
||||
Q2 AnswerBinding and re-run through the owner organ
|
||||
no-question/no-proposal dead-zone proof
|
||||
Q1B_ASK_CARVE_OUT retirement proof
|
||||
registry flip for missing_total_count / missing_weighted_total
|
||||
broader ASK families beyond the current typed-residue subset
|
||||
```
|
||||
|
||||
### 3.3 VERIFIED tenant — landed foundation
|
||||
|
||||
The following VERIFIED foundation is now present:
|
||||
|
||||
```text
|
||||
P1-A VERIFIED contract
|
||||
P1-B off-serving gold-setup-backed R2 producer
|
||||
P1-C bound_slots_digest proof hardening
|
||||
verified_serving_enabled helper, default-dark
|
||||
RuntimeConfig.verified_serving_enabled = False
|
||||
verified serving scoping / gold-free independence doc
|
||||
```
|
||||
|
||||
Important preserved boundaries:
|
||||
|
||||
```text
|
||||
no served VERIFIED surface
|
||||
no verify.py consumption
|
||||
no eval-gold-backed proof in serving
|
||||
no CLAIMS or benchmark movement
|
||||
no gold-free independent reader yet
|
||||
```
|
||||
|
||||
### 3.4 VERIFIED tenant — not yet done
|
||||
|
||||
The following are still open:
|
||||
|
||||
```text
|
||||
gold-free independent reader/proof source
|
||||
poison fixture harness
|
||||
holdout-gated verification harness
|
||||
deterministic replay digest proof for served verification traces
|
||||
verify.py consumption of contract verdict
|
||||
served [verified] surface behind verified_serving_enabled
|
||||
```
|
||||
|
||||
## 4. Recent PRs in plan terms
|
||||
|
||||
| PR | Plan role | Status |
|
||||
| --- | --- | --- |
|
||||
| #664 | Q1-B typed ASK residue + carve-out | merged |
|
||||
| #666 | Q1-C grounded-only renderer | merged |
|
||||
| #667 | Q1-D decision record | merged |
|
||||
| #668 | Q1-D off-serving delivery | merged |
|
||||
| #670 | ASK default-dark gate helper | merged |
|
||||
| #671 | ASK serving / carve-out retirement scoping | merged |
|
||||
| #672 | VERIFIED serving / gold-free independence scoping | merged |
|
||||
| #673 | VERIFIED default-dark gate helper | merged |
|
||||
| #674 | explicit ASK + VERIFIED config fields | merged |
|
||||
| #675 | off-serving ASK pass_manager integration | merged |
|
||||
| #676 | split question_path from proposal_path | merged |
|
||||
|
||||
This sequence was mostly faithful to the plan, but the controlling label should be:
|
||||
|
||||
```text
|
||||
ASK tenant implementation on the Epistemic Disclosure Bus foundation
|
||||
```
|
||||
|
||||
not merely:
|
||||
|
||||
```text
|
||||
question feature / pass_manager feature
|
||||
```
|
||||
|
||||
## 5. Correct next-slice ordering
|
||||
|
||||
### 5.1 ASK next code slice — bus activation, not runtime bypass
|
||||
|
||||
The next ASK code slice should not be described as “wire chat/runtime.” It should be:
|
||||
|
||||
```text
|
||||
Activate ASK/clarify as a served tenant through the disclosure/governance bus.
|
||||
```
|
||||
|
||||
Minimum requirements:
|
||||
|
||||
- use `ask_serving_enabled(config)` as a necessary gate;
|
||||
- consume `ContemplationResult.question_path` / delivered question artifact;
|
||||
- do not construct question prose in serving;
|
||||
- do not serve unrenderable ASK;
|
||||
- preserve `Q1B_ASK_CARVE_OUT`;
|
||||
- preserve proposal signal when gate is disabled;
|
||||
- do not flip `proposal_allowed`;
|
||||
- do not bypass `govern_response` / `shape_surface` if that seam is applicable;
|
||||
- if the current governance seam cannot carry ASK yet, stop and scope the exact missing adapter first.
|
||||
|
||||
Expected test names or equivalents:
|
||||
|
||||
```text
|
||||
test_ask_serving_disabled_preserves_existing_proposal_signal
|
||||
test_ask_serving_enabled_surfaces_question_needed_from_artifact
|
||||
test_unrenderable_ask_never_serves_question_needed
|
||||
test_question_only_not_proposal_only
|
||||
test_served_ask_does_not_construct_question_prose
|
||||
test_served_ask_uses_governance_bus_not_parallel_runtime_path
|
||||
```
|
||||
|
||||
### 5.2 ASK following slice — no-dead-zone proof
|
||||
|
||||
After served ASK exists behind the gate, prove that the carve-out families cannot fall into a no-question/no-proposal dead zone.
|
||||
|
||||
Required proof shape:
|
||||
|
||||
```text
|
||||
for missing_total_count / missing_weighted_total:
|
||||
gate disabled -> proposal signal preserved
|
||||
gate enabled + renderable -> QUESTION_NEEDED served safely
|
||||
gate enabled + unrenderable -> standing fallback, never contentless QUESTION_NEEDED
|
||||
no case yields neither proposal nor valid question
|
||||
```
|
||||
|
||||
### 5.3 ASK later slice — Q1B_ASK_CARVE_OUT retirement
|
||||
|
||||
Only after the no-dead-zone proof passes may a later PR consider:
|
||||
|
||||
```text
|
||||
proposal_allowed=False for missing_total_count / missing_weighted_total
|
||||
remove/retire Q1B_ASK_CARVE_OUT
|
||||
```
|
||||
|
||||
That PR must be explicit, separate, and guarded by tests.
|
||||
|
||||
### 5.4 VERIFIED next code slice — gold-free independent reader
|
||||
|
||||
The next VERIFIED code slice is not served VERIFIED. It is:
|
||||
|
||||
```text
|
||||
Design/prototype a gold-free independent reader/proof source.
|
||||
```
|
||||
|
||||
Requirements:
|
||||
|
||||
- no eval-gold setup in serving;
|
||||
- no gold answer;
|
||||
- no benchmark fixture;
|
||||
- distinct primary/independent reader lineages;
|
||||
- convergent canonical read digests;
|
||||
- strict rejection of same-reader-twice;
|
||||
- strict rejection of second-solver-over-one-read;
|
||||
- off-serving only.
|
||||
|
||||
### 5.5 VERIFIED later slices
|
||||
|
||||
Only after gold-free independence exists:
|
||||
|
||||
```text
|
||||
poison fixture harness
|
||||
holdout-gated verification harness
|
||||
verify.py consumption scoping
|
||||
served [verified] behind verified_serving_enabled
|
||||
```
|
||||
|
||||
## 6. Explicit anti-drift rules
|
||||
|
||||
The following are forbidden unless a future ADR/decision record explicitly reopens them:
|
||||
|
||||
```text
|
||||
no standalone chat/runtime ASK patch that bypasses the bus
|
||||
no served ASK without ask_serving_enabled
|
||||
no served ASK that constructs prose instead of consuming DeliveredQuestion
|
||||
no contentless QUESTION_NEEDED
|
||||
no question artifact under proposal_path
|
||||
no proposal artifact under question_path
|
||||
no Q1B carve-out retirement before no-dead-zone proof
|
||||
no served VERIFIED from eval-gold producer
|
||||
no verify.py VERIFIED consumption before gold-free independent reader + poison/holdout harness
|
||||
no direct EpistemicState.VERIFIED construction outside the contract route
|
||||
no CLAIMS or benchmark movement from off-serving artifacts
|
||||
```
|
||||
|
||||
## 7. Current status checkpoint
|
||||
|
||||
As of the `question_path` cleanup landing, the project is here:
|
||||
|
||||
```text
|
||||
Stage 2 bus doctrine: scoped, not fully active
|
||||
ASK tenant: off-serving foundation complete enough for served-bus scoping
|
||||
VERIFIED tenant: contract/gate foundation complete, serving blocked on gold-free independence
|
||||
Next ASK move: bus-governed served ASK, no carve-out retirement
|
||||
Next VERIFIED move: gold-free independent reader, no served VERIFIED
|
||||
```
|
||||
|
||||
Use this document as the checklist before issuing the next implementation brief.
|
||||
Loading…
Reference in a new issue