@openrig/cli 0.5.10 → 0.5.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/daemon/assets/plugins/openrig-core/README.md +24 -5
- package/daemon/assets/plugins/openrig-core/skills/agent-operated-workflows/SKILL.md +4 -2
- package/daemon/assets/plugins/openrig-core/skills/applying-a-permission-policy/SKILL.md +11 -14
- package/daemon/assets/plugins/openrig-core/skills/claude-compaction-restore/SKILL.md +51 -59
- package/daemon/assets/plugins/openrig-core/skills/forming-an-openrig-mental-model/SKILL.md +11 -10
- package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/SKILL.md +39 -50
- package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/scripts/trunk-diff.sh +1 -1
- package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/templates/LEARNED.md +7 -5
- package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/templates/PLAYBOOK.md +3 -4
- package/daemon/assets/plugins/openrig-core/skills/openrig-operating-model/templates/SPEC.md +7 -7
- package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +55 -64
- package/daemon/assets/plugins/openrig-core/skills/orienting-to-an-inherited-seat/CHANGELOG.md +14 -58
- package/daemon/assets/plugins/openrig-core/skills/queue-handoff/SKILL.md +8 -9
- package/daemon/assets/plugins/openrig-core/skills/retiring-and-inheriting-a-seat/CHANGELOG.md +20 -46
- package/daemon/assets/plugins/openrig-core/skills/retiring-and-inheriting-a-seat/SKILL.md +62 -76
- package/daemon/assets/plugins/openrig-core/skills/seat-continuity-and-handover/SKILL.md +28 -22
- package/daemon/assets/plugins/openrig-core/skills/session-compaction-and-restore/SKILL.md +13 -15
- package/daemon/context-packs/onboarding-width/manifest.yaml +1 -3
- package/daemon/context-packs/onboarding-width/public-reference-material.md +19 -24
- package/daemon/context-packs/onboarding-width/public-what-you-can-do.md +55 -24
- package/daemon/context-packs/skills/agent-operated-software/manifest.yaml +1 -1
- package/daemon/context-packs/skills/agent-operated-workflows/SKILL.md +4 -2
- package/daemon/context-packs/skills/agent-operated-workflows/manifest.yaml +1 -1
- package/daemon/context-packs/skills/applying-a-permission-policy/SKILL.md +11 -14
- package/daemon/context-packs/skills/applying-a-permission-policy/manifest.yaml +1 -1
- package/daemon/context-packs/skills/claude-compaction-restore/SKILL.md +51 -59
- package/daemon/context-packs/skills/claude-compaction-restore/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/agent-starters/SKILL.md +21 -19
- package/daemon/context-packs/skills/core/agent-starters/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/SKILL.md +11 -10
- package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/cross-host-rig-commands/SKILL.md +84 -148
- package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +3 -3
- package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/messaging-the-human/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-architect/SKILL.md +40 -47
- package/daemon/context-packs/skills/core/openrig-architect/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-cmux/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-herdr/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-skills/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/openrig-upgrade/SKILL.md +16 -0
- package/daemon/context-packs/skills/core/openrig-upgrade/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/session-source-fork/SKILL.md +12 -10
- package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/specification-system/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/SKILL.md +15 -13
- package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/watchdog/manifest.yaml +1 -1
- package/daemon/context-packs/skills/delegating-work/manifest.yaml +1 -1
- package/daemon/context-packs/skills/forming-an-openrig-mental-model/SKILL.md +11 -10
- package/daemon/context-packs/skills/forming-an-openrig-mental-model/manifest.yaml +1 -1
- package/daemon/context-packs/skills/loading-addressable-markdown/manifest.yaml +1 -1
- package/daemon/context-packs/skills/mission-slice-sop/manifest.yaml +1 -1
- package/daemon/context-packs/skills/openrig-operating-model/SKILL.md +39 -50
- package/daemon/context-packs/skills/openrig-operating-model/manifest.yaml +1 -1
- package/daemon/context-packs/skills/openrig-operating-model/scripts/trunk-diff.sh +1 -1
- package/daemon/context-packs/skills/openrig-operating-model/templates/LEARNED.md +7 -5
- package/daemon/context-packs/skills/openrig-operating-model/templates/PLAYBOOK.md +3 -4
- package/daemon/context-packs/skills/openrig-operating-model/templates/SPEC.md +7 -7
- package/daemon/context-packs/skills/openrig-user/SKILL.md +55 -64
- package/daemon/context-packs/skills/openrig-user/manifest.yaml +1 -1
- package/daemon/context-packs/skills/orienting-to-an-inherited-seat/CHANGELOG.md +14 -58
- package/daemon/context-packs/skills/orienting-to-an-inherited-seat/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/backlog-capture/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/context-builder/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/exec-summary/SKILL.md +1 -1
- package/daemon/context-packs/skills/pm/exec-summary/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/plan-review/SKILL.md +2 -2
- package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/requirements-writer/SKILL.md +1 -1
- package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/ui-mockup/SKILL.md +3 -3
- package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pods/development-team/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pods/orchestration-team/SKILL.md +41 -59
- package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pods/review-team/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/agent-browser/LOCAL-INSIGHTS.md +24 -53
- package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/dogfood/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/systematic-debugging/find-polluter.sh +29 -15
- package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/test-driven-development/SKILL.md +47 -40
- package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/verification-before-completion/SKILL.md +3 -3
- package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +1 -1
- package/daemon/context-packs/skills/queue-handoff/SKILL.md +8 -9
- package/daemon/context-packs/skills/queue-handoff/manifest.yaml +1 -1
- package/daemon/context-packs/skills/refocusing/manifest.yaml +1 -1
- package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/CHANGELOG.md +20 -46
- package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/SKILL.md +62 -76
- package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/manifest.yaml +1 -1
- package/daemon/context-packs/skills/seat-continuity-and-handover/SKILL.md +28 -22
- package/daemon/context-packs/skills/seat-continuity-and-handover/manifest.yaml +1 -1
- package/daemon/context-packs/skills/session-compaction-and-restore/SKILL.md +13 -15
- package/daemon/context-packs/skills/session-compaction-and-restore/manifest.yaml +1 -1
- package/daemon/context-packs/skills/software-for-agents/manifest.yaml +1 -1
- package/daemon/context-packs/world-example/manifest.yaml +1 -1
- package/daemon/context-packs/world-public/build-your-world.md +12 -7
- package/daemon/context-packs/world-public/manifest.yaml +1 -1
- package/daemon/dist/adapters/tmux.d.ts +7 -9
- package/daemon/dist/adapters/tmux.d.ts.map +1 -1
- package/daemon/dist/adapters/tmux.js +7 -35
- package/daemon/dist/adapters/tmux.js.map +1 -1
- package/daemon/dist/build-info.js +3 -3
- package/daemon/dist/daemon-shutdown.d.ts +27 -0
- package/daemon/dist/daemon-shutdown.d.ts.map +1 -0
- package/daemon/dist/daemon-shutdown.js +84 -0
- package/daemon/dist/daemon-shutdown.js.map +1 -0
- package/daemon/dist/domain/codex-thread-id.d.ts +1 -0
- package/daemon/dist/domain/codex-thread-id.d.ts.map +1 -1
- package/daemon/dist/domain/codex-thread-id.js +32 -23
- package/daemon/dist/domain/codex-thread-id.js.map +1 -1
- package/daemon/dist/domain/context-usage-store.d.ts +2 -0
- package/daemon/dist/domain/context-usage-store.d.ts.map +1 -1
- package/daemon/dist/domain/context-usage-store.js +7 -28
- package/daemon/dist/domain/context-usage-store.js.map +1 -1
- package/daemon/dist/domain/crash-cart-conductor.js +1 -1
- package/daemon/dist/domain/crash-cart-conductor.js.map +1 -1
- package/daemon/dist/domain/execution-view.d.ts.map +1 -1
- package/daemon/dist/domain/execution-view.js +24 -3
- package/daemon/dist/domain/execution-view.js.map +1 -1
- package/daemon/dist/domain/gateway/channel-operations.d.ts +1 -1
- package/daemon/dist/domain/gateway/channel-operations.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/connections-projection.d.ts +61 -0
- package/daemon/dist/domain/gateway/connections-projection.d.ts.map +1 -0
- package/daemon/dist/domain/gateway/connections-projection.js +149 -0
- package/daemon/dist/domain/gateway/connections-projection.js.map +1 -0
- package/daemon/dist/domain/gateway/human-registry.d.ts +3 -1
- package/daemon/dist/domain/gateway/human-registry.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/human-registry.js +3 -1
- package/daemon/dist/domain/gateway/human-registry.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/slack-subsystem.js +3 -2
- package/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
- package/daemon/dist/domain/health-diagnosis.js +1 -1
- package/daemon/dist/domain/health-diagnosis.js.map +1 -1
- package/daemon/dist/domain/lifecycle-obligations.d.ts +18 -0
- package/daemon/dist/domain/lifecycle-obligations.d.ts.map +1 -0
- package/daemon/dist/domain/lifecycle-obligations.js +35 -0
- package/daemon/dist/domain/lifecycle-obligations.js.map +1 -0
- package/daemon/dist/domain/model-divergence/current-generation-record.d.ts.map +1 -1
- package/daemon/dist/domain/model-divergence/current-generation-record.js +6 -1
- package/daemon/dist/domain/model-divergence/current-generation-record.js.map +1 -1
- package/daemon/dist/domain/policies/workflow-keepalive.d.ts +1 -0
- package/daemon/dist/domain/policies/workflow-keepalive.d.ts.map +1 -1
- package/daemon/dist/domain/policies/workflow-keepalive.js +7 -4
- package/daemon/dist/domain/policies/workflow-keepalive.js.map +1 -1
- package/daemon/dist/domain/project-lifecycle-compiler.d.ts +7 -0
- package/daemon/dist/domain/project-lifecycle-compiler.d.ts.map +1 -1
- package/daemon/dist/domain/project-lifecycle-compiler.js +119 -23
- package/daemon/dist/domain/project-lifecycle-compiler.js.map +1 -1
- package/daemon/dist/domain/queue-stuck-sweep.d.ts.map +1 -1
- package/daemon/dist/domain/queue-stuck-sweep.js +1 -0
- package/daemon/dist/domain/queue-stuck-sweep.js.map +1 -1
- package/daemon/dist/domain/seat-lifecycle-service.d.ts.map +1 -1
- package/daemon/dist/domain/seat-lifecycle-service.js +8 -1
- package/daemon/dist/domain/seat-lifecycle-service.js.map +1 -1
- package/daemon/dist/domain/startup-orchestrator.d.ts.map +1 -1
- package/daemon/dist/domain/startup-orchestrator.js +27 -11
- package/daemon/dist/domain/startup-orchestrator.js.map +1 -1
- package/daemon/dist/domain/startup-proof.d.ts.map +1 -1
- package/daemon/dist/domain/startup-proof.js +10 -9
- package/daemon/dist/domain/startup-proof.js.map +1 -1
- package/daemon/dist/domain/startup-resolver.d.ts +3 -1
- package/daemon/dist/domain/startup-resolver.d.ts.map +1 -1
- package/daemon/dist/domain/startup-resolver.js +18 -0
- package/daemon/dist/domain/startup-resolver.js.map +1 -1
- package/daemon/dist/domain/startup-validation.d.ts.map +1 -1
- package/daemon/dist/domain/startup-validation.js +12 -1
- package/daemon/dist/domain/startup-validation.js.map +1 -1
- package/daemon/dist/domain/types.d.ts +13 -1
- package/daemon/dist/domain/types.d.ts.map +1 -1
- package/daemon/dist/domain/types.js.map +1 -1
- package/daemon/dist/domain/user-settings/settings-store.d.ts +1 -1
- package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
- package/daemon/dist/domain/user-settings/settings-store.js +14 -0
- package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
- package/daemon/dist/domain/workflow-boot-sweep.d.ts +1 -0
- package/daemon/dist/domain/workflow-boot-sweep.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-boot-sweep.js +3 -0
- package/daemon/dist/domain/workflow-boot-sweep.js.map +1 -1
- package/daemon/dist/domain/workflow-exception-escalation.d.ts +4 -3
- package/daemon/dist/domain/workflow-exception-escalation.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-exception-escalation.js +22 -21
- package/daemon/dist/domain/workflow-exception-escalation.js.map +1 -1
- package/daemon/dist/domain/workflow-exception-router.d.ts +4 -3
- package/daemon/dist/domain/workflow-exception-router.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-exception-router.js +7 -6
- package/daemon/dist/domain/workflow-exception-router.js.map +1 -1
- package/daemon/dist/domain/workflow-human-destination.d.ts +18 -0
- package/daemon/dist/domain/workflow-human-destination.d.ts.map +1 -0
- package/daemon/dist/domain/workflow-human-destination.js +40 -0
- package/daemon/dist/domain/workflow-human-destination.js.map +1 -0
- package/daemon/dist/domain/workflow-projector.d.ts +4 -3
- package/daemon/dist/domain/workflow-projector.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-projector.js +26 -17
- package/daemon/dist/domain/workflow-projector.js.map +1 -1
- package/daemon/dist/domain/workflow-role-context.d.ts +4 -6
- package/daemon/dist/domain/workflow-role-context.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-role-context.js +7 -14
- package/daemon/dist/domain/workflow-role-context.js.map +1 -1
- package/daemon/dist/domain/workflow-runtime.d.ts +12 -3
- package/daemon/dist/domain/workflow-runtime.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-runtime.js +66 -14
- package/daemon/dist/domain/workflow-runtime.js.map +1 -1
- package/daemon/dist/domain/workflow-validator.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-validator.js +39 -24
- package/daemon/dist/domain/workflow-validator.js.map +1 -1
- package/daemon/dist/index.d.ts.map +1 -1
- package/daemon/dist/index.js +37 -96
- package/daemon/dist/index.js.map +1 -1
- package/daemon/dist/project-lifecycle-surface.d.ts +1 -1
- package/daemon/dist/project-lifecycle-surface.d.ts.map +1 -1
- package/daemon/dist/routes/gateway.d.ts.map +1 -1
- package/daemon/dist/routes/gateway.js +10 -0
- package/daemon/dist/routes/gateway.js.map +1 -1
- package/daemon/dist/routes/queue.d.ts.map +1 -1
- package/daemon/dist/routes/queue.js +4 -3
- package/daemon/dist/routes/queue.js.map +1 -1
- package/daemon/dist/routes/require-sender-identity.d.ts +3 -1
- package/daemon/dist/routes/require-sender-identity.d.ts.map +1 -1
- package/daemon/dist/routes/require-sender-identity.js +11 -5
- package/daemon/dist/routes/require-sender-identity.js.map +1 -1
- package/daemon/dist/routes/sessions.d.ts.map +1 -1
- package/daemon/dist/routes/sessions.js +95 -27
- package/daemon/dist/routes/sessions.js.map +1 -1
- package/daemon/dist/routes/workflow.d.ts.map +1 -1
- package/daemon/dist/routes/workflow.js +6 -1
- package/daemon/dist/routes/workflow.js.map +1 -1
- package/daemon/dist/server.d.ts.map +1 -1
- package/daemon/dist/server.js +2 -1
- package/daemon/dist/server.js.map +1 -1
- package/daemon/dist/startup.d.ts.map +1 -1
- package/daemon/dist/startup.js +6 -3
- package/daemon/dist/startup.js.map +1 -1
- package/daemon/docs/reference/agent-spec.md +6 -0
- package/daemon/docs/reference/getting-started.md +134 -28
- package/daemon/docs/reference/health-diagnosis.md +26 -0
- package/daemon/docs/reference/mission-install.md +5 -0
- package/daemon/docs/reference/project-release-profile.yaml +82 -0
- package/daemon/docs/reference/release-boundary.md +5 -0
- package/daemon/docs/reference/rig-spec.md +43 -4
- package/daemon/specs/agents/conveyor/planner/guidance/role.md +5 -3
- package/daemon/specs/agents/conveyor/planner/startup/context.md +13 -4
- package/daemon/specs/agents/design/product-designer/agent.yaml +4 -3
- package/daemon/specs/agents/design/product-designer/guidance/role.md +12 -10
- package/daemon/specs/agents/product-management/pm/guidance/role.md +19 -17
- package/daemon/specs/agents/shared/skills/core/agent-starters/SKILL.md +21 -19
- package/daemon/specs/agents/shared/skills/core/agent-startup-and-context-ingestion/SKILL.md +11 -10
- package/daemon/specs/agents/shared/skills/core/cross-host-rig-commands/SKILL.md +84 -148
- package/daemon/specs/agents/shared/skills/core/openrig-architect/SKILL.md +40 -47
- package/daemon/specs/agents/shared/skills/core/openrig-upgrade/SKILL.md +16 -0
- package/daemon/specs/agents/shared/skills/core/session-source-fork/SKILL.md +12 -10
- package/daemon/specs/agents/shared/skills/core/topology-mutation-and-seat-management/SKILL.md +15 -13
- package/daemon/specs/agents/shared/skills/pm/exec-summary/SKILL.md +1 -1
- package/daemon/specs/agents/shared/skills/pm/plan-review/SKILL.md +2 -2
- package/daemon/specs/agents/shared/skills/pm/requirements-writer/SKILL.md +1 -1
- package/daemon/specs/agents/shared/skills/pm/ui-mockup/SKILL.md +3 -3
- package/daemon/specs/agents/shared/skills/pods/orchestration-team/SKILL.md +41 -59
- package/daemon/specs/agents/shared/skills/process/agent-browser/LOCAL-INSIGHTS.md +24 -53
- package/daemon/specs/agents/shared/skills/process/systematic-debugging/find-polluter.sh +29 -15
- package/daemon/specs/agents/shared/skills/process/test-driven-development/SKILL.md +47 -40
- package/daemon/specs/agents/shared/skills/process/verification-before-completion/SKILL.md +3 -3
- package/daemon/specs/rigs/launch/first-project/CULTURE.md +39 -0
- package/daemon/specs/rigs/launch/first-project/rig.yaml +31 -0
- package/daemon/specs/rigs/launch/kernel/agents/advisor/lead/startup/context.md +1 -1
- package/daemon/specs/rigs/launch/kernel/agents/operator/agent/guidance/role.md +21 -7
- package/daemon/specs/rigs/launch/kernel/agents/operator/agent/startup/context.md +2 -2
- package/daemon/specs/rigs/launch/kernel/agents/queue/worker/guidance/role.md +19 -11
- package/daemon/specs/rigs/launch/kernel/agents/queue/worker/startup/context.md +3 -2
- package/daemon/specs/rigs/launch/kernel/culture/CULTURE.md +15 -8
- package/daemon/specs/rigs/launch/kernel/rig-claude-only.yaml +7 -0
- package/daemon/specs/rigs/launch/kernel/rig-codex-only.yaml +7 -0
- package/daemon/specs/rigs/launch/kernel/rig.yaml +9 -4
- package/daemon/specs/rigs/preview/product-team/topology/seats/dev1-qa/CRAFT.md +6 -4
- package/dist/build-info.js +3 -3
- package/dist/client.d.ts +6 -20
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +53 -32
- package/dist/client.js.map +1 -1
- package/dist/commands/config.d.ts.map +1 -1
- package/dist/commands/config.js +1 -0
- package/dist/commands/config.js.map +1 -1
- package/dist/commands/context.d.ts.map +1 -1
- package/dist/commands/context.js +15 -13
- package/dist/commands/context.js.map +1 -1
- package/dist/commands/daemon.d.ts.map +1 -1
- package/dist/commands/daemon.js +31 -27
- package/dist/commands/daemon.js.map +1 -1
- package/dist/commands/destroy.js +1 -1
- package/dist/commands/destroy.js.map +1 -1
- package/dist/commands/health.d.ts.map +1 -1
- package/dist/commands/health.js +59 -7
- package/dist/commands/health.js.map +1 -1
- package/dist/commands/launch.d.ts.map +1 -1
- package/dist/commands/launch.js +2 -2
- package/dist/commands/launch.js.map +1 -1
- package/dist/commands/queue.d.ts.map +1 -1
- package/dist/commands/queue.js +9 -5
- package/dist/commands/queue.js.map +1 -1
- package/dist/commands/send.d.ts.map +1 -1
- package/dist/commands/send.js +4 -8
- package/dist/commands/send.js.map +1 -1
- package/dist/commands/setup.d.ts.map +1 -1
- package/dist/commands/setup.js +10 -9
- package/dist/commands/setup.js.map +1 -1
- package/dist/commands/tui.d.ts +2 -0
- package/dist/commands/tui.d.ts.map +1 -1
- package/dist/commands/tui.js +26 -10
- package/dist/commands/tui.js.map +1 -1
- package/dist/commands/walk.d.ts.map +1 -1
- package/dist/commands/walk.js +24 -48
- package/dist/commands/walk.js.map +1 -1
- package/dist/commands/workflow-render.d.ts +19 -0
- package/dist/commands/workflow-render.d.ts.map +1 -1
- package/dist/commands/workflow-render.js +12 -1
- package/dist/commands/workflow-render.js.map +1 -1
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +4 -2
- package/dist/commands/workflow.js.map +1 -1
- package/dist/config-store.d.ts +2 -1
- package/dist/config-store.d.ts.map +1 -1
- package/dist/config-store.js +15 -0
- package/dist/config-store.js.map +1 -1
- package/dist/cross-host-executor.d.ts +1 -1
- package/dist/cross-host-executor.js +2 -2
- package/dist/cross-host-executor.js.map +1 -1
- package/dist/daemon-lifecycle.d.ts +8 -11
- package/dist/daemon-lifecycle.d.ts.map +1 -1
- package/dist/daemon-lifecycle.js +281 -146
- package/dist/daemon-lifecycle.js.map +1 -1
- package/dist/daemon-start-lock.d.ts +9 -0
- package/dist/daemon-start-lock.d.ts.map +1 -0
- package/dist/daemon-start-lock.js +47 -0
- package/dist/daemon-start-lock.js.map +1 -0
- package/dist/front-door.d.ts.map +1 -1
- package/dist/front-door.js +8 -1
- package/dist/front-door.js.map +1 -1
- package/dist/lib/file-transfer.js +1 -1
- package/dist/lib/file-transfer.js.map +1 -1
- package/dist/lib/walk-consumption.d.ts +6 -0
- package/dist/lib/walk-consumption.d.ts.map +1 -0
- package/dist/lib/walk-consumption.js +78 -0
- package/dist/lib/walk-consumption.js.map +1 -0
- package/dist/local-origin.d.ts +3 -0
- package/dist/local-origin.d.ts.map +1 -0
- package/dist/local-origin.js +37 -0
- package/dist/local-origin.js.map +1 -0
- package/dist/read-view.d.ts +17 -0
- package/dist/read-view.d.ts.map +1 -0
- package/dist/read-view.js +17 -0
- package/dist/read-view.js.map +1 -0
- package/dist/shared-tui.d.ts +12 -0
- package/dist/shared-tui.d.ts.map +1 -0
- package/dist/shared-tui.js +37 -0
- package/dist/shared-tui.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/adapters/tmux.d.ts +7 -9
- package/node_modules/@openrig/daemon/dist/adapters/tmux.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/adapters/tmux.js +7 -35
- package/node_modules/@openrig/daemon/dist/adapters/tmux.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/build-info.js +3 -3
- package/node_modules/@openrig/daemon/dist/daemon-shutdown.d.ts +27 -0
- package/node_modules/@openrig/daemon/dist/daemon-shutdown.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/daemon-shutdown.js +84 -0
- package/node_modules/@openrig/daemon/dist/daemon-shutdown.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/codex-thread-id.d.ts +1 -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 +32 -23
- package/node_modules/@openrig/daemon/dist/domain/codex-thread-id.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/context-usage-store.d.ts +2 -0
- package/node_modules/@openrig/daemon/dist/domain/context-usage-store.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/context-usage-store.js +7 -28
- package/node_modules/@openrig/daemon/dist/domain/context-usage-store.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/crash-cart-conductor.js +1 -1
- package/node_modules/@openrig/daemon/dist/domain/crash-cart-conductor.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/execution-view.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/execution-view.js +24 -3
- package/node_modules/@openrig/daemon/dist/domain/execution-view.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/channel-operations.d.ts +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/channel-operations.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/connections-projection.d.ts +61 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/connections-projection.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/connections-projection.js +149 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/connections-projection.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.d.ts +3 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.js +3 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.js +3 -2
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/health-diagnosis.js +1 -1
- package/node_modules/@openrig/daemon/dist/domain/health-diagnosis.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/lifecycle-obligations.d.ts +18 -0
- package/node_modules/@openrig/daemon/dist/domain/lifecycle-obligations.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/lifecycle-obligations.js +35 -0
- package/node_modules/@openrig/daemon/dist/domain/lifecycle-obligations.js.map +1 -0
- 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 +6 -1
- package/node_modules/@openrig/daemon/dist/domain/model-divergence/current-generation-record.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/policies/workflow-keepalive.d.ts +1 -0
- package/node_modules/@openrig/daemon/dist/domain/policies/workflow-keepalive.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/policies/workflow-keepalive.js +7 -4
- package/node_modules/@openrig/daemon/dist/domain/policies/workflow-keepalive.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/project-lifecycle-compiler.d.ts +7 -0
- package/node_modules/@openrig/daemon/dist/domain/project-lifecycle-compiler.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/project-lifecycle-compiler.js +119 -23
- package/node_modules/@openrig/daemon/dist/domain/project-lifecycle-compiler.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.js +1 -0
- package/node_modules/@openrig/daemon/dist/domain/queue-stuck-sweep.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/seat-lifecycle-service.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/seat-lifecycle-service.js +8 -1
- package/node_modules/@openrig/daemon/dist/domain/seat-lifecycle-service.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/startup-orchestrator.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/startup-orchestrator.js +27 -11
- package/node_modules/@openrig/daemon/dist/domain/startup-orchestrator.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/startup-proof.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/startup-proof.js +10 -9
- package/node_modules/@openrig/daemon/dist/domain/startup-proof.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/startup-resolver.d.ts +3 -1
- package/node_modules/@openrig/daemon/dist/domain/startup-resolver.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/startup-resolver.js +18 -0
- package/node_modules/@openrig/daemon/dist/domain/startup-resolver.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/startup-validation.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/startup-validation.js +12 -1
- package/node_modules/@openrig/daemon/dist/domain/startup-validation.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/types.d.ts +13 -1
- package/node_modules/@openrig/daemon/dist/domain/types.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/types.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.d.ts +1 -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 +14 -0
- package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/workflow-boot-sweep.d.ts +1 -0
- package/node_modules/@openrig/daemon/dist/domain/workflow-boot-sweep.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/workflow-boot-sweep.js +3 -0
- package/node_modules/@openrig/daemon/dist/domain/workflow-boot-sweep.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/workflow-exception-escalation.d.ts +4 -3
- package/node_modules/@openrig/daemon/dist/domain/workflow-exception-escalation.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/workflow-exception-escalation.js +22 -21
- package/node_modules/@openrig/daemon/dist/domain/workflow-exception-escalation.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/workflow-exception-router.d.ts +4 -3
- package/node_modules/@openrig/daemon/dist/domain/workflow-exception-router.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/workflow-exception-router.js +7 -6
- package/node_modules/@openrig/daemon/dist/domain/workflow-exception-router.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/workflow-human-destination.d.ts +18 -0
- package/node_modules/@openrig/daemon/dist/domain/workflow-human-destination.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/workflow-human-destination.js +40 -0
- package/node_modules/@openrig/daemon/dist/domain/workflow-human-destination.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/workflow-projector.d.ts +4 -3
- package/node_modules/@openrig/daemon/dist/domain/workflow-projector.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/workflow-projector.js +26 -17
- package/node_modules/@openrig/daemon/dist/domain/workflow-projector.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/workflow-role-context.d.ts +4 -6
- package/node_modules/@openrig/daemon/dist/domain/workflow-role-context.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/workflow-role-context.js +7 -14
- package/node_modules/@openrig/daemon/dist/domain/workflow-role-context.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/workflow-runtime.d.ts +12 -3
- package/node_modules/@openrig/daemon/dist/domain/workflow-runtime.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/workflow-runtime.js +66 -14
- package/node_modules/@openrig/daemon/dist/domain/workflow-runtime.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/workflow-validator.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/workflow-validator.js +39 -24
- package/node_modules/@openrig/daemon/dist/domain/workflow-validator.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/index.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/index.js +37 -96
- package/node_modules/@openrig/daemon/dist/index.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/project-lifecycle-surface.d.ts +1 -1
- package/node_modules/@openrig/daemon/dist/project-lifecycle-surface.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/gateway.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/gateway.js +10 -0
- package/node_modules/@openrig/daemon/dist/routes/gateway.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/queue.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/queue.js +4 -3
- package/node_modules/@openrig/daemon/dist/routes/queue.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/require-sender-identity.d.ts +3 -1
- package/node_modules/@openrig/daemon/dist/routes/require-sender-identity.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/require-sender-identity.js +11 -5
- package/node_modules/@openrig/daemon/dist/routes/require-sender-identity.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/sessions.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/sessions.js +95 -27
- package/node_modules/@openrig/daemon/dist/routes/sessions.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/workflow.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/workflow.js +6 -1
- package/node_modules/@openrig/daemon/dist/routes/workflow.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/server.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/server.js +2 -1
- package/node_modules/@openrig/daemon/dist/server.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/startup.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/startup.js +6 -3
- package/node_modules/@openrig/daemon/dist/startup.js.map +1 -1
- package/node_modules/@openrig/daemon/package.json +5 -1
- package/package.json +1 -1
- package/tui/dist/commands/completion.d.ts +8 -0
- package/tui/dist/commands/completion.d.ts.map +1 -0
- package/tui/dist/commands/completion.js +37 -0
- package/tui/dist/commands/completion.js.map +1 -0
- package/tui/dist/commands/registry.d.ts +7 -1
- package/tui/dist/commands/registry.d.ts.map +1 -1
- package/tui/dist/commands/registry.js +47 -0
- package/tui/dist/commands/registry.js.map +1 -1
- package/tui/dist/connections/connections-model.d.ts +72 -0
- package/tui/dist/connections/connections-model.d.ts.map +1 -0
- package/tui/dist/connections/connections-model.js +64 -0
- package/tui/dist/connections/connections-model.js.map +1 -0
- package/tui/dist/daemon-client.d.ts +1 -0
- package/tui/dist/daemon-client.d.ts.map +1 -1
- package/tui/dist/daemon-client.js +1 -0
- package/tui/dist/daemon-client.js.map +1 -1
- package/tui/dist/detail.d.ts +3 -0
- package/tui/dist/detail.d.ts.map +1 -1
- package/tui/dist/detail.js +23 -0
- package/tui/dist/detail.js.map +1 -1
- package/tui/dist/execution/execution-model.d.ts +1 -1
- package/tui/dist/execution/execution-model.d.ts.map +1 -1
- package/tui/dist/execution/execution-model.js +46 -170
- package/tui/dist/execution/execution-model.js.map +1 -1
- package/tui/dist/execution/workflow-model.d.ts +6 -0
- package/tui/dist/execution/workflow-model.d.ts.map +1 -0
- package/tui/dist/execution/workflow-model.js +219 -0
- package/tui/dist/execution/workflow-model.js.map +1 -0
- package/tui/dist/grammar.d.ts.map +1 -1
- package/tui/dist/grammar.js +1 -2
- package/tui/dist/grammar.js.map +1 -1
- package/tui/dist/health/health-model.d.ts +1 -1
- package/tui/dist/health/health-model.d.ts.map +1 -1
- package/tui/dist/health/health-model.js +5 -4
- package/tui/dist/health/health-model.js.map +1 -1
- package/tui/dist/hydrate.d.ts.map +1 -1
- package/tui/dist/hydrate.js +45 -8
- package/tui/dist/hydrate.js.map +1 -1
- package/tui/dist/input.d.ts +2 -0
- package/tui/dist/input.d.ts.map +1 -1
- package/tui/dist/input.js +28 -6
- package/tui/dist/input.js.map +1 -1
- package/tui/dist/main.js +47 -10
- package/tui/dist/main.js.map +1 -1
- package/tui/dist/render.d.ts +4 -0
- package/tui/dist/render.d.ts.map +1 -1
- package/tui/dist/render.js +128 -74
- package/tui/dist/render.js.map +1 -1
- package/tui/dist/sections.d.ts.map +1 -1
- package/tui/dist/sections.js +1 -0
- package/tui/dist/sections.js.map +1 -1
- package/tui/dist/socket-server.d.ts +4 -0
- package/tui/dist/socket-server.d.ts.map +1 -1
- package/tui/dist/socket-server.js +4 -0
- package/tui/dist/socket-server.js.map +1 -1
- package/tui/dist/state.d.ts +3 -1
- package/tui/dist/state.d.ts.map +1 -1
- package/tui/dist/state.js +47 -9
- package/tui/dist/state.js.map +1 -1
- package/tui/dist/stylize.js +3 -3
- package/tui/dist/stylize.js.map +1 -1
- package/tui/dist/time.d.ts +9 -0
- package/tui/dist/time.d.ts.map +1 -0
- package/tui/dist/time.js +42 -0
- package/tui/dist/time.js.map +1 -0
- package/tui/dist/types.d.ts +36 -1
- package/tui/dist/types.d.ts.map +1 -1
|
@@ -41,9 +41,9 @@ The orchestration pod is responsible for:
|
|
|
41
41
|
- **Status lives in the queue, not panes** (`status-not-chat-orchestrator`): `rig ps --nodes --json` + `rig queue` are your status source; do NOT reconstruct fleet-state by capturing panes (pane `rig capture` is high-bandwidth *within your own pod* — that's fine; it is not how you track cross-pod/fleet state). *(`rig ps --nodes` is YOUR rig's seats only — bare `rig ps` lists ALL rigs on the host; don't mistake a narrow node read for the whole world.)*
|
|
42
42
|
- **The watchdog is your clock** (`watchdog`): configure `rig watchdog` to wake you (~3 min); between wakes, idle (zero tokens) — no self-run sleep-loop re-reading panes at steady-state. Prefer one workflow-watchdog + targeted exception handling over many per-seat nag loops.
|
|
43
43
|
- **On each wake — cheap sweep:** `rig queue` + a *filtered* `rig ps` (see "Read cheap" below) first; ONLY for a seat that looks idle/suspicious, `rig capture <session>` last few lines (never a full pane, never huge chunks); **active owner → no-op.**
|
|
44
|
-
- **Read cheap — every status command has a token cost; project to the question.** The queue-first rule is about *where* status lives; this is about *how much you pay to read it*. The token bomb is the broad unfiltered dump, not the pane capture:
|
|
44
|
+
- **Read cheap — every status command has a token cost; project to the question.** The queue-first rule is about *where* status lives; this is about *how much you pay to read it*. The token bomb is the broad unfiltered dump, not the pane capture: a broad fleet response can overwhelm a one-rig or one-qitem question. Select the scope and fields before returning output to the agent.
|
|
45
45
|
- **Scope the read to the question.** Specific item → `rig queue show <qitem> --json`. One rig's frontier → filter + project only the fields you need, e.g. `rig ps --nodes --json | jq '.[] | select(.rigName=="<rig>") | {session:.canonicalSessionName, state:.agentActivity.state, hasAssignedWork, pendingWorkCount}'` (prefer a native rig/session filter if one exists). Never pull whole-fleet JSON to answer a narrow rig/qitem question.
|
|
46
|
-
- **Pane capture / transcript = last resort for one named stale owner,** not a status-polling loop — **re-capturing an unchanged pane returns no new information
|
|
46
|
+
- **Pane capture / transcript = last resort for one named stale owner,** not a status-polling loop — **re-capturing an unchanged pane returns no new information** (the unit of monitoring is an event — a wake, a queue transition, an activity signal — never elapsed time or a repeat count).
|
|
47
47
|
- **Context reads are task-scoped too:** read the skills the task needs; don't reload broad references or large files for a tiny queue update (compaction / named-skill rules excepted).
|
|
48
48
|
- **Notice-and-stop:** if any command emits unexpectedly huge output, that is a protocol miss — name it and correct the pattern immediately, don't absorb it as normal.
|
|
49
49
|
- **Self-test:** "Does this read return more than the decision in front of me needs?" If yes, narrow it before running.
|
|
@@ -115,36 +115,28 @@ When an agent looks stuck:
|
|
|
115
115
|
|
|
116
116
|
Do not call a blocked agent "in progress" forever.
|
|
117
117
|
|
|
118
|
-
## Capacity
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
-
|
|
132
|
-
|
|
133
|
-
the oversight / owner altitude, not the orchestrator's** — fork is your rung.
|
|
134
|
-
- **What's actually scarce:** with seats elastic, the real constraints reduce to **humans** (the
|
|
135
|
-
owner's attention, the operator slot), **money** (provider limits — account switching is the relief
|
|
136
|
-
valve), and **compute** (host limits). Protect *those*; never let a lane sit blocked on a "busy seat."
|
|
137
|
-
|
|
138
|
-
See `session-source-fork` for the fork primitive's mechanics and `delegating-work` for choosing fork
|
|
139
|
-
vs. subagent vs. route-to-a-context-holder.
|
|
118
|
+
## Capacity and assignment
|
|
119
|
+
|
|
120
|
+
A busy seat may be the current constraint. First check available owners, retained
|
|
121
|
+
context and the work's independent-review requirements. Reassign, defer, or add
|
|
122
|
+
capacity only within the declared scope and current provider/host limits.
|
|
123
|
+
|
|
124
|
+
`rig fork` can compose a new occupant from retained context when the installed
|
|
125
|
+
runtime and source support it. Check current help and actual source availability;
|
|
126
|
+
this skill grants no standing permission to fork, change accounts, or launch rigs
|
|
127
|
+
or hosts. A selected temporary fork needs a bounded outcome, durable return,
|
|
128
|
+
continuity disposition and an authorized retirement path. Distinct names alone
|
|
129
|
+
do not prove safe or correct lifecycle behavior.
|
|
130
|
+
|
|
131
|
+
See `session-source-fork` for continuity semantics. Choose a context holder or an
|
|
132
|
+
ephemeral subagent according to whether the acquired knowledge needs to persist.
|
|
140
133
|
|
|
141
134
|
## Topology settlement
|
|
142
135
|
|
|
143
136
|
**Your rig's roster is a fact you READ, never one this skill asserts.** Get the actual team
|
|
144
137
|
from `rig ps --nodes --json` at settlement time — a skill that hardcodes a specific topology
|
|
145
138
|
goes stale exactly like a stale boot overlay, and a cleared or fresh seat has no context to
|
|
146
|
-
doubt it
|
|
147
|
-
fourteen-seat rig's seats waiting for nodes that did not exist).
|
|
139
|
+
doubt it. A starter roster is an example, not a live inventory.
|
|
148
140
|
|
|
149
141
|
- Settle **what the current atom needs**, not the whole declared roster: dispatch when the
|
|
150
142
|
seats THIS work requires are up. **Never park the rig waiting for absent nodes** — a
|
|
@@ -173,10 +165,10 @@ An availability report is enough. Do not create obligations to improve utilizati
|
|
|
173
165
|
|
|
174
166
|
## Communication modes
|
|
175
167
|
|
|
176
|
-
Use
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
168
|
+
Use a durable queue handoff for assigned work with an owner and closure condition.
|
|
169
|
+
Use direct `rig send` for information or a scoped nudge that creates no new
|
|
170
|
+
obligation. Confirm durable custody and delivery separately; neither proves the
|
|
171
|
+
recipient understood or completed the work.
|
|
180
172
|
|
|
181
173
|
Use the chatroom when:
|
|
182
174
|
- the whole rig should see the status
|
|
@@ -213,37 +205,27 @@ The orchestrator does NOT relay messages between them. They communicate directly
|
|
|
213
205
|
|
|
214
206
|
On gated atoms, never send impl a "Go" without explicitly stating the FIRST action is to send a pre-edit to QA — impl will race through an entire task list if given a general "Go." On ungated atoms, a general "Go" is correct; do not smuggle the gate back in through dispatch phrasing.
|
|
215
207
|
|
|
216
|
-
## Dogfood
|
|
217
|
-
|
|
218
|
-
When QA is dogfooding (testing existing features), QA works solo with full autonomy:
|
|
219
|
-
- QA finds issues AND fixes them in a loop
|
|
220
|
-
- QA tests the fix, then moves to the next issue
|
|
221
|
-
- QA only escalates architecture-level concerns
|
|
222
|
-
- Do not dispatch QA to "test and report" — dispatch to "dogfood, fix what you find, re-test"
|
|
223
|
-
- The orchestrator does NOT fix things — QA and impl fix things
|
|
224
|
-
|
|
225
|
-
## Permission prompt handling
|
|
226
|
-
|
|
227
|
-
Permission prompts are the #1 mechanical blocker — surface them on your watchdog wake (a scoped `rig ps` / queue check), never a steady-state poll loop.
|
|
208
|
+
## Dogfood and review ownership
|
|
228
209
|
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
210
|
+
A dogfood assignment may authorize the outcome owner to diagnose, fix and retest
|
|
211
|
+
bounded issues. Say that scope explicitly. A read-only evaluation remains
|
|
212
|
+
read-only; a QA title does not authorize source edits or broader architecture.
|
|
213
|
+
Preserve any independently selected final check when the evaluator authors a fix.
|
|
214
|
+
Route findings outside the assignment to their owner with evidence.
|
|
232
215
|
|
|
233
|
-
##
|
|
216
|
+
## Permission and runtime handling
|
|
234
217
|
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
- After compaction: restore the active assignment and its selected context; skill names alone are not restored content. Follow the declared continuity policy without adding a universal quiz gate.
|
|
218
|
+
Use the actual prompt and declared authority to decide an intervention. Never
|
|
219
|
+
select a numbered option from a timeless harness recipe: prompt shape and the
|
|
220
|
+
consequence of persistent approval vary. An authorized unblock must preserve the
|
|
221
|
+
operation's scope; it does not grant publication, destructive or lifecycle powers.
|
|
240
222
|
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
223
|
+
Choose models and roles from the environment's current execution policy and
|
|
224
|
+
observed capabilities. Neither a vendor label nor a seat title determines who
|
|
225
|
+
may author plans, implement, review or accept work. Verify required runtime/model
|
|
226
|
+
identity before relying on the result. Follow the declared continuity policy;
|
|
227
|
+
context telemetry is evidence to interpret, not automatic authority to compact
|
|
228
|
+
or replace another seat.
|
|
247
229
|
|
|
248
230
|
## Intervention discipline
|
|
249
231
|
|
|
@@ -283,5 +265,5 @@ installed skill or a quiz as a universal admission gate.
|
|
|
283
265
|
- relay messages between agents (they communicate directly)
|
|
284
266
|
- auto-approve destructive operations
|
|
285
267
|
- rush agents with deadline pressure
|
|
286
|
-
-
|
|
287
|
-
-
|
|
268
|
+
- assign specification or acceptance authority from a runtime label alone
|
|
269
|
+
- change continuity from a context percentage without the selected policy and authority
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# agent-browser: Local Dev Insights
|
|
2
2
|
|
|
3
|
-
> Companion
|
|
4
|
-
>
|
|
5
|
-
>
|
|
3
|
+
> Companion notes for browser tasks. Command details below reflect v0.13.0-era
|
|
4
|
+
> usage and may differ in the installed release. Check current help and verify
|
|
5
|
+
> the target operation; this file is not a current browser or login test receipt.
|
|
6
6
|
|
|
7
7
|
---
|
|
8
8
|
|
|
@@ -60,7 +60,7 @@ Refs are invalidated by **any page state change**. This includes:
|
|
|
60
60
|
| `-s "#sel"` | Scoped to selector | Laser focus on one component |
|
|
61
61
|
| `--json` | JSON format | Programmatic parsing |
|
|
62
62
|
|
|
63
|
-
|
|
63
|
+
Use an interactive or scoped snapshot when a full DOM listing would obscure the elements needed for the task.
|
|
64
64
|
|
|
65
65
|
## Annotated Screenshots
|
|
66
66
|
|
|
@@ -121,55 +121,26 @@ EVALEOF
|
|
|
121
121
|
- **Persistent headed config:** Add `{"headed": true}` to `~/.agent-browser/config.json`
|
|
122
122
|
- **Named sessions for parallel work:** `agent-browser --session name open <url>`
|
|
123
123
|
|
|
124
|
-
## Authentication
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
agent-browser \
|
|
145
|
-
--profile ~/.agent-browser/profiles/local-app-google-profile \
|
|
146
|
-
--executable-path "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
|
|
147
|
-
--args "--disable-blink-features=AutomationControlled" \
|
|
148
|
-
open http://localhost:3010
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
**This applies to ANY profile that needs Google OAuth.** Always use `--executable-path` + `--args` for Google sign-in flows.
|
|
152
|
-
|
|
153
|
-
### Auth Setup Pattern
|
|
154
|
-
|
|
155
|
-
```bash
|
|
156
|
-
# First time: login in headed mode (user enters password)
|
|
157
|
-
agent-browser --profile ~/.agent-browser/profiles/<name> --headed true open <login-url>
|
|
158
|
-
# ... user logs in manually ...
|
|
159
|
-
agent-browser close
|
|
160
|
-
|
|
161
|
-
# Every future run: headless, already authenticated
|
|
162
|
-
agent-browser --profile ~/.agent-browser/profiles/<name> open <app-url>
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
### Encryption
|
|
166
|
-
|
|
167
|
-
Session state files in `~/.agent-browser/sessions/` are encrypted with AES-256-GCM.
|
|
168
|
-
Key stored at `~/.agent-browser/.encryption-key` (chmod 600).
|
|
169
|
-
Loaded via `AGENT_BROWSER_ENCRYPTION_KEY` env var in `~/.zshrc`.
|
|
170
|
-
|
|
171
|
-
Note: `--profile` directories are NOT encrypted (they're standard Chromium profile dirs).
|
|
172
|
-
Keep `~/.agent-browser/profiles/` permissions locked down.
|
|
124
|
+
## Authentication and retained browser state
|
|
125
|
+
|
|
126
|
+
Choose the installed tool's supported state or profile mechanism for the target
|
|
127
|
+
application. A saved state file or persistent profile does not prove a later
|
|
128
|
+
session is authenticated: check the intended account and a meaningful authorized
|
|
129
|
+
page or operation after reopening. Server expiry and application policy can
|
|
130
|
+
invalidate retained state.
|
|
131
|
+
|
|
132
|
+
Use an explicitly owned profile for the task. Obtain any required login through
|
|
133
|
+
the user's authorized flow; do not assume a profile, account, application URL or
|
|
134
|
+
provider workaround from this guide. Browser/provider compatibility must be
|
|
135
|
+
checked for the actual version and flow. No tested login or saved profile is
|
|
136
|
+
shipped with these notes.
|
|
137
|
+
|
|
138
|
+
Treat profile directories and saved state as credential-bearing data. Keep them
|
|
139
|
+
in the authorized private location, restrict access, and omit cookies, tokens,
|
|
140
|
+
passwords and encryption keys from source, ordinary logs and shared evidence.
|
|
141
|
+
If encryption is configured, verify the actual tool configuration and key custody;
|
|
142
|
+
do not infer encryption from a filename or assume a shell already exports a key.
|
|
143
|
+
Retain or remove only state the task owns and whose disposition is authorized.
|
|
173
144
|
|
|
174
145
|
## Updating the Official Skill
|
|
175
146
|
|
|
@@ -3,12 +3,14 @@
|
|
|
3
3
|
# Usage: ./find-polluter.sh <file_or_dir_to_check> <test_pattern>
|
|
4
4
|
# Example: ./find-polluter.sh '.git' 'src/**/*.test.ts'
|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
# Exit 0: every selected test succeeded without pollution; 1: polluter found;
|
|
7
|
+
# 2: no result (invalid input, selection failure, or incomplete test runs).
|
|
8
|
+
set -eo pipefail
|
|
7
9
|
|
|
8
10
|
if [ $# -ne 2 ]; then
|
|
9
11
|
echo "Usage: $0 <file_to_check> <test_pattern>"
|
|
10
12
|
echo "Example: $0 '.git' 'src/**/*.test.ts'"
|
|
11
|
-
exit
|
|
13
|
+
exit 2
|
|
12
14
|
fi
|
|
13
15
|
|
|
14
16
|
POLLUTION_CHECK="$1"
|
|
@@ -19,27 +21,35 @@ echo "Test pattern: $TEST_PATTERN"
|
|
|
19
21
|
echo ""
|
|
20
22
|
|
|
21
23
|
# Get list of test files
|
|
22
|
-
TEST_FILES=$(find . -path "
|
|
23
|
-
|
|
24
|
+
if ! TEST_FILES=$(find . -type f -path "./${TEST_PATTERN#./}" | sort); then
|
|
25
|
+
echo "Test selection failed; no tests ran."
|
|
26
|
+
exit 2
|
|
27
|
+
fi
|
|
28
|
+
if [ -z "$TEST_FILES" ]; then
|
|
29
|
+
echo "No test files matched; no tests ran."
|
|
30
|
+
exit 2
|
|
31
|
+
fi
|
|
32
|
+
TOTAL=$(printf '%s\n' "$TEST_FILES" | wc -l | tr -d ' ')
|
|
24
33
|
|
|
25
34
|
echo "Found $TOTAL test files"
|
|
26
35
|
echo ""
|
|
27
36
|
|
|
28
37
|
COUNT=0
|
|
29
|
-
|
|
38
|
+
FAILED=0
|
|
39
|
+
if [ -e "$POLLUTION_CHECK" ]; then
|
|
40
|
+
echo "Pollution already exists before testing; no tests ran."
|
|
41
|
+
exit 2
|
|
42
|
+
fi
|
|
43
|
+
while IFS= read -r TEST_FILE; do
|
|
30
44
|
COUNT=$((COUNT + 1))
|
|
31
45
|
|
|
32
|
-
# Skip if pollution already exists
|
|
33
|
-
if [ -e "$POLLUTION_CHECK" ]; then
|
|
34
|
-
echo "⚠️ Pollution already exists before test $COUNT/$TOTAL"
|
|
35
|
-
echo " Skipping: $TEST_FILE"
|
|
36
|
-
continue
|
|
37
|
-
fi
|
|
38
|
-
|
|
39
46
|
echo "[$COUNT/$TOTAL] Testing: $TEST_FILE"
|
|
40
47
|
|
|
41
48
|
# Run the test
|
|
42
|
-
npm test "$TEST_FILE" > /dev/null 2>&1
|
|
49
|
+
if ! npm test "$TEST_FILE" > /dev/null 2>&1; then
|
|
50
|
+
FAILED=$((FAILED + 1))
|
|
51
|
+
echo "Test run failed: $TEST_FILE"
|
|
52
|
+
fi
|
|
43
53
|
|
|
44
54
|
# Check if pollution appeared
|
|
45
55
|
if [ -e "$POLLUTION_CHECK" ]; then
|
|
@@ -56,8 +66,12 @@ for TEST_FILE in $TEST_FILES; do
|
|
|
56
66
|
echo " cat $TEST_FILE # Review test code"
|
|
57
67
|
exit 1
|
|
58
68
|
fi
|
|
59
|
-
done
|
|
69
|
+
done <<< "$TEST_FILES"
|
|
60
70
|
|
|
61
71
|
echo ""
|
|
62
|
-
|
|
72
|
+
if [ "$FAILED" -gt 0 ]; then
|
|
73
|
+
echo "Incomplete: $FAILED test runs failed; no polluter observed."
|
|
74
|
+
exit 2
|
|
75
|
+
fi
|
|
76
|
+
echo "✅ No polluter found - $COUNT test runs succeeded without pollution."
|
|
63
77
|
exit 0
|
|
@@ -4,8 +4,8 @@ description: Use when implementing any feature or bugfix, before writing impleme
|
|
|
4
4
|
metadata:
|
|
5
5
|
openrig:
|
|
6
6
|
vendored_from: "Obra Superpowers (https://github.com/obra/superpowers)"
|
|
7
|
-
vendoring_pattern:
|
|
8
|
-
last_upstream_check: "2026-05-13 (
|
|
7
|
+
vendoring_pattern: modify-the-file
|
|
8
|
+
last_upstream_check: "2026-05-13 (historical upstream comparison; local scope and preservation adaptations made since)"
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
# Test-Driven Development (TDD)
|
|
@@ -20,18 +20,22 @@ Write the test first. Watch it fail. Write minimal code to pass.
|
|
|
20
20
|
|
|
21
21
|
## When to Use
|
|
22
22
|
|
|
23
|
-
**
|
|
23
|
+
**Use test-first for selected behavior where regression risk warrants it:**
|
|
24
24
|
- New features
|
|
25
25
|
- Bug fixes
|
|
26
26
|
- Refactoring
|
|
27
27
|
- Behavior changes
|
|
28
28
|
|
|
29
|
-
**
|
|
29
|
+
**Choose proportionate verification for work such as:**
|
|
30
30
|
- Throwaway prototypes
|
|
31
31
|
- Generated code
|
|
32
32
|
- Configuration files
|
|
33
33
|
|
|
34
|
-
|
|
34
|
+
Resolve the task's selected project/mission/slice procedure first. A required
|
|
35
|
+
TDD step remains required within that scope; changing it needs the authority
|
|
36
|
+
named by that selection. Outside it, choose verification that can detect the
|
|
37
|
+
failure without adding a human approval ritual. The procedure below describes
|
|
38
|
+
TDD when selected, not a completion gate for every kind of work.
|
|
35
39
|
|
|
36
40
|
**Chunk size follows the outcome.** Keep red → green → refactor for the behavior
|
|
37
41
|
being changed and build a coherent chunk. TDD does not require two people,
|
|
@@ -40,21 +44,17 @@ project/mission/slice component or wave selection. An explicitly selected gate
|
|
|
40
44
|
still applies; an unselected role cannot add one.
|
|
41
45
|
|
|
42
46
|
|
|
43
|
-
##
|
|
47
|
+
## Test-First Contract for Selected Behavior
|
|
44
48
|
|
|
45
49
|
```
|
|
46
|
-
|
|
50
|
+
Selected TDD behavior: observe the expected failure before implementing the fix.
|
|
47
51
|
```
|
|
48
52
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
- Don't look at it
|
|
55
|
-
- Delete means delete
|
|
56
|
-
|
|
57
|
-
Implement fresh from tests. Period.
|
|
53
|
+
Already wrote the implementation? Preserve existing and others' bytes. Establish
|
|
54
|
+
the failing baseline in an isolated copy or by reversibly setting aside only
|
|
55
|
+
your owned change, then implement from the behavioral test. This skill grants
|
|
56
|
+
no authority to delete code. If a failing baseline cannot be demonstrated,
|
|
57
|
+
record that limit and follow the selected procedure; do not call tests-after TDD.
|
|
58
58
|
|
|
59
59
|
## Red-Green-Refactor
|
|
60
60
|
|
|
@@ -124,7 +124,7 @@ Vague name, tests mock not code
|
|
|
124
124
|
|
|
125
125
|
### Verify RED - Watch It Fail
|
|
126
126
|
|
|
127
|
-
**
|
|
127
|
+
**Required to establish RED in the selected TDD cycle.**
|
|
128
128
|
|
|
129
129
|
```bash
|
|
130
130
|
npm test path/to/test.test.ts
|
|
@@ -179,7 +179,7 @@ Don't add features, refactor other code, or "improve" beyond the test.
|
|
|
179
179
|
|
|
180
180
|
### Verify GREEN - Watch It Pass
|
|
181
181
|
|
|
182
|
-
**
|
|
182
|
+
**Required to establish GREEN in the selected TDD cycle.**
|
|
183
183
|
|
|
184
184
|
```bash
|
|
185
185
|
npm test path/to/test.test.ts
|
|
@@ -237,13 +237,11 @@ Manual testing is ad-hoc. You think you tested everything but:
|
|
|
237
237
|
|
|
238
238
|
Automated tests are systematic. They run the same way every time.
|
|
239
239
|
|
|
240
|
-
**"
|
|
240
|
+
**"I already spent X hours on the implementation"**
|
|
241
241
|
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
The "waste" is keeping code you can't trust. Working code without real tests is technical debt.
|
|
242
|
+
Time spent does not prove behavior. Preserve the work and demonstrate that the
|
|
243
|
+
test detects the missing behavior on a baseline without the owned change.
|
|
244
|
+
Then verify the implementation against it. Report the actual sequence honestly.
|
|
247
245
|
|
|
248
246
|
**"TDD is dogmatic, being pragmatic means adapting"**
|
|
249
247
|
|
|
@@ -267,21 +265,24 @@ Tests-first force edge case discovery before implementing. Tests-after verify yo
|
|
|
267
265
|
|
|
268
266
|
## Common Rationalizations
|
|
269
267
|
|
|
268
|
+
These challenges apply within selected TDD work, not to an authorized choice
|
|
269
|
+
of another verification method.
|
|
270
|
+
|
|
270
271
|
| Excuse | Reality |
|
|
271
272
|
|--------|---------|
|
|
272
|
-
| "Too simple to test" |
|
|
273
|
+
| "Too simple to test" | Simplicity alone does not waive a selected behavioral check. |
|
|
273
274
|
| "I'll test after" | Tests passing immediately prove nothing. |
|
|
274
275
|
| "Tests after achieve same goals" | Tests-after = "what does this do?" Tests-first = "what should this do?" |
|
|
275
276
|
| "Already manually tested" | Ad-hoc ≠ systematic. No record, can't re-run. |
|
|
276
|
-
| "
|
|
277
|
-
| "Keep as reference, write tests first" |
|
|
278
|
-
| "Need to explore first" |
|
|
277
|
+
| "Already spent X hours" | Time spent is not evidence; preserve the work and prove the failing baseline. |
|
|
278
|
+
| "Keep as reference, write tests first" | Tests derived from the implementation risk repeating its assumptions; use the required behavior and a failing baseline. |
|
|
279
|
+
| "Need to explore first" | Keep exploration separate from the implementation and begin the selected TDD cycle when the behavior is understood. |
|
|
279
280
|
| "Test hard = design unclear" | Listen to test. Hard to test = hard to use. |
|
|
280
281
|
| "TDD will slow me down" | TDD faster than debugging. Pragmatic = test-first. |
|
|
281
282
|
| "Manual test faster" | Manual doesn't prove edge cases. You'll re-test every change. |
|
|
282
283
|
| "Existing code has no tests" | You're improving it. Add tests for existing code. |
|
|
283
284
|
|
|
284
|
-
## Red Flags
|
|
285
|
+
## Red Flags in Selected TDD Work
|
|
285
286
|
|
|
286
287
|
- Code before test
|
|
287
288
|
- Test after implementation
|
|
@@ -293,11 +294,13 @@ Tests-first force edge case discovery before implementing. Tests-after verify yo
|
|
|
293
294
|
- "Tests after achieve the same purpose"
|
|
294
295
|
- "It's about spirit not ritual"
|
|
295
296
|
- "Keep as reference" or "adapt existing code"
|
|
296
|
-
- "Already spent X hours,
|
|
297
|
+
- "Already spent X hours, so verification can wait"
|
|
297
298
|
- "TDD is dogmatic, I'm being pragmatic"
|
|
298
299
|
- "This is different because..."
|
|
299
300
|
|
|
300
|
-
|
|
301
|
+
Check whether the claimed RED → GREEN sequence actually happened. Repair the
|
|
302
|
+
missing evidence using the preservation rule above; these signals never
|
|
303
|
+
authorize deleting existing work.
|
|
301
304
|
|
|
302
305
|
## Example: Bug Fix
|
|
303
306
|
|
|
@@ -338,9 +341,9 @@ Extract validation for multiple fields if needed.
|
|
|
338
341
|
|
|
339
342
|
## Verification Checklist
|
|
340
343
|
|
|
341
|
-
Before
|
|
344
|
+
Before claiming the selected TDD work complete:
|
|
342
345
|
|
|
343
|
-
- [ ]
|
|
346
|
+
- [ ] Tests cover the selected behavioral outcomes
|
|
344
347
|
- [ ] Watched each test fail before implementing
|
|
345
348
|
- [ ] Each test failed for expected reason (feature missing, not typo)
|
|
346
349
|
- [ ] Wrote minimal code to pass each test
|
|
@@ -349,22 +352,25 @@ Before marking work complete:
|
|
|
349
352
|
- [ ] Tests use real code (mocks only if unavoidable)
|
|
350
353
|
- [ ] Edge cases and errors covered
|
|
351
354
|
|
|
352
|
-
|
|
355
|
+
An unmet selected check remains visible. Address it or obtain the disposition
|
|
356
|
+
required by the selected procedure; do not turn this checklist into a gate on
|
|
357
|
+
unselected work or erase code to make the history look test-first.
|
|
353
358
|
|
|
354
359
|
## When Stuck
|
|
355
360
|
|
|
356
361
|
| Problem | Solution |
|
|
357
362
|
|---------|----------|
|
|
358
|
-
| Don't know how to test | Write
|
|
363
|
+
| Don't know how to test | Write the desired API and assertion first. Consult the relevant peer or work owner if the behavior is unclear. |
|
|
359
364
|
| Test too complicated | Design too complicated. Simplify interface. |
|
|
360
365
|
| Must mock everything | Code too coupled. Use dependency injection. |
|
|
361
366
|
| Test setup huge | Extract helpers. Still complex? Simplify design. |
|
|
362
367
|
|
|
363
368
|
## Debugging Integration
|
|
364
369
|
|
|
365
|
-
|
|
370
|
+
For a bug in selected TDD scope, write a failing test reproducing it. Follow the
|
|
371
|
+
TDD cycle to demonstrate the fix and prevent regression.
|
|
366
372
|
|
|
367
|
-
|
|
373
|
+
Outside that scope, choose a proportionate regression check and retain its evidence.
|
|
368
374
|
|
|
369
375
|
## Testing Anti-Patterns
|
|
370
376
|
|
|
@@ -376,8 +382,9 @@ When adding mocks or test utilities, read @testing-anti-patterns.md to avoid com
|
|
|
376
382
|
## Final Rule
|
|
377
383
|
|
|
378
384
|
```
|
|
379
|
-
|
|
380
|
-
Otherwise → not
|
|
385
|
+
Selected TDD behavior → test exists and failed first
|
|
386
|
+
Otherwise → do not claim a test-first sequence
|
|
381
387
|
```
|
|
382
388
|
|
|
383
|
-
|
|
389
|
+
Honor explicitly selected gates and their decision owner. This skill adds no
|
|
390
|
+
universal human permission step, deletion authority or gate on unselected work.
|
|
@@ -4,7 +4,7 @@ description: Use when about to claim work is complete, fixed, or passing, before
|
|
|
4
4
|
metadata:
|
|
5
5
|
openrig:
|
|
6
6
|
vendored_from: "Obra Superpowers (https://github.com/obra/superpowers)"
|
|
7
|
-
vendoring_pattern:
|
|
7
|
+
vendoring_pattern: modify-the-file
|
|
8
8
|
last_upstream_check: "2026-05-13 (diff against plugin source pulled 2026-05-11 = identical)"
|
|
9
9
|
---
|
|
10
10
|
|
|
@@ -116,10 +116,10 @@ Running a verification is necessary but not sufficient: a check can exit clean a
|
|
|
116
116
|
|
|
117
117
|
- **Assert on CONTENT, never shape or count.** Output that *looks* like success — a non-zero count, a clean exit, no error text — can carry failure as its content. Before trusting a check, ask what its output looks like *when it fails*: if failure and success are indistinguishable at a glance, the check proves nothing. (`[1 lines]` and `No matches found` both read as "a match" to a line-count.)
|
|
118
118
|
- **Compare the returned value to the value you PASSED — never to a description of it.** A confident label (`evidenceRef NOW SET:` printed above the untouched original) is indistinguishable from a verification in a transcript. Diff the actual result against your actual input, not against a claim about it.
|
|
119
|
-
- **Find the untested axis.** Thorough coverage of ONE axis reads as thorough coverage overall. Ask what every one of your tests shares — a healthy manifest, a default option value, the happy path — and treat that shared assumption as the dimension you never tested.
|
|
119
|
+
- **Find the untested axis.** Thorough coverage of ONE axis reads as thorough coverage overall. Ask what every one of your tests shares — a healthy manifest, a default option value, the happy path — and treat that shared assumption as the dimension you never tested.
|
|
120
120
|
- **A syntax check proves parseability and nothing else.** A clean `node --check` / lint / parse pass is the *covered* axis; boot and runtime are the untested one. Parseable ≠ sound.
|
|
121
121
|
- **A failure whose shape is a HANG reports nothing.** A bare `await` against a stated deadline that never re-checks cannot fail loudly. Race it against a timer so failure has a shape you can see.
|
|
122
|
-
- **A completeness inventory read through a truncating display is worthless.** When deciding *which occurrences to change*, count with `grep -c` / `grep -o` / full-line output — never `cut`, `head`, or a pager, which can hide a match *past* the cut
|
|
122
|
+
- **A completeness inventory read through a truncating display is worthless.** When deciding *which occurrences to change*, count with `grep -c` / `grep -o` / full-line output — never `cut`, `head`, or a pager, which can hide a match *past* the cut. Distinguish *"I found N"* (a count) from *"I saw N"* (a display). Audit multiline prose **by paragraph, not by line** — a line filter both misses long-line matches and false-flags paragraphs whose companion text is on the next line. Then re-audit with a **different method** than the one that built the inventory — same-method re-checking reproduces the blind spot. (Empty/short output is a claim about your COMMAND until re-proven a second way.)
|
|
123
123
|
|
|
124
124
|
## Why This Matters
|
|
125
125
|
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
# First project
|
|
2
|
+
|
|
3
|
+
Work in the repository selected at launch. The user supplies an outcome; the
|
|
4
|
+
owner carries it through implementation, appropriate checks and a durable
|
|
5
|
+
result. Read the repository instructions and existing project/mission/slice
|
|
6
|
+
context before changing anything. If there is no selected workflow, keep the
|
|
7
|
+
path light. Do not install a release process for a first task.
|
|
8
|
+
|
|
9
|
+
## Receiving work
|
|
10
|
+
|
|
11
|
+
Run `rig whoami --json` and check `rig queue list --owned --limit 1000`.
|
|
12
|
+
Claim an assigned row before working. For a vague request, inspect the relevant
|
|
13
|
+
code first, then ask for the one decision that changes the outcome.
|
|
14
|
+
When the user starts with a terminal message, create and claim the durable task
|
|
15
|
+
from your own seat before implementation; an unbound user shell need not forge
|
|
16
|
+
a queue identity.
|
|
17
|
+
|
|
18
|
+
For the first meaningful code change, ask dev-check for an independent check
|
|
19
|
+
of the exact diff and the behavior it promises. Subsequent checks should match
|
|
20
|
+
the consequence of the work. Hand off through `rig queue handoff`, with the
|
|
21
|
+
repository path, candidate commit or diff, checks run and any limits. Consult
|
|
22
|
+
`--help` for current syntax. Do not use chat text as the work record.
|
|
23
|
+
|
|
24
|
+
The checker records observations against that candidate and returns actionable
|
|
25
|
+
findings to the owner. The owner resolves findings and records the final result
|
|
26
|
+
and continuation on the queue. Point to evidence in the project's existing
|
|
27
|
+
work artifacts, or a repository-local task note if it has no work tree yet.
|
|
28
|
+
Do not mark a change accepted because another row closed.
|
|
29
|
+
|
|
30
|
+
## Boundaries and continuation
|
|
31
|
+
|
|
32
|
+
Keep local edits and commits within the assigned change. Publishing, pushes,
|
|
33
|
+
release and destructive operations need their own authorization. A permission
|
|
34
|
+
prompt is incomplete work; name the exact missing decision and retain the row.
|
|
35
|
+
|
|
36
|
+
On re-entry read current queue state and project artifacts; do not repeat a
|
|
37
|
+
finished change or launch duplicate seats. Explain the result in terms the
|
|
38
|
+
user can exercise, state what was not checked, and name the next useful action.
|
|
39
|
+
Leave the project ready for another outcome at the same owner address.
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
version: "0.2"
|
|
2
|
+
name: first-project
|
|
3
|
+
summary: >
|
|
4
|
+
Two Codex seats in your repository: an outcome owner and an independent
|
|
5
|
+
checker. Give the owner one bounded change; follow the durable result and
|
|
6
|
+
continue at the same address. See docs/reference/getting-started.md.
|
|
7
|
+
|
|
8
|
+
culture_file: CULTURE.md
|
|
9
|
+
|
|
10
|
+
pods:
|
|
11
|
+
- id: dev
|
|
12
|
+
label: Project
|
|
13
|
+
members:
|
|
14
|
+
- id: owner
|
|
15
|
+
agent_ref: "local:../../../agents/development/implementer"
|
|
16
|
+
runtime: codex
|
|
17
|
+
model: gpt-6-astra
|
|
18
|
+
profile: default
|
|
19
|
+
cwd: "."
|
|
20
|
+
- id: check
|
|
21
|
+
agent_ref: "local:../../../agents/development/qa"
|
|
22
|
+
runtime: codex
|
|
23
|
+
model: gpt-6-astra
|
|
24
|
+
profile: default
|
|
25
|
+
cwd: "."
|
|
26
|
+
edges:
|
|
27
|
+
- kind: delegates_to
|
|
28
|
+
from: owner
|
|
29
|
+
to: check
|
|
30
|
+
|
|
31
|
+
edges: []
|