@openrig/cli 0.5.9 → 0.5.10
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/skills/messaging-the-human/SKILL.md +48 -61
- package/daemon/assets/plugins/openrig-core/skills/mission-slice-sop/SKILL.md +19 -5
- package/daemon/assets/plugins/openrig-core/skills/openrig-user/SKILL.md +25 -0
- package/daemon/context-packs/onboarding-width/manifest.yaml +1 -1
- package/daemon/context-packs/onboarding-width/public-what-you-can-do.md +26 -10
- package/daemon/context-packs/skills/agent-operated-software/manifest.yaml +1 -1
- package/daemon/context-packs/skills/agent-operated-workflows/manifest.yaml +1 -1
- package/daemon/context-packs/skills/applying-a-permission-policy/manifest.yaml +1 -1
- package/daemon/context-packs/skills/claude-compaction-restore/manifest.yaml +1 -1
- 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 +21 -6
- package/daemon/context-packs/skills/core/agent-startup-and-context-ingestion/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/cross-host-rig-commands/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/human-in-the-loop/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/messaging-the-human/SKILL.md +48 -61
- package/daemon/context-packs/skills/core/messaging-the-human/manifest.yaml +3 -3
- 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/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/rig-bundles-and-shareable-artifacts/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/rig-lifecycle/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/session-source-fork/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/specification-system/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/topology-mutation-and-seat-management/manifest.yaml +1 -1
- package/daemon/context-packs/skills/core/watchdog/manifest.yaml +1 -1
- package/daemon/context-packs/skills/delegating-work/manifest.yaml +1 -1
- 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/SKILL.md +19 -5
- package/daemon/context-packs/skills/mission-slice-sop/manifest.yaml +1 -1
- package/daemon/context-packs/skills/openrig-operating-model/manifest.yaml +1 -1
- package/daemon/context-packs/skills/openrig-user/SKILL.md +25 -0
- package/daemon/context-packs/skills/openrig-user/manifest.yaml +1 -1
- 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/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/office-hours/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/plan-review/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/requirements-writer/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pm/ui-mockup/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pods/development-team/SKILL.md +40 -139
- package/daemon/context-packs/skills/pods/development-team/manifest.yaml +3 -3
- package/daemon/context-packs/skills/pods/orchestration-team/SKILL.md +40 -60
- package/daemon/context-packs/skills/pods/orchestration-team/manifest.yaml +3 -3
- package/daemon/context-packs/skills/pods/oversight-team/manifest.yaml +1 -1
- package/daemon/context-packs/skills/pods/review-team/SKILL.md +34 -31
- package/daemon/context-packs/skills/pods/review-team/manifest.yaml +3 -3
- package/daemon/context-packs/skills/process/agent-browser/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/context-engineering/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/dogfood/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/frontend-design/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/systematic-debugging/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/test-driven-development/SKILL.md +6 -8
- package/daemon/context-packs/skills/process/test-driven-development/manifest.yaml +1 -1
- package/daemon/context-packs/skills/process/verification-before-completion/manifest.yaml +1 -1
- package/daemon/context-packs/skills/queue-handoff/manifest.yaml +1 -1
- package/daemon/context-packs/skills/refocusing/manifest.yaml +1 -1
- package/daemon/context-packs/skills/retiring-and-inheriting-a-seat/manifest.yaml +1 -1
- package/daemon/context-packs/skills/seat-continuity-and-handover/manifest.yaml +1 -1
- 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/manifest.yaml +1 -1
- package/daemon/dist/build-info.js +3 -3
- package/daemon/dist/domain/gateway/channel-operations.d.ts +39 -0
- package/daemon/dist/domain/gateway/channel-operations.d.ts.map +1 -0
- package/daemon/dist/domain/gateway/channel-operations.js +35 -0
- package/daemon/dist/domain/gateway/channel-operations.js.map +1 -0
- package/daemon/dist/domain/gateway/gateway-subsystem.d.ts +3 -0
- package/daemon/dist/domain/gateway/gateway-subsystem.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/gateway-subsystem.js +3 -0
- package/daemon/dist/domain/gateway/gateway-subsystem.js.map +1 -1
- package/daemon/dist/domain/gateway/human-readiness.d.ts +37 -0
- package/daemon/dist/domain/gateway/human-readiness.d.ts.map +1 -0
- package/daemon/dist/domain/gateway/human-readiness.js +44 -0
- package/daemon/dist/domain/gateway/human-readiness.js.map +1 -0
- package/daemon/dist/domain/gateway/human-registry.d.ts +2 -7
- package/daemon/dist/domain/gateway/human-registry.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/human-registry.js +2 -7
- package/daemon/dist/domain/gateway/human-registry.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/inbound.d.ts +16 -1
- package/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/inbound.js +35 -12
- package/daemon/dist/domain/gateway/slack/inbound.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/queue-access.d.ts +1 -0
- package/daemon/dist/domain/gateway/slack/queue-access.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/queue-access.js +1 -0
- package/daemon/dist/domain/gateway/slack/queue-access.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts +18 -0
- package/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/slack-subsystem.js +62 -8
- package/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/socket-inbound.d.ts +13 -0
- package/daemon/dist/domain/gateway/slack/socket-inbound.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/socket-inbound.js +59 -1
- package/daemon/dist/domain/gateway/slack/socket-inbound.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/state-store.d.ts +21 -0
- package/daemon/dist/domain/gateway/slack/state-store.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/state-store.js +28 -1
- package/daemon/dist/domain/gateway/slack/state-store.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/thread-routing.d.ts +2 -0
- package/daemon/dist/domain/gateway/slack/thread-routing.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/thread-routing.js +6 -1
- package/daemon/dist/domain/gateway/slack/thread-routing.js.map +1 -1
- package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts +4 -0
- package/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts.map +1 -1
- package/daemon/dist/domain/gateway/slack/thread-seat-map.js +11 -0
- package/daemon/dist/domain/gateway/slack/thread-seat-map.js.map +1 -1
- package/daemon/dist/domain/health-checkpoints.d.ts +57 -0
- package/daemon/dist/domain/health-checkpoints.d.ts.map +1 -0
- package/daemon/dist/domain/health-checkpoints.js +198 -0
- package/daemon/dist/domain/health-checkpoints.js.map +1 -0
- package/daemon/dist/domain/health-context.d.ts +14 -0
- package/daemon/dist/domain/health-context.d.ts.map +1 -0
- package/daemon/dist/domain/health-context.js +93 -0
- package/daemon/dist/domain/health-context.js.map +1 -0
- package/daemon/dist/domain/health-detectors.d.ts +106 -0
- package/daemon/dist/domain/health-detectors.d.ts.map +1 -0
- package/daemon/dist/domain/health-detectors.js +392 -0
- package/daemon/dist/domain/health-detectors.js.map +1 -0
- package/daemon/dist/domain/health-diagnosis.d.ts +143 -0
- package/daemon/dist/domain/health-diagnosis.d.ts.map +1 -0
- package/daemon/dist/domain/health-diagnosis.js +249 -0
- package/daemon/dist/domain/health-diagnosis.js.map +1 -0
- package/daemon/dist/domain/health-passive-ceremony.d.ts +19 -0
- package/daemon/dist/domain/health-passive-ceremony.d.ts.map +1 -0
- package/daemon/dist/domain/health-passive-ceremony.js +234 -0
- package/daemon/dist/domain/health-passive-ceremony.js.map +1 -0
- package/daemon/dist/domain/health-policy.d.ts +45 -0
- package/daemon/dist/domain/health-policy.d.ts.map +1 -0
- package/daemon/dist/domain/health-policy.js +89 -0
- package/daemon/dist/domain/health-policy.js.map +1 -0
- package/daemon/dist/domain/health-projection.d.ts +237 -0
- package/daemon/dist/domain/health-projection.d.ts.map +1 -0
- package/daemon/dist/domain/health-projection.js +312 -0
- package/daemon/dist/domain/health-projection.js.map +1 -0
- package/daemon/dist/domain/mission-control/mission-control-read-layer.d.ts.map +1 -1
- package/daemon/dist/domain/mission-control/mission-control-read-layer.js +14 -11
- package/daemon/dist/domain/mission-control/mission-control-read-layer.js.map +1 -1
- package/daemon/dist/domain/node-inventory.d.ts.map +1 -1
- package/daemon/dist/domain/node-inventory.js +1 -0
- package/daemon/dist/domain/node-inventory.js.map +1 -1
- package/daemon/dist/domain/project-lifecycle-compiler.d.ts.map +1 -1
- package/daemon/dist/domain/project-lifecycle-compiler.js +35 -6
- package/daemon/dist/domain/project-lifecycle-compiler.js.map +1 -1
- package/daemon/dist/domain/queue-repository.d.ts +14 -0
- package/daemon/dist/domain/queue-repository.d.ts.map +1 -1
- package/daemon/dist/domain/queue-repository.js +60 -5
- package/daemon/dist/domain/queue-repository.js.map +1 -1
- package/daemon/dist/domain/queue-transition-log.d.ts +5 -0
- package/daemon/dist/domain/queue-transition-log.d.ts.map +1 -1
- package/daemon/dist/domain/queue-transition-log.js +28 -0
- package/daemon/dist/domain/queue-transition-log.js.map +1 -1
- package/daemon/dist/domain/queue-wait-backoff.d.ts +21 -0
- package/daemon/dist/domain/queue-wait-backoff.d.ts.map +1 -0
- package/daemon/dist/domain/queue-wait-backoff.js +96 -0
- package/daemon/dist/domain/queue-wait-backoff.js.map +1 -0
- package/daemon/dist/domain/queue-wake-repository.d.ts +1 -0
- package/daemon/dist/domain/queue-wake-repository.d.ts.map +1 -1
- package/daemon/dist/domain/queue-wake-repository.js +8 -3
- package/daemon/dist/domain/queue-wake-repository.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/types.js.map +1 -1
- package/daemon/dist/domain/user-settings/settings-store.d.ts +9 -1
- package/daemon/dist/domain/user-settings/settings-store.d.ts.map +1 -1
- package/daemon/dist/domain/user-settings/settings-store.js +72 -12
- package/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
- package/daemon/dist/domain/watchdog-jobs-repository.d.ts +2 -0
- package/daemon/dist/domain/watchdog-jobs-repository.d.ts.map +1 -1
- package/daemon/dist/domain/watchdog-jobs-repository.js +5 -0
- package/daemon/dist/domain/watchdog-jobs-repository.js.map +1 -1
- package/daemon/dist/domain/workflow-projector.d.ts +24 -0
- package/daemon/dist/domain/workflow-projector.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-projector.js +108 -16
- package/daemon/dist/domain/workflow-projector.js.map +1 -1
- package/daemon/dist/domain/workflow-runtime.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-runtime.js +58 -11
- package/daemon/dist/domain/workflow-runtime.js.map +1 -1
- package/daemon/dist/domain/workflow-spec-cache.d.ts +2 -2
- package/daemon/dist/domain/workflow-spec-cache.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-spec-cache.js +16 -0
- package/daemon/dist/domain/workflow-spec-cache.js.map +1 -1
- package/daemon/dist/domain/workflow-types.d.ts +8 -0
- package/daemon/dist/domain/workflow-types.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-types.js.map +1 -1
- package/daemon/dist/domain/workflow-validator.d.ts.map +1 -1
- package/daemon/dist/domain/workflow-validator.js +18 -0
- package/daemon/dist/domain/workflow-validator.js.map +1 -1
- package/daemon/dist/gateway-human-registry-surface.d.ts +1 -0
- package/daemon/dist/gateway-human-registry-surface.d.ts.map +1 -1
- package/daemon/dist/gateway-human-registry-surface.js +1 -0
- package/daemon/dist/gateway-human-registry-surface.js.map +1 -1
- package/daemon/dist/gateway-slack-surface.d.ts +1 -0
- package/daemon/dist/gateway-slack-surface.d.ts.map +1 -1
- package/daemon/dist/gateway-slack-surface.js +1 -0
- package/daemon/dist/gateway-slack-surface.js.map +1 -1
- package/daemon/dist/health-detectors-surface.d.ts +2 -0
- package/daemon/dist/health-detectors-surface.d.ts.map +1 -0
- package/daemon/dist/health-detectors-surface.js +2 -0
- package/daemon/dist/health-detectors-surface.js.map +1 -0
- package/daemon/dist/health-projection-surface.d.ts +2 -0
- package/daemon/dist/health-projection-surface.d.ts.map +1 -0
- package/daemon/dist/health-projection-surface.js +2 -0
- package/daemon/dist/health-projection-surface.js.map +1 -0
- package/daemon/dist/index.d.ts.map +1 -1
- package/daemon/dist/index.js +2 -0
- package/daemon/dist/index.js.map +1 -1
- package/daemon/dist/lib/pane-envelope.d.ts.map +1 -1
- package/daemon/dist/lib/pane-envelope.js +4 -1
- package/daemon/dist/lib/pane-envelope.js.map +1 -1
- package/daemon/dist/routes/gateway.d.ts +5 -1
- package/daemon/dist/routes/gateway.d.ts.map +1 -1
- package/daemon/dist/routes/gateway.js +70 -22
- package/daemon/dist/routes/gateway.js.map +1 -1
- package/daemon/dist/routes/health-diagnosis.d.ts +3 -0
- package/daemon/dist/routes/health-diagnosis.d.ts.map +1 -0
- package/daemon/dist/routes/health-diagnosis.js +47 -0
- package/daemon/dist/routes/health-diagnosis.js.map +1 -0
- package/daemon/dist/routes/health.d.ts +3 -0
- package/daemon/dist/routes/health.d.ts.map +1 -0
- package/daemon/dist/routes/health.js +50 -0
- package/daemon/dist/routes/health.js.map +1 -0
- package/daemon/dist/routes/hosts.d.ts +2 -0
- package/daemon/dist/routes/hosts.d.ts.map +1 -1
- package/daemon/dist/routes/hosts.js +12 -5
- package/daemon/dist/routes/hosts.js.map +1 -1
- package/daemon/dist/server.d.ts +8 -0
- package/daemon/dist/server.d.ts.map +1 -1
- package/daemon/dist/server.js +8 -0
- package/daemon/dist/server.js.map +1 -1
- package/daemon/dist/startup.d.ts.map +1 -1
- package/daemon/dist/startup.js +29 -1
- package/daemon/dist/startup.js.map +1 -1
- package/daemon/docs/reference/health-diagnosis.md +305 -0
- package/daemon/docs/reference/product-journey-sdlc.md +53 -15
- package/daemon/docs/reference/sdlc-conventions.md +6 -4
- package/daemon/specs/agents/development/implementer/agent.yaml +1 -9
- package/daemon/specs/agents/development/implementer/guidance/role.md +21 -43
- package/daemon/specs/agents/development/qa/agent.yaml +2 -11
- package/daemon/specs/agents/development/qa/guidance/role.md +21 -73
- package/daemon/specs/agents/orchestration/orchestrator/agent.yaml +1 -9
- package/daemon/specs/agents/orchestration/orchestrator/guidance/role.md +25 -72
- package/daemon/specs/agents/review/independent-reviewer/agent.yaml +1 -9
- package/daemon/specs/agents/review/independent-reviewer/guidance/role.md +20 -35
- package/daemon/specs/agents/shared/skills/core/agent-startup-and-context-ingestion/SKILL.md +21 -6
- package/daemon/specs/agents/shared/skills/core/messaging-the-human/SKILL.md +48 -61
- package/daemon/specs/agents/shared/skills/pods/development-team/SKILL.md +40 -139
- package/daemon/specs/agents/shared/skills/pods/orchestration-team/SKILL.md +40 -60
- package/daemon/specs/agents/shared/skills/pods/review-team/SKILL.md +34 -31
- package/daemon/specs/agents/shared/skills/process/test-driven-development/SKILL.md +6 -8
- package/daemon/specs/rigs/launch/demo/CULTURE.md +21 -30
- package/daemon/specs/rigs/launch/implementation-pair/rig.yaml +3 -3
- package/daemon/specs/rigs/preview/product-team/CULTURE.md +26 -71
- package/dist/build-info.js +3 -3
- 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/gateway.d.ts +17 -0
- package/dist/commands/gateway.d.ts.map +1 -1
- package/dist/commands/gateway.js +99 -13
- package/dist/commands/gateway.js.map +1 -1
- package/dist/commands/health.d.ts +12 -0
- package/dist/commands/health.d.ts.map +1 -0
- package/dist/commands/health.js +351 -0
- package/dist/commands/health.js.map +1 -0
- package/dist/commands/host.d.ts.map +1 -1
- package/dist/commands/host.js +2 -0
- package/dist/commands/host.js.map +1 -1
- package/dist/commands/queue.d.ts +18 -0
- package/dist/commands/queue.d.ts.map +1 -1
- package/dist/commands/queue.js +62 -0
- package/dist/commands/queue.js.map +1 -1
- package/dist/commands/send.d.ts.map +1 -1
- package/dist/commands/send.js +4 -1
- package/dist/commands/send.js.map +1 -1
- package/dist/commands/slack.d.ts.map +1 -1
- package/dist/commands/slack.js +39 -11
- package/dist/commands/slack.js.map +1 -1
- package/dist/commands/workflow.d.ts.map +1 -1
- package/dist/commands/workflow.js +8 -6
- package/dist/commands/workflow.js.map +1 -1
- package/dist/config-store.d.ts +9 -1
- package/dist/config-store.d.ts.map +1 -1
- package/dist/config-store.js +72 -14
- package/dist/config-store.js.map +1 -1
- package/dist/daemon-lifecycle.d.ts +5 -1
- package/dist/daemon-lifecycle.d.ts.map +1 -1
- package/dist/daemon-lifecycle.js +4 -2
- package/dist/daemon-lifecycle.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -1
- package/dist/index.js.map +1 -1
- package/dist/lib/scope/scope-fs.js +2 -2
- package/dist/lib/scope/scope-fs.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/build-info.js +3 -3
- package/node_modules/@openrig/daemon/dist/domain/gateway/channel-operations.d.ts +39 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/channel-operations.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/channel-operations.js +35 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/channel-operations.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-subsystem.d.ts +3 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-subsystem.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-subsystem.js +3 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/gateway-subsystem.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/human-readiness.d.ts +37 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/human-readiness.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/human-readiness.js +44 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/human-readiness.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.d.ts +2 -7
- 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 +2 -7
- package/node_modules/@openrig/daemon/dist/domain/gateway/human-registry.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound.d.ts +16 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound.js +35 -12
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/inbound.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.d.ts +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.js +1 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/queue-access.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.d.ts +18 -0
- 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 +62 -8
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/slack-subsystem.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/socket-inbound.d.ts +13 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/socket-inbound.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/socket-inbound.js +59 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/socket-inbound.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/state-store.d.ts +21 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/state-store.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/state-store.js +28 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/state-store.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-routing.d.ts +2 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-routing.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-routing.js +6 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-routing.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts +4 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-seat-map.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-seat-map.js +11 -0
- package/node_modules/@openrig/daemon/dist/domain/gateway/slack/thread-seat-map.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/health-checkpoints.d.ts +57 -0
- package/node_modules/@openrig/daemon/dist/domain/health-checkpoints.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/health-checkpoints.js +198 -0
- package/node_modules/@openrig/daemon/dist/domain/health-checkpoints.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/health-context.d.ts +14 -0
- package/node_modules/@openrig/daemon/dist/domain/health-context.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/health-context.js +93 -0
- package/node_modules/@openrig/daemon/dist/domain/health-context.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/health-detectors.d.ts +106 -0
- package/node_modules/@openrig/daemon/dist/domain/health-detectors.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/health-detectors.js +392 -0
- package/node_modules/@openrig/daemon/dist/domain/health-detectors.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/health-diagnosis.d.ts +143 -0
- package/node_modules/@openrig/daemon/dist/domain/health-diagnosis.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/health-diagnosis.js +249 -0
- package/node_modules/@openrig/daemon/dist/domain/health-diagnosis.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/health-passive-ceremony.d.ts +19 -0
- package/node_modules/@openrig/daemon/dist/domain/health-passive-ceremony.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/health-passive-ceremony.js +234 -0
- package/node_modules/@openrig/daemon/dist/domain/health-passive-ceremony.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/health-policy.d.ts +45 -0
- package/node_modules/@openrig/daemon/dist/domain/health-policy.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/health-policy.js +89 -0
- package/node_modules/@openrig/daemon/dist/domain/health-policy.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/health-projection.d.ts +237 -0
- package/node_modules/@openrig/daemon/dist/domain/health-projection.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/health-projection.js +312 -0
- package/node_modules/@openrig/daemon/dist/domain/health-projection.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/mission-control/mission-control-read-layer.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/mission-control/mission-control-read-layer.js +14 -11
- package/node_modules/@openrig/daemon/dist/domain/mission-control/mission-control-read-layer.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/node-inventory.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/node-inventory.js +1 -0
- package/node_modules/@openrig/daemon/dist/domain/node-inventory.js.map +1 -1
- 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 +35 -6
- package/node_modules/@openrig/daemon/dist/domain/project-lifecycle-compiler.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/queue-repository.d.ts +14 -0
- package/node_modules/@openrig/daemon/dist/domain/queue-repository.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/queue-repository.js +60 -5
- package/node_modules/@openrig/daemon/dist/domain/queue-repository.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/queue-transition-log.d.ts +5 -0
- package/node_modules/@openrig/daemon/dist/domain/queue-transition-log.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/queue-transition-log.js +28 -0
- package/node_modules/@openrig/daemon/dist/domain/queue-transition-log.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/queue-wait-backoff.d.ts +21 -0
- package/node_modules/@openrig/daemon/dist/domain/queue-wait-backoff.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/queue-wait-backoff.js +96 -0
- package/node_modules/@openrig/daemon/dist/domain/queue-wait-backoff.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.d.ts +1 -0
- package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.js +8 -3
- package/node_modules/@openrig/daemon/dist/domain/queue-wake-repository.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/types.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.d.ts +9 -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 +72 -12
- package/node_modules/@openrig/daemon/dist/domain/user-settings/settings-store.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/watchdog-jobs-repository.d.ts +2 -0
- package/node_modules/@openrig/daemon/dist/domain/watchdog-jobs-repository.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/watchdog-jobs-repository.js +5 -0
- package/node_modules/@openrig/daemon/dist/domain/watchdog-jobs-repository.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/workflow-projector.d.ts +24 -0
- package/node_modules/@openrig/daemon/dist/domain/workflow-projector.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/workflow-projector.js +108 -16
- package/node_modules/@openrig/daemon/dist/domain/workflow-projector.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/workflow-runtime.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/workflow-runtime.js +58 -11
- package/node_modules/@openrig/daemon/dist/domain/workflow-runtime.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/workflow-spec-cache.d.ts +2 -2
- package/node_modules/@openrig/daemon/dist/domain/workflow-spec-cache.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/workflow-spec-cache.js +16 -0
- package/node_modules/@openrig/daemon/dist/domain/workflow-spec-cache.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/workflow-types.d.ts +8 -0
- package/node_modules/@openrig/daemon/dist/domain/workflow-types.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/domain/workflow-types.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 +18 -0
- package/node_modules/@openrig/daemon/dist/domain/workflow-validator.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/gateway-human-registry-surface.d.ts +1 -0
- package/node_modules/@openrig/daemon/dist/gateway-human-registry-surface.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/gateway-human-registry-surface.js +1 -0
- package/node_modules/@openrig/daemon/dist/gateway-human-registry-surface.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/gateway-slack-surface.d.ts +1 -0
- package/node_modules/@openrig/daemon/dist/gateway-slack-surface.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/gateway-slack-surface.js +1 -0
- package/node_modules/@openrig/daemon/dist/gateway-slack-surface.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/health-detectors-surface.d.ts +2 -0
- package/node_modules/@openrig/daemon/dist/health-detectors-surface.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/health-detectors-surface.js +2 -0
- package/node_modules/@openrig/daemon/dist/health-detectors-surface.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/health-projection-surface.d.ts +2 -0
- package/node_modules/@openrig/daemon/dist/health-projection-surface.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/health-projection-surface.js +2 -0
- package/node_modules/@openrig/daemon/dist/health-projection-surface.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/index.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/index.js +2 -0
- package/node_modules/@openrig/daemon/dist/index.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/lib/pane-envelope.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/lib/pane-envelope.js +4 -1
- package/node_modules/@openrig/daemon/dist/lib/pane-envelope.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/gateway.d.ts +5 -1
- package/node_modules/@openrig/daemon/dist/routes/gateway.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/gateway.js +70 -22
- package/node_modules/@openrig/daemon/dist/routes/gateway.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/health-diagnosis.d.ts +3 -0
- package/node_modules/@openrig/daemon/dist/routes/health-diagnosis.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/routes/health-diagnosis.js +47 -0
- package/node_modules/@openrig/daemon/dist/routes/health-diagnosis.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/routes/health.d.ts +3 -0
- package/node_modules/@openrig/daemon/dist/routes/health.d.ts.map +1 -0
- package/node_modules/@openrig/daemon/dist/routes/health.js +50 -0
- package/node_modules/@openrig/daemon/dist/routes/health.js.map +1 -0
- package/node_modules/@openrig/daemon/dist/routes/hosts.d.ts +2 -0
- package/node_modules/@openrig/daemon/dist/routes/hosts.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/routes/hosts.js +12 -5
- package/node_modules/@openrig/daemon/dist/routes/hosts.js.map +1 -1
- package/node_modules/@openrig/daemon/dist/server.d.ts +8 -0
- package/node_modules/@openrig/daemon/dist/server.d.ts.map +1 -1
- package/node_modules/@openrig/daemon/dist/server.js +8 -0
- 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 +29 -1
- package/node_modules/@openrig/daemon/dist/startup.js.map +1 -1
- package/node_modules/@openrig/daemon/package.json +9 -1
- package/package.json +1 -1
- package/tui/dist/commands/registry.js +1 -1
- package/tui/dist/commands/registry.js.map +1 -1
- package/tui/dist/daemon-client.d.ts +2 -0
- package/tui/dist/daemon-client.d.ts.map +1 -1
- package/tui/dist/daemon-client.js +4 -0
- package/tui/dist/daemon-client.js.map +1 -1
- package/tui/dist/health/health-model.d.ts +25 -0
- package/tui/dist/health/health-model.d.ts.map +1 -0
- package/tui/dist/health/health-model.js +322 -0
- package/tui/dist/health/health-model.js.map +1 -0
- package/tui/dist/hydrate.d.ts.map +1 -1
- package/tui/dist/hydrate.js +13 -2
- package/tui/dist/hydrate.js.map +1 -1
- package/tui/dist/input.d.ts.map +1 -1
- package/tui/dist/input.js +2 -0
- package/tui/dist/input.js.map +1 -1
- package/tui/dist/render.d.ts.map +1 -1
- package/tui/dist/render.js +23 -2
- package/tui/dist/render.js.map +1 -1
- package/tui/dist/state.d.ts.map +1 -1
- package/tui/dist/state.js +14 -8
- package/tui/dist/state.js.map +1 -1
- package/tui/dist/types.d.ts +90 -1
- package/tui/dist/types.d.ts.map +1 -1
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
# Agent-operated System Health diagnosis
|
|
2
|
+
|
|
3
|
+
System Health can give a responsible agent one durable investigation packet when
|
|
4
|
+
a configured detector needs interpretation. The packet preserves the finding,
|
|
5
|
+
policy version, evidence, and current authority documents. It invites the agent
|
|
6
|
+
to investigate beyond that selection, including its own contribution. It does
|
|
7
|
+
not declare a pathology or perform corrective actions.
|
|
8
|
+
|
|
9
|
+
## Enable a bounded diagnosis loop
|
|
10
|
+
|
|
11
|
+
```sh
|
|
12
|
+
rig health policy --json > effective-policy.json
|
|
13
|
+
jq '.policy' effective-policy.json > health-policy.json
|
|
14
|
+
# Edit health-policy.json: diagnosis.enabled=true and diagnosis.owner=<seat@rig>.
|
|
15
|
+
rig health policy --file health-policy.json
|
|
16
|
+
rig health diagnose # preview; no writes or wakes
|
|
17
|
+
rig health diagnose --apply # evaluate now and apply admitted actions
|
|
18
|
+
rig health diagnosis list
|
|
19
|
+
rig health diagnosis show <qitem-id>
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
The daemon checks enabled policy once per minute. `health policy` reports whether
|
|
23
|
+
that check is scheduled and its last result, including errors. Ordinary `health`
|
|
24
|
+
list/explain commands remain observational. Diagnosis defaults to disabled;
|
|
25
|
+
ceremony amplification is the only default diagnosis trigger. A continuing
|
|
26
|
+
episode keeps one qitem, receives at most one additional presentation by default,
|
|
27
|
+
and shares an owner cooldown across episodes (one hour by default). A disposition
|
|
28
|
+
stops re-presentation. Disabling policy stops automatic admission and presentation.
|
|
29
|
+
Ownership changes do not silently reroute existing occurrences.
|
|
30
|
+
Outside a managed seat, name the writer with `rig health --actor <name> ...`.
|
|
31
|
+
Managed-seat transport identity takes precedence over that declared name.
|
|
32
|
+
Only the occurrence's assigned owner may record its disposition or request human
|
|
33
|
+
notification. Other agents can advise the owner; a policy-owner change does not
|
|
34
|
+
grant custody of existing occurrences. Writes retain the sender's identity
|
|
35
|
+
provenance on the queue transition.
|
|
36
|
+
|
|
37
|
+
Policy controls detector enablement, ceremony/review/wake thresholds, source
|
|
38
|
+
observation window and freshness, diagnostic owner, cooldown, re-presentation
|
|
39
|
+
bound, and human-escalation conditions. Edit plain JSON and apply it with the
|
|
40
|
+
command; unknown keys and invalid values refuse without changing the policy.
|
|
41
|
+
Applied proposals and their predecessors are retained under the configured
|
|
42
|
+
OpenRig home in `health/policy-history/`. The effective version also includes
|
|
43
|
+
the existing `health.context_pressure.warning_percent` and `critical_percent`
|
|
44
|
+
settings, which remain configurable with `rig config`. Their defaults are 95
|
|
45
|
+
and 99. CLI/TUI finding explanations show the policy version used.
|
|
46
|
+
|
|
47
|
+
## Passive ceremony diagnosis
|
|
48
|
+
|
|
49
|
+
Ordinary queue activity can admit a diagnosis without a health checkpoint.
|
|
50
|
+
The source discovers declared handoff families touched in the observation window,
|
|
51
|
+
uses their explicit `mission:` / `slice:` tags, and collects exact transition IDs,
|
|
52
|
+
normal project/mission/slice authority, progress and proof references, and workflow
|
|
53
|
+
closure evidence. It never interprets Markdown or counts proof files, approvals,
|
|
54
|
+
C1 pairing, commits, tests, or terminal rows as accepted product outcomes.
|
|
55
|
+
|
|
56
|
+
At the configured traffic threshold (20 transitions by default), a fresh,
|
|
57
|
+
complete family becomes `ceremony.stage=needs-diagnosis`, `status=indeterminate`,
|
|
58
|
+
and `severity=info`. CLI/TUI call this **needs diagnosis**, not a confirmed
|
|
59
|
+
warning. Enabled diagnosis policy admits one bounded packet even though the
|
|
60
|
+
product denominator is unknown. Ordinary unavailable/stale detector records
|
|
61
|
+
remain ineligible. Diagnosis and human-notification traffic are excluded from
|
|
62
|
+
the numerator and cannot recursively generate another investigation.
|
|
63
|
+
|
|
64
|
+
The agent reads the actual evidence, including beyond the supplied references,
|
|
65
|
+
and resolves the semantic outcome granularity and consequence boundary. Use the
|
|
66
|
+
existing disposition command with an optional `progress` result:
|
|
67
|
+
|
|
68
|
+
```json
|
|
69
|
+
{
|
|
70
|
+
"basis": "<current finding.ceremony.basis from diagnosis show>",
|
|
71
|
+
"conclusion": "established",
|
|
72
|
+
"outcomes": [{"id": "<distinct meaningful outcome>", "observedAt": "<time inside the measured interval>", "evidenceRefs": ["<normal proof path>"]}],
|
|
73
|
+
"boundedAuthority": false,
|
|
74
|
+
"boundary": "<selected SDLC boundary and why this outcome census covers the interval>",
|
|
75
|
+
"evidenceRefs": ["<inspected authority/evidence path>"],
|
|
76
|
+
"missingFacts": []
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Put this object in `progress` beside the existing verdict/steering/uncertainty
|
|
81
|
+
fields. `established` affirms a complete census for the exact interval; an empty
|
|
82
|
+
outcome list affirms zero outcomes, not failed discovery. `false-positive`
|
|
83
|
+
clears the suspicion without inventing a denominator when no missing facts remain.
|
|
84
|
+
A false-positive assessment that still names missing facts stays indeterminate
|
|
85
|
+
and does not close the episode interval. `indeterminate` supplies
|
|
86
|
+
no outcomes and names the missing fact in `missingFacts`. Required references
|
|
87
|
+
must resolve inside the workspace; extra evidence beyond the initial packet is
|
|
88
|
+
allowed. The receipt retains the actual actor, timestamp, identity provenance,
|
|
89
|
+
source basis, and evidence hashes. A changed basis refuses a stale submission.
|
|
90
|
+
Later evidence changes make confirmation indeterminate rather than preserving
|
|
91
|
+
a false ratio. Outcome meaning remains attributed agent judgment.
|
|
92
|
+
|
|
93
|
+
Only an established, current assessment permits a ratio. The projector computes
|
|
94
|
+
it from the distinct listed outcomes and exact transitions; a qualifying ratio
|
|
95
|
+
with no bounded-authority counter-signal becomes `confirmed` / `active` /
|
|
96
|
+
`warning`. Proportionate or bounded-authority results clear the episode. An
|
|
97
|
+
explicitly cleared assessment marks the end of that interval; sufficient later
|
|
98
|
+
traffic in the same family starts a new episode. Repeated reads never advance
|
|
99
|
+
these boundaries. One occurrence and the existing owner cooldown apply to each
|
|
100
|
+
episode; a disposition stops repeated requests.
|
|
101
|
+
|
|
102
|
+
This bounded source covers explicitly tagged mission work: at most 2,000 touched
|
|
103
|
+
qitems, 200 roots, 1,000 members / 10,000 transitions per family, 200 workflow
|
|
104
|
+
receipts, 200 declared slices, and 100 proof files per selected slice. Overflow
|
|
105
|
+
refuses visibly. Context files are bounded to 64 KiB. A lineage beginning before
|
|
106
|
+
the retained window remains indeterminate, with the missing interval named.
|
|
107
|
+
Untagged or ambiguously mission-tagged work is outside this source's coverage;
|
|
108
|
+
absence is not health. The packet includes missing context references so an agent
|
|
109
|
+
can name or repair its own knowledge gap without manufacturing source truth.
|
|
110
|
+
|
|
111
|
+
## Optional outcome-boundary checkpoint
|
|
112
|
+
|
|
113
|
+
Live queue transitions do not, on their own, prove product outcomes or the
|
|
114
|
+
authority for a bounded operation. At a meaningful outcome boundary, the agent
|
|
115
|
+
holding those facts may submit a census for one qitem lineage and time window. Set `includeHandoffs: true`
|
|
116
|
+
to follow its declared handoff descendants; this is the normal path for work that
|
|
117
|
+
passed between seats. The root alone usually misses the review/return traffic.
|
|
118
|
+
Prefer the existing proof/progress/outcome artifact as evidence. Do not add a
|
|
119
|
+
checkpoint to each edit or message. This is a fallback for explicitly supplied evidence;
|
|
120
|
+
normal activity uses passive diagnosis above. An existing checkpoint owns its
|
|
121
|
+
lineage so the passive source does not create a duplicate episode.
|
|
122
|
+
|
|
123
|
+
```json
|
|
124
|
+
{
|
|
125
|
+
"schema": "openrig.health-checkpoint/v0alpha1",
|
|
126
|
+
"lineageQitemId": "<existing-product-qitem>",
|
|
127
|
+
"includeHandoffs": true,
|
|
128
|
+
"scope": {"type": "slice", "projectId": "<project>", "missionId": "<mission>", "sliceId": "<slice>"},
|
|
129
|
+
"startedAt": "<ISO timestamp>",
|
|
130
|
+
"observedAt": "<ISO timestamp>",
|
|
131
|
+
"transitionIds": "derive",
|
|
132
|
+
"productOutcomes": [
|
|
133
|
+
{"id": "<outcome-id>", "observedAt": "<ISO timestamp>", "evidenceRef": "<proof-artifact-path>"}
|
|
134
|
+
],
|
|
135
|
+
"productCensusRef": "<artifact establishing the complete outcome census for this lineage/window>",
|
|
136
|
+
"boundedAuthority": {"applies": false, "evidenceRef": "<bounded-effect-authority assessment>"},
|
|
137
|
+
"sdlc": {"expectation": "<selected components and review boundary>", "evidenceRef": "<authority for that selection>"},
|
|
138
|
+
"authorityPaths": {
|
|
139
|
+
"project": ["<current project SPEC and project.yaml paths>"],
|
|
140
|
+
"mission": ["<current mission SPEC and mission.yaml paths>"],
|
|
141
|
+
"slice": ["<current slice SPEC and slice.yaml paths>"]
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
```sh
|
|
147
|
+
rig queue transitions <existing-product-qitem>
|
|
148
|
+
rig health checkpoint --file checkpoint.json
|
|
149
|
+
rig health --instance --json
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
`transitionIds: "derive"` asks the existing submission command to collect the
|
|
153
|
+
complete census once, then retain the exact IDs in the checkpoint and its audit.
|
|
154
|
+
The author supplies outcomes and their meaning, not a row-by-row bookkeeping
|
|
155
|
+
ritual. An explicit ID array is also supported for sealed replay or a
|
|
156
|
+
caller-supplied census. Later reads never silently extend either form.
|
|
157
|
+
|
|
158
|
+
The daemon verifies that transition IDs are the complete census for that exact
|
|
159
|
+
qitem and window, including all handoff descendants when selected. It does not
|
|
160
|
+
infer shared lineage from similar names or seat names. The complete transition
|
|
161
|
+
census may be assembled from the queue ledger; omitting a descendant refuses.
|
|
162
|
+
Explicit mission/slice tags on counted family members must match the checkpoint
|
|
163
|
+
scope; untagged descendants inherit the declared handoff relationship.
|
|
164
|
+
The bound is 1,000 linked qitems and 10,000 transitions; an oversized family
|
|
165
|
+
refuses rather than silently sampling it. Independent roots are separate censuses. It counts
|
|
166
|
+
those transitions and the distinct, evidenced product outcomes, and explains
|
|
167
|
+
both sides of the ratio, the literal gate-tag breakdown, and the selected SDLC
|
|
168
|
+
expectation. These are custody/status transitions, not messages or judgments
|
|
169
|
+
about whether each review was useful. A product outcome is a distinct evidenced
|
|
170
|
+
user-visible result; commits, test runs, returns and fixes needed to achieve
|
|
171
|
+
that same promised result do not each create another denominator unit. The
|
|
172
|
+
census must state its outcome granularity and coverage. The same granularity
|
|
173
|
+
must be used for positive and proportionate controls. An empty outcome list requires the same census evidence
|
|
174
|
+
as a nonempty one. An unavailable product census is a null denominator: the explanation says
|
|
175
|
+
no ratio was computed, rather than silently substituting zero or one.
|
|
176
|
+
`boundedAuthority.applies=null` means unknown, never false.
|
|
177
|
+
Missing SDLC selection (including an older checkpoint without `sdlc`) makes a
|
|
178
|
+
qualifying signal indeterminate. Cite the authority effective for the measured
|
|
179
|
+
window, not a later correction. The ratio flags an inspection; an agent compares
|
|
180
|
+
it with that selection and consequence evidence before diagnosing amplification.
|
|
181
|
+
Product-outcome meaning, selected SDLC and bounded-effect authority remain attributed authored
|
|
182
|
+
evidence; they are not proven merely by ingestion. Findings label that source
|
|
183
|
+
and use medium confidence. Required evidence references must resolve to nonempty,
|
|
184
|
+
readable local files (at most 1 MiB) inside the configured workspace. Absolute
|
|
185
|
+
paths and paths relative to that workspace are supported; other reference kinds
|
|
186
|
+
(including section addresses) remain unavailable. Resolved evidence records carry
|
|
187
|
+
a SHA-256; missing files and symlink escapes remain attributed claims but force
|
|
188
|
+
indeterminate source truth and cannot admit a diagnosis. Availability is checked
|
|
189
|
+
again on every projection; presence does not certify the artifact's meaning.
|
|
190
|
+
This authority assessment is distinct from the
|
|
191
|
+
project/mission/slice documents supplied to the diagnosing agent. Embedded
|
|
192
|
+
context is limited to canonical `SPEC.md` and project/mission/slice YAML files
|
|
193
|
+
at their corresponding work-tree nodes, at most 64 KiB each. Other paths and
|
|
194
|
+
symlink aliases are reported unavailable without embedding their contents.
|
|
195
|
+
Each entry retains its authority level. Project files must be at the configured
|
|
196
|
+
project root; mission files must belong to the finding's mission; slice files
|
|
197
|
+
must also have a sibling `SPEC.md` declaring the finding's slice ID (and matching
|
|
198
|
+
mission when declared). A sibling slice or another mission is unavailable even
|
|
199
|
+
when its filename is canonical. Without mission/slice scope, those authority
|
|
200
|
+
levels remain unavailable.
|
|
201
|
+
|
|
202
|
+
Checkpoints are audited under `health/checkpoints/history/`; replaying identical
|
|
203
|
+
bytes writes nothing. Later censuses advance observation time. High-to-high
|
|
204
|
+
observations retain episode identity; a clearing checkpoint and later recurrence
|
|
205
|
+
produce a cleared episode and a new ID. Reads never update checkpoint state.
|
|
206
|
+
Stale, unavailable, contradictory, clipped, or missing evidence cannot admit a
|
|
207
|
+
diagnosis. No findings is not a healthy assertion. The current source bounds are
|
|
208
|
+
200 lineages, 10,000 transitions and 1,000 product outcomes per checkpoint, and
|
|
209
|
+
1 MiB per input. Unsupported or invalid sources fail visibly.
|
|
210
|
+
|
|
211
|
+
## Investigate and record a disposition
|
|
212
|
+
|
|
213
|
+
Read the exact evidence and the current authority. Trace where the pattern
|
|
214
|
+
began, test whether your own actions amplified it, and distinguish another seat
|
|
215
|
+
or stale guidance. A second opinion is optional. The packet is a starting point,
|
|
216
|
+
not a closed evidence set.
|
|
217
|
+
|
|
218
|
+
```json
|
|
219
|
+
{
|
|
220
|
+
"verdict": "insufficient evidence",
|
|
221
|
+
"causalStart": null,
|
|
222
|
+
"steering": "Inspect the product-outcome census before changing work.",
|
|
223
|
+
"uncertainty": "The cited artifact does not yet establish the denominator.",
|
|
224
|
+
"evidenceRefs": ["<inspected-evidence-path>"]
|
|
225
|
+
}
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
```sh
|
|
229
|
+
rig health diagnosis record <qitem-id> --file disposition.json
|
|
230
|
+
rig health diagnosis show <qitem-id>
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
Verdicts are `false positive`, `early real condition`, `established pathology`,
|
|
234
|
+
`insufficient evidence`, or `resolved`. The disposition is retained on the
|
|
235
|
+
diagnostic qitem's transitions and visible in CLI output and the queue. Recording
|
|
236
|
+
it does not close or alter the underlying product work. Changed dispositions
|
|
237
|
+
retain earlier testimony; exact replay is a no-op. A detector clearing is
|
|
238
|
+
recorded separately from an agent declaring the problem resolved.
|
|
239
|
+
|
|
240
|
+
## Human delivery
|
|
241
|
+
|
|
242
|
+
An assigned agent may explicitly request human escalation:
|
|
243
|
+
|
|
244
|
+
```sh
|
|
245
|
+
rig health diagnosis notify <qitem-id>
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
It requires a registered `human.address` and an admitted `human.conditions`
|
|
249
|
+
entry (`critical`, `established pathology`, or `confirmed ceremony`). The connector must be enabled
|
|
250
|
+
and pass live readiness checks. The current connector implementation verifies
|
|
251
|
+
Slack scopes and channel membership; the diagnosis service itself uses a
|
|
252
|
+
transport-neutral readiness port. The existing gateway owns delivery policy
|
|
253
|
+
and posting. One human request is retained per episode, and its actual delivery
|
|
254
|
+
outcome comes from queue receipts. `pending` is never presented as `posted`.
|
|
255
|
+
Inspect the returned qitem's transitions for the connector receipt. No periodic
|
|
256
|
+
health check performs remediation. With `human.conditions=["confirmed ceremony"]`,
|
|
257
|
+
the enabled diagnosis loop automatically requests one notification for an active,
|
|
258
|
+
confirmed passive ceremony episode. Provisional, indeterminate, cleared, and stale
|
|
259
|
+
episodes never notify. The existing readiness/gateway path owns the effect; an
|
|
260
|
+
unready connector leaves a visible, deduplicated readiness receipt. Later checks
|
|
261
|
+
may retry readiness but never create a second request for an existing episode.
|
|
262
|
+
Read-only list/explain/preview commands never send.
|
|
263
|
+
|
|
264
|
+
## Read-only consumers and calibration
|
|
265
|
+
|
|
266
|
+
A consumer such as a later Herder plugin reads `GET /api/health` and
|
|
267
|
+
`GET /api/health/:findingId`, or the identical `rig health --json` and
|
|
268
|
+
`rig health explain <finding-id> --json` records. The record schema is
|
|
269
|
+
`openrig.health/v0alpha1`; list metadata is `openrig.health-list/v0alpha1`.
|
|
270
|
+
Preserve ID, status, policy version, time window, freshness, evidence and
|
|
271
|
+
threshold together. There is no health score or implicit remediation authority.
|
|
272
|
+
The default list excludes cleared records; explicit cleared queries and exact
|
|
273
|
+
ID reads retain them while the source can still project them. A recurrence after
|
|
274
|
+
clear receives a new episode ID. This is an on-demand projection, not a history
|
|
275
|
+
store; a detail 404 does not prove resolution.
|
|
276
|
+
|
|
277
|
+
Lists default to 100 and cap at 200, with `total` and `truncated` explicit.
|
|
278
|
+
Ceremony findings take precedence before the cap so context pressure cannot
|
|
279
|
+
hide the primary signal. Narrow a truncated query; do not certify the unseen
|
|
280
|
+
remainder. Empty is not healthy, unavailable is not empty, and an indeterminate
|
|
281
|
+
finding cannot authorize a diagnostic occurrence except the explicit, fresh
|
|
282
|
+
`needs-diagnosis` passive candidate described above. An existing occurrence may
|
|
283
|
+
receive one status-observation receipt when its source becomes indeterminate;
|
|
284
|
+
that does not create another obligation or wake.
|
|
285
|
+
|
|
286
|
+
Live sources supply context pressure, passive ceremony candidates and attributed
|
|
287
|
+
assessments, plus optional ceremony checkpoints.
|
|
288
|
+
Behavioral and epistemic categories intentionally have no detector. Review
|
|
289
|
+
carousel, redundant wakes, stale directives and scope admission have typed
|
|
290
|
+
evaluators and replay controls, but the live source does not infer their missing
|
|
291
|
+
candidate-change, rescue, directive-conflict or admission-authority facts.
|
|
292
|
+
Untagged work and undeclared relationships remain outside passive ceremony
|
|
293
|
+
coverage; normal tagged work no longer requires a special outcome census. A small lineage below the configured threshold may still deserve an
|
|
294
|
+
agent's inspection; the threshold is a conservative admission rule, not a
|
|
295
|
+
definition of good process.
|
|
296
|
+
|
|
297
|
+
`packages/daemon/scripts/probe-health-calibration.mjs` accepts a sealed replay
|
|
298
|
+
export and output directory after daemon/CLI/TUI builds. It drives the compiled
|
|
299
|
+
checkpoint/list/explain/diagnosis commands, renders the TUI, retains exact
|
|
300
|
+
records and screens, compares database and filesystem effects around reads,
|
|
301
|
+
and measures query cost against declared budgets. Every write uses a disposable
|
|
302
|
+
home and database. Historical expected states must be grounded independently
|
|
303
|
+
of the detector formula; incomplete outcome evidence is an indeterminate case,
|
|
304
|
+
not a denominator of one. A calibration report describes its selected corpus
|
|
305
|
+
and remaining blind spots, not a fleet-wide false-positive rate.
|
|
@@ -52,9 +52,10 @@ mission YAML to change.
|
|
|
52
52
|
implementation momentum.
|
|
53
53
|
- **Skip when:** the current agent can independently state the user outcome,
|
|
54
54
|
starting candidate, and boundaries from primary sources.
|
|
55
|
-
- **Input:**
|
|
56
|
-
- **Action:**
|
|
57
|
-
|
|
55
|
+
- **Input:** identity, project/mission/slice YAML, and the selected addresses.
|
|
56
|
+
- **Action:** load the selected context into a fresh session, or reorient the
|
|
57
|
+
current session from live sources. Clearing a seat requires its separate
|
|
58
|
+
continuity decision; selecting this component does not authorize it.
|
|
58
59
|
- **Output:** a one-paragraph readiness statement naming role, user outcome,
|
|
59
60
|
starting candidate, and boundaries.
|
|
60
61
|
- **Stop:** do not reconstruct old queue lore merely because it exists.
|
|
@@ -213,7 +214,8 @@ possible explanation.
|
|
|
213
214
|
|
|
214
215
|
## Composition rules
|
|
215
216
|
|
|
216
|
-
1. `
|
|
217
|
+
1. `project.yaml` may declare project defaults; `mission.yaml` may select the
|
|
218
|
+
catalog and override those defaults for the mission.
|
|
217
219
|
2. `slice.yaml` selects or overrides the components for that slice.
|
|
218
220
|
3. Edges are explicit data. Array order is presentation, not dependency.
|
|
219
221
|
4. Select the fewest components that honestly fit the work.
|
|
@@ -290,16 +292,52 @@ build.minimal-gap → qa.public-journey → qa.installed-smoke?`
|
|
|
290
292
|
The recurrence admits one causal descent. It does not authorize a general
|
|
291
293
|
platform rewrite.
|
|
292
294
|
|
|
295
|
+
## Resolve the selected path
|
|
296
|
+
|
|
297
|
+
On a fresh start, restore, or new assignment:
|
|
298
|
+
|
|
299
|
+
1. Derive identity with `rig whoami --json`. Resolve the project's work root from
|
|
300
|
+
the assignment/workspace binding; `rig config get workspace.root` locates the
|
|
301
|
+
configured work tree, which may differ from the seat's code checkout.
|
|
302
|
+
2. Read `project.yaml` and its project-authority context. Follow its mission root
|
|
303
|
+
to the assigned `mission.yaml`, then its composition ref to the active
|
|
304
|
+
`slice.yaml`. Read the current intent and acceptance files those records name.
|
|
305
|
+
Do not choose a mission from an old onboarding packet or a folder's recency.
|
|
306
|
+
3. Resolve SDLC selection in order: project defaults, mission defaults, then the
|
|
307
|
+
active slice's explicit selection/override. A narrower explicit selection
|
|
308
|
+
replaces the broader component list; it does not append every ancestor's
|
|
309
|
+
gates. Follow an addressed wave map for its membership, review model and
|
|
310
|
+
boundary; an explicit named-slice exception applies only to that slice.
|
|
311
|
+
4. Read only the selected components and additional addressed context. Repository
|
|
312
|
+
references resolve from the code repository root; installed references from
|
|
313
|
+
`$OPENRIG_HOME/reference`; context-pack refs use `rig context get`. For a
|
|
314
|
+
Markdown `#section` address, use `loading-addressable-markdown` rather than
|
|
315
|
+
loading an entire unrelated manual. Expand the investigation when the task's
|
|
316
|
+
evidence requires it: the address map is a starting point, not a search limit.
|
|
317
|
+
5. State briefly the user outcome, current role, candidate, selected path and
|
|
318
|
+
next completion boundary. No composition means the light Part A flow in
|
|
319
|
+
`sdlc-conventions.md#a1-the-flow-in-one-pass`. Do not author a
|
|
320
|
+
composition merely to have one, or mint QA, guard, review, lock or proof gates
|
|
321
|
+
because those roles exist. On a tiny change the builder can verify the whole
|
|
322
|
+
outcome; independent review happens only when selected.
|
|
323
|
+
|
|
324
|
+
A missing referenced file is a named gap, not evidence of no selection. Inspect
|
|
325
|
+
or ask the owner to resolve a consequential ambiguity; do not silently fall back
|
|
326
|
+
from an explicitly selected rigorous path. An owner can explicitly amend the
|
|
327
|
+
selection for named work; record that decision at the work's authority. Current
|
|
328
|
+
command/source reality outranks stale YAML as a factual claim: record the
|
|
329
|
+
mismatch, re-derive, and preserve the distinction between scope and observed state.
|
|
330
|
+
|
|
331
|
+
Startup overlays, role guidance, available seats, old mode names and historical
|
|
332
|
+
packets cannot add steps to this selection. They supply capabilities. Skills load
|
|
333
|
+
when the selected work calls for them; there is no quiz, per-file ACK gate or
|
|
334
|
+
universal preloading requirement.
|
|
335
|
+
|
|
293
336
|
## Blank-agent start
|
|
294
337
|
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
boundaries**.
|
|
302
|
-
4. Follow the selected component edges and their stop conditions.
|
|
303
|
-
5. If no composition exists, use Part A in `mission-slice-sop`.
|
|
304
|
-
6. If current reality contradicts the YAML, stop treating the YAML as fact,
|
|
305
|
-
record the discrepancy, and re-derive from the public journey and source.
|
|
338
|
+
Follow **Resolve the selected path** above before choosing work. For an authored
|
|
339
|
+
wave, build and verify each slice with its local discipline and integrate serially
|
|
340
|
+
where required; request independent review once when the authored wave boundary
|
|
341
|
+
arrives. Do not start per-slice reviews while waiting. A separately selected
|
|
342
|
+
rigorous slice retains its named checks. Review findings justify bounded repairs,
|
|
343
|
+
not an automatic increase in process for the next round.
|
|
@@ -68,10 +68,12 @@ intent (what is this for, what does done look like)
|
|
|
68
68
|
→ hand off (rig queue handoff) or stop
|
|
69
69
|
```
|
|
70
70
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
71
|
+
Verify the whole outcome at completion, not through a review chain per increment.
|
|
72
|
+
For a tiny change the builder may hold this check. Independent QA/review runs only
|
|
73
|
+
when selected by the project/mission/slice composition or an explicit owner
|
|
74
|
+
assignment; for a wave, at its authored boundary. Available roles never add gates.
|
|
75
|
+
The authority lookup is `product-journey-sdlc.md#resolve-the-selected-path`.
|
|
76
|
+
Bring work with evidence that its promised user outcome actually works.
|
|
75
77
|
|
|
76
78
|
For a release mission, `mission.yaml` also names the Git strategy before build
|
|
77
79
|
work starts: the branch/ref that is cumulative integration truth, its base, and
|
|
@@ -27,12 +27,4 @@ startup:
|
|
|
27
27
|
- path: guidance/role.md
|
|
28
28
|
delivery_hint: send_text
|
|
29
29
|
required: true
|
|
30
|
-
actions:
|
|
31
|
-
- type: send_text
|
|
32
|
-
value: >-
|
|
33
|
-
A task is coming. BEFORE you do anything else, load and invoke your process skills NOW
|
|
34
|
-
using your runtime's supported skill mechanism: test-driven-development,
|
|
35
|
-
systematic-debugging, verification-before-completion. Load them first, then begin the work.
|
|
36
|
-
phase: after_ready
|
|
37
|
-
applies_on: [fresh_start, restore]
|
|
38
|
-
idempotent: true
|
|
30
|
+
actions: []
|
|
@@ -1,45 +1,23 @@
|
|
|
1
1
|
# Role: Implementer
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
##
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
## Working rhythm
|
|
26
|
-
|
|
27
|
-
1. Pre-edit proposal (what you plan to do, which files, what tests)
|
|
28
|
-
2. Wait for QA approval
|
|
29
|
-
3. Implement with TDD (RED -> GREEN -> REFACTOR)
|
|
30
|
-
4. Post-edit review bundle (what changed, verification output)
|
|
31
|
-
5. Wait for QA approval
|
|
32
|
-
6. Commit
|
|
33
|
-
|
|
34
|
-
## Principles
|
|
35
|
-
|
|
36
|
-
- Quality over speed. There is no rush.
|
|
37
|
-
- If a test is hard to write, the design needs work.
|
|
38
|
-
- Minimal changes only. Don't refactor code you weren't asked to touch.
|
|
39
|
-
- If the spec seems wrong, raise it. Don't silently diverge.
|
|
40
|
-
|
|
41
|
-
## Common failure modes
|
|
42
|
-
|
|
43
|
-
- **Racing through tasks:** Do NOT implement multiple tasks without QA gating each one. Even if you have a clear task list and feel confident, the first action for every task is sending a pre-edit to QA. Not after you've started. Before.
|
|
44
|
-
- **Arguing with QA rejections:** If QA rejects, read the exact feedback, fix the issue, and resubmit with changes called out. Do not argue around it or re-explain why your original approach was fine.
|
|
45
|
-
- **Waiting for orchestrator permission:** You do not need the orchestrator's permission to proceed through a task list. The gated workflow is between you and QA. Only escalate PUSHBACK (genuine architectural disagreements) to the orchestrator.
|
|
3
|
+
Build the assigned complete user outcome and prove it by effect.
|
|
4
|
+
|
|
5
|
+
## Start from the assignment
|
|
6
|
+
|
|
7
|
+
Run `rig whoami --json`, then resolve `project.yaml -> mission.yaml -> active
|
|
8
|
+
slice.yaml -> selected component or wave map -> addressed context`. The complete
|
|
9
|
+
lookup and precedence rule is `docs/reference/product-journey-sdlc.md#resolve-the-selected-path`
|
|
10
|
+
(installed: `$OPENRIG_HOME/reference/product-journey-sdlc.md#resolve-the-selected-path`).
|
|
11
|
+
Read the selected addresses and source needed for this task; skills available in
|
|
12
|
+
your profile are capabilities, not a mandatory reading list. No composition means
|
|
13
|
+
light Part A. Role names and idle seats add no gates. Explicit rigor and authored
|
|
14
|
+
wave boundaries retain their named checks.
|
|
15
|
+
|
|
16
|
+
## Working contract
|
|
17
|
+
|
|
18
|
+
Read the relevant seam before editing. Reproduce defects, make the smallest
|
|
19
|
+
coherent correction, and run checks appropriate to the changed behavior. Return
|
|
20
|
+
exact candidate/evidence and uncertainty. Pre-edit approval and independent QA
|
|
21
|
+
are required only when selected; do not ask an idle QA seat to authorize each
|
|
22
|
+
increment. When a selected check finds a defect, repair it and recheck the affected
|
|
23
|
+
outcome without adding a generic second review ladder.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
name: qa
|
|
2
2
|
version: "1.0"
|
|
3
|
-
description: QA agent —
|
|
3
|
+
description: QA agent — verifies assigned user outcomes by effect
|
|
4
4
|
|
|
5
5
|
defaults:
|
|
6
6
|
runtime: codex
|
|
@@ -27,13 +27,4 @@ startup:
|
|
|
27
27
|
- path: guidance/role.md
|
|
28
28
|
delivery_hint: send_text
|
|
29
29
|
required: true
|
|
30
|
-
actions:
|
|
31
|
-
- type: send_text
|
|
32
|
-
value: >-
|
|
33
|
-
A task is coming. BEFORE you do anything else, load and invoke your process skills NOW
|
|
34
|
-
using your runtime's supported skill mechanism: test-driven-development,
|
|
35
|
-
systematic-debugging, verification-before-completion, agent-browser, dogfood. Load them
|
|
36
|
-
first, then begin the work.
|
|
37
|
-
phase: after_ready
|
|
38
|
-
applies_on: [fresh_start, restore]
|
|
39
|
-
idempotent: true
|
|
30
|
+
actions: []
|
|
@@ -1,75 +1,23 @@
|
|
|
1
1
|
# Role: QA
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
##
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
- Check that tests prove the contract, not just the implementation
|
|
25
|
-
- Approve or reject with specific, line-referenced feedback
|
|
26
|
-
|
|
27
|
-
## What to check
|
|
28
|
-
|
|
29
|
-
- Does the diff match the approved scope?
|
|
30
|
-
- Are the tests testing the right thing?
|
|
31
|
-
- Are there boundary bugs hiding in the happy path?
|
|
32
|
-
- Does the public contract match what was agreed?
|
|
33
|
-
- Are failure branches honestly handled?
|
|
34
|
-
|
|
35
|
-
## Dogfood mode
|
|
36
|
-
|
|
37
|
-
When you are dogfooding (testing existing features, not gating new code):
|
|
38
|
-
- You have full autonomy. Find issues and fix them yourself.
|
|
39
|
-
- Test the fix, then move to the next issue.
|
|
40
|
-
- Only escalate architecture-level concerns to the orchestrator.
|
|
41
|
-
- Report findings to the chatroom so the rig has visibility.
|
|
42
|
-
- Do not wait for approval to fix obvious bugs.
|
|
43
|
-
|
|
44
|
-
### Browser and UI testing
|
|
45
|
-
|
|
46
|
-
For UI dogfooding, load the `/agent-browser` and `/dogfood` skills. These give you:
|
|
47
|
-
- `agent-browser open <url>` — navigate to the daemon UI
|
|
48
|
-
- `agent-browser snapshot -i` — get interactive element refs
|
|
49
|
-
- `agent-browser screenshot --annotate` — capture annotated screenshots as proof
|
|
50
|
-
- `agent-browser record start/stop` — record repro videos for issues
|
|
51
|
-
- The `/dogfood` skill provides a structured exploration workflow with a report template
|
|
52
|
-
|
|
53
|
-
### Dogfood report format
|
|
54
|
-
|
|
55
|
-
When reporting findings, use:
|
|
56
|
-
- `PASS :: <command or flow> :: <short note>`
|
|
57
|
-
- `FAIL :: <command or flow> :: <exact error or confusing behavior>`
|
|
58
|
-
- `GAP :: <behavior> :: <why it seems wrong or unclear>`
|
|
59
|
-
|
|
60
|
-
Report to the chatroom so the whole rig has visibility.
|
|
61
|
-
|
|
62
|
-
## Permission awareness
|
|
63
|
-
|
|
64
|
-
If the implementer's pane shows a permission prompt or approval dialog and they appear stuck:
|
|
65
|
-
- Call it out immediately via `rig send`
|
|
66
|
-
- Do not treat a blocked pane as "in progress" or "thinking"
|
|
67
|
-
- Permission prompts are the #1 mechanical blocker in the rig
|
|
68
|
-
|
|
69
|
-
## Principles
|
|
70
|
-
|
|
71
|
-
- You are not a rubber stamp. Push back when something is wrong.
|
|
72
|
-
- Be specific. "This looks wrong" is not useful. "Line 42 silently drops the error" is.
|
|
73
|
-
- Quality over speed. A rejected edit that gets fixed is better than a merged bug.
|
|
74
|
-
- If you're unsure, ask. Don't approve uncertainty.
|
|
75
|
-
- You are a product voice, not just a test gate. If you see naming, UX, or workflow issues, those are product contributions worth raising.
|
|
3
|
+
Verify the assigned user outcome against its actual contract.
|
|
4
|
+
|
|
5
|
+
## Start from the assignment
|
|
6
|
+
|
|
7
|
+
Run `rig whoami --json`, then resolve `project.yaml -> mission.yaml -> active
|
|
8
|
+
slice.yaml -> selected component or wave map -> addressed context`. The complete
|
|
9
|
+
lookup and precedence rule is `docs/reference/product-journey-sdlc.md#resolve-the-selected-path`
|
|
10
|
+
(installed: `$OPENRIG_HOME/reference/product-journey-sdlc.md#resolve-the-selected-path`).
|
|
11
|
+
Read the selected addresses and source needed for this task; skills available in
|
|
12
|
+
your profile are capabilities, not a mandatory reading list. No composition means
|
|
13
|
+
light Part A. Role names and idle seats add no gates. Explicit rigor and authored
|
|
14
|
+
wave boundaries retain their named checks.
|
|
15
|
+
|
|
16
|
+
## Working contract
|
|
17
|
+
|
|
18
|
+
Read the relevant diff and exercise the public journey. Compare promised and
|
|
19
|
+
observed effects, including material failure cases; record what was not checked.
|
|
20
|
+
A tiny change can have builder-held verification. When independent QA is selected,
|
|
21
|
+
the evaluator must not be the author. Load browser/dogfood skills only for a
|
|
22
|
+
relevant UI journey. Respect a read-only assignment; fix-and-retest requires that
|
|
23
|
+
scope, and changes make you an author of the repaired candidate.
|
|
@@ -27,12 +27,4 @@ startup:
|
|
|
27
27
|
- path: guidance/role.md
|
|
28
28
|
delivery_hint: send_text
|
|
29
29
|
required: true
|
|
30
|
-
actions:
|
|
31
|
-
- type: send_text
|
|
32
|
-
value: >-
|
|
33
|
-
A task is coming. BEFORE you do anything else, load and invoke your process skills NOW
|
|
34
|
-
using your runtime's supported skill mechanism: systematic-debugging,
|
|
35
|
-
verification-before-completion. Load them first, then begin the work.
|
|
36
|
-
phase: after_ready
|
|
37
|
-
applies_on: [fresh_start, restore]
|
|
38
|
-
idempotent: true
|
|
30
|
+
actions: []
|