@openrig/cli 0.5.2 → 0.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/daemon/assets/plugins/openrig-core/hooks/claude.json +36 -0
- package/daemon/assets/plugins/openrig-core/hooks/codex.json +27 -0
- package/daemon/assets/plugins/openrig-core/hooks/scripts/refocus.cjs +132 -0
- package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/SKILL.md +35 -3
- package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/scripts/precompact-hook.mjs +8 -95
- package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/scripts/restore-from-jsonl.mjs +63 -20
- package/daemon/assets/plugins/openrig-core/skills/forming-an-openrig-mental-model/SKILL.md +6 -2
- package/daemon/assets/plugins/openrig-core/skills/messaging-the-human/SKILL.md +28 -2
- package/daemon/assets/plugins/openrig-core/skills/mission-slice-sop/SKILL.md +42 -52
- package/daemon/assets/plugins/openrig-core/skills/openrig-skills/SKILL.md +23 -1
- package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +7 -2
- package/daemon/assets/plugins/openrig-core/skills/orienting-to-an-inherited-seat/CHANGELOG.md +64 -0
- package/daemon/assets/plugins/openrig-core/skills/orienting-to-an-inherited-seat/SKILL.md +235 -0
- package/daemon/assets/plugins/openrig-core/skills/queue-handoff/SKILL.md +31 -1
- package/daemon/assets/plugins/openrig-core/skills/retiring-and-inheriting-a-seat/CHANGELOG.md +48 -0
- package/daemon/assets/plugins/openrig-core/skills/retiring-and-inheriting-a-seat/SKILL.md +211 -0
- package/daemon/assets/plugins/openrig-core/skills/seat-continuity-and-handover/SKILL.md +8 -0
- package/daemon/assets/plugins/openrig-core/skills/software-for-agents/SKILL.md +28 -1
- package/daemon/context-packs/skills/core/agent-starters/SKILL.md +132 -0
- package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/SKILL.md +112 -0
- package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/attention-queue/SKILL.md +264 -0
- package/daemon/context-packs/skills/core/attention-queue/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/cross-host-rig-commands/SKILL.md +195 -0
- package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/human-in-the-loop/SKILL.md +104 -0
- package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/openrig-architect/SKILL.md +378 -0
- package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/openrig-cmux/SKILL.md +81 -0
- package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/openrig-herdr/SKILL.md +153 -0
- package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/openrig-upgrade/SKILL.md +460 -0
- package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/SKILL.md +101 -0
- package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/rig-lifecycle/SKILL.md +127 -0
- package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/session-source-fork/SKILL.md +160 -0
- package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/specification-system/SKILL.md +103 -0
- package/daemon/context-packs/skills/core/specification-system/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/SKILL.md +118 -0
- package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/watchdog/SKILL.md +126 -0
- package/daemon/context-packs/skills/core/watchdog/manifest.yaml +9 -0
- package/daemon/context-packs/skills/pm/backlog-capture/SKILL.md +43 -0
- package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +9 -0
- package/daemon/context-packs/skills/pm/context-builder/SKILL.md +87 -0
- package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +9 -0
- package/daemon/context-packs/skills/pm/exec-summary/SKILL.md +84 -0
- package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +9 -0
- package/daemon/context-packs/skills/pm/office-hours/SKILL.md +129 -0
- package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +9 -0
- package/daemon/context-packs/skills/pm/plan-review/SKILL.md +98 -0
- package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +9 -0
- package/daemon/context-packs/skills/pm/requirements-writer/SKILL.md +113 -0
- package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +9 -0
- package/daemon/context-packs/skills/pm/ui-mockup/SKILL.md +76 -0
- package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +9 -0
- package/daemon/context-packs/skills/pods/development-team/SKILL.md +156 -0
- package/daemon/context-packs/skills/pods/development-team/manifest.yaml +9 -0
- package/daemon/context-packs/skills/pods/orchestration-team/SKILL.md +307 -0
- package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +9 -0
- package/daemon/context-packs/skills/pods/oversight-team/SKILL.md +106 -0
- package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +9 -0
- package/daemon/context-packs/skills/pods/review-team/SKILL.md +213 -0
- package/daemon/context-packs/skills/pods/review-team/manifest.yaml +9 -0
- package/daemon/context-packs/skills/process/agent-browser/LOCAL-INSIGHTS.md +189 -0
- package/daemon/context-packs/skills/process/agent-browser/OPENRIG.md +40 -0
- package/daemon/context-packs/skills/process/agent-browser/SKILL.md +427 -0
- package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +13 -0
- package/daemon/context-packs/skills/process/brainstorming/OPENRIG.md +48 -0
- package/daemon/context-packs/skills/process/brainstorming/SKILL.md +107 -0
- package/daemon/context-packs/skills/process/brainstorming/manifest.yaml +11 -0
- package/daemon/context-packs/skills/process/context-engineering/SKILL.md +479 -0
- package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +9 -0
- package/daemon/context-packs/skills/process/dogfood/SKILL.md +225 -0
- package/daemon/context-packs/skills/process/dogfood/manifest.yaml +13 -0
- package/daemon/context-packs/skills/process/dogfood/references/issue-taxonomy.md +109 -0
- package/daemon/context-packs/skills/process/dogfood/templates/dogfood-report-template.md +53 -0
- package/daemon/context-packs/skills/process/executing-plans/OPENRIG.md +56 -0
- package/daemon/context-packs/skills/process/executing-plans/SKILL.md +94 -0
- package/daemon/context-packs/skills/process/executing-plans/manifest.yaml +11 -0
- package/daemon/context-packs/skills/process/frontend-design/LICENSE.txt +177 -0
- package/daemon/context-packs/skills/process/frontend-design/SKILL.md +50 -0
- package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +11 -0
- package/daemon/context-packs/skills/process/systematic-debugging/SKILL.md +301 -0
- package/daemon/context-packs/skills/process/systematic-debugging/condition-based-waiting-example.ts +158 -0
- package/daemon/context-packs/skills/process/systematic-debugging/condition-based-waiting.md +115 -0
- package/daemon/context-packs/skills/process/systematic-debugging/defense-in-depth.md +122 -0
- package/daemon/context-packs/skills/process/systematic-debugging/find-polluter.sh +63 -0
- package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +19 -0
- package/daemon/context-packs/skills/process/systematic-debugging/root-cause-tracing.md +169 -0
- package/daemon/context-packs/skills/process/test-driven-development/SKILL.md +385 -0
- package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +11 -0
- package/daemon/context-packs/skills/process/test-driven-development/testing-anti-patterns.md +299 -0
- package/daemon/context-packs/skills/process/using-superpowers/OPENRIG.md +48 -0
- package/daemon/context-packs/skills/process/using-superpowers/SKILL.md +106 -0
- package/daemon/context-packs/skills/process/using-superpowers/manifest.yaml +11 -0
- package/daemon/context-packs/skills/process/verification-before-completion/SKILL.md +155 -0
- package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +9 -0
- package/daemon/context-packs/skills/process/writing-plans/OPENRIG.md +52 -0
- package/daemon/context-packs/skills/process/writing-plans/SKILL.md +126 -0
- package/daemon/context-packs/skills/process/writing-plans/manifest.yaml +11 -0
- package/daemon/context-packs/world/install/01-world-from-primitives.md +97 -0
- package/daemon/context-packs/world/install/02-permission-self-sleep.md +141 -0
- package/daemon/context-packs/world/install/03-what-this-is-for.md +86 -0
- package/daemon/context-packs/world/install/04-ontology.md +790 -0
- package/daemon/context-packs/world/install/05-harness-power-use.md +355 -0
- package/daemon/context-packs/world/install/06-a-competent-turn.md +225 -0
- package/daemon/context-packs/world/install/manifest.yaml +125 -0
- package/daemon/context-packs/world/install/reference-material.md +125 -0
- package/daemon/context-packs/world/install/what-you-can-do.md +416 -0
- package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/claude-code-adapter.js +7 -4
- package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
- package/daemon/dist/adapters/claude-resume.js +2 -2
- package/daemon/dist/adapters/claude-resume.js.map +1 -1
- package/daemon/dist/adapters/tmux.d.ts +10 -2
- package/daemon/dist/adapters/tmux.d.ts.map +1 -1
- package/daemon/dist/adapters/tmux.js +27 -7
- package/daemon/dist/adapters/tmux.js.map +1 -1
- package/daemon/dist/adapters/yolo-mode.d.ts +18 -0
- package/daemon/dist/adapters/yolo-mode.d.ts.map +1 -1
- package/daemon/dist/adapters/yolo-mode.js +21 -0
- package/daemon/dist/adapters/yolo-mode.js.map +1 -1
- package/daemon/dist/build-info.js +3 -3
- package/daemon/dist/domain/codex-thread-id.d.ts +95 -0
- package/daemon/dist/domain/codex-thread-id.d.ts.map +1 -1
- package/daemon/dist/domain/codex-thread-id.js +171 -2
- package/daemon/dist/domain/codex-thread-id.js.map +1 -1
- package/daemon/dist/domain/context-packs/context-pack-types.d.ts +48 -0
- package/daemon/dist/domain/context-packs/context-pack-types.d.ts.map +1 -1
- package/daemon/dist/domain/context-packs/context-pack-types.js +8 -0
- package/daemon/dist/domain/context-packs/context-pack-types.js.map +1 -1
- package/daemon/dist/domain/context-packs/manifest-parser.d.ts.map +1 -1
- package/daemon/dist/domain/context-packs/manifest-parser.js +234 -2
- package/daemon/dist/domain/context-packs/manifest-parser.js.map +1 -1
- package/daemon/dist/domain/context-packs/probe-eval-bridge.d.ts +34 -0
- package/daemon/dist/domain/context-packs/probe-eval-bridge.d.ts.map +1 -0
- package/daemon/dist/domain/context-packs/probe-eval-bridge.js +38 -0
- package/daemon/dist/domain/context-packs/probe-eval-bridge.js.map +1 -0
- package/daemon/dist/domain/context-packs/profile-composer.d.ts +49 -0
- package/daemon/dist/domain/context-packs/profile-composer.d.ts.map +1 -0
- package/daemon/dist/domain/context-packs/profile-composer.js +125 -0
- package/daemon/dist/domain/context-packs/profile-composer.js.map +1 -0
- package/daemon/dist/domain/context-packs/profile-source-resolver.d.ts +53 -0
- package/daemon/dist/domain/context-packs/profile-source-resolver.d.ts.map +1 -0
- package/daemon/dist/domain/context-packs/profile-source-resolver.js +129 -0
- package/daemon/dist/domain/context-packs/profile-source-resolver.js.map +1 -0
- package/daemon/dist/domain/context-packs/seat-recap-store.d.ts +48 -0
- package/daemon/dist/domain/context-packs/seat-recap-store.d.ts.map +1 -0
- package/daemon/dist/domain/context-packs/seat-recap-store.js +123 -0
- package/daemon/dist/domain/context-packs/seat-recap-store.js.map +1 -0
- package/daemon/dist/domain/markdown-address.d.ts +56 -0
- package/daemon/dist/domain/markdown-address.d.ts.map +1 -0
- package/daemon/dist/domain/markdown-address.js +188 -0
- package/daemon/dist/domain/markdown-address.js.map +1 -0
- package/daemon/dist/domain/model-divergence/current-generation-record.d.ts +8 -2
- package/daemon/dist/domain/model-divergence/current-generation-record.d.ts.map +1 -1
- package/daemon/dist/domain/model-divergence/current-generation-record.js +1 -1
- package/daemon/dist/domain/model-divergence/current-generation-record.js.map +1 -1
- package/daemon/dist/domain/model-divergence/model-divergence-monitor.d.ts +33 -21
- package/daemon/dist/domain/model-divergence/model-divergence-monitor.d.ts.map +1 -1
- package/daemon/dist/domain/model-divergence/model-divergence-monitor.js +64 -55
- package/daemon/dist/domain/model-divergence/model-divergence-monitor.js.map +1 -1
- package/daemon/dist/domain/periodic-snapshot-scheduler.d.ts +4 -0
- package/daemon/dist/domain/periodic-snapshot-scheduler.d.ts.map +1 -1
- package/daemon/dist/domain/periodic-snapshot-scheduler.js +5 -1
- package/daemon/dist/domain/periodic-snapshot-scheduler.js.map +1 -1
- package/daemon/dist/domain/permission-drift-observer.d.ts.map +1 -1
- package/daemon/dist/domain/permission-drift-observer.js +6 -1
- package/daemon/dist/domain/permission-drift-observer.js.map +1 -1
- package/daemon/dist/domain/process-census.d.ts +25 -0
- package/daemon/dist/domain/process-census.d.ts.map +1 -0
- package/daemon/dist/domain/process-census.js +47 -0
- package/daemon/dist/domain/process-census.js.map +1 -0
- package/daemon/dist/domain/resume-metadata-refresher.d.ts +31 -2
- package/daemon/dist/domain/resume-metadata-refresher.d.ts.map +1 -1
- package/daemon/dist/domain/resume-metadata-refresher.js +64 -29
- package/daemon/dist/domain/resume-metadata-refresher.js.map +1 -1
- package/daemon/dist/domain/review/compose.d.ts +5 -26
- package/daemon/dist/domain/review/compose.d.ts.map +1 -1
- package/daemon/dist/domain/review/compose.js +31 -57
- package/daemon/dist/domain/review/compose.js.map +1 -1
- package/daemon/dist/domain/rigspec-instantiator.d.ts +4 -0
- package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-instantiator.js +39 -0
- package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
- package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-schema.js +19 -3
- package/daemon/dist/domain/rigspec-schema.js.map +1 -1
- package/daemon/dist/domain/scope/logical-checkbox.d.ts +26 -0
- package/daemon/dist/domain/scope/logical-checkbox.d.ts.map +1 -0
- package/daemon/dist/domain/scope/logical-checkbox.js +65 -0
- package/daemon/dist/domain/scope/logical-checkbox.js.map +1 -0
- package/daemon/dist/domain/scope/plan-lock-artifacts.d.ts +1 -1
- package/daemon/dist/domain/scope/plan-lock-artifacts.d.ts.map +1 -1
- package/daemon/dist/domain/scope/plan-lock-artifacts.js +2 -2
- package/daemon/dist/domain/scope/plan-lock-artifacts.js.map +1 -1
- package/daemon/dist/domain/scope/scaffold-placeholder.d.ts +22 -0
- package/daemon/dist/domain/scope/scaffold-placeholder.d.ts.map +1 -1
- package/daemon/dist/domain/scope/scaffold-placeholder.js +24 -0
- package/daemon/dist/domain/scope/scaffold-placeholder.js.map +1 -1
- package/daemon/dist/domain/seat-activity-service.d.ts +1 -0
- package/daemon/dist/domain/seat-activity-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-activity-service.js +39 -23
- package/daemon/dist/domain/seat-activity-service.js.map +1 -1
- package/daemon/dist/domain/seat-handover-service.d.ts +22 -0
- package/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-handover-service.js +32 -2
- package/daemon/dist/domain/seat-handover-service.js.map +1 -1
- package/daemon/dist/domain/session-transport.d.ts +8 -0
- package/daemon/dist/domain/session-transport.d.ts.map +1 -1
- package/daemon/dist/domain/session-transport.js +116 -0
- package/daemon/dist/domain/session-transport.js.map +1 -1
- package/daemon/dist/domain/shell-classifier.d.ts +23 -0
- package/daemon/dist/domain/shell-classifier.d.ts.map +1 -0
- package/daemon/dist/domain/shell-classifier.js +36 -0
- package/daemon/dist/domain/shell-classifier.js.map +1 -0
- package/daemon/dist/domain/slices/slice-detail-projector.d.ts.map +1 -1
- package/daemon/dist/domain/slices/slice-detail-projector.js +10 -1
- package/daemon/dist/domain/slices/slice-detail-projector.js.map +1 -1
- package/daemon/dist/domain/spec-validation-advisory.d.ts +17 -0
- package/daemon/dist/domain/spec-validation-advisory.d.ts.map +1 -0
- package/daemon/dist/domain/spec-validation-advisory.js +38 -0
- package/daemon/dist/domain/spec-validation-advisory.js.map +1 -0
- package/daemon/dist/domain/successor-session-launcher.d.ts +7 -0
- package/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
- package/daemon/dist/domain/successor-session-launcher.js +38 -1
- package/daemon/dist/domain/successor-session-launcher.js.map +1 -1
- package/daemon/dist/domain/topology-defaults-installer.d.ts +47 -0
- package/daemon/dist/domain/topology-defaults-installer.d.ts.map +1 -0
- package/daemon/dist/domain/topology-defaults-installer.js +92 -0
- package/daemon/dist/domain/topology-defaults-installer.js.map +1 -0
- package/daemon/dist/domain/transcript-rotation.d.ts +4 -0
- package/daemon/dist/domain/transcript-rotation.d.ts.map +1 -1
- package/daemon/dist/domain/transcript-rotation.js +61 -3
- package/daemon/dist/domain/transcript-rotation.js.map +1 -1
- package/daemon/dist/domain/transcript-store.d.ts.map +1 -1
- package/daemon/dist/domain/transcript-store.js +9 -2
- package/daemon/dist/domain/transcript-store.js.map +1 -1
- package/daemon/dist/domain/types.d.ts +3 -0
- package/daemon/dist/domain/types.d.ts.map +1 -1
- package/daemon/dist/domain/user-settings/settings-store.d.ts +10 -1
- package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
- package/daemon/dist/domain/user-settings/settings-store.js +39 -0
- package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
- package/daemon/dist/routes/context-packs.d.ts.map +1 -1
- package/daemon/dist/routes/context-packs.js +205 -0
- package/daemon/dist/routes/context-packs.js.map +1 -1
- package/daemon/dist/routes/seat.d.ts.map +1 -1
- package/daemon/dist/routes/seat.js +11 -0
- package/daemon/dist/routes/seat.js.map +1 -1
- package/daemon/dist/routes/sessions.js +55 -0
- package/daemon/dist/routes/sessions.js.map +1 -1
- package/daemon/dist/routes/transport.d.ts.map +1 -1
- package/daemon/dist/routes/transport.js +12 -3
- package/daemon/dist/routes/transport.js.map +1 -1
- package/daemon/dist/seat-recap-store-surface.d.ts +2 -0
- package/daemon/dist/seat-recap-store-surface.d.ts.map +1 -0
- package/daemon/dist/seat-recap-store-surface.js +6 -0
- package/daemon/dist/seat-recap-store-surface.js.map +1 -0
- package/daemon/dist/startup.d.ts.map +1 -1
- package/daemon/dist/startup.js +37 -6
- package/daemon/dist/startup.js.map +1 -1
- package/daemon/docs/reference/chain-file-convention.md +115 -0
- package/daemon/docs/reference/legacy-topology-migration.md +53 -0
- package/daemon/docs/reference/refocus-channel.md +80 -0
- package/daemon/docs/reference/sdlc-conventions.md +24 -0
- package/daemon/specs/agents/shared/skills/core/attention-queue/SKILL.md +1 -1
- package/daemon/specs/agents/shared/skills/core/human-in-the-loop/SKILL.md +1 -1
- package/daemon/specs/agents/shared/skills/core/session-source-fork/SKILL.md +1 -1
- package/daemon/specs/agents/shared/skills/core/watchdog/SKILL.md +4 -4
- package/daemon/specs/agents/shared/skills/pods/development-team/SKILL.md +8 -0
- package/daemon/specs/agents/shared/skills/pods/orchestration-team/SKILL.md +72 -31
- package/daemon/specs/agents/shared/skills/pods/oversight-team/SKILL.md +106 -0
- package/daemon/specs/agents/shared/skills/process/context-engineering/SKILL.md +479 -0
- package/daemon/specs/agents/shared/skills/process/test-driven-development/SKILL.md +9 -0
- package/daemon/specs/rigs/launch/demo/project-example/README.md +25 -0
- package/daemon/specs/rigs/launch/demo/project-example/missions/improve-onboarding/SPEC.md +19 -0
- package/daemon/specs/rigs/launch/demo/project-example/missions/improve-onboarding/slices/01-shorten-first-run/PROGRESS.md +6 -0
- package/daemon/specs/rigs/launch/demo/project-example/missions/improve-onboarding/slices/01-shorten-first-run/PROOF.md +7 -0
- package/daemon/specs/rigs/launch/demo/project-example/missions/improve-onboarding/slices/01-shorten-first-run/SPEC.md +31 -0
- package/daemon/specs/rigs/preview/product-team/topology/instance/CRAFT.md +24 -0
- package/daemon/specs/rigs/preview/product-team/topology/rig/CRAFT.md +21 -0
- package/daemon/specs/rigs/preview/product-team/topology/rig/ORCHESTRATION-CRAFT.md +50 -0
- package/daemon/specs/rigs/preview/product-team/topology/seats/dev1-qa/CRAFT.md +13 -0
- package/daemon/specs/rigs/preview/product-team/topology/seats/orch1-lead/CRAFT.md +17 -0
- package/daemon/specs/rigs/preview/product-team/topology/seats/rev1-r1/CRAFT.md +17 -0
- package/daemon/specs/rigs/preview/product-team/topology/seats/rev1-r2/CRAFT.md +15 -0
- package/dist/build-info.js +3 -3
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +8 -0
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/context.d.ts.map +1 -1
- package/dist/commands/context.js +353 -48
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/proof.d.ts.map +1 -1
- package/dist/commands/proof.js +70 -12
- package/dist/commands/proof.js.map +1 -1
- package/dist/commands/rig.d.ts.map +1 -1
- package/dist/commands/rig.js +5 -0
- package/dist/commands/rig.js.map +1 -1
- package/dist/commands/transcript.d.ts.map +1 -1
- package/dist/commands/transcript.js +25 -1
- package/dist/commands/transcript.js.map +1 -1
- package/dist/commands/walk.d.ts.map +1 -1
- package/dist/commands/walk.js +279 -26
- package/dist/commands/walk.js.map +1 -1
- package/dist/config-store.d.ts +15 -1
- package/dist/config-store.d.ts.map +1 -1
- package/dist/config-store.js +35 -1
- package/dist/config-store.js.map +1 -1
- package/dist/lib/scope/logical-checkbox.d.ts +26 -0
- package/dist/lib/scope/logical-checkbox.d.ts.map +1 -0
- package/dist/lib/scope/logical-checkbox.js +65 -0
- package/dist/lib/scope/logical-checkbox.js.map +1 -0
- package/dist/lib/scope/scaffold-placeholder.d.ts +22 -0
- package/dist/lib/scope/scaffold-placeholder.d.ts.map +1 -1
- package/dist/lib/scope/scaffold-placeholder.js +24 -0
- package/dist/lib/scope/scaffold-placeholder.js.map +1 -1
- package/dist/lib/topology-trace.d.ts +36 -0
- package/dist/lib/topology-trace.d.ts.map +1 -0
- package/dist/lib/topology-trace.js +91 -0
- package/dist/lib/topology-trace.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/adapters/claude-code-adapter.js +7 -4
- package/node_modules/@openrig/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/adapters/claude-resume.js +2 -2
- package/node_modules/@openrig/daemon/dist/adapters/claude-resume.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/adapters/tmux.d.ts +10 -2
- package/node_modules/@openrig/daemon/dist/adapters/tmux.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/adapters/tmux.js +27 -7
- package/node_modules/@openrig/daemon/dist/adapters/tmux.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/adapters/yolo-mode.d.ts +18 -0
- package/node_modules/@openrig/daemon/dist/adapters/yolo-mode.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/adapters/yolo-mode.js +21 -0
- package/node_modules/@openrig/daemon/dist/adapters/yolo-mode.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/build-info.js +3 -3
- package/node_modules/@openrig/daemon/dist/domain/codex-thread-id.d.ts +95 -0
- package/node_modules/@openrig/daemon/dist/domain/codex-thread-id.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/codex-thread-id.js +171 -2
- package/node_modules/@openrig/daemon/dist/domain/codex-thread-id.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/context-packs/context-pack-types.d.ts +48 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/context-pack-types.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/context-packs/context-pack-types.js +8 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/context-pack-types.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/context-packs/manifest-parser.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/context-packs/manifest-parser.js +234 -2
- package/node_modules/@openrig/daemon/dist/domain/context-packs/manifest-parser.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/context-packs/probe-eval-bridge.d.ts +34 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/probe-eval-bridge.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/probe-eval-bridge.js +38 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/probe-eval-bridge.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-composer.d.ts +49 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-composer.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-composer.js +125 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-composer.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-source-resolver.d.ts +53 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-source-resolver.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-source-resolver.js +129 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-source-resolver.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/seat-recap-store.d.ts +48 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/seat-recap-store.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/seat-recap-store.js +123 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/seat-recap-store.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/markdown-address.d.ts +56 -0
- package/node_modules/@openrig/daemon/dist/domain/markdown-address.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/markdown-address.js +188 -0
- package/node_modules/@openrig/daemon/dist/domain/markdown-address.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/model-divergence/current-generation-record.d.ts +8 -2
- package/node_modules/@openrig/daemon/dist/domain/model-divergence/current-generation-record.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/model-divergence/current-generation-record.js +1 -1
- package/node_modules/@openrig/daemon/dist/domain/model-divergence/current-generation-record.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/model-divergence/model-divergence-monitor.d.ts +33 -21
- package/node_modules/@openrig/daemon/dist/domain/model-divergence/model-divergence-monitor.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/model-divergence/model-divergence-monitor.js +64 -55
- package/node_modules/@openrig/daemon/dist/domain/model-divergence/model-divergence-monitor.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/periodic-snapshot-scheduler.d.ts +4 -0
- package/node_modules/@openrig/daemon/dist/domain/periodic-snapshot-scheduler.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/periodic-snapshot-scheduler.js +5 -1
- package/node_modules/@openrig/daemon/dist/domain/periodic-snapshot-scheduler.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/permission-drift-observer.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/permission-drift-observer.js +6 -1
- package/node_modules/@openrig/daemon/dist/domain/permission-drift-observer.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/process-census.d.ts +25 -0
- package/node_modules/@openrig/daemon/dist/domain/process-census.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/process-census.js +47 -0
- package/node_modules/@openrig/daemon/dist/domain/process-census.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/resume-metadata-refresher.d.ts +31 -2
- package/node_modules/@openrig/daemon/dist/domain/resume-metadata-refresher.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/resume-metadata-refresher.js +64 -29
- package/node_modules/@openrig/daemon/dist/domain/resume-metadata-refresher.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/review/compose.d.ts +5 -26
- package/node_modules/@openrig/daemon/dist/domain/review/compose.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/review/compose.js +31 -57
- package/node_modules/@openrig/daemon/dist/domain/review/compose.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.d.ts +4 -0
- package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.js +39 -0
- package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/rigspec-schema.js +19 -3
- package/node_modules/@openrig/daemon/dist/domain/rigspec-schema.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/scope/logical-checkbox.d.ts +26 -0
- package/node_modules/@openrig/daemon/dist/domain/scope/logical-checkbox.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/scope/logical-checkbox.js +65 -0
- package/node_modules/@openrig/daemon/dist/domain/scope/logical-checkbox.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.d.ts +1 -1
- package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.js +2 -2
- package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/scope/scaffold-placeholder.d.ts +22 -0
- package/node_modules/@openrig/daemon/dist/domain/scope/scaffold-placeholder.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/scope/scaffold-placeholder.js +24 -0
- package/node_modules/@openrig/daemon/dist/domain/scope/scaffold-placeholder.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/seat-activity-service.d.ts +1 -0
- package/node_modules/@openrig/daemon/dist/domain/seat-activity-service.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/seat-activity-service.js +39 -23
- package/node_modules/@openrig/daemon/dist/domain/seat-activity-service.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.d.ts +22 -0
- package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.js +32 -2
- package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/session-transport.d.ts +8 -0
- package/node_modules/@openrig/daemon/dist/domain/session-transport.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/session-transport.js +116 -0
- package/node_modules/@openrig/daemon/dist/domain/session-transport.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/shell-classifier.d.ts +23 -0
- package/node_modules/@openrig/daemon/dist/domain/shell-classifier.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/shell-classifier.js +36 -0
- package/node_modules/@openrig/daemon/dist/domain/shell-classifier.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/slices/slice-detail-projector.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/slices/slice-detail-projector.js +10 -1
- package/node_modules/@openrig/daemon/dist/domain/slices/slice-detail-projector.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/spec-validation-advisory.d.ts +17 -0
- package/node_modules/@openrig/daemon/dist/domain/spec-validation-advisory.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/spec-validation-advisory.js +38 -0
- package/node_modules/@openrig/daemon/dist/domain/spec-validation-advisory.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/successor-session-launcher.d.ts +7 -0
- package/node_modules/@openrig/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/successor-session-launcher.js +38 -1
- package/node_modules/@openrig/daemon/dist/domain/successor-session-launcher.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/topology-defaults-installer.d.ts +47 -0
- package/node_modules/@openrig/daemon/dist/domain/topology-defaults-installer.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/topology-defaults-installer.js +92 -0
- package/node_modules/@openrig/daemon/dist/domain/topology-defaults-installer.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/transcript-rotation.d.ts +4 -0
- package/node_modules/@openrig/daemon/dist/domain/transcript-rotation.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/transcript-rotation.js +61 -3
- package/node_modules/@openrig/daemon/dist/domain/transcript-rotation.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/transcript-store.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/transcript-store.js +9 -2
- package/node_modules/@openrig/daemon/dist/domain/transcript-store.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/types.d.ts +3 -0
- package/node_modules/@openrig/daemon/dist/domain/types.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.d.ts +10 -1
- package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.js +39 -0
- package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/context-packs.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/context-packs.js +205 -0
- package/node_modules/@openrig/daemon/dist/routes/context-packs.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/seat.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/seat.js +11 -0
- package/node_modules/@openrig/daemon/dist/routes/seat.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/sessions.js +55 -0
- package/node_modules/@openrig/daemon/dist/routes/sessions.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/transport.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/transport.js +12 -3
- package/node_modules/@openrig/daemon/dist/routes/transport.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/seat-recap-store-surface.d.ts +2 -0
- package/node_modules/@openrig/daemon/dist/seat-recap-store-surface.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/seat-recap-store-surface.js +6 -0
- package/node_modules/@openrig/daemon/dist/seat-recap-store-surface.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/startup.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/startup.js +37 -6
- package/node_modules/@openrig/daemon/dist/startup.js.map +1 -1
- package/node_modules/@openrig/daemon/package.json +6 -1
- package/package.json +1 -1
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: rig-lifecycle
|
|
3
|
+
description: Use when reasoning about the rig lifecycle operations family (create / start / stop / resume / restore / snapshot / release / unclaim / destroy), reading or trusting `rig ps` / lifecycle projections after recovery, or designing proof for a lifecycle scenario. Covers the 4 failure modes (auto-restore creates partial rig; projections report healthier than reality; provider auth treated as impl work; resume succeeds for one runtime fails another) plus the restore-honesty rule (failed resume is FAILED loudly — no auto fresh fallback).
|
|
4
|
+
metadata:
|
|
5
|
+
cli_surfaces_referenced:
|
|
6
|
+
- destroy
|
|
7
|
+
- down
|
|
8
|
+
- ps
|
|
9
|
+
- release
|
|
10
|
+
- restore
|
|
11
|
+
- restore-check
|
|
12
|
+
- resume
|
|
13
|
+
- snapshot
|
|
14
|
+
- unclaim
|
|
15
|
+
- up
|
|
16
|
+
openrig:
|
|
17
|
+
stage: factory-approved
|
|
18
|
+
sibling_skills:
|
|
19
|
+
- topology-mutation-and-seat-management
|
|
20
|
+
- seat-scaling-and-specialization
|
|
21
|
+
- cross-host-rig-commands
|
|
22
|
+
- sidecar-operator
|
|
23
|
+
- rig-bundles-and-shareable-artifacts
|
|
24
|
+
- specification-system
|
|
25
|
+
- extension-and-user-workspace
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
# Rig Lifecycle
|
|
29
|
+
|
|
30
|
+
The family of operations that **create, start, stop, resume, restore,
|
|
31
|
+
snapshot, release, unclaim, and destroy** OpenRig-managed topologies.
|
|
32
|
+
Includes the user story after reboot: **"bring my work back without
|
|
33
|
+
turning a clean recovery into a cleanup project."**
|
|
34
|
+
|
|
35
|
+
If lifecycle is brittle, every higher-level primitive inherits that
|
|
36
|
+
brittleness. Queue, workflow, seat continuity, cross-host operation,
|
|
37
|
+
and RSI all assume that rigs and seats can be restored into known
|
|
38
|
+
states.
|
|
39
|
+
|
|
40
|
+
## Use this when
|
|
41
|
+
|
|
42
|
+
- Operating `rig up / down / restore / resume / snapshot / release / unclaim / destroy`
|
|
43
|
+
- Reading `rig ps` after a reboot or recovery and deciding what to trust
|
|
44
|
+
- Designing proof for a lifecycle scenario (clean start / warm resume / host reboot / provider auth loss / partial boot / operator recovery)
|
|
45
|
+
- Reasoning about restore-outcome semantics (`resumed` / `rebuilt` / `fresh` / `failed` / `attention_required`)
|
|
46
|
+
- Auditing whether a lifecycle proof is in-process bedrock vs requires real reboot evidence
|
|
47
|
+
|
|
48
|
+
## Don't use this when
|
|
49
|
+
|
|
50
|
+
- The operation is single-command and deterministic — use `openrig-user` skill for CLI surface
|
|
51
|
+
- The work is operator-level configuration of OpenRig itself — use `openrig-operator`
|
|
52
|
+
- The work is rig spec authoring — use `openrig-architect`
|
|
53
|
+
|
|
54
|
+
## Failure modes (4)
|
|
55
|
+
|
|
56
|
+
1. **Auto-restore creates a partially restored rig that must be cleaned up before real recovery.** Partial restore looks like recovery but isn't; cleanup-before-recovery becomes the actual workload.
|
|
57
|
+
2. **`rig ps` or lifecycle projections report a healthier state than the runtime actually has.** Projections are summaries; the runtime is truth. Don't trust projections silently.
|
|
58
|
+
3. **Provider auth is unavailable after reboot and the system treats that as implementation work** instead of a human/environment decision. Auth issues are environmental; route to human.
|
|
59
|
+
4. **Resume succeeds for one runtime/provider but fails for another scenario that was never tested.** Per-runtime parity assumptions break silently; matrix proof catches them.
|
|
60
|
+
|
|
61
|
+
## Restore-honesty rule (load-bearing)
|
|
62
|
+
|
|
63
|
+
**Failed resume is FAILED loudly.** No automatic fresh fallback. Fresh
|
|
64
|
+
launch is **explicit follow-up only.** This is enforced architecturally
|
|
65
|
+
at the daemon level (per `architecture.md` §7 rule 15).
|
|
66
|
+
|
|
67
|
+
The locked restore-outcome vocabulary:
|
|
68
|
+
|
|
69
|
+
| Outcome | Meaning |
|
|
70
|
+
|---|---|
|
|
71
|
+
| `resumed` | Native runtime resumed the same conversation |
|
|
72
|
+
| `rebuilt` | New process assembled from artifacts (`session_source: mode: rebuild`) |
|
|
73
|
+
| `fresh` | New process with no prior continuity |
|
|
74
|
+
| `failed` | Restore attempted and failed; no automatic fallback |
|
|
75
|
+
| `attention_required` | Recoverable blocker (provider auth refused, etc.); needs operator action |
|
|
76
|
+
| `n-a` | Not applicable (terminal nodes, etc.) |
|
|
77
|
+
|
|
78
|
+
Codex auth-refusal returns `attention_required` (recoverable); Claude
|
|
79
|
+
`looksLikeClaudeLoginPrompt` returns `failed/login_required` (terminal).
|
|
80
|
+
Cross-runtime alignment is an open follow-up question.
|
|
81
|
+
|
|
82
|
+
## Proof standard
|
|
83
|
+
|
|
84
|
+
Lifecycle proof should include **real reboot or VM-reboot evidence**,
|
|
85
|
+
not only daemon-unit evidence. The minimum useful matrix covers:
|
|
86
|
+
|
|
87
|
+
| Scenario | What it proves |
|
|
88
|
+
|---|---|
|
|
89
|
+
| Clean start | Boot from spec into known state |
|
|
90
|
+
| Warm resume | `rig down` → `rig up <name>` resumes seats |
|
|
91
|
+
| Host reboot / tmux socket absence | Recovery from lost tmux connection |
|
|
92
|
+
| Provider auth loss | Codex/Claude auth refusal handled honestly |
|
|
93
|
+
| Partial boot / partial failure | Some seats up, some failed; honest reporting |
|
|
94
|
+
| Intentional operator recovery | Operator-initiated restore from snapshot |
|
|
95
|
+
|
|
96
|
+
Tier 1: in-process bedrock (daemon-unit evidence). Tier 2: real reboot
|
|
97
|
+
or disposable Tart VM. Tier 1 alone is not lifecycle proof; it's
|
|
98
|
+
bedrock.
|
|
99
|
+
|
|
100
|
+
## Default policy is part of the primitive
|
|
101
|
+
|
|
102
|
+
**Treat default policy as part of the primitive, not an afterthought.**
|
|
103
|
+
Lifecycle defaults that are too optimistic for the reliability level
|
|
104
|
+
actually proven create silent harm:
|
|
105
|
+
|
|
106
|
+
- `auto-restore` defaults that mask failure modes
|
|
107
|
+
- Implicit fresh-fallback that hides resume failure
|
|
108
|
+
- Permissive verification that doesn't distinguish honest success from "appeared to work"
|
|
109
|
+
|
|
110
|
+
## Total-Host Restore Product Rail v2
|
|
111
|
+
|
|
112
|
+
The rail sequences restore truth into **four rungs**:
|
|
113
|
+
|
|
114
|
+
- `fully_restored` is a **Rung 3 execution rollup**
|
|
115
|
+
- "fully back" is **reserved for Rung 4 only**
|
|
116
|
+
|
|
117
|
+
Naming discipline matters. "Fully restored" and "fully back" are
|
|
118
|
+
different claims; don't conflate.
|
|
119
|
+
|
|
120
|
+
## See also
|
|
121
|
+
|
|
122
|
+
- `openrig-user` skill — CLI surface for `rig up / down / restore / etc.`
|
|
123
|
+
- `openrig-operator` skill — operator-level discipline for OpenRig itself
|
|
124
|
+
- `seat-continuity-and-handover` skill — sub-primitive: occupant-creation modes for restore (`resume` / `rebuild` / `fresh` / `failed`)
|
|
125
|
+
- `session-source-fork` skill — `forked` continuity outcome for fork-based restore
|
|
126
|
+
- `permission-and-capability-preflight` skill — provider-auth blocker → escalation path
|
|
127
|
+
- `openrig/docs/as-built/architecture/lifecycle-snapshot-restore.md` (product reference doc) — daemon enforcement of restore-honesty rule
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# GENERATED by scripts/generate-context-packs.mjs — DO NOT EDIT.
|
|
2
|
+
# Package-time projection of a canonical skill; regenerated every build.
|
|
3
|
+
name: "rig-lifecycle"
|
|
4
|
+
version: "0.5.3"
|
|
5
|
+
purpose: "Use when reasoning about the rig lifecycle operations family (create / start / stop / resume / restore / snapshot / release / unclaim / destroy), reading or trusting `rig ps` / lifecycle projections after recovery, or designing proof for a lifecycle scenario. Covers the 4 failure modes (auto-restore creates partial rig; projections report healthier than reality; provider auth treated as impl work; resume succeeds for one runtime fails another) plus the restore-honesty rule (failed resume is FAIL"
|
|
6
|
+
files:
|
|
7
|
+
- path: "SKILL.md"
|
|
8
|
+
role: "instruction"
|
|
9
|
+
summary: "Use when reasoning about the rig lifecycle operations family (create / start / stop / resume / restore / snapshot / release / unclaim / destroy), reading or trusting `rig ps` / lifecycle projections after recovery, or designing proof for a lifecycle scenario. Covers the 4 failure modes (auto-restore creates partial rig; projections report healthier than reality; provider auth treated as impl work; resume succeeds for one runtime fails another) plus the restore-honesty rule (failed resume is FAIL"
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: session-source-fork
|
|
3
|
+
description: |
|
|
4
|
+
Use when authoring a rig spec member or `rig expand` payload that needs to start a new managed seat from a prior runtime conversation source — `session_source: { mode: fork, ref: { kind, value } }`. v1 supports `mode: fork` with `ref.kind: native_id` for Claude and Codex. The new seat persists a NEW post-fork token; the parent token is NEVER written onto the new seat. NOT for restoring an existing seat or for artifact-backed mental-model rebuild.
|
|
5
|
+
metadata:
|
|
6
|
+
openrig:
|
|
7
|
+
stage: factory-approved
|
|
8
|
+
sibling_skills:
|
|
9
|
+
- claude-compaction-restore
|
|
10
|
+
- mental-model-ha
|
|
11
|
+
- scope-recovery
|
|
12
|
+
- session-compaction-and-restore
|
|
13
|
+
- agent-startup-and-context-ingestion
|
|
14
|
+
- agent-starters
|
|
15
|
+
- composable-priming-packs
|
|
16
|
+
- seat-continuity-and-handover
|
|
17
|
+
- claude-compact-in-place
|
|
18
|
+
- pre-maintenance-agent-preservation
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# session_source Fork
|
|
22
|
+
|
|
23
|
+
`session_source` is a **member-level OpenRig field** that declares how a
|
|
24
|
+
newly-launched managed seat should derive its initial conversation
|
|
25
|
+
continuity from a prior runtime conversation source.
|
|
26
|
+
|
|
27
|
+
v1 supports one mode: **`fork`** — start a *new* managed seat from a
|
|
28
|
+
prior native runtime conversation source without claiming the original
|
|
29
|
+
seat continued.
|
|
30
|
+
|
|
31
|
+
The schema is runtime-neutral; implementation is runtime-specific (Claude
|
|
32
|
+
and Codex have their own native fork commands).
|
|
33
|
+
|
|
34
|
+
## Use this when
|
|
35
|
+
|
|
36
|
+
- Authoring a rig spec member that should fork from a prior session
|
|
37
|
+
- Authoring a `rig expand` payload with `session_source`
|
|
38
|
+
- Reasoning about whether to use `fork` vs `rebuild` vs `resume` vs `fresh` for a new seat
|
|
39
|
+
- Composing fork + handover (seat-handover-over-fork) — see `seat-continuity-and-handover` skill
|
|
40
|
+
|
|
41
|
+
## Don't use this when
|
|
42
|
+
|
|
43
|
+
- The seat is being **restored**, not created. Restore continues an existing managed seat. Fork creates a new seat.
|
|
44
|
+
- The continuity is **artifact-backed mental-model rebuild** (packet-derived understanding, not native runtime continuity). Use `mode: rebuild` (see `seat-continuity-and-handover` for the rebuild surface) — do NOT collapse fork into artifact-backed reentry; the distinction is load-bearing.
|
|
45
|
+
- The runtime is `terminal`. Terminal runtime rejects `session_source`.
|
|
46
|
+
|
|
47
|
+
## The shape (canonical YAML)
|
|
48
|
+
|
|
49
|
+
```yaml
|
|
50
|
+
members:
|
|
51
|
+
- id: reviewer-2
|
|
52
|
+
runtime: claude-code # or "codex"; not valid on terminal
|
|
53
|
+
agent_ref: specs/agents/reviewer.yaml
|
|
54
|
+
profile: reviewer
|
|
55
|
+
cwd: .
|
|
56
|
+
session_source:
|
|
57
|
+
mode: fork
|
|
58
|
+
ref:
|
|
59
|
+
kind: native_id # v1 fork mode supports native_id only
|
|
60
|
+
value: "0b0165d7-cb4d-4650-90de-15c0a1ede9e6"
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Rules:
|
|
64
|
+
- `mode` v1 only valid value: `fork`.
|
|
65
|
+
- `ref.kind` v1 supports `native_id` only. Schema rejects `artifact_path`, `name`, `last`, and `artifact_set` pre-launch with explicit deferred/weaker/wrong-mode error messages (see `packages/daemon/src/domain/rigspec-schema.ts` validateSessionSourceFork). Adapter-level refusal exists as defensive handling but should not be reachable in v1 because schema rejects first.
|
|
66
|
+
- `value` required for `ref.kind: native_id` in v1 (the only schema-accepted kind). Future-state value semantics for `artifact_path` / `name` / `last` are not active in v1 because schema rejects those kinds pre-launch.
|
|
67
|
+
- `rig expand` accepts the same shape so dynamically-added members can carry session-source attribution.
|
|
68
|
+
|
|
69
|
+
The primitive does NOT introduce a new top-level command. It flows
|
|
70
|
+
through existing rig spec and expansion pathways.
|
|
71
|
+
|
|
72
|
+
## State model
|
|
73
|
+
|
|
74
|
+
`session_source` is a **launch-time input**, not a long-lived stateful field:
|
|
75
|
+
|
|
76
|
+
1. **Declared** — present in member config or expansion payload
|
|
77
|
+
2. **Resolved** — at launch time, OpenRig resolves the `ref` against the runtime
|
|
78
|
+
3. **Realized** — runtime fork succeeds; new managed seat receives a **NEW** native continuity token (Claude session id or Codex thread id). OpenRig persists that NEW token. **Parent token is NEVER written onto the new seat.**
|
|
79
|
+
4. **Failed** — resolution or fork failed; seat not launched as a fork; clear error names the resolution step that failed
|
|
80
|
+
|
|
81
|
+
Once realized, `session_source` is essentially history. Restoring the
|
|
82
|
+
seat later is `restore` of the new seat, not re-fork-from-parent.
|
|
83
|
+
|
|
84
|
+
## Failure modes (5)
|
|
85
|
+
|
|
86
|
+
1. **Source session id not found** — runtime cannot resolve `native_id`. **Action**: emit error naming runtime + missing id; do NOT silently launch fresh. (Future-state note: when `artifact_path` is supported in a follow-up slice, it could become a candidate fallback for Claude; in v1 schema rejects `artifact_path` pre-launch so no fallback path exists.)
|
|
87
|
+
2. **Source artifact path missing** *(out of v1 scope)* — would apply once `ref.kind: artifact_path` becomes schema-accepted. v1 schema rejects this kind pre-launch.
|
|
88
|
+
3. **Unsupported runtime/kind combination** *(largely pre-empted in v1 by schema rejection)* — schema rejects all non-`native_id` kinds upfront. Adapter-level refusal exists as defensive handling but is not reached in v1.
|
|
89
|
+
4. **Fork launch failed after source resolution** — runtime command (`claude --resume <parent> --fork-session` or `codex fork <id>`) returned non-zero or hung. Preserve runtime stderr; do not record new seat as launched; do not write parent token onto seat.
|
|
90
|
+
5. **Persistence inconsistency** — fork succeeded but seat-token persistence cannot record new continuity token. **Internal failure**: seat is not considered launched until new token is durably written.
|
|
91
|
+
|
|
92
|
+
## Honest UX rule (verbatim)
|
|
93
|
+
|
|
94
|
+
The primitive must NOT report "restored the original agent" or "resumed
|
|
95
|
+
the original seat" or "snapshot." The correct framing is **"forked from
|
|
96
|
+
source session"** / **"started from prior conversation source."**
|
|
97
|
+
|
|
98
|
+
Negative-grep over adapter source confirms ZERO `restored` / `resumed` /
|
|
99
|
+
`snapshot` strings in fork code paths.
|
|
100
|
+
|
|
101
|
+
## Hard boundaries (do-not list; verbatim)
|
|
102
|
+
|
|
103
|
+
- **Do NOT introduce a DIVERGENT fork primitive.** The primitive flows through existing spec/expansion pathways. *(Update 2026-08-07: `rig fork <source-session>` has since shipped as a thin convenience verb that COMPOSES the existing agent-image fork path — this honors the boundary; it is not a divergent primitive. The rule now reads: no NEW fork mechanics outside the spec / expansion / agent-image pathways.)*
|
|
104
|
+
- **Do NOT report "restored" / "resumed the original seat" / "snapshot"** in any UX surface.
|
|
105
|
+
- **Do NOT couple `session_source` to AgentSpec.** It's a member-level launch-time input.
|
|
106
|
+
- **Do NOT change `restore` semantics.** `session_source` creates a seat; `restore` continues an existing managed seat.
|
|
107
|
+
|
|
108
|
+
## Adapter command shape (shipped v1)
|
|
109
|
+
|
|
110
|
+
| Runtime | Command shape |
|
|
111
|
+
|---|---|
|
|
112
|
+
| Claude (`mode: fork` + `ref.kind: native_id`) | `claude --resume <parent-id> --fork-session` |
|
|
113
|
+
| Codex (`mode: fork` + `ref.kind: native_id`) | `codex... fork <parent-id>` |
|
|
114
|
+
| Terminal | Rejected at schema level |
|
|
115
|
+
|
|
116
|
+
Mutual exclusion between `resumeToken` (restore path) and `forkSource`
|
|
117
|
+
(fork path) is enforced at three layers in the daemon.
|
|
118
|
+
|
|
119
|
+
## Continuity outcome literals
|
|
120
|
+
|
|
121
|
+
| Outcome | When |
|
|
122
|
+
|---|---|
|
|
123
|
+
| `forked` | Fork succeeded; new seat has new native token; parent never written onto new seat |
|
|
124
|
+
| `fresh` | Fresh launch (no `session_source` declared) |
|
|
125
|
+
| `resumed` | Restore of existing managed seat |
|
|
126
|
+
| `failed` | Resolution or fork failed |
|
|
127
|
+
|
|
128
|
+
For `seat handover over fork` composition, the binding outcome is
|
|
129
|
+
independent (see `seat-continuity-and-handover` skill).
|
|
130
|
+
|
|
131
|
+
## Active-daemon caveat (live-runtime gap)
|
|
132
|
+
|
|
133
|
+
2026-04-30 live scale-out dogfood found: source checkout contained fork
|
|
134
|
+
support, but active daemon was running from a pre-fork commit. **Verify
|
|
135
|
+
the active daemon/runtime commit contains the fork path before live
|
|
136
|
+
proof.** Isolated daemon proof at the target commit can prove the
|
|
137
|
+
feature safely; live forked scale-out remains unproven until the active
|
|
138
|
+
daemon parity is verified.
|
|
139
|
+
|
|
140
|
+
## Currently shipped (v1) vs deferred
|
|
141
|
+
|
|
142
|
+
Shipped at openrig `c7b6df1` (2026-04-30):
|
|
143
|
+
- Schema accept/reject for full Honest Refusal Matrix
|
|
144
|
+
- Codec roundtrip (serialize → parse → normalize preserves `session_source` faithfully)
|
|
145
|
+
- Expansion path through `rig expand` member-input
|
|
146
|
+
- Adapter command shape for Claude + Codex `native_id`
|
|
147
|
+
- Persistence honesty (seat's `resume_token` is the NEW post-fork token; parent token NEVER written)
|
|
148
|
+
- Honest UX literal contract (`continuityOutcome: forked`)
|
|
149
|
+
|
|
150
|
+
Deferred:
|
|
151
|
+
- Tier 2 real-runtime fork proof (disposable Tart VM cycle, human-gated)
|
|
152
|
+
- Claude `artifact_path` mode (schema currently refuses with deferred message)
|
|
153
|
+
- Provenance columns (`parent_native_id` / `created_via` for queryable RSI consumer)
|
|
154
|
+
- Cross-host fork (source on host A, new seat on host B) — depends on `cross-host-rig-commands`
|
|
155
|
+
|
|
156
|
+
## See also
|
|
157
|
+
|
|
158
|
+
- `seat-continuity-and-handover` skill — sibling occupant-creation primitives (resume / fork / rebuild / fresh) + seat-binding (handover composes with fork)
|
|
159
|
+
- `agent-starters` skill — composes session_source fork into named reusable starting points
|
|
160
|
+
- `cross-host-rig-commands` skill — multi-host fork (deferred)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# GENERATED by scripts/generate-context-packs.mjs — DO NOT EDIT.
|
|
2
|
+
# Package-time projection of a canonical skill; regenerated every build.
|
|
3
|
+
name: "session-source-fork"
|
|
4
|
+
version: "0.5.3"
|
|
5
|
+
purpose: "Use when authoring a rig spec member or `rig expand` payload that needs to start a new managed seat from a prior runtime conversation source — `session_source: { mode: fork, ref: { kind, value } }`. v1 supports `mode: fork` with `ref.kind: native_id` for Claude and Codex. The new seat persists a NEW post-fork token; the parent token is NEVER written onto the new seat. NOT for restoring an existing seat or for artifact-backed mental-model rebuild."
|
|
6
|
+
files:
|
|
7
|
+
- path: "SKILL.md"
|
|
8
|
+
role: "instruction"
|
|
9
|
+
summary: "Use when authoring a rig spec member or `rig expand` payload that needs to start a new managed seat from a prior runtime conversation source — `session_source: { mode: fork, ref: { kind, value } }`. v1 supports `mode: fork` with `ref.kind: native_id` for Claude and Codex. The new seat persists a NEW post-fork token; the parent token is NEVER written onto the new seat. NOT for restoring an existing seat or for artifact-backed mental-model rebuild."
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: specification-system
|
|
3
|
+
description: Use when authoring rig specs, agent specs, workflow specs, startup/context fragments, operating-mode declarations, or designing the user spec library. Covers the 4 failure modes (spec instantiates topology but not workflow/mode; spec depends on local paths and fails on another host; agents modify specs as one-off files instead of preserving reusable intent; validation proves YAML shape but not whether topology can run) and the validation-vs-runtime-realization distinction.
|
|
4
|
+
metadata:
|
|
5
|
+
cli_surfaces_referenced:
|
|
6
|
+
- agent
|
|
7
|
+
- bundle
|
|
8
|
+
- spec
|
|
9
|
+
- specs
|
|
10
|
+
openrig:
|
|
11
|
+
stage: factory-approved
|
|
12
|
+
sibling_skills:
|
|
13
|
+
- rig-lifecycle
|
|
14
|
+
- topology-mutation-and-seat-management
|
|
15
|
+
- seat-scaling-and-specialization
|
|
16
|
+
- cross-host-rig-commands
|
|
17
|
+
- sidecar-operator
|
|
18
|
+
- rig-bundles-and-shareable-artifacts
|
|
19
|
+
- extension-and-user-workspace
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
# Specification System
|
|
23
|
+
|
|
24
|
+
The declarative primitive family for OpenRig intent: **rig specs, agent
|
|
25
|
+
specs, workflow specs, startup/context fragments, operating-mode
|
|
26
|
+
declarations, and the user spec library that stores and reuses them.**
|
|
27
|
+
|
|
28
|
+
Specs are how humans and agents describe **repeatable topology and
|
|
29
|
+
behavior** without re-explaining it in chat. They are also shareable
|
|
30
|
+
artifacts: a user should be able to publish a spec or spec family so
|
|
31
|
+
another user can instantiate the same rig shape, role structure, or
|
|
32
|
+
workflow pattern.
|
|
33
|
+
|
|
34
|
+
**Without a dependable spec primitive, OpenRig depends on manual
|
|
35
|
+
startup prompts and tribal memory.** That blocks repeatability, product
|
|
36
|
+
demos, rig bundles, and autonomous rig construction.
|
|
37
|
+
|
|
38
|
+
## Use this when
|
|
39
|
+
|
|
40
|
+
- Authoring a RigSpec / AgentSpec / workflow spec
|
|
41
|
+
- Designing a startup/context fragment
|
|
42
|
+
- Reasoning about spec-library lifecycle (validation, sharing, upgrade semantics)
|
|
43
|
+
- Auditing a spec for portability (does it run on another host?)
|
|
44
|
+
- Distinguishing spec vs bundle vs extension cleanly
|
|
45
|
+
|
|
46
|
+
## Don't use this when
|
|
47
|
+
|
|
48
|
+
- The work is one-off and won't be reused. Manual rig assembly is fine for one-shot work.
|
|
49
|
+
- The intent is to package a topology + workflow as a shareable artifact. That's `rig-bundles-and-shareable-artifacts`.
|
|
50
|
+
- The intent is to add runtime behavior. That's `extension-and-user-workspace`.
|
|
51
|
+
|
|
52
|
+
## Failure modes (4)
|
|
53
|
+
|
|
54
|
+
1. **A spec can instantiate a topology but not the workflow or operating mode needed to use it.** Topology is necessary but not sufficient — workflow and operating mode must be declared too.
|
|
55
|
+
2. **A shared spec depends on local paths or hidden startup fragments and fails on another host.** Specs must be self-describing for portability.
|
|
56
|
+
3. **Agents modify specs as one-off files instead of preserving reusable user/library intent.** Specs are reusable; treating each instance as one-off destroys the primitive's value.
|
|
57
|
+
4. **Validation proves YAML shape but not whether the declared topology can actually run.** Structural validation is not enough; runtime realization is the real proof.
|
|
58
|
+
|
|
59
|
+
## Proof standard
|
|
60
|
+
|
|
61
|
+
Proof should:
|
|
62
|
+
|
|
63
|
+
1. Author a spec
|
|
64
|
+
2. Validate it (structural)
|
|
65
|
+
3. Install it (into spec library)
|
|
66
|
+
4. Instantiate it on a **clean OpenRig environment**
|
|
67
|
+
5. Show **both structural validation AND runtime realization**
|
|
68
|
+
|
|
69
|
+
Validation alone is insufficient.
|
|
70
|
+
|
|
71
|
+
## Spec / bundle / extension boundary
|
|
72
|
+
|
|
73
|
+
| Concept | Declares | Example |
|
|
74
|
+
|---|---|---|
|
|
75
|
+
| **Spec** | Topology / role / workflow shape (declarative intent) | `rig.yaml`, `agent.yaml`, `workflow.yaml` |
|
|
76
|
+
| **Bundle** | Spec(s) + supporting fragments packaged for shareable instantiation | A Velocity Team bundle |
|
|
77
|
+
| **Extension** | Runtime behavior added to user workspace | RigX command, custom view |
|
|
78
|
+
|
|
79
|
+
Don't conflate them. The contract should distinguish spec, bundle, and
|
|
80
|
+
extension cleanly.
|
|
81
|
+
|
|
82
|
+
## Currently shipped surfaces
|
|
83
|
+
|
|
84
|
+
OpenRig already has:
|
|
85
|
+
|
|
86
|
+
- RigSpec / AgentSpec authoring (`agent.yaml`, `rig.yaml` formats; see `openrig-architect` skill)
|
|
87
|
+
- Workflow specs (markdown/YAML files, daemon read-through cache via `workflow_specs` table; see `workflow-runtime` skill)
|
|
88
|
+
- Bundle/spec command surface (`rig bundle / spec / agent / specs ls/show/preview/add/sync/remove/rename`)
|
|
89
|
+
- Spec library (filesystem-backed at `packages/daemon/specs/` + `~/.openrig/specs/` per cli-reference.md)
|
|
90
|
+
|
|
91
|
+
Not yet shipped:
|
|
92
|
+
- Spec library lifecycle (validation, sharing, upgrade) treated as a first-class primitive
|
|
93
|
+
- Cross-host spec sharing
|
|
94
|
+
- Marketplace / public registry
|
|
95
|
+
|
|
96
|
+
## See also
|
|
97
|
+
|
|
98
|
+
- `openrig-architect` skill — RigSpec / AgentSpec authoring discipline
|
|
99
|
+
- `workflow-runtime` skill — workflow spec authoring + transactional-scribe contract
|
|
100
|
+
- `rig-bundles-and-shareable-artifacts` skill — bundle is the packaged form of specs
|
|
101
|
+
- `extension-and-user-workspace` skill — extensions add runtime behavior; specs declare intent
|
|
102
|
+
- `openrig/docs/reference/rig-spec.md` (product reference doc) — RigSpec format specification
|
|
103
|
+
- `openrig/docs/reference/agent-spec.md` (product reference doc) — AgentSpec format specification
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# GENERATED by scripts/generate-context-packs.mjs — DO NOT EDIT.
|
|
2
|
+
# Package-time projection of a canonical skill; regenerated every build.
|
|
3
|
+
name: "specification-system"
|
|
4
|
+
version: "0.5.3"
|
|
5
|
+
purpose: "Use when authoring rig specs, agent specs, workflow specs, startup/context fragments, operating-mode declarations, or designing the user spec library. Covers the 4 failure modes (spec instantiates topology but not workflow/mode; spec depends on local paths and fails on another host; agents modify specs as one-off files instead of preserving reusable intent; validation proves YAML shape but not whether topology can run) and the validation-vs-runtime-realization distinction."
|
|
6
|
+
files:
|
|
7
|
+
- path: "SKILL.md"
|
|
8
|
+
role: "instruction"
|
|
9
|
+
summary: "Use when authoring rig specs, agent specs, workflow specs, startup/context fragments, operating-mode declarations, or designing the user spec library. Covers the 4 failure modes (spec instantiates topology but not workflow/mode; spec depends on local paths and fails on another host; agents modify specs as one-off files instead of preserving reusable intent; validation proves YAML shape but not whether topology can run) and the validation-vs-runtime-realization distinction."
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: topology-mutation-and-seat-management
|
|
3
|
+
description: Use when changing a rig while it is alive — `rig expand` / `rig shrink` / `rig launch` / `rig remove` / `rig discover` / `rig bind` / `rig adopt` / `rig attach`. Covers the 4 failure modes (newly created seat lacks queue/startup/role; edges and permissions not updated; adopt/bind succeeds at tmux but not OpenRig identity; shrink/remove leaves stale topology references) and the rule that mutation must work while the rig is active, not just in clean fixtures.
|
|
4
|
+
metadata:
|
|
5
|
+
cli_surfaces_referenced:
|
|
6
|
+
- adopt
|
|
7
|
+
- attach
|
|
8
|
+
- bind
|
|
9
|
+
- discover
|
|
10
|
+
- expand
|
|
11
|
+
- launch
|
|
12
|
+
- ps
|
|
13
|
+
- release
|
|
14
|
+
- remove
|
|
15
|
+
- shrink
|
|
16
|
+
- unclaim
|
|
17
|
+
- up
|
|
18
|
+
- whoami
|
|
19
|
+
openrig:
|
|
20
|
+
stage: factory-approved
|
|
21
|
+
sibling_skills:
|
|
22
|
+
- rig-lifecycle
|
|
23
|
+
- seat-scaling-and-specialization
|
|
24
|
+
- cross-host-rig-commands
|
|
25
|
+
- sidecar-operator
|
|
26
|
+
- rig-bundles-and-shareable-artifacts
|
|
27
|
+
- specification-system
|
|
28
|
+
- extension-and-user-workspace
|
|
29
|
+
---
|
|
30
|
+
|
|
31
|
+
# Topology Mutation and Seat Management
|
|
32
|
+
|
|
33
|
+
The ability to change a rig **while it is alive**: expand, shrink,
|
|
34
|
+
launch, remove, discover, bind, adopt, and attach seats or sessions.
|
|
35
|
+
Seat management includes the **stable identifiers, edges, roles, and
|
|
36
|
+
startup context** that make those mutations coherent.
|
|
37
|
+
|
|
38
|
+
**OpenRig should be easy to reach for.** A user should be able to add
|
|
39
|
+
capacity, retire capacity, adopt an existing session, or attach a
|
|
40
|
+
terminal **without rebuilding the whole topology.** If mutation is
|
|
41
|
+
rarely tested, users avoid it and the product collapses back into
|
|
42
|
+
static launch scripts.
|
|
43
|
+
|
|
44
|
+
## Use this when
|
|
45
|
+
|
|
46
|
+
- Adding capacity to a running rig (`rig expand <rig> <pod-fragment-path>`)
|
|
47
|
+
- Removing capacity (`rig shrink` / `rig remove`)
|
|
48
|
+
- Launching/relaunching a node in a running rig (`rig launch`)
|
|
49
|
+
- Binding a discovered session into an existing logical node (`rig bind`)
|
|
50
|
+
- Adopting a topology + binding live sessions (`rig adopt`)
|
|
51
|
+
- Attaching a shell or agent into a rig node (`rig attach --self`)
|
|
52
|
+
|
|
53
|
+
## Don't use this when
|
|
54
|
+
|
|
55
|
+
- The rig is being created fresh from scratch — use `rig up` (lifecycle, not mutation)
|
|
56
|
+
- The intent is to scale specifically (add specialized capacity) — use `seat-scaling-and-specialization` skill
|
|
57
|
+
- The intent is occupant replacement on a stable seat — use `seat-continuity-and-handover` skill
|
|
58
|
+
|
|
59
|
+
## Failure modes (4)
|
|
60
|
+
|
|
61
|
+
1. **A newly created seat lacks the queue, startup context, or role files it needs to operate.** Topology mutation creates the seat, but the seat needs more than a tmux session to be useful.
|
|
62
|
+
2. **Edges and permissions are not updated when a seat is added or removed.** Topology references go stale; later workflows route to nonexistent seats.
|
|
63
|
+
3. **Adopt/bind succeeds at the tmux/session layer but not at the OpenRig identity layer.** The session is attached but `rig whoami` doesn't know about it; downstream consumers see partial state.
|
|
64
|
+
4. **Shrink/remove leaves stale topology references that later workflows route into.** Cleanup is part of the operation, not an afterthought.
|
|
65
|
+
|
|
66
|
+
## Proof standard
|
|
67
|
+
|
|
68
|
+
Proof must cover **mutation while a rig is active**, not just in a
|
|
69
|
+
clean test fixture. The useful matrix:
|
|
70
|
+
|
|
71
|
+
| Operation | What to verify |
|
|
72
|
+
|---|---|
|
|
73
|
+
| Add seat | New seat has queue, startup context, role; `rig whoami` resolves it |
|
|
74
|
+
| Remove seat | Stale references cleaned; edges/permissions updated |
|
|
75
|
+
| Adopt existing session | tmux session bound at OpenRig identity layer; `rig whoami` reports correctly |
|
|
76
|
+
| Attach observer terminal | External CLI attachment recorded |
|
|
77
|
+
| Verify topology projections after each move | `rig ps --nodes` reflects current truth, not pre-mutation cache |
|
|
78
|
+
|
|
79
|
+
A clean-fixture proof is necessary but not sufficient. Live-rig proof
|
|
80
|
+
catches the failure modes that fixture-mode misses.
|
|
81
|
+
|
|
82
|
+
## Why important strategically
|
|
83
|
+
|
|
84
|
+
The current coordination experiments repeatedly need new queues,
|
|
85
|
+
watchdogs, humans, and test seats — which makes this family
|
|
86
|
+
**strategically important.** Seat continuity work will eventually
|
|
87
|
+
separate stable seat identity from runtime occupant identity (see
|
|
88
|
+
`seat-continuity-and-handover`).
|
|
89
|
+
|
|
90
|
+
## Currently shipped surfaces
|
|
91
|
+
|
|
92
|
+
Per `cli-reference.md` v0.2.0:
|
|
93
|
+
|
|
94
|
+
- `rig expand <rig-id> <pod-fragment-path>` (with optional `session_source`)
|
|
95
|
+
- `rig shrink <rigId> <podRef>`
|
|
96
|
+
- `rig launch <rigId> <nodeRef>`
|
|
97
|
+
- `rig remove <rigId> <nodeRef>`
|
|
98
|
+
- `rig discover [--draft]`
|
|
99
|
+
- `rig bind <discoveredId> --rig <rigId> (--node <id> | --pod <ns> --member <name>)`
|
|
100
|
+
- `rig adopt <path> --bind <logicalId=tmuxSessionOrDiscoveryId>`
|
|
101
|
+
- `rig attach --self --rig <rigId> --node <logicalId>`
|
|
102
|
+
- `rig unclaim <sessionRef>` / `rig release <rigId>`
|
|
103
|
+
|
|
104
|
+
## Active proof gap (current)
|
|
105
|
+
|
|
106
|
+
The 2026-04-30 topology mutation add-seat proof pass is **active**.
|
|
107
|
+
Product Lab shaped it; planner authored `IMPLEMENTATION.md`; driver
|
|
108
|
+
landed the smallest honest CLI retry-guidance patch for failed
|
|
109
|
+
`rig expand` recovery. **Remaining proof is the Section B disposable-rig
|
|
110
|
+
runtime matrix, blocked on operator posture** and owned by
|
|
111
|
+
`orch-lead@your-rig`.
|
|
112
|
+
|
|
113
|
+
## See also
|
|
114
|
+
|
|
115
|
+
- `openrig-user` skill — CLI surface for `rig expand / shrink / launch / remove / bind / adopt / attach`
|
|
116
|
+
- `seat-scaling-and-specialization` skill — when to add specialized capacity vs generic
|
|
117
|
+
- `seat-continuity-and-handover` skill — replacing an occupant on a stable seat (different shape than topology mutation)
|
|
118
|
+
- `cross-host-rig-commands` skill — cross-host topology mutation (deferred)
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# GENERATED by scripts/generate-context-packs.mjs — DO NOT EDIT.
|
|
2
|
+
# Package-time projection of a canonical skill; regenerated every build.
|
|
3
|
+
name: "topology-mutation-and-seat-management"
|
|
4
|
+
version: "0.5.3"
|
|
5
|
+
purpose: "Use when changing a rig while it is alive — `rig expand` / `rig shrink` / `rig launch` / `rig remove` / `rig discover` / `rig bind` / `rig adopt` / `rig attach`. Covers the 4 failure modes (newly created seat lacks queue/startup/role; edges and permissions not updated; adopt/bind succeeds at tmux but not OpenRig identity; shrink/remove leaves stale topology references) and the rule that mutation must work while the rig is active, not just in clean fixtures."
|
|
6
|
+
files:
|
|
7
|
+
- path: "SKILL.md"
|
|
8
|
+
role: "instruction"
|
|
9
|
+
summary: "Use when changing a rig while it is alive — `rig expand` / `rig shrink` / `rig launch` / `rig remove` / `rig discover` / `rig bind` / `rig adopt` / `rig attach`. Covers the 4 failure modes (newly created seat lacks queue/startup/role; edges and permissions not updated; adopt/bind succeeds at tmux but not OpenRig identity; shrink/remove leaves stale topology references) and the rule that mutation must work while the rig is active, not just in clean fixtures."
|