prizmkit 1.1.41 → 1.1.46
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/bundled/VERSION.json +3 -3
- package/bundled/adapters/claude/settings-adapter.js +4 -4
- package/bundled/adapters/codebuddy/settings-adapter.js +1 -1
- package/bundled/agents/prizm-dev-team-critic.md +9 -9
- package/bundled/agents/prizm-dev-team-dev.md +13 -13
- package/bundled/agents/prizm-dev-team-reviewer.md +2 -2
- package/bundled/dev-pipeline/.env.example +6 -6
- package/bundled/dev-pipeline/README.md +32 -32
- package/bundled/dev-pipeline/assets/prizm-dev-team-integration.md +1 -1
- package/bundled/dev-pipeline/launch-bugfix-daemon.sh +5 -2
- package/bundled/dev-pipeline/launch-feature-daemon.sh +5 -2
- package/bundled/dev-pipeline/launch-refactor-daemon.sh +5 -2
- package/bundled/dev-pipeline/lib/common.sh +34 -5
- package/bundled/dev-pipeline/reset-bug.sh +7 -5
- package/bundled/dev-pipeline/reset-feature.sh +7 -5
- package/bundled/dev-pipeline/reset-refactor.sh +7 -5
- package/bundled/dev-pipeline/run-bugfix.sh +14 -11
- package/bundled/dev-pipeline/run-feature.sh +15 -12
- package/bundled/dev-pipeline/run-recovery.sh +6 -3
- package/bundled/dev-pipeline/run-refactor.sh +15 -12
- package/bundled/dev-pipeline/scripts/generate-bootstrap-prompt.py +15 -15
- package/bundled/dev-pipeline/scripts/generate-bugfix-prompt.py +10 -5
- package/bundled/dev-pipeline/scripts/generate-recovery-prompt.py +19 -13
- package/bundled/dev-pipeline/scripts/generate-refactor-prompt.py +10 -5
- package/bundled/dev-pipeline/scripts/parse-stream-progress.py +1 -1
- package/bundled/dev-pipeline/scripts/update-bug-status.py +9 -1
- package/bundled/dev-pipeline/scripts/update-feature-status.py +13 -1
- package/bundled/dev-pipeline/scripts/update-refactor-status.py +9 -1
- package/bundled/dev-pipeline/templates/agent-prompts/critic-plan-challenge.md +1 -1
- package/bundled/dev-pipeline/templates/bootstrap-prompt.md +3 -3
- package/bundled/dev-pipeline/templates/bootstrap-tier1.md +8 -8
- package/bundled/dev-pipeline/templates/bootstrap-tier2.md +11 -11
- package/bundled/dev-pipeline/templates/bootstrap-tier3.md +9 -9
- package/bundled/dev-pipeline/templates/bugfix-bootstrap-prompt.md +7 -7
- package/bundled/dev-pipeline/templates/refactor-bootstrap-prompt.md +4 -4
- package/bundled/dev-pipeline/templates/sections/phase-commit-full.md +5 -5
- package/bundled/dev-pipeline/templates/sections/phase-commit.md +6 -6
- package/bundled/dev-pipeline/templates/sections/phase-context-snapshot-agent-suffix.md +1 -1
- package/bundled/dev-pipeline/templates/sections/phase-context-snapshot-base.md +1 -1
- package/bundled/dev-pipeline/templates/sections/phase-specify-plan-full.md +2 -2
- package/bundled/dev-pipeline/templates/sections/phase0-init.md +1 -1
- package/bundled/dev-pipeline/tests/test-path-resolution.sh +100 -0
- package/bundled/rules/USAGE.md +2 -2
- package/bundled/rules/_rules-metadata.json +1 -1
- package/bundled/rules/prizm/prizm-commit-workflow.md +1 -1
- package/bundled/rules/prizm/prizm-documentation.md +4 -4
- package/bundled/rules/prizm/prizm-progressive-loading.md +3 -3
- package/bundled/skills/_metadata.json +4 -4
- package/bundled/skills/app-planner/SKILL.md +35 -7
- package/bundled/skills/bug-fix-workflow/SKILL.md +6 -6
- package/bundled/skills/bug-planner/SKILL.md +5 -5
- package/bundled/skills/bugfix-pipeline-launcher/SKILL.md +28 -21
- package/bundled/skills/feature-pipeline-launcher/SKILL.md +28 -21
- package/bundled/skills/feature-planner/SKILL.md +5 -5
- package/bundled/skills/feature-workflow/SKILL.md +8 -8
- package/bundled/skills/prizm-kit/SKILL.md +10 -10
- package/bundled/skills/prizmkit-committer/SKILL.md +4 -2
- package/bundled/skills/prizmkit-implement/SKILL.md +2 -2
- package/bundled/skills/prizmkit-init/SKILL.md +17 -17
- package/bundled/skills/prizmkit-plan/SKILL.md +3 -3
- package/bundled/skills/prizmkit-plan/references/verification-checklist.md +2 -2
- package/bundled/skills/prizmkit-prizm-docs/SKILL.md +17 -17
- package/bundled/skills/prizmkit-prizm-docs/assets/prizm-docs-format.md +45 -45
- package/bundled/skills/prizmkit-prizm-docs/references/op-init.md +9 -9
- package/bundled/skills/prizmkit-prizm-docs/references/op-rebuild.md +1 -1
- package/bundled/skills/prizmkit-prizm-docs/references/op-status.md +2 -2
- package/bundled/skills/prizmkit-prizm-docs/references/op-update.md +3 -3
- package/bundled/skills/prizmkit-prizm-docs/references/op-validate.md +1 -1
- package/bundled/skills/prizmkit-retrospective/SKILL.md +10 -10
- package/bundled/skills/prizmkit-retrospective/references/knowledge-injection-steps.md +3 -3
- package/bundled/skills/prizmkit-retrospective/references/structural-sync-steps.md +1 -1
- package/bundled/skills/recovery-workflow/SKILL.md +15 -15
- package/bundled/skills/recovery-workflow/scripts/detect-recovery-state.py +0 -1
- package/bundled/skills/refactor-pipeline-launcher/SKILL.md +28 -21
- package/bundled/skills/refactor-planner/SKILL.md +6 -6
- package/bundled/skills/refactor-workflow/SKILL.md +9 -9
- package/bundled/team/prizm-dev-team.json +1 -1
- package/bundled/templates/hooks/commit-intent.json +2 -2
- package/bundled/templates/hooks/diff-prizm-docs.sh +8 -8
- package/bundled/templates/hooks/prizm-pre-commit.sh +4 -4
- package/bundled/templates/hooks/validate-prizm-docs.sh +4 -4
- package/bundled/templates/project-memory-template.md +4 -4
- package/package.json +1 -1
- package/src/clean.js +1 -3
- package/src/config.js +1 -1
- package/src/gitignore-template.js +4 -24
- package/src/scaffold.js +12 -11
- package/src/upgrade.js +3 -3
package/bundled/VERSION.json
CHANGED
|
@@ -66,8 +66,8 @@ export async function generateSettings(targetRoot, options = {}) {
|
|
|
66
66
|
|
|
67
67
|
if (options.pipeline) {
|
|
68
68
|
prizmkitPermissions.push(
|
|
69
|
-
'Bash(
|
|
70
|
-
'Bash(python3 dev-pipeline/*)',
|
|
69
|
+
'Bash(./.prizmkit/dev-pipeline/*)',
|
|
70
|
+
'Bash(python3 .prizmkit/dev-pipeline/*)',
|
|
71
71
|
);
|
|
72
72
|
}
|
|
73
73
|
|
|
@@ -82,7 +82,7 @@ export async function generateSettings(targetRoot, options = {}) {
|
|
|
82
82
|
if (options.hooks !== false) {
|
|
83
83
|
if (!existing.hooks) existing.hooks = {};
|
|
84
84
|
|
|
85
|
-
// SessionStart hook: remind about .prizm-docs
|
|
85
|
+
// SessionStart hook: remind about .prizmkit/prizm-docs
|
|
86
86
|
if (!existing.hooks.SessionStart) {
|
|
87
87
|
existing.hooks.SessionStart = [
|
|
88
88
|
{
|
|
@@ -90,7 +90,7 @@ export async function generateSettings(targetRoot, options = {}) {
|
|
|
90
90
|
hooks: [
|
|
91
91
|
{
|
|
92
92
|
type: 'command',
|
|
93
|
-
command: 'test -f .prizm-docs/root.prizm && echo "PrizmKit: .prizm-docs found. Read root.prizm for project context." || echo "PrizmKit: No .prizm-docs found. Run /prizmkit-init to bootstrap."',
|
|
93
|
+
command: 'test -f .prizmkit/prizm-docs/root.prizm && echo "PrizmKit: .prizmkit/prizm-docs found. Read root.prizm for project context." || echo "PrizmKit: No .prizmkit/prizm-docs found. Run /prizmkit-init to bootstrap."',
|
|
94
94
|
},
|
|
95
95
|
],
|
|
96
96
|
},
|
|
@@ -35,7 +35,7 @@ export async function generateSettings(targetRoot, options = {}) {
|
|
|
35
35
|
hooks: [
|
|
36
36
|
{
|
|
37
37
|
type: 'prompt',
|
|
38
|
-
prompt: 'You are a commit-intent detector for PrizmKit. Analyze the user prompt and determine if the user intends to COMMIT, PUSH, FINISH, SHIP, MERGE, or create a PULL REQUEST.\n\nUser prompt: $ARGUMENTS\n\nIF commit intent detected, respond with:\n{"ok": true, "reason": "PRIZMKIT_DOC_UPDATE_REQUIRED: Before committing, you MUST update .prizm-docs/ per Prizm auto-update protocol. Steps: 1) Run git diff --cached --name-status. 2) Map changed files to modules via root.prizm MODULE_INDEX. 3) Read and update affected .prizm files (only changed sections). 4) Append to changelog.prizm. 5) Stage .prizm files with git add .prizm-docs/. 6) Then proceed with commit using prizmkit-committer workflow. RULES: Never rewrite entire .prizm files. Never add prose. Only update affected sections."}\n\nIF no commit intent, respond with:\n{"ok": true}\n\nRespond with JSON only. No explanation.',
|
|
38
|
+
prompt: 'You are a commit-intent detector for PrizmKit. Analyze the user prompt and determine if the user intends to COMMIT, PUSH, FINISH, SHIP, MERGE, or create a PULL REQUEST.\n\nUser prompt: $ARGUMENTS\n\nIF commit intent detected, respond with:\n{"ok": true, "reason": "PRIZMKIT_DOC_UPDATE_REQUIRED: Before committing, you MUST update .prizmkit/prizm-docs/ per Prizm auto-update protocol. Steps: 1) Run git diff --cached --name-status. 2) Map changed files to modules via root.prizm MODULE_INDEX. 3) Read and update affected .prizm files (only changed sections). 4) Append to changelog.prizm. 5) Stage .prizm files with git add .prizmkit/prizm-docs/. 6) Then proceed with commit using prizmkit-committer workflow. RULES: Never rewrite entire .prizm files. Never add prose. Only update affected sections."}\n\nIF no commit intent, respond with:\n{"ok": true}\n\nRespond with JSON only. No explanation.',
|
|
39
39
|
},
|
|
40
40
|
],
|
|
41
41
|
},
|
|
@@ -18,15 +18,15 @@ You operate in **Plan Challenge** mode: before implementation, you challenge the
|
|
|
18
18
|
### Project Context
|
|
19
19
|
|
|
20
20
|
Before any challenge, you MUST understand the project:
|
|
21
|
-
1. Read `.prizm-docs/root.prizm` — understand architecture, patterns, conventions
|
|
22
|
-
2. Read relevant L1/L2 `.prizm-docs/` files for affected modules — understand RULES, PATTERNS, TRAPS, DECISIONS
|
|
21
|
+
1. Read `.prizmkit/prizm-docs/root.prizm` — understand architecture, patterns, conventions
|
|
22
|
+
2. Read relevant L1/L2 `.prizmkit/prizm-docs/` files for affected modules — understand RULES, PATTERNS, TRAPS, DECISIONS
|
|
23
23
|
3. Read `context-snapshot.md` if it exists — Section 3 has Prizm Context, Section 4 has File Manifest
|
|
24
24
|
|
|
25
25
|
**File Reading Rule**: Read actual project source files to compare against. Your challenges must be grounded in evidence from existing code, not theoretical concerns. If you cannot find evidence in the codebase, downgrade the severity.
|
|
26
26
|
|
|
27
27
|
### Must Do (MUST)
|
|
28
28
|
|
|
29
|
-
1. Read `.prizm-docs/root.prizm` and relevant module docs BEFORE writing any challenge
|
|
29
|
+
1. Read `.prizmkit/prizm-docs/root.prizm` and relevant module docs BEFORE writing any challenge
|
|
30
30
|
2. Read existing source files in affected modules for comparison
|
|
31
31
|
3. Ground every challenge in specific evidence (file paths, code patterns, existing conventions)
|
|
32
32
|
4. Write `challenge-report.md` with structured findings
|
|
@@ -46,7 +46,7 @@ Before any challenge, you MUST understand the project:
|
|
|
46
46
|
### Behavioral Rules
|
|
47
47
|
|
|
48
48
|
```
|
|
49
|
-
CRIT-01: Always read .prizm-docs/ and existing source before challenging
|
|
49
|
+
CRIT-01: Always read .prizmkit/prizm-docs/ and existing source before challenging
|
|
50
50
|
CRIT-02: Every challenge must reference a specific file path or code pattern as evidence
|
|
51
51
|
CRIT-03: Maximum 10 challenges per report (focus on highest impact)
|
|
52
52
|
CRIT-04: Severity levels: CRITICAL (architecture mismatch), HIGH (style/robustness gap), MEDIUM (minor inconsistency)
|
|
@@ -70,15 +70,15 @@ CRIT-10: In voting mode, write to your assigned report file (challenge-report-{A
|
|
|
70
70
|
|
|
71
71
|
| Dimension | What to Challenge | Evidence Source |
|
|
72
72
|
|-----------|------------------|----------------|
|
|
73
|
-
| **Architecture Fit** | Does the plan's approach match the project's existing architectural patterns? Would it feel foreign to someone familiar with the codebase? | `.prizm-docs/` PATTERNS, existing module structure |
|
|
73
|
+
| **Architecture Fit** | Does the plan's approach match the project's existing architectural patterns? Would it feel foreign to someone familiar with the codebase? | `.prizmkit/prizm-docs/` PATTERNS, existing module structure |
|
|
74
74
|
| **Integration Planning** | Do proposed interfaces match existing conventions? Are naming patterns consistent with existing code? | Existing source files in the same module/layer |
|
|
75
|
-
| **Alternative Approaches** | Given the project's tech stack and existing patterns, is there a more natural approach that leverages what's already built? | `.prizm-docs/` KEY_FILES, existing utilities/helpers |
|
|
76
|
-
| **Coupling Risk** | Does the task breakdown hide cross-module dependencies? Will changes bleed into areas the plan doesn't mention? | `.prizm-docs/` DEPENDENCIES, import graphs |
|
|
75
|
+
| **Alternative Approaches** | Given the project's tech stack and existing patterns, is there a more natural approach that leverages what's already built? | `.prizmkit/prizm-docs/` KEY_FILES, existing utilities/helpers |
|
|
76
|
+
| **Coupling Risk** | Does the task breakdown hide cross-module dependencies? Will changes bleed into areas the plan doesn't mention? | `.prizmkit/prizm-docs/` DEPENDENCIES, import graphs |
|
|
77
77
|
|
|
78
78
|
### Workflow
|
|
79
79
|
|
|
80
80
|
1. Read `context-snapshot.md` — understand the feature and file manifest
|
|
81
|
-
2. Read `.prizm-docs/root.prizm` and affected L1/L2 docs
|
|
81
|
+
2. Read `.prizmkit/prizm-docs/root.prizm` and affected L1/L2 docs
|
|
82
82
|
3. Read existing source files in modules the plan touches
|
|
83
83
|
4. For each dimension, compare plan decisions against evidence from existing code
|
|
84
84
|
5. Write `challenge-report.md` to `.prizmkit/specs/<feature-slug>/`
|
|
@@ -139,7 +139,7 @@ When spawned as one of 3 parallel critics (Critic-A, Critic-B, Critic-C):
|
|
|
139
139
|
|
|
140
140
|
| Scenario | Strategy |
|
|
141
141
|
|----------|----------|
|
|
142
|
-
| No `.prizm-docs/` exists (new project) | Skip architecture comparison, focus on internal consistency and robustness only |
|
|
142
|
+
| No `.prizmkit/prizm-docs/` exists (new project) | Skip architecture comparison, focus on internal consistency and robustness only |
|
|
143
143
|
| Module has no existing code to compare | Note in report: "No baseline for style comparison — challenges are based on general best practices" |
|
|
144
144
|
| All challenges are MEDIUM or lower | Write report with "No significant challenges" summary. Do NOT inflate severity |
|
|
145
145
|
| Cannot determine project conventions | Downgrade all style challenges to MEDIUM. Note the limitation in the report |
|
|
@@ -20,12 +20,12 @@ You are the team's "construction worker" — you build strictly according to blu
|
|
|
20
20
|
|
|
21
21
|
### Project Context
|
|
22
22
|
|
|
23
|
-
Project documentation is in `.prizm-docs/`. Before implementation, read `context-snapshot.md` (if it exists in `.prizmkit/specs/###-feature-name/`); its Section 3 contains Prizm Context and Section 4 contains a File Manifest with paths and key interfaces.
|
|
23
|
+
Project documentation is in `.prizmkit/prizm-docs/`. Before implementation, read `context-snapshot.md` (if it exists in `.prizmkit/specs/###-feature-name/`); its Section 3 contains Prizm Context and Section 4 contains a File Manifest with paths and key interfaces.
|
|
24
24
|
|
|
25
25
|
**⚠️ File Reading Rule**: Do NOT re-read source files already listed in Section 4 File Manifest — the manifest already contains their key interfaces. Only read a source file directly if: (a) it is NOT in the manifest, or (b) you need a specific implementation detail not captured in the manifest's interface column. Unnecessary re-reads waste significant context budget.
|
|
26
26
|
|
|
27
27
|
If the snapshot does not exist:
|
|
28
|
-
1. Read `.prizm-docs/root.prizm` to understand rules and known traps (TRAPS)
|
|
28
|
+
1. Read `.prizmkit/prizm-docs/root.prizm` to understand rules and known traps (TRAPS)
|
|
29
29
|
2. Read relevant L1/L2 docs for affected modules
|
|
30
30
|
3. Read required source files directly
|
|
31
31
|
|
|
@@ -33,7 +33,7 @@ If the snapshot does not exist:
|
|
|
33
33
|
|
|
34
34
|
| Path | Purpose |
|
|
35
35
|
|------|---------|
|
|
36
|
-
| `.prizm-docs/` | Architecture index — module structure, interfaces, dependencies, known traps (TRAPS), design decisions (DECISIONS) |
|
|
36
|
+
| `.prizmkit/prizm-docs/` | Architecture index — module structure, interfaces, dependencies, known traps (TRAPS), design decisions (DECISIONS) |
|
|
37
37
|
| `.prizmkit/specs/###-feature-name/` | Feature artifacts — spec.md / plan.md (with Tasks section) |
|
|
38
38
|
|
|
39
39
|
### Must Do (MUST)
|
|
@@ -44,11 +44,11 @@ If the snapshot does not exist:
|
|
|
44
44
|
4. Report interface design ambiguities to the Orchestrator immediately (do not assume)
|
|
45
45
|
5. Follow the `/prizmkit-implement` workflow: read plan.md (with Tasks section) + spec.md, implement task by task
|
|
46
46
|
6. Mark `[x]` in the plan.md Tasks section **immediately** after each task is completed (do not batch-mark)
|
|
47
|
-
7. Read the TRAPS section before implementation to avoid known pitfalls: prefer `context-snapshot.md` Section 3; if no snapshot exists, read `.prizm-docs/`
|
|
47
|
+
7. Read the TRAPS section before implementation to avoid known pitfalls: prefer `context-snapshot.md` Section 3; if no snapshot exists, read `.prizmkit/prizm-docs/`
|
|
48
48
|
8. Checkpoint tasks must verify that build and tests pass before proceeding to the next phase
|
|
49
49
|
9. Execute sequential tasks in order; stop on failure. Parallel `[P]` tasks may continue
|
|
50
|
-
10. When creating a new sub-module, generate the corresponding `.prizm-docs/` L2 document. **Batch independent operations**: combine multiple `mkdir -p` into one command; issue multiple independent `Write` calls for different `.prizm-docs/` files in a single message turn (they have no dependencies between them).
|
|
51
|
-
11. **`.prizm-docs/` write safety**: Before writing ANY `.prizm-docs/` file, check if it already exists (`ls <path>`). If it **exists**: only append or update structural fields (KEY_FILES, INTERFACES, DEPENDENCIES, file counts, UPDATED date) — **never overwrite the full file**. DECISIONS and CHANGELOG sections are **append-only** — never delete or replace existing entries. If it does **not** exist: create it only for sub-modules you are actively creating in this session. Do NOT write `.prizm-docs/` files for modules you are not directly creating.
|
|
50
|
+
10. When creating a new sub-module, generate the corresponding `.prizmkit/prizm-docs/` L2 document. **Batch independent operations**: combine multiple `mkdir -p` into one command; issue multiple independent `Write` calls for different `.prizmkit/prizm-docs/` files in a single message turn (they have no dependencies between them).
|
|
51
|
+
11. **`.prizmkit/prizm-docs/` write safety**: Before writing ANY `.prizmkit/prizm-docs/` file, check if it already exists (`ls <path>`). If it **exists**: only append or update structural fields (KEY_FILES, INTERFACES, DEPENDENCIES, file counts, UPDATED date) — **never overwrite the full file**. DECISIONS and CHANGELOG sections are **append-only** — never delete or replace existing entries. If it does **not** exist: create it only for sub-modules you are actively creating in this session. Do NOT write `.prizmkit/prizm-docs/` files for modules you are not directly creating.
|
|
52
52
|
11. After completing ALL tasks, append '## Implementation Log' to context-snapshot.md: files changed/created, key decisions, notable discoveries
|
|
53
53
|
|
|
54
54
|
### Never Do (NEVER)
|
|
@@ -59,7 +59,7 @@ If the snapshot does not exist:
|
|
|
59
59
|
- **Do not execute any git operations** (git commit / git add / git reset / git push are all prohibited — the Orchestrator handles commits via /prizmkit-committer)
|
|
60
60
|
- Do not modify any files in `.prizmkit/specs/` except `plan.md` (marking Tasks [x]) and `context-snapshot.md` (appending Implementation Log)
|
|
61
61
|
- Do not use TaskCreate/TaskUpdate to create or modify Orchestrator-level tasks (Task tools are for internal progress tracking only, and task IDs are not shared across agent sub-sessions)
|
|
62
|
-
- **Do not overwrite existing `.prizm-docs/` files in full** — if a doc already exists, only update structural fields; never replace the entire file. Do NOT write `.prizm-docs/` entries for modules you are not actively creating in this session.
|
|
62
|
+
- **Do not overwrite existing `.prizmkit/prizm-docs/` files in full** — if a doc already exists, only update structural fields; never replace the entire file. Do NOT write `.prizmkit/prizm-docs/` entries for modules you are not actively creating in this session.
|
|
63
63
|
|
|
64
64
|
### Behavioral Rules
|
|
65
65
|
|
|
@@ -73,17 +73,17 @@ DEV-06: Do not introduce external dependencies not declared in the task descript
|
|
|
73
73
|
DEV-07: Follow the /prizmkit-implement workflow
|
|
74
74
|
DEV-08: Mark plan.md Tasks section [x] immediately after each task is completed
|
|
75
75
|
DEV-09: TDD: write tests → implement → verify
|
|
76
|
-
DEV-10: Read the TRAPS section before implementing each module: prefer context-snapshot.md Section 3; if no snapshot, read .prizm-docs/
|
|
76
|
+
DEV-10: Read the TRAPS section before implementing each module: prefer context-snapshot.md Section 3; if no snapshot, read .prizmkit/prizm-docs/
|
|
77
77
|
DEV-11: Checkpoint tasks must verify that build and tests pass
|
|
78
|
-
DEV-12: Generate L2 .prizm-docs/ documentation when creating new sub-modules
|
|
78
|
+
DEV-12: Generate L2 .prizmkit/prizm-docs/ documentation when creating new sub-modules
|
|
79
79
|
DEV-13: Executing any git command is prohibited (git add/commit/reset/push are all forbidden)
|
|
80
80
|
DEV-14: If `npm test` has pre-existing failures, do not ignore them — list them explicitly in COMPLETION_SIGNAL for Orchestrator decision
|
|
81
81
|
DEV-18: When tests fail, run `$TEST_CMD 2>&1 | tee /tmp/test-out.txt` ONCE, then grep `/tmp/test-out.txt` for failure details. Never re-run the full test suite just to apply a different grep filter to its output.
|
|
82
82
|
DEV-15: After ALL tasks, append '## Implementation Log' to context-snapshot.md (files changed, key decisions, discoveries)
|
|
83
|
-
DEV-16: Without context-snapshot: read .prizm-docs/ → read source files directly
|
|
83
|
+
DEV-16: Without context-snapshot: read .prizmkit/prizm-docs/ → read source files directly
|
|
84
84
|
DEV-17: DO NOT re-read source files already listed in context-snapshot.md Section 4 File Manifest — the manifest already has their key interfaces. Only read a file directly if: (a) NOT in the manifest, (b) needing an implementation detail beyond the interface summary, or (c) needing a constant/enum/field-name value not representable as a function signature. Unnecessary re-reads waste significant context budget.
|
|
85
85
|
DEV-18: When tests fail, run `$TEST_CMD 2>&1 | tee /tmp/test-out.txt` ONCE, then grep `/tmp/test-out.txt` for failure details. Never re-run the full test suite just to apply a different grep filter to its output.
|
|
86
|
-
DEV-19: Before writing any `.prizm-docs/` file, check if it exists. If it exists: only update structural fields (KEY_FILES, INTERFACES, DEPENDENCIES, file counts, UPDATED) — never overwrite the full file. DECISIONS/CHANGELOG are append-only. Only create new L2 docs for sub-modules you are actively creating in this session.
|
|
86
|
+
DEV-19: Before writing any `.prizmkit/prizm-docs/` file, check if it exists. If it exists: only update structural fields (KEY_FILES, INTERFACES, DEPENDENCIES, file counts, UPDATED) — never overwrite the full file. DECISIONS/CHANGELOG are append-only. Only create new L2 docs for sub-modules you are actively creating in this session.
|
|
87
87
|
```
|
|
88
88
|
|
|
89
89
|
### Workflow
|
|
@@ -91,7 +91,7 @@ DEV-19: Before writing any `.prizm-docs/` file, check if it exists. If it exists
|
|
|
91
91
|
1. Receive task assignment
|
|
92
92
|
2. Read `.prizmkit/specs/###-feature-name/context-snapshot.md` (if it exists) — Section 3 contains Prizm Context, Section 4 contains a File Manifest.
|
|
93
93
|
**DO NOT re-read source files listed in Section 4** — the manifest already has their interfaces. Only read a source file if it is NOT in the manifest, or you need a specific detail beyond what the interface column provides. If the snapshot does not exist:
|
|
94
|
-
a. Read `.prizm-docs/root.prizm` and relevant module documentation
|
|
94
|
+
a. Read `.prizmkit/prizm-docs/root.prizm` and relevant module documentation
|
|
95
95
|
b. Read required source files directly
|
|
96
96
|
3. Read `plan.md` (with Tasks section) and `spec.md` in `.prizmkit/specs/###-feature-name/`
|
|
97
97
|
4. For each assigned task, execute in plan.md Tasks order:
|
|
@@ -102,7 +102,7 @@ DEV-19: Before writing any `.prizm-docs/` file, check if it exists. If it exists
|
|
|
102
102
|
e. Send STATUS_UPDATE to the Orchestrator
|
|
103
103
|
5. For checkpoint tasks, verify that build and tests pass before continuing
|
|
104
104
|
6. On interface design ambiguity, send ESCALATION (do not assume)
|
|
105
|
-
7. If a new sub-module was created, generate the corresponding `.prizm-docs/` L2 document
|
|
105
|
+
7. If a new sub-module was created, generate the corresponding `.prizmkit/prizm-docs/` L2 document
|
|
106
106
|
8. Send COMPLETION_SIGNAL
|
|
107
107
|
|
|
108
108
|
### Exception Handling
|
|
@@ -20,7 +20,7 @@ You are the team's "senior engineer doing code review" — you diagnose problems
|
|
|
20
20
|
- Section 3: Prizm Context (RULES, PATTERNS, TRAPS to check against)
|
|
21
21
|
- Section 4: File Manifest (original file structure — avoid re-reading files already listed here)
|
|
22
22
|
- `## Implementation Log`: what Dev changed, key decisions, discoveries
|
|
23
|
-
2. If no `context-snapshot.md`: read `spec.md`, `plan.md` from the artifact directory, then `.prizm-docs/root.prizm` and relevant L1/L2 docs
|
|
23
|
+
2. If no `context-snapshot.md`: read `spec.md`, `plan.md` from the artifact directory, then `.prizmkit/prizm-docs/root.prizm` and relevant L1/L2 docs
|
|
24
24
|
3. Identify changed files from `## Implementation Log` or completed tasks in plan.md
|
|
25
25
|
|
|
26
26
|
**File Reading Rule**: Read ONLY files listed in the Implementation Log for diagnosis — do not explore unrelated files. Exception: during Fix Strategy Formulation, you MAY read additional files to trace impact (callers, dependents, shared patterns).
|
|
@@ -66,7 +66,7 @@ When Dev has applied fixes and returns for re-review:
|
|
|
66
66
|
1. Run `/prizmkit-code-review` for diagnosis and fix strategy
|
|
67
67
|
2. Write and execute integration tests covering all goals from spec.md
|
|
68
68
|
3. Verify implementation conforms to interface designs in plan.md
|
|
69
|
-
4. Check code conforms to `.prizm-docs/` RULES and PATTERNS
|
|
69
|
+
4. Check code conforms to `.prizmkit/prizm-docs/` RULES and PATTERNS
|
|
70
70
|
5. Every finding must include: Root Cause, Impact, Fix Strategy, Code Guidance, Verification Criteria
|
|
71
71
|
6. Group related findings and order Fix Instructions by dependency
|
|
72
72
|
7. On re-review (iteration > 1): check only Verification Criteria + scan for regressions
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
# PrizmKit Dev-Pipeline Environment Configuration
|
|
2
2
|
# ================================================
|
|
3
|
-
# Copy this file to .env and uncomment the variables you want to set.
|
|
3
|
+
# Copy this file to .prizmkit/.env and uncomment the variables you want to set.
|
|
4
4
|
# All pipeline scripts (run-feature.sh, run-bugfix.sh, etc.) automatically
|
|
5
|
-
# load .env
|
|
5
|
+
# load .prizmkit/.env via lib/common.sh.
|
|
6
6
|
#
|
|
7
7
|
# Priority: Environment variables set before script execution ALWAYS take
|
|
8
|
-
# precedence over values in .env. This means you can still do:
|
|
9
|
-
# MODEL=claude-opus-4
|
|
10
|
-
# and it will override the .env value.
|
|
8
|
+
# precedence over values in .prizmkit/.env. This means you can still do:
|
|
9
|
+
# MODEL=claude-opus-4 ./.prizmkit/dev-pipeline/run-feature.sh run
|
|
10
|
+
# and it will override the .prizmkit/.env value.
|
|
11
11
|
#
|
|
12
|
-
# If .env does not exist, all defaults apply — no error is raised.
|
|
12
|
+
# If .prizmkit/.env does not exist, all defaults apply — no error is raised.
|
|
13
13
|
|
|
14
14
|
# ─── Runtime Environment ──────────────────────────────────────────────
|
|
15
15
|
# PRIZMKIT_ENV=test # "test" = output bootstrap prompts to console for debugging
|
|
@@ -17,18 +17,18 @@ Autonomous development pipeline that drives the `prizm-dev-team` multi-agent tea
|
|
|
17
17
|
# Output: .prizmkit/plans/feature-list.json in project root
|
|
18
18
|
|
|
19
19
|
# 2. Initialize pipeline state
|
|
20
|
-
python3 dev-pipeline/scripts/init-pipeline.py \
|
|
20
|
+
python3 .prizmkit/dev-pipeline/scripts/init-pipeline.py \
|
|
21
21
|
--feature-list .prizmkit/plans/feature-list.json \
|
|
22
22
|
--state-dir .prizmkit/state/features
|
|
23
23
|
|
|
24
24
|
# 3. Run the pipeline (foreground, Ctrl+C to pause, re-run to resume)
|
|
25
|
-
|
|
25
|
+
./.prizmkit/dev-pipeline/run-feature.sh run .prizmkit/plans/feature-list.json
|
|
26
26
|
|
|
27
27
|
# 4. Check progress at any time (from another terminal)
|
|
28
|
-
|
|
28
|
+
./.prizmkit/dev-pipeline/run-feature.sh status .prizmkit/plans/feature-list.json
|
|
29
29
|
|
|
30
30
|
# 5. Or run as a background daemon
|
|
31
|
-
|
|
31
|
+
./.prizmkit/dev-pipeline/launch-feature-daemon.sh start .prizmkit/plans/feature-list.json
|
|
32
32
|
```
|
|
33
33
|
|
|
34
34
|
---
|
|
@@ -61,19 +61,19 @@ Main entry point. Drives the full feature development pipeline.
|
|
|
61
61
|
|
|
62
62
|
```bash
|
|
63
63
|
# Run all features
|
|
64
|
-
|
|
64
|
+
./.prizmkit/dev-pipeline/run-feature.sh run .prizmkit/plans/feature-list.json
|
|
65
65
|
|
|
66
66
|
# Run a single feature
|
|
67
|
-
|
|
67
|
+
./.prizmkit/dev-pipeline/run-feature.sh run F-007
|
|
68
68
|
|
|
69
69
|
# Dry run — inspect the generated prompt without spawning a session
|
|
70
|
-
|
|
70
|
+
./.prizmkit/dev-pipeline/run-feature.sh run F-007 --dry-run
|
|
71
71
|
|
|
72
72
|
# Resume from Phase 6 (implementation)
|
|
73
|
-
|
|
73
|
+
./.prizmkit/dev-pipeline/run-feature.sh run .prizmkit/plans/feature-list.json --resume-phase 6
|
|
74
74
|
|
|
75
75
|
# With timeout per session
|
|
76
|
-
SESSION_TIMEOUT=7200
|
|
76
|
+
SESSION_TIMEOUT=7200 ./.prizmkit/dev-pipeline/run-feature.sh run .prizmkit/plans/feature-list.json
|
|
77
77
|
```
|
|
78
78
|
|
|
79
79
|
If `.prizmkit/plans/feature-list.json` path is omitted, defaults to `.prizmkit/plans/feature-list.json` in the project root.
|
|
@@ -104,10 +104,10 @@ Resets a feature's state so it can be re-executed from scratch.
|
|
|
104
104
|
**Examples:**
|
|
105
105
|
|
|
106
106
|
```bash
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
107
|
+
./.prizmkit/dev-pipeline/reset-feature.sh F-007 # Reset status only
|
|
108
|
+
./.prizmkit/dev-pipeline/reset-feature.sh F-007 --clean # Reset + delete artifacts
|
|
109
|
+
./.prizmkit/dev-pipeline/reset-feature.sh F-007 --clean --run # Reset + clean + retry
|
|
110
|
+
./.prizmkit/dev-pipeline/reset-feature.sh F-007 --clean my-features.json
|
|
111
111
|
```
|
|
112
112
|
|
|
113
113
|
---
|
|
@@ -138,7 +138,7 @@ Manages `run-feature.sh` as a background daemon process with PID tracking and lo
|
|
|
138
138
|
**`--env` format:** Pass environment variables as a quoted string:
|
|
139
139
|
|
|
140
140
|
```bash
|
|
141
|
-
|
|
141
|
+
./.prizmkit/dev-pipeline/launch-feature-daemon.sh start .prizmkit/plans/feature-list.json \
|
|
142
142
|
--mode standard \
|
|
143
143
|
--env "MAX_RETRIES=5 SESSION_TIMEOUT=3600 MODEL=claude-sonnet-4.6"
|
|
144
144
|
```
|
|
@@ -564,10 +564,10 @@ Also exports: `log_info`, `log_warn`, `log_error`, `log_success` (with timestamp
|
|
|
564
564
|
```bash
|
|
565
565
|
# All env vars in one invocation
|
|
566
566
|
MAX_RETRIES=5 SESSION_TIMEOUT=7200 MODEL=claude-sonnet-4.6 VERBOSE=1 \
|
|
567
|
-
|
|
567
|
+
./.prizmkit/dev-pipeline/run-feature.sh run .prizmkit/plans/feature-list.json
|
|
568
568
|
|
|
569
569
|
# Via daemon with --env
|
|
570
|
-
|
|
570
|
+
./.prizmkit/dev-pipeline/launch-feature-daemon.sh start .prizmkit/plans/feature-list.json \
|
|
571
571
|
--mode standard \
|
|
572
572
|
--env "MAX_RETRIES=5 SESSION_TIMEOUT=3600 AUTO_PUSH=1"
|
|
573
573
|
```
|
|
@@ -604,13 +604,13 @@ Specify a model for individual features in `.prizmkit/plans/feature-list.json`:
|
|
|
604
604
|
|
|
605
605
|
```bash
|
|
606
606
|
# All features without a per-feature model use Sonnet
|
|
607
|
-
MODEL=claude-sonnet-4.6
|
|
607
|
+
MODEL=claude-sonnet-4.6 ./.prizmkit/dev-pipeline/run-feature.sh run .prizmkit/plans/feature-list.json
|
|
608
608
|
|
|
609
609
|
# Retry with Opus
|
|
610
|
-
MODEL=claude-opus-4.6
|
|
610
|
+
MODEL=claude-opus-4.6 ./.prizmkit/dev-pipeline/reset-feature.sh F-007 --clean --run
|
|
611
611
|
|
|
612
612
|
# Test which model the CLI is using
|
|
613
|
-
MODEL=claude-sonnet-4.6
|
|
613
|
+
MODEL=claude-sonnet-4.6 ./.prizmkit/dev-pipeline/run-feature.sh test-cli
|
|
614
614
|
```
|
|
615
615
|
|
|
616
616
|
### Dry-Run Model Verification
|
|
@@ -618,7 +618,7 @@ MODEL=claude-sonnet-4.6 ./dev-pipeline/run-feature.sh test-cli
|
|
|
618
618
|
Use `--dry-run` to verify which model will be used without spawning a session:
|
|
619
619
|
|
|
620
620
|
```bash
|
|
621
|
-
|
|
621
|
+
./.prizmkit/dev-pipeline/run-feature.sh run F-017 --dry-run
|
|
622
622
|
# Output includes: "Feature Model: claude-opus-4.6"
|
|
623
623
|
```
|
|
624
624
|
|
|
@@ -655,15 +655,15 @@ To permanently configure, create `.prizmkit/config.json`:
|
|
|
655
655
|
Or override per-invocation:
|
|
656
656
|
|
|
657
657
|
```bash
|
|
658
|
-
AI_CLI=claude
|
|
658
|
+
AI_CLI=claude ./.prizmkit/dev-pipeline/run-feature.sh run .prizmkit/plans/feature-list.json
|
|
659
659
|
```
|
|
660
660
|
|
|
661
661
|
### Testing AI CLI (`test-cli`)
|
|
662
662
|
|
|
663
663
|
```bash
|
|
664
|
-
|
|
665
|
-
MODEL=claude-sonnet-4.6
|
|
666
|
-
AI_CLI=cbc
|
|
664
|
+
./.prizmkit/dev-pipeline/run-feature.sh test-cli
|
|
665
|
+
MODEL=claude-sonnet-4.6 ./.prizmkit/dev-pipeline/run-feature.sh test-cli
|
|
666
|
+
AI_CLI=cbc ./.prizmkit/dev-pipeline/run-feature.sh test-cli
|
|
667
667
|
```
|
|
668
668
|
|
|
669
669
|
---
|
|
@@ -758,25 +758,25 @@ cat .prizmkit/state/features/features/F-003/sessions/F-003-*/logs/session.log |
|
|
|
758
758
|
|
|
759
759
|
```bash
|
|
760
760
|
# Check what failed
|
|
761
|
-
|
|
761
|
+
./.prizmkit/dev-pipeline/run-feature.sh status .prizmkit/plans/feature-list.json
|
|
762
762
|
|
|
763
763
|
# Review session logs
|
|
764
764
|
cat .prizmkit/state/features/features/F-XXX/sessions/*/logs/session.log
|
|
765
765
|
|
|
766
766
|
# Option A: Fix manually and mark complete
|
|
767
|
-
python3 dev-pipeline/scripts/update-feature-status.py \
|
|
767
|
+
python3 .prizmkit/dev-pipeline/scripts/update-feature-status.py \
|
|
768
768
|
--feature-list .prizmkit/plans/feature-list.json \
|
|
769
769
|
--state-dir .prizmkit/state/features \
|
|
770
770
|
--feature-id F-XXX --action complete
|
|
771
771
|
|
|
772
772
|
# Option B: Reset for retry
|
|
773
|
-
python3 dev-pipeline/scripts/update-feature-status.py \
|
|
773
|
+
python3 .prizmkit/dev-pipeline/scripts/update-feature-status.py \
|
|
774
774
|
--feature-list .prizmkit/plans/feature-list.json \
|
|
775
775
|
--state-dir .prizmkit/state/features \
|
|
776
776
|
--feature-id F-XXX --action reset
|
|
777
777
|
|
|
778
778
|
# Resume
|
|
779
|
-
|
|
779
|
+
./.prizmkit/dev-pipeline/run-feature.sh run .prizmkit/plans/feature-list.json
|
|
780
780
|
```
|
|
781
781
|
|
|
782
782
|
---
|
|
@@ -790,11 +790,11 @@ The bug fix pipeline provides the same autonomous outer-loop as the feature pipe
|
|
|
790
790
|
```bash
|
|
791
791
|
# 1. Generate bug fix list (via bug-planner skill)
|
|
792
792
|
# 2. Run foreground
|
|
793
|
-
|
|
793
|
+
./.prizmkit/dev-pipeline/run-bugfix.sh run .prizmkit/plans/bug-fix-list.json
|
|
794
794
|
# 3. Or as daemon
|
|
795
|
-
|
|
795
|
+
./.prizmkit/dev-pipeline/launch-bugfix-daemon.sh start .prizmkit/plans/bug-fix-list.json
|
|
796
796
|
# 4. Check progress
|
|
797
|
-
|
|
797
|
+
./.prizmkit/dev-pipeline/run-bugfix.sh status .prizmkit/plans/bug-fix-list.json
|
|
798
798
|
```
|
|
799
799
|
|
|
800
800
|
### Bug Fix Execution Flow
|
|
@@ -852,7 +852,7 @@ run-bugfix.sh main loop
|
|
|
852
852
|
## Directory Structure
|
|
853
853
|
|
|
854
854
|
```
|
|
855
|
-
dev-pipeline/
|
|
855
|
+
.prizmkit/dev-pipeline/
|
|
856
856
|
+-- run-feature.sh # Main pipeline runner (features)
|
|
857
857
|
+-- reset-feature.sh # Reset & retry failed feature
|
|
858
858
|
+-- reset-feature.sh # Reset/clean feature for re-execution
|
|
@@ -24,8 +24,11 @@ set -euo pipefail
|
|
|
24
24
|
# ============================================================
|
|
25
25
|
|
|
26
26
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
|
|
28
|
+
# Source shared common helpers (exports PIPELINE_DIR/PRIZMKIT_DIR/PROJECT_ROOT)
|
|
29
|
+
source "$SCRIPT_DIR/lib/common.sh"
|
|
30
|
+
|
|
31
|
+
STATE_DIR="${PRIZMKIT_DIR}/state/bugfix"
|
|
29
32
|
PID_FILE="$STATE_DIR/.pipeline.pid"
|
|
30
33
|
LOG_FILE="$STATE_DIR/pipeline-daemon.log"
|
|
31
34
|
RUN_SCRIPT="$SCRIPT_DIR/run-bugfix.sh"
|
|
@@ -24,8 +24,11 @@ set -euo pipefail
|
|
|
24
24
|
# ============================================================
|
|
25
25
|
|
|
26
26
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
|
|
28
|
+
# Source shared common helpers (exports PIPELINE_DIR/PRIZMKIT_DIR/PROJECT_ROOT)
|
|
29
|
+
source "$SCRIPT_DIR/lib/common.sh"
|
|
30
|
+
|
|
31
|
+
STATE_DIR="${PRIZMKIT_DIR}/state/features"
|
|
29
32
|
PID_FILE="$STATE_DIR/.pipeline.pid"
|
|
30
33
|
LOG_FILE="$STATE_DIR/pipeline-daemon.log"
|
|
31
34
|
RUN_SCRIPT="$SCRIPT_DIR/run-feature.sh"
|
|
@@ -24,8 +24,11 @@ set -euo pipefail
|
|
|
24
24
|
# ============================================================
|
|
25
25
|
|
|
26
26
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
27
|
-
|
|
28
|
-
|
|
27
|
+
|
|
28
|
+
# Source shared common helpers (exports PIPELINE_DIR/PRIZMKIT_DIR/PROJECT_ROOT)
|
|
29
|
+
source "$SCRIPT_DIR/lib/common.sh"
|
|
30
|
+
|
|
31
|
+
STATE_DIR="${PRIZMKIT_DIR}/state/refactor"
|
|
29
32
|
PID_FILE="$STATE_DIR/.pipeline.pid"
|
|
30
33
|
LOG_FILE="$STATE_DIR/pipeline-daemon.log"
|
|
31
34
|
RUN_SCRIPT="$SCRIPT_DIR/run-refactor.sh"
|
|
@@ -23,6 +23,37 @@ log_warn() { echo -e "${YELLOW}[WARN]${NC} $(date '+%Y-%m-%d %H:%M:%S') $*
|
|
|
23
23
|
log_error() { echo -e "${RED}[ERROR]${NC} $(date '+%Y-%m-%d %H:%M:%S') $*"; }
|
|
24
24
|
log_success() { echo -e "${GREEN}[SUCCESS]${NC} $(date '+%Y-%m-%d %H:%M:%S') $*"; }
|
|
25
25
|
|
|
26
|
+
# ============================================================
|
|
27
|
+
# Path resolution (single source of truth)
|
|
28
|
+
# ============================================================
|
|
29
|
+
# Exports three directories used throughout dev-pipeline scripts:
|
|
30
|
+
# PIPELINE_DIR — directory containing the dev-pipeline scripts
|
|
31
|
+
# PRIZMKIT_DIR — the .prizmkit/ runtime directory
|
|
32
|
+
# PROJECT_ROOT — the user's project root
|
|
33
|
+
#
|
|
34
|
+
# Layout detection (no override case):
|
|
35
|
+
# - If PIPELINE_DIR's parent is named ".prizmkit" → user-install layout
|
|
36
|
+
# (.prizmkit/dev-pipeline/). PRIZMKIT_DIR = parent.
|
|
37
|
+
# - Otherwise → framework repo source (<repo>/dev-pipeline/).
|
|
38
|
+
# PROJECT_ROOT = parent, PRIZMKIT_DIR = <repo>/.prizmkit.
|
|
39
|
+
#
|
|
40
|
+
# Callers (tests) may pre-set any of these env vars to override detection.
|
|
41
|
+
if [[ -z "${PIPELINE_DIR:-}" ]]; then
|
|
42
|
+
PIPELINE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
|
43
|
+
fi
|
|
44
|
+
if [[ -z "${PRIZMKIT_DIR:-}" || -z "${PROJECT_ROOT:-}" ]]; then
|
|
45
|
+
_pipeline_parent="$(dirname "$PIPELINE_DIR")"
|
|
46
|
+
if [[ "$(basename "$_pipeline_parent")" == ".prizmkit" ]]; then
|
|
47
|
+
: "${PRIZMKIT_DIR:=$_pipeline_parent}"
|
|
48
|
+
: "${PROJECT_ROOT:=$(dirname "$_pipeline_parent")}"
|
|
49
|
+
else
|
|
50
|
+
: "${PROJECT_ROOT:=$_pipeline_parent}"
|
|
51
|
+
: "${PRIZMKIT_DIR:=$PROJECT_ROOT/.prizmkit}"
|
|
52
|
+
fi
|
|
53
|
+
unset _pipeline_parent
|
|
54
|
+
fi
|
|
55
|
+
export PIPELINE_DIR PRIZMKIT_DIR PROJECT_ROOT
|
|
56
|
+
|
|
26
57
|
# ============================================================
|
|
27
58
|
# .env file loading
|
|
28
59
|
# ============================================================
|
|
@@ -96,11 +127,9 @@ prizm_log_bootstrap_prompt() {
|
|
|
96
127
|
# PLATFORM
|
|
97
128
|
# PRIZMKIT_PLATFORM
|
|
98
129
|
prizm_detect_cli_and_platform() {
|
|
99
|
-
# Load .env from
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
if [[ -n "$_env_root" ]]; then
|
|
103
|
-
prizm_load_env "$_env_root/.env"
|
|
130
|
+
# Load .env from .prizmkit/.env if it exists (does not override existing env vars)
|
|
131
|
+
if [[ -n "${PRIZMKIT_DIR:-}" ]]; then
|
|
132
|
+
prizm_load_env "$PRIZMKIT_DIR/.env"
|
|
104
133
|
fi
|
|
105
134
|
|
|
106
135
|
local _raw_cli=""
|
|
@@ -43,8 +43,11 @@ set -euo pipefail
|
|
|
43
43
|
# ============================================================
|
|
44
44
|
|
|
45
45
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
|
|
47
|
+
# Source shared common helpers (exports PIPELINE_DIR/PRIZMKIT_DIR/PROJECT_ROOT)
|
|
48
|
+
source "$SCRIPT_DIR/lib/common.sh"
|
|
49
|
+
|
|
50
|
+
STATE_DIR="${PRIZMKIT_DIR}/state/bugfix"
|
|
48
51
|
SCRIPTS_DIR="$SCRIPT_DIR/scripts"
|
|
49
52
|
|
|
50
53
|
# Colors
|
|
@@ -198,7 +201,6 @@ fi
|
|
|
198
201
|
# Process each bug
|
|
199
202
|
# ============================================================
|
|
200
203
|
|
|
201
|
-
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
202
204
|
RESET_COUNT=0
|
|
203
205
|
FAIL_COUNT=0
|
|
204
206
|
|
|
@@ -385,9 +387,9 @@ if [[ "$DO_RUN" == true && ${#BUG_IDS[@]} -eq 1 ]]; then
|
|
|
385
387
|
echo ""
|
|
386
388
|
exec "$SCRIPT_DIR/run-bugfix.sh" run "${BUG_IDS[0]}" "$BUG_LIST"
|
|
387
389
|
else
|
|
388
|
-
log_info "
|
|
390
|
+
log_info " ./.prizmkit/dev-pipeline/run-bugfix.sh run .prizmkit/plans/bug-fix-list.json # Resume pipeline from first pending"
|
|
389
391
|
if [[ ${#BUG_IDS[@]} -eq 1 ]]; then
|
|
390
|
-
log_info "
|
|
392
|
+
log_info " ./.prizmkit/dev-pipeline/run-bugfix.sh run ${BUG_IDS[0]} # Run single bug"
|
|
391
393
|
fi
|
|
392
394
|
fi
|
|
393
395
|
echo ""
|
|
@@ -43,8 +43,11 @@ set -euo pipefail
|
|
|
43
43
|
# ============================================================
|
|
44
44
|
|
|
45
45
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
|
|
47
|
+
# Source shared common helpers (exports PIPELINE_DIR/PRIZMKIT_DIR/PROJECT_ROOT)
|
|
48
|
+
source "$SCRIPT_DIR/lib/common.sh"
|
|
49
|
+
|
|
50
|
+
STATE_DIR="${PRIZMKIT_DIR}/state/features"
|
|
48
51
|
SCRIPTS_DIR="$SCRIPT_DIR/scripts"
|
|
49
52
|
|
|
50
53
|
# Colors
|
|
@@ -198,7 +201,6 @@ fi
|
|
|
198
201
|
# Process each feature
|
|
199
202
|
# ============================================================
|
|
200
203
|
|
|
201
|
-
PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
|
|
202
204
|
RESET_COUNT=0
|
|
203
205
|
FAIL_COUNT=0
|
|
204
206
|
|
|
@@ -396,9 +398,9 @@ if [[ "$DO_RUN" == true && ${#FEATURE_IDS[@]} -eq 1 ]]; then
|
|
|
396
398
|
echo ""
|
|
397
399
|
exec "$SCRIPT_DIR/run-feature.sh" run "${FEATURE_IDS[0]}" "$FEATURE_LIST"
|
|
398
400
|
else
|
|
399
|
-
log_info "
|
|
401
|
+
log_info " ./.prizmkit/dev-pipeline/run-feature.sh run .prizmkit/plans/feature-list.json # Resume pipeline from first pending"
|
|
400
402
|
if [[ ${#FEATURE_IDS[@]} -eq 1 ]]; then
|
|
401
|
-
log_info "
|
|
403
|
+
log_info " ./.prizmkit/dev-pipeline/run-feature.sh run ${FEATURE_IDS[0]} # Run single feature"
|
|
402
404
|
fi
|
|
403
405
|
fi
|
|
404
406
|
echo ""
|