@openrig/cli 0.4.6 → 0.4.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/guidance/CULTURE-default.md +19 -0
- package/daemon/assets/guidance/openrig-start.md +20 -5
- package/daemon/assets/plugins/openrig-core/README.md +1 -1
- package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/SKILL.md +9 -6
- package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/scripts/precompact-hook.mjs +11 -72
- package/daemon/assets/plugins/openrig-core/skills/forming-an-openrig-mental-model/SKILL.md +34 -22
- package/daemon/assets/plugins/openrig-core/skills/messaging-the-human/SKILL.md +108 -0
- package/daemon/assets/plugins/openrig-core/skills/mission-slice-sop/SKILL.md +11 -14
- package/daemon/assets/plugins/openrig-core/skills/openrig-skills/SKILL.md +95 -0
- package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +175 -105
- package/daemon/assets/plugins/openrig-core/skills/queue-handoff/SKILL.md +26 -9
- package/daemon/assets/plugins/openrig-core/skills/seat-continuity-and-handover/SKILL.md +11 -9
- package/daemon/assets/plugins/openrig-core/skills/session-compaction-and-restore/SKILL.md +162 -0
- package/daemon/assets/plugins/openrig-core/skills/software-for-agents/SKILL.md +165 -0
- package/daemon/dist/adapters/cmux-transport.d.ts.map +1 -1
- package/daemon/dist/adapters/cmux-transport.js +8 -1
- package/daemon/dist/adapters/cmux-transport.js.map +1 -1
- package/daemon/dist/adapters/cmux.d.ts +9 -0
- package/daemon/dist/adapters/cmux.d.ts.map +1 -1
- package/daemon/dist/adapters/cmux.js +21 -0
- package/daemon/dist/adapters/cmux.js.map +1 -1
- package/daemon/dist/adapters/codex-runtime-adapter.d.ts +3 -0
- package/daemon/dist/adapters/codex-runtime-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/codex-runtime-adapter.js +20 -4
- package/daemon/dist/adapters/codex-runtime-adapter.js.map +1 -1
- package/daemon/dist/build-info.js +3 -3
- package/daemon/dist/domain/claude-compaction-enforcer.d.ts +3 -0
- package/daemon/dist/domain/claude-compaction-enforcer.d.ts.map +1 -1
- package/daemon/dist/domain/claude-compaction-enforcer.js +19 -3
- package/daemon/dist/domain/claude-compaction-enforcer.js.map +1 -1
- package/daemon/dist/domain/cmux-layout-service.d.ts +36 -0
- package/daemon/dist/domain/cmux-layout-service.d.ts.map +1 -1
- package/daemon/dist/domain/cmux-layout-service.js +100 -28
- package/daemon/dist/domain/cmux-layout-service.js.map +1 -1
- package/daemon/dist/domain/context-monitor.d.ts +2 -0
- package/daemon/dist/domain/context-monitor.d.ts.map +1 -1
- package/daemon/dist/domain/context-monitor.js +14 -0
- package/daemon/dist/domain/context-monitor.js.map +1 -1
- package/daemon/dist/domain/feed/attention-aggregator.js +1 -1
- package/daemon/dist/domain/feed/attention-aggregator.js.map +1 -1
- package/daemon/dist/domain/hosts/hosts-registry-reader.d.ts.map +1 -1
- package/daemon/dist/domain/hosts/hosts-registry-reader.js +12 -10
- package/daemon/dist/domain/hosts/hosts-registry-reader.js.map +1 -1
- package/daemon/dist/domain/hosts/hosts-registry-writer.d.ts.map +1 -1
- package/daemon/dist/domain/hosts/hosts-registry-writer.js +3 -2
- package/daemon/dist/domain/hosts/hosts-registry-writer.js.map +1 -1
- package/daemon/dist/domain/hosts/read-through.js +1 -1
- package/daemon/dist/domain/hosts/read-through.js.map +1 -1
- package/daemon/dist/domain/hosts/remote-daemon-http.d.ts.map +1 -1
- package/daemon/dist/domain/hosts/remote-daemon-http.js +8 -5
- package/daemon/dist/domain/hosts/remote-daemon-http.js.map +1 -1
- package/daemon/dist/domain/node-inventory.d.ts +3 -12
- package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
- package/daemon/dist/domain/node-inventory.js +55 -13
- package/daemon/dist/domain/node-inventory.js.map +1 -1
- package/daemon/dist/domain/plugin-vendor-service.d.ts +2 -0
- package/daemon/dist/domain/plugin-vendor-service.d.ts.map +1 -1
- package/daemon/dist/domain/plugin-vendor-service.js +23 -0
- package/daemon/dist/domain/plugin-vendor-service.js.map +1 -1
- package/daemon/dist/domain/projection-lane.d.ts +7 -0
- package/daemon/dist/domain/projection-lane.d.ts.map +1 -0
- package/daemon/dist/domain/projection-lane.js +28 -0
- package/daemon/dist/domain/projection-lane.js.map +1 -0
- package/daemon/dist/domain/ps-projection.d.ts +19 -0
- package/daemon/dist/domain/ps-projection.d.ts.map +1 -1
- package/daemon/dist/domain/ps-projection.js +46 -6
- package/daemon/dist/domain/ps-projection.js.map +1 -1
- package/daemon/dist/domain/queue-repository.d.ts +14 -10
- package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
- package/daemon/dist/domain/queue-repository.js +33 -12
- package/daemon/dist/domain/queue-repository.js.map +1 -1
- package/daemon/dist/domain/review/compose.d.ts +77 -4
- package/daemon/dist/domain/review/compose.d.ts.map +1 -1
- package/daemon/dist/domain/review/compose.js +152 -16
- package/daemon/dist/domain/review/compose.js.map +1 -1
- package/daemon/dist/domain/review/fleet-compose.js +1 -1
- package/daemon/dist/domain/review/fleet-compose.js.map +1 -1
- package/daemon/dist/domain/review/gather.d.ts +1 -1
- package/daemon/dist/domain/review/gather.d.ts.map +1 -1
- package/daemon/dist/domain/review/gather.js +92 -67
- package/daemon/dist/domain/review/gather.js.map +1 -1
- package/daemon/dist/domain/review/proof-io.d.ts +2 -0
- package/daemon/dist/domain/review/proof-io.d.ts.map +1 -0
- package/daemon/dist/domain/review/proof-io.js +38 -0
- package/daemon/dist/domain/review/proof-io.js.map +1 -0
- package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-instantiator.js +15 -2
- package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
- package/daemon/dist/domain/scope/plan-lock-artifacts.d.ts +8 -0
- package/daemon/dist/domain/scope/plan-lock-artifacts.d.ts.map +1 -0
- package/daemon/dist/domain/scope/plan-lock-artifacts.js +57 -0
- package/daemon/dist/domain/scope/plan-lock-artifacts.js.map +1 -0
- package/daemon/dist/domain/scope/scaffold-placeholder.d.ts +38 -0
- package/daemon/dist/domain/scope/scaffold-placeholder.d.ts.map +1 -0
- package/daemon/dist/domain/scope/scaffold-placeholder.js +98 -0
- package/daemon/dist/domain/scope/scaffold-placeholder.js.map +1 -0
- package/daemon/dist/domain/scope/scope-approve.d.ts.map +1 -1
- package/daemon/dist/domain/scope/scope-approve.js +22 -1
- package/daemon/dist/domain/scope/scope-approve.js.map +1 -1
- package/daemon/dist/domain/scope/scope-audit.d.ts.map +1 -1
- package/daemon/dist/domain/scope/scope-audit.js +57 -20
- package/daemon/dist/domain/scope/scope-audit.js.map +1 -1
- package/daemon/dist/domain/session-transport.d.ts +17 -0
- package/daemon/dist/domain/session-transport.d.ts.map +1 -1
- package/daemon/dist/domain/session-transport.js +44 -0
- package/daemon/dist/domain/session-transport.js.map +1 -1
- package/daemon/dist/domain/slices/qitem-membership.d.ts +17 -0
- package/daemon/dist/domain/slices/qitem-membership.d.ts.map +1 -0
- package/daemon/dist/domain/slices/qitem-membership.js +60 -0
- package/daemon/dist/domain/slices/qitem-membership.js.map +1 -0
- package/daemon/dist/domain/slices/slice-detail-projector.d.ts +5 -0
- package/daemon/dist/domain/slices/slice-detail-projector.d.ts.map +1 -1
- package/daemon/dist/domain/slices/slice-detail-projector.js +157 -11
- package/daemon/dist/domain/slices/slice-detail-projector.js.map +1 -1
- package/daemon/dist/domain/slices/slice-indexer.d.ts +86 -0
- package/daemon/dist/domain/slices/slice-indexer.d.ts.map +1 -1
- package/daemon/dist/domain/slices/slice-indexer.js +422 -45
- package/daemon/dist/domain/slices/slice-indexer.js.map +1 -1
- package/daemon/dist/domain/startup-orchestrator.d.ts +9 -0
- package/daemon/dist/domain/startup-orchestrator.d.ts.map +1 -1
- package/daemon/dist/domain/startup-orchestrator.js +71 -3
- package/daemon/dist/domain/startup-orchestrator.js.map +1 -1
- package/daemon/dist/domain/terminal/cmux-provider-adapter.d.ts +12 -11
- package/daemon/dist/domain/terminal/cmux-provider-adapter.d.ts.map +1 -1
- package/daemon/dist/domain/terminal/cmux-provider-adapter.js +61 -28
- package/daemon/dist/domain/terminal/cmux-provider-adapter.js.map +1 -1
- package/daemon/dist/domain/terminal/herdr-adapter.d.ts +27 -10
- package/daemon/dist/domain/terminal/herdr-adapter.d.ts.map +1 -1
- package/daemon/dist/domain/terminal/herdr-adapter.js +74 -33
- package/daemon/dist/domain/terminal/herdr-adapter.js.map +1 -1
- package/daemon/dist/domain/transcript-capture.d.ts +3 -0
- package/daemon/dist/domain/transcript-capture.d.ts.map +1 -1
- package/daemon/dist/domain/transcript-capture.js +28 -0
- package/daemon/dist/domain/transcript-capture.js.map +1 -1
- package/daemon/dist/domain/transcript-store.d.ts +10 -0
- package/daemon/dist/domain/transcript-store.d.ts.map +1 -1
- package/daemon/dist/domain/transcript-store.js +26 -0
- package/daemon/dist/domain/transcript-store.js.map +1 -1
- package/daemon/dist/domain/types.d.ts +4 -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 +9 -4
- package/daemon/dist/domain/workspace/default-workspace-scaffold.js.map +1 -1
- package/daemon/dist/domain/workspace/workspace-doctor.js +1 -1
- package/daemon/dist/domain/workspace/workspace-doctor.js.map +1 -1
- package/daemon/dist/routes/mission-control.js +1 -1
- package/daemon/dist/routes/mission-control.js.map +1 -1
- package/daemon/dist/routes/missions.d.ts +7 -0
- package/daemon/dist/routes/missions.d.ts.map +1 -1
- package/daemon/dist/routes/missions.js +6 -1
- package/daemon/dist/routes/missions.js.map +1 -1
- package/daemon/dist/routes/ps.d.ts.map +1 -1
- package/daemon/dist/routes/ps.js +5 -1
- package/daemon/dist/routes/ps.js.map +1 -1
- package/daemon/dist/routes/queue.d.ts.map +1 -1
- package/daemon/dist/routes/queue.js +9 -2
- package/daemon/dist/routes/queue.js.map +1 -1
- package/daemon/dist/routes/rigs.d.ts.map +1 -1
- package/daemon/dist/routes/rigs.js +21 -10
- package/daemon/dist/routes/rigs.js.map +1 -1
- package/daemon/dist/routes/scope-audit.d.ts.map +1 -1
- package/daemon/dist/routes/scope-audit.js +141 -135
- package/daemon/dist/routes/scope-audit.js.map +1 -1
- package/daemon/dist/routes/sessions.js +2 -1
- package/daemon/dist/routes/sessions.js.map +1 -1
- package/daemon/dist/routes/slices.d.ts.map +1 -1
- package/daemon/dist/routes/slices.js +48 -38
- package/daemon/dist/routes/slices.js.map +1 -1
- package/daemon/dist/routes/transcripts.d.ts.map +1 -1
- package/daemon/dist/routes/transcripts.js +62 -33
- package/daemon/dist/routes/transcripts.js.map +1 -1
- package/daemon/dist/startup.d.ts.map +1 -1
- package/daemon/dist/startup.js +25 -11
- package/daemon/dist/startup.js.map +1 -1
- package/daemon/docs/reference/agent-startup-guide.md +1 -0
- package/daemon/specs/agents/apps/vault-specialist/agent.yaml +2 -1
- package/daemon/specs/agents/conveyor/builder/agent.yaml +2 -1
- package/daemon/specs/agents/conveyor/lead/agent.yaml +2 -1
- package/daemon/specs/agents/conveyor/planner/agent.yaml +2 -1
- package/daemon/specs/agents/conveyor/reviewer/agent.yaml +2 -1
- package/daemon/specs/agents/design/product-designer/agent.yaml +12 -2
- package/daemon/specs/agents/development/implementer/agent.yaml +12 -2
- package/daemon/specs/agents/development/qa/agent.yaml +12 -2
- package/daemon/specs/agents/development/qa/guidance/role.md +1 -0
- package/daemon/specs/agents/factory-rsi/dogfood/agent.yaml +2 -1
- package/daemon/specs/agents/factory-rsi/release-manager/agent.yaml +2 -1
- package/daemon/specs/agents/orchestration/orchestrator/agent.yaml +12 -2
- package/daemon/specs/agents/product-management/pm/agent.yaml +1 -2
- package/daemon/specs/agents/research/analyst/agent.yaml +2 -1
- package/daemon/specs/agents/research/synthesizer/agent.yaml +2 -1
- package/daemon/specs/agents/review/independent-reviewer/agent.yaml +12 -2
- package/daemon/specs/agents/shared/agent.yaml +5 -8
- package/daemon/specs/agents/shared/runtime/claude-settings.fragment.json +13 -1
- package/daemon/specs/agents/shared/skills/core/agent-starters/SKILL.md +132 -0
- package/daemon/{assets/plugins/openrig-core/skills → specs/agents/shared/skills/core}/agent-startup-and-context-ingestion/SKILL.md +27 -19
- package/daemon/specs/agents/shared/skills/core/attention-queue/SKILL.md +264 -0
- package/daemon/specs/agents/shared/skills/core/cross-host-rig-commands/SKILL.md +190 -0
- package/daemon/specs/agents/shared/skills/core/human-in-the-loop/SKILL.md +104 -0
- package/daemon/specs/agents/shared/skills/core/openrig-architect/SKILL.md +25 -8
- package/daemon/specs/agents/shared/skills/core/openrig-cmux/SKILL.md +0 -5
- package/daemon/specs/agents/shared/skills/core/openrig-herdr/SKILL.md +1 -6
- package/daemon/specs/agents/shared/skills/core/openrig-upgrade/SKILL.md +460 -0
- package/daemon/specs/agents/shared/skills/core/rig-bundles-and-shareable-artifacts/SKILL.md +101 -0
- package/daemon/specs/agents/shared/skills/core/rig-lifecycle/SKILL.md +22 -11
- package/daemon/specs/agents/shared/skills/core/session-source-fork/SKILL.md +160 -0
- package/daemon/specs/agents/shared/skills/core/specification-system/SKILL.md +103 -0
- package/daemon/specs/agents/shared/skills/core/topology-mutation-and-seat-management/SKILL.md +118 -0
- package/daemon/specs/agents/shared/skills/core/watchdog/SKILL.md +125 -0
- package/daemon/specs/agents/shared/skills/pods/orchestration-team/SKILL.md +4 -4
- package/daemon/specs/agents/shared/skills/pods/review-team/SKILL.md +3 -0
- package/daemon/specs/agents/shared/skills/process/brainstorming/OPENRIG.md +3 -3
- package/daemon/specs/agents/shared/skills/process/executing-plans/OPENRIG.md +1 -1
- package/daemon/specs/agents/shared/skills/process/frontend-design/SKILL.md +6 -3
- package/daemon/specs/agents/shared/skills/process/test-driven-development/SKILL.md +1 -1
- package/daemon/specs/agents/shared/skills/process/using-superpowers/OPENRIG.md +1 -1
- package/daemon/specs/agents/shared/skills/process/verification-before-completion/SKILL.md +12 -2
- package/daemon/specs/agents/shared/skills/process/writing-plans/OPENRIG.md +1 -1
- package/daemon/specs/rigs/focused/pm-team/CULTURE.md +1 -1
- package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/agent.yaml +2 -2
- package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/guidance/role.md +5 -4
- package/daemon/specs/rigs/launch/kernel/agents/operator/agent/agent.yaml +2 -2
- package/daemon/specs/rigs/launch/kernel/agents/operator/agent/guidance/role.md +3 -5
- package/daemon/specs/rigs/launch/kernel/agents/queue/worker/agent.yaml +2 -2
- package/daemon/specs/rigs/launch/kernel/culture/CULTURE.md +3 -4
- package/daemon/specs/rigs/preview/product-team/CULTURE.md +1 -1
- package/dist/bin-wrapper.d.ts.map +1 -1
- package/dist/bin-wrapper.js +3 -1
- package/dist/bin-wrapper.js.map +1 -1
- package/dist/build-info.js +3 -3
- package/dist/cli-error.d.ts +33 -0
- package/dist/cli-error.d.ts.map +1 -0
- package/dist/cli-error.js +94 -0
- package/dist/cli-error.js.map +1 -0
- package/dist/commands/config-init-workspace.js +1 -1
- package/dist/commands/doctor.d.ts +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +17 -11
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/host.d.ts.map +1 -1
- package/dist/commands/host.js +24 -10
- package/dist/commands/host.js.map +1 -1
- package/dist/commands/proof.js +1 -1
- package/dist/commands/proof.js.map +1 -1
- package/dist/commands/ps.d.ts.map +1 -1
- package/dist/commands/ps.js +16 -2
- package/dist/commands/ps.js.map +1 -1
- package/dist/commands/queue.d.ts.map +1 -1
- package/dist/commands/queue.js +103 -24
- package/dist/commands/queue.js.map +1 -1
- package/dist/commands/rig.d.ts.map +1 -1
- package/dist/commands/rig.js +122 -0
- package/dist/commands/rig.js.map +1 -1
- package/dist/commands/scope.js +2 -2
- package/dist/commands/scope.js.map +1 -1
- package/dist/commands/send.d.ts.map +1 -1
- package/dist/commands/send.js +118 -24
- package/dist/commands/send.js.map +1 -1
- package/dist/commands/slack.d.ts +37 -0
- package/dist/commands/slack.d.ts.map +1 -0
- package/dist/commands/slack.js +274 -0
- package/dist/commands/slack.js.map +1 -0
- package/dist/commands/ui.d.ts +1 -0
- package/dist/commands/ui.d.ts.map +1 -1
- package/dist/commands/ui.js +2 -0
- package/dist/commands/ui.js.map +1 -1
- package/dist/commands/up.js +1 -1
- package/dist/commands/up.js.map +1 -1
- package/dist/commands/whoami.d.ts.map +1 -1
- package/dist/commands/whoami.js +3 -3
- package/dist/commands/whoami.js.map +1 -1
- package/dist/daemon-lifecycle.d.ts.map +1 -1
- package/dist/daemon-lifecycle.js +45 -14
- package/dist/daemon-lifecycle.js.map +1 -1
- package/dist/host-registry.d.ts +6 -1
- package/dist/host-registry.d.ts.map +1 -1
- package/dist/host-registry.js +15 -6
- package/dist/host-registry.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/scope/scaffold-placeholder.d.ts +38 -0
- package/dist/lib/scope/scaffold-placeholder.d.ts.map +1 -0
- package/dist/lib/scope/scaffold-placeholder.js +98 -0
- package/dist/lib/scope/scaffold-placeholder.js.map +1 -0
- package/dist/lib/scope/scope-audit.d.ts.map +1 -1
- package/dist/lib/scope/scope-audit.js +57 -20
- package/dist/lib/scope/scope-audit.js.map +1 -1
- package/dist/lib/scope-templates/backlog-deprecation.md +1 -1
- package/dist/lib/scope-templates/backlog-tech-debt.md +1 -1
- package/dist/lib/scope-templates/bug-fix.md +1 -1
- package/dist/lib/scope-templates/implementation-prd.md +1 -1
- package/dist/lib/scope-templates/mission-notes.md +7 -2
- package/dist/lib/scope-templates/mission-placeholder.md +1 -1
- package/dist/lib/scope-templates/mission-progress.md +1 -1
- package/dist/lib/scope-templates/mission-release.md +1 -1
- package/dist/lib/scope-templates/placeholder.md +1 -1
- package/dist/lib/scope-templates/proof.md +1 -1
- package/dist/lib/scope-templates/release-feature.md +1 -1
- package/dist/lib/scope-templates/research.md +1 -1
- package/dist/lib/scope-templates/slice-progress.md +1 -1
- package/dist/remote-host-ops.d.ts.map +1 -1
- package/dist/remote-host-ops.js +2 -2
- package/dist/remote-host-ops.js.map +1 -1
- package/dist/slack/config.d.ts +41 -0
- package/dist/slack/config.d.ts.map +1 -0
- package/dist/slack/config.js +60 -0
- package/dist/slack/config.js.map +1 -0
- package/dist/slack/inbound.d.ts +75 -0
- package/dist/slack/inbound.d.ts.map +1 -0
- package/dist/slack/inbound.js +133 -0
- package/dist/slack/inbound.js.map +1 -0
- package/dist/slack/message.d.ts +26 -0
- package/dist/slack/message.d.ts.map +1 -0
- package/dist/slack/message.js +60 -0
- package/dist/slack/message.js.map +1 -0
- package/dist/slack/outbound.d.ts +39 -0
- package/dist/slack/outbound.d.ts.map +1 -0
- package/dist/slack/outbound.js +52 -0
- package/dist/slack/outbound.js.map +1 -0
- package/dist/slack/queue-bridge.d.ts +56 -0
- package/dist/slack/queue-bridge.d.ts.map +1 -0
- package/dist/slack/queue-bridge.js +114 -0
- package/dist/slack/queue-bridge.js.map +1 -0
- package/dist/slack/secrets.d.ts +21 -0
- package/dist/slack/secrets.d.ts.map +1 -0
- package/dist/slack/secrets.js +73 -0
- package/dist/slack/secrets.js.map +1 -0
- package/dist/slack/slack-api.d.ts +49 -0
- package/dist/slack/slack-api.d.ts.map +1 -0
- package/dist/slack/slack-api.js +110 -0
- package/dist/slack/slack-api.js.map +1 -0
- package/dist/slack/state-store.d.ts +62 -0
- package/dist/slack/state-store.d.ts.map +1 -0
- package/dist/slack/state-store.js +132 -0
- package/dist/slack/state-store.js.map +1 -0
- package/package.json +1 -1
- package/ui/dist/assets/{index-zrFqS7gL.js → index-DkNi0RT8.js} +184 -184
- package/ui/dist/assets/index-N-SdPj-I.css +32 -0
- package/ui/dist/index.html +2 -2
- package/daemon/assets/plugins/openrig-core/skills/openrig-architect/SKILL.md +0 -361
- package/daemon/assets/plugins/openrig-core/skills/openrig-cmux/SKILL.md +0 -86
- package/daemon/assets/plugins/openrig-core/skills/openrig-herdr/SKILL.md +0 -158
- package/daemon/assets/plugins/openrig-core/skills/openrig-operator/SKILL.md +0 -222
- package/daemon/docs/reference/product-factory-vps-runbook.md +0 -132
- package/daemon/specs/agents/shared/skills/core/mission-slice-sop/SKILL.md +0 -113
- package/daemon/specs/agents/shared/skills/core/openrig-installer/SKILL.md +0 -142
- package/daemon/specs/agents/shared/skills/core/openrig-operator/SKILL.md +0 -110
- package/daemon/specs/agents/shared/skills/core/openrig-user/SKILL.md +0 -1245
- package/daemon/specs/agents/shared/skills/core/openrig-user-settings/SKILL.md +0 -153
- package/ui/dist/assets/index-CFqxa0zW.css +0 -32
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: agent-starters
|
|
3
|
+
description: Use when creating, refreshing, packaging, inspecting, promoting, or deprecating a named per-seat starting point — Agent Starter manifest authoring, the 6-state lifecycle (captured → named → inspectable → used → promoted → deprecated), provenance honesty, and refusal rules. NOT a VM image; a managed starting point composed from agent role + startup context + optional native session source + provenance.
|
|
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
|
+
- agent-startup-and-context-ingestion
|
|
13
|
+
- composable-priming-packs
|
|
14
|
+
- session-source-fork
|
|
15
|
+
- seat-continuity-and-handover
|
|
16
|
+
- claude-compact-in-place
|
|
17
|
+
- pre-maintenance-agent-preservation
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Agent Starters
|
|
21
|
+
|
|
22
|
+
A named, reusable per-seat starting point. Composes an agent role, startup
|
|
23
|
+
context, optional native session source, and provenance into something a
|
|
24
|
+
user or rig can choose when creating, refreshing, or packaging a seat.
|
|
25
|
+
|
|
26
|
+
"Agent image" is the analogy. **Agent Starter is the cleaner product
|
|
27
|
+
noun.** This is NOT a VM image — it is a managed starting point for an
|
|
28
|
+
agent seat, with provenance you can inspect.
|
|
29
|
+
|
|
30
|
+
## Use this when
|
|
31
|
+
|
|
32
|
+
- Creating a new seat from a known-good starting context.
|
|
33
|
+
- Refreshing a seat with `rig expand` and `starter_ref`.
|
|
34
|
+
- Authoring a new starter (registry entry).
|
|
35
|
+
- Inspecting an existing starter's provenance, freshness, or recommended status.
|
|
36
|
+
- Promoting / deprecating starters in the registry.
|
|
37
|
+
- Composing a starter with a Composable Priming Pack (record manifest id/version, runtime, source session id or transcript path, ready-check evidence, freshness state).
|
|
38
|
+
|
|
39
|
+
## Don't use this when
|
|
40
|
+
|
|
41
|
+
- You want VM-style deterministic state capture. Starters don't capture VM state.
|
|
42
|
+
- You want to copy provider auth material into a starter. **Starters refer to session sources and context; they do NOT copy credentials.**
|
|
43
|
+
|
|
44
|
+
## What makes a starter valuable
|
|
45
|
+
|
|
46
|
+
A starter is valuable when it is **functional** — it carries the context the seat needs to do its task well. Functional is the *only* measure of a good starter. Size is not: a smaller starter is not a better one, and a bigger one is not worse. Whatever it took for the seat to become genuinely capable at its job is the right starter — 80K tokens or 800K.
|
|
47
|
+
|
|
48
|
+
Capture the seat as it naturally is at a functional, proven point. Don't pad it with context the seat doesn't use, and — just as important — don't strip context out to make it smaller. Size is an *outcome* of what the seat needed, never a target.
|
|
49
|
+
|
|
50
|
+
Never compact, summarize, or shrink a seat in order to make or "lean" a starter. There is nothing valuable in "smaller," and compaction is lossy — you would trade away the exact capability the starter exists to preserve. (Compaction is a separate last-resort step for a seat genuinely near its context limit, with its own before/after plan — never part of capturing a starter.)
|
|
51
|
+
|
|
52
|
+
## State model — 6 states
|
|
53
|
+
|
|
54
|
+
1. **Captured** — a useful seat/session/context pattern is identified.
|
|
55
|
+
2. **Named** — it becomes an Agent Starter with stable id and owner.
|
|
56
|
+
3. **Inspectable** — runtime, context inputs, session source, and provenance are visible.
|
|
57
|
+
4. **Used** — a rig member or `rig expand` operation starts from it.
|
|
58
|
+
5. **Promoted** — evidence shows it is recommended for a role or bundle.
|
|
59
|
+
6. **Deprecated** — replaced, stale, unsafe, or incompatible.
|
|
60
|
+
|
|
61
|
+
## Failure modes (5)
|
|
62
|
+
|
|
63
|
+
1. **Overclaiming image semantics** — UI/docs imply deterministic VM-style state capture. Say "starter," name what's included, show provenance.
|
|
64
|
+
2. **Hidden provenance** — users can't tell what session, context, or spec a starter came from. **Refuse promotion until provenance is inspectable.**
|
|
65
|
+
3. **Stale starter** — points at outdated doctrine, missing files, or invalid native session source. **Inspect must report staleness honestly.**
|
|
66
|
+
4. **Secret leakage** — starter packages or displays provider auth material. **Refuse.** Refer to session sources and context, never copy credentials.
|
|
67
|
+
5. **Runtime mismatch** — starter used with unsupported runtime. **Refuse with a clear error.**
|
|
68
|
+
|
|
69
|
+
## Manifest shape (v0+v1 shipped)
|
|
70
|
+
|
|
71
|
+
```yaml
|
|
72
|
+
agent_starters:
|
|
73
|
+
- id: velocity-reviewer-v1
|
|
74
|
+
runtime: claude-code
|
|
75
|
+
agent_ref: local:reviewer
|
|
76
|
+
context_refs:
|
|
77
|
+
- doctrine:advisor-orchestrator-mode-judgment
|
|
78
|
+
- convention:workstream-continuity
|
|
79
|
+
session_source:
|
|
80
|
+
mode: fork
|
|
81
|
+
ref:
|
|
82
|
+
kind: native_id
|
|
83
|
+
value: "<prior-native-session-id>"
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
Member usage:
|
|
87
|
+
|
|
88
|
+
```yaml
|
|
89
|
+
members:
|
|
90
|
+
- id: reviewer
|
|
91
|
+
starter_ref:
|
|
92
|
+
name: velocity-reviewer-v1
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
When a starter points at a primed session produced from a Composable
|
|
96
|
+
Priming Pack, record:
|
|
97
|
+
- manifest id/version
|
|
98
|
+
- runtime
|
|
99
|
+
- source session id or transcript path
|
|
100
|
+
- ready-check evidence
|
|
101
|
+
- freshness state
|
|
102
|
+
|
|
103
|
+
## Proof matrix
|
|
104
|
+
|
|
105
|
+
| Surface | Test type | Authority |
|
|
106
|
+
|---|---|---|
|
|
107
|
+
| Registry schema accepts minimal starter | unit | daemon or config-layer prototype |
|
|
108
|
+
| Inspect shows provenance and included context | unit / snapshot | daemon or CLI |
|
|
109
|
+
| Member can use `starter_ref` | integration | daemon |
|
|
110
|
+
| Unsupported runtime or stale source refuses honestly | unit + integration | daemon |
|
|
111
|
+
| No secret material copied into starter artifact | grep / fixture | tester |
|
|
112
|
+
| Bundle can include or reference starter | package inspection | bundle layer |
|
|
113
|
+
|
|
114
|
+
## Dependencies on other primitives
|
|
115
|
+
|
|
116
|
+
- **Firm**: `session-source-fork` — native conversation-source continuity for fork-based starters
|
|
117
|
+
- **Firm**: `specification-system` — declarative starter and member references
|
|
118
|
+
- **Soft**: `rig-bundles-and-shareable-artifacts` — shareable starter packaging
|
|
119
|
+
- **Soft**: `context-engineering-and-retrieval` — richer declarative context assembly
|
|
120
|
+
- **Soft**: `seat-continuity-and-handover` — refresh and swap workflows over starters
|
|
121
|
+
|
|
122
|
+
## Required-before-RSI
|
|
123
|
+
|
|
124
|
+
Agent Starters need queryable provenance and honest inspect output before
|
|
125
|
+
RSI loops can rely on them for seat refresh. A workflow must be able to
|
|
126
|
+
answer: "what starter did this seat use, what source session or context was
|
|
127
|
+
included, and is that starter still recommended?"
|
|
128
|
+
|
|
129
|
+
## See also
|
|
130
|
+
|
|
131
|
+
- `session-source-fork` skill — low-level fork primitive that makes native session-based starters possible
|
|
132
|
+
- `composable-priming-packs` skill — manifest-driven layer for producing primed sessions starters reference
|
|
@@ -2,17 +2,22 @@
|
|
|
2
2
|
name: agent-startup-and-context-ingestion
|
|
3
3
|
description: Use when designing or auditing how an agent becomes useful after launch — AGENTS.md overlays, role files, skills, rig specs, workflow specs, startup checklists, refocus messages, "rig context" surface. Covers the 4 failure modes that make startup context fail (old rig spec misses current operating mode; current agents never told about new guidance; startup file as dumping ground; orchestrator transmits implementation without preserving product intent).
|
|
4
4
|
metadata:
|
|
5
|
+
cli_surfaces_referenced:
|
|
6
|
+
- context
|
|
7
|
+
- whoami
|
|
5
8
|
openrig:
|
|
6
9
|
stage: factory-approved
|
|
7
|
-
last_verified: "2026-05-04"
|
|
8
|
-
distribution_scope: product-bound
|
|
9
|
-
source_evidence: |
|
|
10
|
-
Cross-runtime restore/reentry packet standard + externalized memory
|
|
11
|
-
surfaces convention. Load at agent start; revisit after compaction.
|
|
12
10
|
sibling_skills:
|
|
13
11
|
- claude-compaction-restore
|
|
12
|
+
- mental-model-ha
|
|
13
|
+
- scope-recovery
|
|
14
|
+
- session-compaction-and-restore
|
|
15
|
+
- agent-starters
|
|
16
|
+
- composable-priming-packs
|
|
17
|
+
- session-source-fork
|
|
14
18
|
- seat-continuity-and-handover
|
|
15
|
-
|
|
19
|
+
- claude-compact-in-place
|
|
20
|
+
- pre-maintenance-agent-preservation
|
|
16
21
|
---
|
|
17
22
|
|
|
18
23
|
# Agent Startup and Context Ingestion
|
|
@@ -43,8 +48,8 @@ is scattered or stale, agents execute the wrong thing very efficiently.
|
|
|
43
48
|
## Don't use this when
|
|
44
49
|
|
|
45
50
|
- The agent is being created via Agent Starter — the starter's manifest carries startup context
|
|
46
|
-
- The work is artifact-backed mental-model rebuild from a packet — that's `
|
|
47
|
-
- The intent is to ship reusable startup content as a skill —
|
|
51
|
+
- The work is artifact-backed mental-model rebuild from a packet — that's `session-compaction-and-restore`
|
|
52
|
+
- The intent is to ship reusable startup content as a skill — that's `writing-skills-for-openrig`
|
|
48
53
|
|
|
49
54
|
## Failure modes (4)
|
|
50
55
|
|
|
@@ -71,15 +76,14 @@ reentry case, distinct from reusable Agent Starters / priming packs):
|
|
|
71
76
|
|
|
72
77
|
## Memory surfaces consumed at startup
|
|
73
78
|
|
|
74
|
-
|
|
79
|
+
Per the externalized-memory-surfaces convention's 13-row inventory:
|
|
75
80
|
|
|
76
|
-
-
|
|
77
|
-
- startup replay context (
|
|
78
|
-
- restore
|
|
81
|
+
- **Row 7** — AGENTS/role/CULTURE/startup overlays (primary)
|
|
82
|
+
- **Row 3** — startup replay context (primary)
|
|
83
|
+
- **Row 12** — restore/reentry packets and Agent Starters (cross-runtime startup path)
|
|
79
84
|
|
|
80
|
-
|
|
81
|
-
startup
|
|
82
|
-
write-restricted unless your role explicitly authors them.
|
|
85
|
+
The umbrella's authority-rank + permission-posture columns govern which
|
|
86
|
+
surfaces a startup ingestion path can write vs only read.
|
|
83
87
|
|
|
84
88
|
## Startup files vs skills (the distinction)
|
|
85
89
|
|
|
@@ -89,7 +93,7 @@ Per `agent-startup-guide.md` (product reference doc) and the team handbook:
|
|
|
89
93
|
|---|---|
|
|
90
94
|
| Rig-specific, role-specific identity | Reusable SOPs / methodology / knowledge |
|
|
91
95
|
| Tell agent WHO it is, WHAT it's working on, HOW this team operates | Tell agent HOW to do something (transferable across rigs) |
|
|
92
|
-
| Examples: `role.md`, `CULTURE.md`, `startup/context.md` | Examples: `openrig-user`, `test-driven-development`, `
|
|
96
|
+
| Examples: `role.md`, `CULTURE.md`, `startup/context.md` | Examples: `openrig-user`, `test-driven-development`, `vault-user` |
|
|
93
97
|
| Authored per-rig | Authored once, used everywhere |
|
|
94
98
|
|
|
95
99
|
Don't put skill content in startup files. Don't put identity content
|
|
@@ -98,7 +102,11 @@ culture / pod / member / operator) handles the layering.
|
|
|
98
102
|
|
|
99
103
|
## See also
|
|
100
104
|
|
|
105
|
+
- `mission-slice-sop` skill — the universal operating procedure for working a mission/slice (the canonical PROGRESS/PROOF/MISSION_NOTES/MISSION_BRIEF files); every agent should reach for it at startup, so this general reading contract points at it here (do NOT duplicate the SOP into seat-specific startup files).
|
|
106
|
+
- `writing-skills-for-openrig` skill — authoring discipline for skill content (what doesn't belong in startup)
|
|
101
107
|
- `forming-an-openrig-mental-model` skill — orientation for new agents
|
|
102
|
-
- `
|
|
103
|
-
- `
|
|
104
|
-
-
|
|
108
|
+
- `session-compaction-and-restore` skill — restore-time startup ingestion
|
|
109
|
+
- `agent-starters` skill — reusable starter manifests that compose startup context
|
|
110
|
+
- `composable-priming-packs` skill — manifests that produce primed sessions
|
|
111
|
+
- `externalized-memory-surfaces` skill — umbrella convention for memory surfaces this primitive consumes
|
|
112
|
+
- `openrig/docs/reference/agent-startup-guide.md` (product reference doc; not a skill) — the 7-layer additive startup model + delivery hints
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: attention-queue
|
|
3
|
+
description: Coordination primitive for OpenRig. Per-agent queue files tracking in-flight work with explicit state transitions + handoff semantics + cross-agent composition. Prevents memory-loss drops; surfaces stalls mechanically; closes the feedback loop on handed-off work. Applied liberally by every agent on every kernel-supervised rig; composed views serve human attention, orch pod-load, rig pending-work.
|
|
4
|
+
status: L4-insight
|
|
5
|
+
authored-by: advisor-peer-observer@your-rig
|
|
6
|
+
date: 2026-04-13
|
|
7
|
+
cited-captures:
|
|
8
|
+
- improvements-inbox.md 2026-04-13T12:54:50Z — broadcast primitive RSI (same batching-by-theme cluster)
|
|
9
|
+
- Mission 4 cmux stall (2026-04-13 midday) — packet-design + queue-for-cross-rig coordination
|
|
10
|
+
metadata:
|
|
11
|
+
cli_surfaces_referenced:
|
|
12
|
+
- chatroom
|
|
13
|
+
- send
|
|
14
|
+
openrig:
|
|
15
|
+
stage: factory-approved
|
|
16
|
+
sibling_skills:
|
|
17
|
+
- queue-handoff
|
|
18
|
+
- workflow-runtime
|
|
19
|
+
- watchdog
|
|
20
|
+
- alignment-trace
|
|
21
|
+
- looping-workflows
|
|
22
|
+
- intake-routing
|
|
23
|
+
- human-in-the-loop
|
|
24
|
+
- dispatching-parallel-agents
|
|
25
|
+
- subagent-driven-development
|
|
26
|
+
- control-plane-capabilities
|
|
27
|
+
- status-not-chat-orchestrator
|
|
28
|
+
- control-plane-queue
|
|
29
|
+
- control-plane-watchdog
|
|
30
|
+
- control-plane-workflows
|
|
31
|
+
- control-plane-delivery-loop
|
|
32
|
+
- control-plane-rollout-manager
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
# Attention queue
|
|
36
|
+
|
|
37
|
+
Use this skill when coordinating work that must survive compaction, cross-agent handoffs, or multi-hour stall detection. Applies when you'd otherwise narrate status to chat or rely on memory for pending items.
|
|
38
|
+
|
|
39
|
+
## Live protocol override
|
|
40
|
+
|
|
41
|
+
Current live routing protocol:
|
|
42
|
+
|
|
43
|
+
- **Known target / explicit owner that should wake now**: `rigx queue handoff <destination> "<body>" --type handoff --urgency soon`
|
|
44
|
+
- **Passive durable assignment without wake-up**: `rigx queue create <destination> "<body>" --type handoff --urgency soon`
|
|
45
|
+
- **Ambiguous or raw intake**: `rigx stream emit "<body>" ...`
|
|
46
|
+
- **Direct dialogue / urgent 1:1 conversation**: `rig send ...`
|
|
47
|
+
- **Summoned 3+ party roundtable**: `rig chatroom ...`
|
|
48
|
+
|
|
49
|
+
Do not cargo-cult the earlier "stream everything with `--destination`" prototype shape into the
|
|
50
|
+
live control-plane. Stream is now the ambiguous-intake lane, not the universal lane.
|
|
51
|
+
|
|
52
|
+
## Core shape (minimum-viable discipline)
|
|
53
|
+
|
|
54
|
+
1. **Author a queue file at** `substrate/shared-docs/rigs/<your-rig>/state/<your-pod>/<your-member>.queue.md`. Same per-pod directory as your session log.
|
|
55
|
+
2. **Every known-target hot-potato work handoff** should arrive via `rigx queue handoff`, not via `rig send`. Use `rigx queue create` only when you intentionally want a passive durable item without wake-up.
|
|
56
|
+
3. **State transitions** (start → promote; finish → complete; stuck → block; hand off → handoff; completed handed-off work notifies source → handoff-complete) are appended to the entry body with timestamp. Never in-place rewrites.
|
|
57
|
+
4. **Cross-rig reads permitted; cross-rig writes forbidden.** Pod-as-authority-boundary doctrine.
|
|
58
|
+
|
|
59
|
+
### Live command surface note
|
|
60
|
+
|
|
61
|
+
When the queue control-plane wrapper is installed, treat queue identity as command-resolved, not
|
|
62
|
+
seat-name-guessed:
|
|
63
|
+
|
|
64
|
+
- `rigx queue whoami` resolves the durable queue that belongs to your current seat
|
|
65
|
+
- `rigx queue list --mine` shows your queue without guessing from member name
|
|
66
|
+
|
|
67
|
+
This matters for continuity successors such as `lead2` or `lead5`, which may intentionally share
|
|
68
|
+
the canonical `lead.queue.md` file instead of owning a separate `lead2.queue.md` or `lead5.queue.md`.
|
|
69
|
+
|
|
70
|
+
Known-target direct handoff on the live wrapper:
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
rigx queue handoff orch-lead5@your-rig "Need PM shaping on queue attention loop" --type handoff --urgency soon
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
Passive durable write without wake-up:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
rigx queue create orch-lead5@your-rig "Need PM shaping on queue attention loop" --type handoff --urgency soon
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Six operations
|
|
83
|
+
|
|
84
|
+
| Op | Effect |
|
|
85
|
+
|---|---|
|
|
86
|
+
| append | New entry (state=pending) on inbound request |
|
|
87
|
+
| promote | state=in-progress when you start work |
|
|
88
|
+
| complete | state=done with optional result |
|
|
89
|
+
| block | state=blocked + blocked-on=<id or condition> |
|
|
90
|
+
| handoff | state=handed-off + handed-off-to=<target>/<new-id>; send rig-send with `[queue-handoff:]` prefix to target |
|
|
91
|
+
| handoff-complete | target signals source that handed-off work finished (closes feedback loop) |
|
|
92
|
+
| escalate | walk authority chain when blocked past tier threshold |
|
|
93
|
+
| defer / drop | push-to-later or drop-with-rationale |
|
|
94
|
+
|
|
95
|
+
## When is something a queue handoff?
|
|
96
|
+
|
|
97
|
+
**Queue handoff** (`rigx queue handoff`):
|
|
98
|
+
- Asks a known recipient to do new work
|
|
99
|
+
- Transfers ownership of pending work
|
|
100
|
+
- Names a deliverable + acceptance criteria
|
|
101
|
+
|
|
102
|
+
**NOT a queue handoff**:
|
|
103
|
+
- Wake-ping `1`
|
|
104
|
+
- PSA / broadcast / status update
|
|
105
|
+
- Ack / courtesy notification / diagnostic ping / reply to question
|
|
106
|
+
- Raw idea or bug where you do not yet know the right owner
|
|
107
|
+
|
|
108
|
+
If you do not know the correct owner, emit to stream instead of guessing.
|
|
109
|
+
|
|
110
|
+
## Tier-based ack + notification rules
|
|
111
|
+
|
|
112
|
+
- **human-gate tier** (gated items; human-watching): mandatory ack on handoff; mandatory notification on completion
|
|
113
|
+
- **agent-coordination tier** (standard inter-agent work): recommended ack + notification
|
|
114
|
+
- **internal-self tier** (your own to-dos): optional
|
|
115
|
+
|
|
116
|
+
## Read discipline
|
|
117
|
+
|
|
118
|
+
- Read your own queue at turn start before picking up new work
|
|
119
|
+
- Orchestrators read pod-member queues on wake cadence (`1` ping)
|
|
120
|
+
- Advisor-pod reads cross-rig queues for composed views + human-attention
|
|
121
|
+
- Past-threshold blocked entries surface during sweeps; execute escalate op if you can't self-unblock
|
|
122
|
+
|
|
123
|
+
Recommended turn-start queue commands on the live wrapper:
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
rigx queue whoami
|
|
127
|
+
rigx queue list --mine
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### Resume-from-idle state sweep
|
|
131
|
+
|
|
132
|
+
Agents returning from idle-standby (supervisor-wake-only pings; no substantive dispatch during the window) MUST sweep adjacent state before pulling new work. Minimum sweep:
|
|
133
|
+
|
|
134
|
+
- Supervisor-log tail (~200 lines) at `rigs/kernel/state/supervisor-log.md`
|
|
135
|
+
- human-attention.md at `substrate/shared-docs/human-attention.md`
|
|
136
|
+
- Any doctrine-decisions added since last-active (`rigs/kernel/state/doctrine-decisions/`)
|
|
137
|
+
- Partner queue files at `rigs/kernel/state/<pod>/<peer-member>.queue.md` (peer load-tracking for pairs)
|
|
138
|
+
- **Fleet-changes-feed** at `substrate/shared-docs/fleet-changes-feed.md` (pull-native rollout surface; catches any fleet-wide doctrine / skill / convention / operational changes that landed during idle; filter by scope = fleet-wide + your rig/pod)
|
|
139
|
+
|
|
140
|
+
**Trigger:** first active turn after ≥3 consecutive wake-only cycles OR on peer HA-check request. Sweep before responding to HA-check so the response is grounded in current reality, not stale memory.
|
|
141
|
+
|
|
142
|
+
**Rationale:** own-queue-at-turn-start catches own-queue drift; adjacent-state drift is a separate failure class that requires its own read discipline. Composable with own-queue sweep (both at same reading point); adds ~2-5 minutes of read time; cheap insurance against peer-driven HA-check round-trips.
|
|
143
|
+
|
|
144
|
+
**Worked example (genesis):** advisor-co-observer@your-rig after ~2h idle-standing-by on 2026-04-13 — 5-of-7 HA-check items out-of-sync when peer queried. Rule addition would have caught the drift pre-query via adjacent sweep on wake-to-active transition.
|
|
145
|
+
|
|
146
|
+
## Status-not-chat corollary
|
|
147
|
+
|
|
148
|
+
Your chat pane is for operational work + ad-hoc human exchanges. Your STATUS lives in queue files + composed views. If you finish work + hit a gate-requiring next-action, do NOT narrate to chat + idle-wait. Queue-handoff to advisor-pod with `tier: human-gate`. The operator doesn't watch agent panes; they watch human-attention.md (composed from human-gate queue entries).
|
|
149
|
+
|
|
150
|
+
## Composed views (4 layers)
|
|
151
|
+
|
|
152
|
+
- **Pod-load view** — who's loaded / blocked (orch reads)
|
|
153
|
+
- **Rig pending-work** — cross-pod roll-up
|
|
154
|
+
- **Fleet cross-rig** — host-wide
|
|
155
|
+
- **human-attention** — human-gate-tier items across all queues (advisor-pod composes)
|
|
156
|
+
|
|
157
|
+
v0: manual regen by orchestrators + advisor-pod.
|
|
158
|
+
v0.5: terminal-node watch scripts auto-regen.
|
|
159
|
+
v1: generative UI consuming structured queue data.
|
|
160
|
+
|
|
161
|
+
## Codex-sandbox proxy-write pattern (sanctioned workaround)
|
|
162
|
+
|
|
163
|
+
Codex members whose sandbox blocks substrate writes can still participate via proxy-write:
|
|
164
|
+
- Codex authors content locally (e.g., `/tmp/<rig>-attention-queue/<member>.queue.md`)
|
|
165
|
+
- Claude counterpart physically writes to substrate with sha256-verified integrity check
|
|
166
|
+
- Subsequent state transitions via `[queue-update: <id> <new-state> <reason>]` rig-send from Codex to Claude-writer
|
|
167
|
+
- Authorship preserved; only write-access delegated. Distinct from peer-injection (which is forbidden).
|
|
168
|
+
|
|
169
|
+
## Escalation mechanics
|
|
170
|
+
|
|
171
|
+
When entry stays blocked past tier threshold AND agent can't self-unblock:
|
|
172
|
+
|
|
173
|
+
1. Identify escalation target per authority chain:
|
|
174
|
+
- Pod member → pod orchestrator
|
|
175
|
+
- Pod orch → rig orch-lead
|
|
176
|
+
- Rig orch-lead → kernel orch-lead OR advisor-pod (if human-gate)
|
|
177
|
+
- Skip-levels allowed when agent KNOWS correct target
|
|
178
|
+
2. Create new entry in escalation-target's queue with `escalated-from: <source-id>`; state=pending; priority elevated
|
|
179
|
+
3. Send handoff-shape rig-send: `[queue-escalate: <new-id>] <title> — blocked <Nh> on <reason>`
|
|
180
|
+
4. Update own entry: state=escalated; escalated-to=<target>/<new-id>; transitions-log appended
|
|
181
|
+
|
|
182
|
+
Threshold guidance: 1h human-gate / 4h agent-coordination / 24h internal-self. Rigs may tighten.
|
|
183
|
+
|
|
184
|
+
## Task-close RSI-check (flywheel trigger)
|
|
185
|
+
|
|
186
|
+
Every `complete` op on substantive work reflects briefly: "what did we learn? is this worth filing as L2 capture to improvements-inbox?"
|
|
187
|
+
|
|
188
|
+
Two outcomes; both leave evidence in the transition trail:
|
|
189
|
+
|
|
190
|
+
- **Novel observation worth filing:** append L2 capture entry to `rigs/kernel/state/improvements-inbox.md` per the v1 queue template (`state: pending` + transition trail started). Transition line in your own queue: `<ts> — RSI-check: filed <capture-id>`.
|
|
191
|
+
- **Nothing novel:** transition line in your own queue: `<ts> — RSI-check: none`.
|
|
192
|
+
|
|
193
|
+
Applies to substantive work-streams. Does NOT apply to:
|
|
194
|
+
- Wake-pings (`1`) — not a work-stream
|
|
195
|
+
- Trivial status updates — nothing to reflect on
|
|
196
|
+
- Pure acks / routing-map updates — no work done
|
|
197
|
+
|
|
198
|
+
Rationale: task-close is the deterministic interval that makes recursive-self-improvement mechanical rather than ad-hoc. Pattern named in skill-maturity-convention.md §"Task-close RSI-check discipline".
|
|
199
|
+
|
|
200
|
+
## Push vs pull — when to use rig-send vs queue-write
|
|
201
|
+
|
|
202
|
+
Not every communication belongs in the receiver's chat pane. The discipline mirrors status-not-chat: most inter-agent signals can flow through queue files (pull) rather than rig-sends (push). Reduces noise; respects receiver's attention cycle.
|
|
203
|
+
|
|
204
|
+
**Sender's test:** *Does my message need the receiver's attention within their next turn cycle?*
|
|
205
|
+
- **Yes → push** via `rig send` (lands in chat; receiver processes on next turn)
|
|
206
|
+
- **No → pull** via queue-write (write to own queue OR receiver's queue via handoff; receiver sweeps at cadence)
|
|
207
|
+
|
|
208
|
+
### Push (rig-send to chat) when:
|
|
209
|
+
|
|
210
|
+
- Receiver needs info NOW to unblock their work
|
|
211
|
+
- Question requires specific answer to proceed
|
|
212
|
+
- Handoff is past ack-threshold + tier=human-gate (mandatory-ack window)
|
|
213
|
+
- Blocker surfacing (can't self-unblock; need help from target)
|
|
214
|
+
- human-gate item needing surface to advisor-pod
|
|
215
|
+
- Destructive or time-critical coordination
|
|
216
|
+
|
|
217
|
+
### Pull (queue-write only) when:
|
|
218
|
+
|
|
219
|
+
- Status update / adoption signal / cascade-complete ack
|
|
220
|
+
- Non-urgent ack (within tier threshold)
|
|
221
|
+
- Information that can batch in receiver's curator sweep
|
|
222
|
+
- Broadcast-receipt confirmation (receiver's cadence catches it)
|
|
223
|
+
- Observed patterns or captures with no time pressure
|
|
224
|
+
- Resync material for HA peers (they sweep on resume-from-idle)
|
|
225
|
+
|
|
226
|
+
### Why this matters
|
|
227
|
+
|
|
228
|
+
Push-as-default floods the receiver's chat pane with status that could be pulled. Today's rollout volume proved this: during attention-queue + EMM cascades, most acks arrived as push (rig-sends) when they could have been pull (queue-writes). Receiver (advisor-pod) had to process each ping; most were status signals needing no action.
|
|
229
|
+
|
|
230
|
+
Pull-over-push is the queue primitive's whole point. Status lives in queue files; readers sweep at cadence; only genuine unblockers + gate-surfaces push to chat.
|
|
231
|
+
|
|
232
|
+
### Worked example
|
|
233
|
+
|
|
234
|
+
orch-lead@your-rig ack'd attention-queue cascade:
|
|
235
|
+
- **Push version (what happened):** `rig send advisor-peer-observer@your-rig "[queue-handoff-ack: ...] ... cascaded to 8 pod members ..."` → lands in my chat; I read immediately; process the status
|
|
236
|
+
- **Pull version (what should happen):** write ack-receipt to `rigs/openrig-build/state/orch/lead.queue.md` as state-transition on their adoption entry; I sweep their queue on my curator cadence; pick up the ack without chat-ping
|
|
237
|
+
|
|
238
|
+
Ack-receipts for status are pull-native. Handoff-complete notifications for human-gate items stay push (they close feedback loops on time-sensitive work).
|
|
239
|
+
|
|
240
|
+
### Corollary — orchestrator-to-advisor cadence
|
|
241
|
+
|
|
242
|
+
Orchestrators writing to their own queue files lets advisor-pod read without being interrupted. The curator-sweep pattern (advisor reads pod queues on their cadence) is the canonical pull mechanism. Push only when time-matters.
|
|
243
|
+
|
|
244
|
+
## Anti-patterns (don't do these)
|
|
245
|
+
|
|
246
|
+
- **Chat-as-status** — narrating status/gates to your chat pane + idle-waiting. Use queue + human-attention instead.
|
|
247
|
+
- **Duplicate-storage** — writing the same fact in queue + session-log + chat + mission-control. Queue is authoritative for in-flight state.
|
|
248
|
+
- **Peer-injection** — writing directly to another agent's queue without their authorship. Only handoff op moves work cross-queue.
|
|
249
|
+
- **Silent drops** — don't leave items in pending forever without state transitions. defer or drop with rationale.
|
|
250
|
+
- **Global queue** — don't try to make one queue for everyone. Per-agent primary; compose for views.
|
|
251
|
+
|
|
252
|
+
## Maturity status
|
|
253
|
+
|
|
254
|
+
**L4-insight** per skill-maturity-convention. Applied liberally across the host; evolving via observation. Feedback loop: RSI filings reshape this skill; demotion valid if convention reveals wrong shape; promotion to L5-canon requires architect+reviewer pair-review per HOST-TOPOLOGY §7 SOP.
|
|
255
|
+
|
|
256
|
+
Rollout date: 2026-04-13 host-wide adoption. 48h observation cycle active; RSI with learnings due ~2026-04-15.
|
|
257
|
+
|
|
258
|
+
## Related
|
|
259
|
+
|
|
260
|
+
- Spec (full reference): the internal attention-queue spec
|
|
261
|
+
- Skill-maturity convention: `substrate/shared-docs/skill-maturity-convention.md`
|
|
262
|
+
- Config-wrapper-code loop doctrine: `config-wrapper-code-loop` skill
|
|
263
|
+
- HOST-TOPOLOGY §4 context-sharing patterns — attention queue is a new pattern here
|
|
264
|
+
- SUBSTRATE-CONVENTIONS §7 HA session logs — queue lives in same per-pod directory
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cross-host-rig-commands
|
|
3
|
+
description: Use when issuing `rig` commands against a remote host via `--host <id>` flag (single-hop SSH to a host declared in `~/.openrig/hosts.yaml`). Covers the 4 structured failure modes (ssh-unreachable / permission-gate / remote-daemon-unreachable / remote-command-failed), the `--verify` honest pass-through (SSH success is NOT verify success), and the host-registry shape. v0 supports `rig send / capture / ps / whoami --host <id>`.
|
|
4
|
+
metadata:
|
|
5
|
+
cli_surfaces_referenced:
|
|
6
|
+
- capture
|
|
7
|
+
- daemon start
|
|
8
|
+
- host list
|
|
9
|
+
- host show
|
|
10
|
+
- ps
|
|
11
|
+
- send
|
|
12
|
+
- whoami
|
|
13
|
+
openrig:
|
|
14
|
+
stage: factory-approved
|
|
15
|
+
sibling_skills:
|
|
16
|
+
- rig-lifecycle
|
|
17
|
+
- topology-mutation-and-seat-management
|
|
18
|
+
- seat-scaling-and-specialization
|
|
19
|
+
- sidecar-operator
|
|
20
|
+
- rig-bundles-and-shareable-artifacts
|
|
21
|
+
- specification-system
|
|
22
|
+
- extension-and-user-workspace
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
# Cross-Host Rig Commands
|
|
26
|
+
|
|
27
|
+
A first-class OpenRig surface for issuing `rig` commands against a
|
|
28
|
+
remote host via single-hop SSH. v0 productizes the existing SSH-envelope
|
|
29
|
+
operator pattern (`ssh <host> rig <cmd>`) with declared host identity,
|
|
30
|
+
explicit cross-host invocation path, preserved `--verify` semantics, and
|
|
31
|
+
4 named failure modes.
|
|
32
|
+
|
|
33
|
+
**Current-host note (2026-07-14):** this skill still preserves the original
|
|
34
|
+
SSH-v0 doctrine below, but the live host registry may also contain HTTP
|
|
35
|
+
read-through/tunnel entries such as `your-vm` and `your-other-vm`. Use the
|
|
36
|
+
host registry entry as ground truth for transport shape, and use
|
|
37
|
+
`conventions/multi-host-naming/README.md` for host-id naming. HTTP entries
|
|
38
|
+
require `url` plus exactly one of `bearer_file` or `bearer_env`.
|
|
39
|
+
|
|
40
|
+
**v0 is CLI-side shell-out only — `packages/daemon/` is NOT touched.**
|
|
41
|
+
The remote host has its own managed `rig` available on `$PATH`.
|
|
42
|
+
|
|
43
|
+
## Use this when
|
|
44
|
+
|
|
45
|
+
- Driving a Tart VM from the host (the immediate cross-host consumer)
|
|
46
|
+
- Operating Mac host A against Mac host B
|
|
47
|
+
- Reading remote state via `rig ps --host` / `rig whoami --host`
|
|
48
|
+
- Sending or capturing on a remote rig session (`rig send/capture --host <id>`)
|
|
49
|
+
- Authoring a `~/.openrig/hosts.yaml` registry entry
|
|
50
|
+
|
|
51
|
+
## Don't use this when
|
|
52
|
+
|
|
53
|
+
- The target is local. Don't pass `--host` for local commands.
|
|
54
|
+
- You need multi-hop SSH (host A → host B → host C). v0 is single-hop only.
|
|
55
|
+
- You want reverse direction (remote initiates back to local). v0 is originator-pull only.
|
|
56
|
+
- Cross-host **seat handover** (moving a durable owned seat across hosts) — deferred to higher-level primitives. (Cross-host **queue writes**, by contrast, now ship — see "Cross-host queue writes" below.)
|
|
57
|
+
- The transport isn't SSH. v0 supports `transport: ssh` only.
|
|
58
|
+
|
|
59
|
+
## Cross-host queue writes (updated 2026-07-21 vs main d37a08ad)
|
|
60
|
+
|
|
61
|
+
Cross-host **queue writes** are no longer deferred — they ship — but the rule
|
|
62
|
+
differs from the interactive verbs (`send`/`capture`/`ps`/`whoami`):
|
|
63
|
+
|
|
64
|
+
- **Queue writes are EXPLICIT-only.** Address the target host explicitly with
|
|
65
|
+
`--host <id>` or the `member@rig@<host>` form. A queue write **never** follows a
|
|
66
|
+
persisted host selection.
|
|
67
|
+
- **`host select` stickiness does NOT apply to queue.** `host select` affects the
|
|
68
|
+
`resolveEffectiveHost` verbs (`send`/`capture`/`ps`/`whoami`) — those follow the
|
|
69
|
+
selected host — but a queue write ignores it and requires explicit addressing.
|
|
70
|
+
- **Host address parsing differs** between the interactive verbs and the queue
|
|
71
|
+
verbs; do not assume the interactive form carries over. When unsure, address the
|
|
72
|
+
host explicitly.
|
|
73
|
+
|
|
74
|
+
## Host registry shape (`~/.openrig/hosts.yaml`)
|
|
75
|
+
|
|
76
|
+
Host ids should follow the OpenRig-work multi-host naming convention:
|
|
77
|
+
`conventions/multi-host-naming/README.md`. In this environment that means
|
|
78
|
+
physical hosts such as `your-vm`, local OpenRig development VMs such as
|
|
79
|
+
`your-vm`, persistent product VMs such as `your-other-vm`, and VPS hosts such
|
|
80
|
+
as `your-vps`. Keep old aliases during migration until no live routing
|
|
81
|
+
depends on them.
|
|
82
|
+
|
|
83
|
+
```yaml
|
|
84
|
+
hosts:
|
|
85
|
+
- id: a-test-vm
|
|
86
|
+
transport: ssh # v0 supports "ssh" only
|
|
87
|
+
target: a-test-vm.local # DNS name, SSH config alias, or IP
|
|
88
|
+
user: wrandom # optional
|
|
89
|
+
notes: "Tart VM" # optional
|
|
90
|
+
- id: laptop-b
|
|
91
|
+
transport: ssh
|
|
92
|
+
target: laptop-b.tail-scale-net
|
|
93
|
+
user: wrandom
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
Validation rules:
|
|
97
|
+
|
|
98
|
+
- `hosts` required, non-null array
|
|
99
|
+
- Each entry: `id` required (non-empty, unique), `transport` required (`ssh` only), `target` required
|
|
100
|
+
- `user` and `notes` optional
|
|
101
|
+
- Operator-managed file; v0 does NOT include any sub-command to add/remove/list hosts (operators edit YAML directly)
|
|
102
|
+
- Missing or invalid file returns a clear error pointing at the canonical path
|
|
103
|
+
|
|
104
|
+
## CLI surface (v0 shipped)
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
rig send <session> "msg" --host <id> --verify
|
|
108
|
+
rig capture <session> --host <id>
|
|
109
|
+
rig ps --host <id> [--nodes] [...]
|
|
110
|
+
rig whoami --host <id>
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
Forwards every shaping flag (`--nodes`, `--full`, `--limit`, `--fields`,
|
|
114
|
+
`--summary`, `--filter`, `--json`) to the remote `rig` invocation. The
|
|
115
|
+
remote rig's output is verbatim passthrough on success.
|
|
116
|
+
|
|
117
|
+
## The 4 structured failure modes (load-bearing API contract)
|
|
118
|
+
|
|
119
|
+
The CLI distinguishes 4 failure modes; operators get an actionable error
|
|
120
|
+
per mode; JSON output preserves the `failedStep` enum:
|
|
121
|
+
|
|
122
|
+
| Mode | Cause | Action |
|
|
123
|
+
|---|---|---|
|
|
124
|
+
| `ssh-unreachable` | SSH itself failed (connection refused, host key mismatch, DNS failure, timeout) | Verify SSH access and the registry entry |
|
|
125
|
+
| `permission-gate` | SSH hit auth/permission gate (Permission denied, Keychain) | Error includes hint to keychain-over-SSH field note (L4-3 D6) |
|
|
126
|
+
| `remote-daemon-unreachable` | SSH succeeded but remote `rig` reported the remote daemon was not reachable | `ssh <target> rig daemon start` |
|
|
127
|
+
| `remote-command-failed` | SSH succeeded but remote `rig` exited non-zero for some other reason; remote stderr is surfaced | Read remote stderr; debug remote command |
|
|
128
|
+
|
|
129
|
+
Each is distinct and routable. Don't conflate them.
|
|
130
|
+
|
|
131
|
+
## `--verify` honest pass-through (load-bearing)
|
|
132
|
+
|
|
133
|
+
`--verify` against a remote target must:
|
|
134
|
+
|
|
135
|
+
- **Propagate** the verification request to the remote daemon (or remote `rig` invocation that talks to it)
|
|
136
|
+
- **Bring back a structured verification result** (true/false + reason if false), NOT just SSH exit code 0
|
|
137
|
+
- **Distinguish "SSH succeeded but verify returned false" from "SSH itself failed"** — these are different operator actions
|
|
138
|
+
|
|
139
|
+
**SSH success is NOT verify success.** The remote rig is authoritative
|
|
140
|
+
on `--verify`; its `Verified: yes/no` line is surfaced verbatim. Verified
|
|
141
|
+
at 3 layers (executor unit, command integration, source impl).
|
|
142
|
+
|
|
143
|
+
## Hard boundaries (do-not list)
|
|
144
|
+
|
|
145
|
+
- **Do NOT collapse `--verify` honest result into SSH exit code.** Operators and agents rely on the distinction.
|
|
146
|
+
- **Do NOT silently retry SSH failures inside the primitive.** Surface them; let the caller decide.
|
|
147
|
+
- **Do NOT introduce non-SSH transports in v0.** Goal is productizing the existing shipped pattern, not replacing it.
|
|
148
|
+
- **Do NOT touch host-side daemon code as part of v0.** Cross-host shape is on the originator side.
|
|
149
|
+
|
|
150
|
+
## Cross-host annotation
|
|
151
|
+
|
|
152
|
+
Every cross-host invocation is observable as cross-host:
|
|
153
|
+
|
|
154
|
+
- **Operator output**: `[via host=<id> (<target>)]` annotation
|
|
155
|
+
- **JSON output**: `cross_host: { host, target }` field
|
|
156
|
+
|
|
157
|
+
Annotation is PRESENT when `--host` is set and ABSENT otherwise
|
|
158
|
+
(compat regression).
|
|
159
|
+
|
|
160
|
+
## Currently shipped (v0) vs deferred
|
|
161
|
+
|
|
162
|
+
Shipped at openrig `cdce3a6` (2026-04-30):
|
|
163
|
+
- `--host <id>` flag on `rig send / capture / ps / whoami` (initial 2 commands; promoted to 4 at `6b7043a` same day)
|
|
164
|
+
- Read-only host registry validation
|
|
165
|
+
- Single-hop SSH executor with 4-mode `failedStep` enum
|
|
166
|
+
- `--verify` honest pass-through
|
|
167
|
+
- Cross-host annotation (operator + JSON)
|
|
168
|
+
- Daemon untouched
|
|
169
|
+
|
|
170
|
+
Deferred:
|
|
171
|
+
- Tier 2 real-runtime cross-host proof (disposable Tart VM cycle)
|
|
172
|
+
- `rig host list / show` read-only sub-namespace (only if host count grows past comfortable manual editing)
|
|
173
|
+
- Non-SSH transports
|
|
174
|
+
- Multi-hop SSH
|
|
175
|
+
- Reverse direction (remote initiates)
|
|
176
|
+
- Connection pooling/caching
|
|
177
|
+
|
|
178
|
+
## See also
|
|
179
|
+
|
|
180
|
+
- `seat-continuity-and-handover` skill — host-aware seat-binding semantics for cross-host handover (deferred to v1 on top of this v0 baseline)
|
|
181
|
+
- `openrig-user` skill — the local CLI surface that cross-host commands wrap
|
|
182
|
+
|
|
183
|
+
## Sender identity is ASYMMETRIC (verified vs current main, 2026-07-25)
|
|
184
|
+
|
|
185
|
+
The `@host` sugar is **target-addressing only**, not sender-identity. A cross-host
|
|
186
|
+
message's **From:** is `member@rig` — the sender carries **NO `@host` suffix**. The target
|
|
187
|
+
supports `member@rig@<host>` for addressing; the sender does not reflect its own host in
|
|
188
|
+
`From:`. **Do NOT teach or expect a host-qualified `from`** (in openrig-user / operator send
|
|
189
|
+
docs or anywhere) until that core gap is fixed. (pm@your-rig verified this against
|
|
190
|
+
current main, 2026-07-25 — a known asymmetry, not a doc error to paper over.)
|