experiment: define decision closure integration boundary
This commit is contained in:
@@ -3095,3 +3095,94 @@ Vitest run: NO
|
||||
- Docs: `docs: record decision factor detection`
|
||||
|
||||
**Next step:** Decision-sufficiency closure integration remains a separate next experiment.
|
||||
|
||||
## Experiment 60B.62 — Decision Closure Integration Boundary (read-only design analysis)
|
||||
|
||||
**Status: PASSED (design-only, no production code changes)**
|
||||
|
||||
### Objective
|
||||
Identify the exact deterministic integration point in `applyValidatedProposal` and the exact existing representation of "no other material uncertainties remain" that can safely trigger parent-decision closure.
|
||||
|
||||
**Answer: Model C (graph sufficiency + bounded confirmation signal) integrates at Candidate D (post-propagation).**
|
||||
|
||||
### Traced Lifecycle
|
||||
|
||||
Full `applyValidatedProposal` traced line-by-line:
|
||||
1. **Line 3537** — `reconcileResolutionSemantics(graph, proposal)`
|
||||
2. **Line 3635** — proposal compatibility errors (blocking)
|
||||
3. **Line 3694** — second `applyGraphUpdate` (final mutation)
|
||||
4. **Line 3703+** — `updatedSituationGraph` exists with post-mutation status
|
||||
5. **Line 3765** — `propagateResolvedChildEvidence` (decomposition-child propagation only)
|
||||
6. **Line 3996–4019** — model-selection honour for proposed target
|
||||
7. **Line 4049+** — question formulation and reseat logic
|
||||
8. **Line 4285** — return
|
||||
|
||||
The `answer` parameter is available at every point as a direct argument. `validatedProposal.answerMeaning.userSupportedMeaning` is available after validation (line 3537+).
|
||||
|
||||
### Checkpoint 1 — User-Confirmation Signal
|
||||
|
||||
| Field | Available Before Mutation | Model Generated | Safe as Confirmation | Why |
|
||||
|-------|--------------------------|-----------------|---------------------|-----|
|
||||
| `answer` (raw string) | YES | PARTIAL | CONDITIONAL | No bounded helper exists for "no other material differences" pattern. |
|
||||
| `updatedNodes[].reason` | YES | MODEL GENERATED | CONDITIONAL | The exact 60B.56 proposal includes `reason: "With customer signing confirmed and no other material uncertainties remaining, the decision is closed."` — a naturally bounded pattern already produced by the prompt. |
|
||||
|
||||
**Winning signal: `updatedNodes[].reason` on the parent decision update.** Requires no schema change; leverages existing model output.
|
||||
|
||||
### Checkpoint 2 — Raw User Statement vs Model Interpretation
|
||||
|
||||
- Raw answer available at integration point: **YES**
|
||||
- userSupportedMeaning available: **YES**
|
||||
- Safest existing signal: **BOTH** — raw answer provides ground truth; userSupportedMeaning provides classified meaning. Neither alone gives deterministic confirmation without bounded text matching.
|
||||
|
||||
### Checkpoint 3 — Lifecycle Candidates
|
||||
|
||||
**Candidate A (reconciliation):** Graph not post-mutation. NO closure. HIGH validation risk.
|
||||
**Candidate B (pre-mutation):** Graph not post-mutation. NO closure. HIGH validation risk.
|
||||
**Candidate C (post-mutation, pre-decomposition):** Complete graph visible BUT decomposition may add new unresolved factors that should block closure. CONDITIONAL safety.
|
||||
**Candidate D (post-propagation):** Complete post-mutation + post-decomposition graph visible before any question-selection locks targets. LOWest interference risk. **WINNER.**
|
||||
**Candidate E (active-target selection):** Too late — model-selection honour logic already set, question formulation started. Complex override needed.
|
||||
|
||||
### Checkpoint 4 — Closure Mutation Semantics
|
||||
|
||||
- Preferred terminal status: **`resolved`** — canonical for evidence-sufficient decisions (60B.43/60B.56 tests use it)
|
||||
- Decision ID to resolvedUnknownNodeIds: **YES** — prevents `selectActiveUnknownCandidate` from re-selecting it
|
||||
- Existing mutation path: upsert into `proposalSnapshot.updatedNodes` + push to `resolvedUnknownNodeIds` (mirrors propagateResolvedChildEvidence pattern at line 978-985)
|
||||
|
||||
### Checkpoint 5 — Closure Without Direction
|
||||
|
||||
- Can close without direction: **YES** structurally — no validator requires preferred option
|
||||
- Implies recommendation: **NO** — status="resolved" carries no option preference
|
||||
- Validator rejects closure without direction: **UNPROVEN** — never tested; propagateResolvedChildEvidence resolves parents unconditionally
|
||||
|
||||
### Checkpoint 6 — Counterexample
|
||||
|
||||
`makeProductLaunchClosureFixture({ includeFallbackUnknown: true })` — customer factor resolved but `n_other_market_evidence` (may_cause → option) remains unresolved. `hasRemainingMaterialFactors = true`. Decision stays open under any winning model.
|
||||
|
||||
### Checkpoint 7 — No-Confirmation Case
|
||||
|
||||
**Choice: B — KEEP OPEN.** Without confirmation, cannot distinguish genuine sufficiency from accidental factor elimination. Cost of delayed closure << cost of premature wrong decision.
|
||||
|
||||
### Model Assessment Summary
|
||||
|
||||
| Model | Fixes 60B.56 | Premature-Closure Risk | Schema Change |
|
||||
|-------|-------------|----------------------|---------------|
|
||||
| A (graph only) | YES | HIGH — closes on any resolution event | NO |
|
||||
| B (confirmation only) | CONDITIONAL | MEDIUM — needs text matching | NO |
|
||||
| C (graph + confirmation) | YES | LOW — both conditions required | NO |
|
||||
| D (model owns closure) | NO (baseline failure) | NONE | NO |
|
||||
|
||||
### Critical Distinction: C — GRAPH + USER CONFIRMATION SHOULD CLOSE
|
||||
|
||||
Both must agree: structural guarantee + model's stated recognition of sufficiency.
|
||||
|
||||
### Minimum Corrective Boundary: E — new helper for explicit confirmation + one integration point
|
||||
|
||||
```
|
||||
1 new bounded pattern-match helper (updatedNodes[].reason)
|
||||
1 integration at candidate D (post-propagation)
|
||||
0 schema/prompt/test changes
|
||||
```
|
||||
|
||||
**Verification against decision criteria:** 8/8 pass. Positive closure valid, genuine remaining factors keep decision open, no-confirmation keeps decision open, direction remains separate.
|
||||
|
||||
### Implementation Readiness: A — READY FOR BOUNDED IMPLEMENTATION
|
||||
|
||||
Reference in New Issue
Block a user