@entelligentsia/forgecli 1.0.3 → 1.0.14
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/CHANGELOG.md +93 -0
- package/README.md +2 -1
- package/dist/CHANGELOG-forge-plugin.md +250 -0
- package/dist/CHANGELOG-pi.md +94 -0
- package/dist/bin/forge.js +0 -0
- package/dist/extensions/forgecli/config-layer.d.ts +16 -0
- package/dist/extensions/forgecli/config-layer.js +5 -0
- package/dist/extensions/forgecli/config-layer.js.map +1 -1
- package/dist/extensions/forgecli/dashboard/component.d.ts +102 -0
- package/dist/extensions/forgecli/dashboard/component.js +882 -0
- package/dist/extensions/forgecli/dashboard/component.js.map +1 -0
- package/dist/extensions/forgecli/dashboard/register.d.ts +2 -0
- package/dist/extensions/forgecli/dashboard/register.js +45 -0
- package/dist/extensions/forgecli/dashboard/register.js.map +1 -0
- package/dist/extensions/forgecli/dashboard/view-model.d.ts +35 -0
- package/dist/extensions/forgecli/dashboard/view-model.js +54 -0
- package/dist/extensions/forgecli/dashboard/view-model.js.map +1 -0
- package/dist/extensions/forgecli/fix-bug.js +72 -7
- package/dist/extensions/forgecli/fix-bug.js.map +1 -1
- package/dist/extensions/forgecli/forge-artifact-tool.js +27 -4
- package/dist/extensions/forgecli/forge-artifact-tool.js.map +1 -1
- package/dist/extensions/forgecli/forge-cli-schema.json +4 -0
- package/dist/extensions/forgecli/forge-commands.js +1 -0
- package/dist/extensions/forgecli/forge-commands.js.map +1 -1
- package/dist/extensions/forgecli/forge-init/phase4-register.js +53 -0
- package/dist/extensions/forgecli/forge-init/phase4-register.js.map +1 -1
- package/dist/extensions/forgecli/forge-subagent.js +6 -4
- package/dist/extensions/forgecli/forge-subagent.js.map +1 -1
- package/dist/extensions/forgecli/forge-tools.js +2 -2
- package/dist/extensions/forgecli/forge-tools.js.map +1 -1
- package/dist/extensions/forgecli/index.js +5 -0
- package/dist/extensions/forgecli/index.js.map +1 -1
- package/dist/extensions/forgecli/lib/halt-advisor.d.ts +54 -0
- package/dist/extensions/forgecli/lib/halt-advisor.js +90 -0
- package/dist/extensions/forgecli/lib/halt-advisor.js.map +1 -0
- package/dist/extensions/forgecli/migration-engine.js +25 -12
- package/dist/extensions/forgecli/migration-engine.js.map +1 -1
- package/dist/extensions/forgecli/orchestrator-status-bar.d.ts +25 -0
- package/dist/extensions/forgecli/orchestrator-status-bar.js +183 -0
- package/dist/extensions/forgecli/orchestrator-status-bar.js.map +1 -0
- package/dist/extensions/forgecli/orchestrator-tree.d.ts +96 -0
- package/dist/extensions/forgecli/orchestrator-tree.js +390 -0
- package/dist/extensions/forgecli/orchestrator-tree.js.map +1 -0
- package/dist/extensions/forgecli/project-orientation.js +12 -8
- package/dist/extensions/forgecli/project-orientation.js.map +1 -1
- package/dist/extensions/forgecli/regenerate.d.ts +16 -0
- package/dist/extensions/forgecli/regenerate.js +110 -0
- package/dist/extensions/forgecli/regenerate.js.map +1 -1
- package/dist/extensions/forgecli/run-sprint.js +33 -3
- package/dist/extensions/forgecli/run-sprint.js.map +1 -1
- package/dist/extensions/forgecli/run-task.d.ts +32 -0
- package/dist/extensions/forgecli/run-task.js +185 -12
- package/dist/extensions/forgecli/run-task.js.map +1 -1
- package/dist/extensions/forgecli/subagent/phase-guard.js +15 -5
- package/dist/extensions/forgecli/subagent/phase-guard.js.map +1 -1
- package/dist/extensions/forgecli/subagent/phase-summary-map.d.ts +1 -0
- package/dist/extensions/forgecli/subagent/phase-summary-map.js +17 -0
- package/dist/extensions/forgecli/subagent/phase-summary-map.js.map +1 -1
- package/dist/extensions/forgecli/thread-switcher.js +105 -764
- package/dist/extensions/forgecli/thread-switcher.js.map +1 -1
- package/dist/extensions/forgecli/viewport-events.js +32 -0
- package/dist/extensions/forgecli/viewport-events.js.map +1 -1
- package/dist/forge-payload/.base-pack/commands/fix-bug.md +1 -1
- package/dist/forge-payload/.base-pack/commands/run-sprint.md +1 -1
- package/dist/forge-payload/.base-pack/commands/run-task.md +1 -1
- package/dist/forge-payload/.base-pack/personas/architect.md +1 -1
- package/dist/forge-payload/.base-pack/personas/bug-fixer.md +1 -1
- package/dist/forge-payload/.base-pack/personas/collator.md +3 -3
- package/dist/forge-payload/.base-pack/personas/engineer.md +1 -1
- package/dist/forge-payload/.base-pack/personas/librarian.md +1 -1
- package/dist/forge-payload/.base-pack/personas/orchestrator.md +1 -1
- package/dist/forge-payload/.base-pack/personas/product-manager.md +1 -1
- package/dist/forge-payload/.base-pack/personas/qa-engineer.md +1 -1
- package/dist/forge-payload/.base-pack/personas/supervisor.md +1 -1
- package/dist/forge-payload/.base-pack/workflows/_fragments/event-emission-schema.md +1 -1
- package/dist/forge-payload/.base-pack/workflows/_fragments/friction-emit.md +1 -1
- package/dist/forge-payload/.base-pack/workflows/_fragments/iron-laws.md +1 -1
- package/dist/forge-payload/.base-pack/workflows/_fragments/progress-reporting.md +2 -2
- package/dist/forge-payload/.base-pack/workflows/_fragments/store-cli-verbs.md +29 -5
- package/dist/forge-payload/.base-pack/workflows/architect_approve.md +8 -10
- package/dist/forge-payload/.base-pack/workflows/architect_review_sprint_completion.md +2 -2
- package/dist/forge-payload/.base-pack/workflows/architect_sprint_intake.md +2 -2
- package/dist/forge-payload/.base-pack/workflows/architect_sprint_plan.md +5 -5
- package/dist/forge-payload/.base-pack/workflows/collator_agent.md +5 -7
- package/dist/forge-payload/.base-pack/workflows/commit_task.md +7 -9
- package/dist/forge-payload/.base-pack/workflows/enhance.md +5 -5
- package/dist/forge-payload/.base-pack/workflows/implement_plan.md +9 -9
- package/dist/forge-payload/.base-pack/workflows/migrate_structural.md +12 -13
- package/dist/forge-payload/.base-pack/workflows/plan_task.md +5 -6
- package/dist/forge-payload/.base-pack/workflows/review_code.md +8 -8
- package/dist/forge-payload/.base-pack/workflows/review_plan.md +8 -8
- package/dist/forge-payload/.base-pack/workflows/sprint_retrospective.md +3 -3
- package/dist/forge-payload/.base-pack/workflows/triage.md +13 -10
- package/dist/forge-payload/.base-pack/workflows/update_implementation.md +2 -2
- package/dist/forge-payload/.base-pack/workflows/update_plan.md +2 -2
- package/dist/forge-payload/.base-pack/workflows/validate_task.md +6 -8
- package/dist/forge-payload/.base-pack/workflows-js/wfl-fix-bug.js +490 -0
- package/dist/forge-payload/.base-pack/workflows-js/wfl-run-sprint.js +416 -0
- package/dist/forge-payload/.base-pack/workflows-js/wfl-run-task.js +608 -0
- package/dist/forge-payload/.claude-plugin/plugin.json +1 -1
- package/dist/forge-payload/.schemas/_defs/locator.schema.json +13 -0
- package/dist/forge-payload/.schemas/bug.schema.json +1 -0
- package/dist/forge-payload/.schemas/config.schema.json +2 -3
- package/dist/forge-payload/.schemas/enum-catalog.json +2 -2
- package/dist/forge-payload/.schemas/event.schema.json +16 -0
- package/dist/forge-payload/.schemas/migrations.json +299 -0
- package/dist/forge-payload/.schemas/sprint.schema.json +1 -0
- package/dist/forge-payload/.schemas/task.schema.json +1 -0
- package/dist/forge-payload/commands/health.md +29 -0
- package/dist/forge-payload/commands/rebuild.md +143 -15
- package/dist/forge-payload/commands/update.md +28 -27
- package/dist/forge-payload/hooks/preflight-session.cjs +99 -0
- package/dist/forge-payload/init/phases/phase-3-materialize.md +18 -5
- package/dist/forge-payload/integrity.json +7 -6
- package/dist/forge-payload/meta/fragments/tool-discipline.md +1 -1
- package/dist/forge-payload/meta/personas/meta-architect.md +1 -1
- package/dist/forge-payload/meta/personas/meta-bug-fixer.md +1 -1
- package/dist/forge-payload/meta/personas/meta-collator.md +7 -7
- package/dist/forge-payload/meta/personas/meta-engineer.md +1 -1
- package/dist/forge-payload/meta/personas/meta-orchestrator.md +1 -1
- package/dist/forge-payload/meta/personas/meta-supervisor.md +1 -1
- package/dist/forge-payload/meta/tool-specs/store-cli.spec.md +1 -1
- package/dist/forge-payload/meta/workflows/_fragments/event-emission-schema.md +1 -1
- package/dist/forge-payload/meta/workflows/_fragments/friction-emit.md +1 -1
- package/dist/forge-payload/meta/workflows/_fragments/iron-laws.md +1 -1
- package/dist/forge-payload/meta/workflows/_fragments/progress-reporting.md +2 -2
- package/dist/forge-payload/meta/workflows/_fragments/store-cli-verbs.md +29 -5
- package/dist/forge-payload/meta/workflows/meta-approve.md +8 -10
- package/dist/forge-payload/meta/workflows/meta-bug-triage.md +13 -10
- package/dist/forge-payload/meta/workflows/meta-collate.md +6 -8
- package/dist/forge-payload/meta/workflows/meta-commit.md +7 -9
- package/dist/forge-payload/meta/workflows/meta-enhance.md +5 -5
- package/dist/forge-payload/meta/workflows/meta-fix-bug.md +35 -11
- package/dist/forge-payload/meta/workflows/meta-implement.md +18 -9
- package/dist/forge-payload/meta/workflows/meta-migrate.md +13 -14
- package/dist/forge-payload/meta/workflows/meta-new-sprint.md +3 -3
- package/dist/forge-payload/meta/workflows/meta-orchestrate.md +175 -82
- package/dist/forge-payload/meta/workflows/meta-plan-sprint.md +6 -6
- package/dist/forge-payload/meta/workflows/meta-plan-task.md +12 -6
- package/dist/forge-payload/meta/workflows/meta-retro.md +4 -4
- package/dist/forge-payload/meta/workflows/meta-retrospective.md +4 -4
- package/dist/forge-payload/meta/workflows/meta-review-implementation.md +8 -8
- package/dist/forge-payload/meta/workflows/meta-review-plan.md +8 -8
- package/dist/forge-payload/meta/workflows/meta-review-sprint-completion.md +3 -3
- package/dist/forge-payload/meta/workflows/meta-sprint-intake.md +3 -3
- package/dist/forge-payload/meta/workflows/meta-sprint-plan.md +6 -6
- package/dist/forge-payload/meta/workflows/meta-update-implementation.md +2 -2
- package/dist/forge-payload/meta/workflows/meta-update-plan.md +2 -2
- package/dist/forge-payload/meta/workflows/meta-validate.md +6 -8
- package/dist/forge-payload/schemas/_defs/locator.schema.json +13 -0
- package/dist/forge-payload/schemas/bug.schema.json +1 -0
- package/dist/forge-payload/schemas/config.schema.json +2 -3
- package/dist/forge-payload/schemas/enum-catalog.json +2 -2
- package/dist/forge-payload/schemas/event.schema.json +16 -0
- package/dist/forge-payload/schemas/sprint.schema.json +1 -0
- package/dist/forge-payload/schemas/structure-manifest.json +76 -73
- package/dist/forge-payload/schemas/task.schema.json +1 -0
- package/dist/forge-payload/skills/refresh-kb-links/SKILL.md +14 -7
- package/dist/forge-payload/tools/artifact-store.cjs +242 -0
- package/dist/forge-payload/tools/artifact.cjs +60 -120
- package/dist/forge-payload/tools/banners.cjs +29 -10
- package/dist/forge-payload/tools/check-structure.cjs +88 -7
- package/dist/forge-payload/tools/collate.cjs +16 -2
- package/dist/forge-payload/tools/lib/artifact-kinds.cjs +95 -0
- package/dist/forge-payload/tools/lib/store-nlp.cjs +6 -0
- package/dist/forge-payload/tools/lib/store-query-exec.cjs +39 -5
- package/dist/forge-payload/tools/lib/suggest.cjs +2 -1
- package/dist/forge-payload/tools/manage-config.cjs +5 -7
- package/dist/forge-payload/tools/parse-gates.cjs +73 -1
- package/dist/forge-payload/tools/postflight-gate.cjs +252 -0
- package/dist/forge-payload/tools/preflight-gate.cjs +102 -5
- package/dist/forge-payload/tools/store-cli.cjs +50 -15
- package/dist/forge-payload/tools/substitute-placeholders.cjs +5 -4
- package/dist/forge-payload/tools/verify-phase.cjs +17 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.d.ts +5 -2
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.js +81 -18
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/agent-harness.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/branch-summarization.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/branch-summarization.js +1 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/branch-summarization.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js +19 -24
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/compaction/compaction.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.d.ts +1 -0
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.js +14 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/session.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.d.ts +22 -8
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/types.js.map +1 -1
- package/node_modules/@earendil-works/pi-agent-core/package.json +3 -3
- package/node_modules/@earendil-works/pi-ai/README.md +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts +374 -122
- package/node_modules/@earendil-works/pi-ai/dist/models.generated.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/models.generated.js +424 -232
- package/node_modules/@earendil-works/pi-ai/dist/models.generated.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.d.ts +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.js +38 -2
- package/node_modules/@earendil-works/pi-ai/dist/providers/amazon-bedrock.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.js +21 -12
- package/node_modules/@earendil-works/pi-ai/dist/providers/anthropic.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.js +6 -10
- package/node_modules/@earendil-works/pi-ai/dist/providers/azure-openai-responses.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/google-vertex.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/google-vertex.js +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/google-vertex.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/google.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/google.js +5 -3
- package/node_modules/@earendil-works/pi-ai/dist/providers/google.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/images/openrouter.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/images/openrouter.js +3 -4
- package/node_modules/@earendil-works/pi-ai/dist/providers/images/openrouter.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/mistral.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/mistral.js +2 -3
- package/node_modules/@earendil-works/pi-ai/dist/providers/mistral.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.js +159 -78
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-codex-responses.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.js +16 -11
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-completions.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses-shared.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses-shared.js +4 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses-shared.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.js +6 -10
- package/node_modules/@earendil-works/pi-ai/dist/providers/openai-responses.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/simple-options.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/providers/simple-options.js +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/providers/simple-options.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/stream.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/stream.js +14 -2
- package/node_modules/@earendil-works/pi-ai/dist/stream.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/types.d.ts +14 -4
- package/node_modules/@earendil-works/pi-ai/dist/types.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/types.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/abort-signals.d.ts +6 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/abort-signals.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/abort-signals.js +34 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/abort-signals.js.map +1 -0
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/device-code.d.ts +9 -7
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/device-code.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/device-code.js +8 -7
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/device-code.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/github-copilot.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/github-copilot.js +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/github-copilot.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/index.d.ts +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/index.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/index.js +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/index.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/openai-codex.d.ts +10 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/openai-codex.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/openai-codex.js +179 -79
- package/node_modules/@earendil-works/pi-ai/dist/utils/oauth/openai-codex.js.map +1 -1
- package/node_modules/@earendil-works/pi-ai/package.json +2 -2
- package/node_modules/@earendil-works/pi-coding-agent/CHANGELOG.md +94 -0
- package/node_modules/@earendil-works/pi-coding-agent/README.md +9 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/cli/args.d.ts +3 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/cli/args.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/cli/args.js +27 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/cli/args.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/config.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/config.js +15 -2
- package/node_modules/@earendil-works/pi-coding-agent/dist/config.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-services.d.ts +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-services.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-services.js +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session-services.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.d.ts +5 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.js +28 -4
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/agent-session.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/compaction.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/compaction.js +18 -24
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/compaction/compaction.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.d.ts +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.js +8 -2
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/runner.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/types.d.ts +7 -5
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/types.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/extensions/types.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-registry.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-registry.js +65 -13
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-registry.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-resolver.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-resolver.js +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/model-resolver.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/resolve-config-value.d.ts +9 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/resolve-config-value.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/resolve-config-value.js +134 -11
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/resolve-config-value.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/sdk.d.ts +2 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/sdk.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/sdk.js +10 -6
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/sdk.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-manager.d.ts +6 -7
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-manager.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-manager.js +75 -28
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/session-manager.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.d.ts +2 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.js +14 -9
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/settings-manager.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/system-prompt.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/system-prompt.js +0 -3
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/system-prompt.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.js +7 -10
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/edit.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/find.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/find.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/grep.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/grep.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/ls.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/ls.js +5 -7
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/ls.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.js +6 -7
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/read.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/render-utils.d.ts +5 -2
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/render-utils.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/render-utils.js +17 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/render-utils.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/write.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/write.js +5 -6
- package/node_modules/@earendil-works/pi-coding-agent/dist/core/tools/write.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/index.d.ts +2 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/index.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/index.js +2 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/index.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/main.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/main.js +69 -16
- package/node_modules/@earendil-works/pi-coding-agent/dist/main.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/migrations.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/migrations.js +118 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/migrations.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/login-dialog.d.ts +1 -3
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/login-dialog.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/login-dialog.js +2 -4
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/login-dialog.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/user-message.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/user-message.js +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/components/user-message.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts +3 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.js +59 -6
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/interactive-mode.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/theme/theme.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/theme/theme.js +10 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/interactive/theme/theme.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.js +3 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-mode.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-types.d.ts +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-types.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/modes/rpc/rpc-types.js.map +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/deprecation.d.ts +4 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/deprecation.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/deprecation.js +13 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/deprecation.js.map +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/json.d.ts +3 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/json.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/json.js +7 -0
- package/node_modules/@earendil-works/pi-coding-agent/dist/utils/json.js.map +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/docs/custom-provider.md +13 -10
- package/node_modules/@earendil-works/pi-coding-agent/docs/development.md +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/docs/extensions.md +12 -6
- package/node_modules/@earendil-works/pi-coding-agent/docs/models.md +25 -12
- package/node_modules/@earendil-works/pi-coding-agent/docs/providers.md +13 -5
- package/node_modules/@earendil-works/pi-coding-agent/docs/quickstart.md +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/docs/rpc.md +2 -1
- package/node_modules/@earendil-works/pi-coding-agent/docs/sdk.md +6 -0
- package/node_modules/@earendil-works/pi-coding-agent/docs/session-format.md +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/docs/sessions.md +8 -0
- package/node_modules/@earendil-works/pi-coding-agent/docs/settings.md +7 -3
- package/node_modules/@earendil-works/pi-coding-agent/docs/terminal-setup.md +2 -0
- package/node_modules/@earendil-works/pi-coding-agent/docs/tui.md +2 -2
- package/node_modules/@earendil-works/pi-coding-agent/docs/usage.md +9 -0
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/README.md +1 -0
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-anthropic/index.ts +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-anthropic/package.json +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-gitlab-duo/index.ts +54 -3
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/custom-provider-gitlab-duo/package.json +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/git-merge-and-resolve.ts +115 -0
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/input-transform-streaming.ts +39 -0
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/sandbox/package.json +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/examples/extensions/with-deps/package.json +1 -1
- package/node_modules/@earendil-works/pi-coding-agent/npm-shrinkwrap.json +443 -61
- package/node_modules/@earendil-works/pi-coding-agent/package.json +6 -6
- package/node_modules/@earendil-works/pi-tui/README.md +2 -2
- package/node_modules/@earendil-works/pi-tui/dist/components/editor.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/editor.js +24 -83
- package/node_modules/@earendil-works/pi-tui/dist/components/editor.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/input.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/input.js +7 -55
- package/node_modules/@earendil-works/pi-tui/dist/components/input.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/markdown.d.ts +7 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/markdown.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/components/markdown.js +12 -2
- package/node_modules/@earendil-works/pi-tui/dist/components/markdown.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/index.d.ts +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/index.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/index.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal-image.d.ts +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal-image.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js +34 -7
- package/node_modules/@earendil-works/pi-tui/dist/terminal-image.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts +33 -10
- package/node_modules/@earendil-works/pi-tui/dist/terminal.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/terminal.js +172 -37
- package/node_modules/@earendil-works/pi-tui/dist/terminal.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/utils.d.ts +6 -1
- package/node_modules/@earendil-works/pi-tui/dist/utils.d.ts.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/utils.js +27 -15
- package/node_modules/@earendil-works/pi-tui/dist/utils.js.map +1 -1
- package/node_modules/@earendil-works/pi-tui/dist/word-navigation.d.ts +25 -0
- package/node_modules/@earendil-works/pi-tui/dist/word-navigation.d.ts.map +1 -0
- package/node_modules/@earendil-works/pi-tui/dist/word-navigation.js +96 -0
- package/node_modules/@earendil-works/pi-tui/dist/word-navigation.js.map +1 -0
- package/node_modules/@earendil-works/pi-tui/package.json +2 -2
- package/node_modules/@entelligentsia/forge-compress/LICENSE +21 -0
- package/node_modules/@entelligentsia/forge-compress/README.md +85 -0
- package/node_modules/@mariozechner/clipboard/Cargo.toml +3 -3
- package/node_modules/@mariozechner/clipboard/index.d.ts +34 -20
- package/node_modules/@mariozechner/clipboard/index.js +546 -257
- package/node_modules/@mariozechner/clipboard/package.json +5 -6
- package/node_modules/@mariozechner/clipboard/package.json.prepack-backup +14 -14
- package/node_modules/@mariozechner/clipboard/src/lib.rs +4 -9
- package/node_modules/@mariozechner/clipboard-linux-x64-gnu/clipboard.linux-x64-gnu.node +0 -0
- package/node_modules/@mariozechner/clipboard-linux-x64-gnu/package.json +2 -2
- package/package.json +7 -7
- package/dist/bin/forgecli.d.ts +0 -2
- package/dist/bin/forgecli.js +0 -6
- package/dist/bin/forgecli.js.map +0 -1
- package/dist/extensions/forgecli/config-tui/index.d.ts +0 -5
- package/dist/extensions/forgecli/config-tui/index.js +0 -5
- package/dist/extensions/forgecli/config-tui/index.js.map +0 -1
- package/dist/extensions/forgecli/loaders/persona-skill-loader.d.ts +0 -45
- package/dist/extensions/forgecli/loaders/persona-skill-loader.js +0 -227
- package/dist/extensions/forgecli/loaders/persona-skill-loader.js.map +0 -1
- package/dist/extensions/forgecli/loaders/template-render.d.ts +0 -20
- package/dist/extensions/forgecli/loaders/template-render.js +0 -85
- package/dist/extensions/forgecli/loaders/template-render.js.map +0 -1
- package/dist/extensions/forgecli/loaders/workflow-loader.d.ts +0 -41
- package/dist/extensions/forgecli/loaders/workflow-loader.js +0 -164
- package/dist/extensions/forgecli/loaders/workflow-loader.js.map +0 -1
- package/dist/forge-payload/.base-pack/commands/quiz-agent.md +0 -6
- package/dist/forge-payload/.base-pack/commands/retrospective.md +0 -6
- package/dist/forge-payload/.base-pack/commands/sprint-intake.md +0 -6
- package/dist/forge-payload/.base-pack/commands/sprint-plan.md +0 -6
- package/dist/forge-payload/.base-pack/workflows/fix_bug.md +0 -446
- package/dist/forge-payload/.base-pack/workflows/orchestrate_task.md +0 -934
- package/dist/forge-payload/.base-pack/workflows/run_sprint.md +0 -225
- package/dist/forge-payload/commands/calibrate.md +0 -10
- package/dist/forge-payload/commands/materialize.md +0 -119
- package/dist/forge-payload/commands/migrate.md +0 -12
- package/dist/forge-payload/commands/quiz-agent.md +0 -6
- package/dist/forge-payload/commands/regenerate.md +0 -6
- package/dist/forge-payload/commands/store-query.md +0 -6
- package/dist/forge-payload/commands/store-repair.md +0 -6
- package/dist/forge-payload/commands/update-tools.md +0 -10
- package/dist/forge-payload/meta/templates/meta-retrospective.md +0 -28
- package/dist/forge-payload/tools/prompts/sprint-plan-prompt.md +0 -70
- package/dist/forge-payload/tools/schemas/task-list.schema.json +0 -53
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution-env.d.ts +0 -4
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution-env.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution-env.js +0 -3
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/execution-env.js.map +0 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/jsonl.d.ts +0 -20
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/jsonl.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/jsonl.js +0 -92
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/jsonl.js.map +0 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/memory.d.ts +0 -18
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/memory.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/memory.js +0 -42
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/memory.js.map +0 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/shared.d.ts +0 -10
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/shared.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/shared.js +0 -31
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/repo/shared.js.map +0 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/jsonl.d.ts +0 -30
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/jsonl.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/jsonl.js +0 -170
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/jsonl.js.map +0 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/memory.d.ts +0 -26
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/memory.d.ts.map +0 -1
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/memory.js +0 -90
- package/node_modules/@earendil-works/pi-agent-core/dist/harness/session/storage/memory.js.map +0 -1
- package/node_modules/@mariozechner/clipboard-linux-x64-musl/README.md +0 -3
- package/node_modules/@mariozechner/clipboard-linux-x64-musl/clipboard.linux-x64-musl.node +0 -0
- package/node_modules/@mariozechner/clipboard-linux-x64-musl/package.json +0 -25
|
@@ -1,446 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
requirements:
|
|
3
|
-
reasoning: High
|
|
4
|
-
context: Medium
|
|
5
|
-
speed: Medium
|
|
6
|
-
audience: orchestrator-only
|
|
7
|
-
deps:
|
|
8
|
-
personas: [bug-fixer, supervisor, architect, engineer, collator]
|
|
9
|
-
skills: [bug-fixer, supervisor, architect, engineer, generic]
|
|
10
|
-
templates: [PROGRESS_TEMPLATE]
|
|
11
|
-
sub_workflows: [plan_task, implement_plan, review_plan, review_code, architect_approve, commit_task]
|
|
12
|
-
kb_docs: [architecture/stack.md, architecture/routing.md]
|
|
13
|
-
context_pack: .forge/cache/context-pack.md
|
|
14
|
-
config_fields: [commands.test, paths.engineering]
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
# Fix Bug
|
|
19
|
-
## Pipeline Phases
|
|
20
|
-
|
|
21
|
-
A fix-bug pipeline has these phases (mirrors `meta-orchestrate.md § Pipeline
|
|
22
|
-
Phases`):
|
|
23
|
-
|
|
24
|
-
| Phase | Role | Persona | Workflow | Path A | Path B |
|
|
25
|
-
|---|---|---|---|---|---|
|
|
26
|
-
| triage | `triage` | bug-fixer | `triage.md` | yes | yes |
|
|
27
|
-
| plan-fix | `plan` | engineer | `plan_task.md` (bug-mode) | no | yes |
|
|
28
|
-
| review-plan | `review-plan` | supervisor | `review_plan.md` | no | yes |
|
|
29
|
-
| implement | `implement` | engineer | `implement_plan.md` (bug-mode) | yes | yes |
|
|
30
|
-
| review-code | `review-code` | supervisor | `review_code.md` | yes | yes |
|
|
31
|
-
| approve | `approve` | architect | `architect_approve.md` (bug-mode) | yes | yes |
|
|
32
|
-
| commit | `commit` | engineer | `commit_task.md` (bug-mode) | yes | yes |
|
|
33
|
-
| finalize | `finalize` | collator | (inline algorithm) | yes | yes |
|
|
34
|
-
|
|
35
|
-
Phases past triage are the same workflows used by the run-task pipeline. The
|
|
36
|
-
generated orchestrator passes `--bug {bugId}` (in place of `--task {taskId}`)
|
|
37
|
-
to every sub-workflow and to `preflight-gate.cjs`. Sub-workflows resolve the
|
|
38
|
-
record kind from the flag and adjust their verdict-source mapping via
|
|
39
|
-
`BUG_PHASE_VERDICT_SOURCE` in `tools/read-verdict.cjs`.
|
|
40
|
-
|
|
41
|
-
## Status State Machine
|
|
42
|
-
|
|
43
|
-
Bug status writes are owned by specific phases — never by the workflow source
|
|
44
|
-
in finalize, never by an LLM improvising on a task workflow.
|
|
45
|
-
|
|
46
|
-
```
|
|
47
|
-
reported -> triaged -> in-progress -> fixed
|
|
48
|
-
(terminal)
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
| Transition | Owner | Trigger |
|
|
52
|
-
|---|---|---|
|
|
53
|
-
| `reported → triaged` | triage subagent | after reproduction confirmed |
|
|
54
|
-
| `triaged → in-progress` | triage subagent | after route decision recorded in `summaries.triage.route` |
|
|
55
|
-
| `in-progress → fixed` | commit phase | after git commit succeeds (terminal) |
|
|
56
|
-
|
|
57
|
-
The schema's `approved` and `verified` enum members are vestigial — no phase in
|
|
58
|
-
this workflow writes them, and the verdict gate reads
|
|
59
|
-
`summaries.approve.verdict`, not `bug.status`. A follow-up cleanup should drop
|
|
60
|
-
both members from `bug.schema.json` to remove the runtime trap. Until then,
|
|
61
|
-
this workflow MUST NOT write either value. The Phase Gates below `forbid`
|
|
62
|
-
them defensively.
|
|
63
|
-
|
|
64
|
-
## Triage Judgement (the only run-task deviation)
|
|
65
|
-
|
|
66
|
-
After the triage subagent reproduces the bug and confirms root cause, it MUST
|
|
67
|
-
record a **route** decision in its summary:
|
|
68
|
-
|
|
69
|
-
```json
|
|
70
|
-
{
|
|
71
|
-
"objective": "Triage FORGE-BUG-NNN — reproduce, locate, decide route.",
|
|
72
|
-
"key_changes": [...],
|
|
73
|
-
"findings": [
|
|
74
|
-
"Root cause: <one line>",
|
|
75
|
-
"Reproduction: <one line>",
|
|
76
|
-
"Route decision: A | B",
|
|
77
|
-
"Rationale: <one line>"
|
|
78
|
-
],
|
|
79
|
-
"verdict": "n/a",
|
|
80
|
-
"written_at": "<iso>",
|
|
81
|
-
"artifact_ref": "TRIAGE.md",
|
|
82
|
-
"route": "A"
|
|
83
|
-
}
|
|
84
|
-
```
|
|
85
|
-
|
|
86
|
-
The `route` field is required. Allowed values: `"A"` or `"B"`.
|
|
87
|
-
|
|
88
|
-
> **Field-naming caution — runtime-tested.** The route field is named
|
|
89
|
-
> `route`, never `path`. The bug schema's top-level `path` field is the
|
|
90
|
-
> bug's **artifact directory** (e.g. `engineering/bugs/EMG-BUG-001-...`).
|
|
91
|
-
> Conflating the two caused EMBERGLOW-BUG-001 (v0.44.0 first run) to land
|
|
92
|
-
> its `TRIAGE.md` under `.forge/store/bugs/` instead of `engineering/bugs/`.
|
|
93
|
-
> Triage subagents MUST NOT touch `bug.path` — that field is set at bug
|
|
94
|
-
> creation and never modified by triage.
|
|
95
|
-
|
|
96
|
-
### Path A / Path B eligibility
|
|
97
|
-
|
|
98
|
-
See `triage.md § Path A / Path B Eligibility` for the criteria the triage
|
|
99
|
-
subagent applies. The criteria are single-sourced in the triage workflow;
|
|
100
|
-
this orchestrator only reads the resulting `summaries.triage.route` value.
|
|
101
|
-
|
|
102
|
-
### Pipeline selection by path
|
|
103
|
-
|
|
104
|
-
```
|
|
105
|
-
phases_A = [triage, implement, review-code, approve, commit, finalize]
|
|
106
|
-
phases_B = [triage, plan-fix, review-plan, implement, review-code, approve, commit, finalize]
|
|
107
|
-
|
|
108
|
-
if summaries.triage.route == "A": phases = phases_A
|
|
109
|
-
else: phases = phases_B
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
The orchestrator MUST read `summaries.triage.route` from the bug record after
|
|
113
|
-
the triage subagent returns and select the phase list before entering the main
|
|
114
|
-
loop. The selection is final for the run — no mid-pipeline switching.
|
|
115
|
-
|
|
116
|
-
## Pipeline Resolution
|
|
117
|
-
|
|
118
|
-
Fix-bug does **not** read `task.pipeline` from config. The path-branch decision
|
|
119
|
-
above replaces the task pipeline lookup. The orchestrator MAY honour
|
|
120
|
-
`config.pipelines.bug` to override the default Path A / Path B phase lists,
|
|
121
|
-
mirroring `meta-orchestrate.md § Pipeline Resolution`; if unset, the lists
|
|
122
|
-
above are used.
|
|
123
|
-
|
|
124
|
-
## Algorithm
|
|
125
|
-
|
|
126
|
-
The fix-bug orchestrator MUST follow this procedure exactly. The structure
|
|
127
|
-
mirrors `meta-orchestrate.md § Execution Algorithm` — same persona-map, same
|
|
128
|
-
banner-map, same cluster detection, same preflight gate, same event emission.
|
|
129
|
-
Differences are confined to the **triage** step and the **path branch**.
|
|
130
|
-
|
|
131
|
-
```
|
|
132
|
-
1. Pre-loop setup (mirrors meta-orchestrate.md):
|
|
133
|
-
- Resolve FORGE_ROOT.
|
|
134
|
-
- Detect execution cluster from ANTHROPIC_DEFAULT_*_MODEL env vars.
|
|
135
|
-
- Clear progress log: store-cli progress-clear bugs
|
|
136
|
-
- Read bug record. If status ∈ {blocked, escalated, fixed, abandoned}:
|
|
137
|
-
skip the run, emit a single `bug_skipped` event, return.
|
|
138
|
-
|
|
139
|
-
2. Triage:
|
|
140
|
-
- Locate or create the bug record (MANDATORY — do this before anything else):
|
|
141
|
-
a. Determine the bug ID: if $ARGUMENTS is an existing FORGE-BUG-NNN ID, use it.
|
|
142
|
-
Otherwise derive the next available ID by listing .forge/store/bugs/.
|
|
143
|
-
b. If .forge/store/bugs/{BUG_ID}.json does NOT exist, write a fresh record
|
|
144
|
-
via store-cli with status="reported".
|
|
145
|
-
c. Read the now-guaranteed record.
|
|
146
|
-
- Spawn the triage subagent (workflow: `triage.md`, persona: bug-fixer).
|
|
147
|
-
It MUST write `TRIAGE.md` + `TRIAGE-SUMMARY.json` with a `route` field
|
|
148
|
-
(`"A"` or `"B"`) and call `set-bug-summary {bugId} triage` per
|
|
149
|
-
`triage.md`. The triage workflow is `audience: subagent`, `phase: triage`;
|
|
150
|
-
the orchestrator MUST NOT pass any other workflow body to this subagent.
|
|
151
|
-
- On return, orchestrator transitions status:
|
|
152
|
-
store-cli update-status bug {bugId} status triaged
|
|
153
|
-
store-cli update-status bug {bugId} status in-progress
|
|
154
|
-
- Read summaries.triage.route. If neither "A" nor "B": escalate
|
|
155
|
-
(verdict_malformed). Do not guess.
|
|
156
|
-
|
|
157
|
-
3. Path selection:
|
|
158
|
-
- phases = phases_A if route == "A" else phases_B
|
|
159
|
-
- Begin main phase loop.
|
|
160
|
-
|
|
161
|
-
4. Phase loop (identical to meta-orchestrate.md § Execution Algorithm):
|
|
162
|
-
for each phase in phases[1:]: # triage already done
|
|
163
|
-
- Resolve model (cluster + ROLE_TIER).
|
|
164
|
-
- Compute eventId, agent_name, banner_name (from PERSONA_MAP /
|
|
165
|
-
BANNER_MAP below).
|
|
166
|
-
- Announce phase: banner + "→ {bugId} [{display_model}]".
|
|
167
|
-
- Start progress Monitor on .forge/store/events/bugs/progress.log.
|
|
168
|
-
- Preflight gate: preflight-gate.cjs --phase {role} --bug {bugId}
|
|
169
|
-
Exit 1 or 2 → escalate (see meta-orchestrate.md § Escalation Procedure)
|
|
170
|
-
with bug_id substituted for task_id. Update bug.status to "escalated"
|
|
171
|
-
only if it is currently "in-progress" (do not downgrade other states).
|
|
172
|
-
- Compose role-block, architecture-block, summary-block, overlay (via
|
|
173
|
-
build-overlay.cjs --bug {bugId}).
|
|
174
|
-
- Spawn subagent via Agent tool. Subagent prompt passes:
|
|
175
|
-
sprint_or_bug_id = "bugs" # virtual sprint dir for emit/sidecar
|
|
176
|
-
record_id = {bugId}
|
|
177
|
-
sidecar_path = .forge/store/events/bugs/_{event_id}_usage.json
|
|
178
|
-
- On return: merge sidecar, emit canonical event (orchestrator-owned),
|
|
179
|
-
stop progress Monitor, print phase-exit signal (✓ / ↻ / ⚠), run
|
|
180
|
-
/compact with checkpoint line.
|
|
181
|
-
- If phase is a review and verdict == "revision": re-enter the loop
|
|
182
|
-
on the on_revision predecessor up to max_iterations. Exhaust →
|
|
183
|
-
escalate (see meta-orchestrate.md § Escalation Procedure).
|
|
184
|
-
|
|
185
|
-
5. Phase-specific responsibilities (sub-workflow contracts):
|
|
186
|
-
- plan-fix (Path B): engineer writes BUG_FIX_PLAN.md and BUG-FIX-PLAN-SUMMARY.json
|
|
187
|
-
(verdict: "n/a"). No status write.
|
|
188
|
-
- review-plan (Path B): supervisor writes REVIEW-PLAN-SUMMARY.json
|
|
189
|
-
(verdict: approved | revision). No status write.
|
|
190
|
-
- implement: engineer (or bug-fixer for Path A) applies the fix, runs the
|
|
191
|
-
regression test, writes IMPLEMENTATION-SUMMARY.json (verdict: "n/a").
|
|
192
|
-
No status write — bug stays at "in-progress".
|
|
193
|
-
- review-code: supervisor reads the actual diff and the regression test,
|
|
194
|
-
writes REVIEW-CODE-SUMMARY.json (verdict: approved | revision).
|
|
195
|
-
- approve: architect writes ARCHITECT_APPROVAL.md and APPROVE-SUMMARY.json
|
|
196
|
-
(verdict: approved | revision). No status write — the verdict signal is
|
|
197
|
-
the summary, not bug.status (see read-verdict.cjs:44).
|
|
198
|
-
- commit: engineer makes the git commit and runs:
|
|
199
|
-
store-cli update-status bug {bugId} status fixed
|
|
200
|
-
Then writes COMMIT-SUMMARY.json (verdict: "n/a"). This is the ONLY
|
|
201
|
-
phase that writes bug.status post-triage.
|
|
202
|
-
|
|
203
|
-
6. Finalize (collator, housekeeping):
|
|
204
|
-
- Aggregate cost data from .forge/store/events/bugs/*.json filtered by
|
|
205
|
-
this bugId, and append a "## Cost Summary" section to the bug's
|
|
206
|
-
INDEX.md artifact.
|
|
207
|
-
- Run `node "$FORGE_ROOT/tools/collate.cjs" {bugId} --purge-events`.
|
|
208
|
-
Collate purges only this bug's events from the shared bugs/ dir
|
|
209
|
-
(filtered by bugId reference) — it does NOT purge other bugs' events.
|
|
210
|
-
- Run preflight finalize gate: preflight-gate.cjs --phase finalize --bug {bugId}.
|
|
211
|
-
Exit 1 → escalate. Do NOT downgrade bug.status (it is already "fixed").
|
|
212
|
-
- Do NOT emit a phase event yourself. The orchestrator owns event
|
|
213
|
-
emission for finalize as it does for every other phase — composed from
|
|
214
|
-
runtime telemetry plus the collator's summary.
|
|
215
|
-
```
|
|
216
|
-
|
|
217
|
-
## Persona and Banner Maps
|
|
218
|
-
|
|
219
|
-
Mirrors `meta-orchestrate.md` for shared roles. Bug-only role is `triage`.
|
|
220
|
-
|
|
221
|
-
```
|
|
222
|
-
# --- Role-to-noun mapping (persona and skill file lookups) ---
|
|
223
|
-
ROLE_TO_NOUN = {
|
|
224
|
-
"triage": "bug-fixer",
|
|
225
|
-
"plan": "engineer", # Path B only
|
|
226
|
-
"review-plan": "supervisor", # Path B only
|
|
227
|
-
"implement": "engineer",
|
|
228
|
-
"review-code": "supervisor",
|
|
229
|
-
"approve": "architect",
|
|
230
|
-
"commit": "engineer",
|
|
231
|
-
"finalize": "collator",
|
|
232
|
-
}
|
|
233
|
-
# Default fallback: "bug-fixer"
|
|
234
|
-
|
|
235
|
-
# --- Persona symbol lookup (emoji, name, tagline) ---
|
|
236
|
-
PERSONA_MAP = {
|
|
237
|
-
"triage": ("🍂", "Bug Fixer", "I find what has decayed and decide the path."),
|
|
238
|
-
"plan": ("🌱", "Engineer", "I plan what will be built before any code is written."),
|
|
239
|
-
"review-plan": ("🌿", "Supervisor", "I review before things move forward. I read the actual fix, not just the plan."),
|
|
240
|
-
"implement": ("🌱", "Engineer", "I build what was planned. I do not move forward until the code is clean."),
|
|
241
|
-
"review-code": ("🌿", "Supervisor", "I review before things move forward. I read the actual code, not the report."),
|
|
242
|
-
"approve": ("🗻", "Architect", "I hold the shape of the whole. I give final sign-off before commit."),
|
|
243
|
-
"commit": ("🌱", "Engineer", "I close out completed work with a clean, honest commit."),
|
|
244
|
-
"finalize": ("🍃", "Collator", "I gather what exists and arrange it into views."),
|
|
245
|
-
}
|
|
246
|
-
# Default fallback: ("🍂", "Bug Fixer", "I find what has decayed and decide the path.")
|
|
247
|
-
|
|
248
|
-
# --- Banner identity map (banner name per phase role) ---
|
|
249
|
-
BANNER_MAP = {
|
|
250
|
-
"triage": "rift",
|
|
251
|
-
"plan": "forge",
|
|
252
|
-
"review-plan": "oracle",
|
|
253
|
-
"implement": "forge",
|
|
254
|
-
"review-code": "oracle",
|
|
255
|
-
"approve": "north",
|
|
256
|
-
"commit": "forge",
|
|
257
|
-
"finalize": "drift",
|
|
258
|
-
}
|
|
259
|
-
# Default fallback: "rift"
|
|
260
|
-
```
|
|
261
|
-
|
|
262
|
-
## Subagent Prompt Composition
|
|
263
|
-
|
|
264
|
-
Identical pattern to `meta-orchestrate.md § Execution Algorithm`. The only
|
|
265
|
-
differences are:
|
|
266
|
-
|
|
267
|
-
- `--bug {bugId}` flag passed to preflight-gate.cjs and sub-workflows.
|
|
268
|
-
- `sprint_or_bug_id = "bugs"` for emit/sidecar/progress (virtual sprint dir).
|
|
269
|
-
- `build-overlay.cjs --bug {bugId}` for the overlay (matches the task pattern
|
|
270
|
-
`build-overlay.cjs --task {taskId}`).
|
|
271
|
-
- Sidecar path uses `.forge/store/events/bugs/_{event_id}_usage.json` — the
|
|
272
|
-
shared bugs virtual dir. Collate filters by bug reference at purge time.
|
|
273
|
-
|
|
274
|
-
```
|
|
275
|
-
# --- Materialize project overlay (replaces MASTER_INDEX.md read in subagent) ---
|
|
276
|
-
overlay_result = run_bash(
|
|
277
|
-
f'node "$FORGE_ROOT/tools/build-overlay.cjs" --bug {bug_id} --format md'
|
|
278
|
-
)
|
|
279
|
-
bug_overlay_md = overlay_result.stdout if overlay_result.exit_code == 0 else ""
|
|
280
|
-
|
|
281
|
-
spawn_subagent(
|
|
282
|
-
prompt=compose_subagent_prompt(
|
|
283
|
-
agent_name=agent_name, progress_log_path=progress_log_path, banner_name=banner_name,
|
|
284
|
-
sprint_or_bug_id="bugs", phase_role=phase.role,
|
|
285
|
-
architecture_block=bug_architecture_block, summary_block=bug_summary_block,
|
|
286
|
-
role_block=role_block, overlay_md=bug_overlay_md,
|
|
287
|
-
context={"Bug Root": bug_root_path, "Store Root": store_root_path,
|
|
288
|
-
"Events Root": ".forge/store/events/bugs/"},
|
|
289
|
-
workflow=phase.workflow, record_id=bug_id,
|
|
290
|
-
sidecar_path=f".forge/store/events/bugs/_{event_id}_usage.json"
|
|
291
|
-
),
|
|
292
|
-
description=f"{emoji} {persona_name} — {phase.name} for {bug_id}",
|
|
293
|
-
model=phase_model
|
|
294
|
-
)
|
|
295
|
-
```
|
|
296
|
-
|
|
297
|
-
## Phase Gates
|
|
298
|
-
|
|
299
|
-
Declarative pre-flight gates. Evaluated by `forge/tools/preflight-gate.cjs`
|
|
300
|
-
before every subagent spawn. Grammar identical to `meta-orchestrate.md §
|
|
301
|
-
Phase Gates`. Gates encode both the path-A/path-B split (via `after`
|
|
302
|
-
predecessors that differ per path) and the status-trap defences.
|
|
303
|
-
|
|
304
|
-
```gates phase=triage
|
|
305
|
-
forbid bug.status == blocked
|
|
306
|
-
forbid bug.status == escalated
|
|
307
|
-
forbid bug.status == fixed
|
|
308
|
-
forbid bug.status == abandoned
|
|
309
|
-
forbid bug.status == approved
|
|
310
|
-
forbid bug.status == verified
|
|
311
|
-
```
|
|
312
|
-
|
|
313
|
-
```gates phase=plan
|
|
314
|
-
artifact {engineering}/bugs/{bug}/TRIAGE.md min=200
|
|
315
|
-
after triage = n/a
|
|
316
|
-
forbid bug.status == fixed
|
|
317
|
-
forbid bug.status == approved
|
|
318
|
-
forbid bug.status == verified
|
|
319
|
-
forbid bug.status == blocked
|
|
320
|
-
forbid bug.status == escalated
|
|
321
|
-
```
|
|
322
|
-
|
|
323
|
-
```gates phase=review-plan
|
|
324
|
-
artifact {engineering}/bugs/{bug}/BUG_FIX_PLAN.md min=200
|
|
325
|
-
forbid bug.status == fixed
|
|
326
|
-
forbid bug.status == approved
|
|
327
|
-
forbid bug.status == verified
|
|
328
|
-
forbid bug.status == blocked
|
|
329
|
-
forbid bug.status == escalated
|
|
330
|
-
```
|
|
331
|
-
|
|
332
|
-
```gates phase=implement
|
|
333
|
-
artifact {engineering}/bugs/{bug}/TRIAGE.md min=200
|
|
334
|
-
forbid bug.status == fixed
|
|
335
|
-
forbid bug.status == approved
|
|
336
|
-
forbid bug.status == verified
|
|
337
|
-
forbid bug.status == blocked
|
|
338
|
-
forbid bug.status == escalated
|
|
339
|
-
```
|
|
340
|
-
|
|
341
|
-
```gates phase=review-code
|
|
342
|
-
after implement = n/a
|
|
343
|
-
forbid bug.status == fixed
|
|
344
|
-
forbid bug.status == approved
|
|
345
|
-
forbid bug.status == verified
|
|
346
|
-
forbid bug.status == blocked
|
|
347
|
-
forbid bug.status == escalated
|
|
348
|
-
```
|
|
349
|
-
|
|
350
|
-
```gates phase=approve
|
|
351
|
-
after review-code = approved
|
|
352
|
-
forbid bug.status == fixed
|
|
353
|
-
forbid bug.status == approved
|
|
354
|
-
forbid bug.status == verified
|
|
355
|
-
forbid bug.status == blocked
|
|
356
|
-
forbid bug.status == escalated
|
|
357
|
-
```
|
|
358
|
-
|
|
359
|
-
```gates phase=commit
|
|
360
|
-
after approve = approved
|
|
361
|
-
forbid bug.status == fixed
|
|
362
|
-
forbid bug.status == approved
|
|
363
|
-
forbid bug.status == verified
|
|
364
|
-
forbid bug.status == blocked
|
|
365
|
-
forbid bug.status == escalated
|
|
366
|
-
```
|
|
367
|
-
|
|
368
|
-
```gates phase=finalize
|
|
369
|
-
artifact {engineering}/bugs/{bug}/INDEX.md
|
|
370
|
-
```
|
|
371
|
-
|
|
372
|
-
Note: the `forbid bug.status == approved | verified` rows are defensive — no
|
|
373
|
-
phase in this workflow writes those values, and a follow-up cleanup should
|
|
374
|
-
drop them from `bug.schema.json` entirely. Until then, these gates halt any
|
|
375
|
-
LLM-improvised attempt to land in the run-task trap (see today's regression).
|
|
376
|
-
|
|
377
|
-
<!-- See _fragments/generation-instructions.md for Generation Instructions template (fix-bug uses orchestrator-special long-form prose — cannot be reduced to standard subsections) -->
|
|
378
|
-
## Iron Laws
|
|
379
|
-
|
|
380
|
-
<!-- Shared orchestrator laws live in generic-skills.md § Orchestrator Iron Laws. -->
|
|
381
|
-
> See `generic-skills.md § Orchestrator Iron Laws` for the six universal
|
|
382
|
-
> laws that apply to all orchestrators.
|
|
383
|
-
|
|
384
|
-
**Additional laws specific to fix-bug:**
|
|
385
|
-
|
|
386
|
-
1. **Path is decided once.** The triage subagent records `summaries.triage.route`.
|
|
387
|
-
The orchestrator selects the phase list and does not switch paths mid-run.
|
|
388
|
-
If the architect or supervisor concludes Path A was wrong, the verdict is
|
|
389
|
-
`revision` — re-enter the loop, escalate on exhaustion. Never silently
|
|
390
|
-
promote a Path A run into Path B.
|
|
391
|
-
|
|
392
|
-
2. **No status writes outside owned phases.** Only `triage` (`reported →
|
|
393
|
-
triaged → in-progress`) and `commit` (`in-progress → fixed`) write
|
|
394
|
-
`bug.status`. No phase writes `approved` or `verified`. No phase writes
|
|
395
|
-
anything in finalize. LLM improvisation that mirrors a task workflow's
|
|
396
|
-
status writes is a violation; the gates catch it, the iron law names it.
|
|
397
|
-
|
|
398
|
-
3. **No silent skipping.** A bug at `fixed`/`abandoned`/`blocked`/`escalated`
|
|
399
|
-
is skipped at pre-loop with one `bug_skipped` event. Skipping inside the
|
|
400
|
-
phase loop (writing "phase skipped" summaries) is forbidden — that pattern
|
|
401
|
-
produced the inconsistent-skip drift that surfaced today's regression.
|
|
402
|
-
|
|
403
|
-
## Friction Emit
|
|
404
|
-
|
|
405
|
-
When the Bug Fixer, Supervisor, Architect, Engineer, or Collator detects skill
|
|
406
|
-
friction during fix-bug — a referenced skill is unused, fails on invocation,
|
|
407
|
-
is missing from the registry, has gone stale relative to current architecture,
|
|
408
|
-
or is redundant with another skill — emit a `friction` event so
|
|
409
|
-
`/forge:rebuild --enrich` (phase 2) can act on the signal.
|
|
410
|
-
|
|
411
|
-
**Trigger conditions** (set `issue` to the matching token):
|
|
412
|
-
|
|
413
|
-
| Token | When to emit |
|
|
414
|
-
|--------------------|----------------------------------------------------------------------------------|
|
|
415
|
-
| `skill_unused` | A skill listed in the persona's skill block was loaded but never consulted. |
|
|
416
|
-
| `skill_failed` | A skill was consulted but its guidance produced an error or required correction. |
|
|
417
|
-
| `skill_missing` | The workflow needed guidance the available skills did not cover. |
|
|
418
|
-
| `skill_stale` | A skill's guidance contradicts current architecture / supersedes its own advice. |
|
|
419
|
-
| `skill_redundant` | Two skills provided overlapping or conflicting guidance for the same decision. |
|
|
420
|
-
|
|
421
|
-
**Recording friction (subagent side):** call `node "$FORGE_ROOT/tools/friction-emit.cjs` `--workflow {workflow} --persona {persona-noun} --issue {token} [--subkind {token}] [--evidence '{...}']`. The tool appends one judgement-only record to `.forge/cache/FRICTION-{workflow}.jsonl`. The orchestrator drains the file at phase-end, stamps runtime attribution (model, provider, usage, wall times, eventId) onto each record, and emits the events via `store-cli emit` as event type `"friction"`. The schema enforces `{workflow, persona, issue}` as required when `type === "friction"`; `subkind` is the frozen enum `skill_unused|skill_failed|skill_missing|skill_stale|skill_redundant` or experimental `^x_[a-z_]+$`. Emit one record per distinct friction signal — do not coalesce.
|
|
422
|
-
|
|
423
|
-
## Progress Reporting
|
|
424
|
-
|
|
425
|
-
<!-- See _fragments/progress-reporting.md for canonical definition -->
|
|
426
|
-
> See `_fragments/progress-reporting.md` for the full progress log format and `store-cli progress` command reference.
|
|
427
|
-
|
|
428
|
-
Log path: `.forge/store/events/bugs/progress.log`. Agent name format: `{bugId}:{persona_noun}:{phase.role}:{iteration}`. Clear at bug start: `store-cli progress-clear bugs`.
|
|
429
|
-
|
|
430
|
-
## Phase-Exit Signals
|
|
431
|
-
|
|
432
|
-
After each subagent returns: `✓` for completed/approved, `↻` for revision required (with iteration count), `⚠` for escalated. Format mirrors `meta-orchestrate.md § Phase-Exit Signals` with `bug_id` in place of `task_id`.
|
|
433
|
-
|
|
434
|
-
## Event Emission
|
|
435
|
-
|
|
436
|
-
<!-- See _fragments/event-emission-schema.md for canonical contract -->
|
|
437
|
-
> See `_fragments/event-emission-schema.md` for the actor split (subagent
|
|
438
|
-
> writes judgement-only SUMMARY; orchestrator composes the canonical event
|
|
439
|
-
> from runtime telemetry + SUMMARY and emits it).
|
|
440
|
-
|
|
441
|
-
The orchestrator is the only actor that calls `store-cli emit` for phase
|
|
442
|
-
events. All bug-phase events use `sprintId="bugs"` (the reserved virtual
|
|
443
|
-
sprint dir). The schema's `event.bugId` field carries the originating bug
|
|
444
|
-
ID for cross-bug filtering at collate time. Subagents write
|
|
445
|
-
`{PHASE}-SUMMARY.json` and return; the orchestrator composes the canonical
|
|
446
|
-
event and emits it.
|