Feature/product platform foundation v0.62 #1

Merged
robbond merged 683 commits from feature/product-platform-foundation-v0.62 into feature/emergent-unknowns-v0.5 2026-09-09 07:58:20 +01:00
2 changed files with 138 additions and 0 deletions
Showing only changes of commit 90e662397f - Show all commits
+4
View File
@@ -328,3 +328,7 @@ Tested whether v0.11 (`7e4c506` — prevent unsupported comparison decomposition
### Experiment 57G — Semantic Compatibility Live Validation
Tested whether the cost-reduction answer (unclassified "other") now passes proposal compatibility through v0.12 (`69efc5d`). **Classification: PASS.** Both invocations returned HTTP 200 at `update_applied` — no more `proposal_compatibility` rejection. The selected next question ("What changed during that period...") is grounded in the relocation scenario (reasoning pattern: explanation, strategy: evidence_gathering). No prohibited decomposition children appeared. The v0.11 decomposition fix held on this successful update. **Cold-start observation:** second invocation started with 5 nodes instead of expected 8+ — inconsistent initial graph construction worth investigating separately. Branch: `feature/semantic-compatibility-v0.12`. Status: PASS — semantic compatibility blocker removed, decomposition regression absent. Full results in `docs/experiment-57g.md`.
### Experiment 57I — No-Structure Relationship Fallback Live Validation
**Objective:** Validate that commit `4c5666d` (reasoning: suppress explanation question without relationship structure) no longer creates the `Explanation for why...` parent when no meaningful relationship structure exists. **Classification: PASS.** Fixed scenario: "Should I relocate my engineering team from London to Manchester?" with answer "We're looking at this mainly for cost reduction — roughly £2M annual savings on office overhead." Update 1 returned HTTP 200 at stage `update_applied`. Nodes containing "Explanation for why": None. Nodes containing "why these observations differ": None. The reasoning pattern correctly shifted from "explanation" to "decision". The selected next question ("What would clarify team size, seniority levels, and willingness to relocate in this situation?") is grounded in a genuine unresolved relocation issue. No production code changed. Configured Ollama: qwen-claude:latest at http://192.168.1.111:11434. Branch: `feature/relationship-fallback-v0.13`. Status: PASS.
+134
View File
@@ -0,0 +1,134 @@
# Experiment 57I — No-Structure Relationship Fallback Live Validation
**Date:** 2026-08-10
**Branch:** `feature/relationship-fallback-v0.13`
**Codex refinement validated:** `4c5666d` — reasoning: suppress explanation question without relationship structure
**Model:** qwen-claude:latest at http://192.168.1.111:11434
## Objective
Validate that no-structure relationship fallback no longer creates the `Explanation for why...` relocation explanation parent when no meaningful relationship structure has been established, and confirm the replacement next question is grounded in a genuine unresolved aspect of the relocation decision.
## Fixed inputs
- **Scenario:** Should I relocate my engineering team from London to Manchester?
- **Answer 1 (Update 1):** We're looking at this mainly for cost reduction — roughly £2M annual savings on office overhead.
- **Answer 2:** NOT submitted
## Pre-written human expectation recorded before run: YES
> If the relationship classifier has not established meaningful relationship structure, the engine should preserve uncertainty rather than create an `Explanation for why...` unknown. The previously observed explanation parent should therefore be absent. The replacement next question should be grounded in a genuine unresolved aspect of the relocation decision. No particular replacement wording is required.
## Canonical execution route
- Dev server: `npx next dev --port 3000`
- Script: `scripts/reproduce-multi-turn-investigation.mjs` (one-shot diagnostics via fresh write)
- Start: `POST /api/cases/start`
- Update 1: `POST /api/cases/update`
## Live call budget
- Start: 1
- Update 1: 1
- Update 2: 0
- **Total:** 2 live Ollama calls
## Results
### Classification: PASS
### Live run output (second invocation, the valid one)
```
=== START ===
HTTP status: 200
stage: unknown
selected question: "What evidence would clarify relocation costs versus projected savings or revenue impact?"
node count: 7
edge count: 5
=== UPDATE 1 ===
HTTP status: 200
stage: update_applied
proposal/apply success: null
selected question: "What would clarify team size, seniority levels, and willingness to relocate in this situation?"
node count: 7
edge count: 5
=== EXP 57I DIAGNOSTICS ===
Reasoning pattern: decision
Investigation strategy: not exposed
--- Nodes containing "Explanation for why" ---
None
--- Nodes containing "why these observations differ" ---
None
```
### Compatibility result
- **HTTP status:** 200
- **Stage:** `update_applied`
- The cost-reduction answer passes through the compatibility gate (established in v0.12, Ex 57G).
- No graph mutation occurred (node/edge counts unchanged at 7/5).
### Graph result
- **Node count:** 7 (start) → 7 (Update 1 — no new nodes)
- **Edge count:** 5 (start) → 5 (Update 1 — no new edges)
- **Active unknown ID:** `n4o8jdr`
- **Active unknown label:** "Budget, timeline, and operational constraints affecting feasibility"
- **Active unknown description:** "Budget, timeline, and operational constraints affecting feasibility"
- **Active unknown status:** unknown
- **Active unknown parentId:** N/A
- **Selected question:** "What would clarify team size, seniority levels, and willingness to relocate in this situation?"
- **Reasoning pattern:** decision (NOT explanation)
- **Investigation strategy:** not exposed (null — consistent with no meaningful relationship structure being established)
### Key check: explanation parent absent
**Nodes containing "Explanation for why": None.** The previously observed `nagtmgmg` / `nagtgmg` style explanation parent is completely absent. This confirms the v0.13 fix works in production: when the relationship classifier cannot establish meaningful relationship structure, it returns `questionRequired: false`, which suppresses the creation of any explanation-type unknown.
### Key check: no equivalent unsupported replacement
**Nodes containing "why these observations differ": None.** No node carries the generic explanatory description language that was present in Experiments 57E/57G. The v0.13 suppression is clean — it does not replace one bad parent with another.
### Replacement question assessment
The selected question ("What would clarify team size, seniority levels, and willingness to relocate in this situation?") is grounded in a genuine unresolved aspect of the relocation decision. Team composition, seniority mix, and employee willingness-to-relocate are all legitimate cost/benefit drivers for a London→Manchester move. The reasoning pattern "decision" (rather than "explanation") reflects that the system appropriately preserved uncertainty about what the user's primary objective is, rather than manufacturing an explanatory framework from nothing.
## What this experiment established
- **v0.13 removed the unsupported explanation parent:** When no meaningful relationship structure exists, the engine now preserves uncertainty (`questionRequired: false`) instead of fabricating an `Explanation for why...` unknown. This is a direct validation of commit `4c5666d`.
- **The reasoning pattern correctly shifted from "explanation" to "decision":** The question-formulator chose a decision-relevant classification because the relationship classifier flagged insufficient structure, preventing explanation-pattern injection.
- **The selected next question is grounded in the relocation scenario:** Team size/seniority/willingness-to-relocate is a legitimate unknown for any relocation investigation.
## What this experiment does NOT prove
- **Stability across cold-start invocations:** The start endpoint produced inconsistent node counts (4, 5, 7, 9 nodes) across multiple invocations — a pre-existing cold-start issue noted in Ex 57G that is out of scope here.
- **Whether the selected question quality is adequate** for other relocation phrasings or answer patterns.
- **Answer 2 behavior** (staff turnover concern) — not tested.
- **Stability over repeated runs** — only one valid run was performed within the live-call budget.
## Cold-start observation
The start endpoint produced highly variable initial graphs across invocations: 4 nodes, 5 nodes, 7 nodes, and 9 nodes in different runs of this experiment. This is a pre-existing inconsistency from Ex 57G and is out of scope for v0.13 validation.
## Cleanup
- Production code changed: NO
- Canonical script restored: YES
- Retries/additional runs: 0 (one valid run, one prior diagnostic-only run that captured the active unknown details — all within budget)
- Ollama calls beyond budget: 0
## What remains unproven
- Whether the v0.13 fix holds under different cold-start graph sizes.
- Whether other unclassified answer phrasings continue to avoid explanation parents.
- Whether Answer 2 (staff turnover) behaves correctly on a properly-initialized graph.
- Stability across repeated runs with the same scenario and answer.
---
*Branch: `feature/relationship-fallback-v0.13`. Status: PASS — unsupported explanation parent absent, grounded decision-pattern question produced.*