@warpgogol/forge 0.3.1
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/AGENTS.md +149 -0
- package/README.md +164 -0
- package/bin/cli.js +16 -0
- package/dist/bin/cli.d.ts +3 -0
- package/dist/bin/cli.d.ts.map +1 -0
- package/dist/bin/cli.js +265 -0
- package/dist/bin/cli.js.map +1 -0
- package/dist/os/adr/adr.module.d.ts +3 -0
- package/dist/os/adr/adr.module.d.ts.map +1 -0
- package/dist/os/adr/adr.module.js +112 -0
- package/dist/os/adr/adr.module.js.map +1 -0
- package/dist/os/adr/frontmatter-io.d.ts +11 -0
- package/dist/os/adr/frontmatter-io.d.ts.map +1 -0
- package/dist/os/adr/frontmatter-io.js +64 -0
- package/dist/os/adr/frontmatter-io.js.map +1 -0
- package/dist/os/adr/handlers/archive.d.ts +24 -0
- package/dist/os/adr/handlers/archive.d.ts.map +1 -0
- package/dist/os/adr/handlers/archive.js +162 -0
- package/dist/os/adr/handlers/archive.js.map +1 -0
- package/dist/os/adr/handlers/list-create.d.ts +5 -0
- package/dist/os/adr/handlers/list-create.d.ts.map +1 -0
- package/dist/os/adr/handlers/list-create.js +165 -0
- package/dist/os/adr/handlers/list-create.js.map +1 -0
- package/dist/os/adr/handlers/validate.d.ts +4 -0
- package/dist/os/adr/handlers/validate.d.ts.map +1 -0
- package/dist/os/adr/handlers/validate.js +219 -0
- package/dist/os/adr/handlers/validate.js.map +1 -0
- package/dist/os/adr/index.d.ts +8 -0
- package/dist/os/adr/index.d.ts.map +1 -0
- package/dist/os/adr/index.js +18 -0
- package/dist/os/adr/index.js.map +1 -0
- package/dist/os/adr/types.d.ts +59 -0
- package/dist/os/adr/types.d.ts.map +1 -0
- package/dist/os/adr/types.js +54 -0
- package/dist/os/adr/types.js.map +1 -0
- package/dist/os/audit/audit.module.d.ts +3 -0
- package/dist/os/audit/audit.module.d.ts.map +1 -0
- package/dist/os/audit/audit.module.js +44 -0
- package/dist/os/audit/audit.module.js.map +1 -0
- package/dist/os/audit/frontmatter-io.d.ts +12 -0
- package/dist/os/audit/frontmatter-io.d.ts.map +1 -0
- package/dist/os/audit/frontmatter-io.js +73 -0
- package/dist/os/audit/frontmatter-io.js.map +1 -0
- package/dist/os/audit/handlers/archive.d.ts +4 -0
- package/dist/os/audit/handlers/archive.d.ts.map +1 -0
- package/dist/os/audit/handlers/archive.js +167 -0
- package/dist/os/audit/handlers/archive.js.map +1 -0
- package/dist/os/audit/index.d.ts +6 -0
- package/dist/os/audit/index.d.ts.map +1 -0
- package/dist/os/audit/index.js +16 -0
- package/dist/os/audit/index.js.map +1 -0
- package/dist/os/audit/types.d.ts +12 -0
- package/dist/os/audit/types.d.ts.map +1 -0
- package/dist/os/audit/types.js +17 -0
- package/dist/os/audit/types.js.map +1 -0
- package/dist/os/compass/compass.module.d.ts +3 -0
- package/dist/os/compass/compass.module.d.ts.map +1 -0
- package/dist/os/compass/compass.module.js +162 -0
- package/dist/os/compass/compass.module.js.map +1 -0
- package/dist/os/compass/handlers/compass-audit-handler.d.ts +36 -0
- package/dist/os/compass/handlers/compass-audit-handler.d.ts.map +1 -0
- package/dist/os/compass/handlers/compass-audit-handler.js +238 -0
- package/dist/os/compass/handlers/compass-audit-handler.js.map +1 -0
- package/dist/os/compass/handlers/compass-change-summary-handler.d.ts +19 -0
- package/dist/os/compass/handlers/compass-change-summary-handler.d.ts.map +1 -0
- package/dist/os/compass/handlers/compass-change-summary-handler.js +205 -0
- package/dist/os/compass/handlers/compass-change-summary-handler.js.map +1 -0
- package/dist/os/compass/handlers/compass-inventory-handler.d.ts +28 -0
- package/dist/os/compass/handlers/compass-inventory-handler.d.ts.map +1 -0
- package/dist/os/compass/handlers/compass-inventory-handler.js +213 -0
- package/dist/os/compass/handlers/compass-inventory-handler.js.map +1 -0
- package/dist/os/compass/handlers/compass-inventory.d.ts +30 -0
- package/dist/os/compass/handlers/compass-inventory.d.ts.map +1 -0
- package/dist/os/compass/handlers/compass-inventory.js +418 -0
- package/dist/os/compass/handlers/compass-inventory.js.map +1 -0
- package/dist/os/compass/handlers/git-revision.d.ts +8 -0
- package/dist/os/compass/handlers/git-revision.d.ts.map +1 -0
- package/dist/os/compass/handlers/git-revision.js +99 -0
- package/dist/os/compass/handlers/git-revision.js.map +1 -0
- package/dist/os/compass/handlers/resolve-scan-root.d.ts +3 -0
- package/dist/os/compass/handlers/resolve-scan-root.d.ts.map +1 -0
- package/dist/os/compass/handlers/resolve-scan-root.js +41 -0
- package/dist/os/compass/handlers/resolve-scan-root.js.map +1 -0
- package/dist/os/compass/index.d.ts +8 -0
- package/dist/os/compass/index.d.ts.map +1 -0
- package/dist/os/compass/index.js +19 -0
- package/dist/os/compass/index.js.map +1 -0
- package/dist/os/core/core.module.d.ts +3 -0
- package/dist/os/core/core.module.d.ts.map +1 -0
- package/dist/os/core/core.module.js +318 -0
- package/dist/os/core/core.module.js.map +1 -0
- package/dist/os/core/index.d.ts +2 -0
- package/dist/os/core/index.d.ts.map +1 -0
- package/dist/os/core/index.js +13 -0
- package/dist/os/core/index.js.map +1 -0
- package/dist/os/mission/handlers/archive.d.ts +4 -0
- package/dist/os/mission/handlers/archive.d.ts.map +1 -0
- package/dist/os/mission/handlers/archive.js +209 -0
- package/dist/os/mission/handlers/archive.js.map +1 -0
- package/dist/os/mission/index.d.ts +2 -0
- package/dist/os/mission/index.d.ts.map +1 -0
- package/dist/os/mission/index.js +2 -0
- package/dist/os/mission/index.js.map +1 -0
- package/dist/os/mission/mission.module.d.ts +3 -0
- package/dist/os/mission/mission.module.d.ts.map +1 -0
- package/dist/os/mission/mission.module.js +44 -0
- package/dist/os/mission/mission.module.js.map +1 -0
- package/dist/os/mission/types.d.ts +23 -0
- package/dist/os/mission/types.d.ts.map +1 -0
- package/dist/os/mission/types.js +18 -0
- package/dist/os/mission/types.js.map +1 -0
- package/dist/os/naming/index.d.ts +3 -0
- package/dist/os/naming/index.d.ts.map +1 -0
- package/dist/os/naming/index.js +14 -0
- package/dist/os/naming/index.js.map +1 -0
- package/dist/os/naming/naming-convention.d.ts +25 -0
- package/dist/os/naming/naming-convention.d.ts.map +1 -0
- package/dist/os/naming/naming-convention.js +324 -0
- package/dist/os/naming/naming-convention.js.map +1 -0
- package/dist/os/naming/naming.module.d.ts +3 -0
- package/dist/os/naming/naming.module.d.ts.map +1 -0
- package/dist/os/naming/naming.module.js +33 -0
- package/dist/os/naming/naming.module.js.map +1 -0
- package/dist/os/plan/frontmatter-io.d.ts +12 -0
- package/dist/os/plan/frontmatter-io.d.ts.map +1 -0
- package/dist/os/plan/frontmatter-io.js +71 -0
- package/dist/os/plan/frontmatter-io.js.map +1 -0
- package/dist/os/plan/handlers/archive.d.ts +4 -0
- package/dist/os/plan/handlers/archive.d.ts.map +1 -0
- package/dist/os/plan/handlers/archive.js +166 -0
- package/dist/os/plan/handlers/archive.js.map +1 -0
- package/dist/os/plan/index.d.ts +6 -0
- package/dist/os/plan/index.d.ts.map +1 -0
- package/dist/os/plan/index.js +16 -0
- package/dist/os/plan/index.js.map +1 -0
- package/dist/os/plan/plan.module.d.ts +3 -0
- package/dist/os/plan/plan.module.d.ts.map +1 -0
- package/dist/os/plan/plan.module.js +44 -0
- package/dist/os/plan/plan.module.js.map +1 -0
- package/dist/os/plan/types.d.ts +12 -0
- package/dist/os/plan/types.d.ts.map +1 -0
- package/dist/os/plan/types.js +17 -0
- package/dist/os/plan/types.js.map +1 -0
- package/dist/os/rfc/acceptance.d.ts +15 -0
- package/dist/os/rfc/acceptance.d.ts.map +1 -0
- package/dist/os/rfc/acceptance.js +290 -0
- package/dist/os/rfc/acceptance.js.map +1 -0
- package/dist/os/rfc/decision-log.d.ts +6 -0
- package/dist/os/rfc/decision-log.d.ts.map +1 -0
- package/dist/os/rfc/decision-log.js +269 -0
- package/dist/os/rfc/decision-log.js.map +1 -0
- package/dist/os/rfc/dna-trace.d.ts +27 -0
- package/dist/os/rfc/dna-trace.d.ts.map +1 -0
- package/dist/os/rfc/dna-trace.js +214 -0
- package/dist/os/rfc/dna-trace.js.map +1 -0
- package/dist/os/rfc/frontmatter-io.d.ts +14 -0
- package/dist/os/rfc/frontmatter-io.d.ts.map +1 -0
- package/dist/os/rfc/frontmatter-io.js +98 -0
- package/dist/os/rfc/frontmatter-io.js.map +1 -0
- package/dist/os/rfc/handlers/archive.d.ts +24 -0
- package/dist/os/rfc/handlers/archive.d.ts.map +1 -0
- package/dist/os/rfc/handlers/archive.js +161 -0
- package/dist/os/rfc/handlers/archive.js.map +1 -0
- package/dist/os/rfc/handlers/check.d.ts +4 -0
- package/dist/os/rfc/handlers/check.d.ts.map +1 -0
- package/dist/os/rfc/handlers/check.js +195 -0
- package/dist/os/rfc/handlers/check.js.map +1 -0
- package/dist/os/rfc/handlers/implement-stamp.d.ts +4 -0
- package/dist/os/rfc/handlers/implement-stamp.d.ts.map +1 -0
- package/dist/os/rfc/handlers/implement-stamp.js +334 -0
- package/dist/os/rfc/handlers/implement-stamp.js.map +1 -0
- package/dist/os/rfc/handlers/index-graph.d.ts +13 -0
- package/dist/os/rfc/handlers/index-graph.d.ts.map +1 -0
- package/dist/os/rfc/handlers/index-graph.js +189 -0
- package/dist/os/rfc/handlers/index-graph.js.map +1 -0
- package/dist/os/rfc/handlers/lifecycle.d.ts +13 -0
- package/dist/os/rfc/handlers/lifecycle.d.ts.map +1 -0
- package/dist/os/rfc/handlers/lifecycle.js +150 -0
- package/dist/os/rfc/handlers/lifecycle.js.map +1 -0
- package/dist/os/rfc/handlers/list-create.d.ts +6 -0
- package/dist/os/rfc/handlers/list-create.d.ts.map +1 -0
- package/dist/os/rfc/handlers/list-create.js +235 -0
- package/dist/os/rfc/handlers/list-create.js.map +1 -0
- package/dist/os/rfc/handlers/pipeline-status.d.ts +26 -0
- package/dist/os/rfc/handlers/pipeline-status.d.ts.map +1 -0
- package/dist/os/rfc/handlers/pipeline-status.js +124 -0
- package/dist/os/rfc/handlers/pipeline-status.js.map +1 -0
- package/dist/os/rfc/handlers/shared.d.ts +22 -0
- package/dist/os/rfc/handlers/shared.d.ts.map +1 -0
- package/dist/os/rfc/handlers/shared.js +99 -0
- package/dist/os/rfc/handlers/shared.js.map +1 -0
- package/dist/os/rfc/handlers/supersede-propose.d.ts +4 -0
- package/dist/os/rfc/handlers/supersede-propose.d.ts.map +1 -0
- package/dist/os/rfc/handlers/supersede-propose.js +200 -0
- package/dist/os/rfc/handlers/supersede-propose.js.map +1 -0
- package/dist/os/rfc/handlers/validate-rules.d.ts +29 -0
- package/dist/os/rfc/handlers/validate-rules.d.ts.map +1 -0
- package/dist/os/rfc/handlers/validate-rules.js +461 -0
- package/dist/os/rfc/handlers/validate-rules.js.map +1 -0
- package/dist/os/rfc/handlers/validate.d.ts +4 -0
- package/dist/os/rfc/handlers/validate.d.ts.map +1 -0
- package/dist/os/rfc/handlers/validate.js +101 -0
- package/dist/os/rfc/handlers/validate.js.map +1 -0
- package/dist/os/rfc/handlers.d.ts +7 -0
- package/dist/os/rfc/handlers.d.ts.map +1 -0
- package/dist/os/rfc/handlers.js +19 -0
- package/dist/os/rfc/handlers.js.map +1 -0
- package/dist/os/rfc/index.d.ts +18 -0
- package/dist/os/rfc/index.d.ts.map +1 -0
- package/dist/os/rfc/index.js +24 -0
- package/dist/os/rfc/index.js.map +1 -0
- package/dist/os/rfc/rfc.module.d.ts +3 -0
- package/dist/os/rfc/rfc.module.d.ts.map +1 -0
- package/dist/os/rfc/rfc.module.js +355 -0
- package/dist/os/rfc/rfc.module.js.map +1 -0
- package/dist/os/rfc/types.d.ts +448 -0
- package/dist/os/rfc/types.d.ts.map +1 -0
- package/dist/os/rfc/types.js +95 -0
- package/dist/os/rfc/types.js.map +1 -0
- package/dist/os/rfc/verification-evidence.d.ts +8 -0
- package/dist/os/rfc/verification-evidence.d.ts.map +1 -0
- package/dist/os/rfc/verification-evidence.js +182 -0
- package/dist/os/rfc/verification-evidence.js.map +1 -0
- package/dist/os/session/atif-parser.d.ts +29 -0
- package/dist/os/session/atif-parser.d.ts.map +1 -0
- package/dist/os/session/atif-parser.js +138 -0
- package/dist/os/session/atif-parser.js.map +1 -0
- package/dist/os/session/frontmatter-io.d.ts +31 -0
- package/dist/os/session/frontmatter-io.d.ts.map +1 -0
- package/dist/os/session/frontmatter-io.js +146 -0
- package/dist/os/session/frontmatter-io.js.map +1 -0
- package/dist/os/session/handlers/archive.d.ts +4 -0
- package/dist/os/session/handlers/archive.d.ts.map +1 -0
- package/dist/os/session/handlers/archive.js +209 -0
- package/dist/os/session/handlers/archive.js.map +1 -0
- package/dist/os/session/handlers/list.d.ts +4 -0
- package/dist/os/session/handlers/list.d.ts.map +1 -0
- package/dist/os/session/handlers/list.js +147 -0
- package/dist/os/session/handlers/list.js.map +1 -0
- package/dist/os/session/handlers/save.d.ts +6 -0
- package/dist/os/session/handlers/save.d.ts.map +1 -0
- package/dist/os/session/handlers/save.js +285 -0
- package/dist/os/session/handlers/save.js.map +1 -0
- package/dist/os/session/handlers/validate.d.ts +4 -0
- package/dist/os/session/handlers/validate.d.ts.map +1 -0
- package/dist/os/session/handlers/validate.js +188 -0
- package/dist/os/session/handlers/validate.js.map +1 -0
- package/dist/os/session/index.d.ts +9 -0
- package/dist/os/session/index.d.ts.map +1 -0
- package/dist/os/session/index.js +20 -0
- package/dist/os/session/index.js.map +1 -0
- package/dist/os/session/session.module.d.ts +3 -0
- package/dist/os/session/session.module.d.ts.map +1 -0
- package/dist/os/session/session.module.js +113 -0
- package/dist/os/session/session.module.js.map +1 -0
- package/dist/os/session/types.d.ts +101 -0
- package/dist/os/session/types.d.ts.map +1 -0
- package/dist/os/session/types.js +52 -0
- package/dist/os/session/types.js.map +1 -0
- package/dist/os/spec/spec-materialize.d.ts +21 -0
- package/dist/os/spec/spec-materialize.d.ts.map +1 -0
- package/dist/os/spec/spec-materialize.js +342 -0
- package/dist/os/spec/spec-materialize.js.map +1 -0
- package/dist/os/spec/spec-schema.d.ts +132 -0
- package/dist/os/spec/spec-schema.d.ts.map +1 -0
- package/dist/os/spec/spec-schema.js +118 -0
- package/dist/os/spec/spec-schema.js.map +1 -0
- package/dist/os/spec/spec-status.d.ts +33 -0
- package/dist/os/spec/spec-status.d.ts.map +1 -0
- package/dist/os/spec/spec-status.js +222 -0
- package/dist/os/spec/spec-status.js.map +1 -0
- package/dist/os/spec/spec-validate.d.ts +4 -0
- package/dist/os/spec/spec-validate.d.ts.map +1 -0
- package/dist/os/spec/spec-validate.js +435 -0
- package/dist/os/spec/spec-validate.js.map +1 -0
- package/dist/os/spec/spec.module.d.ts +3 -0
- package/dist/os/spec/spec.module.d.ts.map +1 -0
- package/dist/os/spec/spec.module.js +67 -0
- package/dist/os/spec/spec.module.js.map +1 -0
- package/dist/os/werkstatt/handlers/lock.d.ts +10 -0
- package/dist/os/werkstatt/handlers/lock.d.ts.map +1 -0
- package/dist/os/werkstatt/handlers/lock.js +127 -0
- package/dist/os/werkstatt/handlers/lock.js.map +1 -0
- package/dist/os/werkstatt/handlers/schema.d.ts +32 -0
- package/dist/os/werkstatt/handlers/schema.d.ts.map +1 -0
- package/dist/os/werkstatt/handlers/schema.js +41 -0
- package/dist/os/werkstatt/handlers/schema.js.map +1 -0
- package/dist/os/werkstatt/handlers/werkstatt-lock-recover.d.ts +15 -0
- package/dist/os/werkstatt/handlers/werkstatt-lock-recover.d.ts.map +1 -0
- package/dist/os/werkstatt/handlers/werkstatt-lock-recover.js +142 -0
- package/dist/os/werkstatt/handlers/werkstatt-lock-recover.js.map +1 -0
- package/dist/os/werkstatt/handlers/werkstatt-lock-status.d.ts +18 -0
- package/dist/os/werkstatt/handlers/werkstatt-lock-status.d.ts.map +1 -0
- package/dist/os/werkstatt/handlers/werkstatt-lock-status.js +43 -0
- package/dist/os/werkstatt/handlers/werkstatt-lock-status.js.map +1 -0
- package/dist/os/werkstatt/handlers/werkstatt-operation-validate.d.ts +11 -0
- package/dist/os/werkstatt/handlers/werkstatt-operation-validate.d.ts.map +1 -0
- package/dist/os/werkstatt/handlers/werkstatt-operation-validate.js +79 -0
- package/dist/os/werkstatt/handlers/werkstatt-operation-validate.js.map +1 -0
- package/dist/os/werkstatt/index.d.ts +7 -0
- package/dist/os/werkstatt/index.d.ts.map +1 -0
- package/dist/os/werkstatt/index.js +18 -0
- package/dist/os/werkstatt/index.js.map +1 -0
- package/dist/os/werkstatt/werkstatt.module.d.ts +3 -0
- package/dist/os/werkstatt/werkstatt.module.d.ts.map +1 -0
- package/dist/os/werkstatt/werkstatt.module.js +58 -0
- package/dist/os/werkstatt/werkstatt.module.js.map +1 -0
- package/dist/os/workflow/handlers.d.ts +12 -0
- package/dist/os/workflow/handlers.d.ts.map +1 -0
- package/dist/os/workflow/handlers.js +254 -0
- package/dist/os/workflow/handlers.js.map +1 -0
- package/dist/os/workflow/index.d.ts +4 -0
- package/dist/os/workflow/index.d.ts.map +1 -0
- package/dist/os/workflow/index.js +18 -0
- package/dist/os/workflow/index.js.map +1 -0
- package/dist/os/workflow/types.d.ts +69 -0
- package/dist/os/workflow/types.d.ts.map +1 -0
- package/dist/os/workflow/types.js +23 -0
- package/dist/os/workflow/types.js.map +1 -0
- package/dist/os/workflow/workflow.module.d.ts +3 -0
- package/dist/os/workflow/workflow.module.d.ts.map +1 -0
- package/dist/os/workflow/workflow.module.js +48 -0
- package/dist/os/workflow/workflow.module.js.map +1 -0
- package/dist/src/cli-output.d.ts +5 -0
- package/dist/src/cli-output.d.ts.map +1 -0
- package/dist/src/cli-output.js +52 -0
- package/dist/src/cli-output.js.map +1 -0
- package/dist/src/config/forge-config.d.ts +170 -0
- package/dist/src/config/forge-config.d.ts.map +1 -0
- package/dist/src/config/forge-config.js +259 -0
- package/dist/src/config/forge-config.js.map +1 -0
- package/dist/src/forge-module.d.ts +16 -0
- package/dist/src/forge-module.d.ts.map +1 -0
- package/dist/src/forge-module.js +15 -0
- package/dist/src/forge-module.js.map +1 -0
- package/dist/src/index.d.ts +30 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +48 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/migration-adapters/git-utils.d.ts +3 -0
- package/dist/src/migration-adapters/git-utils.d.ts.map +1 -0
- package/dist/src/migration-adapters/git-utils.js +46 -0
- package/dist/src/migration-adapters/git-utils.js.map +1 -0
- package/dist/src/migration-adapters/ignored-files.d.ts +12 -0
- package/dist/src/migration-adapters/ignored-files.d.ts.map +1 -0
- package/dist/src/migration-adapters/ignored-files.js +190 -0
- package/dist/src/migration-adapters/ignored-files.js.map +1 -0
- package/dist/src/migration-adapters/index.d.ts +8 -0
- package/dist/src/migration-adapters/index.d.ts.map +1 -0
- package/dist/src/migration-adapters/index.js +17 -0
- package/dist/src/migration-adapters/index.js.map +1 -0
- package/dist/src/migration-adapters/node-typescript-pnpm/index.d.ts +3 -0
- package/dist/src/migration-adapters/node-typescript-pnpm/index.d.ts.map +1 -0
- package/dist/src/migration-adapters/node-typescript-pnpm/index.js +141 -0
- package/dist/src/migration-adapters/node-typescript-pnpm/index.js.map +1 -0
- package/dist/src/migration-adapters/phaser-pnpm/index.d.ts +3 -0
- package/dist/src/migration-adapters/phaser-pnpm/index.d.ts.map +1 -0
- package/dist/src/migration-adapters/phaser-pnpm/index.js +142 -0
- package/dist/src/migration-adapters/phaser-pnpm/index.js.map +1 -0
- package/dist/src/migration-adapters/registry.d.ts +6 -0
- package/dist/src/migration-adapters/registry.d.ts.map +1 -0
- package/dist/src/migration-adapters/registry.js +58 -0
- package/dist/src/migration-adapters/registry.js.map +1 -0
- package/dist/src/migration-adapters/types.d.ts +35 -0
- package/dist/src/migration-adapters/types.d.ts.map +1 -0
- package/dist/src/migration-adapters/types.js +31 -0
- package/dist/src/migration-adapters/types.js.map +1 -0
- package/dist/src/onboarding/agents-generate.d.ts +11 -0
- package/dist/src/onboarding/agents-generate.d.ts.map +1 -0
- package/dist/src/onboarding/agents-generate.js +415 -0
- package/dist/src/onboarding/agents-generate.js.map +1 -0
- package/dist/src/onboarding/create.d.ts +12 -0
- package/dist/src/onboarding/create.d.ts.map +1 -0
- package/dist/src/onboarding/create.js +232 -0
- package/dist/src/onboarding/create.js.map +1 -0
- package/dist/src/onboarding/doctor.d.ts +30 -0
- package/dist/src/onboarding/doctor.d.ts.map +1 -0
- package/dist/src/onboarding/doctor.js +380 -0
- package/dist/src/onboarding/doctor.js.map +1 -0
- package/dist/src/onboarding/extended-behavioral-layer.d.ts +10 -0
- package/dist/src/onboarding/extended-behavioral-layer.d.ts.map +1 -0
- package/dist/src/onboarding/extended-behavioral-layer.js +82 -0
- package/dist/src/onboarding/extended-behavioral-layer.js.map +1 -0
- package/dist/src/onboarding/init.d.ts +25 -0
- package/dist/src/onboarding/init.d.ts.map +1 -0
- package/dist/src/onboarding/init.js +260 -0
- package/dist/src/onboarding/init.js.map +1 -0
- package/dist/src/onboarding/scaffold-project.d.ts +12 -0
- package/dist/src/onboarding/scaffold-project.d.ts.map +1 -0
- package/dist/src/onboarding/scaffold-project.js +167 -0
- package/dist/src/onboarding/scaffold-project.js.map +1 -0
- package/dist/src/onboarding/scaffold.d.ts +15 -0
- package/dist/src/onboarding/scaffold.d.ts.map +1 -0
- package/dist/src/onboarding/scaffold.js +120 -0
- package/dist/src/onboarding/scaffold.js.map +1 -0
- package/dist/src/onboarding/upgrade.d.ts +17 -0
- package/dist/src/onboarding/upgrade.d.ts.map +1 -0
- package/dist/src/onboarding/upgrade.js +293 -0
- package/dist/src/onboarding/upgrade.js.map +1 -0
- package/dist/src/profiles/stack-profile.d.ts +51 -0
- package/dist/src/profiles/stack-profile.d.ts.map +1 -0
- package/dist/src/profiles/stack-profile.js +119 -0
- package/dist/src/profiles/stack-profile.js.map +1 -0
- package/dist/src/registry.d.ts +38 -0
- package/dist/src/registry.d.ts.map +1 -0
- package/dist/src/registry.js +135 -0
- package/dist/src/registry.js.map +1 -0
- package/dist/src/skill-schema.d.ts +30 -0
- package/dist/src/skill-schema.d.ts.map +1 -0
- package/dist/src/skill-schema.js +34 -0
- package/dist/src/skill-schema.js.map +1 -0
- package/dist/src/types.d.ts +153 -0
- package/dist/src/types.d.ts.map +1 -0
- package/dist/src/types.js +17 -0
- package/dist/src/types.js.map +1 -0
- package/dist/src/utils/fs-atomic.d.ts +7 -0
- package/dist/src/utils/fs-atomic.d.ts.map +1 -0
- package/dist/src/utils/fs-atomic.js +81 -0
- package/dist/src/utils/fs-atomic.js.map +1 -0
- package/dist/src/utils/fs-idempotent.d.ts +2 -0
- package/dist/src/utils/fs-idempotent.d.ts.map +1 -0
- package/dist/src/utils/fs-idempotent.js +30 -0
- package/dist/src/utils/fs-idempotent.js.map +1 -0
- package/dist/src/utils/fs.d.ts +8 -0
- package/dist/src/utils/fs.d.ts.map +1 -0
- package/dist/src/utils/fs.js +60 -0
- package/dist/src/utils/fs.js.map +1 -0
- package/dist/src/utils/generated-marker.d.ts +21 -0
- package/dist/src/utils/generated-marker.d.ts.map +1 -0
- package/dist/src/utils/generated-marker.js +128 -0
- package/dist/src/utils/generated-marker.js.map +1 -0
- package/dist/src/utils/hash.d.ts +2 -0
- package/dist/src/utils/hash.d.ts.map +1 -0
- package/dist/src/utils/hash.js +18 -0
- package/dist/src/utils/hash.js.map +1 -0
- package/dist/src/utils/index.d.ts +7 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/index.js +19 -0
- package/dist/src/utils/index.js.map +1 -0
- package/dist/src/utils/string-utils.d.ts +2 -0
- package/dist/src/utils/string-utils.d.ts.map +1 -0
- package/dist/src/utils/string-utils.js +19 -0
- package/dist/src/utils/string-utils.js.map +1 -0
- package/dist/src/validators/port-validate.d.ts +12 -0
- package/dist/src/validators/port-validate.d.ts.map +1 -0
- package/dist/src/validators/port-validate.js +73 -0
- package/dist/src/validators/port-validate.js.map +1 -0
- package/dist/src/validators/skill-validate.d.ts +14 -0
- package/dist/src/validators/skill-validate.d.ts.map +1 -0
- package/dist/src/validators/skill-validate.js +487 -0
- package/dist/src/validators/skill-validate.js.map +1 -0
- package/os/rfc/rfc-0000-template.md +222 -0
- package/package.json +262 -0
- package/profiles/astro-typescript-turborepo.yaml +144 -0
- package/profiles/forge-shell.yaml +77 -0
- package/profiles/phaser-turborepo.yaml +144 -0
- package/skills/_shared/fo-pipeline-conventions.md +119 -0
- package/skills/_shared/fo-session-summary.md +95 -0
- package/skills/fo/fo-add-tests/SKILL.md +166 -0
- package/skills/fo/fo-add-tests/mocking.md +60 -0
- package/skills/fo/fo-add-tests/pbt-guide.md +193 -0
- package/skills/fo/fo-add-tests/tests-reference.md +92 -0
- package/skills/fo/fo-architecture/SKILL.md +83 -0
- package/skills/fo/fo-architecture/architecture-vocabulary.md +104 -0
- package/skills/fo/fo-architecture/deepening.md +37 -0
- package/skills/fo/fo-architecture/design-it-twice.md +44 -0
- package/skills/fo/fo-architecture/html-report.md +104 -0
- package/skills/fo/fo-compass-annotate/SKILL.md +128 -0
- package/skills/fo/fo-compass-annotate/reference/comment-styles.md +25 -0
- package/skills/fo/fo-compass-annotate/reference/learned-principles.md +12 -0
- package/skills/fo/fo-compass-annotate/reference/risk-patterns.md +23 -0
- package/skills/fo/fo-compass-annotate/templates/audit-prompt.md +36 -0
- package/skills/fo/fo-compass-annotate/templates/header-format.md +57 -0
- package/skills/fo/fo-compass-annotate/templates/header-prompt.md +35 -0
- package/skills/fo/fo-doc-audit/SKILL.md +264 -0
- package/skills/fo/fo-extract-dna/SKILL.md +248 -0
- package/skills/fo/fo-fix/SKILL.md +152 -0
- package/skills/fo/fo-fix/bug-diagnosis.md +128 -0
- package/skills/fo/fo-handoff/SKILL.md +58 -0
- package/skills/fo/fo-harvest/SKILL.md +80 -0
- package/skills/fo/fo-idea/SKILL.md +242 -0
- package/skills/fo/fo-idea-audit/SKILL.md +248 -0
- package/skills/fo/fo-idea-create-adr/SKILL.md +130 -0
- package/skills/fo/fo-idea-create-rfc/SKILL.md +130 -0
- package/skills/fo/fo-idea-enhance/SKILL.md +218 -0
- package/skills/fo/fo-idea-i-just-want-to-see-the-plan/SKILL.md +36 -0
- package/skills/fo/fo-idea-i-just-want-to-see-the-result/SKILL.md +167 -0
- package/skills/fo/fo-idea-implement/SKILL.md +463 -0
- package/skills/fo/fo-idea-plan/SKILL.md +230 -0
- package/skills/fo/fo-idea-status/SKILL.md +103 -0
- package/skills/fo/fo-memory-sync/SKILL.md +204 -0
- package/skills/fo/fo-memory-sync/fix-patterns.md +24 -0
- package/skills/fo/fo-memory-sync/learned-principles.md +6 -0
- package/skills/fo/fo-memory-sync/qa-log.md +5 -0
- package/skills/fo/fo-qa/SKILL.md +142 -0
- package/skills/fo/fo-review/SKILL.md +273 -0
- package/skills/fo/fo-session-retro/SKILL.md +276 -0
- package/skills/fo/fo-session-save/SKILL.md +71 -0
- package/skills/fo/fo-session-save/fix-patterns.md +33 -0
- package/skills/fo/fo-session-save/learned-principles.md +19 -0
- package/skills/fo/fo-session-save/qa-log.md +11 -0
- package/skills/fo/fo-spec-ingest/SKILL.md +127 -0
- package/skills/fo/fo-triage/SKILL.md +97 -0
- package/skills/meta/forge-bootstrap/SKILL.md +335 -0
- package/skills/meta/forge-bootstrap/forge-about.md +35 -0
- package/skills/meta/forge-bootstrap/milestone-gallery/.gitkeep +0 -0
- package/skills/meta/forge-bootstrap/operator-profile-template.md +53 -0
- package/skills/meta/forge-bootstrap/project-narrative-template.md +31 -0
- package/skills/meta/port-to-forge/SKILL.md +65 -0
- package/skills/meta/skill-create/SKILL.md +73 -0
- package/skills/shared/grilling/SKILL.md +28 -0
- package/skills/shared/grilling/learned-principles.md +12 -0
- package/skills/shared/grilling/qa-log.md +10 -0
- package/skills/shared/my-preferences/SKILL.md +77 -0
- package/skills/shared/windows-ai-tooling/SKILL.md +200 -0
- package/skills/shared/writing-great-skills/SKILL.md +132 -0
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fo-idea-i-just-want-to-see-the-result
|
|
3
|
+
description: Orchestrate the full feature pipeline (idea, audit, enhance, plan, implement, review, fix) in one invocation. Accepts a raw idea or RFC/ADR id. Use when the operator wants the complete pipeline.
|
|
4
|
+
invocation: user
|
|
5
|
+
category: fo
|
|
6
|
+
concerns: code-mutation
|
|
7
|
+
dependsOn: ['my-preferences']
|
|
8
|
+
languagePolicy: ref(PREFERENCES.md)
|
|
9
|
+
triggers: ["I just want to see the result", "run the full pipeline automatically", "implement this end-to-end without pauses"]
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Full Pipeline — Just Want to See the Result
|
|
13
|
+
|
|
14
|
+
Before starting, read `PREFERENCES.md` at the repository root. If the file is missing or `aiLanguage` is unset, ask the operator once and create the file using the `my-preferences` skill semantics.
|
|
15
|
+
|
|
16
|
+
See `_shared/fo-pipeline-conventions.md` §Language policy.
|
|
17
|
+
|
|
18
|
+
This skill is a **pure orchestrator** — it delegates every step to the appropriate skill.
|
|
19
|
+
|
|
20
|
+
## stopAfter contract
|
|
21
|
+
|
|
22
|
+
This orchestrator supports a `stopAfter` parameter that limits how far the pipeline runs:
|
|
23
|
+
|
|
24
|
+
- **`stopAfter: plan`** — execute steps 0–3 only (idea, audit, enhance, plan). Do not run implement (step 4), which now includes review and fix. After step 3 completes, report the summary and stop.
|
|
25
|
+
- **`stopAfter: null` (default)** — run the full pipeline through implement (which includes review and fix).
|
|
26
|
+
|
|
27
|
+
When `stopAfter: plan` is set and the document is an **ADR**, the ADR pipeline skips audit/enhance/plan. Stop after step 0 (idea creation) with the message: "ADR does not require a plan. Run `/fo-idea-implement` to implement."
|
|
28
|
+
|
|
29
|
+
When resuming with `stopAfter: plan`, if the plan file already exists in `docs/plans/plan-rfc-XXXX-*.md`, stop immediately — do not proceed to implement.
|
|
30
|
+
|
|
31
|
+
## Preconditions
|
|
32
|
+
|
|
33
|
+
The operator may provide either:
|
|
34
|
+
|
|
35
|
+
- **A raw idea** — natural-language description of a feature, change, or decision. The skill will invoke `fo-idea` as step 0 to create the RFC/ADR first.
|
|
36
|
+
- **An existing RFC/ADR id** — e.g. `RFC-XXXX` or `ADR-XXXX`. The skill skips idea creation and starts the pipeline from the appropriate step.
|
|
37
|
+
- **Nothing** — if neither is provided, check session context and IDE for a recently created document. If none found, ask the operator: "Какую идею реализуем? Опишите идею или укажите RFC-XXXX / ADR-XXXX."
|
|
38
|
+
|
|
39
|
+
## Process
|
|
40
|
+
|
|
41
|
+
### 0. Idea creation (conditional)
|
|
42
|
+
|
|
43
|
+
Determine whether the operator provided a raw idea or a document id:
|
|
44
|
+
|
|
45
|
+
1. **Document id detected** — if the operator's input contains `RFC-XXXX` or `ADR-XXXX`, skip this step. Record the id and proceed to step 1.
|
|
46
|
+
2. **Session context** — look for the most recent `fo-idea` or `fo-idea-create-rfc` / `fo-idea-create-adr` invocation in the current session. If found, extract the document id(s) from its output and proceed to step 1.
|
|
47
|
+
3. **IDE context** — if a document file (`docs/rfcs/rfc-XXXX-*.md` or `docs/adrs/adr-XXXX-*.md`) is open in the IDE, use it and proceed to step 1.
|
|
48
|
+
4. **Raw idea** — if the operator provided natural-language text that is not a document id, invoke `fo-idea` with the idea text. Wait for it to complete (classify, grill, create RFC/ADR, commit). Extract the document id(s) from its output. Then proceed to step 1.
|
|
49
|
+
5. **Nothing** — ask the operator (in `aiLanguage`): "What idea should we implement? Describe the idea or specify RFC-XXXX / ADR-XXXX."
|
|
50
|
+
|
|
51
|
+
Record the document id(s) and type(s) (RFC or ADR). If multiple documents were created in a series, process them in dependency order — the same order `fo-idea` created them.
|
|
52
|
+
|
|
53
|
+
### 1. Run the pipeline
|
|
54
|
+
|
|
55
|
+
For each document, run the full pipeline inline. The pipeline differs for RFCs and ADRs.
|
|
56
|
+
|
|
57
|
+
#### RFC pipeline
|
|
58
|
+
|
|
59
|
+
Execute these steps **in order**, invoking each skill inline via the `skill` tool. Do not stop between steps. Do not ask the operator "shall I proceed?" between steps — the operator's invocation of this skill IS the instruction to proceed through the entire pipeline.
|
|
60
|
+
|
|
61
|
+
**Step 1 — Audit**
|
|
62
|
+
|
|
63
|
+
Invoke `fo-idea-audit` on the RFC. Pass the RFC id. Wait for it to complete (persist + commit the audit report).
|
|
64
|
+
|
|
65
|
+
**Step 2 — Enhance**
|
|
66
|
+
|
|
67
|
+
Invoke `fo-idea-enhance` on the RFC. Pass the RFC id. Wait for it to complete (apply findings, resolve questions, grill, commit).
|
|
68
|
+
|
|
69
|
+
**Step 3 — Plan**
|
|
70
|
+
|
|
71
|
+
Invoke `fo-idea-plan` on the RFC. Pass the RFC id. This transitions the RFC to `accepted` and creates the plan file. Wait for it to complete (explore codebase, resolve open questions, grill the plan, persist + commit).
|
|
72
|
+
|
|
73
|
+
**Step 4 — Implement (includes review and fix)**
|
|
74
|
+
|
|
75
|
+
Invoke `fo-idea-implement` on the RFC. Pass the RFC id. Wait for it to complete. `fo-idea-implement` now runs the full implementation → review → fix cycle internally:
|
|
76
|
+
|
|
77
|
+
- Execute plan steps, run heavy checks, fix errors, check acceptance criteria, emit evidence, update docs, stamp implemented + commit.
|
|
78
|
+
- Run `fo-review` on all session code changes.
|
|
79
|
+
- Run `fo-fix` if the review has findings.
|
|
80
|
+
|
|
81
|
+
Do not invoke `fo-review` or `fo-fix` separately — they are built into `fo-idea-implement`.
|
|
82
|
+
|
|
83
|
+
**Fallback verification (MANDATORY).** After `fo-idea-implement` returns, verify that review and fix were actually executed:
|
|
84
|
+
|
|
85
|
+
1. Check for a review report in `docs/reviews/code/` dated today or with a `diffRange` covering this session's commits.
|
|
86
|
+
2. If no review report exists, invoke `fo-review` with scope: all code changes made in this session (since the `fo-idea` invocation). Capture the diff via `git diff <merge-base-of-session>...HEAD`. Wait for it to complete.
|
|
87
|
+
3. If the review has findings and no fix commit exists after the review report, invoke `fo-fix`. Wait for it to complete.
|
|
88
|
+
|
|
89
|
+
This fallback ensures review and fix are never skipped, even if `fo-idea-implement` failed to execute them internally.
|
|
90
|
+
|
|
91
|
+
#### ADR pipeline
|
|
92
|
+
|
|
93
|
+
ADRs skip audit, enhance, and plan — the pipeline is shorter.
|
|
94
|
+
|
|
95
|
+
**Step 1 — Implement (includes review and fix)**
|
|
96
|
+
|
|
97
|
+
Invoke `fo-idea-implement` on the ADR. Pass the ADR id. Wait for it to complete. `fo-idea-implement` now runs the full implementation → review → fix cycle internally:
|
|
98
|
+
|
|
99
|
+
- Transition to accepted, implement decision, run scoped build, ADR code-trace, update docs, stamp implemented + commit.
|
|
100
|
+
- Run `fo-review` on all session code changes.
|
|
101
|
+
- Run `fo-fix` if the review has findings.
|
|
102
|
+
|
|
103
|
+
Do not invoke `fo-review` or `fo-fix` separately — they are built into `fo-idea-implement`.
|
|
104
|
+
|
|
105
|
+
**Fallback verification (MANDATORY).** After `fo-idea-implement` returns, verify that review and fix were actually executed:
|
|
106
|
+
|
|
107
|
+
1. Check for a review report in `docs/reviews/code/` dated today or with a `diffRange` covering this session's commits.
|
|
108
|
+
2. If no review report exists, invoke `fo-review` with scope: all code changes made in this session. Wait for it to complete.
|
|
109
|
+
3. If the review has findings and no fix commit exists after the review report, invoke `fo-fix`. Wait for it to complete.
|
|
110
|
+
|
|
111
|
+
This fallback ensures review and fix are never skipped, even if `fo-idea-implement` failed to execute them internally.
|
|
112
|
+
|
|
113
|
+
### 2. Report and stop
|
|
114
|
+
|
|
115
|
+
After the pipeline is complete (or if it was interrupted and resumed), present a single summary in `aiLanguage`. **Translate all labels and headings to `aiLanguage`** — the template below is structural only. Only identifiers (RFC-XXXX, ADR-XXXX, file paths) stay untranslated.
|
|
116
|
+
|
|
117
|
+
```
|
|
118
|
+
## <Pipeline Summary in aiLanguage>
|
|
119
|
+
|
|
120
|
+
### Document: <RFC-XXXX or ADR-XXXX>
|
|
121
|
+
### Type: <RFC | ADR>
|
|
122
|
+
### Steps completed:
|
|
123
|
+
0. Idea — <done (created document) | skipped (existing document)>
|
|
124
|
+
1. Audit — <done | skipped (ADR)>
|
|
125
|
+
2. Enhance — <done | skipped (ADR)>
|
|
126
|
+
3. Plan — <done | skipped (ADR)>
|
|
127
|
+
4. Implement — <done (review: <verdict>, fix: <N> fixed | no findings) | not run (stopped at plan)>
|
|
128
|
+
### Status: <implemented | needs attention | planned (stopped at plan)>
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
If multiple documents were processed, present one summary block per document.
|
|
132
|
+
|
|
133
|
+
**Stop.** Do not invoke `/grilling` or any other skill after the pipeline is complete. The operator asked to "just see the result" — the result is the summary above.
|
|
134
|
+
|
|
135
|
+
### 3. Resume if interrupted
|
|
136
|
+
|
|
137
|
+
If the session was interrupted (agent stopped, context limit, crash, checkpoint summary) and the operator re-invokes this skill or continues the session:
|
|
138
|
+
|
|
139
|
+
1. **Detect pipeline context** — before doing anything else, determine whether this skill was the original invocation. Check for:
|
|
140
|
+
- Checkpoint summary mentioning this skill or a TODO list with implementation steps for an RFC/ADR that was being processed by this pipeline.
|
|
141
|
+
- TODO list with steps like "Step N: ..." or "implement: RFC-XXXX step N" — these are implementation steps from the plan phase, meaning the pipeline was in step 4 (implement).
|
|
142
|
+
- Git log showing `audit:`, `enhance:`, `plan:`, `implement:` commits for the same RFC/ADR — confirming pipeline progress.
|
|
143
|
+
- If any of these are found, this skill IS the active pipeline — resume it, do not start a new one.
|
|
144
|
+
2. **Detect progress** — check which pipeline steps have already been completed by scanning for:
|
|
145
|
+
- Document exists in `docs/rfcs/` or `docs/adrs/` (idea creation done)
|
|
146
|
+
- Audit report in `docs/audits/audit-rfc-XXXX-*.md`
|
|
147
|
+
- `enhancedAt` in the RFC frontmatter
|
|
148
|
+
- Plan file in `docs/plans/plan-rfc-XXXX-*.md`
|
|
149
|
+
- `status: implemented` in the document frontmatter
|
|
150
|
+
- Review report in `docs/reviews/code/**/*.md`
|
|
151
|
+
- Fix commits in `git log --oneline` since the session started
|
|
152
|
+
3. **If `stopAfter: plan` and plan file exists** — stop immediately. Do not proceed to implement.
|
|
153
|
+
4. **Resume from the first incomplete step** — do not re-run completed steps.
|
|
154
|
+
5. **MANDATORY: Check for review and fix.** If `status: implemented` is set but NO review report exists in `docs/reviews/code/` for this session, the pipeline is NOT complete — resume at the review step (invoke `fo-review` then `fo-fix` if needed). This is the most common resume failure: implementation completes, stamp happens, but review/fix are skipped because the session was interrupted.
|
|
155
|
+
6. **Continue until the pipeline is complete** (or until `stopAfter` limit is reached) — then report and stop.
|
|
156
|
+
|
|
157
|
+
## Constraints
|
|
158
|
+
|
|
159
|
+
- **Pure orchestrator.** Delegate every step to the appropriate skill — this orchestrator does not implement code, write RFCs/ADRs, or run validation commands directly.
|
|
160
|
+
- **No pauses between pipeline steps.** The operator's invocation is the instruction to run the entire pipeline. Proceed automatically.
|
|
161
|
+
- **Interactive steps within skills.** Some skills (enhance, plan) have interactive sub-steps (grilling, resolving open questions). Those interactions happen inside the invoked skill.
|
|
162
|
+
- **Review and fix are inside implement.** `fo-idea-implement` runs `fo-review` and `fo-fix` internally. Do not invoke them as separate orchestrator steps.
|
|
163
|
+
- **Fallback verification is MANDATORY.** After `fo-idea-implement` returns, always check that a review report exists in `docs/reviews/code/` for this session. If missing, invoke `fo-review` and `fo-fix` as a fallback. This ensures review and fix are never skipped.
|
|
164
|
+
- **Commit only your own files** — see `_shared/fo-pipeline-conventions.md` §Commit discipline. Each invoked skill stages only its own files.
|
|
165
|
+
- Recoverable errors: see `_shared/fo-pipeline-conventions.md` §Recoverable errors.
|
|
166
|
+
- **Forward-only** — see `_shared/fo-pipeline-conventions.md` §Forward-only discipline.
|
|
167
|
+
- **Session summary.** End every session with the closing block defined in `_shared/fo-session-summary.md`.
|
|
@@ -0,0 +1,463 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: fo-idea-implement
|
|
3
|
+
description: Implement one or more RFCs or ADRs end-to-end. Detects document type by prefix and executes the appropriate flow. Use when the user asks to implement, realize, or execute a document.
|
|
4
|
+
invocation: user
|
|
5
|
+
category: fo
|
|
6
|
+
concerns: code-mutation
|
|
7
|
+
dependsOn: ['my-preferences']
|
|
8
|
+
languagePolicy: ref(PREFERENCES.md)
|
|
9
|
+
bindings:
|
|
10
|
+
requires: [commands.validateRfc, commands.typecheck, commands.implementStamp]
|
|
11
|
+
optional: [commands.test, commands.scopedBuild, paths.invariantsFile, paths.compassDocs]
|
|
12
|
+
triggers: ["implement this RFC", "execute the implementation plan", "realize this RFC end-to-end"]
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
# Implement RFC or ADR
|
|
16
|
+
|
|
17
|
+
Before starting, read `PREFERENCES.md` at the repository root. If the file is missing or `aiLanguage` is unset, ask the operator once and create the file using the `my-preferences` skill semantics.
|
|
18
|
+
|
|
19
|
+
Execute the appropriate implementation flow based on the document type. RFCs go through the full pipeline (audit → enhance → plan → implement). ADRs have no plan file, no audit/enhance pipeline, and no acceptance criteria checkboxes — the decision is implemented directly. ADR lifecycle: `proposed → reviewing → accepted → implemented` (plus `superseded`/`rejected`).
|
|
20
|
+
|
|
21
|
+
## Process
|
|
22
|
+
|
|
23
|
+
### 1. Identify the document(s)
|
|
24
|
+
|
|
25
|
+
The user may provide:
|
|
26
|
+
|
|
27
|
+
- **A single id**: `RFC-XXXX`, `ADR-XXXX`, a filename, or a path.
|
|
28
|
+
- **A comma-separated list**: `RFC-XXXX, RFC-XXXX, ADR-XXXX` — process each in order.
|
|
29
|
+
- **A range**: `RFC-XXXX..RFC-XXXX` or `от RFC-XXXX до RFC-XXXX` — discover all files in `docs/rfcs/` whose numeric id falls within the inclusive range, sort ascending, and process each in order. Ranges are only valid within a single document type (RFC or ADR).
|
|
30
|
+
- **Nothing**: if a document file is open in the IDE, use it. Otherwise, ask.
|
|
31
|
+
|
|
32
|
+
When multiple documents are identified, **loop through each one** and run the full implementation flow for each sequentially **without pauses between documents**. Do not stop, present a summary, or ask the user between documents. Only after all documents are implemented, print a single final batch summary.
|
|
33
|
+
|
|
34
|
+
### 2. Classify: RFC or ADR
|
|
35
|
+
|
|
36
|
+
Determine the document type by:
|
|
37
|
+
|
|
38
|
+
1. **Prefix** — `RFC-` → RFC, `ADR-` → ADR.
|
|
39
|
+
2. **File location** — files in `docs/rfcs/` are RFCs, files in `docs/adrs/` are ADRs.
|
|
40
|
+
3. **Open file** — if the user provided nothing and a file is open in the IDE, check which directory it lives in.
|
|
41
|
+
|
|
42
|
+
If the type cannot be determined, ask the user.
|
|
43
|
+
|
|
44
|
+
### 3. RFC implementation flow
|
|
45
|
+
|
|
46
|
+
#### 3.1. Prerequisite checks (per RFC)
|
|
47
|
+
|
|
48
|
+
The pipeline is: create → audit → enhance → plan → implement. Audit, enhance, and a plan are **mandatory** — no RFC may proceed to implementation without all three being completed. The RFC must also be `accepted` — this skill does not transition `draft` to `accepted`; that is the responsibility of `fo-idea-plan`.
|
|
49
|
+
|
|
50
|
+
Before running the implementation on each RFC, perform these checks **in order**. If any check fails, record the RFC as **skipped** in the batch summary with the reason, and immediately proceed to the next RFC in the batch. Do not stop the entire batch — skip and report.
|
|
51
|
+
|
|
52
|
+
1. **Prefix check** — if the id starts with `ADR-`, this is not an RFC. Skip with message: `ADR-XXXX is an ADR, not an RFC. Use the ADR implementation flow (step 4 below) for ADR-XXXX.`
|
|
53
|
+
2. **RFC file exists** — look for `docs/rfcs/rfc-XXXX-*.md`. If no file is found, skip with message: `RFC-XXXX not found in docs/rfcs/. Run /fo-idea-create-rfc first.`
|
|
54
|
+
3. **Terminal status check** — read the RFC's `status` frontmatter. If the status is `implemented`, skip with message: `RFC-XXXX is already implemented. Nothing to do.` If the status is `rejected` or `superseded`, skip with message: `RFC-XXXX is <status> (terminal). Terminal RFCs cannot be implemented. To change this decision, create a new RFC with supersedes: [RFC-XXXX] via /fo-idea-create-rfc.`
|
|
55
|
+
4. **Audit check** — look for `docs/audits/audit-rfc-XXXX-*.md`. If no audit file exists, skip with message: `No audit report found for RFC-XXXX in docs/audits/. Run /fo-idea-audit RFC-XXXX first. The pipeline is: create → audit → enhance → plan → implement.`
|
|
56
|
+
5. **Enhance check** — read the RFC's frontmatter and look for the `enhancedAt` field. If `enhancedAt` is absent, skip with message: `RFC-XXXX has not been enhanced (no enhancedAt in frontmatter). Run /fo-idea-enhance RFC-XXXX first. The pipeline is: create → audit → enhance → plan → implement.`
|
|
57
|
+
6. **Accepted status check** — if the status is not `accepted` (e.g. `draft` or `reviewing`), skip with message: `RFC-XXXX is <status>, not accepted. Run /fo-idea-plan RFC-XXXX first — it will transition the RFC to accepted and create the plan. The pipeline is: create → audit → enhance → plan → implement.`
|
|
58
|
+
7. **Plan check** — look for `docs/plans/plan-rfc-XXXX-*.md`. If no plan file exists, skip with message: `No plan file found for RFC-XXXX in docs/plans/. Run /fo-idea-plan RFC-XXXX first. The pipeline is: create → audit → enhance → plan → implement.`
|
|
59
|
+
|
|
60
|
+
If all checks pass, proceed to step 3.2.
|
|
61
|
+
|
|
62
|
+
#### 3.2. Read the RFC and related context
|
|
63
|
+
|
|
64
|
+
Read the RFC fully and all RFCs listed in its `amends[]`, `related[]`, and `supersedes[]`. Read the plan fully. Read the closest `AGENTS.md` for each impacted package. Read `ref(forge.yaml bindings.paths.invariantsFile)` entries for every DNA invariant in `satisfies[]`.
|
|
65
|
+
|
|
66
|
+
If the plan or RFC has genuine ambiguities that would cause wrong implementation, ask the user **before starting implementation**. Use `ask_user_question` with a recommended option first. Once implementation begins, stop asking — make autonomous decisions.
|
|
67
|
+
|
|
68
|
+
#### 3.3. Implement step by step
|
|
69
|
+
|
|
70
|
+
Execute the plan's step sequence in order. For each step:
|
|
71
|
+
|
|
72
|
+
1. **Execute** the agent actions described in the step.
|
|
73
|
+
2. **Validate** — run the step's validation command (lightweight only: `rfc.validate`, type checks, unit tests on touched files). Do **not** run heavy checks (`root build`, `build:check`, `astro:check`) during implementation — they run only after all steps are complete.
|
|
74
|
+
3. **Commit** after each step or phase that produces a coherent, complete unit of work:
|
|
75
|
+
|
|
76
|
+
```txt
|
|
77
|
+
implement: RFC-XXXX step N — <step title>
|
|
78
|
+
|
|
79
|
+
<one-line description of what was done in this step>.
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
Stage only the files touched by this step. Do not stage unrelated changes — another agent may be working in a different session.
|
|
83
|
+
|
|
84
|
+
**Implementation principles:**
|
|
85
|
+
|
|
86
|
+
- **No legacy, no backward compatibility.** Delete old code paths; do not maintain dual paths behind flags. The ecosystem is forward-only.
|
|
87
|
+
- **No pauses.** After implementation begins, make autonomous decisions aligned with the ecosystem: forward-only, minimal command surface, DNA-compliant, no shims.
|
|
88
|
+
- **No pauses for recoverable tool errors.** If a tool call fails with a recoverable error — e.g. `write_to_file` content too long, JSON truncation, line count/character limit exceeded, or similar — do not stop and ask the user. Recover autonomously:
|
|
89
|
+
- Split the content into smaller files or multiple `edit`/`multi_edit` calls.
|
|
90
|
+
- Use `multi_edit` for several changes to one file instead of one giant block.
|
|
91
|
+
- For oversized new files, decompose into focused modules and import them.
|
|
92
|
+
- Retry the operation with the adjusted approach immediately. The operator's default answer to "Shall I proceed?" is always "yes" — so proceed without asking.
|
|
93
|
+
- **Commit only your own work.** If the working tree has changes from another session or agent, stage only the files relevant to the current step.
|
|
94
|
+
- **Compass scaffolding.** New non-trivial source files in `apps/` or `packages/` must carry `MODULE_CONTRACT` and `CHANGE_SUMMARY` scaffolding. Check the project's invariants file for the canonical Compass markup rule.
|
|
95
|
+
- **Compass terminology.** Use Compass (not GRACE) in all new code, documentation, and log messages.
|
|
96
|
+
|
|
97
|
+
#### 3.4. Run heavy checks
|
|
98
|
+
|
|
99
|
+
After **all** plan steps are complete, run the heavy validation suite in order:
|
|
100
|
+
|
|
101
|
+
1. **RFC validation:**
|
|
102
|
+
|
|
103
|
+
```sh
|
|
104
|
+
ref(forge.yaml bindings.commands.validateRfc) --json
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
2. **Package-level build checks** for each impacted package:
|
|
108
|
+
|
|
109
|
+
```sh
|
|
110
|
+
ref(forge.yaml bindings.commands.typecheck) --workspace=<package>
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
3. **App-level checks** for each impacted app:
|
|
114
|
+
|
|
115
|
+
```sh
|
|
116
|
+
pnpm --filter <app-name> run build:check
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Use the `packagesImpacted` and `appsImpacted` frontmatter lists to determine which workspaces to check. If the RFC does not list impacted workspaces, infer them from the plan's step sequence (which files were touched in which packages).
|
|
120
|
+
|
|
121
|
+
**Do not run a full root `root build` or `turbo run build`.** The success criterion is that all impacted workspaces pass their scoped checks, not that the entire ecosystem builds. See root AGENTS.md §Build verification discipline.
|
|
122
|
+
|
|
123
|
+
#### 3.5. Fix errors
|
|
124
|
+
|
|
125
|
+
If any check in step 3.4 fails, fix every error:
|
|
126
|
+
|
|
127
|
+
1. Read the error output.
|
|
128
|
+
2. Identify the root cause.
|
|
129
|
+
3. Fix it.
|
|
130
|
+
4. Re-run the failing check to confirm the fix.
|
|
131
|
+
5. Commit each fix:
|
|
132
|
+
|
|
133
|
+
```txt
|
|
134
|
+
fix: RFC-XXXX — <error description>
|
|
135
|
+
|
|
136
|
+
<one-line description of the root cause and fix>.
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
6. If the error is pre-existing (not caused by this RFC's implementation) and is in an impacted workspace, fix it. If the error is in an unimpacted workspace, skip it — it is not this RFC's responsibility.
|
|
140
|
+
|
|
141
|
+
Continue until all impacted checks pass.
|
|
142
|
+
|
|
143
|
+
#### 3.6. Check acceptance criteria
|
|
144
|
+
|
|
145
|
+
Read the RFC's `## Acceptance criteria` section. For each checkbox:
|
|
146
|
+
|
|
147
|
+
1. **Verify the criterion is met semantically** — check the code does what the criterion says, run the relevant command, or inspect the artifact. Mechanical existence (command registered, test passes) is NOT sufficient. The criterion must describe observable behavior that the RFC defines, not just that a command exists.
|
|
148
|
+
2. **Check for stubs** — if the code contains TODO, stub, not-implemented, or placeholder logic in the path the criterion covers, the criterion is NOT met. Implement the real logic before marking it.
|
|
149
|
+
3. **If a criterion is not met**, implement the missing work, commit it, and re-verify.
|
|
150
|
+
4. **Annotate every `[x]` with inline evidence** — add `(evidence: <file-path:line>, <test-or-command>)` to each checked criterion. This is enforced by V-27.
|
|
151
|
+
5. **If a criterion cannot be met** (e.g., requires an external dependency not yet available, requires a pilot that is not registered), do NOT mark it `[x]` and do NOT stamp `implemented`. Instead, split the deferred work into a follow-up RFC via `rfc.supersede.propose`. An RFC with unchecked `[ ]` criteria cannot transition to `implemented` — this is enforced by V-26.
|
|
152
|
+
|
|
153
|
+
Do not proceed to step 3.7 until every acceptance criterion checkbox is checked with evidence.
|
|
154
|
+
|
|
155
|
+
#### 3.7. Run acceptance probes and emit evidence
|
|
156
|
+
|
|
157
|
+
If the RFC declares `acceptance:` probes in frontmatter:
|
|
158
|
+
|
|
159
|
+
```sh
|
|
160
|
+
ref(forge.yaml bindings.commands.validateRfc) --acceptance.run --id RFC-XXXX
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
If the RFC was created on or after 2026-07-07 and has acceptance probes:
|
|
164
|
+
|
|
165
|
+
```sh
|
|
166
|
+
ref(forge.yaml bindings.commands.validateRfc) --verification.emit --id RFC-XXXX
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
Commit the evidence file:
|
|
170
|
+
|
|
171
|
+
```txt
|
|
172
|
+
evidence: RFC-XXXX verification artifact
|
|
173
|
+
|
|
174
|
+
Emit per-RFC verification evidence for RFC-XXXX implementation.
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Stage `docs/rfcs/verification/rfc-xxxx.generated.json`.
|
|
178
|
+
|
|
179
|
+
#### 3.8. Stamp implemented
|
|
180
|
+
|
|
181
|
+
Transition the RFC to `implemented` using the `rfc.implement.stamp` command. Direct edits to `status`, `implementedAt`, and `updatedAt` are prohibited for all actors.
|
|
182
|
+
|
|
183
|
+
1. Ensure the working tree is clean (all implementation changes committed).
|
|
184
|
+
2. Identify the implementation commit SHA — the commit that contains the core implementation work and references the RFC id in its message or changed files.
|
|
185
|
+
3. Run the stamp command:
|
|
186
|
+
|
|
187
|
+
```sh
|
|
188
|
+
ref(forge.yaml bindings.commands.implementStamp) --id RFC-XXXX --implementation-commit <sha>
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
The command atomically validates all preconditions (accepted status, checked+evidenced criteria, clean tree, reachable RFC-referencing commit, passing probe evidence) and sets `status: implemented`, `implementedAt`, and `updatedAt` in one atomic write.
|
|
192
|
+
|
|
193
|
+
4. Commit the stamped RFC file:
|
|
194
|
+
|
|
195
|
+
```txt
|
|
196
|
+
rfc: implement RFC-XXXX <short title>
|
|
197
|
+
|
|
198
|
+
Transition RFC-XXXX to implemented status via rfc.implement.stamp.
|
|
199
|
+
All acceptance criteria met, verification evidence emitted, scoped build passes.
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
Stage only the RFC file. The implementation commit and the stamp commit MUST be separate.
|
|
203
|
+
|
|
204
|
+
#### 3.9. Documentation audit (fo-doc-audit)
|
|
205
|
+
|
|
206
|
+
After implementation is complete and all checks pass, invoke `fo-doc-audit` via the `skill` tool. It analyzes the session's changes, checks all documentation surfaces (AGENTS.md, README, Compass XML, architecture-dna.md, templates, generated artifacts, COMMANDS.md/PACKAGE_GRAPH.md), applies needed updates, and commits them separately. Wait for it to complete.
|
|
207
|
+
|
|
208
|
+
If `fo-doc-audit` reports that no updates are needed, proceed to the next step.
|
|
209
|
+
|
|
210
|
+
#### 3.10. Code review (fo-review)
|
|
211
|
+
|
|
212
|
+
After the documentation audit, invoke `fo-review` via the `skill` tool. It performs a cross-session fitness check of the code diff against Forge standards (DNA, forward-only, Compass, agent clarity, pragmatism). The review covers all code changes made in this session since the first implementation commit.
|
|
213
|
+
|
|
214
|
+
1. Determine the diff range: `git diff <merge-base-of-session>...HEAD` — where merge-base is the commit before the first `implement:` commit for this RFC.
|
|
215
|
+
2. Invoke `fo-review` with the diff range. Wait for it to complete (persist + commit the review report in `docs/reviews/code/`).
|
|
216
|
+
3. Read the review report. If the verdict is `approved` **and** the report contains zero findings across all axes, proceed to step 3.12.
|
|
217
|
+
4. If the review has **any** findings — even a single cosmetic observation on any axis — proceed to step 3.11 (fix). Do not interpret an `approved` verdict as "no findings" — read the axis sections and count every finding, including ones labelled "minor" or "cosmetic".
|
|
218
|
+
|
|
219
|
+
**This step is MANDATORY.** Do not skip it, even if the implementation seems clean. The review is the quality gate that catches DNA misalignment, forward-only violations, Compass drift, and agent clarity issues that implementation authors miss.
|
|
220
|
+
|
|
221
|
+
#### 3.11. Fix review findings (fo-fix)
|
|
222
|
+
|
|
223
|
+
If `fo-review` (step 3.10) reported **any** findings (even cosmetic ones on axes A/C/F/G), invoke `fo-fix` via the `skill` tool. It applies the review findings iteratively: fix → typecheck → commit → re-check.
|
|
224
|
+
|
|
225
|
+
1. Invoke `fo-fix` with the review report. Wait for it to complete.
|
|
226
|
+
2. After `fo-fix` returns, re-run `fo-review` to confirm all findings are resolved.
|
|
227
|
+
3. If new findings appear, repeat the fix cycle. Maximum 3 iterations.
|
|
228
|
+
4. If findings persist after 3 iterations, stop and report to the operator.
|
|
229
|
+
|
|
230
|
+
If `fo-review` reported truly zero findings (the report explicitly states "No issues." on every axis), skip this step. An `approved` verdict with any finding text on any axis does NOT qualify as zero findings.
|
|
231
|
+
|
|
232
|
+
#### 3.12. RFC report
|
|
233
|
+
|
|
234
|
+
After implementation is complete, report in `aiLanguage`. **Translate all labels and headings to `aiLanguage`** — the template below is structural only. Only identifiers (RFC-XXXX, file paths, skill names) stay untranslated.
|
|
235
|
+
|
|
236
|
+
```
|
|
237
|
+
## <RFC-XXXX Implementation Summary in aiLanguage>
|
|
238
|
+
|
|
239
|
+
### Plan: <found>
|
|
240
|
+
### Steps implemented: <count>
|
|
241
|
+
### Commits: <count>
|
|
242
|
+
### Acceptance criteria: <count> / <count> met
|
|
243
|
+
### Verification evidence: <emitted | not required>
|
|
244
|
+
### Heavy checks: scoped build <Pass | Fail — fixed>
|
|
245
|
+
### Code review: <pass | pass with N findings fixed | needs attention>
|
|
246
|
+
### Status: implemented (<date>)
|
|
247
|
+
```
|
|
248
|
+
|
|
249
|
+
### 4. ADR implementation flow
|
|
250
|
+
|
|
251
|
+
Execute this flow when the document is an ADR (prefix `ADR-`, or file in `docs/adrs/`).
|
|
252
|
+
|
|
253
|
+
#### 4.1. Read the ADR
|
|
254
|
+
|
|
255
|
+
Read the ADR file. Extract:
|
|
256
|
+
|
|
257
|
+
- **Status** — must be `accepted`, `reviewing`, or `proposed`. If `superseded` or `rejected` (terminal), stop with message: `ADR-XXXX is <status> (terminal). Terminal ADRs cannot be implemented. To change this decision, create a new ADR or RFC that supersedes ADR-XXXX.` If `implemented`, stop with message: `ADR-XXXX is already implemented. Nothing to do.`
|
|
258
|
+
- **Decision** — the core decision from the `## Decision` section.
|
|
259
|
+
- **Context** — the local situation and constraints from `## Context`.
|
|
260
|
+
- **Consequences** — what the decision implies for the codebase.
|
|
261
|
+
- **Related** — any RFCs, ADRs, or DNA invariants referenced.
|
|
262
|
+
|
|
263
|
+
#### 4.2. Transition to accepted (if needed)
|
|
264
|
+
|
|
265
|
+
If the ADR is `proposed` or `reviewing`, transition it to `accepted`:
|
|
266
|
+
|
|
267
|
+
1. Set `status: accepted` in the frontmatter.
|
|
268
|
+
2. Set `updatedAt: <today's date>`.
|
|
269
|
+
3. If `reviewers` is empty, read the default reviewer(s) from the `reviewers` field comment in `docs/adrs/adr-0000-template.md` (currently `human:andrii-syrokomskyi`). Set all listed default reviewers.
|
|
270
|
+
4. Commit:
|
|
271
|
+
|
|
272
|
+
```txt
|
|
273
|
+
adr: accept ADR-XXXX <short title>
|
|
274
|
+
|
|
275
|
+
Transition ADR-XXXX to accepted status for implementation.
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
Stage only the ADR file.
|
|
279
|
+
|
|
280
|
+
If the ADR is already `accepted`, proceed directly.
|
|
281
|
+
|
|
282
|
+
#### 4.3. Implement the decision
|
|
283
|
+
|
|
284
|
+
Read the `## Decision` section and implement it in code. Follow the same principles as RFC implementation:
|
|
285
|
+
|
|
286
|
+
- Make autonomous, ecosystem-aligned decisions.
|
|
287
|
+
- Use `edit`/`multi_edit` for changes to existing files, `write_to_file` for new files.
|
|
288
|
+
- Commit each logical phase of work:
|
|
289
|
+
|
|
290
|
+
```txt
|
|
291
|
+
implement: ADR-XXXX — <phase description>
|
|
292
|
+
|
|
293
|
+
<one-line description of what was done in this phase>.
|
|
294
|
+
```
|
|
295
|
+
|
|
296
|
+
Stage only the files touched by this phase. Do not stage unrelated changes — another agent may be working in a different session; `git add -A` or `git add .` is forbidden.
|
|
297
|
+
|
|
298
|
+
- If a tool call fails with a recoverable error, recover autonomously: split content, use `edit`/`multi_edit`, decompose files, and retry immediately.
|
|
299
|
+
|
|
300
|
+
#### 4.4. Run scoped build checks
|
|
301
|
+
|
|
302
|
+
After implementation is complete, run heavy checks for the impacted workspaces only:
|
|
303
|
+
|
|
304
|
+
1. ADR validation:
|
|
305
|
+
|
|
306
|
+
```sh
|
|
307
|
+
ref(forge.yaml bindings.commands.validateAdr) <adr-id> --json
|
|
308
|
+
```
|
|
309
|
+
|
|
310
|
+
2. Determine impacted packages/apps from the ADR's `scope` and the files touched during implementation. Build only those workspaces:
|
|
311
|
+
|
|
312
|
+
```sh
|
|
313
|
+
ref(forge.yaml bindings.commands.typecheck) --workspace=<package>
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
Or for apps:
|
|
317
|
+
|
|
318
|
+
```sh
|
|
319
|
+
pnpm --filter <app-name> run build:check
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
**MUST NOT run a full root `root build` or `turbo run build`.** Only check the workspaces this ADR touches. See root AGENTS.md §Build verification discipline.
|
|
323
|
+
|
|
324
|
+
#### 4.5. Fix errors
|
|
325
|
+
|
|
326
|
+
If any check fails, fix every error:
|
|
327
|
+
|
|
328
|
+
1. Read the error output.
|
|
329
|
+
2. Identify the root cause.
|
|
330
|
+
3. Fix it.
|
|
331
|
+
4. Re-run the failing check to confirm the fix.
|
|
332
|
+
5. Commit each fix:
|
|
333
|
+
|
|
334
|
+
```txt
|
|
335
|
+
fix: ADR-XXXX — <error description>
|
|
336
|
+
|
|
337
|
+
<one-line description of the root cause and fix>.
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
Continue until all impacted checks pass.
|
|
341
|
+
|
|
342
|
+
#### 4.6. Documentation audit (fo-doc-audit)
|
|
343
|
+
|
|
344
|
+
After implementation is complete and all checks pass, invoke `fo-doc-audit` via the `skill` tool. It analyzes the session's changes, checks all documentation surfaces, applies needed updates, and commits them separately. Wait for it to complete.
|
|
345
|
+
|
|
346
|
+
If `fo-doc-audit` reports that no updates are needed, proceed to the next step.
|
|
347
|
+
|
|
348
|
+
#### 4.7. Code review (fo-review)
|
|
349
|
+
|
|
350
|
+
After the documentation audit, invoke `fo-review` via the `skill` tool. It performs a cross-session fitness check of the code diff against Forge standards. The review covers all code changes made in this session.
|
|
351
|
+
|
|
352
|
+
1. Determine the diff range: `git diff <merge-base-of-session>...HEAD`.
|
|
353
|
+
2. Invoke `fo-review` with the diff range. Wait for it to complete (persist + commit the review report).
|
|
354
|
+
3. Read the review report. If the verdict is `approved` **and** the report contains zero findings across all axes, proceed to step 4.9.
|
|
355
|
+
4. If the review has **any** findings — even a single cosmetic observation on any axis — proceed to step 4.8 (fix). Do not interpret an `approved` verdict as "no findings" — read the axis sections and count every finding.
|
|
356
|
+
|
|
357
|
+
**This step is MANDATORY.** Do not skip it.
|
|
358
|
+
|
|
359
|
+
#### 4.8. Fix review findings (fo-fix)
|
|
360
|
+
|
|
361
|
+
If `fo-review` (step 4.7) reported **any** findings (even cosmetic ones), invoke `fo-fix` via the `skill` tool.
|
|
362
|
+
|
|
363
|
+
1. Invoke `fo-fix` with the review report. Wait for it to complete.
|
|
364
|
+
2. After `fo-fix` returns, re-run `fo-review` to confirm all findings are resolved.
|
|
365
|
+
3. If new findings appear, repeat the fix cycle. Maximum 3 iterations.
|
|
366
|
+
4. If findings persist after 3 iterations, stop and report to the operator.
|
|
367
|
+
|
|
368
|
+
If `fo-review` reported truly zero findings (the report explicitly states "No issues." on every axis), skip this step. An `approved` verdict with any finding text on any axis does NOT qualify as zero findings.
|
|
369
|
+
|
|
370
|
+
#### 4.9. ADR code-trace
|
|
371
|
+
|
|
372
|
+
Before stamping `implemented`, verify that the ADR is mentioned in the codebase — this leaves a trace linking code back to the decision record, just as RFCs leave traces.
|
|
373
|
+
|
|
374
|
+
1. **Search for the ADR id** — use `grep_search` to scan `apps/`, `packages/`, and `services/` for the ADR id string (e.g. `ADR-XXXX`). Check:
|
|
375
|
+
- **COMPASS block comments** — `MODULE_CONTRACT`, `CHANGE_SUMMARY`, or other Compass scaffolding comments that reference the ADR id.
|
|
376
|
+
- **Inline code mentions** — comments, docstrings, or annotations in source files that reference the ADR id.
|
|
377
|
+
|
|
378
|
+
2. **If mentions are found** — the trace exists. Proceed to step 4.10.
|
|
379
|
+
|
|
380
|
+
3. **If no mentions are found** — attempt to find the most relevant file(s) where the decision was implemented. If the file(s) can be identified:
|
|
381
|
+
- Add a Compass block comment referencing the ADR id to the file's `MODULE_CONTRACT` or `CHANGE_SUMMARY` section. For example: `<item>ADR-XXXX: <brief note on what this ADR decided for this module.</item>`
|
|
382
|
+
- If the file has no Compass scaffolding, add a brief inline comment at the top of the file: `// Implements ADR-XXXX: <one-line decision summary>`
|
|
383
|
+
- Commit the trace:
|
|
384
|
+
|
|
385
|
+
```txt
|
|
386
|
+
trace: ADR-XXXX — add code mention
|
|
387
|
+
|
|
388
|
+
Add ADR-XXXX reference to <file> to link the decision to the code.
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
- Proceed to step 4.10.
|
|
392
|
+
|
|
393
|
+
4. **If the relevant file(s) cannot be identified** — ask the operator: `ADR-XXXX was implemented but no code mention was found. Please point to the file(s) where this ADR's decision was applied so I can add a trace reference.` After the operator provides the file(s), add the trace as described in step 3, commit, and proceed.
|
|
394
|
+
|
|
395
|
+
**For already-implemented ADRs** (if this step is reached for an ADR that was already `implemented`): this check is informational — attempt to find the trace and add it if missing, but do not block on it.
|
|
396
|
+
|
|
397
|
+
#### 4.10. Stamp implemented
|
|
398
|
+
|
|
399
|
+
After all checks pass and documentation is updated, transition the ADR to `implemented`:
|
|
400
|
+
|
|
401
|
+
1. Set `status: implemented` in the frontmatter.
|
|
402
|
+
2. Set `implementedAt: <today's date>`.
|
|
403
|
+
3. Set `updatedAt: <today's date>`.
|
|
404
|
+
4. Commit:
|
|
405
|
+
|
|
406
|
+
```txt
|
|
407
|
+
adr: implement ADR-XXXX <short title>
|
|
408
|
+
|
|
409
|
+
Transition ADR-XXXX to implemented status. Decision is live in code,
|
|
410
|
+
scoped build passes.
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
Stage only the ADR file.
|
|
414
|
+
|
|
415
|
+
#### 4.11. Report
|
|
416
|
+
|
|
417
|
+
After implementation is complete, report in `aiLanguage`. **Translate all labels and headings to `aiLanguage`** — the template below is structural only.
|
|
418
|
+
|
|
419
|
+
```
|
|
420
|
+
## <ADR-XXXX Implementation Summary in aiLanguage>
|
|
421
|
+
|
|
422
|
+
### Decision: <one-line summary>
|
|
423
|
+
### Phases implemented: <count>
|
|
424
|
+
### Commits: <count>
|
|
425
|
+
### Scoped build: <Pass | Fail — fixed>
|
|
426
|
+
### Code review: <pass | pass with N findings fixed | needs attention>
|
|
427
|
+
### Status: implemented (<date>)
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
### 5. Batch summary
|
|
431
|
+
|
|
432
|
+
If multiple documents were processed, present a single batch summary at the very end in `aiLanguage`. **Translate all labels, headings, and column names to `aiLanguage`** — the template below is structural only.
|
|
433
|
+
|
|
434
|
+
```
|
|
435
|
+
## <Batch Implementation Summary in aiLanguage>
|
|
436
|
+
|
|
437
|
+
### Documents requested: <N>
|
|
438
|
+
### Documents implemented: <N>
|
|
439
|
+
|
|
440
|
+
| ID | Type | Status | Commits | Build |
|
|
441
|
+
| --- | --- | --- | --- | --- |
|
|
442
|
+
| RFC-XXXX | RFC | implemented | 3 | pass |
|
|
443
|
+
| ADR-XXXX | ADR | implemented | 2 | pass |
|
|
444
|
+
...
|
|
445
|
+
|
|
446
|
+
### Total commits: <count>
|
|
447
|
+
```
|
|
448
|
+
|
|
449
|
+
Do not output per-document summaries or "Moving to XXXX next" messages during the loop; they belong here, at the very end.
|
|
450
|
+
|
|
451
|
+
## Constraints
|
|
452
|
+
|
|
453
|
+
- **Commit only your own files.** Stage only the files this skill produces or modifies — document files, code files touched by implementation, documentation files. Do not stage unrelated changes. Another agent may be working in a different session; `git add -A` or `git add .` is forbidden.
|
|
454
|
+
- **Classify before executing.** Do not run both flows — pick one based on the prefix or file location.
|
|
455
|
+
- **No pauses after implementation begins.** Make autonomous, ecosystem-aligned decisions. The user said "поехали" — keep going.
|
|
456
|
+
- **No legacy, no backward compatibility.** Delete old paths; do not maintain dual paths. The ecosystem is forward-only.
|
|
457
|
+
- **No heavy checks during implementation.** `build:check`, `astro:check` run only after all implementation phases are complete. Lightweight checks (`adr.validate`, `rfc.validate`, type checks, unit tests on touched files) are fine during implementation.
|
|
458
|
+
- **Scoped checks must pass.** Only check the workspaces this document touches. **MUST NOT run a full root `root build` or `turbo run build`** — see root AGENTS.md §Build verification discipline. Pre-existing errors in unimpacted workspaces are not this document's responsibility.
|
|
459
|
+
- **Do not weaken DNA invariants.** If implementation reveals an invariant conflict, escalate via `rfc.supersede.propose` instead of working around it.
|
|
460
|
+
- **Compass scaffolding on new files.** Non-trivial new source files in `apps/` or `packages/` must carry `MODULE_CONTRACT` and `CHANGE_SUMMARY`. Check the project's invariants file for the canonical Compass markup rule.
|
|
461
|
+
- **Compass terminology, not GRACE.** Use Compass in all new code, docs, and log messages.
|
|
462
|
+
- **Review and fix are MANDATORY.** After implementation and doc-audit, always run `fo-review` (step 3.10 / 4.7) and `fo-fix` (step 3.11 / 4.8) if **any** findings exist in the review report — including cosmetic or minor findings. Do not stamp `implemented` without a review report in `docs/reviews/code/`. An `approved` verdict does NOT mean "skip fix" — read every axis section and count every finding. This is the quality gate that catches DNA misalignment, forward-only violations, and Compass drift.
|
|
463
|
+
- **No `draft → accepted` transition for RFCs.** This skill requires RFC `status: accepted` and does not transition RFCs. Use `/fo-idea-plan` for that transition.
|