@garygentry/feature-forge 0.3.5 → 0.3.6
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/.feature-forge-bundle.json +1 -1
- package/adapters/claude/references/forge-config-schema.json +4 -4
- package/adapters/claude/references/ralph-loop-contract.md +12 -8
- package/adapters/claude/references/shared-conventions.md +1 -1
- package/adapters/claude/scripts/forge-session.py +30 -26
- package/adapters/claude/skills/forge/references/shared-conventions.md +1 -1
- package/adapters/claude/skills/forge-0-epic/references/shared-conventions.md +1 -1
- package/adapters/claude/skills/forge-1-prd/references/shared-conventions.md +1 -1
- package/adapters/claude/skills/forge-2-tech/references/shared-conventions.md +1 -1
- package/adapters/claude/skills/forge-3-specs/references/shared-conventions.md +1 -1
- package/adapters/claude/skills/forge-4-backlog/references/shared-conventions.md +1 -1
- package/adapters/claude/skills/forge-5-loop/SKILL.md +3 -3
- package/adapters/claude/skills/forge-5-loop/references/ralph-loop-contract.md +12 -8
- package/adapters/claude/skills/forge-5-loop/references/runner-contract.md +2 -2
- package/adapters/claude/skills/forge-5-loop/references/shared-conventions.md +1 -1
- package/adapters/claude/skills/forge-6-docs/references/shared-conventions.md +1 -1
- package/adapters/claude/skills/forge-fix/references/shared-conventions.md +1 -1
- package/adapters/claude/skills/forge-guide/references/forge-config-schema.json +4 -4
- package/adapters/claude/skills/forge-guide/references/ralph-loop-contract.md +12 -8
- package/adapters/claude/skills/forge-guide/references/shared-conventions.md +1 -1
- package/adapters/claude/skills/forge-verify/SKILL.md +5 -3
- package/adapters/claude/skills/forge-verify/references/findings-template.md +6 -6
- package/adapters/claude/skills/forge-verify/references/shared-conventions.md +1 -1
- package/adapters/codex/.feature-forge-bundle.json +1 -1
- package/adapters/codex/references/forge-config-schema.json +4 -4
- package/adapters/codex/references/ralph-loop-contract.md +12 -8
- package/adapters/codex/references/shared-conventions.md +1 -1
- package/adapters/codex/scripts/forge-session.py +30 -26
- package/adapters/codex/skills/forge/references/shared-conventions.md +1 -1
- package/adapters/codex/skills/forge-0-epic/references/shared-conventions.md +1 -1
- package/adapters/codex/skills/forge-1-prd/references/shared-conventions.md +1 -1
- package/adapters/codex/skills/forge-2-tech/references/shared-conventions.md +1 -1
- package/adapters/codex/skills/forge-3-specs/references/shared-conventions.md +1 -1
- package/adapters/codex/skills/forge-4-backlog/references/shared-conventions.md +1 -1
- package/adapters/codex/skills/forge-5-loop/SKILL.md +3 -3
- package/adapters/codex/skills/forge-5-loop/references/ralph-loop-contract.md +12 -8
- package/adapters/codex/skills/forge-5-loop/references/runner-contract.md +2 -2
- package/adapters/codex/skills/forge-5-loop/references/shared-conventions.md +1 -1
- package/adapters/codex/skills/forge-6-docs/references/shared-conventions.md +1 -1
- package/adapters/codex/skills/forge-fix/references/shared-conventions.md +1 -1
- package/adapters/codex/skills/forge-guide/references/forge-config-schema.json +4 -4
- package/adapters/codex/skills/forge-guide/references/ralph-loop-contract.md +12 -8
- package/adapters/codex/skills/forge-guide/references/shared-conventions.md +1 -1
- package/adapters/codex/skills/forge-verify/SKILL.md +5 -3
- package/adapters/codex/skills/forge-verify/references/findings-template.md +6 -6
- package/adapters/codex/skills/forge-verify/references/shared-conventions.md +1 -1
- package/adapters/copilot/.feature-forge-bundle.json +1 -1
- package/adapters/copilot/references/forge-config-schema.json +4 -4
- package/adapters/copilot/references/ralph-loop-contract.md +12 -8
- package/adapters/copilot/references/shared-conventions.md +1 -1
- package/adapters/copilot/scripts/forge-session.py +30 -26
- package/adapters/copilot/skills/forge/references/shared-conventions.md +1 -1
- package/adapters/copilot/skills/forge-0-epic/references/shared-conventions.md +1 -1
- package/adapters/copilot/skills/forge-1-prd/references/shared-conventions.md +1 -1
- package/adapters/copilot/skills/forge-2-tech/references/shared-conventions.md +1 -1
- package/adapters/copilot/skills/forge-3-specs/references/shared-conventions.md +1 -1
- package/adapters/copilot/skills/forge-4-backlog/references/shared-conventions.md +1 -1
- package/adapters/copilot/skills/forge-5-loop/forge-5-loop.md +3 -3
- package/adapters/copilot/skills/forge-5-loop/references/ralph-loop-contract.md +12 -8
- package/adapters/copilot/skills/forge-5-loop/references/runner-contract.md +2 -2
- package/adapters/copilot/skills/forge-5-loop/references/shared-conventions.md +1 -1
- package/adapters/copilot/skills/forge-6-docs/references/shared-conventions.md +1 -1
- package/adapters/copilot/skills/forge-fix/references/shared-conventions.md +1 -1
- package/adapters/copilot/skills/forge-guide/references/forge-config-schema.json +4 -4
- package/adapters/copilot/skills/forge-guide/references/ralph-loop-contract.md +12 -8
- package/adapters/copilot/skills/forge-guide/references/shared-conventions.md +1 -1
- package/adapters/copilot/skills/forge-verify/forge-verify.md +5 -3
- package/adapters/copilot/skills/forge-verify/references/findings-template.md +6 -6
- package/adapters/copilot/skills/forge-verify/references/shared-conventions.md +1 -1
- package/adapters/cursor/.feature-forge-bundle.json +1 -1
- package/adapters/cursor/references/forge-config-schema.json +4 -4
- package/adapters/cursor/references/ralph-loop-contract.md +12 -8
- package/adapters/cursor/references/shared-conventions.md +1 -1
- package/adapters/cursor/scripts/forge-session.py +30 -26
- package/adapters/cursor/skills/forge/references/shared-conventions.md +1 -1
- package/adapters/cursor/skills/forge-0-epic/references/shared-conventions.md +1 -1
- package/adapters/cursor/skills/forge-1-prd/references/shared-conventions.md +1 -1
- package/adapters/cursor/skills/forge-2-tech/references/shared-conventions.md +1 -1
- package/adapters/cursor/skills/forge-3-specs/references/shared-conventions.md +1 -1
- package/adapters/cursor/skills/forge-4-backlog/references/shared-conventions.md +1 -1
- package/adapters/cursor/skills/forge-5-loop/forge-5-loop.mdc +3 -3
- package/adapters/cursor/skills/forge-5-loop/references/ralph-loop-contract.md +12 -8
- package/adapters/cursor/skills/forge-5-loop/references/runner-contract.md +2 -2
- package/adapters/cursor/skills/forge-5-loop/references/shared-conventions.md +1 -1
- package/adapters/cursor/skills/forge-6-docs/references/shared-conventions.md +1 -1
- package/adapters/cursor/skills/forge-fix/references/shared-conventions.md +1 -1
- package/adapters/cursor/skills/forge-guide/references/forge-config-schema.json +4 -4
- package/adapters/cursor/skills/forge-guide/references/ralph-loop-contract.md +12 -8
- package/adapters/cursor/skills/forge-guide/references/shared-conventions.md +1 -1
- package/adapters/cursor/skills/forge-verify/forge-verify.mdc +5 -3
- package/adapters/cursor/skills/forge-verify/references/findings-template.md +6 -6
- package/adapters/cursor/skills/forge-verify/references/shared-conventions.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 +4 -4
- package/adapters/gemini/references/ralph-loop-contract.md +12 -8
- package/adapters/gemini/references/shared-conventions.md +1 -1
- package/adapters/gemini/scripts/forge-session.py +30 -26
- package/adapters/gemini/skills/forge/references/shared-conventions.md +1 -1
- package/adapters/gemini/skills/forge-0-epic/references/shared-conventions.md +1 -1
- package/adapters/gemini/skills/forge-1-prd/references/shared-conventions.md +1 -1
- package/adapters/gemini/skills/forge-2-tech/references/shared-conventions.md +1 -1
- package/adapters/gemini/skills/forge-3-specs/references/shared-conventions.md +1 -1
- package/adapters/gemini/skills/forge-4-backlog/references/shared-conventions.md +1 -1
- package/adapters/gemini/skills/forge-5-loop/forge-5-loop.md +3 -3
- package/adapters/gemini/skills/forge-5-loop/references/ralph-loop-contract.md +12 -8
- package/adapters/gemini/skills/forge-5-loop/references/runner-contract.md +2 -2
- package/adapters/gemini/skills/forge-5-loop/references/shared-conventions.md +1 -1
- package/adapters/gemini/skills/forge-6-docs/references/shared-conventions.md +1 -1
- package/adapters/gemini/skills/forge-fix/references/shared-conventions.md +1 -1
- package/adapters/gemini/skills/forge-guide/references/forge-config-schema.json +4 -4
- package/adapters/gemini/skills/forge-guide/references/ralph-loop-contract.md +12 -8
- package/adapters/gemini/skills/forge-guide/references/shared-conventions.md +1 -1
- package/adapters/gemini/skills/forge-verify/forge-verify.md +5 -3
- package/adapters/gemini/skills/forge-verify/references/findings-template.md +6 -6
- package/adapters/gemini/skills/forge-verify/references/shared-conventions.md +1 -1
- package/adapters/pi/.feature-forge-bundle.json +1 -1
- package/adapters/pi/extensions/forge-loop-supervisor/events.ts +90 -0
- package/adapters/pi/extensions/forge-loop-supervisor/index.ts +114 -0
- package/adapters/pi/extensions/forge-loop-supervisor/registry.ts +137 -0
- package/adapters/pi/extensions/forge-loop-supervisor/supervisor.ts +185 -0
- package/adapters/pi/extensions/forge-loop-supervisor/tailer.ts +137 -0
- package/adapters/pi/extensions/forge-loop-supervisor/types.ts +87 -0
- package/adapters/pi/extensions/forge-loop-supervisor/wiring.ts +423 -0
- package/adapters/pi/package.json +2 -1
- package/adapters/pi/references/forge-config-schema.json +4 -4
- package/adapters/pi/references/ralph-loop-contract.md +12 -8
- package/adapters/pi/references/shared-conventions.md +1 -1
- package/adapters/pi/scripts/forge-session.py +30 -26
- package/adapters/pi/skills/forge/SKILL.md +4 -1
- package/adapters/pi/skills/forge/references/shared-conventions.md +1 -1
- package/adapters/pi/skills/forge-0-epic/SKILL.md +4 -1
- package/adapters/pi/skills/forge-0-epic/references/shared-conventions.md +1 -1
- package/adapters/pi/skills/forge-1-prd/SKILL.md +4 -1
- package/adapters/pi/skills/forge-1-prd/references/shared-conventions.md +1 -1
- package/adapters/pi/skills/forge-2-tech/SKILL.md +4 -1
- package/adapters/pi/skills/forge-2-tech/references/shared-conventions.md +1 -1
- package/adapters/pi/skills/forge-3-specs/SKILL.md +4 -1
- package/adapters/pi/skills/forge-3-specs/references/shared-conventions.md +1 -1
- package/adapters/pi/skills/forge-4-backlog/SKILL.md +4 -1
- package/adapters/pi/skills/forge-4-backlog/references/shared-conventions.md +1 -1
- package/adapters/pi/skills/forge-5-loop/SKILL.md +14 -8
- package/adapters/pi/skills/forge-5-loop/references/ralph-loop-contract.md +12 -8
- package/adapters/pi/skills/forge-5-loop/references/runner-contract.md +8 -5
- package/adapters/pi/skills/forge-5-loop/references/shared-conventions.md +1 -1
- package/adapters/pi/skills/forge-6-docs/SKILL.md +4 -1
- package/adapters/pi/skills/forge-6-docs/references/shared-conventions.md +1 -1
- package/adapters/pi/skills/forge-bootstrap/SKILL.md +4 -1
- package/adapters/pi/skills/forge-fix/SKILL.md +4 -1
- package/adapters/pi/skills/forge-fix/references/shared-conventions.md +1 -1
- package/adapters/pi/skills/forge-guide/SKILL.md +4 -1
- package/adapters/pi/skills/forge-guide/references/forge-config-schema.json +4 -4
- package/adapters/pi/skills/forge-guide/references/ralph-loop-contract.md +12 -8
- package/adapters/pi/skills/forge-guide/references/shared-conventions.md +1 -1
- package/adapters/pi/skills/forge-init/SKILL.md +4 -1
- package/adapters/pi/skills/forge-verify/SKILL.md +9 -4
- package/adapters/pi/skills/forge-verify/references/findings-template.md +6 -6
- package/adapters/pi/skills/forge-verify/references/shared-conventions.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 +8 -2
|
@@ -131,10 +131,10 @@ violate REQ-STATE-02; per-feature status is always derived live from each member
|
|
|
131
131
|
`.pipeline-state.json`).
|
|
132
132
|
|
|
133
133
|
Set `stages.forge-verify-epic.status` to `findings-reported` when the report lists at
|
|
134
|
-
least one **blocking** finding (`error`/`gap`), else `passed
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
`
|
|
134
|
+
least one **blocking** finding (`error`/`gap`), else `passed`. Always attach the report
|
|
135
|
+
and its total count, including count `0` for a clean report, exactly as in feature mode
|
|
136
|
+
(the severity floor in `skills/forge-verify/SKILL.md`) — recording `findingsFile`,
|
|
137
|
+
`findingsCount`, and `verifiedAt`.
|
|
138
138
|
|
|
139
139
|
**Write it with `state-verify`, never by hand.** `--stage forge-0-epic` is the sanctioned
|
|
140
140
|
epic writer: it creates the file lazily, mutates only `stages.forge-verify-epic` plus the
|
|
@@ -149,8 +149,8 @@ R="$(bash -c 'for d in "${FEATURE_FORGE_ROOT:-}" "$HOME"/.claude/skills/feature-
|
|
|
149
149
|
[ -n "$R" ] || { echo "feature-forge: cannot locate plugin root" >&2; exit 1; }
|
|
150
150
|
python3 "$R/scripts/forge-session.py" state-verify \
|
|
151
151
|
--feature "{epic}" --stage forge-0-epic \
|
|
152
|
-
--status "{
|
|
153
|
-
--findings-file "{relative findings path}" --findings-count {
|
|
152
|
+
--status "{outcome-specific status}" \
|
|
153
|
+
--findings-file "{relative findings path}" --findings-count {outcome-specific count} \
|
|
154
154
|
--verified-stage-version {manifest revision} --specs-dir "{specsDir}"
|
|
155
155
|
```
|
|
156
156
|
|
|
@@ -206,7 +206,7 @@ If a `state-*` verb exits 2, surface the plain `Error:` line from stderr verbati
|
|
|
206
206
|
|
|
207
207
|
### `state-verify` — verification results and provenance
|
|
208
208
|
|
|
209
|
-
`state-verify` writes exactly one `stages.forge-verify-{token}` entry — the verification result for the production stage named by `--stage` — plus the top-level `updatedAt`, and nothing else. `--stage` takes the **served production stage** (`forge-0-epic` through `forge-5-loop`; `forge-6-docs` has no verification token and is rejected). Add `--epic "{epic}"` when the feature is an epic member — required, per the member rule above. Result mode passes `--status` (`auto-verify-pending`, `passed`, `findings-reported`, `findings-applied`, or `skipped`) with whatever `--findings-file`, `--findings-count`, and `--verified-stage-version` that status requires; contradictory metadata is refused before any write. `passed` may
|
|
209
|
+
`state-verify` writes exactly one `stages.forge-verify-{token}` entry — the verification result for the production stage named by `--stage` — plus the top-level `updatedAt`, and nothing else. `--stage` takes the **served production stage** (`forge-0-epic` through `forge-5-loop`; `forge-6-docs` has no verification token and is rejected). Add `--epic "{epic}"` when the feature is an epic member — required, per the member rule above. Result mode passes `--status` (`auto-verify-pending`, `passed`, `findings-reported`, `findings-applied`, or `skipped`) with whatever `--findings-file`, `--findings-count`, and `--verified-stage-version` that status requires; contradictory metadata is refused before any write. `passed` may carry `--findings-file` + `--findings-count` for a clean report (count `0`), an **advisory-only** report (`inconsistency`/`improvement` findings only), or accepted residual findings. The stage resolves without a fix round and the report stays attached, making a completed verification round directly resumable if provenance recording is interrupted. A bare `passed` remains accepted for backward compatibility:
|
|
210
210
|
|
|
211
211
|
**`auto-verify-pending` is not a skill-facing status.** It is written by `stage-exit`'s scheduling boundary, which records the debt automatically when auto-verify is effective for a stage. The value is accepted on this CLI so the entry stays inspectable and repairable, not so a skill can hand-schedule verification: no skill body and no reference passes it, and none should. Every other status in the list is the recorded *result* of a verification that ran (or was explicitly skipped); this one records that one was *owed*.
|
|
212
212
|
|
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.15.0"); `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.15.0` 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.15.0";
|
|
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.14.0";
|
|
|
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.15.0"
|
|
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.15.0` 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.15.0";
|
|
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.15.0"; `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.6",
|
|
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",
|
|
@@ -50,7 +50,13 @@
|
|
|
50
50
|
"./adapters/pi/skills"
|
|
51
51
|
],
|
|
52
52
|
"extensions": [
|
|
53
|
-
"./adapters/pi/extensions/ask-user-question/index.ts"
|
|
53
|
+
"./adapters/pi/extensions/ask-user-question/index.ts",
|
|
54
|
+
"./adapters/pi/extensions/forge-loop-supervisor/index.ts"
|
|
55
|
+
]
|
|
56
|
+
},
|
|
57
|
+
"pi-subagents": {
|
|
58
|
+
"agents": [
|
|
59
|
+
"./adapters/pi/agents"
|
|
54
60
|
]
|
|
55
61
|
},
|
|
56
62
|
"scripts": {
|