agent-bober 0.12.0 → 0.17.0
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/.claude-plugin/marketplace.json +20 -0
- package/.claude-plugin/plugin.json +2 -2
- package/CHANGELOG.md +243 -0
- package/README.md +238 -5
- package/agents/bober-architect.md +72 -0
- package/agents/bober-code-reviewer.md +238 -0
- package/agents/bober-curator.md +49 -0
- package/agents/bober-deployer.md +267 -0
- package/agents/bober-diagnoser.md +289 -0
- package/agents/bober-documenter.md +129 -0
- package/agents/bober-evaluator.md +135 -1
- package/agents/bober-generator.md +80 -3
- package/agents/bober-planner.md +47 -1
- package/agents/bober-postmortemer.md +185 -0
- package/agents/bober-researcher.md +38 -0
- package/dist/cli/commands/approve.d.ts +17 -0
- package/dist/cli/commands/approve.d.ts.map +1 -0
- package/dist/cli/commands/approve.js +64 -0
- package/dist/cli/commands/approve.js.map +1 -0
- package/dist/cli/commands/audit-show.d.ts +14 -0
- package/dist/cli/commands/audit-show.d.ts.map +1 -0
- package/dist/cli/commands/audit-show.js +85 -0
- package/dist/cli/commands/audit-show.js.map +1 -0
- package/dist/cli/commands/config.d.ts +10 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +73 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/graph.d.ts +8 -0
- package/dist/cli/commands/graph.d.ts.map +1 -0
- package/dist/cli/commands/graph.js +219 -0
- package/dist/cli/commands/graph.js.map +1 -0
- package/dist/cli/commands/impact.d.ts +19 -0
- package/dist/cli/commands/impact.d.ts.map +1 -0
- package/dist/cli/commands/impact.js +191 -0
- package/dist/cli/commands/impact.js.map +1 -0
- package/dist/cli/commands/incident.d.ts +19 -0
- package/dist/cli/commands/incident.d.ts.map +1 -0
- package/dist/cli/commands/incident.js +324 -0
- package/dist/cli/commands/incident.js.map +1 -0
- package/dist/cli/commands/init.js +40 -1
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/list-approvals.d.ts +16 -0
- package/dist/cli/commands/list-approvals.d.ts.map +1 -0
- package/dist/cli/commands/list-approvals.js +57 -0
- package/dist/cli/commands/list-approvals.js.map +1 -0
- package/dist/cli/commands/memory.d.ts +14 -0
- package/dist/cli/commands/memory.d.ts.map +1 -0
- package/dist/cli/commands/memory.js +132 -0
- package/dist/cli/commands/memory.js.map +1 -0
- package/dist/cli/commands/onboard.d.ts +3 -0
- package/dist/cli/commands/onboard.d.ts.map +1 -0
- package/dist/cli/commands/onboard.js +190 -0
- package/dist/cli/commands/onboard.js.map +1 -0
- package/dist/cli/commands/playbook.d.ts +17 -0
- package/dist/cli/commands/playbook.d.ts.map +1 -0
- package/dist/cli/commands/playbook.js +123 -0
- package/dist/cli/commands/playbook.js.map +1 -0
- package/dist/cli/commands/postmortem.d.ts +12 -0
- package/dist/cli/commands/postmortem.d.ts.map +1 -0
- package/dist/cli/commands/postmortem.js +67 -0
- package/dist/cli/commands/postmortem.js.map +1 -0
- package/dist/cli/commands/reject.d.ts +17 -0
- package/dist/cli/commands/reject.d.ts.map +1 -0
- package/dist/cli/commands/reject.js +52 -0
- package/dist/cli/commands/reject.js.map +1 -0
- package/dist/cli/commands/rollback.d.ts +21 -0
- package/dist/cli/commands/rollback.d.ts.map +1 -0
- package/dist/cli/commands/rollback.js +90 -0
- package/dist/cli/commands/rollback.js.map +1 -0
- package/dist/cli/commands/run.d.ts +9 -0
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +29 -0
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/telemetry.d.ts +16 -0
- package/dist/cli/commands/telemetry.d.ts.map +1 -0
- package/dist/cli/commands/telemetry.js +152 -0
- package/dist/cli/commands/telemetry.js.map +1 -0
- package/dist/cli/commands/worktree.d.ts +12 -0
- package/dist/cli/commands/worktree.d.ts.map +1 -0
- package/dist/cli/commands/worktree.js +57 -0
- package/dist/cli/commands/worktree.js.map +1 -0
- package/dist/cli/index.js +56 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/config/defaults.d.ts.map +1 -1
- package/dist/config/defaults.js +41 -3
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/index.d.ts +1 -1
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +4 -0
- package/dist/config/index.js.map +1 -1
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +25 -1
- package/dist/config/loader.js.map +1 -1
- package/dist/config/role-providers.d.ts +29 -0
- package/dist/config/role-providers.d.ts.map +1 -0
- package/dist/config/role-providers.js +115 -0
- package/dist/config/role-providers.js.map +1 -0
- package/dist/config/schema.d.ts +1350 -61
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +189 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/contracts/eval-result.d.ts +112 -56
- package/dist/contracts/eval-result.d.ts.map +1 -1
- package/dist/contracts/eval-result.js +3 -0
- package/dist/contracts/eval-result.js.map +1 -1
- package/dist/contracts/sprint-contract.d.ts +30 -30
- package/dist/fleet/aggregator.d.ts +5 -0
- package/dist/fleet/aggregator.d.ts.map +1 -0
- package/dist/fleet/aggregator.js +39 -0
- package/dist/fleet/aggregator.js.map +1 -0
- package/dist/fleet/child-config.d.ts +12 -0
- package/dist/fleet/child-config.d.ts.map +1 -0
- package/dist/fleet/child-config.js +38 -0
- package/dist/fleet/child-config.js.map +1 -0
- package/dist/fleet/coordinator.d.ts +25 -0
- package/dist/fleet/coordinator.d.ts.map +1 -0
- package/dist/fleet/coordinator.js +40 -0
- package/dist/fleet/coordinator.js.map +1 -0
- package/dist/fleet/index.d.ts +40 -0
- package/dist/fleet/index.d.ts.map +1 -0
- package/dist/fleet/index.js +117 -0
- package/dist/fleet/index.js.map +1 -0
- package/dist/fleet/manifest.d.ts +51 -0
- package/dist/fleet/manifest.d.ts.map +1 -0
- package/dist/fleet/manifest.js +32 -0
- package/dist/fleet/manifest.js.map +1 -0
- package/dist/fleet/reporter.d.ts +32 -0
- package/dist/fleet/reporter.d.ts.map +1 -0
- package/dist/fleet/reporter.js +71 -0
- package/dist/fleet/reporter.js.map +1 -0
- package/dist/fleet/runner.d.ts +48 -0
- package/dist/fleet/runner.d.ts.map +1 -0
- package/dist/fleet/runner.js +104 -0
- package/dist/fleet/runner.js.map +1 -0
- package/dist/fleet/scaffolder.d.ts +12 -0
- package/dist/fleet/scaffolder.d.ts.map +1 -0
- package/dist/fleet/scaffolder.js +82 -0
- package/dist/fleet/scaffolder.js.map +1 -0
- package/dist/fleet/types.d.ts +21 -0
- package/dist/fleet/types.d.ts.map +1 -0
- package/dist/fleet/types.js +2 -0
- package/dist/fleet/types.js.map +1 -0
- package/dist/graph/artifact-store.d.ts +14 -0
- package/dist/graph/artifact-store.d.ts.map +1 -0
- package/dist/graph/artifact-store.js +100 -0
- package/dist/graph/artifact-store.js.map +1 -0
- package/dist/graph/cli.d.ts +53 -0
- package/dist/graph/cli.d.ts.map +1 -0
- package/dist/graph/cli.js +181 -0
- package/dist/graph/cli.js.map +1 -0
- package/dist/graph/client.d.ts +64 -0
- package/dist/graph/client.d.ts.map +1 -0
- package/dist/graph/client.js +216 -0
- package/dist/graph/client.js.map +1 -0
- package/dist/graph/fallback.d.ts +13 -0
- package/dist/graph/fallback.d.ts.map +1 -0
- package/dist/graph/fallback.js +57 -0
- package/dist/graph/fallback.js.map +1 -0
- package/dist/graph/hook-handler.d.ts +50 -0
- package/dist/graph/hook-handler.d.ts.map +1 -0
- package/dist/graph/hook-handler.js +217 -0
- package/dist/graph/hook-handler.js.map +1 -0
- package/dist/graph/incidents.d.ts +59 -0
- package/dist/graph/incidents.d.ts.map +1 -0
- package/dist/graph/incidents.js +22 -0
- package/dist/graph/incidents.js.map +1 -0
- package/dist/graph/mcp-client.d.ts +51 -0
- package/dist/graph/mcp-client.d.ts.map +1 -0
- package/dist/graph/mcp-client.js +285 -0
- package/dist/graph/mcp-client.js.map +1 -0
- package/dist/graph/onboarding-composer.d.ts +30 -0
- package/dist/graph/onboarding-composer.d.ts.map +1 -0
- package/dist/graph/onboarding-composer.js +275 -0
- package/dist/graph/onboarding-composer.js.map +1 -0
- package/dist/graph/pipeline-lifecycle.d.ts +95 -0
- package/dist/graph/pipeline-lifecycle.d.ts.map +1 -0
- package/dist/graph/pipeline-lifecycle.js +341 -0
- package/dist/graph/pipeline-lifecycle.js.map +1 -0
- package/dist/graph/preflight-budgets.d.ts +52 -0
- package/dist/graph/preflight-budgets.d.ts.map +1 -0
- package/dist/graph/preflight-budgets.js +78 -0
- package/dist/graph/preflight-budgets.js.map +1 -0
- package/dist/graph/preflight-injector.d.ts +130 -0
- package/dist/graph/preflight-injector.d.ts.map +1 -0
- package/dist/graph/preflight-injector.js +618 -0
- package/dist/graph/preflight-injector.js.map +1 -0
- package/dist/graph/prereq.d.ts +12 -0
- package/dist/graph/prereq.d.ts.map +1 -0
- package/dist/graph/prereq.js +61 -0
- package/dist/graph/prereq.js.map +1 -0
- package/dist/graph/prompts.d.ts +42 -0
- package/dist/graph/prompts.d.ts.map +1 -0
- package/dist/graph/prompts.js +80 -0
- package/dist/graph/prompts.js.map +1 -0
- package/dist/graph/sandbox.d.ts +19 -0
- package/dist/graph/sandbox.d.ts.map +1 -0
- package/dist/graph/sandbox.js +25 -0
- package/dist/graph/sandbox.js.map +1 -0
- package/dist/graph/token-usage.d.ts +21 -0
- package/dist/graph/token-usage.d.ts.map +1 -0
- package/dist/graph/token-usage.js +22 -0
- package/dist/graph/token-usage.js.map +1 -0
- package/dist/graph/types.d.ts +129 -0
- package/dist/graph/types.d.ts.map +1 -0
- package/dist/graph/types.js +12 -0
- package/dist/graph/types.js.map +1 -0
- package/dist/incident/orchestrator.d.ts +168 -0
- package/dist/incident/orchestrator.d.ts.map +1 -0
- package/dist/incident/orchestrator.js +279 -0
- package/dist/incident/orchestrator.js.map +1 -0
- package/dist/incident/playbook-search.d.ts +67 -0
- package/dist/incident/playbook-search.d.ts.map +1 -0
- package/dist/incident/playbook-search.js +288 -0
- package/dist/incident/playbook-search.js.map +1 -0
- package/dist/incident/postmortem.d.ts +44 -0
- package/dist/incident/postmortem.d.ts.map +1 -0
- package/dist/incident/postmortem.js +486 -0
- package/dist/incident/postmortem.js.map +1 -0
- package/dist/incident/resolution-verify.d.ts +186 -0
- package/dist/incident/resolution-verify.d.ts.map +1 -0
- package/dist/incident/resolution-verify.js +210 -0
- package/dist/incident/resolution-verify.js.map +1 -0
- package/dist/incident/rollback.d.ts +137 -0
- package/dist/incident/rollback.d.ts.map +1 -0
- package/dist/incident/rollback.js +328 -0
- package/dist/incident/rollback.js.map +1 -0
- package/dist/incident/timeline.d.ts +147 -0
- package/dist/incident/timeline.d.ts.map +1 -0
- package/dist/incident/timeline.js +452 -0
- package/dist/incident/timeline.js.map +1 -0
- package/dist/incident/types.d.ts +335 -0
- package/dist/incident/types.d.ts.map +1 -0
- package/dist/incident/types.js +158 -0
- package/dist/incident/types.js.map +1 -0
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/mcp/event-stream.d.ts +46 -0
- package/dist/mcp/event-stream.d.ts.map +1 -0
- package/dist/mcp/event-stream.js +421 -0
- package/dist/mcp/event-stream.js.map +1 -0
- package/dist/mcp/external-client.d.ts +38 -0
- package/dist/mcp/external-client.d.ts.map +1 -0
- package/dist/mcp/external-client.js +121 -0
- package/dist/mcp/external-client.js.map +1 -0
- package/dist/mcp/run-manager.d.ts +74 -9
- package/dist/mcp/run-manager.d.ts.map +1 -1
- package/dist/mcp/run-manager.js +127 -31
- package/dist/mcp/run-manager.js.map +1 -1
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +56 -0
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tools/abort-run.d.ts +2 -0
- package/dist/mcp/tools/abort-run.d.ts.map +1 -0
- package/dist/mcp/tools/abort-run.js +62 -0
- package/dist/mcp/tools/abort-run.js.map +1 -0
- package/dist/mcp/tools/anchor.js +1 -1
- package/dist/mcp/tools/anchor.js.map +1 -1
- package/dist/mcp/tools/approve-checkpoint.d.ts +2 -0
- package/dist/mcp/tools/approve-checkpoint.d.ts.map +1 -0
- package/dist/mcp/tools/approve-checkpoint.js +70 -0
- package/dist/mcp/tools/approve-checkpoint.js.map +1 -0
- package/dist/mcp/tools/brownfield.js +1 -1
- package/dist/mcp/tools/brownfield.js.map +1 -1
- package/dist/mcp/tools/get-project-state.d.ts +2 -0
- package/dist/mcp/tools/get-project-state.d.ts.map +1 -0
- package/dist/mcp/tools/get-project-state.js +107 -0
- package/dist/mcp/tools/get-project-state.js.map +1 -0
- package/dist/mcp/tools/get-run-status.d.ts +2 -0
- package/dist/mcp/tools/get-run-status.d.ts.map +1 -0
- package/dist/mcp/tools/get-run-status.js +40 -0
- package/dist/mcp/tools/get-run-status.js.map +1 -0
- package/dist/mcp/tools/graph-schemas.d.ts +100 -0
- package/dist/mcp/tools/graph-schemas.d.ts.map +1 -0
- package/dist/mcp/tools/graph-schemas.js +39 -0
- package/dist/mcp/tools/graph-schemas.js.map +1 -0
- package/dist/mcp/tools/graph.d.ts +19 -0
- package/dist/mcp/tools/graph.d.ts.map +1 -0
- package/dist/mcp/tools/graph.js +263 -0
- package/dist/mcp/tools/graph.js.map +1 -0
- package/dist/mcp/tools/incident.d.ts +2 -0
- package/dist/mcp/tools/incident.d.ts.map +1 -0
- package/dist/mcp/tools/incident.js +246 -0
- package/dist/mcp/tools/incident.js.map +1 -0
- package/dist/mcp/tools/index.d.ts +38 -18
- package/dist/mcp/tools/index.d.ts.map +1 -1
- package/dist/mcp/tools/index.js +74 -18
- package/dist/mcp/tools/index.js.map +1 -1
- package/dist/mcp/tools/init.d.ts.map +1 -1
- package/dist/mcp/tools/init.js +2 -0
- package/dist/mcp/tools/init.js.map +1 -1
- package/dist/mcp/tools/list-active-runs.d.ts +2 -0
- package/dist/mcp/tools/list-active-runs.d.ts.map +1 -0
- package/dist/mcp/tools/list-active-runs.js +35 -0
- package/dist/mcp/tools/list-active-runs.js.map +1 -0
- package/dist/mcp/tools/list-pending-approvals.d.ts +2 -0
- package/dist/mcp/tools/list-pending-approvals.d.ts.map +1 -0
- package/dist/mcp/tools/list-pending-approvals.js +40 -0
- package/dist/mcp/tools/list-pending-approvals.js.map +1 -0
- package/dist/mcp/tools/list-projects.d.ts +2 -0
- package/dist/mcp/tools/list-projects.d.ts.map +1 -0
- package/dist/mcp/tools/list-projects.js +101 -0
- package/dist/mcp/tools/list-projects.js.map +1 -0
- package/dist/mcp/tools/list-specs.d.ts +2 -0
- package/dist/mcp/tools/list-specs.d.ts.map +1 -0
- package/dist/mcp/tools/list-specs.js +48 -0
- package/dist/mcp/tools/list-specs.js.map +1 -0
- package/dist/mcp/tools/playbook.d.ts +2 -0
- package/dist/mcp/tools/playbook.d.ts.map +1 -0
- package/dist/mcp/tools/playbook.js +104 -0
- package/dist/mcp/tools/playbook.js.map +1 -0
- package/dist/mcp/tools/postmortem.d.ts +2 -0
- package/dist/mcp/tools/postmortem.d.ts.map +1 -0
- package/dist/mcp/tools/postmortem.js +75 -0
- package/dist/mcp/tools/postmortem.js.map +1 -0
- package/dist/mcp/tools/react.js +1 -1
- package/dist/mcp/tools/react.js.map +1 -1
- package/dist/mcp/tools/reject-checkpoint.d.ts +2 -0
- package/dist/mcp/tools/reject-checkpoint.d.ts.map +1 -0
- package/dist/mcp/tools/reject-checkpoint.js +79 -0
- package/dist/mcp/tools/reject-checkpoint.js.map +1 -0
- package/dist/mcp/tools/rollback.d.ts +2 -0
- package/dist/mcp/tools/rollback.d.ts.map +1 -0
- package/dist/mcp/tools/rollback.js +78 -0
- package/dist/mcp/tools/rollback.js.map +1 -0
- package/dist/mcp/tools/run-in-worktree.d.ts +2 -0
- package/dist/mcp/tools/run-in-worktree.d.ts.map +1 -0
- package/dist/mcp/tools/run-in-worktree.js +90 -0
- package/dist/mcp/tools/run-in-worktree.js.map +1 -0
- package/dist/mcp/tools/run.js +1 -1
- package/dist/mcp/tools/run.js.map +1 -1
- package/dist/mcp/tools/solidity.js +1 -1
- package/dist/mcp/tools/solidity.js.map +1 -1
- package/dist/mcp/tools/status.d.ts.map +1 -1
- package/dist/mcp/tools/status.js +11 -0
- package/dist/mcp/tools/status.js.map +1 -1
- package/dist/mcp/tools/subscribe-events.d.ts +2 -0
- package/dist/mcp/tools/subscribe-events.d.ts.map +1 -0
- package/dist/mcp/tools/subscribe-events.js +48 -0
- package/dist/mcp/tools/subscribe-events.js.map +1 -0
- package/dist/mcp/tools/unsubscribe-events.d.ts +2 -0
- package/dist/mcp/tools/unsubscribe-events.d.ts.map +1 -0
- package/dist/mcp/tools/unsubscribe-events.js +45 -0
- package/dist/mcp/tools/unsubscribe-events.js.map +1 -0
- package/dist/orchestrator/agent-loader.d.ts +16 -0
- package/dist/orchestrator/agent-loader.d.ts.map +1 -1
- package/dist/orchestrator/agent-loader.js +30 -0
- package/dist/orchestrator/agent-loader.js.map +1 -1
- package/dist/orchestrator/agentic-loop.d.ts +51 -0
- package/dist/orchestrator/agentic-loop.d.ts.map +1 -1
- package/dist/orchestrator/agentic-loop.js +123 -4
- package/dist/orchestrator/agentic-loop.js.map +1 -1
- package/dist/orchestrator/arch-lenses.d.ts +7 -0
- package/dist/orchestrator/arch-lenses.d.ts.map +1 -0
- package/dist/orchestrator/arch-lenses.js +22 -0
- package/dist/orchestrator/arch-lenses.js.map +1 -0
- package/dist/orchestrator/architect-agent.d.ts +16 -0
- package/dist/orchestrator/architect-agent.d.ts.map +1 -1
- package/dist/orchestrator/architect-agent.js +546 -9
- package/dist/orchestrator/architect-agent.js.map +1 -1
- package/dist/orchestrator/checkpoints/audit.d.ts +128 -0
- package/dist/orchestrator/checkpoints/audit.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/audit.js +272 -0
- package/dist/orchestrator/checkpoints/audit.js.map +1 -0
- package/dist/orchestrator/checkpoints/feedback-router.d.ts +213 -0
- package/dist/orchestrator/checkpoints/feedback-router.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/feedback-router.js +438 -0
- package/dist/orchestrator/checkpoints/feedback-router.js.map +1 -0
- package/dist/orchestrator/checkpoints/index.d.ts +11 -0
- package/dist/orchestrator/checkpoints/index.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/index.js +12 -0
- package/dist/orchestrator/checkpoints/index.js.map +1 -0
- package/dist/orchestrator/checkpoints/mechanisms/cli.d.ts +35 -0
- package/dist/orchestrator/checkpoints/mechanisms/cli.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/mechanisms/cli.js +153 -0
- package/dist/orchestrator/checkpoints/mechanisms/cli.js.map +1 -0
- package/dist/orchestrator/checkpoints/mechanisms/disk.d.ts +34 -0
- package/dist/orchestrator/checkpoints/mechanisms/disk.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/mechanisms/disk.js +139 -0
- package/dist/orchestrator/checkpoints/mechanisms/disk.js.map +1 -0
- package/dist/orchestrator/checkpoints/mechanisms/pr.d.ts +141 -0
- package/dist/orchestrator/checkpoints/mechanisms/pr.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/mechanisms/pr.js +445 -0
- package/dist/orchestrator/checkpoints/mechanisms/pr.js.map +1 -0
- package/dist/orchestrator/checkpoints/noop.d.ts +12 -0
- package/dist/orchestrator/checkpoints/noop.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/noop.js +13 -0
- package/dist/orchestrator/checkpoints/noop.js.map +1 -0
- package/dist/orchestrator/checkpoints/registry.d.ts +48 -0
- package/dist/orchestrator/checkpoints/registry.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/registry.js +89 -0
- package/dist/orchestrator/checkpoints/registry.js.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/_util.d.ts +50 -0
- package/dist/orchestrator/checkpoints/renderers/_util.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/_util.js +137 -0
- package/dist/orchestrator/checkpoints/renderers/_util.js.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/code-review.d.ts +15 -0
- package/dist/orchestrator/checkpoints/renderers/code-review.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/code-review.js +66 -0
- package/dist/orchestrator/checkpoints/renderers/code-review.js.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/curator-briefing.d.ts +15 -0
- package/dist/orchestrator/checkpoints/renderers/curator-briefing.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/curator-briefing.js +40 -0
- package/dist/orchestrator/checkpoints/renderers/curator-briefing.js.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/eval-result.d.ts +15 -0
- package/dist/orchestrator/checkpoints/renderers/eval-result.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/eval-result.js +54 -0
- package/dist/orchestrator/checkpoints/renderers/eval-result.js.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/generator-diff.d.ts +49 -0
- package/dist/orchestrator/checkpoints/renderers/generator-diff.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/generator-diff.js +154 -0
- package/dist/orchestrator/checkpoints/renderers/generator-diff.js.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/pipeline-summary.d.ts +15 -0
- package/dist/orchestrator/checkpoints/renderers/pipeline-summary.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/pipeline-summary.js +59 -0
- package/dist/orchestrator/checkpoints/renderers/pipeline-summary.js.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/plan.d.ts +15 -0
- package/dist/orchestrator/checkpoints/renderers/plan.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/plan.js +34 -0
- package/dist/orchestrator/checkpoints/renderers/plan.js.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/registry.d.ts +43 -0
- package/dist/orchestrator/checkpoints/renderers/registry.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/registry.js +83 -0
- package/dist/orchestrator/checkpoints/renderers/registry.js.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/research.d.ts +15 -0
- package/dist/orchestrator/checkpoints/renderers/research.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/research.js +39 -0
- package/dist/orchestrator/checkpoints/renderers/research.js.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/sprint-contract.d.ts +20 -0
- package/dist/orchestrator/checkpoints/renderers/sprint-contract.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/sprint-contract.js +57 -0
- package/dist/orchestrator/checkpoints/renderers/sprint-contract.js.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/sprint-summary.d.ts +15 -0
- package/dist/orchestrator/checkpoints/renderers/sprint-summary.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/renderers/sprint-summary.js +38 -0
- package/dist/orchestrator/checkpoints/renderers/sprint-summary.js.map +1 -0
- package/dist/orchestrator/checkpoints/sites.d.ts +22 -0
- package/dist/orchestrator/checkpoints/sites.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/sites.js +57 -0
- package/dist/orchestrator/checkpoints/sites.js.map +1 -0
- package/dist/orchestrator/checkpoints/types.d.ts +51 -0
- package/dist/orchestrator/checkpoints/types.d.ts.map +1 -0
- package/dist/orchestrator/checkpoints/types.js +9 -0
- package/dist/orchestrator/checkpoints/types.js.map +1 -0
- package/dist/orchestrator/code-reviewer-agent.d.ts +50 -0
- package/dist/orchestrator/code-reviewer-agent.d.ts.map +1 -0
- package/dist/orchestrator/code-reviewer-agent.js +283 -0
- package/dist/orchestrator/code-reviewer-agent.js.map +1 -0
- package/dist/orchestrator/curator-agent.d.ts.map +1 -1
- package/dist/orchestrator/curator-agent.js +60 -9
- package/dist/orchestrator/curator-agent.js.map +1 -1
- package/dist/orchestrator/deploy/classify.d.ts +31 -0
- package/dist/orchestrator/deploy/classify.d.ts.map +1 -0
- package/dist/orchestrator/deploy/classify.js +109 -0
- package/dist/orchestrator/deploy/classify.js.map +1 -0
- package/dist/orchestrator/deploy/execute.d.ts +45 -0
- package/dist/orchestrator/deploy/execute.d.ts.map +1 -0
- package/dist/orchestrator/deploy/execute.js +146 -0
- package/dist/orchestrator/deploy/execute.js.map +1 -0
- package/dist/orchestrator/deploy/executor.d.ts +22 -0
- package/dist/orchestrator/deploy/executor.d.ts.map +1 -0
- package/dist/orchestrator/deploy/executor.js +31 -0
- package/dist/orchestrator/deploy/executor.js.map +1 -0
- package/dist/orchestrator/deploy/index.d.ts +21 -0
- package/dist/orchestrator/deploy/index.d.ts.map +1 -0
- package/dist/orchestrator/deploy/index.js +21 -0
- package/dist/orchestrator/deploy/index.js.map +1 -0
- package/dist/orchestrator/deploy/resolve.d.ts +51 -0
- package/dist/orchestrator/deploy/resolve.d.ts.map +1 -0
- package/dist/orchestrator/deploy/resolve.js +53 -0
- package/dist/orchestrator/deploy/resolve.js.map +1 -0
- package/dist/orchestrator/deploy/spawn.d.ts +60 -0
- package/dist/orchestrator/deploy/spawn.d.ts.map +1 -0
- package/dist/orchestrator/deploy/spawn.js +62 -0
- package/dist/orchestrator/deploy/spawn.js.map +1 -0
- package/dist/orchestrator/deploy/types.d.ts +98 -0
- package/dist/orchestrator/deploy/types.d.ts.map +1 -0
- package/dist/orchestrator/deploy/types.js +39 -0
- package/dist/orchestrator/deploy/types.js.map +1 -0
- package/dist/orchestrator/documenter-agent.d.ts +57 -0
- package/dist/orchestrator/documenter-agent.d.ts.map +1 -0
- package/dist/orchestrator/documenter-agent.js +195 -0
- package/dist/orchestrator/documenter-agent.js.map +1 -0
- package/dist/orchestrator/environment.d.ts +45 -0
- package/dist/orchestrator/environment.d.ts.map +1 -0
- package/dist/orchestrator/environment.js +151 -0
- package/dist/orchestrator/environment.js.map +1 -0
- package/dist/orchestrator/eval-lenses.d.ts +7 -0
- package/dist/orchestrator/eval-lenses.d.ts.map +1 -0
- package/dist/orchestrator/eval-lenses.js +19 -0
- package/dist/orchestrator/eval-lenses.js.map +1 -0
- package/dist/orchestrator/eval-persist.d.ts +25 -0
- package/dist/orchestrator/eval-persist.d.ts.map +1 -0
- package/dist/orchestrator/eval-persist.js +74 -0
- package/dist/orchestrator/eval-persist.js.map +1 -0
- package/dist/orchestrator/evaluator-agent.d.ts +23 -0
- package/dist/orchestrator/evaluator-agent.d.ts.map +1 -1
- package/dist/orchestrator/evaluator-agent.js +80 -10
- package/dist/orchestrator/evaluator-agent.js.map +1 -1
- package/dist/orchestrator/generator-agent.d.ts.map +1 -1
- package/dist/orchestrator/generator-agent.js +53 -8
- package/dist/orchestrator/generator-agent.js.map +1 -1
- package/dist/orchestrator/memory/distill.d.ts +60 -0
- package/dist/orchestrator/memory/distill.d.ts.map +1 -0
- package/dist/orchestrator/memory/distill.js +177 -0
- package/dist/orchestrator/memory/distill.js.map +1 -0
- package/dist/orchestrator/memory/eval-source.d.ts +20 -0
- package/dist/orchestrator/memory/eval-source.d.ts.map +1 -0
- package/dist/orchestrator/memory/eval-source.js +88 -0
- package/dist/orchestrator/memory/eval-source.js.map +1 -0
- package/dist/orchestrator/memory/retrieve.d.ts +45 -0
- package/dist/orchestrator/memory/retrieve.d.ts.map +1 -0
- package/dist/orchestrator/memory/retrieve.js +102 -0
- package/dist/orchestrator/memory/retrieve.js.map +1 -0
- package/dist/orchestrator/model-resolver.d.ts.map +1 -1
- package/dist/orchestrator/model-resolver.js +15 -1
- package/dist/orchestrator/model-resolver.js.map +1 -1
- package/dist/orchestrator/observability/index.d.ts +12 -0
- package/dist/orchestrator/observability/index.d.ts.map +1 -0
- package/dist/orchestrator/observability/index.js +12 -0
- package/dist/orchestrator/observability/index.js.map +1 -0
- package/dist/orchestrator/observability/merge.d.ts +73 -0
- package/dist/orchestrator/observability/merge.d.ts.map +1 -0
- package/dist/orchestrator/observability/merge.js +110 -0
- package/dist/orchestrator/observability/merge.js.map +1 -0
- package/dist/orchestrator/pipeline.d.ts +31 -0
- package/dist/orchestrator/pipeline.d.ts.map +1 -1
- package/dist/orchestrator/pipeline.js +267 -5
- package/dist/orchestrator/pipeline.js.map +1 -1
- package/dist/orchestrator/planner-agent.d.ts +22 -1
- package/dist/orchestrator/planner-agent.d.ts.map +1 -1
- package/dist/orchestrator/planner-agent.js +165 -8
- package/dist/orchestrator/planner-agent.js.map +1 -1
- package/dist/orchestrator/research-agent.d.ts.map +1 -1
- package/dist/orchestrator/research-agent.js +48 -11
- package/dist/orchestrator/research-agent.js.map +1 -1
- package/dist/orchestrator/tools/handlers.d.ts +16 -0
- package/dist/orchestrator/tools/handlers.d.ts.map +1 -1
- package/dist/orchestrator/tools/handlers.js +30 -5
- package/dist/orchestrator/tools/handlers.js.map +1 -1
- package/dist/orchestrator/tools/index.d.ts +84 -1
- package/dist/orchestrator/tools/index.d.ts.map +1 -1
- package/dist/orchestrator/tools/index.js +164 -1
- package/dist/orchestrator/tools/index.js.map +1 -1
- package/dist/orchestrator/tools/schemas.js +5 -5
- package/dist/orchestrator/tools/schemas.js.map +1 -1
- package/dist/orchestrator/workflow/args-builder.d.ts +35 -0
- package/dist/orchestrator/workflow/args-builder.d.ts.map +1 -0
- package/dist/orchestrator/workflow/args-builder.js +142 -0
- package/dist/orchestrator/workflow/args-builder.js.map +1 -0
- package/dist/orchestrator/workflow/budget.d.ts +57 -0
- package/dist/orchestrator/workflow/budget.d.ts.map +1 -0
- package/dist/orchestrator/workflow/budget.js +80 -0
- package/dist/orchestrator/workflow/budget.js.map +1 -0
- package/dist/orchestrator/workflow/conformance.d.ts +27 -0
- package/dist/orchestrator/workflow/conformance.d.ts.map +1 -0
- package/dist/orchestrator/workflow/conformance.js +111 -0
- package/dist/orchestrator/workflow/conformance.js.map +1 -0
- package/dist/orchestrator/workflow/eligibility.d.ts +8 -0
- package/dist/orchestrator/workflow/eligibility.d.ts.map +1 -0
- package/dist/orchestrator/workflow/eligibility.js +10 -0
- package/dist/orchestrator/workflow/eligibility.js.map +1 -0
- package/dist/orchestrator/workflow/engine.d.ts +10 -0
- package/dist/orchestrator/workflow/engine.d.ts.map +1 -0
- package/dist/orchestrator/workflow/engine.js +2 -0
- package/dist/orchestrator/workflow/engine.js.map +1 -0
- package/dist/orchestrator/workflow/errors.d.ts +13 -0
- package/dist/orchestrator/workflow/errors.d.ts.map +1 -0
- package/dist/orchestrator/workflow/errors.js +26 -0
- package/dist/orchestrator/workflow/errors.js.map +1 -0
- package/dist/orchestrator/workflow/flusher.d.ts +19 -0
- package/dist/orchestrator/workflow/flusher.d.ts.map +1 -0
- package/dist/orchestrator/workflow/flusher.js +81 -0
- package/dist/orchestrator/workflow/flusher.js.map +1 -0
- package/dist/orchestrator/workflow/interpreter.d.ts +48 -0
- package/dist/orchestrator/workflow/interpreter.d.ts.map +1 -0
- package/dist/orchestrator/workflow/interpreter.js +92 -0
- package/dist/orchestrator/workflow/interpreter.js.map +1 -0
- package/dist/orchestrator/workflow/pure-sprint.d.ts +65 -0
- package/dist/orchestrator/workflow/pure-sprint.d.ts.map +1 -0
- package/dist/orchestrator/workflow/pure-sprint.js +82 -0
- package/dist/orchestrator/workflow/pure-sprint.js.map +1 -0
- package/dist/orchestrator/workflow/reconciler.d.ts +15 -0
- package/dist/orchestrator/workflow/reconciler.d.ts.map +1 -0
- package/dist/orchestrator/workflow/reconciler.js +65 -0
- package/dist/orchestrator/workflow/reconciler.js.map +1 -0
- package/dist/orchestrator/workflow/resume-cursor.d.ts +10 -0
- package/dist/orchestrator/workflow/resume-cursor.d.ts.map +1 -0
- package/dist/orchestrator/workflow/resume-cursor.js +25 -0
- package/dist/orchestrator/workflow/resume-cursor.js.map +1 -0
- package/dist/orchestrator/workflow/retry.d.ts +50 -0
- package/dist/orchestrator/workflow/retry.d.ts.map +1 -0
- package/dist/orchestrator/workflow/retry.js +100 -0
- package/dist/orchestrator/workflow/retry.js.map +1 -0
- package/dist/orchestrator/workflow/scheduler.d.ts +87 -0
- package/dist/orchestrator/workflow/scheduler.d.ts.map +1 -0
- package/dist/orchestrator/workflow/scheduler.js +158 -0
- package/dist/orchestrator/workflow/scheduler.js.map +1 -0
- package/dist/orchestrator/workflow/selector.d.ts +26 -0
- package/dist/orchestrator/workflow/selector.d.ts.map +1 -0
- package/dist/orchestrator/workflow/selector.js +54 -0
- package/dist/orchestrator/workflow/selector.js.map +1 -0
- package/dist/orchestrator/workflow/synthesizer.d.ts +52 -0
- package/dist/orchestrator/workflow/synthesizer.d.ts.map +1 -0
- package/dist/orchestrator/workflow/synthesizer.js +75 -0
- package/dist/orchestrator/workflow/synthesizer.js.map +1 -0
- package/dist/orchestrator/workflow/ts-engine.d.ts +13 -0
- package/dist/orchestrator/workflow/ts-engine.d.ts.map +1 -0
- package/dist/orchestrator/workflow/ts-engine.js +14 -0
- package/dist/orchestrator/workflow/ts-engine.js.map +1 -0
- package/dist/orchestrator/workflow/types.d.ts +55 -0
- package/dist/orchestrator/workflow/types.d.ts.map +1 -0
- package/dist/orchestrator/workflow/types.js +3 -0
- package/dist/orchestrator/workflow/types.js.map +1 -0
- package/dist/orchestrator/workflow/workflow-engine.d.ts +31 -0
- package/dist/orchestrator/workflow/workflow-engine.d.ts.map +1 -0
- package/dist/orchestrator/workflow/workflow-engine.js +70 -0
- package/dist/orchestrator/workflow/workflow-engine.js.map +1 -0
- package/dist/orchestrator/worktree.d.ts +18 -0
- package/dist/orchestrator/worktree.d.ts.map +1 -0
- package/dist/orchestrator/worktree.js +129 -0
- package/dist/orchestrator/worktree.js.map +1 -0
- package/dist/providers/anthropic.d.ts +8 -1
- package/dist/providers/anthropic.d.ts.map +1 -1
- package/dist/providers/anthropic.js +135 -11
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/claude-code.d.ts +44 -0
- package/dist/providers/claude-code.d.ts.map +1 -0
- package/dist/providers/claude-code.js +143 -0
- package/dist/providers/claude-code.js.map +1 -0
- package/dist/providers/factory.d.ts +16 -2
- package/dist/providers/factory.d.ts.map +1 -1
- package/dist/providers/factory.js +101 -14
- package/dist/providers/factory.js.map +1 -1
- package/dist/providers/google.d.ts.map +1 -1
- package/dist/providers/google.js +32 -3
- package/dist/providers/google.js.map +1 -1
- package/dist/providers/index.d.ts +4 -2
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +3 -1
- package/dist/providers/index.js.map +1 -1
- package/dist/providers/openai.d.ts.map +1 -1
- package/dist/providers/openai.js +28 -3
- package/dist/providers/openai.js.map +1 -1
- package/dist/providers/preflight.d.ts +22 -0
- package/dist/providers/preflight.d.ts.map +1 -0
- package/dist/providers/preflight.js +54 -0
- package/dist/providers/preflight.js.map +1 -0
- package/dist/providers/structured.d.ts +130 -0
- package/dist/providers/structured.d.ts.map +1 -0
- package/dist/providers/structured.js +205 -0
- package/dist/providers/structured.js.map +1 -0
- package/dist/providers/types.d.ts +53 -2
- package/dist/providers/types.d.ts.map +1 -1
- package/dist/state/approval-state.d.ts +74 -0
- package/dist/state/approval-state.d.ts.map +1 -0
- package/dist/state/approval-state.js +127 -0
- package/dist/state/approval-state.js.map +1 -0
- package/dist/state/history-rotation.d.ts +17 -0
- package/dist/state/history-rotation.d.ts.map +1 -0
- package/dist/state/history-rotation.js +84 -0
- package/dist/state/history-rotation.js.map +1 -0
- package/dist/state/history.d.ts +16 -4
- package/dist/state/history.d.ts.map +1 -1
- package/dist/state/history.js +62 -20
- package/dist/state/history.js.map +1 -1
- package/dist/state/index.d.ts +4 -1
- package/dist/state/index.d.ts.map +1 -1
- package/dist/state/index.js +5 -2
- package/dist/state/index.js.map +1 -1
- package/dist/state/memory.d.ts +60 -0
- package/dist/state/memory.d.ts.map +1 -0
- package/dist/state/memory.js +242 -0
- package/dist/state/memory.js.map +1 -0
- package/dist/state/review-state.d.ts +15 -0
- package/dist/state/review-state.d.ts.map +1 -0
- package/dist/state/review-state.js +51 -0
- package/dist/state/review-state.js.map +1 -0
- package/dist/state/run-state.d.ts +39 -0
- package/dist/state/run-state.d.ts.map +1 -0
- package/dist/state/run-state.js +101 -0
- package/dist/state/run-state.js.map +1 -0
- package/dist/telemetry/emit.d.ts +41 -0
- package/dist/telemetry/emit.d.ts.map +1 -0
- package/dist/telemetry/emit.js +65 -0
- package/dist/telemetry/emit.js.map +1 -0
- package/dist/utils/git.d.ts +27 -0
- package/dist/utils/git.d.ts.map +1 -1
- package/dist/utils/git.js +50 -0
- package/dist/utils/git.js.map +1 -1
- package/hooks/hooks.json +27 -1
- package/hooks/session-start +42 -0
- package/package.json +13 -6
- package/scripts/check-prereqs.sh +12 -0
- package/scripts/e2e-graph-smoke.sh +167 -0
- package/scripts/graph-hook.mjs +151 -0
- package/scripts/run-kpi-gate.mjs +245 -0
- package/scripts/spike-claude-code-provider.mjs +66 -0
- package/scripts/spike-deepseek.mjs +63 -0
- package/scripts/sync-skills.mjs +4 -1
- package/scripts/sync-targets.json +12 -0
- package/scripts/update-all.mjs +255 -0
- package/skills/bober.architect/SKILL.md +13 -0
- package/skills/bober.architect/references/arch-lens-panel.md +126 -0
- package/skills/bober.code-review/SKILL.md +186 -0
- package/skills/bober.debug/SKILL.md +300 -0
- package/skills/bober.deploy/SKILL.md +262 -0
- package/skills/bober.diagnose/SKILL.md +254 -0
- package/skills/bober.eval/SKILL.md +9 -0
- package/skills/bober.eval/references/lens-panel.md +115 -0
- package/skills/bober.graph/SKILL.md +85 -0
- package/skills/bober.impact/SKILL.md +101 -0
- package/skills/bober.incident/SKILL.md +245 -0
- package/skills/bober.onboard/SKILL.md +84 -0
- package/skills/bober.plan/SKILL.md +16 -0
- package/skills/bober.postmortem/SKILL.md +231 -0
- package/skills/bober.run/SKILL.md +23 -4
- package/skills/bober.run/references/lens-panel.md +115 -0
- package/skills/bober.runbook/SKILL.md +335 -0
- package/skills/bober.sprint/SKILL.md +44 -2
- package/skills/bober.sprint/references/lens-panel.md +115 -0
- package/skills/bober.using-bober/SKILL.md +133 -0
- package/skills/bober.verify/SKILL.md +143 -0
- package/skills/shared/arch-lens-panel.md +126 -0
- package/skills/shared/lens-panel.md +115 -0
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bober-using-bober
|
|
3
|
+
description: Use when starting any conversation - establishes how to find and use bober skills, requiring Skill tool invocation before ANY response including clarifying questions
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
<SUBAGENT-STOP>
|
|
7
|
+
If you were dispatched as a subagent to execute a specific task, skip this skill.
|
|
8
|
+
</SUBAGENT-STOP>
|
|
9
|
+
|
|
10
|
+
<EXTREMELY-IMPORTANT>
|
|
11
|
+
If you think there is even a 1% chance a skill might apply to what you are doing, you ABSOLUTELY MUST invoke the skill.
|
|
12
|
+
|
|
13
|
+
IF A SKILL APPLIES TO YOUR TASK, YOU DO NOT HAVE A CHOICE. YOU MUST USE IT.
|
|
14
|
+
|
|
15
|
+
This is not negotiable. This is not optional. You cannot rationalize your way out of this.
|
|
16
|
+
</EXTREMELY-IMPORTANT>
|
|
17
|
+
|
|
18
|
+
## You Are agent-bober
|
|
19
|
+
|
|
20
|
+
You are agent-bober, a multi-mode software-engineering teammate. Your behavior is shaped by a catalog of skills, each enforcing a specific discipline. The Iron Law of agent-bober is: **if a skill applies, invoke it. No exceptions.**
|
|
21
|
+
|
|
22
|
+
## The Iron Law
|
|
23
|
+
|
|
24
|
+
When a bober skill states an "Iron Law," it is non-negotiable. Iron Laws are always capitalized, marked with **IRON LAW:** or wrapped in `<EXTREMELY-IMPORTANT>` tags. You do not work around an Iron Law. You do not rationalize an exception. You follow it exactly.
|
|
25
|
+
|
|
26
|
+
## Instruction Priority
|
|
27
|
+
|
|
28
|
+
Bober skills override default system prompt behavior, but **user instructions always take precedence**:
|
|
29
|
+
|
|
30
|
+
1. **User's explicit instructions** (CLAUDE.md, AGENTS.md, direct requests) — highest priority
|
|
31
|
+
2. **Bober skills** — override default system behavior where they conflict
|
|
32
|
+
3. **Default system prompt** — lowest priority
|
|
33
|
+
|
|
34
|
+
If CLAUDE.md or AGENTS.md says "don't use TDD" and a skill says "always use TDD," follow the user's instructions. The user is in control.
|
|
35
|
+
|
|
36
|
+
See [AGENTS.md](../../AGENTS.md) at the repo root for the contributor discipline — this file defines non-negotiable project conventions.
|
|
37
|
+
|
|
38
|
+
## How to Access Skills
|
|
39
|
+
|
|
40
|
+
**In Claude Code:** Use the `Skill` tool. When you invoke a skill, its content is loaded and presented to you — follow it directly. Never use the Read tool on skill files.
|
|
41
|
+
|
|
42
|
+
**In Copilot CLI:** Use the `skill` tool. Skills are auto-discovered. The `skill` tool works the same as Claude Code's `Skill` tool.
|
|
43
|
+
|
|
44
|
+
**In other environments:** Check your platform's documentation for how skills are loaded.
|
|
45
|
+
|
|
46
|
+
# Using Skills
|
|
47
|
+
|
|
48
|
+
## The Rule
|
|
49
|
+
|
|
50
|
+
**Invoke relevant or requested skills BEFORE any response or action.** Even a 1% chance a skill might apply means that you should invoke the skill to check. If an invoked skill turns out to be wrong for the situation, you don't need to use it.
|
|
51
|
+
|
|
52
|
+
## Red Flags
|
|
53
|
+
|
|
54
|
+
These thoughts mean STOP — you're rationalizing:
|
|
55
|
+
|
|
56
|
+
| Thought | Reality |
|
|
57
|
+
|---------|---------|
|
|
58
|
+
| "This is just a simple question" | Questions are tasks. Check for skills. |
|
|
59
|
+
| "I need more context first" | Skill check comes BEFORE clarifying questions. |
|
|
60
|
+
| "Let me explore the codebase first" | Skills tell you HOW to explore. Check first. |
|
|
61
|
+
| "I can check git/files quickly" | Files lack conversation context. Check for skills. |
|
|
62
|
+
| "Let me gather information first" | Skills tell you HOW to gather information. |
|
|
63
|
+
| "This doesn't need a formal skill" | If a skill exists, use it. |
|
|
64
|
+
| "I remember this skill" | Skills evolve. Read current version. |
|
|
65
|
+
| "This doesn't count as a task" | Action = task. Check for skills. |
|
|
66
|
+
| "The skill is overkill" | Simple things become complex. Use it. |
|
|
67
|
+
| "I'll just do this one thing first" | Check BEFORE doing anything. |
|
|
68
|
+
| "This feels productive" | Undisciplined action wastes time. Skills prevent this. |
|
|
69
|
+
| "I know what that means" | Knowing the concept != using the skill. Invoke it. |
|
|
70
|
+
|
|
71
|
+
## Skill Priority
|
|
72
|
+
|
|
73
|
+
When multiple skills could apply, use this order:
|
|
74
|
+
|
|
75
|
+
1. **Process skills first** (bober.plan, bober.research, bober.debug) — these determine HOW to approach the task
|
|
76
|
+
2. **Implementation skills second** (bober.sprint, bober.run) — these guide execution
|
|
77
|
+
|
|
78
|
+
"Let's build X" → bober.plan first, then bober.sprint.
|
|
79
|
+
"Fix this bug" → bober.debug first, then domain-specific skills.
|
|
80
|
+
|
|
81
|
+
## Skill Types
|
|
82
|
+
|
|
83
|
+
**Rigid** (bober.sprint, bober.eval, bober.debug): Follow exactly. Don't adapt away discipline.
|
|
84
|
+
|
|
85
|
+
**Flexible** (bober.principles, bober.architect): Adapt principles to context.
|
|
86
|
+
|
|
87
|
+
The skill itself tells you which.
|
|
88
|
+
|
|
89
|
+
## The Bober Skill Catalog
|
|
90
|
+
|
|
91
|
+
### Process and Discipline Skills
|
|
92
|
+
|
|
93
|
+
- `bober.principles` — define and maintain project principles; generates `.bober/principles.md`
|
|
94
|
+
- `bober.plan` — transform feature ideas into sprint contracts with clarifying questions and acceptance criteria
|
|
95
|
+
- `bober.research` — two-phase researcher isolation: research-only phase before any implementation
|
|
96
|
+
- `bober.architect` — 5-checkpoint architecture flow: problem → options → decision → ADR → review
|
|
97
|
+
- `bober.sprint` — execute a single sprint contract with generator-evaluator verification
|
|
98
|
+
- `bober.run` — full autonomous pipeline: plan → research → architect → sprint loop
|
|
99
|
+
|
|
100
|
+
### Quality and Verification Skills
|
|
101
|
+
|
|
102
|
+
- `bober.eval` — run evaluation strategies (typecheck, lint, build, unit-test, playwright, agent-evaluation)
|
|
103
|
+
- `bober.verify` (planned) — verification-before-completion discipline; prevents shipping unverified work
|
|
104
|
+
- `bober.debug` (planned) — systematic debugging: reproduce → isolate → hypothesize → fix → verify
|
|
105
|
+
- `bober.code-review` (planned) — advisory code review with risk-scored analysis using the knowledge graph
|
|
106
|
+
|
|
107
|
+
### Operations Skills
|
|
108
|
+
|
|
109
|
+
- `bober.diagnose` (planned) — incident response: triage → identify → contain → resolve → document
|
|
110
|
+
- `bober.runbook` (planned) — playbook execution for known operational procedures
|
|
111
|
+
- `bober.deploy` (planned) — change-management gates: staging → smoke → canary → promote → verify
|
|
112
|
+
- `bober.postmortem` (planned) — incident timeline synthesis and blameless retrospective
|
|
113
|
+
|
|
114
|
+
### Existing Domain Skills (not in core discipline catalog)
|
|
115
|
+
|
|
116
|
+
The following skills are available in this repo but are domain-specific, not part of the forward-looking discipline catalog above. Invoke them when relevant:
|
|
117
|
+
|
|
118
|
+
- `bober.anchor` — project anchoring and context establishment
|
|
119
|
+
- `bober.brownfield` — brownfield (existing codebase) conventions and anti-patterns
|
|
120
|
+
- `bober.graph` — knowledge graph queries and code review using code-review-graph MCP
|
|
121
|
+
- `bober.impact` — change impact analysis
|
|
122
|
+
- `bober.onboard` — project onboarding
|
|
123
|
+
- `bober.playwright` — Playwright end-to-end test generation
|
|
124
|
+
- `bober.react` — React component and hook conventions
|
|
125
|
+
- `bober.solidity` — Solidity smart contract patterns
|
|
126
|
+
|
|
127
|
+
## User Instructions
|
|
128
|
+
|
|
129
|
+
Instructions say WHAT, not HOW. "Add X" or "Fix Y" doesn't mean skip workflows. Always invoke the relevant skill first to determine HOW.
|
|
130
|
+
|
|
131
|
+
## Attribution
|
|
132
|
+
|
|
133
|
+
Structural pattern and voice ported from [obra/superpowers](https://github.com/obra/superpowers) (MIT licensed). Adapted for the agent-bober skill catalog.
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bober-verify
|
|
3
|
+
description: Use when about to claim work is complete, fixed, or passing, before committing or creating PRs - requires running verification commands and confirming output before making any success claims; evidence before assertions always
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
> Verbatim port from [obra/superpowers](https://github.com/obra/superpowers) — MIT License.
|
|
7
|
+
> Original: skills/verification-before-completion/SKILL.md.
|
|
8
|
+
> Adaptations: skill name (bober.verify), tool name references where bober has equivalents.
|
|
9
|
+
|
|
10
|
+
# Verification Before Completion
|
|
11
|
+
|
|
12
|
+
## Overview
|
|
13
|
+
|
|
14
|
+
Claiming work is complete without verification is dishonesty, not efficiency.
|
|
15
|
+
|
|
16
|
+
**Core principle:** Evidence before claims, always.
|
|
17
|
+
|
|
18
|
+
**Violating the letter of this rule is violating the spirit of this rule.**
|
|
19
|
+
|
|
20
|
+
## The Iron Law
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
NO COMPLETION CLAIMS WITHOUT FRESH VERIFICATION EVIDENCE
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
If you haven't run the verification command in this message, you cannot claim it passes.
|
|
27
|
+
|
|
28
|
+
## The Gate Function
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
BEFORE claiming any status or expressing satisfaction:
|
|
32
|
+
|
|
33
|
+
1. IDENTIFY: What command proves this claim?
|
|
34
|
+
2. RUN: Execute the FULL command (fresh, complete)
|
|
35
|
+
3. READ: Full output, check exit code, count failures
|
|
36
|
+
4. VERIFY: Does output confirm the claim?
|
|
37
|
+
- If NO: State actual status with evidence
|
|
38
|
+
- If YES: State claim WITH evidence
|
|
39
|
+
5. ONLY THEN: Make the claim
|
|
40
|
+
|
|
41
|
+
Skip any step = lying, not verifying
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Common Failures
|
|
45
|
+
|
|
46
|
+
| Claim | Requires | Not Sufficient |
|
|
47
|
+
|-------|----------|----------------|
|
|
48
|
+
| Tests pass | Test command output: 0 failures | Previous run, "should pass" |
|
|
49
|
+
| Linter clean | Linter output: 0 errors | Partial check, extrapolation |
|
|
50
|
+
| Build succeeds | Build command: exit 0 | Linter passing, logs look good |
|
|
51
|
+
| Bug fixed | Test original symptom: passes | Code changed, assumed fixed |
|
|
52
|
+
| Regression test works | Red-green cycle verified | Test passes once |
|
|
53
|
+
| Agent completed | VCS diff shows changes | Agent reports "success" |
|
|
54
|
+
| Requirements met | Line-by-line checklist | Tests passing |
|
|
55
|
+
|
|
56
|
+
## Red Flags - STOP
|
|
57
|
+
|
|
58
|
+
- Using "should", "probably", "seems to"
|
|
59
|
+
- Expressing satisfaction before verification ("Great!", "Perfect!", "Done!", etc.)
|
|
60
|
+
- About to commit/push/PR without verification
|
|
61
|
+
- Trusting agent success reports
|
|
62
|
+
- Relying on partial verification
|
|
63
|
+
- Thinking "just this once"
|
|
64
|
+
- Tired and wanting work over
|
|
65
|
+
- **ANY wording implying success without having run verification**
|
|
66
|
+
|
|
67
|
+
## Rationalization Prevention
|
|
68
|
+
|
|
69
|
+
| Excuse | Reality |
|
|
70
|
+
|--------|---------|
|
|
71
|
+
| "Should work now" | RUN the verification |
|
|
72
|
+
| "I'm confident" | Confidence ≠ evidence |
|
|
73
|
+
| "Just this once" | No exceptions |
|
|
74
|
+
| "Linter passed" | Linter ≠ compiler |
|
|
75
|
+
| "Agent said success" | Verify independently |
|
|
76
|
+
| "I'm tired" | Exhaustion ≠ excuse |
|
|
77
|
+
| "Partial check is enough" | Partial proves nothing |
|
|
78
|
+
| "Different words so rule doesn't apply" | Spirit over letter |
|
|
79
|
+
|
|
80
|
+
## Key Patterns
|
|
81
|
+
|
|
82
|
+
**Tests:**
|
|
83
|
+
```
|
|
84
|
+
✅ [Run test command] [See: 34/34 pass] "All tests pass"
|
|
85
|
+
❌ "Should pass now" / "Looks correct"
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**Regression tests (TDD Red-Green):**
|
|
89
|
+
```
|
|
90
|
+
✅ Write → Run (pass) → Revert fix → Run (MUST FAIL) → Restore → Run (pass)
|
|
91
|
+
❌ "I've written a regression test" (without red-green verification)
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
**Build:**
|
|
95
|
+
```
|
|
96
|
+
✅ [Run build] [See: exit 0] "Build passes"
|
|
97
|
+
❌ "Linter passed" (linter doesn't check compilation)
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
**Requirements:**
|
|
101
|
+
```
|
|
102
|
+
✅ Re-read plan → Create checklist → Verify each → Report gaps or completion
|
|
103
|
+
❌ "Tests pass, phase complete"
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
**Agent delegation:**
|
|
107
|
+
```
|
|
108
|
+
✅ Agent reports success → Check VCS diff → Verify changes → Report actual state
|
|
109
|
+
❌ Trust agent report
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## Why This Matters
|
|
113
|
+
|
|
114
|
+
From 24 failure memories:
|
|
115
|
+
- your human partner said "I don't believe you" - trust broken
|
|
116
|
+
- Undefined functions shipped - would crash
|
|
117
|
+
- Missing requirements shipped - incomplete features
|
|
118
|
+
- Time wasted on false completion → redirect → rework
|
|
119
|
+
- Violates: "Honesty is a core value. If you lie, you'll be replaced."
|
|
120
|
+
|
|
121
|
+
## When To Apply
|
|
122
|
+
|
|
123
|
+
**ALWAYS before:**
|
|
124
|
+
- ANY variation of success/completion claims
|
|
125
|
+
- ANY expression of satisfaction
|
|
126
|
+
- ANY positive statement about work state
|
|
127
|
+
- Committing, PR creation, task completion
|
|
128
|
+
- Moving to next task
|
|
129
|
+
- Delegating to agents
|
|
130
|
+
|
|
131
|
+
**Rule applies to:**
|
|
132
|
+
- Exact phrases
|
|
133
|
+
- Paraphrases and synonyms
|
|
134
|
+
- Implications of success
|
|
135
|
+
- ANY communication suggesting completion/correctness
|
|
136
|
+
|
|
137
|
+
## The Bottom Line
|
|
138
|
+
|
|
139
|
+
**No shortcuts for verification.**
|
|
140
|
+
|
|
141
|
+
Run the command. Read the output. THEN claim the result.
|
|
142
|
+
|
|
143
|
+
This is non-negotiable.
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
# Arch Lens Panel — Canonical Protocol Reference
|
|
2
|
+
|
|
3
|
+
This document is the single source of truth for native architect panel orchestration in agent-bober.
|
|
4
|
+
It embeds the seven canonical arch lens focus fragments verbatim from
|
|
5
|
+
`src/orchestrator/arch-lenses.ts` (the `ARCH_LENS_CATALOG` literal) and documents the
|
|
6
|
+
CP2 synthesis panel and CP5 reconcile panel protocols.
|
|
7
|
+
The drift gate (`src/orchestrator/arch-lens-panel-parity.test.ts`) enforces byte-exact parity.
|
|
8
|
+
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
## Lens Focus Fragments
|
|
12
|
+
|
|
13
|
+
The following fragments are the exact strings returned by `resolveArchLensFocus(lens)` for each
|
|
14
|
+
built-in arch lens. They MUST remain byte-for-byte identical to the corresponding entries in
|
|
15
|
+
`ARCH_LENS_CATALOG` — the drift gate (`src/orchestrator/arch-lens-panel-parity.test.ts`) enforces this.
|
|
16
|
+
|
|
17
|
+
### scalability
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
Focus on whether the proposed architecture can handle projected load growth. Evaluate horizontal and vertical scaling paths, bottlenecks, stateful vs stateless components, and whether partitioning or sharding strategies are available when needed.
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
### security
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
Focus on the threat surface introduced by this architecture. Evaluate trust boundaries, data flows across zones, authentication and authorisation enforcement points, secrets management, and exposure of internal services.
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
### cost
|
|
30
|
+
|
|
31
|
+
```
|
|
32
|
+
Focus on the total cost of ownership implied by this architecture. Evaluate compute, storage, and egress costs at projected scale, licensing or SaaS subscription expenses, and the operational overhead of running, monitoring, and scaling the system.
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
### operability
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
Focus on how easy it will be to operate this architecture in production. Evaluate observability (metrics, logs, traces), deployment complexity, rollout and rollback procedures, on-call burden, and the blast radius of common failure modes.
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### maintainability
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
Focus on how easy it will be to change and extend this architecture over time. Evaluate coupling between components, clarity of boundaries, documentation needs, onboarding friction for new contributors, and the risk of accruing technical debt.
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### reversibility
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
Focus on how difficult or costly it would be to undo or replace this architectural decision. Evaluate lock-in to vendors or proprietary technologies, data migration complexity, and whether a strangler-fig or incremental migration path exists if the approach needs to change.
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
### simplicity
|
|
54
|
+
|
|
55
|
+
```
|
|
56
|
+
Focus on whether this is the simplest architecture that satisfies the Checkpoint 1 constraints. Challenge whether each component needs to exist, whether a native platform feature or an already-present dependency removes a proposed custom layer, whether two components should collapse into one, and whether any abstraction is speculative — added for a use case absent from the problem statement. Reward the smallest design that honours every hard constraint; penalise layers introduced for unproven future flexibility, but never at the expense of a stated constraint.
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
> The `simplicity` lens enforces the top rung of the YAGNI ladder at design time: "does this
|
|
60
|
+
> component need to exist at all?". It is constraint-bounded by construction — it may never
|
|
61
|
+
> recommend dropping a layer that a Checkpoint 1 hard constraint requires. This keeps it
|
|
62
|
+
> consistent with the architect's IRON LAW (every decision must cite the constraint that
|
|
63
|
+
> eliminates the rejected alternative): a simplification that violates a constraint is not simpler,
|
|
64
|
+
> it is wrong.
|
|
65
|
+
|
|
66
|
+
---
|
|
67
|
+
|
|
68
|
+
## Native Architect Panel Protocol
|
|
69
|
+
|
|
70
|
+
### CP2 Synthesis Panel
|
|
71
|
+
|
|
72
|
+
At Checkpoint 2 (candidate generation + scoring), the orchestrator runs the synthesis panel:
|
|
73
|
+
|
|
74
|
+
1. **Generate candidates:** The architect produces 2–3 candidate approaches that satisfy the
|
|
75
|
+
Checkpoint 1 constraints.
|
|
76
|
+
|
|
77
|
+
2. **Lens scorer fan-out (one per lens):** The orchestrator spawns one scorer subagent per
|
|
78
|
+
configured arch lens (scalability, security, cost, operability, maintainability, reversibility,
|
|
79
|
+
simplicity), bounded by `maxConcurrent`. Each scorer receives the same candidate set and is instructed to
|
|
80
|
+
score the candidates exclusively through its lens focus fragment (the exact string returned by
|
|
81
|
+
`resolveArchLensFocus(lens)` from `src/orchestrator/arch-lenses.ts`).
|
|
82
|
+
|
|
83
|
+
3. **Synthesis:** `synthesize()` in `src/orchestrator/synthesizer.ts` aggregates the per-lens
|
|
84
|
+
scores and produces a ranked winner with dissent. The highest-scoring approach across lenses
|
|
85
|
+
becomes the recommended architecture; any lens that preferred a different candidate is recorded
|
|
86
|
+
as a dissenting voice in the synthesis output.
|
|
87
|
+
|
|
88
|
+
### CP5 Reconcile Panel
|
|
89
|
+
|
|
90
|
+
At Checkpoint 5 (review pass), the orchestrator runs the reconcile panel:
|
|
91
|
+
|
|
92
|
+
1. **Lens reviewer fan-out (one per lens):** The orchestrator spawns one reviewer subagent per
|
|
93
|
+
configured arch lens. Each reviewer receives the assembled architecture document and ADRs, and
|
|
94
|
+
is instructed to produce a PASS/FAIL verdict exclusively through its lens focus fragment.
|
|
95
|
+
|
|
96
|
+
2. **Reconciliation — fail-closed on tie:** `reconcile()` in
|
|
97
|
+
`src/orchestrator/workflow/reconciler.ts` aggregates the per-lens verdicts using the following
|
|
98
|
+
semantics:
|
|
99
|
+
|
|
100
|
+
- **Inputs:** the array of per-lens `EvalResult` objects (`lensVerdicts`).
|
|
101
|
+
- **Require non-empty:** an empty array throws `"reconcile: lensVerdicts must be non-empty"`.
|
|
102
|
+
- **Vote count:** `passCount` = number of lenses where `passed === true`;
|
|
103
|
+
`failCount` = total − passCount.
|
|
104
|
+
- **Verdict:** `passed = passCount > failCount` (strict majority).
|
|
105
|
+
- **Fail-closed on tie:** when `passCount === failCount` the panel verdict is `false`.
|
|
106
|
+
- **Details:** union of all failing lens details, de-duplicated by `(criterion, message)` key.
|
|
107
|
+
- **Feedback:** failing lenses' feedback joined with `\n`; `"All lenses passed."` when all pass.
|
|
108
|
+
- **Summary:** `"Panel verdict: ${passCount}/${n} lenses passed"`.
|
|
109
|
+
- **Score:** `Math.round((100 * passCount) / n)`.
|
|
110
|
+
- **Evaluator tag:** `evaluator = "panel"`.
|
|
111
|
+
|
|
112
|
+
### lensVerdicts Output Shape
|
|
113
|
+
|
|
114
|
+
After reconciliation the orchestrator writes a `lensVerdicts` array into the saved result.
|
|
115
|
+
The array shape is:
|
|
116
|
+
|
|
117
|
+
```ts
|
|
118
|
+
lensVerdicts: Array<{
|
|
119
|
+
lens: string; // e.g. "scalability", "security", "cost", "operability", "maintainability", "reversibility", "simplicity"
|
|
120
|
+
passed: boolean; // individual lens verdict
|
|
121
|
+
summary: string; // per-lens summary from the scorer or reviewer subagent
|
|
122
|
+
}>
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
This field is optional and backward-compatible: results produced before the panel feature
|
|
126
|
+
(or by non-panel architect runs) simply omit it.
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# Lens Panel — Canonical Protocol Reference
|
|
2
|
+
|
|
3
|
+
This document is the single source of truth for native panel orchestration in agent-bober.
|
|
4
|
+
It embeds the five canonical lens focus fragments verbatim from
|
|
5
|
+
`src/orchestrator/eval-lenses.ts` (the `LENS_CATALOG` literal) and documents the
|
|
6
|
+
split fan-out, majority-vote/fail-closed reconciliation, and the `lensVerdicts` output shape.
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Lens Focus Fragments
|
|
11
|
+
|
|
12
|
+
The following fragments are the exact strings returned by `resolveLensFocus(lens)` for each
|
|
13
|
+
built-in lens. They MUST remain byte-for-byte identical to the corresponding entries in
|
|
14
|
+
`LENS_CATALOG` — the drift gate (`src/orchestrator/lens-panel-parity.test.ts`) enforces this.
|
|
15
|
+
|
|
16
|
+
### correctness
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
Focus on whether the implementation actually satisfies each success criterion verbatim. Check that all required behaviours exist, all edge cases are handled, and the contract's definitionOfDone is met.
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
### security
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
Focus on injection vulnerabilities, authentication and authorisation gaps, secret handling, unsafe input validation, and any path traversal or privilege escalation risks.
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### regression
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
Focus on whether previously working behaviour still works after the changes. Verify that pre-existing tests pass, that no public API or config interface was broken, and that the sprint diff does not silently remove functionality.
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
### quality
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
Focus on principles violations, dead code, misleading naming, smells, duplicated logic, and whether the implementation follows the project's established patterns and conventions.
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
### simplicity
|
|
41
|
+
|
|
42
|
+
```
|
|
43
|
+
Focus exclusively on over-engineering in the production code: logic that reinvents the standard library, dependencies or hand-rolled code doing what a native platform feature already provides, abstractions with a single implementation, configuration nobody reads, dead flexibility, and code expressible in materially fewer lines. For each, name the location, what to cut, and what replaces it. Never flag tests, assertion-based self-checks, input validation at trust boundaries, error handling, security measures, or accessibility as deletable — minimalism governs production code, never the verification or safety discipline.
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
> The `simplicity` lens is the complexity-only counterpart to `quality`. `quality` asks
|
|
47
|
+
> "does this follow our patterns and is it free of smells?"; `simplicity` asks "what can be
|
|
48
|
+
> deleted, replaced by stdlib/native, or shrunk?" — and is forbidden from ever recommending the
|
|
49
|
+
> removal of a test, a validation, or a safety measure. It pairs cleanly with the evaluator's
|
|
50
|
+
> test/verification Iron Law: minimalism governs what is built, never what is verified.
|
|
51
|
+
|
|
52
|
+
---
|
|
53
|
+
|
|
54
|
+
## Native Panel Protocol
|
|
55
|
+
|
|
56
|
+
### Split Fan-out
|
|
57
|
+
|
|
58
|
+
When the native panel is active, the orchestrator spawns evaluators in two passes:
|
|
59
|
+
|
|
60
|
+
1. **Deterministic evaluator (one instance):** runs the configured strategy suite exactly once
|
|
61
|
+
(build, typecheck, lint, unit-test, playwright, api-check, etc.). This produces the
|
|
62
|
+
deterministic verdict — objective, tool-based checks that do not depend on lens focus.
|
|
63
|
+
|
|
64
|
+
2. **Qualitative evaluators (one per configured lens):** each evaluator receives the same
|
|
65
|
+
sprint diff and context but is instructed to judge the contract's success criteria
|
|
66
|
+
exclusively through its lens focus fragment. The strategy suite is **not** re-run for
|
|
67
|
+
these evaluators — they perform qualitative assessment only, using the results already
|
|
68
|
+
collected by the deterministic evaluator as supporting context.
|
|
69
|
+
|
|
70
|
+
This split ensures strategies execute once (no duplicate CI cost) while each lens evaluates
|
|
71
|
+
the diff independently.
|
|
72
|
+
|
|
73
|
+
### Reconciliation — Majority Vote, Fail-Closed
|
|
74
|
+
|
|
75
|
+
The lens verdicts are reconciled by `reconcile()` in
|
|
76
|
+
`src/orchestrator/workflow/reconciler.ts` using the following semantics:
|
|
77
|
+
|
|
78
|
+
- **Inputs:** the array of per-lens `EvalResult` objects (`lensVerdicts`).
|
|
79
|
+
- **Require non-empty:** an empty array throws `"reconcile: lensVerdicts must be non-empty"`.
|
|
80
|
+
- **Vote count:** `passCount` = number of lenses where `passed === true`;
|
|
81
|
+
`failCount` = total − passCount.
|
|
82
|
+
- **Verdict:** `passed = passCount > failCount` (strict majority).
|
|
83
|
+
- **Fail-closed on tie:** when `passCount === failCount` the panel verdict is `false`.
|
|
84
|
+
- **Details:** union of all failing lens details, de-duplicated by `(criterion, message)` key.
|
|
85
|
+
- **Feedback:** failing lenses' feedback joined with `\n`; `"All lenses passed."` when all pass.
|
|
86
|
+
- **Summary:** `"Panel verdict: ${passCount}/${n} lenses passed"`.
|
|
87
|
+
- **Score:** `Math.round((100 * passCount) / n)`.
|
|
88
|
+
- **Evaluator tag:** `evaluator = "panel"`.
|
|
89
|
+
- **Timestamp:** echoed verbatim from the input argument (pure function, ADR-4).
|
|
90
|
+
|
|
91
|
+
### Combine
|
|
92
|
+
|
|
93
|
+
The final sprint verdict combines both passes:
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
final.passed = deterministic.passed && reconciled.passed
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Both must pass for the sprint to be accepted.
|
|
100
|
+
|
|
101
|
+
### lensVerdicts Output Shape
|
|
102
|
+
|
|
103
|
+
After reconciliation the orchestrator writes a `lensVerdicts` array into the saved
|
|
104
|
+
`EvalResult` JSON and sets `evaluator = "panel"`. The array shape is:
|
|
105
|
+
|
|
106
|
+
```ts
|
|
107
|
+
lensVerdicts: Array<{
|
|
108
|
+
lens: string; // e.g. "correctness", "security", "regression", "quality", "simplicity"
|
|
109
|
+
passed: boolean; // individual lens verdict
|
|
110
|
+
summary: string; // per-lens summary from the qualitative evaluator
|
|
111
|
+
}>
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
This field is optional and backward-compatible: eval results produced before the panel
|
|
115
|
+
feature (or by non-panel evaluators) simply omit it.
|