@garygentry/feature-forge 0.3.8 → 0.3.9
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/README.md +1 -1
- package/adapters/claude/.claude-plugin/plugin.json +1 -1
- package/adapters/claude/.feature-forge-bundle.json +1 -1
- package/adapters/claude/hooks/hooks.json +15 -0
- package/adapters/claude/references/forge-config-schema.json +2 -2
- package/adapters/claude/references/preflight-and-self-heal.md +1 -1
- package/adapters/claude/references/ralph-loop-contract.md +5 -3
- package/adapters/claude/references/stage-exit-protocol.md +1 -1
- package/adapters/claude/references/vendor-construct-inventory.md +1 -1
- package/adapters/claude/scripts/forge-session.py +6 -1
- package/adapters/claude/scripts/forge_session/cli.py +2 -1
- package/adapters/claude/scripts/forge_session/doctor.py +42 -2
- package/adapters/claude/scripts/forge_session/exit.py +5 -5
- package/adapters/claude/scripts/forge_session/routes.py +30 -3
- package/adapters/claude/scripts/session-check.sh +16 -0
- package/adapters/claude/skills/forge/references/stage-exit-protocol.md +1 -1
- package/adapters/claude/skills/forge-0-epic/references/stage-exit-protocol.md +1 -1
- package/adapters/claude/skills/forge-1-prd/references/stage-exit-protocol.md +1 -1
- package/adapters/claude/skills/forge-2-tech/references/stage-exit-protocol.md +1 -1
- package/adapters/claude/skills/forge-3-specs/references/stage-exit-protocol.md +1 -1
- package/adapters/claude/skills/forge-4-backlog/references/stage-exit-protocol.md +1 -1
- package/adapters/claude/skills/forge-5-loop/SKILL.md +12 -22
- package/adapters/claude/skills/forge-5-loop/references/preflight-and-self-heal.md +1 -1
- package/adapters/claude/skills/forge-5-loop/references/ralph-loop-contract.md +5 -3
- package/adapters/claude/skills/forge-5-loop/references/result-reporting.md +78 -16
- package/adapters/claude/skills/forge-5-loop/references/runner-contract.md +111 -12
- package/adapters/claude/skills/forge-5-loop/references/stage-exit-protocol.md +1 -1
- package/adapters/claude/skills/forge-6-docs/references/stage-exit-protocol.md +1 -1
- package/adapters/claude/skills/forge-fix/references/stage-exit-protocol.md +1 -1
- package/adapters/claude/skills/forge-guide/references/forge-config-schema.json +2 -2
- package/adapters/claude/skills/forge-guide/references/preflight-and-self-heal.md +1 -1
- package/adapters/claude/skills/forge-guide/references/ralph-loop-contract.md +5 -3
- package/adapters/claude/skills/forge-init/SKILL.md +7 -5
- package/adapters/claude/skills/forge-init/references/preflight-and-self-heal.md +1 -1
- package/adapters/claude/skills/forge-verify/references/stage-exit-protocol.md +1 -1
- package/adapters/codex/.feature-forge-bundle.json +1 -1
- package/adapters/codex/references/forge-config-schema.json +2 -2
- package/adapters/codex/references/preflight-and-self-heal.md +1 -1
- package/adapters/codex/references/ralph-loop-contract.md +5 -3
- package/adapters/codex/references/stage-exit-protocol.md +1 -1
- package/adapters/codex/references/vendor-construct-inventory.md +1 -1
- package/adapters/codex/scripts/forge-session.py +6 -1
- package/adapters/codex/scripts/forge_session/cli.py +2 -1
- package/adapters/codex/scripts/forge_session/doctor.py +42 -2
- package/adapters/codex/scripts/forge_session/exit.py +5 -5
- package/adapters/codex/scripts/forge_session/routes.py +30 -3
- package/adapters/codex/skills/forge/references/stage-exit-protocol.md +1 -1
- package/adapters/codex/skills/forge-0-epic/references/stage-exit-protocol.md +1 -1
- package/adapters/codex/skills/forge-1-prd/references/stage-exit-protocol.md +1 -1
- package/adapters/codex/skills/forge-2-tech/references/stage-exit-protocol.md +1 -1
- package/adapters/codex/skills/forge-3-specs/references/stage-exit-protocol.md +1 -1
- package/adapters/codex/skills/forge-4-backlog/references/stage-exit-protocol.md +1 -1
- package/adapters/codex/skills/forge-5-loop/SKILL.md +12 -22
- package/adapters/codex/skills/forge-5-loop/references/preflight-and-self-heal.md +1 -1
- package/adapters/codex/skills/forge-5-loop/references/ralph-loop-contract.md +5 -3
- package/adapters/codex/skills/forge-5-loop/references/result-reporting.md +78 -16
- package/adapters/codex/skills/forge-5-loop/references/runner-contract.md +111 -12
- package/adapters/codex/skills/forge-5-loop/references/stage-exit-protocol.md +1 -1
- package/adapters/codex/skills/forge-6-docs/references/stage-exit-protocol.md +1 -1
- package/adapters/codex/skills/forge-fix/references/stage-exit-protocol.md +1 -1
- package/adapters/codex/skills/forge-guide/references/forge-config-schema.json +2 -2
- package/adapters/codex/skills/forge-guide/references/preflight-and-self-heal.md +1 -1
- package/adapters/codex/skills/forge-guide/references/ralph-loop-contract.md +5 -3
- package/adapters/codex/skills/forge-init/SKILL.md +7 -5
- package/adapters/codex/skills/forge-init/references/preflight-and-self-heal.md +1 -1
- package/adapters/codex/skills/forge-verify/references/stage-exit-protocol.md +1 -1
- package/adapters/copilot/.feature-forge-bundle.json +1 -1
- package/adapters/copilot/references/forge-config-schema.json +2 -2
- package/adapters/copilot/references/preflight-and-self-heal.md +1 -1
- package/adapters/copilot/references/ralph-loop-contract.md +5 -3
- package/adapters/copilot/references/stage-exit-protocol.md +1 -1
- package/adapters/copilot/references/vendor-construct-inventory.md +1 -1
- package/adapters/copilot/scripts/forge-session.py +6 -1
- package/adapters/copilot/scripts/forge_session/cli.py +2 -1
- package/adapters/copilot/scripts/forge_session/doctor.py +42 -2
- package/adapters/copilot/scripts/forge_session/exit.py +5 -5
- package/adapters/copilot/scripts/forge_session/routes.py +30 -3
- package/adapters/copilot/skills/forge/references/stage-exit-protocol.md +1 -1
- package/adapters/copilot/skills/forge-0-epic/references/stage-exit-protocol.md +1 -1
- package/adapters/copilot/skills/forge-1-prd/references/stage-exit-protocol.md +1 -1
- package/adapters/copilot/skills/forge-2-tech/references/stage-exit-protocol.md +1 -1
- package/adapters/copilot/skills/forge-3-specs/references/stage-exit-protocol.md +1 -1
- package/adapters/copilot/skills/forge-4-backlog/references/stage-exit-protocol.md +1 -1
- package/adapters/copilot/skills/forge-5-loop/forge-5-loop.md +12 -22
- package/adapters/copilot/skills/forge-5-loop/references/preflight-and-self-heal.md +1 -1
- package/adapters/copilot/skills/forge-5-loop/references/ralph-loop-contract.md +5 -3
- package/adapters/copilot/skills/forge-5-loop/references/result-reporting.md +78 -16
- package/adapters/copilot/skills/forge-5-loop/references/runner-contract.md +111 -12
- package/adapters/copilot/skills/forge-5-loop/references/stage-exit-protocol.md +1 -1
- package/adapters/copilot/skills/forge-6-docs/references/stage-exit-protocol.md +1 -1
- package/adapters/copilot/skills/forge-fix/references/stage-exit-protocol.md +1 -1
- package/adapters/copilot/skills/forge-guide/references/forge-config-schema.json +2 -2
- package/adapters/copilot/skills/forge-guide/references/preflight-and-self-heal.md +1 -1
- package/adapters/copilot/skills/forge-guide/references/ralph-loop-contract.md +5 -3
- package/adapters/copilot/skills/forge-init/forge-init.md +7 -5
- package/adapters/copilot/skills/forge-init/references/preflight-and-self-heal.md +1 -1
- package/adapters/copilot/skills/forge-verify/references/stage-exit-protocol.md +1 -1
- package/adapters/cursor/.feature-forge-bundle.json +1 -1
- package/adapters/cursor/references/forge-config-schema.json +2 -2
- package/adapters/cursor/references/preflight-and-self-heal.md +1 -1
- package/adapters/cursor/references/ralph-loop-contract.md +5 -3
- package/adapters/cursor/references/stage-exit-protocol.md +1 -1
- package/adapters/cursor/references/vendor-construct-inventory.md +1 -1
- package/adapters/cursor/scripts/forge-session.py +6 -1
- package/adapters/cursor/scripts/forge_session/cli.py +2 -1
- package/adapters/cursor/scripts/forge_session/doctor.py +42 -2
- package/adapters/cursor/scripts/forge_session/exit.py +5 -5
- package/adapters/cursor/scripts/forge_session/routes.py +30 -3
- package/adapters/cursor/skills/forge/references/stage-exit-protocol.md +1 -1
- package/adapters/cursor/skills/forge-0-epic/references/stage-exit-protocol.md +1 -1
- package/adapters/cursor/skills/forge-1-prd/references/stage-exit-protocol.md +1 -1
- package/adapters/cursor/skills/forge-2-tech/references/stage-exit-protocol.md +1 -1
- package/adapters/cursor/skills/forge-3-specs/references/stage-exit-protocol.md +1 -1
- package/adapters/cursor/skills/forge-4-backlog/references/stage-exit-protocol.md +1 -1
- package/adapters/cursor/skills/forge-5-loop/forge-5-loop.mdc +12 -22
- package/adapters/cursor/skills/forge-5-loop/references/preflight-and-self-heal.md +1 -1
- package/adapters/cursor/skills/forge-5-loop/references/ralph-loop-contract.md +5 -3
- package/adapters/cursor/skills/forge-5-loop/references/result-reporting.md +78 -16
- package/adapters/cursor/skills/forge-5-loop/references/runner-contract.md +111 -12
- package/adapters/cursor/skills/forge-5-loop/references/stage-exit-protocol.md +1 -1
- package/adapters/cursor/skills/forge-6-docs/references/stage-exit-protocol.md +1 -1
- package/adapters/cursor/skills/forge-fix/references/stage-exit-protocol.md +1 -1
- package/adapters/cursor/skills/forge-guide/references/forge-config-schema.json +2 -2
- package/adapters/cursor/skills/forge-guide/references/preflight-and-self-heal.md +1 -1
- package/adapters/cursor/skills/forge-guide/references/ralph-loop-contract.md +5 -3
- package/adapters/cursor/skills/forge-init/forge-init.mdc +7 -5
- package/adapters/cursor/skills/forge-init/references/preflight-and-self-heal.md +1 -1
- package/adapters/cursor/skills/forge-verify/references/stage-exit-protocol.md +1 -1
- package/adapters/gemini/.feature-forge-bundle.json +1 -1
- package/adapters/gemini/gemini-extension.json +1 -1
- package/adapters/gemini/references/forge-config-schema.json +2 -2
- package/adapters/gemini/references/preflight-and-self-heal.md +1 -1
- package/adapters/gemini/references/ralph-loop-contract.md +5 -3
- package/adapters/gemini/references/stage-exit-protocol.md +1 -1
- package/adapters/gemini/references/vendor-construct-inventory.md +1 -1
- package/adapters/gemini/scripts/forge-session.py +6 -1
- package/adapters/gemini/scripts/forge_session/cli.py +2 -1
- package/adapters/gemini/scripts/forge_session/doctor.py +42 -2
- package/adapters/gemini/scripts/forge_session/exit.py +5 -5
- package/adapters/gemini/scripts/forge_session/routes.py +30 -3
- package/adapters/gemini/skills/forge/references/stage-exit-protocol.md +1 -1
- package/adapters/gemini/skills/forge-0-epic/references/stage-exit-protocol.md +1 -1
- package/adapters/gemini/skills/forge-1-prd/references/stage-exit-protocol.md +1 -1
- package/adapters/gemini/skills/forge-2-tech/references/stage-exit-protocol.md +1 -1
- package/adapters/gemini/skills/forge-3-specs/references/stage-exit-protocol.md +1 -1
- package/adapters/gemini/skills/forge-4-backlog/references/stage-exit-protocol.md +1 -1
- package/adapters/gemini/skills/forge-5-loop/forge-5-loop.md +12 -22
- package/adapters/gemini/skills/forge-5-loop/references/preflight-and-self-heal.md +1 -1
- package/adapters/gemini/skills/forge-5-loop/references/ralph-loop-contract.md +5 -3
- package/adapters/gemini/skills/forge-5-loop/references/result-reporting.md +78 -16
- package/adapters/gemini/skills/forge-5-loop/references/runner-contract.md +111 -12
- package/adapters/gemini/skills/forge-5-loop/references/stage-exit-protocol.md +1 -1
- package/adapters/gemini/skills/forge-6-docs/references/stage-exit-protocol.md +1 -1
- package/adapters/gemini/skills/forge-fix/references/stage-exit-protocol.md +1 -1
- package/adapters/gemini/skills/forge-guide/references/forge-config-schema.json +2 -2
- package/adapters/gemini/skills/forge-guide/references/preflight-and-self-heal.md +1 -1
- package/adapters/gemini/skills/forge-guide/references/ralph-loop-contract.md +5 -3
- package/adapters/gemini/skills/forge-init/forge-init.md +7 -5
- package/adapters/gemini/skills/forge-init/references/preflight-and-self-heal.md +1 -1
- package/adapters/gemini/skills/forge-verify/references/stage-exit-protocol.md +1 -1
- package/adapters/pi/.feature-forge-bundle.json +1 -1
- package/adapters/pi/references/forge-config-schema.json +2 -2
- package/adapters/pi/references/preflight-and-self-heal.md +1 -1
- package/adapters/pi/references/ralph-loop-contract.md +5 -3
- package/adapters/pi/references/stage-exit-protocol.md +1 -1
- package/adapters/pi/references/vendor-construct-inventory.md +1 -1
- package/adapters/pi/scripts/forge-session.py +6 -1
- package/adapters/pi/scripts/forge_session/cli.py +2 -1
- package/adapters/pi/scripts/forge_session/doctor.py +42 -2
- package/adapters/pi/scripts/forge_session/exit.py +5 -5
- package/adapters/pi/scripts/forge_session/routes.py +30 -3
- package/adapters/pi/skills/forge/references/stage-exit-protocol.md +1 -1
- package/adapters/pi/skills/forge-0-epic/references/stage-exit-protocol.md +1 -1
- package/adapters/pi/skills/forge-1-prd/references/stage-exit-protocol.md +1 -1
- package/adapters/pi/skills/forge-2-tech/references/stage-exit-protocol.md +1 -1
- package/adapters/pi/skills/forge-3-specs/references/stage-exit-protocol.md +1 -1
- package/adapters/pi/skills/forge-4-backlog/references/stage-exit-protocol.md +1 -1
- package/adapters/pi/skills/forge-5-loop/SKILL.md +12 -22
- package/adapters/pi/skills/forge-5-loop/references/preflight-and-self-heal.md +1 -1
- package/adapters/pi/skills/forge-5-loop/references/ralph-loop-contract.md +5 -3
- package/adapters/pi/skills/forge-5-loop/references/result-reporting.md +78 -16
- package/adapters/pi/skills/forge-5-loop/references/runner-contract.md +111 -12
- package/adapters/pi/skills/forge-5-loop/references/stage-exit-protocol.md +1 -1
- package/adapters/pi/skills/forge-6-docs/references/stage-exit-protocol.md +1 -1
- package/adapters/pi/skills/forge-fix/references/stage-exit-protocol.md +1 -1
- package/adapters/pi/skills/forge-guide/references/forge-config-schema.json +2 -2
- package/adapters/pi/skills/forge-guide/references/preflight-and-self-heal.md +1 -1
- package/adapters/pi/skills/forge-guide/references/ralph-loop-contract.md +5 -3
- package/adapters/pi/skills/forge-init/SKILL.md +7 -5
- package/adapters/pi/skills/forge-init/references/preflight-and-self-heal.md +1 -1
- package/adapters/pi/skills/forge-verify/references/stage-exit-protocol.md +1 -1
- package/dist/manifest.d.ts +1 -1
- package/dist/rauf.d.ts +3 -3
- package/dist/rauf.js +2 -2
- package/dist/types.d.ts +1 -1
- package/package.json +1 -1
|
@@ -47,7 +47,7 @@ an epic member. Only the flags below are stage-specific; pass no others.
|
|
|
47
47
|
|---|---|---|
|
|
48
48
|
| `forge-0-epic` | `forge-0-epic` | `--next-feature "{member}"` when a concrete member exists |
|
|
49
49
|
| `forge-1-prd` … `forge-4-backlog` | that stage's own id | none beyond identity/capability |
|
|
50
|
-
| `forge-5-loop` | `forge-5-loop` | `--outcome` — one of `complete`, `partial`, `blocked`, `needs-human`, `deferred`, `resolved`; optional `--cause dependency-starvation` with `--outcome partial` |
|
|
50
|
+
| `forge-5-loop` | `forge-5-loop` | `--outcome` — one of `complete`, `partial`, `blocked`, `needs-human`, `deferred`, `resolved`; optional `--cause dependency-starvation`, `review-pending` or `runner-stopped` with `--outcome partial` |
|
|
51
51
|
| `forge-6-docs` | `forge-6-docs` | `--outcome` — `complete`, `blocked`, or `skipped` (deliberate docs skip, persisted via `state-skip` before the exit; routes like `complete` with honest wording) |
|
|
52
52
|
| direct `forge-verify` | `forge-verify` | `--owner direct`, `--outcome` (`passed`, `findings`, `skipped`, `failed`), and served-stage metadata |
|
|
53
53
|
| nested `forge-verify` | `forge-verify` | `--owner nested`, plus the same outcome and served-stage metadata |
|
|
@@ -47,7 +47,7 @@ an epic member. Only the flags below are stage-specific; pass no others.
|
|
|
47
47
|
|---|---|---|
|
|
48
48
|
| `forge-0-epic` | `forge-0-epic` | `--next-feature "{member}"` when a concrete member exists |
|
|
49
49
|
| `forge-1-prd` … `forge-4-backlog` | that stage's own id | none beyond identity/capability |
|
|
50
|
-
| `forge-5-loop` | `forge-5-loop` | `--outcome` — one of `complete`, `partial`, `blocked`, `needs-human`, `deferred`, `resolved`; optional `--cause dependency-starvation` with `--outcome partial` |
|
|
50
|
+
| `forge-5-loop` | `forge-5-loop` | `--outcome` — one of `complete`, `partial`, `blocked`, `needs-human`, `deferred`, `resolved`; optional `--cause dependency-starvation`, `review-pending` or `runner-stopped` with `--outcome partial` |
|
|
51
51
|
| `forge-6-docs` | `forge-6-docs` | `--outcome` — `complete`, `blocked`, or `skipped` (deliberate docs skip, persisted via `state-skip` before the exit; routes like `complete` with honest wording) |
|
|
52
52
|
| direct `forge-verify` | `forge-verify` | `--owner direct`, `--outcome` (`passed`, `findings`, `skipped`, `failed`), and served-stage metadata |
|
|
53
53
|
| nested `forge-verify` | `forge-verify` | `--owner nested`, plus the same outcome and served-stage metadata |
|
|
@@ -235,8 +235,8 @@
|
|
|
235
235
|
},
|
|
236
236
|
"installHint": {
|
|
237
237
|
"type": "string",
|
|
238
|
-
"default": "Provision rauf for a multi-agent setup with the cross-agent installer: `npx @garygentry/feature-forge install` (records the pinned @garygentry/rauf@0.
|
|
239
|
-
"description": "Shown when the runner BINARY is missing or too old (version gate fails, minRunnerVersion floor) — how to obtain/upgrade the CLI itself. Names two distinct binary-provisioning paths: (1) the cross-agent installer (`npx @garygentry/feature-forge install`, the multi-agent provisioning path that pins @garygentry/rauf@0.
|
|
238
|
+
"default": "Provision rauf for a multi-agent setup with the cross-agent installer: `npx @garygentry/feature-forge install` (records the pinned @garygentry/rauf@0.17.1 default). Or install/upgrade just the rauf CLI: `npx @garygentry/rauf@0.17.1 --version`, or `curl -fsSL https://raw.githubusercontent.com/garygentry/rauf/main/scripts/install-binary.sh | bash`.",
|
|
239
|
+
"description": "Shown when the runner BINARY is missing or too old (version gate fails, minRunnerVersion floor) — how to obtain/upgrade the CLI itself. Names two distinct binary-provisioning paths: (1) the cross-agent installer (`npx @garygentry/feature-forge install`, the multi-agent provisioning path that pins @garygentry/rauf@0.17.1), and (2) the direct rauf-CLI install/upgrade one-liner. Distinct from setupHint (which installs per-project artifacts); a version-gate failure is ALWAYS this hint, never setupHint."
|
|
240
240
|
},
|
|
241
241
|
"schemaVersion": {
|
|
242
242
|
"type": "string",
|
|
@@ -6,7 +6,7 @@ silent unasked mutation. It runs whenever a skill gates on `doctor`'s structured
|
|
|
6
6
|
`checks[]` (`roadmap/self-healing-resilience.md` §5.2); today that is `forge-5-loop`'s
|
|
7
7
|
gates 1c/1d (`skills/forge-5-loop/SKILL.md`), which resolve the loop runner **before**
|
|
8
8
|
touching it, `forge-init`'s install preflight (`skills/forge-init/SKILL.md`), where
|
|
9
|
-
|
|
9
|
+
no check is a stop, and `forge-guide --doctor` (`skills/forge-guide/SKILL.md`), the
|
|
10
10
|
operator-facing repair surface, which gates nothing at all. All three are callers, not
|
|
11
11
|
the procedure's scope: any skill that gates on `checks[]` follows it in full. Its seven
|
|
12
12
|
ordered steps: **enumerate → cluster → consolidated prompts → record → apply → prove →
|
|
@@ -40,9 +40,11 @@ defined authoritatively in rauf's
|
|
|
40
40
|
- **A machine-readable event stream** for live supervision (`loopRunner.eventStreamCommand`,
|
|
41
41
|
rauf: `loop run … --ndjson`): one JSON event per line with a stable `type`
|
|
42
42
|
vocabulary — `item_completed` / `item_blocked` / `needs_human` / `signal_parsed`
|
|
43
|
-
/ `loop_completed` / `loop_error` / `loop_cancelled` / `
|
|
44
|
-
circuit-breaker halt surfaces as `loop_error`) — plus a
|
|
45
|
-
derived-status JSON (`loopRunner.statusJsonCommand`, rauf: `status … --json
|
|
43
|
+
/ `loop_completed` / `loop_error` / `loop_cancelled` / `review_failed` /
|
|
44
|
+
`llm_stuck_warning` (a circuit-breaker halt surfaces as `loop_error`) — plus a
|
|
45
|
+
derived-status JSON (`loopRunner.statusJsonCommand`, rauf: `status … --json`;
|
|
46
|
+
forge-5-loop also reads its optional `loopState` / `lock` / `sleepUntil` /
|
|
47
|
+
`reviewPending` fields when present, and degrades to the counts when absent) and
|
|
46
48
|
per-iteration telemetry with a `stuckWarning` flag (`loopRunner.watchCommand`,
|
|
47
49
|
rauf: `status … --json` — the `loop watch` verb was removed in v0.5.0). `forge-5-loop` supervises the run through these,
|
|
48
50
|
**not** by parsing the human log. `followCommand` / `logCommand` are
|
|
@@ -78,11 +78,11 @@ Once the config exists, check the tooling this project's pipeline will lean on:
|
|
|
78
78
|
R="$(bash -c '[ -z "${FEATURE_FORGE_ROOT:-}" ] || [ -x "$FEATURE_FORGE_ROOT/scripts/forge-root.sh" ] || { echo "feature-forge: FEATURE_FORGE_ROOT=$FEATURE_FORGE_ROOT has no scripts/forge-root.sh" >&2; exit 2; }; for d in "${FEATURE_FORGE_ROOT:-}" "${CLAUDE_PLUGIN_ROOT:-}" "$HOME"/.claude/skills/feature-forge "$HOME"/.claude/plugins/cache/*/feature-forge/* "$HOME"/.claude/plugins/*/feature-forge "$HOME"/.agents/skills/feature-forge ./.agents/skills/feature-forge; do [ -x "$d/scripts/forge-root.sh" ] && exec "$d/scripts/forge-root.sh"; done')"
|
|
79
79
|
[ -n "$R" ] || { echo "feature-forge: cannot locate plugin root" >&2; exit 1; }
|
|
80
80
|
python3 "$R/scripts/forge-session.py" doctor --json \
|
|
81
|
-
--check root-version-skew --check gh-available
|
|
81
|
+
--check plugin-root --check root-version-skew --check gh-available
|
|
82
82
|
```
|
|
83
83
|
|
|
84
84
|
Follow `references/preflight-and-self-heal.md` with that result: all `ok`/`na` → say nothing and
|
|
85
|
-
move on. Otherwise cluster and report. **
|
|
85
|
+
move on. Otherwise cluster and report. **No check here is a stop for `forge-init`** — report and
|
|
86
86
|
continue; a `warn` here never aborts initialization (the procedure returns statuses; the caller
|
|
87
87
|
owns its own gate). `gh-available` matters because the tooling-feedback step below tells agents
|
|
88
88
|
to file issues with `gh issue create`; when `gh` is missing or unauthenticated, say so once — its
|
|
@@ -93,9 +93,11 @@ interrogated about it on every init.
|
|
|
93
93
|
`root-version-skew` is reported the same way: a second install shadowing this one is worth
|
|
94
94
|
knowing about before the first stage runs.
|
|
95
95
|
|
|
96
|
-
|
|
97
|
-
resolver fails, so
|
|
98
|
-
|
|
96
|
+
`plugin-root` is reported the same way, **advisory here despite its `blocking` severity**. The
|
|
97
|
+
prelude above already exits 1 when the resolver fails, so below it the check warns only when the
|
|
98
|
+
resolved root is un-built canon (no `.feature-forge-bundle.json` — a repo checkout loaded
|
|
99
|
+
directly): its skills cannot read their shared references and will break mid-stage. Say so once
|
|
100
|
+
with the check's `remedy.description` (advise-only, `network`) and continue.
|
|
99
101
|
|
|
100
102
|
## Root hygiene — tooling feedback
|
|
101
103
|
|
|
@@ -6,7 +6,7 @@ silent unasked mutation. It runs whenever a skill gates on `doctor`'s structured
|
|
|
6
6
|
`checks[]` (`roadmap/self-healing-resilience.md` §5.2); today that is `forge-5-loop`'s
|
|
7
7
|
gates 1c/1d (`skills/forge-5-loop/SKILL.md`), which resolve the loop runner **before**
|
|
8
8
|
touching it, `forge-init`'s install preflight (`skills/forge-init/SKILL.md`), where
|
|
9
|
-
|
|
9
|
+
no check is a stop, and `forge-guide --doctor` (`skills/forge-guide/SKILL.md`), the
|
|
10
10
|
operator-facing repair surface, which gates nothing at all. All three are callers, not
|
|
11
11
|
the procedure's scope: any skill that gates on `checks[]` follows it in full. Its seven
|
|
12
12
|
ordered steps: **enumerate → cluster → consolidated prompts → record → apply → prove →
|
|
@@ -47,7 +47,7 @@ an epic member. Only the flags below are stage-specific; pass no others.
|
|
|
47
47
|
|---|---|---|
|
|
48
48
|
| `forge-0-epic` | `forge-0-epic` | `--next-feature "{member}"` when a concrete member exists |
|
|
49
49
|
| `forge-1-prd` … `forge-4-backlog` | that stage's own id | none beyond identity/capability |
|
|
50
|
-
| `forge-5-loop` | `forge-5-loop` | `--outcome` — one of `complete`, `partial`, `blocked`, `needs-human`, `deferred`, `resolved`; optional `--cause dependency-starvation` with `--outcome partial` |
|
|
50
|
+
| `forge-5-loop` | `forge-5-loop` | `--outcome` — one of `complete`, `partial`, `blocked`, `needs-human`, `deferred`, `resolved`; optional `--cause dependency-starvation`, `review-pending` or `runner-stopped` with `--outcome partial` |
|
|
51
51
|
| `forge-6-docs` | `forge-6-docs` | `--outcome` — `complete`, `blocked`, or `skipped` (deliberate docs skip, persisted via `state-skip` before the exit; routes like `complete` with honest wording) |
|
|
52
52
|
| direct `forge-verify` | `forge-verify` | `--owner direct`, `--outcome` (`passed`, `findings`, `skipped`, `failed`), and served-stage metadata |
|
|
53
53
|
| nested `forge-verify` | `forge-verify` | `--owner nested`, plus the same outcome and served-stage metadata |
|
package/dist/manifest.d.ts
CHANGED
|
@@ -28,7 +28,7 @@ export interface BuildManifestArgs {
|
|
|
28
28
|
readonly skills: readonly string[];
|
|
29
29
|
/** SHA-256 over the source bundle's canonical (sorted-path) file set — drift anchor (spec 03). */
|
|
30
30
|
readonly sourceHash: string;
|
|
31
|
-
/** Recorded pinned rauf coordinate (e.g. "@garygentry/rauf@0.
|
|
31
|
+
/** Recorded pinned rauf coordinate (e.g. "@garygentry/rauf@0.17.1"); `null` when `--skip-rauf` (spec 06). */
|
|
32
32
|
readonly raufPin: string | null;
|
|
33
33
|
/** Symlink mode only: the source bundle the namespace dir links to (REQ-SAFE-02). */
|
|
34
34
|
readonly link?: {
|
package/dist/rauf.d.ts
CHANGED
|
@@ -21,11 +21,11 @@ import { type Result } from "./types.js";
|
|
|
21
21
|
* blocked by npm's similarity filter). Advanced on each feature-forge release to a new
|
|
22
22
|
* known-compatible rauf (REQ-RAUF-03). The current rauf version is 0.13.0.
|
|
23
23
|
*
|
|
24
|
-
* rauf is now PUBLISHED (rauf#28): `@garygentry/rauf@0.
|
|
24
|
+
* rauf is now PUBLISHED (rauf#28): `@garygentry/rauf@0.17.1` resolves from the npm registry, so the
|
|
25
25
|
* preflight below passes by default. (Historically this pin pointed at an unpublished package and
|
|
26
26
|
* the preflight was a designed-to-fail check — see the `--skip-rauf` escape hatch.)
|
|
27
27
|
*/
|
|
28
|
-
export declare const RAUF_PIN = "@garygentry/rauf@0.
|
|
28
|
+
export declare const RAUF_PIN = "@garygentry/rauf@0.17.1";
|
|
29
29
|
/**
|
|
30
30
|
* An injectable, READ-ONLY registry query (D1). Given a coordinate `name@version`, returns the
|
|
31
31
|
* resolved version string on success, or an `InstallerError` if it is not resolvable.
|
|
@@ -37,7 +37,7 @@ export declare const RAUF_PIN = "@garygentry/rauf@0.16.1";
|
|
|
37
37
|
* Contract: the query MUST be read-only — it MUST NOT install, MUST NOT mutate global npm
|
|
38
38
|
* state, and MUST NOT execute rauf. `npm view` satisfies this (it only reads registry metadata).
|
|
39
39
|
*
|
|
40
|
-
* @param coordinate - the `name@version` to resolve, e.g. "@garygentry/rauf@0.
|
|
40
|
+
* @param coordinate - the `name@version` to resolve, e.g. "@garygentry/rauf@0.17.1"
|
|
41
41
|
* @returns Result<string> — the resolved version on success; RAUF_UNRESOLVABLE on failure.
|
|
42
42
|
*/
|
|
43
43
|
export type RegistryQuery = (coordinate: string) => Result<string>;
|
package/dist/rauf.js
CHANGED
|
@@ -22,11 +22,11 @@ import { err, ok } from "./types.js";
|
|
|
22
22
|
* blocked by npm's similarity filter). Advanced on each feature-forge release to a new
|
|
23
23
|
* known-compatible rauf (REQ-RAUF-03). The current rauf version is 0.13.0.
|
|
24
24
|
*
|
|
25
|
-
* rauf is now PUBLISHED (rauf#28): `@garygentry/rauf@0.
|
|
25
|
+
* rauf is now PUBLISHED (rauf#28): `@garygentry/rauf@0.17.1` resolves from the npm registry, so the
|
|
26
26
|
* preflight below passes by default. (Historically this pin pointed at an unpublished package and
|
|
27
27
|
* the preflight was a designed-to-fail check — see the `--skip-rauf` escape hatch.)
|
|
28
28
|
*/
|
|
29
|
-
export const RAUF_PIN = "@garygentry/rauf@0.
|
|
29
|
+
export const RAUF_PIN = "@garygentry/rauf@0.17.1";
|
|
30
30
|
/**
|
|
31
31
|
* Resolvability preflight for the pinned default loop runner (D1; REQ-RAUF-01/02/03, OQ-1).
|
|
32
32
|
*
|
package/dist/types.d.ts
CHANGED
|
@@ -239,7 +239,7 @@ export interface InstallManifest {
|
|
|
239
239
|
readonly featureForgeVersion: string | null;
|
|
240
240
|
/** SHA-256 over the source bundle's canonical (sorted-path) file set — drift anchor (OQ-4, spec 03). */
|
|
241
241
|
readonly sourceHash: string;
|
|
242
|
-
/** Pinned rauf coordinate recorded at install, e.g. "@garygentry/rauf@0.
|
|
242
|
+
/** Pinned rauf coordinate recorded at install, e.g. "@garygentry/rauf@0.17.1"; `null` if `--skip-rauf` (spec 06). */
|
|
243
243
|
readonly raufPin: string | null;
|
|
244
244
|
/** ISO-8601 timestamps. */
|
|
245
245
|
readonly installedAt: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@garygentry/feature-forge",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.9",
|
|
4
4
|
"description": "Cross-agent installer for the feature-forge skill suite — installs the canonical forge pipeline into Claude, Codex, Copilot, Cursor, Gemini, or Pi.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"type": "module",
|