session-orchestrator 5.11.0 → 5.13.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 +12 -1
- package/.claude-plugin/plugin.json +4 -1
- package/.codex-plugin/agents/explorer.toml +1 -1
- package/.codex-plugin/agents/session-reviewer.toml +2 -2
- package/.codex-plugin/agents/wave-worker.toml +1 -1
- package/.codex-plugin/plugin.json +1 -1
- package/.cursor-plugin/plugin.json +1 -1
- package/.orchestrator/policy/blocked-commands.json +8 -0
- package/.orchestrator/policy/public-export.json +30 -0
- package/CHANGELOG.md +180 -3
- package/README.md +126 -117
- package/agents/analyst.md +7 -2
- package/agents/architect-reviewer.md +7 -2
- package/agents/code-implementer.md +4 -2
- package/agents/db-specialist.md +9 -2
- package/agents/dialectic-deriver.md +9 -3
- package/agents/docs-writer.md +7 -2
- package/agents/eval-judge.md +7 -1
- package/agents/qa-strategist.md +7 -2
- package/agents/security-reviewer.md +9 -2
- package/agents/session-reviewer.md +18 -2
- package/agents/skill-applied-judge.md +7 -1
- package/agents/test-writer.md +9 -2
- package/agents/ui-developer.md +9 -2
- package/agents/ux-evaluator.md +6 -1
- package/commands/session.md +4 -2
- package/commands/templates-ack.md +89 -18
- package/docs/agent-authoring.md +30 -11
- package/docs/ci-setup.md +38 -2
- package/docs/codex-setup.md +33 -9
- package/docs/components.md +13 -2
- package/docs/cursor-setup.md +3 -3
- package/docs/events-schema.md +5 -4
- package/docs/evidence-candidates.md +63 -0
- package/docs/fleet-checkin-audit.md +7 -4
- package/docs/github-mirror-protection.md +150 -3
- package/docs/install.md +102 -25
- package/docs/instruction-delivery.md +1 -1
- package/docs/migration-v4.md +2 -2
- package/docs/mods.md +118 -0
- package/docs/owner-config-schema.md +1 -0
- package/docs/plugin-architecture-v3.md +1 -1
- package/docs/pm-skills-marketplace.md +4 -3
- package/docs/rule-authoring.md +24 -13
- package/docs/scope-collision-guard.md +2 -1
- package/docs/session-config-reference.md +55 -21
- package/docs/session-config-template.md +32 -24
- package/docs/sessions-ledger-repair.md +137 -0
- package/docs/vault-docs-architecture.md +1 -1
- package/hooks/_lib/hook-import-set.json +406 -73
- package/hooks/_lib/hook-root.mjs +301 -0
- package/hooks/_lib/lock-bootstrap.mjs +434 -4
- package/hooks/_lib/orchestrator-ignore.mjs +3 -0
- package/hooks/_lib/subagent-transcript.mjs +2 -2
- package/hooks/_lib/vcs-create-matcher.mjs +13 -17
- package/hooks/cwd-change-restore.mjs +5 -1
- package/hooks/enforce-commands.mjs +4 -3
- package/hooks/enforce-scope.mjs +11 -1
- package/hooks/hooks-codex.json +48 -2
- package/hooks/hooks.json +31 -31
- package/hooks/on-session-end.mjs +38 -15
- package/hooks/on-session-start.mjs +158 -59
- package/hooks/on-stop.mjs +11 -6
- package/hooks/post-bash-issue-budget-refund.mjs +6 -1
- package/hooks/post-bash-write-verify.mjs +8 -4
- package/hooks/post-edit-validate.mjs +45 -52
- package/hooks/post-subagent-discovery-validator.mjs +2 -2
- package/hooks/post-tool-batch-wave-signal.mjs +8 -4
- package/hooks/post-tool-failure-corrective-context.mjs +5 -1
- package/hooks/pre-bash-destructive-guard.mjs +220 -8
- package/hooks/pre-bash-issue-budget.mjs +6 -1
- package/hooks/pre-bash-sessions-ledger-guard.mjs +691 -123
- package/hooks/pre-bash-staging-fence.mjs +258 -14
- package/hooks/pre-bash-templates-first.mjs +28 -27
- package/hooks/run-node.sh +1 -1
- package/hooks/skill-invocation-telemetry.mjs +15 -8
- package/hooks/subagent-telemetry.mjs +77 -14
- package/hooks/wave-scope-commit-guard.mjs +143 -14
- package/mods/so-hud/.claude-plugin/plugin.json +11 -0
- package/mods/so-hud/README.md +57 -0
- package/mods/so-hud/hooks/beacon-io.mjs +101 -0
- package/mods/so-hud/hooks/heredoc-scan.ts +394 -0
- package/mods/so-hud/hooks/hooks.json +1 -0
- package/mods/so-hud/hooks/logic.ts +182 -0
- package/mods/so-hud/hooks/register.tsx +670 -0
- package/mods/so-hud/hooks/rules.ts +2998 -0
- package/mods/so-hud/tsconfig.json +8 -0
- package/mods/so-hud/types/index.d.ts +36 -0
- package/package.json +4 -3
- package/rules/_index.md +1 -1
- package/rules/always-on/ask-via-tool.md +1 -1
- package/rules/always-on/loop-and-monitor.md +17 -194
- package/rules/always-on/parallel-sessions.md +3 -1
- package/rules/opt-in-stack/backend-data.md +1 -1
- package/rules/opt-in-stack/backend.md +1 -1
- package/rules/opt-in-stack/security-web.md +5 -1
- package/scripts/agent-usage-census.mjs +79 -0
- package/scripts/apply-session-learnings.mjs +34 -6
- package/scripts/archive-closed-prds.mjs +21 -5
- package/scripts/autopilot.mjs +11 -5
- package/scripts/backfill-abandoned-sessions.mjs +13 -3
- package/scripts/backfill-evidence-digest.mjs +2 -1
- package/scripts/backfill-learnings-from-vault.mjs +61 -6
- package/scripts/backfill-sessions.mjs +16 -2
- package/scripts/check-package-manager.mjs +26 -8
- package/scripts/check-sessions-integrity.mjs +4 -1
- package/scripts/ci/assert-vitest-green.mjs +3 -0
- package/scripts/ci/windows-smoke.mjs +201 -0
- package/scripts/close-precheck.mjs +55 -0
- package/scripts/dialectic-deriver.mjs +20 -12
- package/scripts/emit-event.mjs +2 -2
- package/scripts/emit-session.mjs +239 -20
- package/scripts/eval-session.mjs +17 -3
- package/scripts/export-hw-learnings.mjs +29 -2
- package/scripts/fleet-checkin-audit.mjs +8 -4
- package/scripts/fleet-checkin.mjs +73 -3
- package/scripts/gc-stale-worktrees.mjs +6 -1
- package/scripts/github-export.mjs +128 -0
- package/scripts/github-protection-audit.mjs +3 -1
- package/scripts/handover-queue-check.mjs +209 -0
- package/scripts/harness-audit.mjs +6 -4
- package/scripts/lib/agent-frontmatter.mjs +57 -10
- package/scripts/lib/agent-status.mjs +125 -7
- package/scripts/lib/agent-usage-census.mjs +394 -0
- package/scripts/lib/auto-dialectic.mjs +17 -10
- package/scripts/lib/auto-dream.mjs +22 -14
- package/scripts/lib/autopilot/loop.mjs +3 -1
- package/scripts/lib/autopilot/recent-runs.mjs +4 -2
- package/scripts/lib/autopilot/stall-sampler.mjs +2 -1
- package/scripts/lib/autopilot/telemetry.mjs +5 -1
- package/scripts/lib/autopilot/worktree-pipeline.mjs +5 -5
- package/scripts/lib/baseline-archetypes.mjs +10 -2
- package/scripts/lib/blocked-commands-policy.mjs +4 -3
- package/scripts/lib/build-live-signals.mjs +13 -9
- package/scripts/lib/ci-status-banner.mjs +329 -24
- package/scripts/lib/codex/plugin-contract.mjs +8 -0
- package/scripts/lib/cold-start-detector.mjs +5 -2
- package/scripts/lib/command-blocker.mjs +603 -43
- package/scripts/lib/common.mjs +3 -2
- package/scripts/lib/config/cross-repo.mjs +74 -7
- package/scripts/lib/config/host-paths.mjs +6 -2
- package/scripts/lib/config/remote-hosts.mjs +2 -2
- package/scripts/lib/config/section-extractor.mjs +65 -11
- package/scripts/lib/config/template-keys.mjs +153 -0
- package/scripts/lib/config/vault-integration.mjs +1 -0
- package/scripts/lib/config.mjs +3 -3
- package/scripts/lib/coordinator-snapshot.mjs +1 -1
- package/scripts/lib/discovery/triage-state.mjs +2 -1
- package/scripts/lib/dispatcher/rank.mjs +5 -7
- package/scripts/lib/ecosystem-health.mjs +2 -2
- package/scripts/lib/eval/engine.mjs +3 -2
- package/scripts/lib/eval/session-resolve.mjs +6 -2
- package/scripts/lib/eval/sink.mjs +4 -3
- package/scripts/lib/events-retention-banner.mjs +3 -2
- package/scripts/lib/events-schema.mjs +10 -0
- package/scripts/lib/events.mjs +23 -12
- package/scripts/lib/evolve/autonomy-verdict.mjs +4 -9
- package/scripts/lib/evolve/autopilot-effectiveness.mjs +8 -18
- package/scripts/lib/fleet-protocol.mjs +21 -0
- package/scripts/lib/gates/gate-full.mjs +172 -11
- package/scripts/lib/gates/gate-helpers.mjs +236 -23
- package/scripts/lib/git-config-drift.mjs +141 -7
- package/scripts/lib/github-export.mjs +447 -0
- package/scripts/lib/gitlab-portfolio/cli.mjs +16 -5
- package/scripts/lib/handover-queue-marks.mjs +159 -0
- package/scripts/lib/hardware-pattern-detector.mjs +103 -13
- package/scripts/lib/harness-audit/categories/category1.mjs +16 -4
- package/scripts/lib/harness-audit/categories/category4.mjs +11 -8
- package/scripts/lib/harness-audit/categories/category6.mjs +25 -5
- package/scripts/lib/harness-audit/categories/category9.mjs +10 -4
- package/scripts/lib/host-identity.mjs +9 -5
- package/scripts/lib/http-request.mjs +64 -0
- package/scripts/lib/instruction-budget-guard.mjs +30 -22
- package/scripts/lib/io.mjs +6 -3
- package/scripts/lib/issue-budget-reconcile.mjs +3 -2
- package/scripts/lib/issue-budget.mjs +36 -7
- package/scripts/lib/learnings/evidence-candidates.mjs +154 -0
- package/scripts/lib/learnings/expiry-sweep.mjs +99 -7
- package/scripts/lib/learnings/io.mjs +289 -15
- package/scripts/lib/learnings/select.mjs +53 -4
- package/scripts/lib/learnings/store-role.mjs +209 -0
- package/scripts/lib/learnings/surface.mjs +46 -7
- package/scripts/lib/ledger-path.mjs +113 -0
- package/scripts/lib/maintenance-due-banner.mjs +63 -12
- package/scripts/lib/memory-banner.mjs +5 -6
- package/scripts/lib/memory-proposals/collector.mjs +5 -2
- package/scripts/lib/memory-proposals/sink.mjs +7 -4
- package/scripts/lib/memory-proposals/store.mjs +22 -5
- package/scripts/lib/mode-selector-accuracy.mjs +2 -1
- package/scripts/lib/no-follow-open.mjs +57 -0
- package/scripts/lib/orphan-reaper/reaper-audit.mjs +4 -2
- package/scripts/lib/own-lock-root.mjs +95 -0
- package/scripts/lib/owner-interview.mjs +2 -1
- package/scripts/lib/owner-yaml.mjs +70 -7
- package/scripts/lib/platform.mjs +161 -9
- package/scripts/lib/plugin-update-banner.mjs +15 -11
- package/scripts/lib/pre-push-local-partial.mjs +117 -0
- package/scripts/lib/pre-push-remote-gate.mjs +151 -25
- package/scripts/lib/process-group.mjs +270 -34
- package/scripts/lib/project-hygiene.mjs +28 -0
- package/scripts/lib/quality-gate.mjs +33 -9
- package/scripts/lib/reconcile/backlog.mjs +29 -15
- package/scripts/lib/reconcile/engine.mjs +26 -2
- package/scripts/lib/reconcile/idempotency.mjs +65 -3
- package/scripts/lib/reconcile/rule-expiry-sweep.mjs +53 -12
- package/scripts/lib/reconcile/verdict-ledger.mjs +224 -0
- package/scripts/lib/reconcile-nudge-banner.mjs +40 -6
- package/scripts/lib/resource-probe/evaluate.mjs +32 -9
- package/scripts/lib/resource-probe/probe-platform.mjs +3 -1
- package/scripts/lib/rule-loader.mjs +20 -10
- package/scripts/lib/scope-baseline.mjs +123 -8
- package/scripts/lib/scope-echo.mjs +5 -2
- package/scripts/lib/scope-gate.mjs +55 -20
- package/scripts/lib/session-close-backfill.mjs +75 -7
- package/scripts/lib/session-end/close-precheck.mjs +151 -0
- package/scripts/lib/session-end/phase-skip.mjs +8 -7
- package/scripts/lib/session-end/tail-runner.mjs +7 -2
- package/scripts/lib/session-end/vault-orphans.mjs +205 -0
- package/scripts/lib/session-id.mjs +9 -1
- package/scripts/lib/session-identity/own-session.mjs +63 -0
- package/scripts/lib/session-invocation.mjs +14 -3
- package/scripts/lib/session-lock.mjs +114 -0
- package/scripts/lib/session-record-repair.mjs +245 -35
- package/scripts/lib/session-registry.mjs +85 -12
- package/scripts/lib/session-schema/constants.mjs +9 -0
- package/scripts/lib/session-schema/filters.mjs +56 -1
- package/scripts/lib/session-schema/validator.mjs +15 -5
- package/scripts/lib/session-start-probes.mjs +149 -22
- package/scripts/lib/session-token-rollup.mjs +2 -1
- package/scripts/lib/session-work-trees.mjs +166 -0
- package/scripts/lib/sessions-canonical.mjs +61 -3
- package/scripts/lib/sessions-integrity-banner.mjs +17 -39
- package/scripts/lib/sessions-staleness-banner.mjs +8 -5
- package/scripts/lib/sh-quote.mjs +1 -0
- package/scripts/lib/skill-evidence-window.mjs +5 -1
- package/scripts/lib/skill-health/join.mjs +10 -9
- package/scripts/lib/skill-invocations-schema.mjs +13 -0
- package/scripts/lib/skill-judgments-schema.mjs +6 -2
- package/scripts/lib/snapshot-probe.mjs +414 -0
- package/scripts/lib/so-hud/collect.mjs +174 -0
- package/scripts/lib/so-hud/runtime.mjs +87 -0
- package/scripts/lib/spiral-carryover.mjs +8 -1
- package/scripts/lib/state-md/frontmatter-mutators.mjs +266 -8
- package/scripts/lib/state-md/idle-reset.mjs +248 -0
- package/scripts/lib/state-md/mission-status.mjs +5 -1
- package/scripts/lib/state-md/recommendations.mjs +26 -4
- package/scripts/lib/state-md-peer-guard.mjs +2 -0
- package/scripts/lib/state-md.mjs +31 -8
- package/scripts/lib/sunset/walker.mjs +4 -3
- package/scripts/lib/telemetry/consent.mjs +4 -2
- package/scripts/lib/telemetry/queue.mjs +3 -3
- package/scripts/lib/telemetry/sync.mjs +45 -9
- package/scripts/lib/test-runner/artifact-paths.mjs +10 -2
- package/scripts/lib/tmux-layout/layouts.mjs +20 -3
- package/scripts/lib/ux-grill/paths.mjs +5 -1
- package/scripts/lib/validate/check-agents.mjs +37 -6
- package/scripts/lib/validate/check-component-paths.mjs +25 -1
- package/scripts/lib/validate/check-guard-requires-parity.mjs +3 -3
- package/scripts/lib/validate/check-hooks-symmetry.mjs +53 -32
- package/scripts/lib/validate/check-json-files.mjs +3 -1
- package/scripts/lib/validate/check-learning-provenance.mjs +3 -2
- package/scripts/lib/validate/check-learnings-shell-writes.mjs +10 -4
- package/scripts/lib/validate/check-metrics-ledger-root.mjs +234 -0
- package/scripts/lib/validate/check-owner-leakage.mjs +159 -11
- package/scripts/lib/validate/check-test-posix-shell.mjs +246 -0
- package/scripts/lib/validate/check-unwired-features.mjs +4 -2
- package/scripts/lib/validate/check-vcs-repo-flag-positional.mjs +58 -0
- package/scripts/lib/validate/check-vcs-repo-flag.mjs +259 -73
- package/scripts/lib/validate/check-workflow-continue-on-error.mjs +63 -0
- package/scripts/lib/validate/confidential-names.mjs +3 -1
- package/scripts/lib/vault-mirror/migrate-ids.mjs +321 -0
- package/scripts/lib/vault-mirror/namespace.mjs +22 -9
- package/scripts/lib/vault-mirror/process.mjs +197 -65
- package/scripts/lib/vault-mirror/prune.mjs +5 -2
- package/scripts/lib/vault-mirror/render-learnings.mjs +8 -7
- package/scripts/lib/vault-mirror/render-sessions.mjs +36 -53
- package/scripts/lib/vault-mirror/retention.mjs +2 -2
- package/scripts/lib/vault-mirror/utils.mjs +106 -13
- package/scripts/lib/vault-staleness-banner.mjs +4 -7
- package/scripts/lib/vault-status/board-writer.mjs +34 -5
- package/scripts/lib/vault-status/narrative-mirror.mjs +66 -7
- package/scripts/lib/wave-executor/foreign-dispatch.mjs +20 -0
- package/scripts/lib/win-process-tree.mjs +137 -0
- package/scripts/lib/workspace.mjs +1 -1
- package/scripts/lib/worktree/constants.mjs +1 -1
- package/scripts/lib/worktree/lifecycle.mjs +1 -1
- package/scripts/lib/worktree/listing.mjs +1 -1
- package/scripts/lib/zx.mjs +50 -0
- package/scripts/mcp-server.mjs +16 -7
- package/scripts/mcp-server.sh +13 -83
- package/scripts/measure-policy-cache-effectiveness.mjs +7 -5
- package/scripts/memory-propose.mjs +10 -3
- package/scripts/migrate-cold-start-seed.mjs +7 -0
- package/scripts/migrate-legacy-learnings.sh +22 -0
- package/scripts/migrate-sessions-jsonl.mjs +16 -2
- package/scripts/migrate-vault-paths.mjs +29 -13
- package/scripts/parse-config.mjs +71 -14
- package/scripts/print-learnings-index.mjs +25 -2
- package/scripts/release-session-lock.mjs +94 -7
- package/scripts/release.mjs +451 -24
- package/scripts/relocate-vault-corpus.mjs +11 -7
- package/scripts/repair-invalid-sessions.mjs +68 -3
- package/scripts/resolve-session-invocation.mjs +57 -8
- package/scripts/run-migrate-v2-cross-repo.mjs +56 -1
- package/scripts/run-quality-gate.mjs +33 -7
- package/scripts/self-update.mjs +56 -7
- package/scripts/session-commit-files.mjs +133 -0
- package/scripts/site-numbers.mjs +52 -9
- package/scripts/snapshot-probe.mjs +156 -0
- package/scripts/so-hud.mjs +68 -0
- package/scripts/state-md-idle-reset.mjs +82 -0
- package/scripts/sweep-expired-learnings.mjs +54 -6
- package/scripts/sweep-expired-rules.mjs +4 -1
- package/scripts/validate-plugin.mjs +22 -0
- package/scripts/vault-integration-watcher.mjs +54 -6
- package/scripts/vault-mirror.mjs +9 -0
- package/scripts/vault-orphans.mjs +171 -0
- package/skills/_shared/fleet-protocol.md +166 -3
- package/skills/_shared/instruction-file-resolution.md +1 -1
- package/skills/_shared/monitor-patterns.md +44 -25
- package/skills/_shared/platform-tools.md +7 -0
- package/skills/_shared/state-ownership.md +5 -4
- package/skills/architecture/references/domain-model.md +1 -1
- package/skills/autopilot/SKILL.md +3 -2
- package/skills/bootstrap/SKILL.md +3 -1
- package/skills/bootstrap/_shared-template.md +4 -4
- package/skills/bootstrap/fast-template.md +1 -1
- package/skills/bootstrap/private-contract.md +1 -1
- package/skills/bootstrap/references/bootstrap-retroactive-flow.md +17 -9
- package/skills/bootstrap/templates/agents/project-code-review.md +5 -1
- package/skills/bootstrap/templates/agents/project-discovery.md +5 -1
- package/skills/bootstrap/templates/agents/project-quality-gate.md +5 -1
- package/skills/claude-md-drift-check/SKILL.md +3 -3
- package/skills/claude-md-drift-check/checker.mjs +61 -101
- package/skills/close/SKILL.md +20 -7
- package/skills/discovery/probes/docs-staleness.mjs +7 -5
- package/skills/discovery/probes/frontend-slop.mjs +7 -3
- package/skills/discovery/probes/ssot-code-diff.mjs +5 -3
- package/skills/discovery/probes/supply-chain-slopcheck.mjs +10 -8
- package/skills/discovery/probes/vault-narrative-staleness.mjs +30 -10
- package/skills/discovery/probes/vault-staleness.mjs +5 -3
- package/skills/discovery/probes-session.md +3 -0
- package/skills/discovery/probes-vault.md +2 -0
- package/skills/dispatcher/SKILL.md +1 -1
- package/skills/eval/SKILL.md +3 -1
- package/skills/evolve/SKILL.md +2 -0
- package/skills/evolve/references/evolve-analyze-mode.md +3 -3
- package/skills/evolve/references/evolve-dialectic-mode.md +1 -1
- package/skills/gitlab-ops/SKILL.md +7 -6
- package/skills/gitlab-portfolio/SKILL.md +2 -2
- package/skills/go/SKILL.md +13 -1
- package/skills/npm-publish/SKILL.md +5 -2
- package/skills/plan/SKILL.md +23 -10
- package/skills/plan/mode-feature.md +13 -8
- package/skills/plan/mode-new.md +6 -14
- package/skills/plan/prd-feature-template.md +19 -0
- package/skills/plan/prd-full-template.md +12 -5
- package/skills/plan/prd-premortem-panel.md +48 -0
- package/skills/plan/prd-reviewer-prompt.md +11 -3
- package/skills/plan/soul.md +1 -1
- package/skills/portfolio/SKILL.md +5 -6
- package/skills/quality-gates/SKILL.md +2 -4
- package/skills/reconcile/SKILL.md +27 -4
- package/skills/release/SKILL.md +16 -8
- package/skills/session-end/SKILL.md +97 -13
- package/skills/session-end/phase-3-2-docs-verification.md +1 -0
- package/skills/session-end/phase-3-6-tail.md +11 -7
- package/skills/session-end/phase-3-7a-recommendations.md +9 -2
- package/skills/session-end/plan-verification.md +16 -1
- package/skills/session-end/references/phase-3-7e-vault-orphans.md +63 -0
- package/skills/session-end/references/phase-3-documentation-updates.md +25 -13
- package/skills/session-end/references/phase-5-issue-cleanup.md +1 -1
- package/skills/session-end/references/session-summary-template.md +8 -0
- package/skills/session-end/session-metrics-write.md +7 -4
- package/skills/session-plan/SKILL.md +5 -3
- package/skills/session-start/SKILL.md +10 -4
- package/skills/session-start/phase-4-5-resource-health.md +11 -5
- package/skills/session-start/phase-7-5-mode-selector.md +3 -1
- package/skills/session-start/phase-8-5-express-path.md +4 -3
- package/skills/session-start/references/phase-1-2-session-lock.md +7 -5
- package/skills/session-start/references/phase-1-5-session-continuity.md +13 -5
- package/skills/session-start/references/phase-1-7-vault-status-board.md +1 -1
- package/skills/session-start/references/phase-4-ssot-environment-check.md +3 -2
- package/skills/tmux-layout/SKILL.md +2 -2
- package/skills/vault-sync/validator.mjs +3 -2
- package/skills/wave-executor/SKILL.md +5 -4
- package/skills/wave-executor/references/wave-executor-state-init.md +3 -3
- package/skills/wave-executor/references/wave-loop-dispatch.md +11 -5
- package/skills/wave-executor/references/wave-loop-review.md +13 -5
- package/skills/wave-executor/references/wave-loop-scope-manifest.md +1 -1
- package/AGENTS.md +0 -207
- package/assets/og-card.png +0 -0
- package/assets/og-card.svg +0 -47
- package/assets/wave-lifecycle.svg +0 -98
package/AGENTS.md
DELETED
|
@@ -1,207 +0,0 @@
|
|
|
1
|
-
# Session Orchestrator Plugin
|
|
2
|
-
|
|
3
|
-
> Project-instruction file resolution: this is `CLAUDE.md` on Claude Code / Cursor IDE; the equivalent file on Codex CLI is `AGENTS.md`. See [skills/_shared/instruction-file-resolution.md](skills/_shared/instruction-file-resolution.md).
|
|
4
|
-
|
|
5
|
-
> Lean root by design (Anthropic large-codebase best-practice: root = pointers + critical gotchas). Delegated docs:
|
|
6
|
-
> - **Install, CLI usage, architecture, component inventory** → [`README.md`](./README.md) (full inventory: [`docs/components.md`](./docs/components.md))
|
|
7
|
-
> - **Plugin ↔ private baseline relationship** (what degrades without it, the public fallback) → [`docs/baseline.md`](./docs/baseline.md)
|
|
8
|
-
> - **Sub-agent authoring spec** (frontmatter, body, `sandbox-tier`, `output-schema`) → [`docs/agent-authoring.md`](./docs/agent-authoring.md) (moved out of `agents/` in 4.0.0 — the plugin loader registers every `agents/*.md` by directory convention, and the spec was dispatched as an agent 5× fleet-wide)
|
|
9
|
-
> - **Stable product/tech/structure context** → [`.orchestrator/steering/`](./.orchestrator/steering/) (injected at session-start Phase 2.6)
|
|
10
|
-
> - **Always-on + path-scoped rules** → [`.claude/rules/`](./.claude/rules/) (per-wave via `rule-loader.mjs`, #336/#694); authoring spec → [`docs/rule-authoring.md`](./docs/rule-authoring.md)
|
|
11
|
-
> - **Decisions log** (hand-authored) → [[01-projects/session-orchestrator/decisions]] in the Meta-Vault
|
|
12
|
-
> - **Session narrative** (machine-written by session-end Phase 3.7 via `scripts/lib/vault-status/narrative-mirror.mjs`) → `01-projects/session-orchestrator/_session-narrative.md`
|
|
13
|
-
> - **Operator tmux side-channel** → `/tmux-layout` (4-pane: STATE.md/CI-watch/events; [ADR-0007](docs/adr/0007-tmux-visualization-substrate.md))
|
|
14
|
-
>
|
|
15
|
-
> **Root `AGENTS.md` is GENERATED byte-identical from this file** (`node scripts/generate-agents-skills.mjs`) for harnesses that read only `AGENTS.md` (Codex CLI, OpenCode, Kiro, Cursor's AGENTS path). Never edit it; edit here and regenerate. `validate-plugin` fails on drift.
|
|
16
|
-
|
|
17
|
-
## Current State <!-- consistency:exempt:lean-root-pointer-section -->
|
|
18
|
-
|
|
19
|
-
State-free by design (see the **Live state is not in this file** gotcha below) — SSOTs:
|
|
20
|
-
- **Version + test/coverage** → README badges
|
|
21
|
-
- **Per-session metrics & history** → [`.orchestrator/metrics/sessions.jsonl`](./.orchestrator/metrics/sessions.jsonl)
|
|
22
|
-
- **Decisions** (hand-authored) → [[01-projects/session-orchestrator/decisions]] (Meta-Vault) · **Session narrative** (generated) → `_session-narrative.md` beside it
|
|
23
|
-
|
|
24
|
-
## Critical Gotchas <!-- consistency:exempt:lean-root-pointer-section -->
|
|
25
|
-
|
|
26
|
-
These are the non-obvious, mistake-causing facts that must load every session. Everything else is delegated above.
|
|
27
|
-
|
|
28
|
-
- **CI status is the source of truth at session-start** — never claim CI green from `npm test` alone (8-pipeline silent regression 2026-05-09 → 2026-05-10, fixed in deep-2); Phase 4 🚨 banner `checkCiStatus({ repoRoot })` in `scripts/lib/ci-status-banner.mjs`; see `skills/session-start/references/phase-4-ssot-environment-check.md` (incident: ADR-0006). <!-- consistency:exempt:runtime-only -->
|
|
29
|
-
- **Destructive-Command Guard** (`hooks/pre-bash-destructive-guard.mjs`, `.orchestrator/policy/blocked-commands.json`: 12 block / 4 warn of 16 rules) is live on Claude Code + Cursor/Pi bridges, instruction-only on Codex. PSA-003 (`parallel-sessions.md`); bypass `allow-destructive-ops: true`; long form incl. #1401: `docs/session-config-reference.md`. <!-- consistency:exempt:runtime-only -->
|
|
30
|
-
- **Session Config below is runtime-critical.** `scripts/parse-config.mjs` parses the `## Session Config` block; `claude-md-drift-check` Check 6 enforces top-level-key parity against `docs/session-config-template.md`. Edit it like code, not prose — a dropped key changes runtime behaviour.
|
|
31
|
-
- **Live state is not in this file.** Stack: Node 24+, vitest, ESLint 10 (`npm ci` after clone). Test counts, backlog, version, component inventory drift fast — the SSOT is README badges + `.orchestrator/metrics/sessions.jsonl`. Per-session detail lives in the Meta-Vault decisions log (linked above), not here.
|
|
32
|
-
- **`memory.propose` requires `SO_WAVE_AGENT=1`** — `scripts/memory-propose.mjs` exits 3 from the coordinator thread (use `/evolve`); wave-executor sets it per dispatched agent. Statuses: queued 0 · dry-run-ok 0 · quota-exceeded 1 · rejected-low-confidence 2 · rejected-wrong-context 3 · error 4 — `docs/session-config-reference.md` § Memory Proposals. <!-- consistency:exempt:runtime-only -->
|
|
33
|
-
- **Auto-promoted worktree cleanup keys on the `.orchestrator/promoted-from.json` marker, not on session-id coincidence (#1069)** — promotion is a process boundary (ADR-0013), so `detectAutoPromotedWorktree()` tries the marker first (`source: 'marker'`) and falls back to the `<repo>-<sessionId>` basename only for pre-marker worktrees.
|
|
34
|
-
`/close` Phase 4a runs AFTER Phase 4 commit+push (#490): clean → auto-remove with WARN, dirty → AUQ `[Behalten/Löschen/Manuell]`; Hybrid Pattern (Anthropic-style, ADR-0008), PSA-003. Long form: `skills/session-end/references/phase-4a-worktree-cleanup.md`. <!-- consistency:exempt:runtime-only -->
|
|
35
|
-
- **`allowedPaths` is COMPUTED, and the scope declaration has TWO shapes — writing only one is the silent failure (#1020).** (a) per-agent `<state-dir>/filescopes/wave-<N>/<agent-id>.json` (path strings = `$AGENT_FILESCOPE_JSON`: FILE-SCOPE injection, Learnings-Index, `--assert-subset`); (b) per-wave `{id, files}` records, the only input of `--assert-disjoint`/`--union`.
|
|
36
|
-
`node scripts/materialize-wave-scope.mjs --state-dir <state-dir> --wave <N>` writes both; fold `coordinator.json` into (b). Skipping (a) = signal-free ALLOW (2026-08-19: six waves, ~27 dispatches, zero injection). Long form: `docs/scope-collision-guard.md` § The two-shape trap; `skills/wave-executor/references/wave-loop-scope-manifest.md` § 3.1/3.2. <!-- consistency:exempt:runtime-only -->
|
|
37
|
-
- **`vault-dir` resolves HOST-LOCALLY** (`SO_VAULT_DIR` > `owner.yaml` > committed `vault-integration.vault-dir`, `scripts/lib/config/host-paths.mjs`) — a hand-run vault writer with a synthetic `repoRoot` still writes into the REAL vault; export `SO_VAULT_DIR=<tmpdir>` before any manual invocation. Detail: `docs/session-config-reference.md` (#1448). <!-- consistency:exempt:runtime-only -->
|
|
38
|
-
|
|
39
|
-
## Session Config
|
|
40
|
-
|
|
41
|
-
persistence: true
|
|
42
|
-
enforcement: warn
|
|
43
|
-
agents-per-wave: 6 (deep: 18)
|
|
44
|
-
waves: 5
|
|
45
|
-
recent-commits: 20
|
|
46
|
-
test-command: npm test
|
|
47
|
-
typecheck-command: npm run typecheck
|
|
48
|
-
lint-command: npm run lint
|
|
49
|
-
stale-branch-days: 7
|
|
50
|
-
plugin-freshness-days: 30
|
|
51
|
-
plan-baseline-path: OVERRIDE-IN-owner.yaml # placeholder, NOT a real path — resolve host-locally
|
|
52
|
-
plan-prd-location: docs/prd
|
|
53
|
-
plan-retro-location: docs/retro
|
|
54
|
-
plan-default-visibility: internal
|
|
55
|
-
vcs: gitlab
|
|
56
|
-
auto-skill-dispatch: false
|
|
57
|
-
vault-integration:
|
|
58
|
-
enabled: true
|
|
59
|
-
vault-dir: ~/Projects/vault
|
|
60
|
-
mode: warn
|
|
61
|
-
vault-name:
|
|
62
|
-
docs-orchestrator:
|
|
63
|
-
enabled: false
|
|
64
|
-
audiences: [user, dev, vault]
|
|
65
|
-
mode: warn
|
|
66
|
-
vault-staleness:
|
|
67
|
-
enabled: false
|
|
68
|
-
thresholds:
|
|
69
|
-
top: 30
|
|
70
|
-
active: 60
|
|
71
|
-
archived: 180
|
|
72
|
-
mode: warn
|
|
73
|
-
docs-staleness:
|
|
74
|
-
enabled: false
|
|
75
|
-
thresholds:
|
|
76
|
-
living: 90
|
|
77
|
-
mode: warn
|
|
78
|
-
moc-staleness:
|
|
79
|
-
enabled: false
|
|
80
|
-
thresholds:
|
|
81
|
-
moc: 90
|
|
82
|
-
mode: warn
|
|
83
|
-
context-coverage:
|
|
84
|
-
enabled: false
|
|
85
|
-
mode: warn
|
|
86
|
-
worktree-orphans:
|
|
87
|
-
enabled: false
|
|
88
|
-
base-branch: main
|
|
89
|
-
mode: warn
|
|
90
|
-
drift-check:
|
|
91
|
-
enabled: true
|
|
92
|
-
mode: warn
|
|
93
|
-
check-docs-parity: true
|
|
94
|
-
wave-reviewers:
|
|
95
|
-
enabled: false
|
|
96
|
-
reviewers: []
|
|
97
|
-
mode: warn
|
|
98
|
-
memory-cleanup-soft-limit: 180
|
|
99
|
-
vault-mirror:
|
|
100
|
-
quality:
|
|
101
|
-
min-narrative-chars: 400
|
|
102
|
-
min-confidence: 0.5
|
|
103
|
-
memory:
|
|
104
|
-
banner:
|
|
105
|
-
enabled: true
|
|
106
|
-
proposals:
|
|
107
|
-
enabled: true
|
|
108
|
-
quota-per-wave: 5
|
|
109
|
-
confidence-floor: 0.5
|
|
110
|
-
auto-dream:
|
|
111
|
-
min-confidence: 0.5
|
|
112
|
-
cold-start:
|
|
113
|
-
enabled: true
|
|
114
|
-
nudge-after-hours: 1
|
|
115
|
-
silence-after-sessions: 1
|
|
116
|
-
state-md-lock:
|
|
117
|
-
enabled: true
|
|
118
|
-
timeout-ms: 10000
|
|
119
|
-
handover-gate:
|
|
120
|
-
enabled: true
|
|
121
|
-
max-open-questions: 3
|
|
122
|
-
issue-budget:
|
|
123
|
-
max-per-session: 12
|
|
124
|
-
mode: strict
|
|
125
|
-
overflow: collect-issue
|
|
126
|
-
broken-window-budget:
|
|
127
|
-
enabled: false
|
|
128
|
-
due-days: 7
|
|
129
|
-
slopcheck:
|
|
130
|
-
enabled: false
|
|
131
|
-
sources: [plan, discovery]
|
|
132
|
-
templates-first:
|
|
133
|
-
enabled: true
|
|
134
|
-
hosts: [github, gitlab]
|
|
135
|
-
verification-auto-fix:
|
|
136
|
-
enabled: false
|
|
137
|
-
max-retries: 2
|
|
138
|
-
discovery-validator:
|
|
139
|
-
enabled: false
|
|
140
|
-
frontend-slop-hook:
|
|
141
|
-
enabled: false
|
|
142
|
-
loop-guard:
|
|
143
|
-
enabled: true
|
|
144
|
-
threshold: 3
|
|
145
|
-
window: 5
|
|
146
|
-
instruction-budget:
|
|
147
|
-
enabled: true
|
|
148
|
-
ceiling: 480
|
|
149
|
-
mode: warn
|
|
150
|
-
config-protection:
|
|
151
|
-
enabled: true
|
|
152
|
-
mode: warn
|
|
153
|
-
allow-config-weakening: false
|
|
154
|
-
custom-phases:
|
|
155
|
-
- name: archive-closed-prds
|
|
156
|
-
when: both
|
|
157
|
-
command: node scripts/archive-closed-prds.mjs --apply
|
|
158
|
-
mode: warn
|
|
159
|
-
- name: archive-closed-plans
|
|
160
|
-
when: both
|
|
161
|
-
command: node scripts/archive-closed-prds.mjs --apply --prd-dir docs/plans --vault-subdir 01-projects/session-orchestrator/plans
|
|
162
|
-
mode: warn
|
|
163
|
-
remote-hosts:
|
|
164
|
-
- alias: m5
|
|
165
|
-
roles-allowed: [test, ui, perf]
|
|
166
|
-
- alias: m5-remote
|
|
167
|
-
roles-allowed: [test, ui, perf]
|
|
168
|
-
evolve:
|
|
169
|
-
extra-sources: []
|
|
170
|
-
dialectic:
|
|
171
|
-
cadence: 5
|
|
172
|
-
model: haiku
|
|
173
|
-
budget-tokens: 32000
|
|
174
|
-
eval:
|
|
175
|
-
enabled: true
|
|
176
|
-
mode: warn
|
|
177
|
-
judge: off
|
|
178
|
-
report: html
|
|
179
|
-
handle:
|
|
180
|
-
reconcile:
|
|
181
|
-
enabled: false
|
|
182
|
-
mode: warn
|
|
183
|
-
targets: [repo-local]
|
|
184
|
-
rule-expiry-days: null
|
|
185
|
-
confidence-floor: 0.5
|
|
186
|
-
min-rule-days: 7
|
|
187
|
-
min-insight-chars: 24
|
|
188
|
-
|
|
189
|
-
## Skill Evolution <!-- consistency:exempt:parity-exempt-skill-evolution-block -->
|
|
190
|
-
|
|
191
|
-
> Opt-in self-evolution autonomy gate (Epic #643). A DISTINCT top-level block from the `evolve:` Session Config key above — `scripts/lib/config/skill-evolution.mjs` parses it independently of the `## Session Config` boundary, so `claude-md-drift-check` Check 6 (session-config-parity) never flags it.
|
|
192
|
-
> See `docs/session-config-reference.md` § Skill Evolution for the #652 activation history, the C2/H1-guard detail, and the quadruple-gate + MR-only rules.
|
|
193
|
-
|
|
194
|
-
skill-evolution:
|
|
195
|
-
autonomy: autonomous-gated # off | advisory | autonomous-gated — armed (#652)
|
|
196
|
-
evidence-floor: 0.5 # float 0.0..1.0 — min evidence before an autonomous-gated repair acts
|
|
197
|
-
judge: off # opt-in session-end LLM-judge (advisory only); default off
|
|
198
|
-
|
|
199
|
-
## Dispatcher Autonomy <!-- consistency:exempt:parity-exempt-dispatcher-autonomy-block -->
|
|
200
|
-
|
|
201
|
-
> **Parity-exempt section** (Epic #673, #679). Intentionally OUTSIDE `## Session Config` so `claude-md-drift-check` Check-6 (session-config-parity) does not flag repos that have not adopted this feature — `scripts/lib/config/dispatcher-autonomy.mjs` parses it independently.
|
|
202
|
-
> This block's committed presence is itself the never-re-ask marker (session-start Phase 1.1 migration trigger). Effective autonomy resolves host-locally: env > `owner.yaml` > committed > `off`.
|
|
203
|
-
> See `docs/session-config-reference.md` § Dispatcher Autonomy for the #681 capture history and the full precedence chain.
|
|
204
|
-
|
|
205
|
-
dispatcher-autonomy:
|
|
206
|
-
autonomy: off # off | advisory | autonomous-gated — default off (fail-closed)
|
|
207
|
-
confidence-floor: 0.5 # float 0.0..1.0
|
package/assets/og-card.png
DELETED
|
Binary file
|
package/assets/og-card.svg
DELETED
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1280 640" role="img" aria-label="Session Orchestrator">
|
|
2
|
-
<title>Session Orchestrator</title>
|
|
3
|
-
<desc>Wave-based Claude Code sessions with quality gates</desc>
|
|
4
|
-
|
|
5
|
-
<!-- Background: GitHub-dark -->
|
|
6
|
-
<rect width="1280" height="640" fill="#0d1117"/>
|
|
7
|
-
|
|
8
|
-
<!-- Subtle gradient accent in top-right -->
|
|
9
|
-
<defs>
|
|
10
|
-
<radialGradient id="accent" cx="80%" cy="20%" r="50%">
|
|
11
|
-
<stop offset="0%" stop-color="#1f6feb" stop-opacity="0.18"/>
|
|
12
|
-
<stop offset="100%" stop-color="#0d1117" stop-opacity="0"/>
|
|
13
|
-
</radialGradient>
|
|
14
|
-
<linearGradient id="waveStroke" x1="0" y1="0" x2="1" y2="0">
|
|
15
|
-
<stop offset="0%" stop-color="#1f6feb" stop-opacity="0.55"/>
|
|
16
|
-
<stop offset="50%" stop-color="#238636" stop-opacity="0.55"/>
|
|
17
|
-
<stop offset="100%" stop-color="#d29922" stop-opacity="0.55"/>
|
|
18
|
-
</linearGradient>
|
|
19
|
-
</defs>
|
|
20
|
-
<rect width="1280" height="640" fill="url(#accent)"/>
|
|
21
|
-
|
|
22
|
-
<!-- Five wave glyphs as watermark (echo of icon.svg motif) on right side -->
|
|
23
|
-
<g transform="translate(740, 140)" opacity="0.85">
|
|
24
|
-
<path d="M 0 40 Q 100 0 200 40 T 400 40" fill="none" stroke="url(#waveStroke)" stroke-width="10" stroke-linecap="round"/>
|
|
25
|
-
<path d="M 0 110 Q 100 70 200 110 T 400 110" fill="none" stroke="url(#waveStroke)" stroke-width="10" stroke-linecap="round"/>
|
|
26
|
-
<path d="M 0 180 Q 100 140 200 180 T 400 180" fill="none" stroke="url(#waveStroke)" stroke-width="10" stroke-linecap="round"/>
|
|
27
|
-
<path d="M 0 250 Q 100 210 200 250 T 400 250" fill="none" stroke="url(#waveStroke)" stroke-width="10" stroke-linecap="round"/>
|
|
28
|
-
<path d="M 0 320 Q 100 280 200 320 T 400 320" fill="none" stroke="url(#waveStroke)" stroke-width="10" stroke-linecap="round"/>
|
|
29
|
-
</g>
|
|
30
|
-
|
|
31
|
-
<!-- Title block (left-aligned) -->
|
|
32
|
-
<g font-family="system-ui, -apple-system, Segoe UI, Roboto, sans-serif">
|
|
33
|
-
<!-- Eyebrow -->
|
|
34
|
-
<text x="80" y="170" font-size="24" font-weight="500" fill="#7d8590" letter-spacing="4">CLAUDE CODE PLUGIN</text>
|
|
35
|
-
|
|
36
|
-
<!-- Title -->
|
|
37
|
-
<text x="80" y="265" font-size="80" font-weight="700" fill="#f0f6fc">Session</text>
|
|
38
|
-
<text x="80" y="355" font-size="80" font-weight="700" fill="#f0f6fc">Orchestrator</text>
|
|
39
|
-
|
|
40
|
-
<!-- Subtitle -->
|
|
41
|
-
<text x="80" y="430" font-size="32" font-weight="400" fill="#c9d1d9">Wave-based Claude Code sessions</text>
|
|
42
|
-
<text x="80" y="472" font-size="32" font-weight="400" fill="#c9d1d9">with quality gates</text>
|
|
43
|
-
|
|
44
|
-
<!-- Footer -->
|
|
45
|
-
<text x="80" y="570" font-size="24" font-weight="400" fill="#7d8590">Claude Code · Codex CLI · Cursor IDE · MIT</text>
|
|
46
|
-
</g>
|
|
47
|
-
</svg>
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1062 372" width="1062" height="372" role="img" aria-labelledby="wl-title wl-desc" font-family="system-ui, -apple-system, 'Segoe UI', Roboto, Helvetica, Arial, sans-serif">
|
|
2
|
-
<title id="wl-title">Session Orchestrator wave lifecycle</title>
|
|
3
|
-
<desc id="wl-desc">Flow diagram. Precondition: /bootstrap runs once per repository, then /session agrees the scope, then /go executes. /go runs five typed waves left to right: 1 Discovery (read-only audit), gate G1, 2 Impl-Core (primary code), gate G2, 3 Impl-Polish (integration and edge cases), gate G3, 4 Quality (simplification pass, then tests), gate G4 Full Gate, 5 Finalization (commit and close). Gates G1 to G3 are Quality-Lite (typecheck, lint, test); G4 is the Full Gate and additionally runs the full suite plus a debug-artifact scan. After wave 5, /close verifies every planned item, runs the Full Gate, files carryover issues, commits, and writes the session record.</desc>
|
|
4
|
-
|
|
5
|
-
<defs>
|
|
6
|
-
<marker id="wl-arrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse">
|
|
7
|
-
<path d="M 0 0 L 10 5 L 0 10 z" fill="#94A3B8"/>
|
|
8
|
-
</marker>
|
|
9
|
-
</defs>
|
|
10
|
-
|
|
11
|
-
<!-- heading -->
|
|
12
|
-
<rect x="28" y="16" width="430" height="32" rx="6" fill="#1E293B"/>
|
|
13
|
-
<text x="44" y="37" font-size="14" font-weight="600" fill="#F8FAFC">Session Orchestrator — wave lifecycle and gates</text>
|
|
14
|
-
|
|
15
|
-
<!-- row A: the three commands -->
|
|
16
|
-
<rect x="28" y="68" width="196" height="48" rx="8" fill="#475569"/>
|
|
17
|
-
<text x="126" y="90" font-size="14" font-weight="600" fill="#F8FAFC" text-anchor="middle">/bootstrap</text>
|
|
18
|
-
<text x="126" y="106" font-size="11" fill="#E2E8F0" text-anchor="middle">once per repo — writes bootstrap.lock</text>
|
|
19
|
-
|
|
20
|
-
<line x1="228" y1="92" x2="248" y2="92" stroke="#94A3B8" stroke-width="2" marker-end="url(#wl-arrow)"/>
|
|
21
|
-
|
|
22
|
-
<rect x="252" y="68" width="196" height="48" rx="8" fill="#1F6FEB"/>
|
|
23
|
-
<text x="350" y="90" font-size="14" font-weight="600" fill="#FFFFFF" text-anchor="middle">/session [type]</text>
|
|
24
|
-
<text x="350" y="106" font-size="11" fill="#DBEAFE" text-anchor="middle">research + Q&A — agree the scope</text>
|
|
25
|
-
|
|
26
|
-
<line x1="452" y1="92" x2="472" y2="92" stroke="#94A3B8" stroke-width="2" marker-end="url(#wl-arrow)"/>
|
|
27
|
-
|
|
28
|
-
<rect x="476" y="68" width="140" height="48" rx="8" fill="#1F6FEB"/>
|
|
29
|
-
<text x="546" y="90" font-size="14" font-weight="600" fill="#FFFFFF" text-anchor="middle">/go</text>
|
|
30
|
-
<text x="546" y="106" font-size="11" fill="#DBEAFE" text-anchor="middle">executes the waves</text>
|
|
31
|
-
|
|
32
|
-
<!-- /go down into wave 1 -->
|
|
33
|
-
<polyline points="546,116 546,134 93,134 93,146" fill="none" stroke="#94A3B8" stroke-width="2" marker-end="url(#wl-arrow)"/>
|
|
34
|
-
|
|
35
|
-
<!-- row B: waves and gates -->
|
|
36
|
-
<rect x="28" y="150" width="130" height="76" rx="8" fill="#0F766E"/>
|
|
37
|
-
<text x="93" y="180" font-size="13" font-weight="600" fill="#FFFFFF" text-anchor="middle">1 · Discovery</text>
|
|
38
|
-
<text x="93" y="198" font-size="11" fill="#CCFBF1" text-anchor="middle">read-only audit</text>
|
|
39
|
-
<text x="93" y="213" font-size="11" fill="#CCFBF1" text-anchor="middle">no writes</text>
|
|
40
|
-
|
|
41
|
-
<line x1="160" y1="188" x2="170" y2="188" stroke="#94A3B8" stroke-width="2" marker-end="url(#wl-arrow)"/>
|
|
42
|
-
<rect x="172" y="166" width="56" height="44" rx="6" fill="#64748B"/>
|
|
43
|
-
<text x="200" y="185" font-size="13" font-weight="700" fill="#FFFFFF" text-anchor="middle">G1</text>
|
|
44
|
-
<text x="200" y="200" font-size="9" fill="#F1F5F9" text-anchor="middle">lite</text>
|
|
45
|
-
|
|
46
|
-
<line x1="230" y1="188" x2="240" y2="188" stroke="#94A3B8" stroke-width="2" marker-end="url(#wl-arrow)"/>
|
|
47
|
-
<rect x="242" y="150" width="130" height="76" rx="8" fill="#1F6FEB"/>
|
|
48
|
-
<text x="307" y="180" font-size="13" font-weight="600" fill="#FFFFFF" text-anchor="middle">2 · Impl-Core</text>
|
|
49
|
-
<text x="307" y="198" font-size="11" fill="#DBEAFE" text-anchor="middle">primary code</text>
|
|
50
|
-
<text x="307" y="213" font-size="11" fill="#DBEAFE" text-anchor="middle">architecture first</text>
|
|
51
|
-
|
|
52
|
-
<line x1="374" y1="188" x2="384" y2="188" stroke="#94A3B8" stroke-width="2" marker-end="url(#wl-arrow)"/>
|
|
53
|
-
<rect x="386" y="166" width="56" height="44" rx="6" fill="#64748B"/>
|
|
54
|
-
<text x="414" y="185" font-size="13" font-weight="700" fill="#FFFFFF" text-anchor="middle">G2</text>
|
|
55
|
-
<text x="414" y="200" font-size="9" fill="#F1F5F9" text-anchor="middle">lite</text>
|
|
56
|
-
|
|
57
|
-
<line x1="444" y1="188" x2="454" y2="188" stroke="#94A3B8" stroke-width="2" marker-end="url(#wl-arrow)"/>
|
|
58
|
-
<rect x="456" y="150" width="130" height="76" rx="8" fill="#3B82F6"/>
|
|
59
|
-
<text x="521" y="180" font-size="13" font-weight="600" fill="#FFFFFF" text-anchor="middle">3 · Impl-Polish</text>
|
|
60
|
-
<text x="521" y="198" font-size="11" fill="#EFF6FF" text-anchor="middle">integration</text>
|
|
61
|
-
<text x="521" y="213" font-size="11" fill="#EFF6FF" text-anchor="middle">edge cases</text>
|
|
62
|
-
|
|
63
|
-
<line x1="588" y1="188" x2="598" y2="188" stroke="#94A3B8" stroke-width="2" marker-end="url(#wl-arrow)"/>
|
|
64
|
-
<rect x="600" y="166" width="56" height="44" rx="6" fill="#64748B"/>
|
|
65
|
-
<text x="628" y="185" font-size="13" font-weight="700" fill="#FFFFFF" text-anchor="middle">G3</text>
|
|
66
|
-
<text x="628" y="200" font-size="9" fill="#F1F5F9" text-anchor="middle">lite</text>
|
|
67
|
-
|
|
68
|
-
<line x1="658" y1="188" x2="668" y2="188" stroke="#94A3B8" stroke-width="2" marker-end="url(#wl-arrow)"/>
|
|
69
|
-
<rect x="670" y="150" width="130" height="76" rx="8" fill="#7C3AED"/>
|
|
70
|
-
<text x="735" y="180" font-size="13" font-weight="600" fill="#FFFFFF" text-anchor="middle">4 · Quality</text>
|
|
71
|
-
<text x="735" y="198" font-size="11" fill="#EDE9FE" text-anchor="middle">simplify first,</text>
|
|
72
|
-
<text x="735" y="213" font-size="11" fill="#EDE9FE" text-anchor="middle">then write tests</text>
|
|
73
|
-
|
|
74
|
-
<line x1="802" y1="188" x2="812" y2="188" stroke="#94A3B8" stroke-width="2" marker-end="url(#wl-arrow)"/>
|
|
75
|
-
<rect x="814" y="160" width="76" height="56" rx="6" fill="#D29922"/>
|
|
76
|
-
<text x="852" y="182" font-size="13" font-weight="700" fill="#1F2937" text-anchor="middle">G4</text>
|
|
77
|
-
<text x="852" y="199" font-size="10" font-weight="600" fill="#1F2937" text-anchor="middle">Full Gate</text>
|
|
78
|
-
|
|
79
|
-
<line x1="892" y1="188" x2="902" y2="188" stroke="#94A3B8" stroke-width="2" marker-end="url(#wl-arrow)"/>
|
|
80
|
-
<rect x="904" y="150" width="130" height="76" rx="8" fill="#238636"/>
|
|
81
|
-
<text x="969" y="180" font-size="13" font-weight="600" fill="#FFFFFF" text-anchor="middle">5 · Finalization</text>
|
|
82
|
-
<text x="969" y="198" font-size="11" fill="#DCFCE7" text-anchor="middle">commit + close</text>
|
|
83
|
-
|
|
84
|
-
<!-- gate legend -->
|
|
85
|
-
<rect x="28" y="246" width="880" height="30" rx="6" fill="#1E293B"/>
|
|
86
|
-
<text x="44" y="266" font-size="11" fill="#CBD5E1">G1–G3 = Quality-Lite gate (typecheck · lint · test) + inter-wave session-reviewer · G4 = Full Gate (adds the full suite and a debug-artifact scan)</text>
|
|
87
|
-
|
|
88
|
-
<!-- wave 5 down into /close -->
|
|
89
|
-
<polyline points="969,228 969,296" fill="none" stroke="#94A3B8" stroke-width="2" marker-end="url(#wl-arrow)"/>
|
|
90
|
-
|
|
91
|
-
<!-- row C -->
|
|
92
|
-
<rect x="28" y="300" width="862" height="48" rx="8" fill="#334155"/>
|
|
93
|
-
<text x="44" y="321" font-size="12" font-weight="600" fill="#F8FAFC">After the last wave: every planned item is verified against evidence, the Full Gate runs once more,</text>
|
|
94
|
-
<text x="44" y="338" font-size="12" font-weight="600" fill="#F8FAFC">unfinished work becomes carryover issues, files are staged individually, the session record is written.</text>
|
|
95
|
-
|
|
96
|
-
<rect x="904" y="300" width="130" height="48" rx="8" fill="#238636"/>
|
|
97
|
-
<text x="969" y="330" font-size="14" font-weight="600" fill="#FFFFFF" text-anchor="middle">/close</text>
|
|
98
|
-
</svg>
|