inductive-runner · diff
git:20260926.09b7c01 to git:20260927.9cd0307
9 added, 26 removed. Audit A to A.
---
name: inductive-runner
description: >-
Coordinates pre-writing induction across topic convergence,
open-point resolution, and internal audit.
---
# inductive-runner
- Run the G2→G4 control spine for one active Compose slice. Complete when G4 is
- closed, `active_gate=complete`, and the settled facts are ready for Deductive.
- Delivery Eval owns provenance audit of the written document.
+ ## Goal
+ Through the G2→G4 spine, induce intent step by step and converge it into settled facts. Topic dialogue converges the substance. Open questions dispose what is still unresolved and material. The audit requires those facts and Opens to hold together, and sends findings back to be disposed.
+
## Dispatch Inputs
The parent Compose stage supplies:
| Variable | Meaning |
|---|---|
| `$CYCLE_ID` | Active cycle identifier |
| `$SCOPE_REF` | Current slice source |
| `$SOURCE_PATH` | Slice source; equal to `$SCOPE_REF` |
| `$INTENT_BASELINE_REFS` | JSON array of intent references |
| `$NORM_CONSTRAINT_REFS` | JSON array of normative references |
| `$INDUCTIVE_OUT_DIR` | Active slice output directory |
Bind `$PROJECT_ROOT` to the current project root. Parent has already completed
- Fact Intake into this slice.
-
- Read `../../_subagent.md` before any sub-agent dispatch.
+ Fact Intake.
## Script Macros
| Macro | Command |
|---|---|
| `$INDUCTIVE_GATE_CTL` | `python3 "$SKILL_ROOT/compose/scripts/inductive/inductive_gate_control.py" --out-dir "$INDUCTIVE_OUT_DIR" --project-root "$PROJECT_ROOT"` |
Use the control's `--help` as the command and stdout contract.
## Cognition
The stance every gate on this spine acts from.
| Term | Unit |
|---|---|
| induction, Open, land / defer / reject | `../references/cognition/producer/induce.md` |
| settled facts, fact set | `../references/cognition/fact.md` |
- Gates surface unknowns and hand decisions to the human; they never fill an
- unknown themselves.
-
## Control Spine
1. Resolve `$CTX` through `$INDUCTIVE_GATE_CTL resolve-context`.
2. Load only the gate named by `$CTX.active_gate`.
3. After a gate transition, resolve a fresh `$CTX` before routing again.
- 4. Return to the parent only after G4 closes and `$CTX.active_gate` is `complete`.
## Gate Routing
Route only from control stdout or `$CTX`; never route from a state-file path.
| `$CTX.active_gate` | Load |
|---|---|
| `G2` | `gates/g2-topic-loop.md` |
| `G3` | `gates/g3-open-point-loop.md` |
| `G4` | `gates/g4-recompose.md` |
- | `complete` | Return to the parent. Do not load another gate. |
-
- Before executing a gate, read its file. A readable next gate does not authorize
- execution.
-
- ## Permissions and Boundaries
+ | `complete` | Do not load another gate. |
- - The human owns semantic decisions and authorization.
- - The parent Agent owns dialogue, presentation, sub-agent dispatch, and control
- invocation.
- - Sub-agent permissions come only from their owning contract.
- - Each loaded gate owns its local tool routing.
- - Controls own validation, persistence, and mechanical transitions.
- - Never read or write session data directly for routing or mutation.
- - Treat empty intent or norm reference arrays as inactive inputs.
+ - A fresh `$CTX.active_gate` authorizes its entry.
+ - After G3 closes, run `G4` immediately.
+ - Read `../../_subagent.md` before any sub-agent dispatch.
## Handoff
After G4 closes and `$CTX.active_gate` is `complete`, report completion and
- return control to the parent Compose stage. Parent enters Deductive. Delivery
- Eval audits the written document against the intent / parent / norm triangle.
+ return control to the parent Compose stage.