Extracted abstract or opening context
# Intelligent Pane Orchestrator -- Stage 0: Research **Run:** intelligent-pane-orchestrator **Generated:** 2026-04-04 **Method:** Evolution Cube -- four-stage recursive evoflow (research-grounded) **Run Directory:** Desktop/evo-cube-output/intelligent-pane-orchestrator/ **Lineage:** Succeeds intelligent-orchestration-v2 (2026-03-08). V2 built the 2-layer hook+daemon architecture and 7 patches. This evolution focuses on making the orchestrator *predictive* and *self-healing* rather than reactive.
| File | Lines | Purpose | |------|-------|---------| | `pane_orchestrator_core.py` | ~945 | Config, state, notifications (Telegram/iMessage), Cortex authority check, ProjectContextCache, run_cycle, run_daemon, main loop | | `pane_orchestrator_invariants.py` | ~234 | State change detection, plateau detection, review gates, evolution candidacy, context exhaustion signals | | `pane_orchestrator_drift.py` | ~689 | Output evaluation, Gemini Flash prompt composition, 5-pattern fallback (question/steps/recommendation/completion/generic), injection memory | | `pane_orchestrator_sense.py` | ~927 | Context readers (CLAUDE.md, GSD, Pulse, Evolution, git, vault notes), deep context builder, 14 project-specific prompt templates, compose_prompt_for_pane | | `pane_orchestrator_loop.py` | ~100 | Thin facade re-exporting all modules + CLI (daemon/once/status/self-inject/notify) |
1. **SENSE**: AppleScript pane discovery + `/tmp/pane_signals/` + `/tmp/pane_context/` + terminal content analysis (last 500 chars for shell prompts, Claude exit messages) 2. **SELECT**: Longest-idle pane + highest-priority pending backlog task 3. **MUTATE**: Inject via clipboard paste (pbcopy + keystroke "v" with command down) 4. **CHECK**: Bounded divergence invariant (max M injections per window) 5. **ADAPT**: Metabolism-based interval: `new_interval = MIN(30) + (MAX(300) - MIN(30)) * (working/total)`
1. **Min Entropy Production**: KL divergence with Laplace smoothing. Every cycle must produce novelty > epsilon. 2. **Bounded Divergence**: Injection rate capped per window. `MAX_INJECTIONS_PER_CYCLE = 2`. 3. **Cross-Layer Forcing**: If all panes idle for N cycles, escalate (force action). 4. **No Absorbing States**: Every state must have 2+ viable transitions.
| Signal | Threshold | Action | |--------|-----------|--------| | Idle | > 15 min no activity | Evaluate + compose + inject | | Stuck | > 30 min no activity | Evaluate + inject + notify (iMessage) | | Plateau | Same output hash for 6 cycles | Force approach pivot | | Review gate | 5+ commits, 0 with "review" | Inject /meta-review | | Evolution candidate | 30+ min stuck + no output change in 3 cycles | Pivot or skip task | | Context exhaustion | 4+ hours runtime | Handoff + fresh session |
Why this is not always a full paper yet
Corpus pages are public-safe readers for discovered workspace artifacts. They are not automatically final papers. A corpus item becomes a polished paper only after the editable source, evidence checkpoints, references, figures, render path, and release status are attached through the paper schema.