fix(t24): CORRECTION — the Scaffolding orchestration path already exists; MiMo bypasses it
My earlier conclusion in this document was WRONG and is withdrawn here.
I concluded 'one missing seam: no construction-session composition exists, so
one must be built'. Runtime evidence disproves it. ConstructionInterface - the
documented ONE builder boundary - already exposes the full construction-session
API (discover_active_contract, submit_need, inspect_decision, get_scope,
get_obligations, report_observation, verify, transition, close, resume,
amend_scope, capabilities), and submit_need ALREADY composes the structural
machinery:
submit_need -> cd.make_decision(need, authorities=...) [decision, impact,
completeness]
-> cd.generate_contract(...) [contract]
-> self.scaffold.commit(doc, 'submit_need')
The structural half lives in construction_decision (resolve_affected_surface,
check_completeness, obligations_from_trace, layout_obligations_for,
research_route). My earlier audit searched for an iteration.py importer and
concluded impact was unreachable; iteration.py is the behaviour-ledger/retest
side, and the decision-side machinery IS composed, by construction_interface.
THE REAL DEFECT: construction_activation.mint_bounded_contract calls
scaffold.new_contract DIRECTLY, so the MiMo path creates contracts WITHOUT a
decision trace, WITHOUT affected-surface resolution and WITHOUT auto-derived
obligations. The MiMo seam goes AROUND the existing orchestration path. That is
BYPASSED / DUPLICATE_AUTHORITY, not a missing lifecycle.
MINIMAL INTEGRATION DELTA (an adapter, not a new layer):
1. activate_from_text -> ConstructionInterface.submit_need instead of
scaffold.new_contract via mint_bounded_contract;
2. post-mutation seam -> report_observation so observed impact is canonical;
3. completion -> route through the interface's close/verify rather than the
parallel request_completion.
No new lifecycle wrapper, no new ledgers, no parallel Spine. The T23
enforcement edge stays at the tool boundary.
This vindicates the original T23 mission (complete the integration between
already-built Scaffolding V1 and MiMoCode) and confirms the recent direction
was drifting toward a redesign that is not needed.
This commit is contained in:
1 parent
9c5b74988b
commit
a66dc44415
1 file changed
+99
@@ -166,3 +166,102 @@ Sections I, J, K, L, Q, R, S, T, U, V and the §9 structural-backbone
|
||||
experiment were **not** executed. They need the repair first — running them now
|
||||
would measure a lifecycle that does not yet exist. Recorded as not-done rather
|
||||
than inferred.
|
||||
|
||||
---
|
||||
|
||||
# CORRECTION — the orchestration path already exists
|
||||
|
||||
**My earlier conclusion in this document was WRONG and is withdrawn.**
|
||||
|
||||
§X/Y concluded "one missing seam: no construction-session composition exists,
|
||||
so one must be built." Runtime evidence disproves that. An orchestration path
|
||||
**already exists** and was always the canonical one.
|
||||
|
||||
## The existing Rune-native orchestration path
|
||||
|
||||
`ConstructionInterface` — the documented ONE builder boundary — exposes a
|
||||
complete construction-session API:
|
||||
|
||||
```
|
||||
discover_active_contract · submit_need · inspect_decision · get_scope
|
||||
get_obligations · report_observation · verify · transition · close
|
||||
resume · amend_scope · capabilities
|
||||
```
|
||||
|
||||
and `submit_need` **already composes the structural machinery**:
|
||||
|
||||
```
|
||||
submit_need
|
||||
→ cd.make_decision(need, authorities=…) ← decision, affected-surface
|
||||
resolution, completeness
|
||||
→ cd.generate_contract(…) ← contract generation
|
||||
→ self.scaffold.commit(doc, what="submit_need")
|
||||
```
|
||||
|
||||
`construction_decision` is where the structural half actually lives —
|
||||
`resolve_affected_surface` (predictive impact), `check_completeness`,
|
||||
`obligations_from_trace` (post-change obligations), `layout_obligations_for`,
|
||||
`research_route`. My earlier audit searched for an `iteration.py` importer and
|
||||
concluded the impact machinery was unreachable. `iteration.py` is the
|
||||
behaviour-ledger/retest side; the **decision-side impact machinery is
|
||||
`construction_decision`, and it is composed** — by `construction_interface`,
|
||||
which imports it.
|
||||
|
||||
## The real defect: MiMo BYPASSES the orchestration path
|
||||
|
||||
| Stage | Rune-native owner | How invoked | MiMo today | Class |
|
||||
|---|---|---|---|---|
|
||||
| intent | `construction_intent` | TUI/operator/hook | hook | ALREADY_CONNECTED |
|
||||
| mode | `construction_mode.classify_mode` | same | same | ALREADY_CONNECTED |
|
||||
| **decision + impact + completeness** | **`construction_decision.make_decision`** | **`ConstructionInterface.submit_need`** | **not invoked** | **BYPASSED** |
|
||||
| **contract generation** | **`cd.generate_contract`** | **`submit_need`** | **`scaffold.new_contract` called directly by `mint_bounded_contract`** | **BYPASSED / DUPLICATE** |
|
||||
| **auto-derived obligations** | **`cd.obligations_from_trace`** | **`submit_need` / patterns** | **none** | **BYPASSED** |
|
||||
| scope | `Scaffold.check_scope` | interface + guard | guard | ALREADY_CONNECTED |
|
||||
| observed impact | `report_observation` | interface | not invoked | MISSING_ADAPTER |
|
||||
| verification | interface `verify` | interface | not invoked | MISSING_ADAPTER |
|
||||
| completion | interface `close` + governed gate | interface | `request_completion` (separate) | DUPLICATE path |
|
||||
| amendment | interface `amend_scope` | interface | revision/supersede via resume only | MISSING_ADAPTER |
|
||||
| resume/continuation | `discover_active_contract` / `resume` | interface | `activate_from_text` resume | ALREADY_CONNECTED |
|
||||
| contextual Spine | `_auto_structural_awareness` | activation (PROJECT_BUILD) | same | ALREADY_CONNECTED |
|
||||
|
||||
**Diagnosis corrected:** `construction_activation.mint_bounded_contract`
|
||||
constructs contracts with `scaffold.new_contract` **directly**, so the MiMo
|
||||
path creates a contract *without* a decision trace, *without* affected-surface
|
||||
resolution, and *without* auto-derived obligations. That is not a missing
|
||||
lifecycle — it is the MiMo seam **going around** the existing one.
|
||||
|
||||
## Minimal integration delta (the adapter, not a new layer)
|
||||
|
||||
Target, as the mandate specifies:
|
||||
|
||||
```
|
||||
MiMo intent/tools
|
||||
→ thin MiMo↔Rune adapter
|
||||
→ EXISTING ConstructionInterface (submit_need / report_observation /
|
||||
verify / close / amend_scope / resume)
|
||||
→ existing decision / impact / obligations / contract / Scaffold machinery
|
||||
+ MiMo mutation enforcement retained at the tool boundary
|
||||
```
|
||||
|
||||
Concretely, three small changes:
|
||||
|
||||
1. `activate_from_text` → call `ConstructionInterface.submit_need` (which
|
||||
already does decision → contract → commit) instead of `scaffold.new_contract`
|
||||
via `mint_bounded_contract`. Keeps resume-by-idempotent-mint behaviour.
|
||||
2. MiMo's post-mutation seam → call `report_observation` so observed impact is
|
||||
the canonical observed set, not a private one.
|
||||
3. Completion → route through the interface's `close`/verify rather than the
|
||||
parallel `request_completion`, or make `request_completion` delegate to it.
|
||||
|
||||
**No new lifecycle wrapper. No new ledgers. No parallel Spine.** The enforcement
|
||||
edge built and qualified in T23 stays exactly where it is, at the tool boundary.
|
||||
|
||||
## Consequence for the verdict
|
||||
|
||||
`FULL_SCAFFOLDING_HARNESS_PARTIAL` stands, but for the corrected reason: the
|
||||
lifecycle exists and composes; **MiMo is not connected to it**. The verdict
|
||||
would become PROVEN by wiring the adapter, not by building a layer.
|
||||
|
||||
This also vindicates the original T23 mission — *complete the integration
|
||||
between already-built Scaffolding V1 and MiMoCode* — and confirms that the
|
||||
recent direction of travel was drifting toward a redesign that is not needed.
|
||||
Reference in new issue
Block a user