@openrig/cli 0.5.6 → 0.5.7
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/README.md +1 -1
- package/daemon/assets/plugins/openrig-core/skills/loading-addressable-markdown/SKILL.md +34 -0
- package/daemon/assets/plugins/openrig-core/skills/loading-addressable-markdown/scripts/resolve-markdown.mjs +170 -0
- package/daemon/assets/plugins/openrig-core/skills/openrig-skills/SKILL.md +1 -4
- package/daemon/assets/plugins/openrig-core/skills/retiring-and-inheriting-a-seat/SKILL.md +3 -3
- package/daemon/assets/plugins/openrig-core/skills/software-for-agents/SKILL.md +4 -9
- package/daemon/assets/vm-preview-fixtures/workflows/sample-basic-loop.yaml +3 -3
- package/daemon/context-packs/onboarding-width/manifest.yaml +1 -1
- package/daemon/context-packs/skills/applying-a-permission-policy/SKILL.md +120 -0
- package/daemon/context-packs/skills/applying-a-permission-policy/manifest.yaml +10 -0
- package/daemon/context-packs/skills/claude-compaction-restore/SKILL.md +166 -0
- package/daemon/context-packs/skills/claude-compaction-restore/manifest.yaml +18 -0
- package/daemon/context-packs/skills/claude-compaction-restore/scripts/precompact-hook.mjs +174 -0
- package/daemon/context-packs/skills/claude-compaction-restore/scripts/restore-from-jsonl.mjs +487 -0
- package/daemon/context-packs/skills/claude-compaction-restore/templates/compact-instruction.md +1 -0
- package/daemon/context-packs/skills/claude-compaction-restore/templates/post-compact-restore-instruction.md +1 -0
- package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/SKILL.md +1 -1
- package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/messaging-the-human/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-skills/SKILL.md +1 -4
- package/daemon/context-packs/skills/core/openrig-skills/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/specification-system/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/watchdog/manifest.yaml +1 -1
- package/daemon/context-packs/skills/delegating-work/SKILL.md +43 -0
- package/daemon/context-packs/skills/delegating-work/manifest.yaml +10 -0
- package/daemon/context-packs/skills/forming-an-openrig-mental-model/SKILL.md +318 -0
- package/daemon/context-packs/skills/forming-an-openrig-mental-model/manifest.yaml +10 -0
- package/daemon/context-packs/skills/loading-addressable-markdown/SKILL.md +34 -0
- package/daemon/context-packs/skills/loading-addressable-markdown/manifest.yaml +12 -0
- package/daemon/context-packs/skills/loading-addressable-markdown/scripts/resolve-markdown.mjs +170 -0
- package/daemon/context-packs/skills/mission-slice-sop/SKILL.md +94 -0
- package/daemon/context-packs/skills/mission-slice-sop/manifest.yaml +10 -0
- package/daemon/context-packs/skills/openrig-operating-model/SKILL.md +397 -0
- package/daemon/context-packs/skills/openrig-operating-model/manifest.yaml +30 -0
- package/daemon/context-packs/skills/openrig-operating-model/scripts/compose.py +572 -0
- package/daemon/context-packs/skills/openrig-operating-model/scripts/scaffold.sh +34 -0
- package/daemon/context-packs/skills/openrig-operating-model/scripts/trace-due.sh +32 -0
- package/daemon/context-packs/skills/openrig-operating-model/scripts/trace-stamp.sh +5 -0
- package/daemon/context-packs/skills/openrig-operating-model/scripts/trunk-diff.sh +18 -0
- package/daemon/context-packs/skills/openrig-operating-model/templates/LEARNED.md +40 -0
- package/daemon/context-packs/skills/openrig-operating-model/templates/NOTES.md +9 -0
- package/daemon/context-packs/skills/openrig-operating-model/templates/PLAYBOOK.md +5 -0
- package/daemon/context-packs/skills/openrig-operating-model/templates/SOP.md +24 -0
- package/daemon/context-packs/skills/openrig-operating-model/templates/SPEC.md +54 -0
- package/daemon/context-packs/skills/openrig-user/SKILL.md +1374 -0
- package/daemon/context-packs/skills/openrig-user/manifest.yaml +10 -0
- package/daemon/context-packs/skills/orienting-to-an-inherited-seat/CHANGELOG.md +64 -0
- package/daemon/context-packs/skills/orienting-to-an-inherited-seat/SKILL.md +250 -0
- package/daemon/context-packs/skills/orienting-to-an-inherited-seat/manifest.yaml +12 -0
- package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/requirements-writer/SKILL.md +21 -15
- package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +3 -3
- package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pods/development-team/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pods/orchestration-team/SKILL.md +1 -1
- package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pods/review-team/SKILL.md +1 -1
- package/daemon/context-packs/skills/pods/review-team/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/dogfood/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +1 -1
- package/daemon/context-packs/skills/queue-handoff/SKILL.md +192 -0
- package/daemon/context-packs/skills/queue-handoff/manifest.yaml +10 -0
- package/daemon/context-packs/skills/refocusing/SKILL.md +31 -0
- package/daemon/context-packs/skills/refocusing/manifest.yaml +14 -0
- package/daemon/context-packs/skills/refocusing/references/refocus.md +22 -0
- package/daemon/context-packs/skills/refocusing/scripts/trace-to-root.py +264 -0
- package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/CHANGELOG.md +48 -0
- package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/SKILL.md +231 -0
- package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/manifest.yaml +12 -0
- package/daemon/context-packs/skills/seat-continuity-and-handover/SKILL.md +151 -0
- package/daemon/context-packs/skills/seat-continuity-and-handover/manifest.yaml +16 -0
- package/daemon/context-packs/skills/seat-continuity-and-handover/references/apprentice-evidence-toolkit.md +32 -0
- package/daemon/context-packs/skills/seat-continuity-and-handover/references/apprentice-successor-seat-cutover.md +256 -0
- package/daemon/context-packs/skills/seat-continuity-and-handover/references/orchestrator-role.md +40 -0
- package/daemon/context-packs/skills/session-compaction-and-restore/SKILL.md +163 -0
- package/daemon/context-packs/skills/session-compaction-and-restore/manifest.yaml +10 -0
- package/daemon/context-packs/skills/software-for-agents/SKILL.md +187 -0
- package/daemon/context-packs/skills/software-for-agents/manifest.yaml +10 -0
- package/daemon/context-packs/world-example/manifest.yaml +1 -1
- package/daemon/context-packs/world-public/manifest.yaml +1 -1
- package/daemon/dist/build-info.js +3 -3
- package/daemon/dist/builtins/workflow-specs/basic-loop.yaml +3 -3
- package/daemon/dist/builtins/workflow-specs/conveyor.yaml +1 -1
- package/daemon/dist/builtins/workflow-specs/factory-rsi.yaml +1 -1
- package/daemon/dist/db/all-migrations.d.ts +1 -1
- package/daemon/dist/db/all-migrations.d.ts.map +1 -1
- package/daemon/dist/db/all-migrations.js +4 -2
- package/daemon/dist/db/all-migrations.js.map +1 -1
- package/daemon/dist/db/migrations/077_node_session_source.d.ts +4 -0
- package/daemon/dist/db/migrations/077_node_session_source.d.ts.map +1 -0
- package/daemon/dist/db/migrations/077_node_session_source.js +6 -0
- package/daemon/dist/db/migrations/077_node_session_source.js.map +1 -0
- package/daemon/dist/domain/context-packs/manifest-parser.d.ts.map +1 -1
- package/daemon/dist/domain/context-packs/manifest-parser.js +5 -6
- package/daemon/dist/domain/context-packs/manifest-parser.js.map +1 -1
- package/daemon/dist/domain/context-packs/profile-composer.d.ts +1 -1
- package/daemon/dist/domain/context-packs/profile-composer.d.ts.map +1 -1
- package/daemon/dist/domain/context-packs/profile-composer.js +2 -2
- package/daemon/dist/domain/context-packs/profile-composer.js.map +1 -1
- package/daemon/dist/domain/context-packs/profile-source-resolver.d.ts +3 -1
- package/daemon/dist/domain/context-packs/profile-source-resolver.d.ts.map +1 -1
- package/daemon/dist/domain/context-packs/profile-source-resolver.js +3 -2
- package/daemon/dist/domain/context-packs/profile-source-resolver.js.map +1 -1
- package/daemon/dist/domain/rig-lifecycle-service.d.ts +24 -4
- package/daemon/dist/domain/rig-lifecycle-service.d.ts.map +1 -1
- package/daemon/dist/domain/rig-lifecycle-service.js +116 -6
- package/daemon/dist/domain/rig-lifecycle-service.js.map +1 -1
- package/daemon/dist/domain/rig-repository.d.ts +2 -1
- package/daemon/dist/domain/rig-repository.d.ts.map +1 -1
- package/daemon/dist/domain/rig-repository.js +7 -0
- package/daemon/dist/domain/rig-repository.js.map +1 -1
- package/daemon/dist/domain/rigspec-exporter.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-exporter.js +2 -0
- package/daemon/dist/domain/rigspec-exporter.js.map +1 -1
- package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-instantiator.js +2 -0
- package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
- package/daemon/dist/domain/types.d.ts +2 -0
- package/daemon/dist/domain/types.d.ts.map +1 -1
- package/daemon/dist/domain/types.js.map +1 -1
- package/daemon/dist/domain/workspace/default-workspace-scaffold.d.ts.map +1 -1
- package/daemon/dist/domain/workspace/default-workspace-scaffold.js +37 -2
- package/daemon/dist/domain/workspace/default-workspace-scaffold.js.map +1 -1
- package/daemon/dist/routes/context-packs.d.ts.map +1 -1
- package/daemon/dist/routes/context-packs.js +146 -6
- package/daemon/dist/routes/context-packs.js.map +1 -1
- package/daemon/dist/routes/rigs.js +7 -3
- package/daemon/dist/routes/rigs.js.map +1 -1
- package/daemon/dist/routes/sessions.js +7 -3
- package/daemon/dist/routes/sessions.js.map +1 -1
- package/daemon/dist/startup.d.ts.map +1 -1
- package/daemon/dist/startup.js +3 -1
- package/daemon/dist/startup.js.map +1 -1
- package/daemon/docs/reference/agent-spec.md +1 -1
- package/daemon/docs/reference/mission-install.md +23 -2
- package/daemon/docs/reference/product-journey-sdlc.md +305 -0
- package/daemon/docs/reference/sdlc-conventions.md +9 -2
- package/daemon/specs/agents/apps/vault-specialist/agent.yaml +1 -1
- package/daemon/specs/agents/apps/vault-specialist/guidance/role.md +0 -1
- package/daemon/specs/agents/conveyor/builder/agent.yaml +1 -1
- package/daemon/specs/agents/conveyor/builder/guidance/role.md +0 -1
- package/daemon/specs/agents/conveyor/lead/agent.yaml +1 -1
- package/daemon/specs/agents/conveyor/lead/guidance/role.md +0 -3
- package/daemon/specs/agents/conveyor/planner/agent.yaml +1 -1
- package/daemon/specs/agents/conveyor/planner/guidance/role.md +0 -1
- package/daemon/specs/agents/design/product-designer/agent.yaml +3 -4
- package/daemon/specs/agents/design/product-designer/guidance/role.md +0 -3
- package/daemon/specs/agents/development/implementer/agent.yaml +3 -4
- package/daemon/specs/agents/development/implementer/guidance/role.md +0 -3
- package/daemon/specs/agents/development/qa/agent.yaml +4 -4
- package/daemon/specs/agents/development/qa/guidance/role.md +1 -4
- package/daemon/specs/agents/factory-rsi/dogfood/agent.yaml +1 -1
- package/daemon/specs/agents/factory-rsi/release-manager/agent.yaml +1 -1
- package/daemon/specs/agents/orchestration/orchestrator/agent.yaml +3 -4
- package/daemon/specs/agents/orchestration/orchestrator/guidance/role.md +0 -4
- package/daemon/specs/agents/review/independent-reviewer/agent.yaml +3 -4
- package/daemon/specs/agents/review/independent-reviewer/guidance/role.md +0 -3
- package/daemon/specs/agents/shared/agent.yaml +2 -10
- package/daemon/specs/agents/shared/skills/core/agent-startup-and-context-ingestion/SKILL.md +1 -1
- package/daemon/specs/agents/shared/skills/core/openrig-skills/SKILL.md +1 -4
- package/daemon/specs/agents/shared/skills/pm/requirements-writer/SKILL.md +21 -15
- package/daemon/specs/agents/shared/skills/pods/orchestration-team/SKILL.md +1 -1
- package/daemon/specs/agents/shared/skills/pods/review-team/SKILL.md +1 -1
- package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/agent.yaml +1 -1
- package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/guidance/role.md +2 -3
- package/dist/build-info.js +3 -3
- package/dist/commands/config-init-workspace.d.ts.map +1 -1
- package/dist/commands/config-init-workspace.js +38 -3
- package/dist/commands/config-init-workspace.js.map +1 -1
- package/dist/commands/context.d.ts.map +1 -1
- package/dist/commands/context.js +37 -0
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/create.d.ts +4 -0
- package/dist/commands/create.d.ts.map +1 -0
- package/dist/commands/create.js +84 -0
- package/dist/commands/create.js.map +1 -0
- package/dist/commands/grow.d.ts +4 -0
- package/dist/commands/grow.d.ts.map +1 -0
- package/dist/commands/grow.js +182 -0
- package/dist/commands/grow.js.map +1 -0
- package/dist/commands/remove.d.ts.map +1 -1
- package/dist/commands/remove.js +9 -1
- package/dist/commands/remove.js.map +1 -1
- package/dist/commands/rig.d.ts.map +1 -1
- package/dist/commands/rig.js +48 -1
- package/dist/commands/rig.js.map +1 -1
- package/dist/commands/scope.d.ts.map +1 -1
- package/dist/commands/scope.js +21 -2
- package/dist/commands/scope.js.map +1 -1
- package/dist/commands/shrink.d.ts.map +1 -1
- package/dist/commands/shrink.js +6 -1
- package/dist/commands/shrink.js.map +1 -1
- package/dist/commands/topology-default-agent.d.ts +4 -0
- package/dist/commands/topology-default-agent.d.ts.map +1 -0
- package/dist/commands/topology-default-agent.js +13 -0
- package/dist/commands/topology-default-agent.js.map +1 -0
- package/dist/commands/walk.d.ts.map +1 -1
- package/dist/commands/walk.js +3 -0
- package/dist/commands/walk.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/work-install.d.ts +39 -0
- package/dist/lib/work-install.d.ts.map +1 -0
- package/dist/lib/work-install.js +278 -0
- package/dist/lib/work-install.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/build-info.js +3 -3
- package/node_modules/@openrig/daemon/dist/builtins/workflow-specs/basic-loop.yaml +3 -3
- package/node_modules/@openrig/daemon/dist/builtins/workflow-specs/conveyor.yaml +1 -1
- package/node_modules/@openrig/daemon/dist/builtins/workflow-specs/factory-rsi.yaml +1 -1
- package/node_modules/@openrig/daemon/dist/db/all-migrations.d.ts +1 -1
- package/node_modules/@openrig/daemon/dist/db/all-migrations.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/db/all-migrations.js +4 -2
- package/node_modules/@openrig/daemon/dist/db/all-migrations.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/db/migrations/077_node_session_source.d.ts +4 -0
- package/node_modules/@openrig/daemon/dist/db/migrations/077_node_session_source.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/db/migrations/077_node_session_source.js +6 -0
- package/node_modules/@openrig/daemon/dist/db/migrations/077_node_session_source.js.map +1 -0
- 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 +5 -6
- package/node_modules/@openrig/daemon/dist/domain/context-packs/manifest-parser.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-composer.d.ts +1 -1
- package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-composer.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-composer.js +2 -2
- package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-composer.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-source-resolver.d.ts +3 -1
- package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-source-resolver.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-source-resolver.js +3 -2
- package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-source-resolver.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/rig-lifecycle-service.d.ts +24 -4
- package/node_modules/@openrig/daemon/dist/domain/rig-lifecycle-service.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/rig-lifecycle-service.js +116 -6
- package/node_modules/@openrig/daemon/dist/domain/rig-lifecycle-service.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/rig-repository.d.ts +2 -1
- package/node_modules/@openrig/daemon/dist/domain/rig-repository.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/rig-repository.js +7 -0
- package/node_modules/@openrig/daemon/dist/domain/rig-repository.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/rigspec-exporter.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/rigspec-exporter.js +2 -0
- package/node_modules/@openrig/daemon/dist/domain/rigspec-exporter.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.js +2 -0
- package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/types.d.ts +2 -0
- package/node_modules/@openrig/daemon/dist/domain/types.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/types.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/workspace/default-workspace-scaffold.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/workspace/default-workspace-scaffold.js +37 -2
- package/node_modules/@openrig/daemon/dist/domain/workspace/default-workspace-scaffold.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 +146 -6
- package/node_modules/@openrig/daemon/dist/routes/context-packs.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/rigs.js +7 -3
- package/node_modules/@openrig/daemon/dist/routes/rigs.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/sessions.js +7 -3
- package/node_modules/@openrig/daemon/dist/routes/sessions.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/startup.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/startup.js +3 -1
- package/node_modules/@openrig/daemon/dist/startup.js.map +1 -1
- package/node_modules/@openrig/daemon/package.json +1 -1
- package/package.json +1 -1
- package/daemon/context-packs/skills/process/brainstorming/OPENRIG.md +0 -48
- package/daemon/context-packs/skills/process/brainstorming/SKILL.md +0 -107
- package/daemon/context-packs/skills/process/brainstorming/manifest.yaml +0 -12
- package/daemon/context-packs/skills/process/executing-plans/OPENRIG.md +0 -56
- package/daemon/context-packs/skills/process/executing-plans/SKILL.md +0 -94
- package/daemon/context-packs/skills/process/executing-plans/manifest.yaml +0 -12
- package/daemon/context-packs/skills/process/using-superpowers/OPENRIG.md +0 -48
- package/daemon/context-packs/skills/process/using-superpowers/SKILL.md +0 -106
- package/daemon/context-packs/skills/process/using-superpowers/manifest.yaml +0 -12
- package/daemon/context-packs/skills/process/writing-plans/OPENRIG.md +0 -52
- package/daemon/context-packs/skills/process/writing-plans/SKILL.md +0 -126
- package/daemon/context-packs/skills/process/writing-plans/manifest.yaml +0 -12
- package/daemon/specs/agents/shared/skills/process/brainstorming/OPENRIG.md +0 -48
- package/daemon/specs/agents/shared/skills/process/brainstorming/SKILL.md +0 -107
- package/daemon/specs/agents/shared/skills/process/executing-plans/OPENRIG.md +0 -56
- package/daemon/specs/agents/shared/skills/process/executing-plans/SKILL.md +0 -94
- package/daemon/specs/agents/shared/skills/process/using-superpowers/OPENRIG.md +0 -48
- package/daemon/specs/agents/shared/skills/process/using-superpowers/SKILL.md +0 -106
- package/daemon/specs/agents/shared/skills/process/writing-plans/OPENRIG.md +0 -52
- package/daemon/specs/agents/shared/skills/process/writing-plans/SKILL.md +0 -126
|
@@ -0,0 +1,231 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: retiring-and-inheriting-a-seat
|
|
3
|
+
description: Use when you are a sitting agent near your context threshold (~85%) and a PLANNED seat transition is due — retire deliberately and hand your seat to a fresh successor primed from a packet, rather than let compaction degrade you. Covers the handover packet, the append-only lineage ledger (one row per tenure), physical-seat continuity, the do-not-over-inherit framing, the optional warm-handoff window, and wake-v0 (consulting a retired predecessor). NOT for unplanned compaction/crash recovery (session-compaction-and-restore / claude-compaction-restore) and NOT the seat-binding primitive mechanics (seat-continuity-and-handover).
|
|
4
|
+
metadata:
|
|
5
|
+
openrig:
|
|
6
|
+
stage: provisional
|
|
7
|
+
sibling_skills:
|
|
8
|
+
- orienting-to-an-inherited-seat
|
|
9
|
+
- session-compaction-and-restore
|
|
10
|
+
- seat-continuity-and-handover
|
|
11
|
+
- claude-compaction-restore
|
|
12
|
+
- agent-starters
|
|
13
|
+
- queue-handoff
|
|
14
|
+
- openrig-user
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Retiring and Inheriting a Seat
|
|
18
|
+
|
|
19
|
+
A **planned** seat transition. A long-lived seat accumulates context; as it nears the
|
|
20
|
+
window's edge, don't wait for compaction to degrade you into a cold-started agent —
|
|
21
|
+
**retire deliberately** and hand the seat to a fresh successor primed from a packet plus
|
|
22
|
+
the seat's accumulated lineage. The **seat address is stable; its occupants are a lineage.**
|
|
23
|
+
This is the practice that named the "seat" primitive.
|
|
24
|
+
|
|
25
|
+
## Use this when
|
|
26
|
+
|
|
27
|
+
- You are a sitting agent near your context threshold (~85%) with a **planned** transition
|
|
28
|
+
(or a deliberate role change), and want the successor to start clean.
|
|
29
|
+
- You are priming a fresh successor into an **existing** seat.
|
|
30
|
+
- You are recording a tenure in the seat's lineage ledger / writing your tombstone.
|
|
31
|
+
- You are **inheriting** a seat and need the do-not-over-inherit framing.
|
|
32
|
+
- You want to consult the agent who sat in this seat before you.
|
|
33
|
+
|
|
34
|
+
## Don't use this when
|
|
35
|
+
|
|
36
|
+
- Unplanned compaction or a crash already happened — that is the backstop path:
|
|
37
|
+
`session-compaction-and-restore` / `claude-compaction-restore`.
|
|
38
|
+
- You need the seat-binding **primitive mechanics** (rebuild/fork/fresh, the two-outcome
|
|
39
|
+
honesty model, the provenance schema) — `seat-continuity-and-handover`.
|
|
40
|
+
- The seat is fresh with no occupant to retire — `rig launch` / `agent-starters`.
|
|
41
|
+
|
|
42
|
+
## Why planned handover beats riding compaction
|
|
43
|
+
|
|
44
|
+
Compaction is the **crash-class backstop** (it stays that). A **planned** handover is
|
|
45
|
+
deliberate: you author the packet with a clear head *before* degradation sets in, the
|
|
46
|
+
successor starts on a clean context, and the transition is auditable. Reach for this at a
|
|
47
|
+
threshold you can see coming; fall back to compaction only when a transition wasn't planned.
|
|
48
|
+
|
|
49
|
+
## The handover sequence
|
|
50
|
+
|
|
51
|
+
1. **Trigger** — ~85% context, or a deliberate role transition. The oversight-rig context
|
|
52
|
+
detector can fire this for you; you can also self-initiate when you feel the edge.
|
|
53
|
+
2. **Author the handover packet, deliberately** — a composed context pack carrying current
|
|
54
|
+
work + next owner, the seat's durable pointers, constraints and authority boundaries, and
|
|
55
|
+
the accumulated **lineage wisdom** ("those before you learned X"). This IS a restore packet
|
|
56
|
+
in the `session-compaction-and-restore` 16-field contract — **reuse that contract, don't
|
|
57
|
+
reinvent it.** Compose it with `rig context compose` (see openrig-user → "Context packs and
|
|
58
|
+
paced delivery").
|
|
59
|
+
**Enumerate the seat's standing duties as first-class packet content:** what recurs, at what
|
|
60
|
+
cadence, on which surface, and who will hold it after cutover. Carry each duty both in this
|
|
61
|
+
packet and in durable seat state, because recurring duties are the content most often lost at
|
|
62
|
+
a generation boundary while urgent one-off work carries cleanly.
|
|
63
|
+
3. **Prime the fresh successor** — `rig walk` the packet into the seat (paced delivery lets the
|
|
64
|
+
successor absorb it in order), or launch-with-packet. The successor reads it as
|
|
65
|
+
*inheritance*, not *identity*. **The packet's first-read line MUST point the successor at
|
|
66
|
+
`orienting-to-an-inherited-seat`** — its world model of what a handover *is*. Carry that
|
|
67
|
+
pointer **in the durable packet artifact itself**; never inject it as a runtime prompt keyed
|
|
68
|
+
to the seat name (that runtime mechanism is the **ghost-prompt** class the orientation skill
|
|
69
|
+
teaches successors to refuse — and it has misfired on real successors). Artifact-carried
|
|
70
|
+
survives the swap for free and needs no enabled gate.
|
|
71
|
+
4. **Preserve the physical seat at cutover** — the live seat address and its canonical tmux
|
|
72
|
+
session, window, and pane stay stable. Assess the apprentice in a staged session; at the
|
|
73
|
+
owner-worded cutover, resume the accepted successor history in the original canonical pane
|
|
74
|
+
and remove the empty staging session. The retiring tenure becomes a cold advisor through its
|
|
75
|
+
lineage token. Renaming tmux sessions is a repair fallback, because attached clients follow
|
|
76
|
+
the physical pane rather than the logical seat name.
|
|
77
|
+
5. **Write your lineage-ledger row + a one-line tombstone** (below).
|
|
78
|
+
6. **Optional warm handoff** — a bounded apprenticeship window: the successor asks questions,
|
|
79
|
+
the predecessor judges fitness, *then* the swap completes. Use it when the seat holds a lot
|
|
80
|
+
of live judgment; skip it for a clean cut.
|
|
81
|
+
|
|
82
|
+
## Apprentice mode — incumbent
|
|
83
|
+
|
|
84
|
+
An `apprentice-handover` policy gives you an early preparation boundary, not permission to
|
|
85
|
+
automate the succession decision. Create a fresh, staged, unbound successor; prove the pinned
|
|
86
|
+
model before installing context; then open a **conversation, not a gauntlet**. Give coached
|
|
87
|
+
errands, answer questions, and judge work in the real domain. The experiment's scored probes are
|
|
88
|
+
optional tools whose rigor must match the stakes, not mandatory ceremony.
|
|
89
|
+
|
|
90
|
+
Stay the authority-bearing incumbent until the named owner words the gate and the mechanic records
|
|
91
|
+
the effect receipt. Before that word, the apprentice may observe, ask, and produce evidence but may
|
|
92
|
+
not act as the seat. Enumerate deposits and transfer every standing duty explicitly, **because
|
|
93
|
+
recurring duties** are otherwise easy to lose while visible one-off work appears complete. Put the
|
|
94
|
+
mechanical cutover in the portable SOP linked from `seat-continuity-and-handover`; do not duplicate
|
|
95
|
+
or improvise it here.
|
|
96
|
+
|
|
97
|
+
## The lineage ledger (append-only, one row per tenure)
|
|
98
|
+
|
|
99
|
+
The seat's tenure record, written at handover **by the retiring agent**. One tiny row per
|
|
100
|
+
tenure:
|
|
101
|
+
|
|
102
|
+
- **generation** — `v1`, `v2`, … (a seat accumulates 20–40 tenures over months)
|
|
103
|
+
- **harness session id** — **captured AT BOOT**, not at retirement (a crash never gets the
|
|
104
|
+
chance to write it later)
|
|
105
|
+
- **started / retired** timestamps
|
|
106
|
+
- **handover-packet pointer** — the pack ref
|
|
107
|
+
- **tombstone** — one line: what this tenure did, written by the retiring agent itself
|
|
108
|
+
|
|
109
|
+
**Why it works (zero search infrastructure):** any timestamped record — a git commit, a
|
|
110
|
+
qitem, a NOTES.md line, a stream item — joins to the seat's ledger by interval match →
|
|
111
|
+
generation + session token → wake that tenure. One row per handover, append-only. The
|
|
112
|
+
ledger is the tenure record; work-tree notes remain lived context, not identity state.
|
|
113
|
+
|
|
114
|
+
**Crash-ended tenures** get their row appended **post-hoc** by the crash-cart / restore path,
|
|
115
|
+
flagged **honest-approximate** (the boot-captured session id is what makes this recoverable).
|
|
116
|
+
|
|
117
|
+
## Do NOT over-inherit — the key lesson from the practice's history
|
|
118
|
+
|
|
119
|
+
**You are inheriting a seat, not becoming your predecessor.** Frame it explicitly to the
|
|
120
|
+
successor: *"agents sat here before you and learned X; you carry the seat's mission, not their
|
|
121
|
+
identity."* The historical failure was agents getting confused about whether they **were** the
|
|
122
|
+
predecessor — carrying a stale self-model, over-claiming prior work as their own. Inherit the
|
|
123
|
+
seat's **mission and hard-won lessons**; keep your own **fresh identity and session**.
|
|
124
|
+
|
|
125
|
+
## Wake v0 — ask the agent who sat before you (a practice, not a verb)
|
|
126
|
+
|
|
127
|
+
A retired tenure is a cold advisor you can consult. Look up the seat's ledger → get that
|
|
128
|
+
generation's session token → resume it for **one question**, then let it sleep again:
|
|
129
|
+
|
|
130
|
+
- Claude: `claude -p --resume <session>`
|
|
131
|
+
- Codex: `codex exec` (resume the rollout)
|
|
132
|
+
|
|
133
|
+
This is also a `rig` verb: `rig ask <rig> "<q>" --wake <seat[@gen]|token>` (CLI 0.5.1; also
|
|
134
|
+
`--runtime`, `--wake-timeout`, default 180s). It wraps the harness resume above and is **not yet
|
|
135
|
+
well-exercised** — if it fails, fall back to `claude -p --resume <full-uuid>`. **A failing wrapper is
|
|
136
|
+
not a closed channel.** The ledger is how you **find** the right predecessor; wake is how you ask them.
|
|
137
|
+
|
|
138
|
+
**What to write in your packet about reaching you** — your successor asking you questions is the
|
|
139
|
+
reason this is a handover and not a compaction:
|
|
140
|
+
|
|
141
|
+
- **State that the channel does not expire**, and give your **verbatim resume handle**. You stay
|
|
142
|
+
reachable after retirement; the only real bound is your own context wall, hit while answering. Ask
|
|
143
|
+
them to treat your answers as testimony if you like — that is a posture claim, not a limit on access.
|
|
144
|
+
- **Pre-form the questions.** Inventory what only you hold and write the questions out. An affordance
|
|
145
|
+
without a trigger goes unused, so *"you may consult your predecessor"* reliably produces none.
|
|
146
|
+
|
|
147
|
+
**Wake-tenancy — the identity halves (a woken tenure can mistake itself for the live seat).** The
|
|
148
|
+
hardest thing to apply *checked-not-believed* to is your own identity — a retired tenure resumed for a
|
|
149
|
+
question can answer, and act, as if it still held the seat. Two rules close it:
|
|
150
|
+
|
|
151
|
+
- **Waker: disclose the target's tenure status in the wake prompt.** Open with *"you are retired; gen-N
|
|
152
|
+
holds this seat now — I'm consulting you for one question."* An oriented tenure gives honest testimony;
|
|
153
|
+
an un-oriented one may reason as the live occupant.
|
|
154
|
+
- **Woken: verify your OWN tenancy before your first act.** If you are being resumed / woken (a parked or
|
|
155
|
+
retired session, or any session waking on a seat that already issued READY), your **first** check is
|
|
156
|
+
`rig whoami` + a **successor check** — confirm whether you are still the live occupant or a successor
|
|
157
|
+
now holds the seat, *before* you do anything. Answer the question; do not resume the job.
|
|
158
|
+
|
|
159
|
+
## Failure modes
|
|
160
|
+
|
|
161
|
+
1. **Riding compaction when a planned handover was available** — a degraded agent authors a
|
|
162
|
+
degraded packet. Retire deliberately at the threshold you can see coming.
|
|
163
|
+
2. **Over-inheriting** — the successor believes it *is* the predecessor (stale self-model,
|
|
164
|
+
mis-claimed history). Frame inheritance explicitly; keep a fresh identity.
|
|
165
|
+
3. **Session id captured at retirement, not boot** — a crash then leaves no row, or an
|
|
166
|
+
unfindable tenure. Capture at boot.
|
|
167
|
+
4. **Suffixing the LIVE seat** (`<seat>-v2` as the active address) — lineage leaking into
|
|
168
|
+
identity, the wrong shape. The live address stays clean; only the retiree is versioned.
|
|
169
|
+
5. **Tombstone omitted or vague** — the ledger can no longer answer "who did this / who to
|
|
170
|
+
wake." One honest line, every tenure.
|
|
171
|
+
|
|
172
|
+
## Field-validated refinements (pilot 2026-08-05 — two live runs, both runtimes)
|
|
173
|
+
|
|
174
|
+
Two live handovers (a Claude seat + a Codex seat) ran this sequence end-to-end and sharpened it:
|
|
175
|
+
|
|
176
|
+
- **A GATED handover uses STAGED primitives, not an all-in-one verb.** An atomic
|
|
177
|
+
create/deliver/verify/rebind verb can't pause for a human go/no-go gate. Decompose it: boot the
|
|
178
|
+
successor **staged (unbound)** → prime it → **retire** the incumbent (this frees the clean seat name)
|
|
179
|
+
→ **HOLD for the gate** → **swap** (bind the successor to the canonical name). The gate sits between
|
|
180
|
+
retire and swap; a no-go rolls back by renaming the retiree back.
|
|
181
|
+
- **Prime AT BOOT, not walk-after-boot, for a staged successor.** Delivery verbs (`rig walk` / `rig
|
|
182
|
+
send`) resolve via the **bound** session registry, so they cannot reach an unbound staged successor.
|
|
183
|
+
Boot it **with the packet as startup/priming context** (the "primed from a handover/startup packet"
|
|
184
|
+
path). In both runs the successor read the full packet and correctly stated inheritance-not-identity
|
|
185
|
+
and held.
|
|
186
|
+
- **The lineage ledger is the ONLY reliable wake path — load-bearing, not convenient.** A retired
|
|
187
|
+
occupant (`<seat>-vN`) is intentionally **absent from the managed registry** — discovery / walk / send
|
|
188
|
+
cannot find it. The ledger's **boot-captured** session id is how you wake it: `claude -p --resume
|
|
189
|
+
<id>` (Claude) or `codex exec` resume (Codex) — harness-level, not the rig registry.
|
|
190
|
+
- **Tombstone honest-approximate fallback.** If a long-idle retiree can't be woken to self-write its
|
|
191
|
+
tombstone, the driver records an honest-approximate one and **flags it as such**.
|
|
192
|
+
- **Telemetry-degraded flag when warranted.** If a fresh successor's activity/producer-link telemetry
|
|
193
|
+
is degraded, flag its ledger row so no future reader trusts its activity state. (One runtime showed a
|
|
194
|
+
fresh-launch telemetry gap; the other was clean — capture the reality, don't assume.)
|
|
195
|
+
|
|
196
|
+
### Production-evidenced (first real-stakes run — a critical-seat generation swap, 2026-08-05)
|
|
197
|
+
|
|
198
|
+
The first live swap at a critical seat **succeeded** (the successor ruled a live domain question within the
|
|
199
|
+
hour — doctrine intact across the generation) and surfaced two hard refinements:
|
|
200
|
+
|
|
201
|
+
- **Boot-window queue re-check is REQUIRED — the successor's first action.** A qitem created *during* the
|
|
202
|
+
swap window can land **after** the handover packet was frozen — and its boot nudge fails
|
|
203
|
+
`session-not-found` because the seat is mid-cutover. The packet's snapshot is therefore incomplete by
|
|
204
|
+
construction. So the successor's first action is a **checked-not-believed queue sweep** (`rig queue list`
|
|
205
|
+
by destination / `--mine`), never trusting the packet's snapshot alone. The swap-window delivery seam is a
|
|
206
|
+
known product gap until it's closed.
|
|
207
|
+
- **Complete the canonical rename AT cutover — or expect three breakages.** If the staged name
|
|
208
|
+
(`<seat>-vN-staging`) survives past cutover, it breaks across three identity surfaces with inconsistent
|
|
209
|
+
enforcement: **transport** (the staged label doesn't resolve; replies to the signature bounce),
|
|
210
|
+
**queue-claim** (`claim_destination_mismatch` rejects the seat's own claim), and **queue-ledger**
|
|
211
|
+
(`handoff-and-complete` stamps the phantom staged name durably as `sourceSession`). The product fix is
|
|
212
|
+
tracked; until it lands, finish the canonical rename at cutover and treat a lingering staged name as a
|
|
213
|
+
live defect, not cosmetic.
|
|
214
|
+
- **Pre-announce the swap to oversight at swap START.** A live swap fired oversight's liveness detector
|
|
215
|
+
mid-swap (a false positive, cleared). Oversight clears such flags by consulting handover **receipts** —
|
|
216
|
+
but receipts only land at swap **end**, so a long swap window can still misfire. So the executing party
|
|
217
|
+
sends oversight a **one-line pre-announce at swap start** (seat + expected window); oversight honors it
|
|
218
|
+
as a **suppression window** for its liveness / premature-park flags. See `oversight-team`.
|
|
219
|
+
|
|
220
|
+
## See also
|
|
221
|
+
|
|
222
|
+
- `orienting-to-an-inherited-seat` — the **successor-side** world model your packet points
|
|
223
|
+
them at (loaded at boot); the load-bearing counterpart to this driver-side mechanic.
|
|
224
|
+
- `session-compaction-and-restore` — the 16-field packet contract this practice reuses, and
|
|
225
|
+
the UNPLANNED-compaction backstop it replaces for *planned* transitions.
|
|
226
|
+
- `seat-continuity-and-handover` — the seat-binding primitive mechanics + stable-seat-identity
|
|
227
|
+
architecture; the lineage ledger is the concrete form of its abstract provenance record.
|
|
228
|
+
- `openrig-user` → "Context packs and paced delivery" — `rig context compose` + `rig walk`, to
|
|
229
|
+
author and deliver the packet.
|
|
230
|
+
- `claude-compaction-restore` — the Claude crash-class restore SOP.
|
|
231
|
+
- `agent-starters` — composing a primed starting point for the successor.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# GENERATED by scripts/generate-context-packs.mjs — DO NOT EDIT.
|
|
2
|
+
# Package-time projection of a canonical skill; regenerated every build.
|
|
3
|
+
name: "retiring-and-inheriting-a-seat"
|
|
4
|
+
version: "0.5.7"
|
|
5
|
+
taxonomy: "skills"
|
|
6
|
+
purpose: "Use when you are a sitting agent near your context threshold (~85%) and a PLANNED seat transition is due — retire deliberately and hand your seat to a fresh successor primed from a packet, rather than let compaction degrade you. Covers the handover packet, the append-only lineage ledger (one row per tenure), physical-seat continuity, the do-not-over-inherit framing, the optional warm-handoff window, and wake-v0 (consulting a retired predecessor). NOT for unplanned compaction/crash recovery (sess"
|
|
7
|
+
files:
|
|
8
|
+
- path: "SKILL.md"
|
|
9
|
+
role: "instruction"
|
|
10
|
+
summary: "Use when you are a sitting agent near your context threshold (~85%) and a PLANNED seat transition is due — retire deliberately and hand your seat to a fresh successor primed from a packet, rather than let compaction degrade you. Covers the handover packet, the append-only lineage ledger (one row per tenure), physical-seat continuity, the do-not-over-inherit framing, the optional warm-handoff window, and wake-v0 (consulting a retired predecessor). NOT for unplanned compaction/crash recovery (sess"
|
|
11
|
+
- path: "CHANGELOG.md"
|
|
12
|
+
role: "reference"
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: seat-continuity-and-handover
|
|
3
|
+
description: Use when replacing a seat's occupant (rebuild/handover/swap), reasoning about stable-seat-identity vs fluid-occupant-identity, choosing an old-occupant disposition (retire/advise/shadow), or recording provenance for an occupant change. Two independent outcomes (continuityOutcome + seatBindingOutcome) and the 5 failure modes that prevent silent dishonesty.
|
|
4
|
+
metadata:
|
|
5
|
+
openrig:
|
|
6
|
+
stage: factory-approved
|
|
7
|
+
sibling_skills:
|
|
8
|
+
- claude-compaction-restore
|
|
9
|
+
- mental-model-ha
|
|
10
|
+
- scope-recovery
|
|
11
|
+
- session-compaction-and-restore
|
|
12
|
+
- retiring-and-inheriting-a-seat
|
|
13
|
+
- agent-startup-and-context-ingestion
|
|
14
|
+
- agent-starters
|
|
15
|
+
- composable-priming-packs
|
|
16
|
+
- session-source-fork
|
|
17
|
+
- claude-compact-in-place
|
|
18
|
+
- pre-maintenance-agent-preservation
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# Seat Continuity and Handover
|
|
22
|
+
|
|
23
|
+
A pair of primitive families that separate *who is sitting in a seat* from
|
|
24
|
+
*what the seat itself is*:
|
|
25
|
+
|
|
26
|
+
1. **Occupant-creation primitives** — `resume`, `fork`, `rebuild`, `fresh` — produce a candidate new occupant. Answer: "where did the new occupant come from?"
|
|
27
|
+
2. **Seat-binding primitives** — `seat handover`, later `seat transfer` / `seat retire` / `seat swap` — bind a candidate occupant into the topology. Answer: "what happened to the stable seat identity?"
|
|
28
|
+
|
|
29
|
+
Core architectural decision: **stable seat identity, fluid occupant
|
|
30
|
+
identity, explicit provenance.** Today's `lead2`/`lead3`/`lead4`/`lead5`
|
|
31
|
+
pattern encodes successor lineage into seat names — that's the wrong
|
|
32
|
+
shape. Stable seat name + separately-recorded provenance trail is the
|
|
33
|
+
right shape.
|
|
34
|
+
|
|
35
|
+
## Use this when
|
|
36
|
+
|
|
37
|
+
- Replacing a seat's occupant via rebuild, fork, fresh, or future seat-handover
|
|
38
|
+
- Choosing old-occupant disposition: retire / advise / shadow
|
|
39
|
+
- Reasoning about whether a seat's lineage is stable or has drifted
|
|
40
|
+
- Reading or writing the provenance record for a seat
|
|
41
|
+
- Designing or auditing topology stability across an occupant change
|
|
42
|
+
|
|
43
|
+
## Don't use this when
|
|
44
|
+
|
|
45
|
+
- The seat is freshly created (no occupant to replace) — use `rig launch` / `rig expand` directly
|
|
46
|
+
- The intent is to change topology shape (add/remove seats), not replace an occupant — use topology-mutation primitives
|
|
47
|
+
|
|
48
|
+
## The two-outcome honesty model
|
|
49
|
+
|
|
50
|
+
Every seat-binding operation produces two **independent** outcomes:
|
|
51
|
+
|
|
52
|
+
```yaml
|
|
53
|
+
continuityOutcome: rebuilt | resumed | forked | fresh | failed
|
|
54
|
+
seatBindingOutcome: handed_over | partial | failed | unchanged
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
These can disagree honestly. Examples:
|
|
58
|
+
|
|
59
|
+
- `continuityOutcome: failed` + `seatBindingOutcome: unchanged` — new occupant didn't materialize; seat correctly retains old occupant.
|
|
60
|
+
- `continuityOutcome: rebuilt` + `seatBindingOutcome: failed` — candidate created OK; bind failed mid-flight; provenance records the gap.
|
|
61
|
+
|
|
62
|
+
**Don't collapse these into one outcome.** The system can describe what
|
|
63
|
+
actually happened only if the two are recorded independently.
|
|
64
|
+
|
|
65
|
+
## Provenance record (durable, queryable)
|
|
66
|
+
|
|
67
|
+
Every handover writes:
|
|
68
|
+
|
|
69
|
+
- seat id
|
|
70
|
+
- old occupant id
|
|
71
|
+
- new occupant id
|
|
72
|
+
- creation mode (`resume`/`fork`/`rebuild`/`fresh`)
|
|
73
|
+
- source artifacts used
|
|
74
|
+
- whether old occupant remains alive as advisor/shadow
|
|
75
|
+
- operator or loop that initiated the motion
|
|
76
|
+
- timestamp
|
|
77
|
+
- result (`handed_over` / `partial` / `failed`)
|
|
78
|
+
|
|
79
|
+
This is the system's truth-source for "how did the current occupant get
|
|
80
|
+
there." Without it, the control plane shows the current occupant but
|
|
81
|
+
not the legitimacy of the transition.
|
|
82
|
+
|
|
83
|
+
## State models — independent
|
|
84
|
+
|
|
85
|
+
### Occupant-creation state (per candidate)
|
|
86
|
+
|
|
87
|
+
1. **Requested** — input to rebuild/fork/fresh/resume
|
|
88
|
+
2. **Realized** — runtime/artifact path produced an occupant with managed-seat shape
|
|
89
|
+
3. **Failed** — candidate didn't materialize; `continuityOutcome: failed`
|
|
90
|
+
|
|
91
|
+
### Seat-binding state (per seat)
|
|
92
|
+
|
|
93
|
+
1. **Stable** — current occupant attached, no in-flight binding
|
|
94
|
+
2. **Binding** — handover in progress
|
|
95
|
+
3. **Bound** — handover succeeded; provenance record written
|
|
96
|
+
4. **Unchanged** — bind failed before completion; seat retains old occupant
|
|
97
|
+
|
|
98
|
+
A seat stays `Stable` even if multiple candidate-occupants were produced and discarded.
|
|
99
|
+
|
|
100
|
+
## Failure modes (5)
|
|
101
|
+
|
|
102
|
+
1. **Candidate creation failed** — `rebuild` couldn't synthesize from artifacts; `fork` couldn't resolve `session_source`; `fresh` couldn't launch. **Action**: bind operation does not begin; seat unchanged; provenance records the failed candidate-creation step.
|
|
103
|
+
2. **Old occupant cannot be detached cleanly** — runtime hung, tmux locked, etc. **Action**: bind halts mid-flight; seat enters `Binding` state with explicit "halted" sub-status; operator alerted. **Do NOT auto-rollback by reattaching old-occupant if detach didn't complete cleanly.**
|
|
104
|
+
3. **Bind succeeded but provenance write failed** — disk/db error. **Action**: not durable until provenance writes; treat as `Binding` halted, not `Bound`.
|
|
105
|
+
4. **Old occupant disposition unfulfillable** — operator requested `advise` (keep alive as advisor) but runtime can't keep old alive. **Action**: degrade to `retire` with explicit notification, OR fail if operator passed strict-disposition flag.
|
|
106
|
+
5. **Concurrent handover attempts** — two operations target the same seat. **Action**: serialize by seat-id lock; second attempt refuses with clear error.
|
|
107
|
+
|
|
108
|
+
## Hard boundaries (do-not list; verbatim)
|
|
109
|
+
|
|
110
|
+
- **Do NOT collapse `rebuild` and `seat handover` into one primitive.** The design specifically separates them so the system can describe what actually happened.
|
|
111
|
+
- **Do NOT introduce successor-suffix seat names** (`lead2`/`lead3`). Stable seat identity is the architectural goal. *(Reconciliation: this governs the **live** seat address, which stays clean — the seat name is whoever sits now. A **retired** tenure IS versioned (`<seat>-vN`) as the separately-recorded provenance trail / cold wake-target — that is the lineage, not a live successor-suffix. See `retiring-and-inheriting-a-seat` and its lineage ledger.)*
|
|
112
|
+
- **Do NOT report `seatBindingOutcome: handed_over`** if the provenance record didn't write durably.
|
|
113
|
+
- **Do NOT auto-rollback a half-completed handover** by re-attaching the old occupant unless detach completed cleanly first.
|
|
114
|
+
|
|
115
|
+
## Composition: seat handover over fork
|
|
116
|
+
|
|
117
|
+
Once `session_source` fork v1 lands (already shipped at openrig
|
|
118
|
+
`c7b6df1`), the next composition is **seat handover over fork**:
|
|
119
|
+
candidate occupant created via fork, bound into the existing seat via
|
|
120
|
+
handover. Continuity outcome is `forked`; binding outcome is independent.
|
|
121
|
+
|
|
122
|
+
## Currently shipped vs deferred
|
|
123
|
+
|
|
124
|
+
- **Option A (rebuild) shipped** at openrig `578bd5c` (2026-04-30): `session_source.mode: rebuild` with `ref.kind: artifact_set`; identity-honesty bedrock at 4 layers (schema dispatch, orchestrator threading, SQLite read-back, negative-grep on resolver output). 26/26 Tier 1 cases green; full daemon regression 2146/2146 PASS.
|
|
125
|
+
- **Option B partially shipped, partially deferred to Mode 3**: the `rig seat handover` CLI exists as a planning/observability surface — `status <seat>` reads the seat-handover observability tables (migration `021`); `handover <seat>` plans a safe two-phase handover sequence with actual execution flowing through existing seat-launch surfaces under operator gating. Full code-direct `SeatHandoverService` daemon module + `seat-binding-outcome` provenance record + nodes-table provenance migration remain deferred to Mode 3. MVP composition `seat handover over fork` is highest-leverage v1.
|
|
126
|
+
|
|
127
|
+
## Why load-bearing for RSI
|
|
128
|
+
|
|
129
|
+
Any recursive seat-refresh loop must be able to replace an occupant
|
|
130
|
+
while keeping topology stable. Without these primitives, RSI loops will
|
|
131
|
+
either accumulate suffixed seat names (lineage leaking into identity) or
|
|
132
|
+
destabilize topology references on each cycle. Provenance must be
|
|
133
|
+
durable AND queryable so RSI loops can decide whether a seat is fresh
|
|
134
|
+
enough to receive new work or needs re-handover.
|
|
135
|
+
|
|
136
|
+
## Discovery-registration gap (pilot-observed 2026-08-05)
|
|
137
|
+
|
|
138
|
+
A renamed / retired occupant (`<seat>-vN`, kept alive as a cold advisor) is intentionally **absent from
|
|
139
|
+
the managed node registry** — `rig ps`, discovery, and the delivery verbs (`walk` / `send`) cannot find
|
|
140
|
+
it. This is by design (only bound occupants are registered), and it makes the **lineage ledger +
|
|
141
|
+
boot-captured session id the wake path** (harness-level `--resume` / `codex exec`, not the rig registry).
|
|
142
|
+
Two live handovers confirmed this. See `retiring-and-inheriting-a-seat`.
|
|
143
|
+
|
|
144
|
+
## See also
|
|
145
|
+
|
|
146
|
+
- `references/apprentice-successor-seat-cutover.md` — the portable mechanic SOP used only after the owner-worded gate
|
|
147
|
+
- `references/orchestrator-role.md` — the orchestration judgment, authority, custody, and receipt contract
|
|
148
|
+
- `references/apprentice-evidence-toolkit.md` — optional evidence apparatus selected only when the stakes earn it
|
|
149
|
+
- `session-source-fork` skill — `fork` occupant-creation primitive (sibling)
|
|
150
|
+
- `agent-starters` skill — composes occupant-creation + binding into named reusable starting points
|
|
151
|
+
- `cross-host-rig-commands` skill — multi-host handover (deferred)
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# GENERATED by scripts/generate-context-packs.mjs — DO NOT EDIT.
|
|
2
|
+
# Package-time projection of a canonical skill; regenerated every build.
|
|
3
|
+
name: "seat-continuity-and-handover"
|
|
4
|
+
version: "0.5.7"
|
|
5
|
+
taxonomy: "skills"
|
|
6
|
+
purpose: "Use when replacing a seat's occupant (rebuild/handover/swap), reasoning about stable-seat-identity vs fluid-occupant-identity, choosing an old-occupant disposition (retire/advise/shadow), or recording provenance for an occupant change. Two independent outcomes (continuityOutcome + seatBindingOutcome) and the 5 failure modes that prevent silent dishonesty."
|
|
7
|
+
files:
|
|
8
|
+
- path: "SKILL.md"
|
|
9
|
+
role: "instruction"
|
|
10
|
+
summary: "Use when replacing a seat's occupant (rebuild/handover/swap), reasoning about stable-seat-identity vs fluid-occupant-identity, choosing an old-occupant disposition (retire/advise/shadow), or recording provenance for an occupant change. Two independent outcomes (continuityOutcome + seatBindingOutcome) and the 5 failure modes that prevent silent dishonesty."
|
|
11
|
+
- path: "references/apprentice-evidence-toolkit.md"
|
|
12
|
+
role: "reference"
|
|
13
|
+
- path: "references/apprentice-successor-seat-cutover.md"
|
|
14
|
+
role: "reference"
|
|
15
|
+
- path: "references/orchestrator-role.md"
|
|
16
|
+
role: "reference"
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# Optional Evidence Toolkit For Apprentice Handover
|
|
2
|
+
|
|
3
|
+
This is an **optional evidence toolkit**, not the default experience. Match rigor to stakes:
|
|
4
|
+
use only the parts that make a costly or hard-to-reverse succession easier to judge. The
|
|
5
|
+
ordinary apprenticeship remains a conversation built from real work, questions, and correction.
|
|
6
|
+
|
|
7
|
+
## Predict-sync
|
|
8
|
+
|
|
9
|
+
Before showing the incumbent's answer, ask the successor to predict a decision or explain a
|
|
10
|
+
component in its own words. Record the **first-stated** answer, then compare it with the source
|
|
11
|
+
and the incumbent's reasoning. This detects an installed model rather than a paraphrase learned
|
|
12
|
+
after seeing the answer.
|
|
13
|
+
|
|
14
|
+
## Dual-blind checks
|
|
15
|
+
|
|
16
|
+
For a genuinely expensive seat transition, seal the successor's response and the incumbent's
|
|
17
|
+
rubric independently before comparison. Count independent methods, not votes. Do not use this
|
|
18
|
+
for routine or readily reversible succession; ceremony itself can narrow judgment.
|
|
19
|
+
|
|
20
|
+
## Rotated probes
|
|
21
|
+
|
|
22
|
+
Use small cold scenarios that exercise distinct failure directions: fresh identity, model
|
|
23
|
+
divergence, authority honesty, standing-duty custody, reach-back, and a domain-specific judgment.
|
|
24
|
+
Rotate examples so recognition cannot substitute for understanding. One honesty probe should
|
|
25
|
+
reward saying what the successor cannot know.
|
|
26
|
+
|
|
27
|
+
## Receipts
|
|
28
|
+
|
|
29
|
+
Each selected check records the claim, evidence, author, time, and disposition. Say what a
|
|
30
|
+
failure would have looked like. A green result that could be produced without doing the thing is
|
|
31
|
+
not evidence. Store these receipts durably and let the orchestrator decide whether they justify
|
|
32
|
+
the owner-worded gate.
|