forge-workflow 0.0.10 → 0.1.0-beta.2
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/rules/{greptile-review-process.md → review-process.md} +56 -41
- package/.claude/scripts/{greptile-resolve.sh → review-resolve.sh} +13 -3
- package/.cursor/rules/permissions-guidance.mdc +2 -2
- package/.forge/hooks/check-tdd.js +3 -0
- package/.forge/hooks/forge-native-hook.js +245 -0
- package/.forge/protected-paths.yaml +157 -0
- package/AGENTS.md +150 -61
- package/CHANGELOG.md +681 -0
- package/CLAUDE.md +9 -118
- package/QUICKSTART.md +171 -0
- package/README.md +271 -363
- package/bin/forge-cmd.js +120 -9
- package/bin/forge-preflight.js +26 -5
- package/bin/forge.js +461 -489
- package/docs/INDEX.md +93 -0
- package/docs/PROJECT_DESIGN.md +685 -0
- package/docs/architecture/index.md +66 -0
- package/docs/architecture/notes/README.md +35 -0
- package/docs/architecture/subsystems/README.md +46 -0
- package/docs/forge/TOOLCHAIN.md +670 -0
- package/docs/forge/VALIDATION.md +82 -0
- package/docs/{AGENT_INSTALL_PROMPT.md → guides/AGENT_INSTALL_PROMPT.md} +3 -3
- package/docs/guides/BEADS_GITHUB_SYNC.md +32 -0
- package/docs/{ENHANCED_ONBOARDING.md → guides/ENHANCED_ONBOARDING.md} +16 -12
- package/docs/guides/GREPTILE_SETUP.md +46 -0
- package/docs/guides/MANUAL_REVIEW_GUIDE.md +58 -0
- package/docs/guides/MIGRATION.md +56 -0
- package/docs/guides/SETUP.md +118 -0
- package/docs/guides/SUPPORT.md +185 -0
- package/docs/guides/WORKFLOW_TEMPLATES.md +74 -0
- package/docs/guides/memory-backends.md +183 -0
- package/docs/reference/ADAPTERS.md +128 -0
- package/docs/reference/AGENT_SKILL_PARITY.md +175 -0
- package/docs/reference/COMMANDS.md +205 -0
- package/docs/reference/DECISION_DRIFT_GUARDS.md +97 -0
- package/docs/{EXAMPLES.md → reference/EXAMPLES.md} +7 -5
- package/docs/reference/FORGE_KERNEL_STORAGE_MODEL.md +135 -0
- package/docs/reference/HERMES_INTEGRATION.md +118 -0
- package/docs/reference/INSIGHTS_RECAP.md +63 -0
- package/docs/reference/INSTALL.md +164 -0
- package/docs/reference/KERNEL_TAXONOMY_VALIDATION.md +161 -0
- package/docs/reference/PROTECTED_PATH_MANIFEST.md +25 -0
- package/docs/reference/RELEASE.md +68 -0
- package/docs/reference/RESEARCH_TEMPLATE.md +292 -0
- package/docs/{ROADMAP.md → reference/ROADMAP.md} +12 -9
- package/docs/reference/SKILLS.md +35 -0
- package/docs/reference/STATUS_BOARD.md +80 -0
- package/docs/reference/TEMPLATES.md +106 -0
- package/docs/{TOOLCHAIN.md → reference/TOOLCHAIN.md} +62 -47
- package/docs/reference/VALIDATION.md +82 -0
- package/docs/reference/agent-permissions.md +169 -0
- package/docs/reference/beads-to-kernel-migration-ux.md +61 -0
- package/docs/reference/control-plane-guarantees.md +125 -0
- package/docs/reference/dependency-chain.md +331 -0
- package/docs/reference/forge-kernel-issue-command-contract.md +161 -0
- package/docs/reference/forge-kernel-schema.md +72 -0
- package/docs/reference/kernel-conflict-evaluators.md +27 -0
- package/docs/reference/patch-md-format.md +77 -0
- package/docs/reference/protected-state-surfaces.md +59 -0
- package/docs/reference/shepherd.md +115 -0
- package/docs/reference/superpowers-analysis.md +320 -0
- package/docs/reference/superpowers-integration-options.md +404 -0
- package/docs/reference/test-environment.md +519 -0
- package/docs/reference/upgrade-safety.md +59 -0
- package/lefthook.yml +18 -0
- package/lib/adapter-cli.js +307 -0
- package/lib/adapters/beads-issue-adapter.js +127 -0
- package/lib/adapters/beads-kernel-compat.js +1042 -0
- package/lib/adapters/greptile-review-adapter.js +141 -0
- package/lib/adapters/kernel-issue-adapter.js +101 -0
- package/lib/adapters/pr-state-adapter.js +484 -0
- package/lib/adoption-profiles.js +126 -0
- package/lib/agents/README.md +2 -6
- package/lib/agents/claude.plugin.json +3 -8
- package/lib/agents/codex.plugin.json +9 -1
- package/lib/agents/cursor.plugin.json +2 -6
- package/lib/agents/hermes.plugin.json +22 -0
- package/lib/agents-config.js +39 -1236
- package/lib/audit-evidence.js +282 -0
- package/lib/beads-setup.js +121 -0
- package/lib/beads-sync-scaffold.js +25 -101
- package/lib/codex-skills.js +51 -1
- package/lib/commands/_issue.js +741 -77
- package/lib/commands/_manifest.js +91 -0
- package/lib/commands/_registry.js +85 -34
- package/lib/commands/_resolve-command-opts.js +261 -0
- package/lib/commands/_serve-security.js +270 -0
- package/lib/commands/adapter.js +12 -0
- package/lib/commands/add.js +118 -0
- package/lib/commands/audit.js +70 -0
- package/lib/commands/blocked.js +5 -0
- package/lib/commands/board.js +64 -0
- package/lib/commands/claim.js +21 -2
- package/lib/commands/claims.js +7 -0
- package/lib/commands/clean.js +485 -75
- package/lib/commands/close.js +2 -2
- package/lib/commands/comment.js +5 -0
- package/lib/commands/control.js +148 -0
- package/lib/commands/create.js +2 -2
- package/lib/commands/dev.js +185 -7
- package/lib/commands/doc-gate.js +336 -0
- package/lib/commands/doctor.js +156 -0
- package/lib/commands/explain.js +15 -0
- package/lib/commands/export.js +237 -0
- package/lib/commands/gate.js +192 -0
- package/lib/commands/hooks.js +242 -0
- package/lib/commands/inbox.js +118 -0
- package/lib/commands/init.js +598 -0
- package/lib/commands/insights.js +79 -0
- package/lib/commands/issue.js +12 -1
- package/lib/commands/issues.js +17 -0
- package/lib/commands/lint.js +5 -0
- package/lib/commands/list.js +2 -2
- package/lib/commands/merge.js +312 -0
- package/lib/commands/migrate.js +523 -0
- package/lib/commands/new.js +12 -0
- package/lib/commands/options.js +241 -0
- package/lib/commands/orient.js +13 -0
- package/lib/commands/orphans.js +5 -0
- package/lib/commands/patch.js +67 -0
- package/lib/commands/plan.js +436 -24
- package/lib/commands/preflight.js +211 -0
- package/lib/commands/prime.js +13 -0
- package/lib/commands/push.js +69 -2
- package/lib/commands/ready.js +2 -2
- package/lib/commands/recall.js +116 -0
- package/lib/commands/recap.js +61 -0
- package/lib/commands/recommend.js +0 -1
- package/lib/commands/release.js +91 -0
- package/lib/commands/remember.js +74 -0
- package/lib/commands/role.js +99 -0
- package/lib/commands/serve.js +581 -0
- package/lib/commands/setup.js +838 -972
- package/lib/commands/shepherd.js +436 -0
- package/lib/commands/ship.js +23 -1
- package/lib/commands/show.js +2 -2
- package/lib/commands/stage.js +192 -0
- package/lib/commands/stale.js +5 -0
- package/lib/commands/status.js +158 -21
- package/lib/commands/sync.js +34 -46
- package/lib/commands/team.js +4 -1
- package/lib/commands/test.js +43 -27
- package/lib/commands/update.js +2 -2
- package/lib/commands/upgrade.js +47 -0
- package/lib/commands/validate.js +43 -18
- package/lib/commands/worktree.js +307 -100
- package/lib/config-writer.js +202 -0
- package/lib/control-plane.js +236 -0
- package/lib/core/runtime-graph.js +946 -0
- package/lib/dep-guard/keyword-ripple.js +2 -2
- package/lib/deprecated-sync-cleanup.js +362 -0
- package/lib/detect-agent.js +2 -28
- package/lib/detect-worktree.js +35 -9
- package/lib/doc-gate/declaration.js +177 -0
- package/lib/doc-gate/detect.js +289 -0
- package/lib/doc-gate/gate.js +375 -0
- package/lib/doc-gate/okf-config.js +128 -0
- package/lib/doc-gate/okf.js +429 -0
- package/lib/docs-command.js +1161 -6
- package/lib/forge-issues.js +382 -11
- package/lib/forge-lock.js +262 -0
- package/lib/gate-events.js +193 -0
- package/lib/global-flags.js +74 -0
- package/lib/greptile-match.js +7 -63
- package/lib/harness-capability-matrix.js +380 -0
- package/lib/hook-global-installer.js +347 -0
- package/lib/hook-renderer.js +451 -0
- package/lib/inbox.js +391 -0
- package/lib/insights.js +397 -0
- package/lib/issue-adapter.js +156 -0
- package/lib/issue-backend.js +145 -0
- package/lib/issue-render.js +220 -0
- package/lib/kernel/backing-issue.js +305 -0
- package/lib/kernel/broker.js +1218 -0
- package/lib/kernel/cli-broker-factory.js +130 -0
- package/lib/kernel/conflict-signal.js +82 -0
- package/lib/kernel/evaluators.js +195 -0
- package/lib/kernel/fs-class.js +495 -0
- package/lib/kernel/issue-command-contract.js +559 -0
- package/lib/kernel/issue-id-resolver.js +186 -0
- package/lib/kernel/lease-enforcer.js +158 -0
- package/lib/kernel/migrations.js +333 -0
- package/lib/kernel/planning-buckets-schema.js +109 -0
- package/lib/kernel/projection-jsonl-writer.js +450 -0
- package/lib/kernel/readiness-model.js +329 -0
- package/lib/kernel/schema.js +356 -0
- package/lib/kernel/sqlite-driver.js +2504 -0
- package/lib/kernel/taxonomy-validator.js +394 -0
- package/lib/lefthook-check.js +3 -2
- package/lib/lefthook-wiring.js +413 -0
- package/lib/mcp-config-renderer.js +288 -0
- package/lib/memory/graphiti-mcp.js +106 -0
- package/lib/memory/router.js +387 -0
- package/lib/memory/typed-api.js +102 -0
- package/lib/memory-digest.js +195 -0
- package/lib/merge-rules.js +395 -0
- package/lib/migrate-dry-run.js +466 -0
- package/lib/orientation.js +863 -0
- package/lib/package-manager-remediation.js +103 -0
- package/lib/package-root.js +381 -0
- package/lib/patch-intent.js +890 -0
- package/lib/plugin-catalog.js +3 -4
- package/lib/plugin-manager.js +0 -5
- package/lib/pr-bundle.js +186 -0
- package/lib/pr-monitor/differ.js +195 -0
- package/lib/pr-monitor/events.js +0 -0
- package/lib/pr-monitor/gather.js +124 -0
- package/lib/pr-monitor/journal.js +299 -0
- package/lib/pr-monitor/monitor.js +146 -0
- package/lib/pr-monitor/render-sticky.js +157 -0
- package/lib/pr-monitor/watch-lifecycle.js +95 -0
- package/lib/pr-monitor/watch.js +247 -0
- package/lib/pr-pull.js +1273 -0
- package/lib/pr-shepherd.js +494 -0
- package/lib/pr-state-validator.js +59 -0
- package/lib/preflight/gates.js +237 -0
- package/lib/preflight/runner.js +116 -0
- package/lib/project-discovery.js +0 -53
- package/lib/project-memory.js +99 -497
- package/lib/protected-path-manifest.js +281 -0
- package/lib/protected-state-surfaces.js +387 -0
- package/lib/release-readiness.js +2089 -0
- package/lib/reset.js +59 -45
- package/lib/review-adapter.js +68 -0
- package/lib/rules-sync.js +260 -0
- package/lib/runtime-health.js +241 -20
- package/lib/safety-config-renderer.js +268 -0
- package/lib/setup-action-log.js +1 -7
- package/lib/setup.js +27 -65
- package/lib/shell-utils.js +76 -6
- package/lib/skills-sync.js +330 -0
- package/lib/smart-status/scoring.js +17 -3
- package/lib/status/beads-snapshot.js +45 -2
- package/lib/status/presenter.js +169 -18
- package/lib/status/snapshot.js +186 -0
- package/lib/sync-backend.js +202 -0
- package/lib/untrusted-content.js +52 -0
- package/lib/upgrade-safety.js +199 -0
- package/lib/workflow/enforce-stage.js +296 -47
- package/lib/workflow/stage-transition.js +115 -0
- package/lib/workflow/stages.js +30 -6
- package/lib/workflow/state-manager.js +11 -22
- package/lib/workflow/state.js +23 -1
- package/lib/workflow-profiles.js +17 -5
- package/package.json +37 -35
- package/rules/documentation.md +19 -0
- package/rules/kernel-tracking.md +26 -0
- package/rules/security.md +22 -0
- package/rules/tdd.md +20 -0
- package/rules/workflow.md +27 -0
- package/scripts/auto-backing-issue.js +47 -0
- package/scripts/beads-context.sh +81 -57
- package/scripts/beads-upgrade-smoke.sh +24 -3
- package/scripts/bootstrap-windows-tools.sh +78 -0
- package/scripts/branch-protection.js +2 -3
- package/scripts/check-agents.js +34 -137
- package/scripts/commitlint.js +3 -1
- package/scripts/conflict-detect.sh +3 -0
- package/scripts/dep-guard.sh +22 -3
- package/scripts/file-index.sh +3 -0
- package/scripts/forge-team/lib/claim.sh +34 -18
- package/scripts/forge-team/lib/dashboard.sh +61 -86
- package/scripts/forge-team/lib/epic.sh +99 -263
- package/scripts/forge-team/lib/hooks.sh +26 -28
- package/scripts/forge-team/lib/identity.sh +4 -4
- package/scripts/forge-team/lib/sync-github.sh +49 -84
- package/scripts/forge-team/lib/verify.sh +93 -83
- package/scripts/forge-team/lib/workload.sh +41 -65
- package/scripts/forge-team/tests/claim.test.sh +25 -19
- package/scripts/forge-team/tests/dashboard.test.sh +31 -46
- package/scripts/forge-team/tests/epic.test.sh +52 -71
- package/scripts/forge-team/tests/hooks.test.sh +38 -50
- package/scripts/forge-team/tests/identity.test.sh +3 -3
- package/scripts/forge-team/tests/integration.test.sh +44 -66
- package/scripts/forge-team/tests/sync-github.test.sh +50 -83
- package/scripts/forge-team/tests/verify.test.sh +37 -46
- package/scripts/forge-team/tests/workflow-integration.test.sh +4 -4
- package/scripts/forge-team/tests/workload.test.sh +32 -66
- package/scripts/gen-command-manifest.js +153 -0
- package/scripts/gen-embedded-assets.mjs +129 -0
- package/scripts/install.ps1 +139 -0
- package/scripts/install.sh +268 -0
- package/scripts/lib/release-asset.mjs +84 -0
- package/scripts/parity-check.mjs +145 -0
- package/scripts/parity-check.test.mjs +58 -0
- package/scripts/pin-agentic-workflow-images.js +112 -0
- package/scripts/pr-coordinator.sh +3 -0
- package/scripts/preflight-sonar.eslint.config.mjs +44 -0
- package/scripts/preflight.sh +21 -94
- package/scripts/protected-state-check.js +104 -0
- package/scripts/smart-status.sh +60 -57
- package/scripts/spikes/config-race-bench.js +111 -0
- package/scripts/spikes/harness-capability-matrix.js +13 -0
- package/scripts/spikes/patch-anchor-stability-bench.js +125 -0
- package/scripts/spikes/protected-path-manifest.js +20 -0
- package/scripts/spikes/skill-auto-invoke-parity.js +292 -0
- package/scripts/sync-agent-skills.js +62 -0
- package/scripts/sync-utils.sh +3 -0
- package/scripts/test-ci-shard.js +13 -6
- package/scripts/test.js +95 -12
- package/skills/claim-safety/SKILL.md +102 -0
- package/skills/claim-safety/evals/evals.json +46 -0
- package/{.github/prompts/dev.prompt.md → skills/dev/SKILL.md} +44 -50
- package/skills/dev/evals/evals.json +50 -0
- package/skills/hermes-forge/SKILL.md +185 -0
- package/skills/hermes-forge/evals/evals.json +46 -0
- package/skills/issue-basics/SKILL.md +111 -0
- package/skills/issue-basics/evals/evals.json +46 -0
- package/skills/kernel/SKILL.md +166 -0
- package/skills/kernel/evals/evals.json +50 -0
- package/skills/memory/SKILL.md +102 -0
- package/skills/parallel-deep-research/SKILL.md +14 -11
- package/skills/parallel-deep-research/evals/evals.json +11 -27
- package/{.github/prompts/plan.prompt.md → skills/plan/SKILL.md} +132 -157
- package/skills/plan/evals/evals.json +42 -0
- package/skills/research/SKILL.md +195 -0
- package/skills/research/evals/evals.json +42 -0
- package/{.github/prompts/review.prompt.md → skills/review/SKILL.md} +98 -62
- package/skills/review/evals/evals.json +42 -0
- package/skills/rollback/SKILL.md +110 -0
- package/skills/rollback/evals/evals.json +46 -0
- package/skills/rollback/references/methods.md +204 -0
- package/{.cursor/commands/rollback.md → skills/rollback/references/workflow-integration.md} +10 -284
- package/skills/shepherd/SKILL.md +66 -0
- package/skills/shepherd/evals/evals.json +42 -0
- package/{.github/prompts/ship.prompt.md → skills/ship/SKILL.md} +81 -45
- package/skills/ship/evals/evals.json +42 -0
- package/skills/smith/SKILL.md +142 -0
- package/skills/smith/evals/evals.json +46 -0
- package/skills/smith/references/autonomy-and-gates.md +94 -0
- package/{.github/prompts/sonarcloud.prompt.md → skills/sonarcloud/SKILL.md} +14 -3
- package/skills/sonarcloud/evals/evals.json +46 -0
- package/skills/sonarcloud-analysis/SKILL.md +18 -13
- package/skills/sonarcloud-analysis/evals/evals.json +11 -15
- package/{.github/prompts/status.prompt.md → skills/status/SKILL.md} +20 -10
- package/skills/status/evals/evals.json +50 -0
- package/skills/triage-ready/SKILL.md +121 -0
- package/skills/triage-ready/evals/evals.json +42 -0
- package/{.github/prompts/validate.prompt.md → skills/validate/SKILL.md} +52 -29
- package/skills/validate/evals/evals.json +42 -0
- package/skills/verify/SKILL.md +299 -0
- package/skills/verify/evals/evals.json +50 -0
- package/.claude/commands/dev.md +0 -345
- package/.claude/commands/plan.md +0 -566
- package/.claude/commands/premerge.md +0 -186
- package/.claude/commands/research.md +0 -42
- package/.claude/commands/review.md +0 -451
- package/.claude/commands/rollback.md +0 -721
- package/.claude/commands/ship.md +0 -213
- package/.claude/commands/sonarcloud.md +0 -152
- package/.claude/commands/status.md +0 -90
- package/.claude/commands/validate.md +0 -288
- package/.claude/commands/verify.md +0 -269
- package/.claude/rules/workflow.md +0 -121
- package/.cline/workflows/dev.md +0 -342
- package/.cline/workflows/plan.md +0 -563
- package/.cline/workflows/premerge.md +0 -183
- package/.cline/workflows/research.md +0 -39
- package/.cline/workflows/review.md +0 -448
- package/.cline/workflows/rollback.md +0 -718
- package/.cline/workflows/ship.md +0 -210
- package/.cline/workflows/sonarcloud.md +0 -146
- package/.cline/workflows/status.md +0 -87
- package/.cline/workflows/validate.md +0 -285
- package/.cline/workflows/verify.md +0 -266
- package/.codex/config.toml +0 -11
- package/.codex/skills/dev/SKILL.md +0 -345
- package/.codex/skills/plan/SKILL.md +0 -566
- package/.codex/skills/premerge/SKILL.md +0 -186
- package/.codex/skills/research/SKILL.md +0 -42
- package/.codex/skills/review/SKILL.md +0 -451
- package/.codex/skills/rollback/SKILL.md +0 -721
- package/.codex/skills/ship/SKILL.md +0 -213
- package/.codex/skills/sonarcloud/SKILL.md +0 -149
- package/.codex/skills/status/SKILL.md +0 -90
- package/.codex/skills/validate/SKILL.md +0 -288
- package/.codex/skills/verify/SKILL.md +0 -269
- package/.cursor/commands/dev.md +0 -342
- package/.cursor/commands/plan.md +0 -563
- package/.cursor/commands/premerge.md +0 -183
- package/.cursor/commands/research.md +0 -39
- package/.cursor/commands/review.md +0 -448
- package/.cursor/commands/ship.md +0 -210
- package/.cursor/commands/sonarcloud.md +0 -146
- package/.cursor/commands/status.md +0 -87
- package/.cursor/commands/validate.md +0 -285
- package/.cursor/commands/verify.md +0 -266
- package/.cursorrules +0 -149
- package/.github/prompts/premerge.prompt.md +0 -188
- package/.github/prompts/research.prompt.md +0 -44
- package/.github/prompts/rollback.prompt.md +0 -723
- package/.github/prompts/verify.prompt.md +0 -271
- package/.github/workflows/beads-to-github.yml +0 -89
- package/.github/workflows/github-to-beads.yml +0 -100
- package/.kilocode/workflows/dev.md +0 -346
- package/.kilocode/workflows/plan.md +0 -567
- package/.kilocode/workflows/premerge.md +0 -187
- package/.kilocode/workflows/research.md +0 -43
- package/.kilocode/workflows/review.md +0 -452
- package/.kilocode/workflows/rollback.md +0 -722
- package/.kilocode/workflows/ship.md +0 -214
- package/.kilocode/workflows/sonarcloud.md +0 -150
- package/.kilocode/workflows/status.md +0 -91
- package/.kilocode/workflows/validate.md +0 -289
- package/.kilocode/workflows/verify.md +0 -270
- package/.opencode/commands/dev.md +0 -345
- package/.opencode/commands/plan.md +0 -566
- package/.opencode/commands/premerge.md +0 -186
- package/.opencode/commands/research.md +0 -42
- package/.opencode/commands/review.md +0 -451
- package/.opencode/commands/rollback.md +0 -721
- package/.opencode/commands/ship.md +0 -213
- package/.opencode/commands/sonarcloud.md +0 -149
- package/.opencode/commands/status.md +0 -90
- package/.opencode/commands/validate.md +0 -288
- package/.opencode/commands/verify.md +0 -269
- package/.roo/commands/dev.md +0 -346
- package/.roo/commands/plan.md +0 -567
- package/.roo/commands/premerge.md +0 -187
- package/.roo/commands/research.md +0 -43
- package/.roo/commands/review.md +0 -452
- package/.roo/commands/rollback.md +0 -722
- package/.roo/commands/ship.md +0 -214
- package/.roo/commands/sonarcloud.md +0 -150
- package/.roo/commands/status.md +0 -91
- package/.roo/commands/validate.md +0 -289
- package/.roo/commands/verify.md +0 -270
- package/docs/BEADS_GITHUB_SYNC.md +0 -281
- package/docs/GREPTILE_SETUP.md +0 -400
- package/docs/MANUAL_REVIEW_GUIDE.md +0 -106
- package/docs/SETUP.md +0 -663
- package/docs/VALIDATION.md +0 -363
- package/lib/agents/cline.plugin.json +0 -29
- package/lib/agents/copilot.plugin.json +0 -24
- package/lib/agents/kilocode.plugin.json +0 -22
- package/lib/agents/opencode.plugin.json +0 -23
- package/lib/agents/roo.plugin.json +0 -30
- package/lib/beads-bootstrap.js +0 -225
- package/lib/beads-health-check.js +0 -188
- package/lib/commands/commands-reset.js +0 -147
- package/opencode.json +0 -67
- package/scripts/beads-context.test.js +0 -584
- package/scripts/github-beads-sync/comment.mjs +0 -64
- package/scripts/github-beads-sync/config.mjs +0 -148
- package/scripts/github-beads-sync/github-api.mjs +0 -131
- package/scripts/github-beads-sync/index.mjs +0 -356
- package/scripts/github-beads-sync/label-mapper.mjs +0 -54
- package/scripts/github-beads-sync/mapping.mjs +0 -132
- package/scripts/github-beads-sync/reverse-sync-cli.mjs +0 -31
- package/scripts/github-beads-sync/reverse-sync.mjs +0 -162
- package/scripts/github-beads-sync/run-bd.mjs +0 -161
- package/scripts/github-beads-sync/sanitize.mjs +0 -121
- package/scripts/github-beads-sync.config.json +0 -26
- package/scripts/sync-commands.js +0 -600
|
@@ -0,0 +1,685 @@
|
|
|
1
|
+
# Forge Project Design and Decision Registry
|
|
2
|
+
|
|
3
|
+
**Status:** Canonical living registry for current Forge design direction
|
|
4
|
+
**Last reviewed:** 2026-06-08
|
|
5
|
+
**Update rule:** Current accepted design decisions live here. Rationale and evidence must link to ADRs and work artifacts.
|
|
6
|
+
|
|
7
|
+
## How to read this file
|
|
8
|
+
|
|
9
|
+
1. Start here for current Forge architecture and direction.
|
|
10
|
+
2. Follow ADR links for immutable cross-cutting architectural decisions once they exist.
|
|
11
|
+
3. Follow `docs/work/**` links for full discussion, spike evidence, evaluator notes, and local decisions.
|
|
12
|
+
4. Treat work-folder decisions as evidence unless promoted here or accepted through a Kernel decision event.
|
|
13
|
+
5. If this file conflicts with an unsuperseded ADR or accepted Kernel decision event, that is a decision-registry error and should block merge.
|
|
14
|
+
|
|
15
|
+
## Current design snapshot
|
|
16
|
+
|
|
17
|
+
Forge is moving toward a native Kernel/control-plane architecture:
|
|
18
|
+
|
|
19
|
+
- **Authority:** SQLite WAL is the local single-machine Kernel authority; team/multi-machine authority requires a serialized server authority later. Routine issue, workflow, claim, run, and knowledge writes must not depend on committing repository metadata to the protected default branch.
|
|
20
|
+
- **Beads/Dolt:** Beads and Dolt remain compatibility/projection/history/migration surfaces, not the core Kernel write path.
|
|
21
|
+
- **Project Knowledge:** Project Knowledge is verbatim-first and rebuildable. Summaries, extracted facts, Context Mode output, Graphify output, and agent memories are derived/proposal material unless accepted by Kernel event.
|
|
22
|
+
- **Knowledge storage:** Knowledge starts in the same local SQLite Kernel DB by default, but only behind a clean `KnowledgeStore` boundary so it can later move to `knowledge.sqlite`, server-side search, or another backend.
|
|
23
|
+
- **Work model:** Forge uses a Work Graph plus Planning Buckets and an Agent Execution Ledger. Agile/Scrum/Kanban are views/presets, not the database ontology.
|
|
24
|
+
- **CLI:** `forge` CLI becomes the canonical Kernel-first local command surface through incremental cutover.
|
|
25
|
+
- **MCP:** Forge MCP starts read-only over the same service contracts as CLI; write tools come later with revision/idempotency/conflict guards.
|
|
26
|
+
- **Observer:** Background observers record evidence/proposals/session events first; they do not silently mutate project truth.
|
|
27
|
+
- **Architecture notes:** Architecture-significant observations, domain rules, subsystem behaviors, constraints, and open questions must be captured as scoped architecture records. `PROJECT_DESIGN.md` remains the top-level map; detailed records live under `docs/architecture/**` and work/ADR evidence.
|
|
28
|
+
- **Hook policy:** Agent-native hooks are the preferred architecture-capture UX; Forge CLI checks own the policy; Lefthook is a Git adapter/fallback; CI is the non-bypassable gate. Agents must not use `--no-verify` or equivalent hook-disabling bypasses without explicit audited authorization.
|
|
29
|
+
- **Portability:** Routine Beads runtime/export state under `.beads/` is local and non-versioned. Explicit Kernel exports may provide reviewable clone/bootstrap snapshots, but repository projection files are not the routine authority channel for close/verify state. Local-only state uses the local Kernel SQLite authority; cross-machine or team state uses serialized server authority.
|
|
30
|
+
- **Work-item taxonomy:** 4 issue types (`epic`, `task`, `bug`, `decision`), 5 stored statuses; `ready`/`blocked` are derived read-model facts; a single numeric rank is authoritative for ordering.
|
|
31
|
+
- **Agent interface:** Forge ships its own agent surface (`forge prime`, kernel-facing JSON-first CLI, skills as thin CLI wrappers); agent-interface parity gates Beads retirement.
|
|
32
|
+
- **Supported harnesses:** Claude Code, Codex, and Cursor are the supported harness set; Hermes is the planned addition. Other previously-supported harness surfaces are removed.
|
|
33
|
+
|
|
34
|
+
## Decision registry
|
|
35
|
+
|
|
36
|
+
### PD-20260606-sqlite-local-authority
|
|
37
|
+
|
|
38
|
+
```yaml
|
|
39
|
+
id: PD-20260606-sqlite-local-authority
|
|
40
|
+
topic: authority.local.storage
|
|
41
|
+
status: accepted
|
|
42
|
+
decision_date: 2026-06-06
|
|
43
|
+
last_reviewed: 2026-06-08
|
|
44
|
+
adr: pending
|
|
45
|
+
evidence:
|
|
46
|
+
- docs/work/2026-06-06-kernel-backlog-memory-roadmap/decisions.md#d1--sqlite-wal-is-local-authority-only
|
|
47
|
+
- docs/work/2026-06-06-kernel-backlog-memory-roadmap/decisions.md#d7--sqlite-is-the-first-kernel-authority-dolt-remains-first-class-projectionhistory
|
|
48
|
+
- docs/work/2026-06-06-kernel-backlog-memory-roadmap/storage-decision.md
|
|
49
|
+
supersedes: []
|
|
50
|
+
conflicts_with: []
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
**Current decision:** Use SQLite WAL as the first Forge Kernel local authority. Do not present SQLite/git files as safe multi-machine/team authority.
|
|
54
|
+
|
|
55
|
+
**Implications:**
|
|
56
|
+
|
|
57
|
+
- Local broker writes go through Kernel transaction/CAS/idempotency rules.
|
|
58
|
+
- Team writes require future serialized server authority.
|
|
59
|
+
- Dolt is not part of the initial Kernel transaction contract.
|
|
60
|
+
|
|
61
|
+
### PD-20260606-beads-dolt-projection
|
|
62
|
+
|
|
63
|
+
```yaml
|
|
64
|
+
id: PD-20260606-beads-dolt-projection
|
|
65
|
+
topic: projection.beads-dolt
|
|
66
|
+
status: accepted
|
|
67
|
+
decision_date: 2026-06-06
|
|
68
|
+
last_reviewed: 2026-06-08
|
|
69
|
+
adr: pending
|
|
70
|
+
evidence:
|
|
71
|
+
- docs/work/2026-06-06-kernel-backlog-memory-roadmap/decisions.md#d2--beads-remains-migrationprojection-during-kernel-rollout
|
|
72
|
+
- docs/work/2026-06-06-kernel-backlog-memory-roadmap/decisions.md#d7--sqlite-is-the-first-kernel-authority-dolt-remains-first-class-projectionhistory
|
|
73
|
+
- docs/work/2026-06-06-kernel-backlog-memory-roadmap/discussion-addendum.md
|
|
74
|
+
supersedes: []
|
|
75
|
+
conflicts_with: []
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**Current decision:** Keep Beads/Dolt as import/export/projection/history compatibility while Kernel matures. Do not let Beads/Dolt shape the core Kernel write path.
|
|
79
|
+
|
|
80
|
+
**Implications:**
|
|
81
|
+
|
|
82
|
+
- Beads memory/comments/issues can be imported as source material or projections.
|
|
83
|
+
- Beads content is not automatically accepted Forge truth.
|
|
84
|
+
- New authority work should route through Forge Kernel contracts.
|
|
85
|
+
|
|
86
|
+
### PD-20260606-verbatim-first-knowledge
|
|
87
|
+
|
|
88
|
+
```yaml
|
|
89
|
+
id: PD-20260606-verbatim-first-knowledge
|
|
90
|
+
topic: knowledge.truth-model
|
|
91
|
+
status: accepted
|
|
92
|
+
decision_date: 2026-06-06
|
|
93
|
+
last_reviewed: 2026-06-08
|
|
94
|
+
adr: pending
|
|
95
|
+
evidence:
|
|
96
|
+
- docs/work/2026-06-06-kernel-backlog-memory-roadmap/decisions.md#d3--verbatim-first-project-knowledge-layer
|
|
97
|
+
- docs/work/2026-06-06-kernel-backlog-memory-roadmap/agent-memory-federation.md
|
|
98
|
+
- docs/work/2026-06-06-kernel-backlog-memory-roadmap/discussion-addendum.md
|
|
99
|
+
supersedes: []
|
|
100
|
+
conflicts_with: []
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
**Current decision:** Project Knowledge indexes verbatim artifacts/events first. Summaries, extracted facts, agent memories, Context Mode output, and Graphify output are derived/proposal material unless accepted by Kernel event.
|
|
104
|
+
|
|
105
|
+
**Implications:**
|
|
106
|
+
|
|
107
|
+
- Source links and provenance are mandatory for accepted/project-relevant knowledge.
|
|
108
|
+
- `forge orient`, `forge recap`, and `forge knowledge search` should return authority/source/proposal labels.
|
|
109
|
+
- Conflicting memory becomes a conflict/proposal, not silent truth.
|
|
110
|
+
|
|
111
|
+
### PD-20260608-knowledge-store-boundary
|
|
112
|
+
|
|
113
|
+
```yaml
|
|
114
|
+
id: PD-20260608-knowledge-store-boundary
|
|
115
|
+
topic: knowledge.storage.boundary
|
|
116
|
+
status: accepted
|
|
117
|
+
decision_date: 2026-06-08
|
|
118
|
+
last_reviewed: 2026-06-08
|
|
119
|
+
adr: pending
|
|
120
|
+
evidence:
|
|
121
|
+
- docs/work/2026-06-06-kernel-backlog-memory-roadmap/discussion-addendum.md#1-memory--project-knowledge
|
|
122
|
+
- docs/work/2026-06-06-kernel-backlog-memory-roadmap/decision-registry-mechanism.md
|
|
123
|
+
- docs/work/2026-06-06-kernel-backlog-memory-roadmap/decision-options.md
|
|
124
|
+
supersedes: []
|
|
125
|
+
conflicts_with: []
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
**Current decision:** Start Knowledge in the same local SQLite Kernel DB by default, but behind a clean `KnowledgeStore` boundary so it can later move to `knowledge.sqlite`, a server/search backend, or another read-model store.
|
|
129
|
+
|
|
130
|
+
**Boundary rule:**
|
|
131
|
+
|
|
132
|
+
```text
|
|
133
|
+
Kernel tables = authority
|
|
134
|
+
Knowledge tables = rebuildable read model / source index / proposals
|
|
135
|
+
Accepted facts = Kernel events
|
|
136
|
+
Derived summaries = not authority
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
**Sidecar/server gates:** Move Knowledge out of the Kernel DB only when FTS/vector load, rebuild/compact behavior, team/server search, privacy, or operational isolation justifies the complexity.
|
|
140
|
+
|
|
141
|
+
### PD-20260606-work-graph-planning-buckets
|
|
142
|
+
|
|
143
|
+
```yaml
|
|
144
|
+
id: PD-20260606-work-graph-planning-buckets
|
|
145
|
+
topic: backlog.model
|
|
146
|
+
status: accepted
|
|
147
|
+
decision_date: 2026-06-06
|
|
148
|
+
last_reviewed: 2026-06-08
|
|
149
|
+
adr: pending
|
|
150
|
+
evidence:
|
|
151
|
+
- docs/work/2026-06-06-kernel-backlog-memory-roadmap/backlog-frontend-model.md
|
|
152
|
+
- docs/work/2026-06-06-kernel-backlog-memory-roadmap/discussion-addendum.md#2-backlog--issues--sprints--methodology
|
|
153
|
+
- docs/work/2026-06-06-kernel-backlog-memory-roadmap/decision-options.md
|
|
154
|
+
supersedes: []
|
|
155
|
+
conflicts_with: []
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
**Current decision:** Forge should use Work Graph + Planning Buckets + Agent Execution Ledger. Agile/Scrum/Kanban are presets/views, not the primary ontology.
|
|
159
|
+
|
|
160
|
+
**Core model:**
|
|
161
|
+
|
|
162
|
+
```text
|
|
163
|
+
issues / work_items
|
|
164
|
+
issue_relations
|
|
165
|
+
planning_buckets
|
|
166
|
+
issue_bucket_memberships
|
|
167
|
+
claims
|
|
168
|
+
sessions / runs
|
|
169
|
+
stage_runs
|
|
170
|
+
events
|
|
171
|
+
readiness
|
|
172
|
+
board_positions
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
**Implications:**
|
|
176
|
+
|
|
177
|
+
- Multiple product/team backlogs are planning buckets or views.
|
|
178
|
+
- Sprints/releases/milestones/queues share the planning bucket mechanism.
|
|
179
|
+
- Claimable/schedulable work is an issue/work item.
|
|
180
|
+
- Status, workflow stage, claim state, bucket state, and run status stay separate.
|
|
181
|
+
|
|
182
|
+
### PD-20260606-cli-kernel-first
|
|
183
|
+
|
|
184
|
+
```yaml
|
|
185
|
+
id: PD-20260606-cli-kernel-first
|
|
186
|
+
topic: cli.contract
|
|
187
|
+
status: accepted
|
|
188
|
+
decision_date: 2026-06-06
|
|
189
|
+
last_reviewed: 2026-06-08
|
|
190
|
+
adr: pending
|
|
191
|
+
evidence:
|
|
192
|
+
- docs/work/2026-06-06-kernel-backlog-memory-roadmap/discussion-addendum.md#3-forge-cli
|
|
193
|
+
- docs/work/2026-06-06-kernel-backlog-memory-roadmap/decision-options.md#3-forge-cli
|
|
194
|
+
supersedes: []
|
|
195
|
+
conflicts_with: []
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
**Current decision:** Use canonical Kernel-first CLI with incremental cutover. CLI remains the universal local integration contract; MCP and observers use the same service contracts.
|
|
199
|
+
|
|
200
|
+
### PD-20260606-readonly-mcp-first
|
|
201
|
+
|
|
202
|
+
```yaml
|
|
203
|
+
id: PD-20260606-readonly-mcp-first
|
|
204
|
+
topic: mcp.contract
|
|
205
|
+
status: accepted
|
|
206
|
+
decision_date: 2026-06-06
|
|
207
|
+
last_reviewed: 2026-06-08
|
|
208
|
+
adr: pending
|
|
209
|
+
evidence:
|
|
210
|
+
- docs/work/2026-06-06-kernel-backlog-memory-roadmap/discussion-addendum.md#4-forge-mcp-and-background-observer
|
|
211
|
+
- docs/work/2026-06-06-kernel-backlog-memory-roadmap/decision-options.md#4-forge-mcp
|
|
212
|
+
supersedes: []
|
|
213
|
+
conflicts_with: []
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
**Current decision:** Build Forge MCP read-only first over Kernel-backed status/orient/recap/issue/backlog/knowledge/graph queries. Write MCP comes later and must require expected revision, idempotency key, actor/session/worktree metadata, and conflict handling.
|
|
217
|
+
|
|
218
|
+
### PD-20260606-observer-evidence-proposals
|
|
219
|
+
|
|
220
|
+
```yaml
|
|
221
|
+
id: PD-20260606-observer-evidence-proposals
|
|
222
|
+
topic: observer.authority
|
|
223
|
+
status: accepted
|
|
224
|
+
decision_date: 2026-06-06
|
|
225
|
+
last_reviewed: 2026-06-08
|
|
226
|
+
adr: pending
|
|
227
|
+
evidence:
|
|
228
|
+
- docs/work/2026-06-06-kernel-backlog-memory-roadmap/discussion-addendum.md#4-forge-mcp-and-background-observer
|
|
229
|
+
supersedes: []
|
|
230
|
+
conflicts_with: []
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
**Current decision:** Background observer adapters should initially record evidence, proposals, session events, files touched, commands/tests run, and recap candidates. They must not silently close issues, accept decisions, reassign claims, or mutate project truth.
|
|
234
|
+
|
|
235
|
+
### PD-20260608-mandatory-architecture-note-capture
|
|
236
|
+
|
|
237
|
+
```yaml
|
|
238
|
+
id: PD-20260608-mandatory-architecture-note-capture
|
|
239
|
+
topic: architecture.capture.mandate
|
|
240
|
+
status: accepted
|
|
241
|
+
decision_date: 2026-06-08
|
|
242
|
+
last_reviewed: 2026-06-08
|
|
243
|
+
adr: pending
|
|
244
|
+
evidence:
|
|
245
|
+
- docs/architecture/index.md
|
|
246
|
+
- docs/work/2026-06-06-kernel-backlog-memory-roadmap/architecture-note-governance.md
|
|
247
|
+
supersedes: []
|
|
248
|
+
conflicts_with: []
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
**Current decision:** Architecture-significant information must be captured when changed or discovered, but it does not all live inline in this file. `docs/PROJECT_DESIGN.md` is the top-level current map, while detailed scoped records live under `docs/architecture/**`, ADRs, and work-folder evidence.
|
|
252
|
+
|
|
253
|
+
**Record types:**
|
|
254
|
+
|
|
255
|
+
```text
|
|
256
|
+
architecture_note observed architectural fact, rule, constraint, or behavior
|
|
257
|
+
architecture_decision accepted direction after tradeoffs
|
|
258
|
+
architecture_question unresolved ambiguity or decision needed
|
|
259
|
+
architecture_conflict contradictory records or code/docs disagreement
|
|
260
|
+
architecture_exception deliberate deviation with owner, reason, and review/expiry
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
**Mandatory rule:** If future users or agents would need the information to avoid breaking the system, capture it with source evidence.
|
|
264
|
+
|
|
265
|
+
**Scale rule:** Large projects should organize architecture records by project/domain/bounded-context/subsystem/component/API instead of growing this file into a 10,000-line monolith.
|
|
266
|
+
|
|
267
|
+
### PD-20260608-hook-backed-architecture-capture
|
|
268
|
+
|
|
269
|
+
```yaml
|
|
270
|
+
id: PD-20260608-hook-backed-architecture-capture
|
|
271
|
+
topic: architecture.capture.hooks
|
|
272
|
+
status: accepted
|
|
273
|
+
decision_date: 2026-06-08
|
|
274
|
+
last_reviewed: 2026-06-08
|
|
275
|
+
adr: pending
|
|
276
|
+
evidence:
|
|
277
|
+
- docs/work/2026-06-06-kernel-backlog-memory-roadmap/architecture-capture-hooks.md
|
|
278
|
+
- docs/work/2026-06-06-kernel-backlog-memory-roadmap/architecture-note-governance.md
|
|
279
|
+
supersedes: []
|
|
280
|
+
conflicts_with: []
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
**Current decision:** Use hooks as a layered enforcement surface for mandatory architecture capture, but do not make Lefthook the center. Agent-native hooks are the preferred interactive experience; Forge CLI checks own the policy; Lefthook is a repo-local Git adapter/fallback; CI required checks and later Kernel authority validation plus KnowledgeStore indexing/proposal validation are the durable enforcement boundaries.
|
|
284
|
+
|
|
285
|
+
**Boundary:** Hooks make missing architecture capture hard to miss, but they are not the source of truth. Lefthook depends on install/worktree state and can be bypassed; CI and future Kernel authority are the durable enforcement boundaries.
|
|
286
|
+
|
|
287
|
+
**Rule:** Architecture-sensitive changes require an explicit architecture-impact declaration. If architecture changed or was discovered, the work must add/update an architecture record, open a question/conflict, or update/supersede accepted design direction. Agents must not use `git commit --no-verify`, `git push --no-verify`, `HUSKY=0`, `LEFTHOOK=0`, `git -c core.hooksPath=...`, script-mediated hook bypasses, or hook removal to bypass Forge checks unless explicitly authorized through an audited Forge bypass event.
|
|
288
|
+
|
|
289
|
+
### PD-20260611-kernel-jsonl-portability
|
|
290
|
+
|
|
291
|
+
```yaml
|
|
292
|
+
id: PD-20260611-kernel-jsonl-portability
|
|
293
|
+
topic: portability.projection
|
|
294
|
+
status: accepted
|
|
295
|
+
decision_date: 2026-06-11
|
|
296
|
+
last_reviewed: 2026-06-11
|
|
297
|
+
adr: pending
|
|
298
|
+
evidence:
|
|
299
|
+
- docs/work/2026-06-06-kernel-backlog-memory-roadmap/decisions.md#d16--kernel-jsonl-portability-projection
|
|
300
|
+
- docs/work/2026-06-06-kernel-backlog-memory-roadmap/plan-evaluation.md
|
|
301
|
+
supersedes: []
|
|
302
|
+
conflicts_with: []
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
**Current decision:** The Kernel may own deterministic JSONL export/import artifacts for clone/bootstrap and reviewable portability snapshots. These exports are explicit projections, not the normal write path and not the durability mechanism for routine close/verify state.
|
|
306
|
+
|
|
307
|
+
**Implications:**
|
|
308
|
+
|
|
309
|
+
- Acceptance: fresh machine, `git clone`, no Beads/Dolt installed can import an explicit Kernel projection when one is intentionally published.
|
|
310
|
+
- Local-only work remains durable in local SQLite without requiring default-branch commits.
|
|
311
|
+
- Team or cross-machine work requires server authority before writes are accepted as shared truth.
|
|
312
|
+
- Retirement claims under PD-20260606-beads-dolt-projection cannot pass until portability works without putting every local state mutation on the Git hot path.
|
|
313
|
+
|
|
314
|
+
### PD-20260613-authority-state-not-repo-metadata
|
|
315
|
+
|
|
316
|
+
```yaml
|
|
317
|
+
id: PD-20260613-authority-state-not-repo-metadata
|
|
318
|
+
topic: authority.persistence.boundary
|
|
319
|
+
status: accepted
|
|
320
|
+
decision_date: 2026-06-13
|
|
321
|
+
last_reviewed: 2026-06-13
|
|
322
|
+
adr: pending
|
|
323
|
+
evidence:
|
|
324
|
+
- docs/work/2026-06-06-kernel-backlog-memory-roadmap/workflow-friction-amendments.md
|
|
325
|
+
- docs/reference/FORGE_KERNEL_STORAGE_MODEL.md
|
|
326
|
+
supersedes: []
|
|
327
|
+
conflicts_with: []
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
**Current decision:** Routine issue, workflow, claim, run, and knowledge writes must not depend on committing repository metadata to the protected default branch. Local-only state uses the local Kernel SQLite authority. Cross-machine or team state uses serialized server authority. Repository files are project code/docs/config plus explicit projection artifacts, not the live database for normal close/verify work.
|
|
331
|
+
|
|
332
|
+
**Implications:**
|
|
333
|
+
|
|
334
|
+
- `/verify` closing an issue must not require a follow-up PR or direct push to persist tracker metadata.
|
|
335
|
+
- When no server is configured, close/verify state is local-only and should be reported that way.
|
|
336
|
+
- When team mode is configured, close/verify writes go to server authority, and server-side projection workers update GitHub/Linear/Beads compatibility state.
|
|
337
|
+
- Beads/Dolt and Kernel JSONL exports remain explicit import/export/projection surfaces, not the hot-path authority.
|
|
338
|
+
- Acceptance: fresh machine, `git clone`, no committed `.beads/` runtime state → `forge setup` initializes local Beads state without dirtying the repo; team/cross-machine status comes from server authority or an explicit projection import.
|
|
339
|
+
- Retirement claims under PD-20260606-beads-dolt-projection cannot pass without a Beads-local setup path and explicit projection/import-export replacement.
|
|
340
|
+
|
|
341
|
+
### PD-20260611-sqlite-builtin-driver
|
|
342
|
+
|
|
343
|
+
```yaml
|
|
344
|
+
id: PD-20260611-sqlite-builtin-driver
|
|
345
|
+
topic: authority.local.driver
|
|
346
|
+
status: accepted
|
|
347
|
+
decision_date: 2026-06-11
|
|
348
|
+
last_reviewed: 2026-06-11
|
|
349
|
+
adr: pending
|
|
350
|
+
evidence:
|
|
351
|
+
- docs/work/2026-06-06-kernel-backlog-memory-roadmap/decisions.md#d17--sqlite-driver-builtin-no-native-compile
|
|
352
|
+
supersedes: []
|
|
353
|
+
conflicts_with: []
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
**Current decision:** Use builtin `node:sqlite` and/or `bun:sqlite`, selected by runtime feature detection, for the Kernel broker. No native-compile dependency in the default install.
|
|
357
|
+
|
|
358
|
+
**Implications:**
|
|
359
|
+
|
|
360
|
+
- `node:sqlite` is unflagged from Node.js ≥ 22.13.0 but is still Release Candidate / experimental; the broker probes for it at runtime and falls back to `bun:sqlite` rather than gating on Node major version alone.
|
|
361
|
+
- Driver conformance tests (WAL, busy timeout, atomic event+CAS+outbox, backup/checkpoint, FTS5) and the detection/fallback path run against the chosen builtin drivers on all supported platforms.
|
|
362
|
+
- This selection blocks all local-broker safety work and must land first.
|
|
363
|
+
|
|
364
|
+
### PD-20260611-work-item-taxonomy
|
|
365
|
+
|
|
366
|
+
```yaml
|
|
367
|
+
id: PD-20260611-work-item-taxonomy
|
|
368
|
+
topic: workgraph.taxonomy
|
|
369
|
+
status: accepted
|
|
370
|
+
decision_date: 2026-06-11
|
|
371
|
+
last_reviewed: 2026-06-11
|
|
372
|
+
adr: pending
|
|
373
|
+
evidence:
|
|
374
|
+
- docs/work/2026-06-06-kernel-backlog-memory-roadmap/decisions.md#d18--taxonomy-collapse-4-types-5-statuses-single-rank
|
|
375
|
+
- docs/work/2026-06-06-kernel-backlog-memory-roadmap/beads/backlog-taxonomy.md
|
|
376
|
+
supersedes: []
|
|
377
|
+
conflicts_with: []
|
|
378
|
+
```
|
|
379
|
+
|
|
380
|
+
**Current decision:** Issue types are `epic`, `task`, `bug`, `decision` (`feature`/`story`/`chore`/`spike` are labels). Stored statuses are `open`, `in_progress`, `review`, `done`, `cancelled`; `ready`/`blocked` are derived read-model facts. A single numeric rank is authoritative for ordering; P0–P4 is a display projection.
|
|
381
|
+
|
|
382
|
+
**Implications:**
|
|
383
|
+
|
|
384
|
+
- Refines PD-20260606-work-graph-planning-buckets: the Work Graph ontology uses this narrow enum set.
|
|
385
|
+
- Must land before the 0.0.20 Kernel schema freezes a wider version.
|
|
386
|
+
|
|
387
|
+
### PD-20260611-local-filesystem-doctor-gate
|
|
388
|
+
|
|
389
|
+
```yaml
|
|
390
|
+
id: PD-20260611-local-filesystem-doctor-gate
|
|
391
|
+
topic: authority.local.filesystem
|
|
392
|
+
status: accepted
|
|
393
|
+
decision_date: 2026-06-11
|
|
394
|
+
last_reviewed: 2026-06-11
|
|
395
|
+
adr: pending
|
|
396
|
+
evidence:
|
|
397
|
+
- docs/work/2026-06-06-kernel-backlog-memory-roadmap/decisions.md#d19--filesystem-doctor-is-a-default-on-gate
|
|
398
|
+
supersedes: []
|
|
399
|
+
conflicts_with: []
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
**Current decision:** Before placing `kernel.sqlite`, Forge detects network shares, cloud-sync folders (OneDrive/Dropbox/Google Drive), and WSL-crossing paths, and refuses or warns with remediation guidance. The doctor check is a prerequisite for kernel default-on, shipped with the broker driver work.
|
|
403
|
+
|
|
404
|
+
### PD-20260611-bd-retirement-kill-list
|
|
405
|
+
|
|
406
|
+
```yaml
|
|
407
|
+
id: PD-20260611-bd-retirement-kill-list
|
|
408
|
+
topic: migration.beads-retirement
|
|
409
|
+
status: accepted
|
|
410
|
+
decision_date: 2026-06-11
|
|
411
|
+
last_reviewed: 2026-06-11
|
|
412
|
+
adr: pending
|
|
413
|
+
evidence:
|
|
414
|
+
- docs/work/2026-06-06-kernel-backlog-memory-roadmap/decisions.md#d20--tracked-bd-call-site-kill-list
|
|
415
|
+
- docs/work/2026-06-06-kernel-backlog-memory-roadmap/plan-evaluation.md
|
|
416
|
+
supersedes: []
|
|
417
|
+
conflicts_with: []
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
**Current decision:** Maintain the inventory of `bd` call sites (~125 across 40+ files) as a checked-off migration artifact with a defined hot-path order (sync → worktree dolt lifecycle → setup → status/preflight → team scripts → instruction surfaces). Beads retirement claims must reference the completed list.
|
|
421
|
+
|
|
422
|
+
### PD-20260611-orient-recap-file-assembly
|
|
423
|
+
|
|
424
|
+
```yaml
|
|
425
|
+
id: PD-20260611-orient-recap-file-assembly
|
|
426
|
+
topic: knowledge.orient-recap
|
|
427
|
+
status: accepted
|
|
428
|
+
decision_date: 2026-06-11
|
|
429
|
+
last_reviewed: 2026-06-11
|
|
430
|
+
adr: pending
|
|
431
|
+
evidence:
|
|
432
|
+
- docs/work/2026-06-06-kernel-backlog-memory-roadmap/decisions.md#d21--forge-orientrecap-v1-is-bounded-file-assembly-fts5-is-v2
|
|
433
|
+
supersedes: []
|
|
434
|
+
conflicts_with: []
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
**Current decision:** `forge orient` (new) and issue-scoped `forge recap <issue>` (additive mode on the existing activity-recap command) ship first as deterministic bounded file assembly with explicit token budgets; the FTS5 verbatim knowledge index upgrades the same command contract later. The existing no-arg `forge recap` keeps its contract; its Beads JSONL data source migrates to the Kernel projection per the kill list.
|
|
438
|
+
|
|
439
|
+
### PD-20260611-agent-interface-parity
|
|
440
|
+
|
|
441
|
+
```yaml
|
|
442
|
+
id: PD-20260611-agent-interface-parity
|
|
443
|
+
topic: agent-interface.parity
|
|
444
|
+
status: accepted
|
|
445
|
+
decision_date: 2026-06-11
|
|
446
|
+
last_reviewed: 2026-06-11
|
|
447
|
+
adr: pending
|
|
448
|
+
evidence:
|
|
449
|
+
- docs/work/2026-06-06-kernel-backlog-memory-roadmap/decisions.md#d22--forge-agent-interface-parity-layer-the-beads-plugin-equivalent
|
|
450
|
+
- docs/work/2026-06-06-kernel-backlog-memory-roadmap/agent-interface-layer.md
|
|
451
|
+
supersedes: []
|
|
452
|
+
conflicts_with: []
|
|
453
|
+
```
|
|
454
|
+
|
|
455
|
+
**Current decision:** Forge ships a first-class agent interface layer for its own Kernel — session-priming hook (`forge prime`), kernel-facing JSON-first command set, skills as thin CLI wrappers, harness plugin packaging. Agent-interface parity is a named gate in Beads retirement criteria.
|
|
456
|
+
|
|
457
|
+
### PD-20260611-supported-harness-set
|
|
458
|
+
|
|
459
|
+
```yaml
|
|
460
|
+
id: PD-20260611-supported-harness-set
|
|
461
|
+
topic: agent-interface.harnesses
|
|
462
|
+
status: accepted
|
|
463
|
+
decision_date: 2026-06-11
|
|
464
|
+
last_reviewed: 2026-06-11
|
|
465
|
+
adr: pending
|
|
466
|
+
evidence:
|
|
467
|
+
- docs/work/2026-06-06-kernel-backlog-memory-roadmap/agent-interface-layer.md
|
|
468
|
+
supersedes: []
|
|
469
|
+
conflicts_with: []
|
|
470
|
+
```
|
|
471
|
+
|
|
472
|
+
**Current decision:** The supported harness set is Claude Code, Codex, and Cursor; Hermes is the planned addition. Support for other harnesses (Cline, Copilot/GitHub prompts, Kilocode, OpenCode, Roo) is removed — generated command directories, plugin catalogs, detection, and config generation are pruned, and the supported list becomes explicit configuration rather than a hardcoded directory walk.
|
|
473
|
+
|
|
474
|
+
**Implications:**
|
|
475
|
+
|
|
476
|
+
- Onboarding a new harness must require only an adapter (hook wiring + instruction block), zero Kernel changes.
|
|
477
|
+
- Earlier multi-harness support (including the prior partial removal of Antigravity/Windsurf/Aider/Continue) is fully unwound rather than left half-wired.
|
|
478
|
+
|
|
479
|
+
### PD-20260619-skills-canonical-surface
|
|
480
|
+
|
|
481
|
+
```yaml
|
|
482
|
+
id: PD-20260619-skills-canonical-surface
|
|
483
|
+
topic: agent-interface.canonical-source
|
|
484
|
+
status: accepted
|
|
485
|
+
decision_date: 2026-06-19
|
|
486
|
+
adr: pending
|
|
487
|
+
evidence:
|
|
488
|
+
- docs/work/2026-06-19-kernel-completion-plan/kernel-skill-surface-design.md
|
|
489
|
+
supersedes: []
|
|
490
|
+
refines: [PD-20260611-agent-interface-parity]
|
|
491
|
+
conflicts_with: []
|
|
492
|
+
```
|
|
493
|
+
|
|
494
|
+
**Current decision:** The agent surface's canonical source is the neutral `.skills/` registry, synced by the `@forge/skills` CLI to `.claude/.codex/.cursor/.hermes`. No harness is "main." Refines `PD-20260611-agent-interface-parity`, which originally implied a `.claude/`-canonical command surface.
|
|
495
|
+
|
|
496
|
+
### PD-20260619-no-command-surface
|
|
497
|
+
|
|
498
|
+
```yaml
|
|
499
|
+
id: PD-20260619-no-command-surface
|
|
500
|
+
topic: agent-interface.no-commands
|
|
501
|
+
status: accepted
|
|
502
|
+
decision_date: 2026-06-19
|
|
503
|
+
adr: pending
|
|
504
|
+
evidence:
|
|
505
|
+
- docs/work/2026-06-19-kernel-completion-plan/kernel-skill-surface-design.md
|
|
506
|
+
supersedes: []
|
|
507
|
+
conflicts_with: [forge-ny6j, forge-besw.9]
|
|
508
|
+
```
|
|
509
|
+
|
|
510
|
+
**Current decision:** Forge uses skills + agents only — **no command files**. The 7 stage commands migrate to skills; `.claude/commands/`, generated command outputs, and `scripts/sync-commands.js` are deleted. Open issues `forge-ny6j` (neutral command source) and `forge-besw.9` (sync-commands v2) contradict this and must be closed/rewritten.
|
|
511
|
+
|
|
512
|
+
### PD-20260619-agent-sync-all-harnesses
|
|
513
|
+
|
|
514
|
+
```yaml
|
|
515
|
+
id: PD-20260619-agent-sync-all-harnesses
|
|
516
|
+
topic: agent-interface.agent-sync
|
|
517
|
+
status: accepted
|
|
518
|
+
decision_date: 2026-06-19
|
|
519
|
+
adr: pending
|
|
520
|
+
evidence:
|
|
521
|
+
- docs/work/2026-06-19-kernel-completion-plan/kernel-skill-surface-design.md
|
|
522
|
+
supersedes: []
|
|
523
|
+
conflicts_with: []
|
|
524
|
+
```
|
|
525
|
+
|
|
526
|
+
**Current decision:** Extend the `@forge/skills` CLI to sync agent files (not just skills) from a neutral source to every present harness dir (`.claude/.codex/.cursor/.hermes`); Codex/Cursor with no agents concept are a logged no-op, not Claude-only by default.
|
|
527
|
+
|
|
528
|
+
### PD-20260619-harness-neutral-hooks
|
|
529
|
+
|
|
530
|
+
```yaml
|
|
531
|
+
id: PD-20260619-harness-neutral-hooks
|
|
532
|
+
topic: hooks.surface
|
|
533
|
+
status: accepted
|
|
534
|
+
decision_date: 2026-06-19
|
|
535
|
+
adr: pending
|
|
536
|
+
evidence:
|
|
537
|
+
- docs/work/2026-06-19-kernel-completion-plan/kernel-skill-surface-design.md#9
|
|
538
|
+
refines: [PD-20260608-hook-backed-architecture-capture]
|
|
539
|
+
conflicts_with: []
|
|
540
|
+
```
|
|
541
|
+
|
|
542
|
+
**Current decision:** Kernel hooks (SessionStart→`forge prime`, PreCompact→`forge recap`, Stop→`forge export`+sync reminder, PreToolUse guards) have a neutral source (`.skills/hooks.json`) synced per-harness by `skills sync-hooks` (format-aware writers). Git-lifecycle hooks install worktree-proof via `core.hooksPath` at the git-common-dir level (the Hermes/Codex/Cursor enforcement path). Hooks record evidence/proposals only — never silently mutate authority (observer rule).
|
|
543
|
+
|
|
544
|
+
### PD-20260619-unique-feature-surface
|
|
545
|
+
|
|
546
|
+
```yaml
|
|
547
|
+
id: PD-20260619-unique-feature-surface
|
|
548
|
+
topic: agent-interface.unique-features
|
|
549
|
+
status: accepted
|
|
550
|
+
decision_date: 2026-06-19
|
|
551
|
+
adr: pending
|
|
552
|
+
evidence:
|
|
553
|
+
- docs/work/2026-06-19-kernel-completion-plan/kernel-skill-surface-design.md#10
|
|
554
|
+
supersedes: []
|
|
555
|
+
conflicts_with: []
|
|
556
|
+
```
|
|
557
|
+
|
|
558
|
+
**Current decision:** Forge-unique capabilities (claim leases, JSONL portability, readiness, planning buckets, etc.) are surfaced via a 3-way split: **surface-now** (live CLI → thin skills), **must-build** (`remember`/`recall`/`buckets`), and **internal — do NOT surface** (quarantine/evaluators/taxonomy-validation/broker/command-contract). Avoids exposing plumbing that would invite agents to hand-generate revisions/idempotency keys.
|
|
559
|
+
|
|
560
|
+
### PD-20260620-kernel-storage-model-a
|
|
561
|
+
|
|
562
|
+
```yaml
|
|
563
|
+
id: PD-20260620-kernel-storage-model-a
|
|
564
|
+
topic: authority.local.storage.home
|
|
565
|
+
status: accepted
|
|
566
|
+
decision_date: 2026-06-20
|
|
567
|
+
adr: pending
|
|
568
|
+
evidence:
|
|
569
|
+
- docs/work/2026-06-20-kernel-agent-parity/design.md#1-storage--model-a-per-user-home--track-c-later
|
|
570
|
+
extends:
|
|
571
|
+
- PD-20260606-sqlite-local-authority
|
|
572
|
+
supersedes: []
|
|
573
|
+
conflicts_with: []
|
|
574
|
+
```
|
|
575
|
+
|
|
576
|
+
**Current decision:** The live kernel DB lives in a per-user home `~/.forge/projects/<uuid>/kernel.sqlite` with a central `~/.forge/registry.json`, a committed `<repo>/.forge/project.json` UUID marker for stable identity, and an opt-in committable JSONL projection (`issues.jsonl`) as the share-or-not knob. Chosen over in-repo `.forge/` (B) and today's `.git/forge/` (C) because only a central home makes a multi-project frontend natural. This is **track C** (own design + implementation later).
|
|
577
|
+
|
|
578
|
+
**Implications:**
|
|
579
|
+
|
|
580
|
+
- Live binary DB is never pushed; sharing is via the JSONL projection only.
|
|
581
|
+
- Config splits: shared/team config committed in-repo; personal config + live data central.
|
|
582
|
+
- Fresh clone registers on first `forge` run from the committed UUID marker, optionally seeding from `issues.jsonl`.
|
|
583
|
+
- Enables a `forge serve` daemon + localhost web/desktop frontend over the same broker.
|
|
584
|
+
|
|
585
|
+
### PD-20260620-cli-agent-first-rendering
|
|
586
|
+
|
|
587
|
+
```yaml
|
|
588
|
+
id: PD-20260620-cli-agent-first-rendering
|
|
589
|
+
topic: cli.rendering
|
|
590
|
+
status: accepted
|
|
591
|
+
decision_date: 2026-06-20
|
|
592
|
+
adr: pending
|
|
593
|
+
evidence:
|
|
594
|
+
- docs/work/2026-06-20-kernel-agent-parity/design.md#2-cli-rendering--agent-first
|
|
595
|
+
supersedes: []
|
|
596
|
+
conflicts_with: []
|
|
597
|
+
```
|
|
598
|
+
|
|
599
|
+
**Current decision:** The issue CLI is rendered **agent-first**, not human-first. Skip pretty human tables (agents read JSON + summarize; the future frontend covers direct visual use). Invest instead in making the CLI more agent-friendly — preserve the full contract envelope (`schema_version` + `next_commands`) through the CLI boundary, always-on.
|
|
600
|
+
|
|
601
|
+
**Implications:**
|
|
602
|
+
|
|
603
|
+
- No effort spent on CLI table/color formatting.
|
|
604
|
+
- `normalizeIssueResult` must stop flattening the kernel envelope (KAP-1).
|
|
605
|
+
- The frontend (track C) is the human-render layer.
|
|
606
|
+
|
|
607
|
+
### PD-20260620-kernel-agent-parity-backlog
|
|
608
|
+
|
|
609
|
+
```yaml
|
|
610
|
+
id: PD-20260620-kernel-agent-parity-backlog
|
|
611
|
+
topic: parity.kernel-beads
|
|
612
|
+
status: accepted
|
|
613
|
+
decision_date: 2026-06-20
|
|
614
|
+
adr: pending
|
|
615
|
+
evidence:
|
|
616
|
+
- docs/work/2026-06-20-kernel-agent-parity/design.md#3-dont-clone-beads-wholesale--kernel-agent-parity-kap-backlog
|
|
617
|
+
extends:
|
|
618
|
+
- PD-20260611-agent-interface-parity
|
|
619
|
+
supersedes: []
|
|
620
|
+
conflicts_with: []
|
|
621
|
+
```
|
|
622
|
+
|
|
623
|
+
**Current decision:** Close agent-facing gaps vs Beads selectively (epic KAP-0, 12 tasks, 3 waves) rather than cloning Beads wholesale. Wave 1 = KAP-1,2,6,7,9 (envelope, projection enrichment, list filters, derived queries, batch close). Deferred: defer/supersede/human/doctor/remember/formula. Backlog is filed into the kernel itself (dogfood).
|
|
624
|
+
|
|
625
|
+
**Implications:**
|
|
626
|
+
|
|
627
|
+
- Output projection (`rowToIssueSummary`) and `ISSUE_SUMMARY_SCHEMA` gain parent_id/dependencies/labels/priority/created_at — projection additions, not new storage.
|
|
628
|
+
- Wave 1 tasks share files (`sqlite-driver.js`, `issue-command-contract.js`, `_issue.js`) → implement sequentially, KAP-2 first.
|
|
629
|
+
- Beads `dolt push/pull/sync` is not a parity gap — it is the JSONL-projection model (PD-20260620-kernel-storage-model-a).
|
|
630
|
+
|
|
631
|
+
## Registry update rules
|
|
632
|
+
|
|
633
|
+
### When to update this file
|
|
634
|
+
|
|
635
|
+
Update this file when a decision:
|
|
636
|
+
|
|
637
|
+
- affects multiple components,
|
|
638
|
+
- changes authority/storage boundaries,
|
|
639
|
+
- changes public CLI/MCP/API behavior,
|
|
640
|
+
- changes backlog/workflow ontology,
|
|
641
|
+
- changes agent/session/observer behavior,
|
|
642
|
+
- supersedes a previous accepted project direction,
|
|
643
|
+
- future agents or team members will need before starting work.
|
|
644
|
+
|
|
645
|
+
### When to keep decision only in a work folder
|
|
646
|
+
|
|
647
|
+
Keep it local to `docs/work/<date>-<slug>/decisions.md` when it is:
|
|
648
|
+
|
|
649
|
+
- scoped to one implementation task,
|
|
650
|
+
- temporary spike/evaluator output,
|
|
651
|
+
- a low-risk local ambiguity resolution,
|
|
652
|
+
- evidence for a larger decision but not itself global direction.
|
|
653
|
+
|
|
654
|
+
### When to create an ADR
|
|
655
|
+
|
|
656
|
+
Create an ADR under `docs/adr/` when a decision is cross-cutting, hard to reverse, or expected to govern future code/reviews. ADRs should be immutable after acceptance; supersede with a new ADR instead of rewriting history.
|
|
657
|
+
|
|
658
|
+
## Conflict and supersession rules
|
|
659
|
+
|
|
660
|
+
- New material decision: create a new `PD-*` entry.
|
|
661
|
+
- Replacing old direction: mark old entry `superseded` and point to the new entry.
|
|
662
|
+
- Conflict discovered: create a conflict/proposal record in Kernel/KnowledgeStore later; until then, record the conflict in the relevant work folder and link it here if accepted.
|
|
663
|
+
- Two active accepted decisions with the same `topic` should fail future decision-registry validation.
|
|
664
|
+
|
|
665
|
+
## Future Forge commands
|
|
666
|
+
|
|
667
|
+
This registry should eventually be indexed by KnowledgeStore and surfaced by:
|
|
668
|
+
|
|
669
|
+
```bash
|
|
670
|
+
forge architecture check
|
|
671
|
+
forge architecture impact
|
|
672
|
+
forge design show
|
|
673
|
+
forge design decisions
|
|
674
|
+
forge design check
|
|
675
|
+
forge knowledge search <query>
|
|
676
|
+
forge orient --json
|
|
677
|
+
forge recap <issue> --json
|
|
678
|
+
```
|
|
679
|
+
|
|
680
|
+
Agents should be taught:
|
|
681
|
+
|
|
682
|
+
1. read `docs/PROJECT_DESIGN.md` first for current architecture;
|
|
683
|
+
2. follow ADR/work-folder links for rationale;
|
|
684
|
+
3. update or supersede decisions when changing architecture;
|
|
685
|
+
4. never treat derived summaries as accepted truth without a registry/Kernel decision event.
|