experiment: test initial graph edge coherence (Exp 50)
Passive diagnostic. Coherent and scattered inputs produce identical edge topology — every unknown connects to the summary node (kind=state) via depends_on regardless of semantics. Shared edges are wiring, not coherence evidence.
This commit is contained in:
@@ -3274,3 +3274,91 @@ The production flow creates at most one emergent reasoning unknown per update, v
|
||||
### Pending Rob's review. No production code or graph schema modified.
|
||||
|
||||
**Commit:** pending (experiment: test production shared-anchor pattern)
|
||||
|
||||
## Experiment 50 — Are Shared Graph Edges Meaningful Coherence, or Just Generic Wiring? (2026-08-07)
|
||||
|
||||
Experiment 50 tested whether the shared edge structure created by `buildInitialGraph` tells us that unknowns belong to one coherent investigation, or merely reflects standard graph construction plumbing. This was a passive diagnostic — no production code changed.
|
||||
|
||||
### Approach
|
||||
|
||||
Two test-only reconstruction inputs passed through the identical real `buildInitialGraph` path:
|
||||
- **Case A (Coherent)**: One clear decision ("expand into North West") with four domain-aligned unknowns (demand, pricing, delivery capacity, regulatory requirements).
|
||||
- **Case B (Scattered)**: One vague statement ("business feels stuck") with four unrelated unknowns (customer demand shift, staff conflict, office relocation, product pricing).
|
||||
|
||||
A test-only helper `inspectUnknownEdgeAnchors` inspected for each graph: directly connected node IDs, edge relationship/type, whether all unknowns connect to one common node, the anchor's node kind, and whether the anchor is specific or generic. Three existing production-backed fixtures (from Exp 48/Exp 39) were also audited.
|
||||
|
||||
### Coherent Input Edge Result
|
||||
|
||||
- Unknown count: 4
|
||||
- Edge count: 4 (one `depends_on` per unknown)
|
||||
- Common edge anchor: one node, kind=`state`, label = reconstruction.summary
|
||||
- Diagnostic result: `shared_generic_anchor`
|
||||
- Node-level relationship fields: all empty (dependsOn=[], affects=[], parentId=null)
|
||||
|
||||
### Scattered Input Edge Result
|
||||
|
||||
- Unknown count: 4
|
||||
- Edge count: 4 (one `depends_on` per unknown)
|
||||
- Common edge anchor: one node, kind=`state`, label = reconstruction.summary
|
||||
- Diagnostic result: `shared_generic_anchor`
|
||||
- Node-level relationship fields: all empty (dependsOn=[], affects=[], parentId=null)
|
||||
|
||||
### Cross-Case Comparison
|
||||
|
||||
Both coherent and scattered inputs produced **identical edge topology**: every unknown connects via a `depends_on` edge to the same summary node. The anchor is always kind=`state`. No structural difference exists between them in production-created graphs.
|
||||
|
||||
### Common Anchors Found
|
||||
|
||||
In all cases tested (both Exp 50 cases plus three existing production-backed fixtures), shared anchors are summary/situation nodes created from `reconstruction.summary`. Kind is always `state`. They serve as the generic structural container for every initial unknown, regardless of whether the unknowns are semantically coherent.
|
||||
|
||||
### Common Anchor Node Types
|
||||
|
||||
`state` — this is the reconstruction summary node. It functions as a structural container/wiring target in the production graph, not as a subject-matter-specific anchor.
|
||||
|
||||
### Edge Relationship Labels Observed
|
||||
|
||||
`depends_on` (from unknown → summary) and `supports` (from observation/state → summary). Neither label carries semantic coherence information.
|
||||
|
||||
### Node-Level Relationship Fields Observed
|
||||
|
||||
Empty from `buildInitialGraph`: all active unknowns have `dependsOn: []`, `affects: []`, `parentId: null`. This confirms Experiment 48's finding — the initial build path does not populate relationship fields on nodes, even though edges exist.
|
||||
|
||||
### Did Coherent and Scattered Cases Differ Structurally
|
||||
|
||||
No. Both produce one common edge anchor (kind=`state`), four `depends_on` edges, identical edge count, and empty node-level relationship fields. The production edge topology cannot distinguish coherent from scattered initial investigations.
|
||||
|
||||
### Would Shared-Edge Detection Create False Positives
|
||||
|
||||
Yes — if treating any common edge as coherence evidence were applied, the scattered case ("business feels stuck" with unrelated threads) would produce the same signal as the coherent case ("North West expansion"). This is a false positive for coherence.
|
||||
|
||||
### Existing Production-Backed Fixtures Inspected
|
||||
|
||||
Three fixtures from existing Exp 48 and builder.test.js tests containing multiple unknowns:
|
||||
1. builder.test.js standard two-unknown scenario (revenue/complaints)
|
||||
2. Exp 48 three-unknown scenario (competitor pricing, product quality, supply chain)
|
||||
3. Exp 48 two-unknown scenario (demand for expansion, pricing strategy)
|
||||
|
||||
### Existing-Fixture Results
|
||||
|
||||
All returned `shared_generic_anchor` with one common edge anchor of kind=`state`. Node-level fields were empty in all cases. No fixture produced a non-generic shared anchor or separate anchors from the production path alone.
|
||||
|
||||
### Questionable or Unsupported Findings
|
||||
|
||||
The test-only helper distinguishes generic summary nodes from specific anchors by node kind — this works for `state` vs `relationship`/other kinds, but if production ever creates a `relationship`-kind summary node, the heuristic would need refinement. No such case exists in current production.
|
||||
|
||||
### Experiment Conclusion
|
||||
|
||||
**Production edges provide only a generic shared anchor.** Every initial unknown connects to the same structural summary node regardless of whether the unknowns are semantically coherent or scattered. Shared edge connectivity is wiring, not evidence of coherence. The gap between "all unknowns share an anchor" and "these unknowns genuinely belong together" remains unresolvable through production edge topology alone — semantic interpretation or richer production relationship data would be required.
|
||||
|
||||
### Test Results Summary
|
||||
|
||||
| Test File | Tests | Passed |
|
||||
|---|---|---|
|
||||
| `initial-edge-coherence.test.js` (Exp 50) | 26 | 26 |
|
||||
| `shared-anchor-production-path.test.js` (Exp 49) | 36 | 36 |
|
||||
| `unknown-relationship-population.test.js` (Exp 48) | 16 | 16 |
|
||||
| `builder.test.js` (focused regression) | 32 | 32 |
|
||||
|
||||
### Pending Rob's review. No production code or graph schema modified.
|
||||
|
||||
**Commit:** pending (experiment: test initial graph edge coherence)
|
||||
|
||||
Reference in New Issue
Block a user