@openrig/cli 0.5.2 → 0.5.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/daemon/assets/plugins/openrig-core/hooks/claude.json +36 -0
- package/daemon/assets/plugins/openrig-core/hooks/codex.json +27 -0
- package/daemon/assets/plugins/openrig-core/hooks/scripts/refocus.cjs +132 -0
- package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/SKILL.md +35 -3
- package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/scripts/precompact-hook.mjs +8 -95
- package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/scripts/restore-from-jsonl.mjs +63 -20
- package/daemon/assets/plugins/openrig-core/skills/forming-an-openrig-mental-model/SKILL.md +6 -2
- package/daemon/assets/plugins/openrig-core/skills/messaging-the-human/SKILL.md +28 -2
- package/daemon/assets/plugins/openrig-core/skills/mission-slice-sop/SKILL.md +42 -52
- package/daemon/assets/plugins/openrig-core/skills/openrig-skills/SKILL.md +23 -1
- package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +7 -2
- package/daemon/assets/plugins/openrig-core/skills/orienting-to-an-inherited-seat/CHANGELOG.md +64 -0
- package/daemon/assets/plugins/openrig-core/skills/orienting-to-an-inherited-seat/SKILL.md +235 -0
- package/daemon/assets/plugins/openrig-core/skills/queue-handoff/SKILL.md +31 -1
- package/daemon/assets/plugins/openrig-core/skills/retiring-and-inheriting-a-seat/CHANGELOG.md +48 -0
- package/daemon/assets/plugins/openrig-core/skills/retiring-and-inheriting-a-seat/SKILL.md +211 -0
- package/daemon/assets/plugins/openrig-core/skills/seat-continuity-and-handover/SKILL.md +8 -0
- package/daemon/assets/plugins/openrig-core/skills/software-for-agents/SKILL.md +28 -1
- package/daemon/context-packs/skills/core/agent-starters/SKILL.md +132 -0
- package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/SKILL.md +112 -0
- package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/attention-queue/SKILL.md +264 -0
- package/daemon/context-packs/skills/core/attention-queue/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/cross-host-rig-commands/SKILL.md +195 -0
- package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/human-in-the-loop/SKILL.md +104 -0
- package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/openrig-architect/SKILL.md +378 -0
- package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/openrig-cmux/SKILL.md +81 -0
- package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/openrig-herdr/SKILL.md +153 -0
- package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/openrig-upgrade/SKILL.md +460 -0
- package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/SKILL.md +101 -0
- package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/rig-lifecycle/SKILL.md +127 -0
- package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/session-source-fork/SKILL.md +160 -0
- package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/specification-system/SKILL.md +103 -0
- package/daemon/context-packs/skills/core/specification-system/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/SKILL.md +118 -0
- package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +9 -0
- package/daemon/context-packs/skills/core/watchdog/SKILL.md +126 -0
- package/daemon/context-packs/skills/core/watchdog/manifest.yaml +9 -0
- package/daemon/context-packs/skills/pm/backlog-capture/SKILL.md +43 -0
- package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +9 -0
- package/daemon/context-packs/skills/pm/context-builder/SKILL.md +87 -0
- package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +9 -0
- package/daemon/context-packs/skills/pm/exec-summary/SKILL.md +84 -0
- package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +9 -0
- package/daemon/context-packs/skills/pm/office-hours/SKILL.md +129 -0
- package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +9 -0
- package/daemon/context-packs/skills/pm/plan-review/SKILL.md +98 -0
- package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +9 -0
- package/daemon/context-packs/skills/pm/requirements-writer/SKILL.md +113 -0
- package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +9 -0
- package/daemon/context-packs/skills/pm/ui-mockup/SKILL.md +76 -0
- package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +9 -0
- package/daemon/context-packs/skills/pods/development-team/SKILL.md +156 -0
- package/daemon/context-packs/skills/pods/development-team/manifest.yaml +9 -0
- package/daemon/context-packs/skills/pods/orchestration-team/SKILL.md +307 -0
- package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +9 -0
- package/daemon/context-packs/skills/pods/oversight-team/SKILL.md +106 -0
- package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +9 -0
- package/daemon/context-packs/skills/pods/review-team/SKILL.md +213 -0
- package/daemon/context-packs/skills/pods/review-team/manifest.yaml +9 -0
- package/daemon/context-packs/skills/process/agent-browser/LOCAL-INSIGHTS.md +189 -0
- package/daemon/context-packs/skills/process/agent-browser/OPENRIG.md +40 -0
- package/daemon/context-packs/skills/process/agent-browser/SKILL.md +427 -0
- package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +13 -0
- package/daemon/context-packs/skills/process/brainstorming/OPENRIG.md +48 -0
- package/daemon/context-packs/skills/process/brainstorming/SKILL.md +107 -0
- package/daemon/context-packs/skills/process/brainstorming/manifest.yaml +11 -0
- package/daemon/context-packs/skills/process/context-engineering/SKILL.md +479 -0
- package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +9 -0
- package/daemon/context-packs/skills/process/dogfood/SKILL.md +225 -0
- package/daemon/context-packs/skills/process/dogfood/manifest.yaml +13 -0
- package/daemon/context-packs/skills/process/dogfood/references/issue-taxonomy.md +109 -0
- package/daemon/context-packs/skills/process/dogfood/templates/dogfood-report-template.md +53 -0
- package/daemon/context-packs/skills/process/executing-plans/OPENRIG.md +56 -0
- package/daemon/context-packs/skills/process/executing-plans/SKILL.md +94 -0
- package/daemon/context-packs/skills/process/executing-plans/manifest.yaml +11 -0
- package/daemon/context-packs/skills/process/frontend-design/LICENSE.txt +177 -0
- package/daemon/context-packs/skills/process/frontend-design/SKILL.md +50 -0
- package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +11 -0
- package/daemon/context-packs/skills/process/systematic-debugging/SKILL.md +301 -0
- package/daemon/context-packs/skills/process/systematic-debugging/condition-based-waiting-example.ts +158 -0
- package/daemon/context-packs/skills/process/systematic-debugging/condition-based-waiting.md +115 -0
- package/daemon/context-packs/skills/process/systematic-debugging/defense-in-depth.md +122 -0
- package/daemon/context-packs/skills/process/systematic-debugging/find-polluter.sh +63 -0
- package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +19 -0
- package/daemon/context-packs/skills/process/systematic-debugging/root-cause-tracing.md +169 -0
- package/daemon/context-packs/skills/process/test-driven-development/SKILL.md +385 -0
- package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +11 -0
- package/daemon/context-packs/skills/process/test-driven-development/testing-anti-patterns.md +299 -0
- package/daemon/context-packs/skills/process/using-superpowers/OPENRIG.md +48 -0
- package/daemon/context-packs/skills/process/using-superpowers/SKILL.md +106 -0
- package/daemon/context-packs/skills/process/using-superpowers/manifest.yaml +11 -0
- package/daemon/context-packs/skills/process/verification-before-completion/SKILL.md +155 -0
- package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +9 -0
- package/daemon/context-packs/skills/process/writing-plans/OPENRIG.md +52 -0
- package/daemon/context-packs/skills/process/writing-plans/SKILL.md +126 -0
- package/daemon/context-packs/skills/process/writing-plans/manifest.yaml +11 -0
- package/daemon/context-packs/world/install/01-world-from-primitives.md +97 -0
- package/daemon/context-packs/world/install/02-permission-self-sleep.md +141 -0
- package/daemon/context-packs/world/install/03-what-this-is-for.md +86 -0
- package/daemon/context-packs/world/install/04-ontology.md +790 -0
- package/daemon/context-packs/world/install/05-harness-power-use.md +355 -0
- package/daemon/context-packs/world/install/06-a-competent-turn.md +225 -0
- package/daemon/context-packs/world/install/manifest.yaml +125 -0
- package/daemon/context-packs/world/install/reference-material.md +125 -0
- package/daemon/context-packs/world/install/what-you-can-do.md +416 -0
- package/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
- package/daemon/dist/adapters/claude-code-adapter.js +7 -4
- package/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
- package/daemon/dist/adapters/claude-resume.js +2 -2
- package/daemon/dist/adapters/claude-resume.js.map +1 -1
- package/daemon/dist/adapters/tmux.d.ts +10 -2
- package/daemon/dist/adapters/tmux.d.ts.map +1 -1
- package/daemon/dist/adapters/tmux.js +27 -7
- package/daemon/dist/adapters/tmux.js.map +1 -1
- package/daemon/dist/adapters/yolo-mode.d.ts +18 -0
- package/daemon/dist/adapters/yolo-mode.d.ts.map +1 -1
- package/daemon/dist/adapters/yolo-mode.js +21 -0
- package/daemon/dist/adapters/yolo-mode.js.map +1 -1
- package/daemon/dist/build-info.js +3 -3
- package/daemon/dist/domain/codex-thread-id.d.ts +95 -0
- package/daemon/dist/domain/codex-thread-id.d.ts.map +1 -1
- package/daemon/dist/domain/codex-thread-id.js +171 -2
- package/daemon/dist/domain/codex-thread-id.js.map +1 -1
- package/daemon/dist/domain/context-packs/context-pack-types.d.ts +48 -0
- package/daemon/dist/domain/context-packs/context-pack-types.d.ts.map +1 -1
- package/daemon/dist/domain/context-packs/context-pack-types.js +8 -0
- package/daemon/dist/domain/context-packs/context-pack-types.js.map +1 -1
- package/daemon/dist/domain/context-packs/manifest-parser.d.ts.map +1 -1
- package/daemon/dist/domain/context-packs/manifest-parser.js +234 -2
- package/daemon/dist/domain/context-packs/manifest-parser.js.map +1 -1
- package/daemon/dist/domain/context-packs/probe-eval-bridge.d.ts +34 -0
- package/daemon/dist/domain/context-packs/probe-eval-bridge.d.ts.map +1 -0
- package/daemon/dist/domain/context-packs/probe-eval-bridge.js +38 -0
- package/daemon/dist/domain/context-packs/probe-eval-bridge.js.map +1 -0
- package/daemon/dist/domain/context-packs/profile-composer.d.ts +49 -0
- package/daemon/dist/domain/context-packs/profile-composer.d.ts.map +1 -0
- package/daemon/dist/domain/context-packs/profile-composer.js +125 -0
- package/daemon/dist/domain/context-packs/profile-composer.js.map +1 -0
- package/daemon/dist/domain/context-packs/profile-source-resolver.d.ts +53 -0
- package/daemon/dist/domain/context-packs/profile-source-resolver.d.ts.map +1 -0
- package/daemon/dist/domain/context-packs/profile-source-resolver.js +129 -0
- package/daemon/dist/domain/context-packs/profile-source-resolver.js.map +1 -0
- package/daemon/dist/domain/context-packs/seat-recap-store.d.ts +48 -0
- package/daemon/dist/domain/context-packs/seat-recap-store.d.ts.map +1 -0
- package/daemon/dist/domain/context-packs/seat-recap-store.js +123 -0
- package/daemon/dist/domain/context-packs/seat-recap-store.js.map +1 -0
- package/daemon/dist/domain/markdown-address.d.ts +56 -0
- package/daemon/dist/domain/markdown-address.d.ts.map +1 -0
- package/daemon/dist/domain/markdown-address.js +188 -0
- package/daemon/dist/domain/markdown-address.js.map +1 -0
- package/daemon/dist/domain/model-divergence/current-generation-record.d.ts +8 -2
- package/daemon/dist/domain/model-divergence/current-generation-record.d.ts.map +1 -1
- package/daemon/dist/domain/model-divergence/current-generation-record.js +1 -1
- package/daemon/dist/domain/model-divergence/current-generation-record.js.map +1 -1
- package/daemon/dist/domain/model-divergence/model-divergence-monitor.d.ts +33 -21
- package/daemon/dist/domain/model-divergence/model-divergence-monitor.d.ts.map +1 -1
- package/daemon/dist/domain/model-divergence/model-divergence-monitor.js +64 -55
- package/daemon/dist/domain/model-divergence/model-divergence-monitor.js.map +1 -1
- package/daemon/dist/domain/periodic-snapshot-scheduler.d.ts +4 -0
- package/daemon/dist/domain/periodic-snapshot-scheduler.d.ts.map +1 -1
- package/daemon/dist/domain/periodic-snapshot-scheduler.js +5 -1
- package/daemon/dist/domain/periodic-snapshot-scheduler.js.map +1 -1
- package/daemon/dist/domain/permission-drift-observer.d.ts.map +1 -1
- package/daemon/dist/domain/permission-drift-observer.js +6 -1
- package/daemon/dist/domain/permission-drift-observer.js.map +1 -1
- package/daemon/dist/domain/process-census.d.ts +25 -0
- package/daemon/dist/domain/process-census.d.ts.map +1 -0
- package/daemon/dist/domain/process-census.js +47 -0
- package/daemon/dist/domain/process-census.js.map +1 -0
- package/daemon/dist/domain/resume-metadata-refresher.d.ts +31 -2
- package/daemon/dist/domain/resume-metadata-refresher.d.ts.map +1 -1
- package/daemon/dist/domain/resume-metadata-refresher.js +64 -29
- package/daemon/dist/domain/resume-metadata-refresher.js.map +1 -1
- package/daemon/dist/domain/review/compose.d.ts +5 -26
- package/daemon/dist/domain/review/compose.d.ts.map +1 -1
- package/daemon/dist/domain/review/compose.js +31 -57
- package/daemon/dist/domain/review/compose.js.map +1 -1
- package/daemon/dist/domain/rigspec-instantiator.d.ts +4 -0
- package/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-instantiator.js +39 -0
- package/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
- package/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
- package/daemon/dist/domain/rigspec-schema.js +19 -3
- package/daemon/dist/domain/rigspec-schema.js.map +1 -1
- package/daemon/dist/domain/scope/logical-checkbox.d.ts +26 -0
- package/daemon/dist/domain/scope/logical-checkbox.d.ts.map +1 -0
- package/daemon/dist/domain/scope/logical-checkbox.js +65 -0
- package/daemon/dist/domain/scope/logical-checkbox.js.map +1 -0
- package/daemon/dist/domain/scope/plan-lock-artifacts.d.ts +1 -1
- package/daemon/dist/domain/scope/plan-lock-artifacts.d.ts.map +1 -1
- package/daemon/dist/domain/scope/plan-lock-artifacts.js +2 -2
- package/daemon/dist/domain/scope/plan-lock-artifacts.js.map +1 -1
- package/daemon/dist/domain/scope/scaffold-placeholder.d.ts +22 -0
- package/daemon/dist/domain/scope/scaffold-placeholder.d.ts.map +1 -1
- package/daemon/dist/domain/scope/scaffold-placeholder.js +24 -0
- package/daemon/dist/domain/scope/scaffold-placeholder.js.map +1 -1
- package/daemon/dist/domain/seat-activity-service.d.ts +1 -0
- package/daemon/dist/domain/seat-activity-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-activity-service.js +39 -23
- package/daemon/dist/domain/seat-activity-service.js.map +1 -1
- package/daemon/dist/domain/seat-handover-service.d.ts +22 -0
- package/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-handover-service.js +32 -2
- package/daemon/dist/domain/seat-handover-service.js.map +1 -1
- package/daemon/dist/domain/session-transport.d.ts +8 -0
- package/daemon/dist/domain/session-transport.d.ts.map +1 -1
- package/daemon/dist/domain/session-transport.js +116 -0
- package/daemon/dist/domain/session-transport.js.map +1 -1
- package/daemon/dist/domain/shell-classifier.d.ts +23 -0
- package/daemon/dist/domain/shell-classifier.d.ts.map +1 -0
- package/daemon/dist/domain/shell-classifier.js +36 -0
- package/daemon/dist/domain/shell-classifier.js.map +1 -0
- package/daemon/dist/domain/slices/slice-detail-projector.d.ts.map +1 -1
- package/daemon/dist/domain/slices/slice-detail-projector.js +10 -1
- package/daemon/dist/domain/slices/slice-detail-projector.js.map +1 -1
- package/daemon/dist/domain/spec-validation-advisory.d.ts +17 -0
- package/daemon/dist/domain/spec-validation-advisory.d.ts.map +1 -0
- package/daemon/dist/domain/spec-validation-advisory.js +38 -0
- package/daemon/dist/domain/spec-validation-advisory.js.map +1 -0
- package/daemon/dist/domain/successor-session-launcher.d.ts +7 -0
- package/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
- package/daemon/dist/domain/successor-session-launcher.js +38 -1
- package/daemon/dist/domain/successor-session-launcher.js.map +1 -1
- package/daemon/dist/domain/topology-defaults-installer.d.ts +47 -0
- package/daemon/dist/domain/topology-defaults-installer.d.ts.map +1 -0
- package/daemon/dist/domain/topology-defaults-installer.js +92 -0
- package/daemon/dist/domain/topology-defaults-installer.js.map +1 -0
- package/daemon/dist/domain/transcript-rotation.d.ts +4 -0
- package/daemon/dist/domain/transcript-rotation.d.ts.map +1 -1
- package/daemon/dist/domain/transcript-rotation.js +61 -3
- package/daemon/dist/domain/transcript-rotation.js.map +1 -1
- package/daemon/dist/domain/transcript-store.d.ts.map +1 -1
- package/daemon/dist/domain/transcript-store.js +9 -2
- package/daemon/dist/domain/transcript-store.js.map +1 -1
- package/daemon/dist/domain/types.d.ts +3 -0
- package/daemon/dist/domain/types.d.ts.map +1 -1
- package/daemon/dist/domain/user-settings/settings-store.d.ts +10 -1
- package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
- package/daemon/dist/domain/user-settings/settings-store.js +39 -0
- package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
- package/daemon/dist/routes/context-packs.d.ts.map +1 -1
- package/daemon/dist/routes/context-packs.js +205 -0
- package/daemon/dist/routes/context-packs.js.map +1 -1
- package/daemon/dist/routes/seat.d.ts.map +1 -1
- package/daemon/dist/routes/seat.js +11 -0
- package/daemon/dist/routes/seat.js.map +1 -1
- package/daemon/dist/routes/sessions.js +55 -0
- package/daemon/dist/routes/sessions.js.map +1 -1
- package/daemon/dist/routes/transport.d.ts.map +1 -1
- package/daemon/dist/routes/transport.js +12 -3
- package/daemon/dist/routes/transport.js.map +1 -1
- package/daemon/dist/seat-recap-store-surface.d.ts +2 -0
- package/daemon/dist/seat-recap-store-surface.d.ts.map +1 -0
- package/daemon/dist/seat-recap-store-surface.js +6 -0
- package/daemon/dist/seat-recap-store-surface.js.map +1 -0
- package/daemon/dist/startup.d.ts.map +1 -1
- package/daemon/dist/startup.js +37 -6
- package/daemon/dist/startup.js.map +1 -1
- package/daemon/docs/reference/chain-file-convention.md +115 -0
- package/daemon/docs/reference/legacy-topology-migration.md +53 -0
- package/daemon/docs/reference/refocus-channel.md +80 -0
- package/daemon/docs/reference/sdlc-conventions.md +24 -0
- package/daemon/specs/agents/shared/skills/core/attention-queue/SKILL.md +1 -1
- package/daemon/specs/agents/shared/skills/core/human-in-the-loop/SKILL.md +1 -1
- package/daemon/specs/agents/shared/skills/core/session-source-fork/SKILL.md +1 -1
- package/daemon/specs/agents/shared/skills/core/watchdog/SKILL.md +4 -4
- package/daemon/specs/agents/shared/skills/pods/development-team/SKILL.md +8 -0
- package/daemon/specs/agents/shared/skills/pods/orchestration-team/SKILL.md +72 -31
- package/daemon/specs/agents/shared/skills/pods/oversight-team/SKILL.md +106 -0
- package/daemon/specs/agents/shared/skills/process/context-engineering/SKILL.md +479 -0
- package/daemon/specs/agents/shared/skills/process/test-driven-development/SKILL.md +9 -0
- package/daemon/specs/rigs/launch/demo/project-example/README.md +25 -0
- package/daemon/specs/rigs/launch/demo/project-example/missions/improve-onboarding/SPEC.md +19 -0
- package/daemon/specs/rigs/launch/demo/project-example/missions/improve-onboarding/slices/01-shorten-first-run/PROGRESS.md +6 -0
- package/daemon/specs/rigs/launch/demo/project-example/missions/improve-onboarding/slices/01-shorten-first-run/PROOF.md +7 -0
- package/daemon/specs/rigs/launch/demo/project-example/missions/improve-onboarding/slices/01-shorten-first-run/SPEC.md +31 -0
- package/daemon/specs/rigs/preview/product-team/topology/instance/CRAFT.md +24 -0
- package/daemon/specs/rigs/preview/product-team/topology/rig/CRAFT.md +21 -0
- package/daemon/specs/rigs/preview/product-team/topology/rig/ORCHESTRATION-CRAFT.md +50 -0
- package/daemon/specs/rigs/preview/product-team/topology/seats/dev1-qa/CRAFT.md +13 -0
- package/daemon/specs/rigs/preview/product-team/topology/seats/orch1-lead/CRAFT.md +17 -0
- package/daemon/specs/rigs/preview/product-team/topology/seats/rev1-r1/CRAFT.md +17 -0
- package/daemon/specs/rigs/preview/product-team/topology/seats/rev1-r2/CRAFT.md +15 -0
- package/dist/build-info.js +3 -3
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +8 -0
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/context.d.ts.map +1 -1
- package/dist/commands/context.js +353 -48
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/proof.d.ts.map +1 -1
- package/dist/commands/proof.js +70 -12
- package/dist/commands/proof.js.map +1 -1
- package/dist/commands/rig.d.ts.map +1 -1
- package/dist/commands/rig.js +5 -0
- package/dist/commands/rig.js.map +1 -1
- package/dist/commands/transcript.d.ts.map +1 -1
- package/dist/commands/transcript.js +25 -1
- package/dist/commands/transcript.js.map +1 -1
- package/dist/commands/walk.d.ts.map +1 -1
- package/dist/commands/walk.js +279 -26
- package/dist/commands/walk.js.map +1 -1
- package/dist/config-store.d.ts +15 -1
- package/dist/config-store.d.ts.map +1 -1
- package/dist/config-store.js +35 -1
- package/dist/config-store.js.map +1 -1
- package/dist/lib/scope/logical-checkbox.d.ts +26 -0
- package/dist/lib/scope/logical-checkbox.d.ts.map +1 -0
- package/dist/lib/scope/logical-checkbox.js +65 -0
- package/dist/lib/scope/logical-checkbox.js.map +1 -0
- package/dist/lib/scope/scaffold-placeholder.d.ts +22 -0
- package/dist/lib/scope/scaffold-placeholder.d.ts.map +1 -1
- package/dist/lib/scope/scaffold-placeholder.js +24 -0
- package/dist/lib/scope/scaffold-placeholder.js.map +1 -1
- package/dist/lib/topology-trace.d.ts +36 -0
- package/dist/lib/topology-trace.d.ts.map +1 -0
- package/dist/lib/topology-trace.js +91 -0
- package/dist/lib/topology-trace.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/adapters/claude-code-adapter.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/adapters/claude-code-adapter.js +7 -4
- package/node_modules/@openrig/daemon/dist/adapters/claude-code-adapter.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/adapters/claude-resume.js +2 -2
- package/node_modules/@openrig/daemon/dist/adapters/claude-resume.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/adapters/tmux.d.ts +10 -2
- package/node_modules/@openrig/daemon/dist/adapters/tmux.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/adapters/tmux.js +27 -7
- package/node_modules/@openrig/daemon/dist/adapters/tmux.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/adapters/yolo-mode.d.ts +18 -0
- package/node_modules/@openrig/daemon/dist/adapters/yolo-mode.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/adapters/yolo-mode.js +21 -0
- package/node_modules/@openrig/daemon/dist/adapters/yolo-mode.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/build-info.js +3 -3
- package/node_modules/@openrig/daemon/dist/domain/codex-thread-id.d.ts +95 -0
- package/node_modules/@openrig/daemon/dist/domain/codex-thread-id.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/codex-thread-id.js +171 -2
- package/node_modules/@openrig/daemon/dist/domain/codex-thread-id.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/context-packs/context-pack-types.d.ts +48 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/context-pack-types.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/context-packs/context-pack-types.js +8 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/context-pack-types.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/context-packs/manifest-parser.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/context-packs/manifest-parser.js +234 -2
- package/node_modules/@openrig/daemon/dist/domain/context-packs/manifest-parser.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/context-packs/probe-eval-bridge.d.ts +34 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/probe-eval-bridge.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/probe-eval-bridge.js +38 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/probe-eval-bridge.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-composer.d.ts +49 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-composer.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-composer.js +125 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-composer.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-source-resolver.d.ts +53 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-source-resolver.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-source-resolver.js +129 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/profile-source-resolver.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/seat-recap-store.d.ts +48 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/seat-recap-store.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/seat-recap-store.js +123 -0
- package/node_modules/@openrig/daemon/dist/domain/context-packs/seat-recap-store.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/markdown-address.d.ts +56 -0
- package/node_modules/@openrig/daemon/dist/domain/markdown-address.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/markdown-address.js +188 -0
- package/node_modules/@openrig/daemon/dist/domain/markdown-address.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/model-divergence/current-generation-record.d.ts +8 -2
- package/node_modules/@openrig/daemon/dist/domain/model-divergence/current-generation-record.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/model-divergence/current-generation-record.js +1 -1
- package/node_modules/@openrig/daemon/dist/domain/model-divergence/current-generation-record.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/model-divergence/model-divergence-monitor.d.ts +33 -21
- package/node_modules/@openrig/daemon/dist/domain/model-divergence/model-divergence-monitor.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/model-divergence/model-divergence-monitor.js +64 -55
- package/node_modules/@openrig/daemon/dist/domain/model-divergence/model-divergence-monitor.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/periodic-snapshot-scheduler.d.ts +4 -0
- package/node_modules/@openrig/daemon/dist/domain/periodic-snapshot-scheduler.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/periodic-snapshot-scheduler.js +5 -1
- package/node_modules/@openrig/daemon/dist/domain/periodic-snapshot-scheduler.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/permission-drift-observer.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/permission-drift-observer.js +6 -1
- package/node_modules/@openrig/daemon/dist/domain/permission-drift-observer.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/process-census.d.ts +25 -0
- package/node_modules/@openrig/daemon/dist/domain/process-census.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/process-census.js +47 -0
- package/node_modules/@openrig/daemon/dist/domain/process-census.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/resume-metadata-refresher.d.ts +31 -2
- package/node_modules/@openrig/daemon/dist/domain/resume-metadata-refresher.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/resume-metadata-refresher.js +64 -29
- package/node_modules/@openrig/daemon/dist/domain/resume-metadata-refresher.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/review/compose.d.ts +5 -26
- package/node_modules/@openrig/daemon/dist/domain/review/compose.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/review/compose.js +31 -57
- package/node_modules/@openrig/daemon/dist/domain/review/compose.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.d.ts +4 -0
- package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.js +39 -0
- package/node_modules/@openrig/daemon/dist/domain/rigspec-instantiator.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/rigspec-schema.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/rigspec-schema.js +19 -3
- package/node_modules/@openrig/daemon/dist/domain/rigspec-schema.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/scope/logical-checkbox.d.ts +26 -0
- package/node_modules/@openrig/daemon/dist/domain/scope/logical-checkbox.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/scope/logical-checkbox.js +65 -0
- package/node_modules/@openrig/daemon/dist/domain/scope/logical-checkbox.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.d.ts +1 -1
- package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.js +2 -2
- package/node_modules/@openrig/daemon/dist/domain/scope/plan-lock-artifacts.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/scope/scaffold-placeholder.d.ts +22 -0
- package/node_modules/@openrig/daemon/dist/domain/scope/scaffold-placeholder.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/scope/scaffold-placeholder.js +24 -0
- package/node_modules/@openrig/daemon/dist/domain/scope/scaffold-placeholder.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/seat-activity-service.d.ts +1 -0
- package/node_modules/@openrig/daemon/dist/domain/seat-activity-service.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/seat-activity-service.js +39 -23
- package/node_modules/@openrig/daemon/dist/domain/seat-activity-service.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.d.ts +22 -0
- package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.js +32 -2
- package/node_modules/@openrig/daemon/dist/domain/seat-handover-service.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/session-transport.d.ts +8 -0
- package/node_modules/@openrig/daemon/dist/domain/session-transport.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/session-transport.js +116 -0
- package/node_modules/@openrig/daemon/dist/domain/session-transport.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/shell-classifier.d.ts +23 -0
- package/node_modules/@openrig/daemon/dist/domain/shell-classifier.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/shell-classifier.js +36 -0
- package/node_modules/@openrig/daemon/dist/domain/shell-classifier.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/slices/slice-detail-projector.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/slices/slice-detail-projector.js +10 -1
- package/node_modules/@openrig/daemon/dist/domain/slices/slice-detail-projector.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/spec-validation-advisory.d.ts +17 -0
- package/node_modules/@openrig/daemon/dist/domain/spec-validation-advisory.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/spec-validation-advisory.js +38 -0
- package/node_modules/@openrig/daemon/dist/domain/spec-validation-advisory.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/successor-session-launcher.d.ts +7 -0
- package/node_modules/@openrig/daemon/dist/domain/successor-session-launcher.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/successor-session-launcher.js +38 -1
- package/node_modules/@openrig/daemon/dist/domain/successor-session-launcher.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/topology-defaults-installer.d.ts +47 -0
- package/node_modules/@openrig/daemon/dist/domain/topology-defaults-installer.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/topology-defaults-installer.js +92 -0
- package/node_modules/@openrig/daemon/dist/domain/topology-defaults-installer.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/transcript-rotation.d.ts +4 -0
- package/node_modules/@openrig/daemon/dist/domain/transcript-rotation.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/transcript-rotation.js +61 -3
- package/node_modules/@openrig/daemon/dist/domain/transcript-rotation.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/transcript-store.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/transcript-store.js +9 -2
- package/node_modules/@openrig/daemon/dist/domain/transcript-store.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/types.d.ts +3 -0
- package/node_modules/@openrig/daemon/dist/domain/types.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.d.ts +10 -1
- package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.js +39 -0
- package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/context-packs.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/context-packs.js +205 -0
- package/node_modules/@openrig/daemon/dist/routes/context-packs.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/seat.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/seat.js +11 -0
- package/node_modules/@openrig/daemon/dist/routes/seat.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/sessions.js +55 -0
- package/node_modules/@openrig/daemon/dist/routes/sessions.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/transport.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/transport.js +12 -3
- package/node_modules/@openrig/daemon/dist/routes/transport.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/seat-recap-store-surface.d.ts +2 -0
- package/node_modules/@openrig/daemon/dist/seat-recap-store-surface.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/seat-recap-store-surface.js +6 -0
- package/node_modules/@openrig/daemon/dist/seat-recap-store-surface.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/startup.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/startup.js +37 -6
- package/node_modules/@openrig/daemon/dist/startup.js.map +1 -1
- package/node_modules/@openrig/daemon/package.json +6 -1
- package/package.json +1 -1
|
@@ -0,0 +1,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
|
+
- refocus
|
|
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,9 @@
|
|
|
1
|
+
# GENERATED by scripts/generate-context-packs.mjs — DO NOT EDIT.
|
|
2
|
+
# Package-time projection of a canonical skill; regenerated every build.
|
|
3
|
+
name: "attention-queue"
|
|
4
|
+
version: "0.5.3"
|
|
5
|
+
purpose: "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."
|
|
6
|
+
files:
|
|
7
|
+
- path: "SKILL.md"
|
|
8
|
+
role: "instruction"
|
|
9
|
+
summary: "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."
|
|
@@ -0,0 +1,195 @@
|
|
|
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 carries the ORIGIN host (51-09, 2026-08-06)
|
|
184
|
+
|
|
185
|
+
The `@host` sugar on a TARGET is **addressing** (`member@rig@<host>` routes to that host).
|
|
186
|
+
The **From:** sender now ALWAYS carries the **origin** host: a cross-host (and local) message's
|
|
187
|
+
signature is **`member@rig@<originHost>`** — the sender reflects the host it was sent from, so a
|
|
188
|
+
received signature names the ORIGIN, and the `↩ Reply:` hint round-trips **verbatim** back to that
|
|
189
|
+
origin (never a same-named local lookalike). This is the always-suffix rule — deterministic and
|
|
190
|
+
collision-proof: a signature means one thing to every receiver. (This SUPERSEDES the pre-51-09
|
|
191
|
+
asymmetry — "the sender carries no `@host` suffix" — that pm@your-rig flagged as a core gap on
|
|
192
|
+
2026-07-25; 51-09 closed it.) Per BR-1 the host is NEVER folded into the session string on the
|
|
193
|
+
wire: the CLI edge renders/strips it, the daemon refuses an in-band 3-part destination with a
|
|
194
|
+
teaching hint, and a stale 2-part same-name destination is closed by `--host` + that teaching —
|
|
195
|
+
not by any in-string magic.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# GENERATED by scripts/generate-context-packs.mjs — DO NOT EDIT.
|
|
2
|
+
# Package-time projection of a canonical skill; regenerated every build.
|
|
3
|
+
name: "cross-host-rig-commands"
|
|
4
|
+
version: "0.5.3"
|
|
5
|
+
purpose: "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>`."
|
|
6
|
+
files:
|
|
7
|
+
- path: "SKILL.md"
|
|
8
|
+
role: "instruction"
|
|
9
|
+
summary: "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>`."
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: human-in-the-loop
|
|
3
|
+
description: Use when classifying a slice closeout (auto-continue / human gate / park), routing a real decision to a human, or designing a human queue/dashboard surface. Treats humans as durable network participants with attention surfaces, queues, and decision records — escalation lands as a durable attention item, not a chat message. Approval is NOT required for every clean closeout; the default RSI conveyor continues unless an explicit human gate is reached.
|
|
4
|
+
metadata:
|
|
5
|
+
openrig:
|
|
6
|
+
stage: factory-approved
|
|
7
|
+
sibling_skills:
|
|
8
|
+
- queue-handoff
|
|
9
|
+
- workflow-runtime
|
|
10
|
+
- watchdog
|
|
11
|
+
- refocus
|
|
12
|
+
- looping-workflows
|
|
13
|
+
- intake-routing
|
|
14
|
+
- attention-queue
|
|
15
|
+
- dispatching-parallel-agents
|
|
16
|
+
- subagent-driven-development
|
|
17
|
+
- control-plane-capabilities
|
|
18
|
+
- status-not-chat-orchestrator
|
|
19
|
+
- control-plane-queue
|
|
20
|
+
- control-plane-watchdog
|
|
21
|
+
- control-plane-workflows
|
|
22
|
+
- control-plane-delivery-loop
|
|
23
|
+
- control-plane-rollout-manager
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
# Human In The Loop
|
|
27
|
+
|
|
28
|
+
The primitive that treats humans as **durable network participants** —
|
|
29
|
+
attention surfaces, queues, decision records, routing semantics — not
|
|
30
|
+
as ad-hoc chat receivers.
|
|
31
|
+
|
|
32
|
+
**Autonomy is not the absence of humans; it is knowing when human
|
|
33
|
+
judgment is needed and making that handoff crisp.**
|
|
34
|
+
|
|
35
|
+
## Use this when
|
|
36
|
+
|
|
37
|
+
- A slice closeout needs classifying: auto-continue, human gate, or park
|
|
38
|
+
- A real decision needs to land in front of a human (usage limits, provider auth, roadmap tradeoff, product-intent ambiguity)
|
|
39
|
+
- Designing a human queue/dashboard surface
|
|
40
|
+
- Returning a hot potato to orchestration after human approval
|
|
41
|
+
|
|
42
|
+
## Don't use this when
|
|
43
|
+
|
|
44
|
+
- The slice closeout is clean and `PROGRESS.md` already names the next safe slice. **Default RSI conveyor continues; do NOT manufacture a human gate.**
|
|
45
|
+
- The escalation is just a status update. Humans are participants for *decisions*, not narration.
|
|
46
|
+
- The next owner is another agent. Use queue-handoff, not human-in-the-loop.
|
|
47
|
+
|
|
48
|
+
## The 3-class closeout classification
|
|
49
|
+
|
|
50
|
+
In a productized daemon-backed version, closeout classifies the next
|
|
51
|
+
step BEFORE touching the human queue:
|
|
52
|
+
|
|
53
|
+
| Class | When | Action |
|
|
54
|
+
|---|---|---|
|
|
55
|
+
| **auto-continue** | Slice closes cleanly, next named slice in workstream plan | Mark closed; create next-owner qitem from plan |
|
|
56
|
+
| **human gate** | Genuine decision needed (usage limits, provider auth, product-intent ambiguity, roadmap tradeoff) | Create human queue item with proof + decision text + recommended default + action outcomes |
|
|
57
|
+
| **park** | Intentionally stop the conveyor (e.g., waiting on external) | Stop with reason + resumption path |
|
|
58
|
+
|
|
59
|
+
## Failure modes (5)
|
|
60
|
+
|
|
61
|
+
1. **Human decision needed, but the rig only mentions it in chat.** Decisions belong as durable attention items, not chat messages.
|
|
62
|
+
2. **Human queue item lacks enough plain-English context for a decision.** Include proof + decision text + recommended default + action outcomes.
|
|
63
|
+
3. **Human response updates a file but does not wake the next owner.** Approval should return the hot potato; feedback should create the next durable qitem.
|
|
64
|
+
4. **The dashboard shows too much raw rig state and hides the actual decision queue.** Decision queue is the primary surface; rig state is secondary.
|
|
65
|
+
5. **A clean closeout is parked on the human even though `PROGRESS.md` already names the next safe slice.** Don't manufacture human gates.
|
|
66
|
+
|
|
67
|
+
## Proof standard (both paths)
|
|
68
|
+
|
|
69
|
+
A trustworthy human-in-the-loop system proves both directions:
|
|
70
|
+
|
|
71
|
+
- **Blocking gate path**: real item routed to human → human decision recorded through UI → resulting hot-potato handoff wakes correct next owner
|
|
72
|
+
- **Non-blocking closeout path**: proof inspectable by human, but orchestrator continues to next named slice without manufacturing a human gate
|
|
73
|
+
|
|
74
|
+
A primitive that only wakes humans is not trustworthy. It must also know when NOT to.
|
|
75
|
+
|
|
76
|
+
## Product shape (SHIPPED — Mission Control, PL-005)
|
|
77
|
+
|
|
78
|
+
This surface has shipped as **Mission Control** (product UI, `/mission-control`
|
|
79
|
+
route; actions via `POST /api/mission-control/action`). The seven verbs the
|
|
80
|
+
human acts with:
|
|
81
|
+
- **approve** (returns the hot potato to orchestration or the chosen owner)
|
|
82
|
+
- **deny** (reject the item)
|
|
83
|
+
- **route** (send to a different owner)
|
|
84
|
+
- **annotate** (add context without action)
|
|
85
|
+
- **hold** (intentional pause with reason)
|
|
86
|
+
- **drop** (mark not-actionable)
|
|
87
|
+
- **handoff** (hand to a specific next owner — creates the next durable qitem)
|
|
88
|
+
|
|
89
|
+
**Approval returns the hot potato to orchestration or the chosen owner;
|
|
90
|
+
feedback creates the next durable qitem rather than only mutating the source
|
|
91
|
+
queue file** — enforced by the shipped verbs (handoff/route create qitems).
|
|
92
|
+
See `docs/as-built/architecture/mission-control.md`.
|
|
93
|
+
|
|
94
|
+
## Long-term shape
|
|
95
|
+
|
|
96
|
+
Likely needs **multiple humans with different scopes**, not a singleton
|
|
97
|
+
human attention feed. Different humans own different decision
|
|
98
|
+
domains; queue items route by scope.
|
|
99
|
+
|
|
100
|
+
## See also
|
|
101
|
+
|
|
102
|
+
- `queue-handoff` skill — durable handoff via queue items; human-in-the-loop is the human-side complement
|
|
103
|
+
- `watchdog` skill — when to wake (humans included) vs no-op
|
|
104
|
+
- `looping-workflows` (convention) — the looping-workflows convention covers loop closeouts; human-in-the-loop is the escape hatch
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# GENERATED by scripts/generate-context-packs.mjs — DO NOT EDIT.
|
|
2
|
+
# Package-time projection of a canonical skill; regenerated every build.
|
|
3
|
+
name: "human-in-the-loop"
|
|
4
|
+
version: "0.5.3"
|
|
5
|
+
purpose: "Use when classifying a slice closeout (auto-continue / human gate / park), routing a real decision to a human, or designing a human queue/dashboard surface. Treats humans as durable network participants with attention surfaces, queues, and decision records — escalation lands as a durable attention item, not a chat message. Approval is NOT required for every clean closeout; the default RSI conveyor continues unless an explicit human gate is reached."
|
|
6
|
+
files:
|
|
7
|
+
- path: "SKILL.md"
|
|
8
|
+
role: "instruction"
|
|
9
|
+
summary: "Use when classifying a slice closeout (auto-continue / human gate / park), routing a real decision to a human, or designing a human queue/dashboard surface. Treats humans as durable network participants with attention surfaces, queues, and decision records — escalation lands as a durable attention item, not a chat message. Approval is NOT required for every clean closeout; the default RSI conveyor continues unless an explicit human gate is reached."
|