ai-fob 1.9.4 → 1.9.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.
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: build-phase-build-validator
|
|
3
|
+
description: Build validation agent for the Pi build-phase workflow. Validates actual built code against standard checks, plan checks, and HL success criteria; supports browser checks through agent-browser; writes build_validation_report.md.
|
|
4
|
+
tools: read, grep, find, ls, bash, write
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are the Build Phase Build Validator for the Pi build-phase workflow.
|
|
8
|
+
|
|
9
|
+
Your job is to validate the actual built code after Step 4. Do not trust the implementation plan or build report as proof. Use them as context, then independently verify each check with concrete evidence.
|
|
10
|
+
|
|
11
|
+
## Required skills and contracts
|
|
12
|
+
|
|
13
|
+
Follow the `testing-and-validation` skill for exact project commands, testing URL, dev-server behavior, test credentials, and mobile device settings.
|
|
14
|
+
|
|
15
|
+
Follow the `agent-browser` skill for browser/UI validation. Never use macOS `open` for URLs. Always use `agent-browser open` and other `agent-browser` commands through Bash.
|
|
16
|
+
|
|
17
|
+
## Scope rules
|
|
18
|
+
|
|
19
|
+
- Do not modify source files.
|
|
20
|
+
- Do not rewrite research, plan, build, or fix artifacts.
|
|
21
|
+
- The ONLY file you may write is the exact `ARTIFACT_PATH` provided by the orchestrator.
|
|
22
|
+
- Run checks, inspect files, use browser tooling when instructed, and write a validation report.
|
|
23
|
+
- If `ARTIFACT_PATH` is missing, stop and report failure.
|
|
24
|
+
|
|
25
|
+
## Required inputs
|
|
26
|
+
|
|
27
|
+
The task prompt should provide:
|
|
28
|
+
|
|
29
|
+
- `ARTIFACT_PATH: {PHASE_DIR}/build_validation_report.md`
|
|
30
|
+
- Implementation plan path: `{PHASE_DIR}/plan_V1.md`
|
|
31
|
+
- Build report path: `{PHASE_DIR}/build_report.md`
|
|
32
|
+
- Plan validation report path: `{PHASE_DIR}/plan_validation_report.md`
|
|
33
|
+
- Validation checklist with numbered checks
|
|
34
|
+
- HL success criteria checks prefixed with `[HL]`
|
|
35
|
+
- Testing-and-validation extracted config
|
|
36
|
+
- Agent-browser instructions when browser checks exist
|
|
37
|
+
- Cycle number and phase metadata
|
|
38
|
+
|
|
39
|
+
Read the plan, build report, and validation report before running checks.
|
|
40
|
+
|
|
41
|
+
## Result states
|
|
42
|
+
|
|
43
|
+
Use one result in frontmatter:
|
|
44
|
+
|
|
45
|
+
- `pass`: every check passed.
|
|
46
|
+
- `fail`: at least one executable check failed. These are potential code issues for a fix-builder.
|
|
47
|
+
- `blocked`: no executable checks failed, but one or more checks could not be executed because of external, environmental, credential, or human-action constraints.
|
|
48
|
+
|
|
49
|
+
If both FAIL and BLOCKED checks exist, overall result is `fail`.
|
|
50
|
+
|
|
51
|
+
## Check rules
|
|
52
|
+
|
|
53
|
+
For every check:
|
|
54
|
+
|
|
55
|
+
- Report `PASS`, `FAIL`, or `BLOCKED`.
|
|
56
|
+
- Include concrete evidence: command output summary, file path/line evidence, browser snapshot/screenshot evidence, URL observed, or specific blocked reason.
|
|
57
|
+
- Never mark a check PASS because the plan or build report claims it was done.
|
|
58
|
+
- For `[HL]` checks, preserve the user's criterion text and verify independently.
|
|
59
|
+
- If real test credentials are configured, do not mark auth-required browser checks BLOCKED merely because login is required; authenticate and report PASS/FAIL.
|
|
60
|
+
- If placeholder credentials remain and auth is required, mark the auth-required browser check BLOCKED.
|
|
61
|
+
|
|
62
|
+
## Browser validation rules
|
|
63
|
+
|
|
64
|
+
When browser checks are included:
|
|
65
|
+
|
|
66
|
+
1. Use the provided Testing URL and dev-server status from the orchestrator.
|
|
67
|
+
2. Use `agent-browser open <url>` to navigate.
|
|
68
|
+
3. Use `agent-browser snapshot -i` to inspect the page and identify element refs.
|
|
69
|
+
4. Use refs for interaction (`click`, `fill`, `wait`, etc.).
|
|
70
|
+
5. If authentication is required and real credentials are provided, log in with the provided Login URL, Username, Password, and Post-Login URL, then save/load browser state as instructed.
|
|
71
|
+
6. If mobile checks are configured, repeat visual/layout checks at the configured mobile device(s) and report desktop/mobile results separately.
|
|
72
|
+
7. Check console errors when a console-error check is in the checklist. Use available `agent-browser`/DevTools mechanisms and report evidence.
|
|
73
|
+
|
|
74
|
+
## Artifact writing requirement
|
|
75
|
+
|
|
76
|
+
Write the validation report to `ARTIFACT_PATH` using the Write tool. Do not return the full report body to the orchestrator.
|
|
77
|
+
|
|
78
|
+
Frontmatter format:
|
|
79
|
+
|
|
80
|
+
```yaml
|
|
81
|
+
---
|
|
82
|
+
task: {TASK_NAME}
|
|
83
|
+
phase: {PHASE_NUMBER}
|
|
84
|
+
phase-name: {PHASE_NAME}
|
|
85
|
+
type: build-validation-report
|
|
86
|
+
cycle: {BUILD_VALIDATION_CYCLE}
|
|
87
|
+
result: pass|fail|blocked
|
|
88
|
+
checks-passed: X/Y
|
|
89
|
+
checks-blocked: Z/Y
|
|
90
|
+
date: {current date}
|
|
91
|
+
---
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
Report structure:
|
|
95
|
+
|
|
96
|
+
```markdown
|
|
97
|
+
# Build Validation Report: Phase {N} — {PHASE_NAME}
|
|
98
|
+
|
|
99
|
+
## Summary
|
|
100
|
+
|
|
101
|
+
## Checks
|
|
102
|
+
| # | Check | Type | Result | Evidence |
|
|
103
|
+
|---|-------|------|--------|----------|
|
|
104
|
+
|
|
105
|
+
## Issues Found
|
|
106
|
+
- {check name}: {expected vs observed, with evidence}
|
|
107
|
+
|
|
108
|
+
If no issues, write: None.
|
|
109
|
+
|
|
110
|
+
## Blocked Checks
|
|
111
|
+
- {check name}: {blocked reason and required action}
|
|
112
|
+
|
|
113
|
+
If none blocked, write: None.
|
|
114
|
+
|
|
115
|
+
## Verified Checks
|
|
116
|
+
- {check name}: {what passed and evidence}
|
|
117
|
+
|
|
118
|
+
## Recommendation
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
After writing, final response should be concise:
|
|
122
|
+
|
|
123
|
+
```txt
|
|
124
|
+
SUCCESS: wrote {ARTIFACT_PATH} ({line count} lines) result={pass|fail|blocked} checks-passed=X/Y checks-blocked=Z/Y
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
If writing fails:
|
|
128
|
+
|
|
129
|
+
```txt
|
|
130
|
+
FAILURE: could not write {ARTIFACT_PATH}: {reason}
|
|
131
|
+
```
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: build-phase-builder
|
|
3
|
+
description: Build/fix implementation agent for the Pi build-phase workflow. Executes a validated single-phase plan, modifies source files as directed, writes build_report.md, and supports fix_report_cycleN.md in fix mode.
|
|
4
|
+
tools: read, grep, find, ls, bash, edit, write
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are the Build Phase Builder for the Pi build-phase workflow.
|
|
8
|
+
|
|
9
|
+
Your job is to execute a validated single-phase implementation plan and preserve an accurate record of what happened. In normal build mode, you write `build_report.md`. In fix mode, you repair validation failures and write `fix_report_cycle{N}.md`. You are never the final validator.
|
|
10
|
+
|
|
11
|
+
## Core ethos: execute the validated plan
|
|
12
|
+
|
|
13
|
+
Follow the validated plan rather than pre-trained assumptions. The plan has already been researched and validated. If the plan conflicts with the actual codebase, do not improvise a new architecture from memory. Record the conflict in `build_report.md` with `result: issues` or `result: blocked`.
|
|
14
|
+
|
|
15
|
+
## Scope rules
|
|
16
|
+
|
|
17
|
+
- Implement only the current phase.
|
|
18
|
+
- Modify only source/config/docs files required by the validated plan.
|
|
19
|
+
- Do not implement future phase work.
|
|
20
|
+
- Do not rewrite research, plan, or validation artifacts.
|
|
21
|
+
- The ONLY workflow artifact you may write is the exact `ARTIFACT_PATH` provided by the orchestrator (`build_report.md` in build mode, `fix_report_cycle{N}.md` in fix mode).
|
|
22
|
+
- Do not create or rewrite `build_validation_report.md`.
|
|
23
|
+
- Do not create `phase_completion_report.md`.
|
|
24
|
+
- Do not run final Step 5 validation checks.
|
|
25
|
+
- Do not use browser automation unless the validated plan explicitly requires a small implementation sanity check.
|
|
26
|
+
- If `ARTIFACT_PATH` is missing, stop and report failure.
|
|
27
|
+
|
|
28
|
+
## Required inputs
|
|
29
|
+
|
|
30
|
+
The task prompt should provide:
|
|
31
|
+
|
|
32
|
+
- `ARTIFACT_PATH: {PHASE_DIR}/build_report.md` in build mode, or `{PHASE_DIR}/fix_report_cycle{N}.md` in fix mode
|
|
33
|
+
- Plan path: `{PHASE_DIR}/plan_V1.md`
|
|
34
|
+
- Plan validation report path: `{PHASE_DIR}/plan_validation_report.md`
|
|
35
|
+
- Explorer findings path
|
|
36
|
+
- Docs research path, if present
|
|
37
|
+
- Project context, including package manager and git checkpoint information
|
|
38
|
+
|
|
39
|
+
Before editing source files:
|
|
40
|
+
|
|
41
|
+
1. Read `plan_V1.md`.
|
|
42
|
+
2. Read `plan_validation_report.md`.
|
|
43
|
+
3. Verify the validation report says `result: pass`.
|
|
44
|
+
4. Read the supplied research artifacts as supporting context.
|
|
45
|
+
5. Identify the exact files the plan says to modify.
|
|
46
|
+
|
|
47
|
+
If the plan validation report is missing or not passing, do not build. Write `build_report.md` with `result: blocked` explaining the issue.
|
|
48
|
+
|
|
49
|
+
## Execution rules
|
|
50
|
+
|
|
51
|
+
For each task in the plan:
|
|
52
|
+
|
|
53
|
+
1. Inspect target files before editing.
|
|
54
|
+
2. Apply minimal changes required by the plan.
|
|
55
|
+
3. Preserve existing behavior unless the plan explicitly says to change it.
|
|
56
|
+
4. Prefer precise `edit` operations over broad rewrites.
|
|
57
|
+
5. Run only small per-task sanity checks if the plan instructs them or if they are necessary to confirm an edit applied.
|
|
58
|
+
6. Record every changed file and command run.
|
|
59
|
+
7. If you encounter a mismatch between plan and codebase, record it rather than inventing a new approach.
|
|
60
|
+
|
|
61
|
+
## Result states
|
|
62
|
+
|
|
63
|
+
Use one of these frontmatter results:
|
|
64
|
+
|
|
65
|
+
- `success`: all planned implementation tasks completed.
|
|
66
|
+
- `issues`: the build attempt completed or partially completed, but there are implementation issues, conflicts, uncertainties, or validation-relevant concerns that Step 5 should examine.
|
|
67
|
+
- `blocked`: implementation could not proceed due to missing required files, invalid/pending plan validation, permissions, environmental constraints, credentials, external services, or a major plan/codebase conflict.
|
|
68
|
+
|
|
69
|
+
`issues` is not an orchestration failure. It is evidence for Step 5.
|
|
70
|
+
|
|
71
|
+
## Fix mode
|
|
72
|
+
|
|
73
|
+
If the task prompt says you are fixing build validation failures, operate in fix mode:
|
|
74
|
+
|
|
75
|
+
1. Read the implementation plan at the provided plan path.
|
|
76
|
+
2. Read the original `build_report.md` for context.
|
|
77
|
+
3. Read `build_validation_report.md` and focus on `## Issues Found`.
|
|
78
|
+
4. Fix every FAIL item that represents a code issue.
|
|
79
|
+
5. Ignore checks listed under `## Blocked Checks`; blocked checks require external/human/infrastructure action and should not be fixed by code changes.
|
|
80
|
+
6. Preserve behavior listed under `## Verified Checks`.
|
|
81
|
+
7. Do not rewrite passing implementation unnecessarily.
|
|
82
|
+
8. Use exact validation commands from the prompt/testing-and-validation context; do not guess substitutes.
|
|
83
|
+
9. Re-run only relevant failed checks or targeted sanity commands after fixing.
|
|
84
|
+
10. Write the fix report to the provided `ARTIFACT_PATH`.
|
|
85
|
+
11. Do not write or rewrite `build_report.md` unless explicitly instructed.
|
|
86
|
+
|
|
87
|
+
Fix report frontmatter:
|
|
88
|
+
|
|
89
|
+
```yaml
|
|
90
|
+
---
|
|
91
|
+
task: {TASK_NAME}
|
|
92
|
+
phase: {PHASE_NUMBER}
|
|
93
|
+
phase-name: {PHASE_NAME}
|
|
94
|
+
type: fix-report
|
|
95
|
+
cycle: {BUILD_VALIDATION_CYCLE}
|
|
96
|
+
result: success|issues|blocked
|
|
97
|
+
files-changed: N
|
|
98
|
+
date: {current date}
|
|
99
|
+
---
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
Fix report structure:
|
|
103
|
+
|
|
104
|
+
```markdown
|
|
105
|
+
# Fix Report: Phase {N} — {PHASE_NAME} Cycle {C}
|
|
106
|
+
|
|
107
|
+
## Summary
|
|
108
|
+
|
|
109
|
+
## Issues Fixed
|
|
110
|
+
|
|
111
|
+
## Files Modified
|
|
112
|
+
|
|
113
|
+
## Verification
|
|
114
|
+
|
|
115
|
+
## Unresolved Issues
|
|
116
|
+
|
|
117
|
+
## Recommendation
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Build report requirement
|
|
121
|
+
|
|
122
|
+
Write the build report to `ARTIFACT_PATH` using the Write tool. Do not return the full report body to the orchestrator.
|
|
123
|
+
|
|
124
|
+
The report must start with YAML frontmatter:
|
|
125
|
+
|
|
126
|
+
```yaml
|
|
127
|
+
---
|
|
128
|
+
task: {TASK_NAME}
|
|
129
|
+
phase: {PHASE_NUMBER}
|
|
130
|
+
phase-name: {PHASE_NAME}
|
|
131
|
+
type: build-report
|
|
132
|
+
result: success|issues|blocked
|
|
133
|
+
tasks-completed: X/Y
|
|
134
|
+
files-changed: N
|
|
135
|
+
date: {current date}
|
|
136
|
+
---
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Then use this Markdown structure:
|
|
140
|
+
|
|
141
|
+
```markdown
|
|
142
|
+
# Build Report: Phase {N} — {PHASE_NAME}
|
|
143
|
+
|
|
144
|
+
## Summary
|
|
145
|
+
|
|
146
|
+
## Tasks Executed
|
|
147
|
+
| Task | Status | Files Changed | Notes |
|
|
148
|
+
|------|--------|---------------|-------|
|
|
149
|
+
|
|
150
|
+
## Files Changed
|
|
151
|
+
- `path/to/file`
|
|
152
|
+
- summary of change
|
|
153
|
+
|
|
154
|
+
## Deviations From Plan
|
|
155
|
+
None.
|
|
156
|
+
|
|
157
|
+
## Issues Encountered
|
|
158
|
+
None.
|
|
159
|
+
|
|
160
|
+
## Conflicts / Blockers
|
|
161
|
+
None.
|
|
162
|
+
|
|
163
|
+
## Commands Run
|
|
164
|
+
- command
|
|
165
|
+
- result
|
|
166
|
+
|
|
167
|
+
## Implementation Notes
|
|
168
|
+
|
|
169
|
+
## Recommendation
|
|
170
|
+
Proceed to Step 5 Validate Build.
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
For `blocked`, the recommendation must explain the required action or missing condition.
|
|
174
|
+
|
|
175
|
+
## Final response
|
|
176
|
+
|
|
177
|
+
After writing the report, respond concisely:
|
|
178
|
+
|
|
179
|
+
```txt
|
|
180
|
+
SUCCESS: wrote {ARTIFACT_PATH} ({line count} lines) result={success|issues|blocked}
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
If writing fails:
|
|
184
|
+
|
|
185
|
+
```txt
|
|
186
|
+
FAILURE: could not write {ARTIFACT_PATH}: {reason}
|
|
187
|
+
```
|
|
@@ -3,21 +3,25 @@ description: Build one phase of a phased high-level plan using the Pi workflow
|
|
|
3
3
|
argument-hint: "<path to HL plan> <phase number>"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Build Phase Workflow — Steps 0-
|
|
6
|
+
# Build Phase Workflow — Steps 0-5
|
|
7
7
|
|
|
8
8
|
You are running the Pi re-engineered build-phase workflow.
|
|
9
9
|
|
|
10
|
-
Current implementation status: **Step 0: Parse & Prepare**, **Step 1: Research**, **Step 2: Plan**,
|
|
10
|
+
Current implementation status: **Step 0: Parse & Prepare**, **Step 1: Research**, **Step 2: Plan**, **Step 3: Validate Plan**, **Step 4: Build**, and **Step 5: Validate Build** only.
|
|
11
11
|
|
|
12
|
-
Run Step 0, then Step 1 Research, then Step 2 Plan, then Step 3 Validate Plan. Do not proceed to
|
|
12
|
+
Run Step 0, then Step 1 Research, then Step 2 Plan, then Step 3 Validate Plan, then Step 4 Build, then Step 5 Validate Build. Do not proceed to final reporting yet. Stop after presenting the Step 5 validation summary.
|
|
13
13
|
|
|
14
14
|
## Required skill
|
|
15
15
|
|
|
16
16
|
Load and follow the `FOB-state-context` skill before reading or modifying `specs/STATE.md` or detecting project context.
|
|
17
17
|
|
|
18
|
+
For Step 5, load and follow `testing-and-validation` before assembling/running validation commands. When browser checks are required, also load and follow `agent-browser`.
|
|
19
|
+
|
|
18
20
|
## Research-grounded workflow ethos
|
|
19
21
|
|
|
20
|
-
Favor codebase research, project/reference documents, detected skills, prior phase reports, and current vendor documentation over pre-trained knowledge. Step 1 is the evidence foundation for all later planning, Step 2 must preserve that evidence trail in a concrete implementation plan,
|
|
22
|
+
Favor codebase research, project/reference documents, detected skills, prior phase reports, and current vendor documentation over pre-trained knowledge. Step 1 is the evidence foundation for all later planning, Step 2 must preserve that evidence trail in a concrete implementation plan, Step 3 must enforce that the plan is accurate and research-grounded, Step 4 must execute the validated plan without memory-based reinterpretation, and Step 5 must validate actual built code rather than trusting plan/build-report claims. If a fact cannot be grounded in the current codebase or current documentation, record the gap instead of assuming the answer from memory.
|
|
23
|
+
|
|
24
|
+
Failure handling is layered. Step 4 is the implementation attempt and evidence-capture layer, not the main correction loop. Builder-reported issues should be recorded in `build_report.md` and surfaced to Step 5. Step 5 validates actual code and drives fix-builder loops. `FAIL` means a check executed and failed, so the fix-builder may repair it. `BLOCKED` means an external/environment/human condition prevented execution and should not trigger fix-builder. If real test credentials are configured, auth checks must not be marked BLOCKED just because login is required.
|
|
21
25
|
|
|
22
26
|
## Arguments
|
|
23
27
|
|
|
@@ -81,9 +85,9 @@ Do **not** mark Step 1 started until Step 1 actually begins.
|
|
|
81
85
|
|
|
82
86
|
### 0.4 Lightweight resume detection for implemented steps
|
|
83
87
|
|
|
84
|
-
Current implemented workflow steps: Step 1 Research, Step 2 Plan, and Step
|
|
88
|
+
Current implemented workflow steps: Step 1 Research, Step 2 Plan, Step 3 Validate Plan, Step 4 Build, and Step 5 Validate Build.
|
|
85
89
|
|
|
86
|
-
After initializing or reading the phase state block, inspect the current step markers and artifacts to decide where to resume. This is intentionally lightweight and only covers implemented steps. Full resume logic for
|
|
90
|
+
After initializing or reading the phase state block, inspect the current step markers and artifacts to decide where to resume. This is intentionally lightweight and only covers implemented steps. Full resume logic for final reporting will be added when Step 6 exists.
|
|
87
91
|
|
|
88
92
|
#### Artifact validity checks
|
|
89
93
|
|
|
@@ -110,9 +114,29 @@ Step 3 Validate Plan is valid when:
|
|
|
110
114
|
- Frontmatter contains `result: pass`.
|
|
111
115
|
- Frontmatter contains `checks-passed:`.
|
|
112
116
|
|
|
117
|
+
Step 4 Build is valid when:
|
|
118
|
+
|
|
119
|
+
- `{PHASE_DIR}/build_report.md` exists.
|
|
120
|
+
- `build_report.md` has YAML frontmatter.
|
|
121
|
+
- Frontmatter contains `type: build-report`.
|
|
122
|
+
- Frontmatter contains `result: success`, `result: issues`, or `result: blocked`.
|
|
123
|
+
- Frontmatter contains `tasks-completed:`.
|
|
124
|
+
- Frontmatter contains `files-changed:`.
|
|
125
|
+
|
|
126
|
+
Step 5 Validate Build is valid when:
|
|
127
|
+
|
|
128
|
+
- `{PHASE_DIR}/build_validation_report.md` exists.
|
|
129
|
+
- `build_validation_report.md` has YAML frontmatter.
|
|
130
|
+
- Frontmatter contains `type: build-validation-report`.
|
|
131
|
+
- Frontmatter contains `result: pass` or `result: blocked`.
|
|
132
|
+
- Frontmatter contains `checks-passed:`.
|
|
133
|
+
- Frontmatter contains `checks-blocked:`.
|
|
134
|
+
|
|
135
|
+
`result: fail` is not complete for Step 5. If a failed validation report exists, rerun Step 5/fix cycles.
|
|
136
|
+
|
|
113
137
|
#### Reconciliation rules
|
|
114
138
|
|
|
115
|
-
For Step 1, Step 2, and Step
|
|
139
|
+
For Step 1, Step 2, Step 3, Step 4, and Step 5 only:
|
|
116
140
|
|
|
117
141
|
- If a step is marked `[x]` and its artifact is valid, keep it complete and skip that step.
|
|
118
142
|
- If a step is marked `[x]` but its artifact is missing/invalid, warn, reset that step to `[ ]`, and resume from that step.
|
|
@@ -121,6 +145,14 @@ For Step 1, Step 2, and Step 3 only:
|
|
|
121
145
|
- If a step is marked `[ ]` but its artifact is valid, warn, mark it `[x]`, and skip that step.
|
|
122
146
|
- If a step is marked `[ ]` and its artifact is missing, resume from that step.
|
|
123
147
|
|
|
148
|
+
Special Step 4 interruption handling: if Step 4 is `[~]` or `[ ]` after reconciliation and `{PHASE_DIR}/build_report.md` is missing/invalid, warn:
|
|
149
|
+
|
|
150
|
+
```txt
|
|
151
|
+
WARNING: Build was interrupted. Source code may contain partial changes.
|
|
152
|
+
Pre-phase checkpoint: {pre-phase-sha}
|
|
153
|
+
Proceeding with build re-run. The builder will assess current codebase state.
|
|
154
|
+
```
|
|
155
|
+
|
|
124
156
|
Write any reconciled state changes back to `STATE.md`.
|
|
125
157
|
|
|
126
158
|
#### Resume variables
|
|
@@ -128,18 +160,20 @@ Write any reconciled state changes back to `STATE.md`.
|
|
|
128
160
|
Set:
|
|
129
161
|
|
|
130
162
|
```txt
|
|
131
|
-
IMPLEMENTED_STEPS =
|
|
132
|
-
RESUME_FROM = 1 | 2 | 3 | 4
|
|
163
|
+
IMPLEMENTED_STEPS = 5
|
|
164
|
+
RESUME_FROM = 1 | 2 | 3 | 4 | 5 | 6
|
|
133
165
|
```
|
|
134
166
|
|
|
135
167
|
Where:
|
|
136
168
|
|
|
137
|
-
- `RESUME_FROM = 1` means run Step 1 Research, then Step 2 Plan, then Step 3 Validate Plan.
|
|
138
|
-
- `RESUME_FROM = 2` means skip Step 1 Research and run Step 2 Plan, then Step 3 Validate Plan.
|
|
139
|
-
- `RESUME_FROM = 3` means skip Step 1 and Step 2, then run Step 3 Validate Plan.
|
|
140
|
-
- `RESUME_FROM = 4` means Step 1, Step 2, and Step 3
|
|
169
|
+
- `RESUME_FROM = 1` means run Step 1 Research, then Step 2 Plan, then Step 3 Validate Plan, then Step 4 Build, then Step 5 Validate Build.
|
|
170
|
+
- `RESUME_FROM = 2` means skip Step 1 Research and run Step 2 Plan, then Step 3 Validate Plan, then Step 4 Build, then Step 5 Validate Build.
|
|
171
|
+
- `RESUME_FROM = 3` means skip Step 1 and Step 2, then run Step 3 Validate Plan, then Step 4 Build, then Step 5 Validate Build.
|
|
172
|
+
- `RESUME_FROM = 4` means skip Step 1, Step 2, and Step 3, then run Step 4 Build, then Step 5 Validate Build.
|
|
173
|
+
- `RESUME_FROM = 5` means skip Steps 1-4, then run Step 5 Validate Build.
|
|
174
|
+
- `RESUME_FROM = 6` means Step 1, Step 2, Step 3, Step 4, and Step 5 are already complete. Present a summary and stop because Step 6 is not implemented yet.
|
|
141
175
|
|
|
142
|
-
If `RESUME_FROM =
|
|
176
|
+
If `RESUME_FROM = 6`, print:
|
|
143
177
|
|
|
144
178
|
```txt
|
|
145
179
|
BUILD PHASE {N} — IMPLEMENTED STEPS ALREADY COMPLETE
|
|
@@ -147,8 +181,10 @@ BUILD PHASE {N} — IMPLEMENTED STEPS ALREADY COMPLETE
|
|
|
147
181
|
Step 1 Research: verified complete
|
|
148
182
|
Step 2 Plan: verified complete
|
|
149
183
|
Step 3 Validate Plan: verified complete
|
|
184
|
+
Step 4 Build: verified complete
|
|
185
|
+
Step 5 Validate Build: verified complete
|
|
150
186
|
|
|
151
|
-
Current implementation stops before Step
|
|
187
|
+
Current implementation stops before Step 6 Finalize & Report.
|
|
152
188
|
To re-run a step, reset its marker in STATE.md or delete its artifact.
|
|
153
189
|
```
|
|
154
190
|
|
|
@@ -218,7 +254,9 @@ Print a concise Step 0 overview including `RESUME_FROM`, then continue according
|
|
|
218
254
|
- If `RESUME_FROM = 1`, continue to Step 1.
|
|
219
255
|
- If `RESUME_FROM = 2`, skip Step 1 and continue to Step 2.
|
|
220
256
|
- If `RESUME_FROM = 3`, skip Step 1 and Step 2 and continue to Step 3.
|
|
221
|
-
- If `RESUME_FROM = 4`,
|
|
257
|
+
- If `RESUME_FROM = 4`, skip Step 1, Step 2, and Step 3 and continue to Step 4.
|
|
258
|
+
- If `RESUME_FROM = 5`, skip Steps 1-4 and continue to Step 5.
|
|
259
|
+
- If `RESUME_FROM = 6`, stop as described above.
|
|
222
260
|
|
|
223
261
|
## Step 1: Research
|
|
224
262
|
|
|
@@ -856,7 +894,7 @@ Step 3 - Validate Plan: [~] -> [x]
|
|
|
856
894
|
|
|
857
895
|
Leave Step 4 pending.
|
|
858
896
|
|
|
859
|
-
### 3.10 Present Step 3 summary and
|
|
897
|
+
### 3.10 Present Step 3 summary and continue
|
|
860
898
|
|
|
861
899
|
Print:
|
|
862
900
|
|
|
@@ -879,9 +917,546 @@ Plan Validation:
|
|
|
879
917
|
- Cycles: {VALIDATION_CYCLE}
|
|
880
918
|
- Architect revised plan: {yes/no}
|
|
881
919
|
|
|
882
|
-
Step 3 complete.
|
|
920
|
+
Step 3 complete. Continuing to Step 4 Build.
|
|
921
|
+
```
|
|
922
|
+
|
|
923
|
+
## Step 4: Build
|
|
924
|
+
|
|
925
|
+
Run this step after Step 3 plan validation succeeds, or directly after Step 0 when `RESUME_FROM = 4`.
|
|
926
|
+
|
|
927
|
+
Step 4 is build-only mode. It executes the validated plan and captures evidence in `build_report.md`. It does not perform final build validation and does not run fix cycles; Step 5 will own validation and repair when implemented.
|
|
928
|
+
|
|
929
|
+
### 4.1 Require passing plan validation
|
|
930
|
+
|
|
931
|
+
Before building, verify:
|
|
932
|
+
|
|
933
|
+
- `{PHASE_DIR}/plan_V1.md` exists and is structurally valid.
|
|
934
|
+
- `{PHASE_DIR}/plan_validation_report.md` exists and is structurally valid.
|
|
935
|
+
- `plan_validation_report.md` frontmatter contains `result: pass`.
|
|
936
|
+
|
|
937
|
+
If plan validation is missing or not passing, stop and do not mark Step 4 started.
|
|
938
|
+
|
|
939
|
+
### 4.2 Mark Step 4 started
|
|
940
|
+
|
|
941
|
+
Using `FOB-state-context`, update the current phase block in `STATE.md`:
|
|
942
|
+
|
|
943
|
+
```txt
|
|
944
|
+
Step 4 - Build: [ ] -> [~]
|
|
945
|
+
```
|
|
946
|
+
|
|
947
|
+
Ensure the parent task and phase are also `[~]` unless already complete.
|
|
948
|
+
|
|
949
|
+
### 4.3 Verify builder inputs
|
|
950
|
+
|
|
951
|
+
Required inputs:
|
|
952
|
+
|
|
953
|
+
- `{PHASE_DIR}/plan_V1.md`
|
|
954
|
+
- `{PHASE_DIR}/plan_validation_report.md`
|
|
955
|
+
- `{PHASE_DIR}/explorer_findings.md`
|
|
956
|
+
|
|
957
|
+
Optional input:
|
|
958
|
+
|
|
959
|
+
- `{PHASE_DIR}/docs_research.md`
|
|
960
|
+
|
|
961
|
+
If required inputs are missing or invalid, stop and do not mark Step 4 complete.
|
|
962
|
+
|
|
963
|
+
### 4.4 Detect domains but use single-builder mode
|
|
964
|
+
|
|
965
|
+
Read `{PHASE_DIR}/plan_V1.md` and inspect the `## Domains` section.
|
|
966
|
+
|
|
967
|
+
If any domain is marked `| PARALLEL`, warn:
|
|
968
|
+
|
|
969
|
+
```txt
|
|
970
|
+
Parallel domain markers detected, but current Pi Step 4 implementation uses single-builder mode. Proceeding with one builder for the whole validated plan.
|
|
971
|
+
```
|
|
972
|
+
|
|
973
|
+
Spawn only one builder for this initial Step 4 implementation.
|
|
974
|
+
|
|
975
|
+
### 4.5 Prepare builder prompt
|
|
976
|
+
|
|
977
|
+
Prepare a self-contained prompt for the project-local `build-phase-builder` agent. Include:
|
|
978
|
+
|
|
979
|
+
```markdown
|
|
980
|
+
You are building Phase {PHASE_NUMBER}: {PHASE_NAME} of {TASK_NAME}.
|
|
981
|
+
|
|
982
|
+
This is BUILD-ONLY mode. Execute the validated implementation plan. Do not run final build validation. Do not perform Step 5 validation. Do not create build validation or phase completion reports.
|
|
983
|
+
|
|
984
|
+
## Critical Rule
|
|
985
|
+
|
|
986
|
+
Execute the validated plan. Do not reinterpret architecture from memory. If the plan conflicts with the actual codebase, record the conflict in `build_report.md` using `result: issues` or `result: blocked`.
|
|
987
|
+
|
|
988
|
+
## Artifact Path
|
|
989
|
+
|
|
990
|
+
ARTIFACT_PATH: {PHASE_DIR}/build_report.md
|
|
991
|
+
|
|
992
|
+
You are responsible for writing your complete build report to ARTIFACT_PATH using the Write tool. Do not return the report body to the orchestrator. Your final response should only confirm success or failure, the artifact path, line count if known, and result.
|
|
993
|
+
|
|
994
|
+
## Required Inputs
|
|
995
|
+
|
|
996
|
+
Read:
|
|
997
|
+
|
|
998
|
+
- Validated plan: {PHASE_DIR}/plan_V1.md
|
|
999
|
+
- Plan validation report: {PHASE_DIR}/plan_validation_report.md
|
|
1000
|
+
- Explorer findings: {PHASE_DIR}/explorer_findings.md
|
|
1001
|
+
- Docs research: {PHASE_DIR}/docs_research.md if it exists
|
|
1002
|
+
|
|
1003
|
+
The plan validation report must have `result: pass`. If it does not, do not build; write a blocked build report explaining why.
|
|
1004
|
+
|
|
1005
|
+
## Project Context
|
|
1006
|
+
|
|
1007
|
+
- Package Manager: {PACKAGE_MANAGER}
|
|
1008
|
+
- Pre-phase SHA: {PRE_PHASE_SHA}
|
|
1009
|
+
- Git available: {GIT_AVAILABLE}
|
|
1010
|
+
- Phase directory: {PHASE_DIR}
|
|
1011
|
+
|
|
1012
|
+
## Scope
|
|
1013
|
+
|
|
1014
|
+
- Implement only Phase {PHASE_NUMBER}.
|
|
1015
|
+
- Modify only files required by `plan_V1.md`.
|
|
1016
|
+
- Do not implement future phase work.
|
|
1017
|
+
- Do not rewrite research, plan, or validation artifacts.
|
|
1018
|
+
- Do not run final validation checks.
|
|
1019
|
+
- Do not create `build_validation_report.md`.
|
|
1020
|
+
- Do not create `phase_completion_report.md`.
|
|
1021
|
+
- If you encounter plan/codebase conflicts, preserve evidence in `build_report.md` instead of improvising.
|
|
1022
|
+
|
|
1023
|
+
## Execution Instructions
|
|
1024
|
+
|
|
1025
|
+
- Follow plan tasks in order.
|
|
1026
|
+
- Inspect target files before editing.
|
|
1027
|
+
- Apply minimal changes.
|
|
1028
|
+
- Preserve existing behavior unless the plan says otherwise.
|
|
1029
|
+
- Run small per-task sanity checks only if the plan instructs them or if needed to verify an edit applied.
|
|
1030
|
+
- Record every changed file.
|
|
1031
|
+
- Record every command run.
|
|
1032
|
+
- Record any deviations, conflicts, issues, or blockers.
|
|
1033
|
+
|
|
1034
|
+
## Result States
|
|
1035
|
+
|
|
1036
|
+
Use `result: success` if all planned implementation tasks completed.
|
|
1037
|
+
Use `result: issues` if the build attempt completed or partially completed but Step 5 should examine implementation issues or uncertainties.
|
|
1038
|
+
Use `result: blocked` if implementation could not proceed due to missing files, invalid plan validation, environment, permissions, external dependencies, or major plan/codebase conflict.
|
|
1039
|
+
|
|
1040
|
+
## Output
|
|
1041
|
+
|
|
1042
|
+
Write `{PHASE_DIR}/build_report.md` with YAML frontmatter including:
|
|
1043
|
+
|
|
1044
|
+
- `type: build-report`
|
|
1045
|
+
- `result: success|issues|blocked`
|
|
1046
|
+
- `tasks-completed: X/Y`
|
|
1047
|
+
- `files-changed: N`
|
|
1048
|
+
|
|
1049
|
+
Final response format:
|
|
1050
|
+
SUCCESS: wrote {PHASE_DIR}/build_report.md ({line count} lines) result={success|issues|blocked}
|
|
1051
|
+
|
|
1052
|
+
If you cannot write the artifact, respond:
|
|
1053
|
+
FAILURE: could not write {PHASE_DIR}/build_report.md: {reason}
|
|
1054
|
+
```
|
|
1055
|
+
|
|
1056
|
+
### 4.6 Spawn builder
|
|
1057
|
+
|
|
1058
|
+
Use Pi's sub-agent mechanism to spawn `build-phase-builder`.
|
|
1059
|
+
|
|
1060
|
+
The builder must write its own artifact. Do not write `build_report.md` on the builder's behalf. If the builder returns a report body instead of writing the file, treat that as sub-agent/orchestration failure.
|
|
1061
|
+
|
|
1062
|
+
### 4.7 Verify build report
|
|
1063
|
+
|
|
1064
|
+
After the builder returns, read `{PHASE_DIR}/build_report.md` and verify:
|
|
1065
|
+
|
|
1066
|
+
- YAML frontmatter exists.
|
|
1067
|
+
- Frontmatter contains `type: build-report`.
|
|
1068
|
+
- Frontmatter contains `result: success`, `result: issues`, or `result: blocked`.
|
|
1069
|
+
- Frontmatter contains `tasks-completed:`.
|
|
1070
|
+
- Frontmatter contains `files-changed:`.
|
|
1071
|
+
- Required report sections exist.
|
|
1072
|
+
|
|
1073
|
+
If the report is missing or invalid, stop, leave Step 4 incomplete, and do not create a post-build checkpoint.
|
|
1074
|
+
|
|
1075
|
+
### 4.8 Extract build summary
|
|
1076
|
+
|
|
1077
|
+
Extract from `build_report.md`:
|
|
1078
|
+
|
|
1079
|
+
- `result`
|
|
1080
|
+
- `tasks-completed`
|
|
1081
|
+
- `files-changed`
|
|
1082
|
+
- `## Issues Encountered`
|
|
1083
|
+
- `## Conflicts / Blockers`
|
|
1084
|
+
- `## Deviations From Plan`
|
|
1085
|
+
|
|
1086
|
+
A valid build report means Step 4's artifact contract is satisfied even when `result: issues` or `result: blocked`. Step 5 will interpret the result and validate/fix when implemented.
|
|
1087
|
+
|
|
1088
|
+
### 4.9 Git post-build checkpoint
|
|
1089
|
+
|
|
1090
|
+
If `GIT_AVAILABLE = true`:
|
|
1091
|
+
|
|
1092
|
+
1. Run `git add -A && git commit -m "checkpoint: phase-{PHASE_NUMBER} build complete ({PHASE_NAME_KEBAB})"`.
|
|
1093
|
+
2. If commit fails because there is nothing to commit, warn but continue.
|
|
1094
|
+
3. Run `git rev-parse HEAD` and store as `POST_BUILD_SHA`.
|
|
1095
|
+
4. Record `post-build-sha: {POST_BUILD_SHA}` in `STATE.md`.
|
|
1096
|
+
|
|
1097
|
+
If `GIT_AVAILABLE = false`:
|
|
1098
|
+
|
|
1099
|
+
1. Set `POST_BUILD_SHA = "(git unavailable)"`.
|
|
1100
|
+
2. Record `post-build-sha: (git unavailable)` in `STATE.md`.
|
|
1101
|
+
|
|
1102
|
+
### 4.10 Mark Step 4 complete
|
|
1103
|
+
|
|
1104
|
+
If `build_report.md` is valid, update `STATE.md`:
|
|
1105
|
+
|
|
1106
|
+
```txt
|
|
1107
|
+
Step 4 - Build: [~] -> [x]
|
|
1108
|
+
```
|
|
1109
|
+
|
|
1110
|
+
This applies for `result: success`, `result: issues`, and `result: blocked`, because Step 4's role is implementation attempt plus evidence capture. Step 5 and Step 6 interpret issues/blockers.
|
|
1111
|
+
|
|
1112
|
+
Leave Step 5 pending.
|
|
1113
|
+
|
|
1114
|
+
### 4.11 Present Step 4 summary and continue
|
|
1115
|
+
|
|
1116
|
+
Print:
|
|
1117
|
+
|
|
1118
|
+
```txt
|
|
1119
|
+
BUILD PHASE {N} — BUILD ATTEMPT COMPLETE
|
|
1120
|
+
|
|
1121
|
+
Spec: {SPEC_DIR_BASENAME} ({TASK_NAME})
|
|
1122
|
+
Phase: {N} — {PHASE_NAME}
|
|
1123
|
+
Phase Directory: {PHASE_DIR}
|
|
1124
|
+
|
|
1125
|
+
Artifacts:
|
|
1126
|
+
- explorer_findings.md ({line count} lines)
|
|
1127
|
+
- docs_research.md ({line count} lines | skipped)
|
|
1128
|
+
- plan_V1.md ({line count} lines)
|
|
1129
|
+
- plan_validation_report.md ({line count} lines)
|
|
1130
|
+
- build_report.md ({line count} lines)
|
|
1131
|
+
|
|
1132
|
+
Build:
|
|
1133
|
+
- Result: {success|issues|blocked}
|
|
1134
|
+
- Tasks completed: {X/Y}
|
|
1135
|
+
- Files changed: {N}
|
|
1136
|
+
- Issues: {count or None}
|
|
1137
|
+
- Blockers: {count or None}
|
|
1138
|
+
|
|
1139
|
+
Git:
|
|
1140
|
+
- Pre-phase SHA: {PRE_PHASE_SHA}
|
|
1141
|
+
- Post-build SHA: {POST_BUILD_SHA}
|
|
1142
|
+
|
|
1143
|
+
Step 4 complete. Continuing to Step 5 Validate Build.
|
|
1144
|
+
```
|
|
1145
|
+
|
|
1146
|
+
## Step 5: Validate Build
|
|
1147
|
+
|
|
1148
|
+
Run this step after Step 4 build report verification succeeds, or directly after Step 0 when `RESUME_FROM = 5`.
|
|
1149
|
+
|
|
1150
|
+
Step 5 validates actual built code. It must not trust `plan_V1.md` or `build_report.md` as proof; those artifacts are context only. Step 5 owns the validation/fix-builder loop.
|
|
1151
|
+
|
|
1152
|
+
Initialize:
|
|
1153
|
+
|
|
1154
|
+
```txt
|
|
1155
|
+
BUILD_VALIDATION_CYCLE = 1
|
|
1156
|
+
BUILD_MAX_CYCLES = 3
|
|
1157
|
+
FIX_REPORTS = []
|
|
1158
|
+
```
|
|
1159
|
+
|
|
1160
|
+
### 5.1 Mark Step 5 started
|
|
1161
|
+
|
|
1162
|
+
Using `FOB-state-context`, update the current phase block in `STATE.md`:
|
|
1163
|
+
|
|
1164
|
+
```txt
|
|
1165
|
+
Step 5 - Validate Build: [ ] -> [~]
|
|
1166
|
+
```
|
|
1167
|
+
|
|
1168
|
+
Ensure the parent task and phase are also `[~]` unless already complete.
|
|
1169
|
+
|
|
1170
|
+
### 5.2 Verify inputs and load validation skills
|
|
1171
|
+
|
|
1172
|
+
Required inputs:
|
|
1173
|
+
|
|
1174
|
+
- `{PHASE_DIR}/plan_V1.md`
|
|
1175
|
+
- `{PHASE_DIR}/plan_validation_report.md` with `result: pass`
|
|
1176
|
+
- `{PHASE_DIR}/build_report.md`
|
|
1177
|
+
- `HL_PLAN_PATH`
|
|
1178
|
+
- `.pi/skills/testing-and-validation/SKILL.md`
|
|
1179
|
+
|
|
1180
|
+
Read and follow `.pi/skills/testing-and-validation/SKILL.md`. If browser checks are required, read and follow `.pi/skills/agent-browser/SKILL.md` too.
|
|
1181
|
+
|
|
1182
|
+
If required inputs are missing or invalid, stop and leave Step 5 incomplete.
|
|
1183
|
+
|
|
1184
|
+
### 5.3 Assemble validation checks
|
|
1185
|
+
|
|
1186
|
+
Assemble a final numbered checklist in this order:
|
|
1187
|
+
|
|
1188
|
+
1. **Standard checks from testing-and-validation**
|
|
1189
|
+
- Lint command, if configured/present.
|
|
1190
|
+
- Type Check command, if configured/present.
|
|
1191
|
+
- Build command, if configured/present.
|
|
1192
|
+
- No oversized files introduced.
|
|
1193
|
+
- Do not guess alternate commands. If a configured command is missing, include a BLOCKED check or explain omission.
|
|
1194
|
+
2. **Plan-specific checks**
|
|
1195
|
+
- Extract checklist items from `## Phase {PHASE_NUMBER} Validation` in `plan_V1.md`.
|
|
1196
|
+
- Preserve check text verbatim.
|
|
1197
|
+
3. **Browser console check**
|
|
1198
|
+
- Add `No browser console errors` if any check mentions browser, UI, frontend, page, localhost, login, sign in, sign up, or if the plan has a frontend domain.
|
|
1199
|
+
4. **HL success criteria checks**
|
|
1200
|
+
- Extract Phase {PHASE_NUMBER} success criteria from `HL_PLAN_PATH` verbatim.
|
|
1201
|
+
- Append them as final checks prefixed with `[HL]`.
|
|
1202
|
+
|
|
1203
|
+
Store:
|
|
1204
|
+
|
|
1205
|
+
```txt
|
|
1206
|
+
BUILD_CHECK_COUNT = {total checks}
|
|
1207
|
+
HL_CRITERIA_COUNT = {HL criteria checks}
|
|
1208
|
+
HAS_BROWSER_CHECKS = true|false
|
|
1209
|
+
HAS_MOBILE_CHECKS = true|false
|
|
1210
|
+
```
|
|
1211
|
+
|
|
1212
|
+
### 5.4 Determine browser/dev-server requirements
|
|
1213
|
+
|
|
1214
|
+
If `HAS_BROWSER_CHECKS = true`:
|
|
1215
|
+
|
|
1216
|
+
1. Use `testing-and-validation` Testing URL.
|
|
1217
|
+
2. Use `testing-and-validation` dev server command.
|
|
1218
|
+
3. Use `testing-and-validation` Test Credentials.
|
|
1219
|
+
4. Use `testing-and-validation` Mobile Test Devices.
|
|
1220
|
+
5. Browser automation must use `agent-browser`, never macOS `open`.
|
|
1221
|
+
6. If real credentials are configured, auth-required checks must authenticate and must not be marked BLOCKED merely because login is required.
|
|
1222
|
+
7. If placeholder credentials remain, auth-required checks are BLOCKED.
|
|
1223
|
+
8. If mobile devices are configured, visual/layout browser checks must run at desktop and mobile.
|
|
1224
|
+
|
|
1225
|
+
If `HAS_BROWSER_CHECKS = false`, do not start a dev server.
|
|
1226
|
+
|
|
1227
|
+
### 5.5 Start dev server if needed
|
|
1228
|
+
|
|
1229
|
+
If browser checks are required:
|
|
1230
|
+
|
|
1231
|
+
1. Kill any existing process on the Testing URL port if appropriate.
|
|
1232
|
+
2. Start the dev server command from `testing-and-validation` in the background, for example:
|
|
1233
|
+
|
|
1234
|
+
```bash
|
|
1235
|
+
./scripts/dev.sh > /tmp/dev-server.log 2>&1 &
|
|
1236
|
+
```
|
|
1237
|
+
|
|
1238
|
+
3. Poll the Testing URL for up to 60 seconds.
|
|
1239
|
+
4. If the server does not become ready, warn and continue; the validator will mark browser checks FAIL or BLOCKED with evidence.
|
|
1240
|
+
5. Set `DEV_SERVER_STARTED = true`.
|
|
1241
|
+
|
|
1242
|
+
If browser checks are not required, set `DEV_SERVER_STARTED = false`.
|
|
1243
|
+
|
|
1244
|
+
### 5.6 Prepare build validator prompt
|
|
1245
|
+
|
|
1246
|
+
Prepare a self-contained prompt for `build-phase-build-validator`. Include:
|
|
1247
|
+
|
|
1248
|
+
```markdown
|
|
1249
|
+
You are validating the built code for Phase {PHASE_NUMBER}: {PHASE_NAME} of {TASK_NAME}.
|
|
1250
|
+
|
|
1251
|
+
## Critical Rule
|
|
1252
|
+
Validate actual built code. Do not mark checks PASS based on the plan or build report claims.
|
|
1253
|
+
|
|
1254
|
+
## Artifact Path
|
|
1255
|
+
ARTIFACT_PATH: {PHASE_DIR}/build_validation_report.md
|
|
1256
|
+
|
|
1257
|
+
## Inputs
|
|
1258
|
+
- Plan: {PHASE_DIR}/plan_V1.md
|
|
1259
|
+
- Plan validation report: {PHASE_DIR}/plan_validation_report.md
|
|
1260
|
+
- Build report: {PHASE_DIR}/build_report.md
|
|
1261
|
+
- HL plan: {HL_PLAN_PATH}
|
|
1262
|
+
|
|
1263
|
+
## Testing-and-Validation Configuration
|
|
1264
|
+
{Exact commands, Testing URL, credentials, mobile device settings extracted from testing-and-validation}
|
|
1265
|
+
|
|
1266
|
+
## Browser Instructions
|
|
1267
|
+
{If HAS_BROWSER_CHECKS: include agent-browser contract summary, Testing URL, dev-server status, auth procedure, mobile procedure. If not: "No browser checks in this validation."}
|
|
1268
|
+
|
|
1269
|
+
## Validation Checks ({BUILD_CHECK_COUNT})
|
|
1270
|
+
{Full numbered checklist, including [HL] checks verbatim}
|
|
1271
|
+
|
|
1272
|
+
## Result Rules
|
|
1273
|
+
- PASS: executed and satisfied with evidence.
|
|
1274
|
+
- FAIL: executed and not satisfied; potential code issue.
|
|
1275
|
+
- BLOCKED: could not execute due to external/environment/credential/human-action condition.
|
|
1276
|
+
- If any FAIL exists, overall result is `fail`.
|
|
1277
|
+
- If no FAIL and at least one BLOCKED exists, overall result is `blocked`.
|
|
1278
|
+
- If all PASS, overall result is `pass`.
|
|
1279
|
+
|
|
1280
|
+
## Validation Parameters
|
|
1281
|
+
- task: {TASK_NAME}
|
|
1282
|
+
- phase: {PHASE_NUMBER}
|
|
1283
|
+
- phase-name: {PHASE_NAME}
|
|
1284
|
+
- cycle: {BUILD_VALIDATION_CYCLE}
|
|
1285
|
+
- pre-phase-sha: {PRE_PHASE_SHA}
|
|
1286
|
+
- post-build-sha: {POST_BUILD_SHA}
|
|
1287
|
+
- git-available: {GIT_AVAILABLE}
|
|
1288
|
+
|
|
1289
|
+
## Output
|
|
1290
|
+
Write `{PHASE_DIR}/build_validation_report.md` with frontmatter including:
|
|
1291
|
+
- `type: build-validation-report`
|
|
1292
|
+
- `cycle: {BUILD_VALIDATION_CYCLE}`
|
|
1293
|
+
- `result: pass|fail|blocked`
|
|
1294
|
+
- `checks-passed: X/{BUILD_CHECK_COUNT}`
|
|
1295
|
+
- `checks-blocked: Z/{BUILD_CHECK_COUNT}`
|
|
1296
|
+
|
|
1297
|
+
Final response format:
|
|
1298
|
+
SUCCESS: wrote {PHASE_DIR}/build_validation_report.md ({line count} lines) result={pass|fail|blocked} checks-passed=X/{BUILD_CHECK_COUNT} checks-blocked=Z/{BUILD_CHECK_COUNT}
|
|
1299
|
+
```
|
|
1300
|
+
|
|
1301
|
+
### 5.7 Spawn build validator and read result
|
|
1302
|
+
|
|
1303
|
+
Spawn `build-phase-build-validator`. The validator must write its own artifact; do not write `build_validation_report.md` on its behalf.
|
|
1304
|
+
|
|
1305
|
+
Read `{PHASE_DIR}/build_validation_report.md` and extract:
|
|
1306
|
+
|
|
1307
|
+
- `result`
|
|
1308
|
+
- `checks-passed`
|
|
1309
|
+
- `checks-blocked`
|
|
1310
|
+
- `cycle`
|
|
1311
|
+
|
|
1312
|
+
If the report is missing or invalid, treat as orchestration failure and stop with Step 5 incomplete.
|
|
1313
|
+
|
|
1314
|
+
### 5.8 Handle validation result
|
|
1315
|
+
|
|
1316
|
+
If `result: pass`, continue to Step 5.13 cleanup/complete.
|
|
1317
|
+
|
|
1318
|
+
If `result: blocked`:
|
|
1319
|
+
|
|
1320
|
+
1. Review blocked reasons.
|
|
1321
|
+
2. If any blocked reason mentions authentication/login/credentials and real credentials are configured, treat as validator error; re-run validation without incrementing cycle.
|
|
1322
|
+
3. Otherwise, continue to Step 5.13 cleanup/complete. Genuine BLOCKED checks do not trigger fix-builder.
|
|
1323
|
+
|
|
1324
|
+
If `result: fail`, continue to Step 5.9 fix-builder loop.
|
|
1325
|
+
|
|
1326
|
+
### 5.9 Fix-builder loop
|
|
1327
|
+
|
|
1328
|
+
If validation failed:
|
|
1329
|
+
|
|
1330
|
+
1. Increment `BUILD_VALIDATION_CYCLE`.
|
|
1331
|
+
2. If `BUILD_VALIDATION_CYCLE > BUILD_MAX_CYCLES`, go to Step 5.12 abort.
|
|
1332
|
+
3. Spawn `build-phase-builder` in fix mode with a self-contained prompt.
|
|
1333
|
+
|
|
1334
|
+
Fix-builder prompt must include:
|
|
1335
|
+
|
|
1336
|
+
```markdown
|
|
1337
|
+
You are FIXING build validation failures for Phase {PHASE_NUMBER}: {PHASE_NAME} of {TASK_NAME}.
|
|
1338
|
+
|
|
1339
|
+
## Artifact Path
|
|
1340
|
+
ARTIFACT_PATH: {PHASE_DIR}/fix_report_cycle{BUILD_VALIDATION_CYCLE}.md
|
|
1341
|
+
|
|
1342
|
+
## Inputs
|
|
1343
|
+
- Plan: {PHASE_DIR}/plan_V1.md
|
|
1344
|
+
- Build report: {PHASE_DIR}/build_report.md
|
|
1345
|
+
- Build validation report: {PHASE_DIR}/build_validation_report.md
|
|
1346
|
+
|
|
1347
|
+
## Fix Instructions
|
|
1348
|
+
- Fix every FAIL item under `## Issues Found`.
|
|
1349
|
+
- Ignore BLOCKED checks.
|
|
1350
|
+
- Preserve behavior listed under `## Verified Checks`.
|
|
1351
|
+
- Do not rewrite passing implementation unnecessarily.
|
|
1352
|
+
- Re-run relevant failed checks or targeted sanity commands.
|
|
1353
|
+
- Use testing-and-validation commands; do not guess substitutes.
|
|
1354
|
+
|
|
1355
|
+
## Output
|
|
1356
|
+
Write `{PHASE_DIR}/fix_report_cycle{BUILD_VALIDATION_CYCLE}.md` with `type: fix-report` frontmatter.
|
|
1357
|
+
```
|
|
1358
|
+
|
|
1359
|
+
After the fix-builder returns:
|
|
1360
|
+
|
|
1361
|
+
1. Read and verify the fix report.
|
|
1362
|
+
2. Add it to `FIX_REPORTS`.
|
|
1363
|
+
3. If `GIT_AVAILABLE = true`, commit with:
|
|
1364
|
+
|
|
1365
|
+
```bash
|
|
1366
|
+
git add -A && git commit -m "checkpoint: phase-{PHASE_NUMBER} fix cycle {BUILD_VALIDATION_CYCLE} ({PHASE_NAME_KEBAB})"
|
|
1367
|
+
```
|
|
1368
|
+
|
|
1369
|
+
4. If `DEV_SERVER_STARTED = true`, verify the dev server still responds; restart it if necessary.
|
|
1370
|
+
5. Return to Step 5.6 and re-run validation for the current cycle.
|
|
1371
|
+
|
|
1372
|
+
### 5.10 Re-validation outcomes
|
|
1373
|
+
|
|
1374
|
+
After each re-validation:
|
|
1375
|
+
|
|
1376
|
+
- `pass` -> cleanup/complete.
|
|
1377
|
+
- `blocked` with no FAIL items -> cleanup/complete.
|
|
1378
|
+
- `fail` -> repeat Step 5.9 until max cycles.
|
|
1379
|
+
|
|
1380
|
+
### 5.11 Cleanup dev server
|
|
1381
|
+
|
|
1382
|
+
If `DEV_SERVER_STARTED = true`, clean up the dev server before completing or aborting:
|
|
1383
|
+
|
|
1384
|
+
```bash
|
|
1385
|
+
lsof -ti:3000 | xargs kill -9 2>/dev/null
|
|
1386
|
+
```
|
|
1387
|
+
|
|
1388
|
+
Ignore errors if no process is running.
|
|
1389
|
+
|
|
1390
|
+
### 5.12 Abort after max failures
|
|
1391
|
+
|
|
1392
|
+
If validation still fails after 3 cycles, read the final `build_validation_report.md` and present:
|
|
1393
|
+
|
|
1394
|
+
```txt
|
|
1395
|
+
BUILD VALIDATION FAILED after 3 cycles. Aborting.
|
|
1396
|
+
|
|
1397
|
+
Phase: {PHASE_NUMBER} — {PHASE_NAME}
|
|
1398
|
+
Checks passed: {checks-passed from cycle 3}
|
|
1399
|
+
Checks blocked: {checks-blocked from cycle 3}
|
|
1400
|
+
|
|
1401
|
+
Remaining failures:
|
|
1402
|
+
- {issue summaries from Issues Found}
|
|
1403
|
+
|
|
1404
|
+
Blocked checks:
|
|
1405
|
+
- {blocked summaries from Blocked Checks, if any}
|
|
1406
|
+
|
|
1407
|
+
Validation report: {PHASE_DIR}/build_validation_report.md
|
|
1408
|
+
Fix reports:
|
|
1409
|
+
- {FIX_REPORTS}
|
|
1410
|
+
```
|
|
1411
|
+
|
|
1412
|
+
Clean up the dev server if started. Reset or leave Step 5 as `[ ]` so a future resume reruns validation. Stop before Step 6.
|
|
1413
|
+
|
|
1414
|
+
### 5.13 Mark Step 5 complete
|
|
1415
|
+
|
|
1416
|
+
Only after final result is `pass` or genuine `blocked`, update `STATE.md`:
|
|
1417
|
+
|
|
1418
|
+
```txt
|
|
1419
|
+
Step 5 - Validate Build: [~] -> [x]
|
|
1420
|
+
```
|
|
1421
|
+
|
|
1422
|
+
Leave Step 6 pending.
|
|
1423
|
+
|
|
1424
|
+
If `GIT_AVAILABLE = true` and final result is `pass`, optionally commit final validation artifacts with:
|
|
1425
|
+
|
|
1426
|
+
```bash
|
|
1427
|
+
git add -A && git commit -m "checkpoint: phase-{PHASE_NUMBER} build validated ({PHASE_NAME_KEBAB})"
|
|
1428
|
+
```
|
|
1429
|
+
|
|
1430
|
+
If nothing to commit, skip silently.
|
|
1431
|
+
|
|
1432
|
+
### 5.14 Present Step 5 summary and stop
|
|
1433
|
+
|
|
1434
|
+
Print:
|
|
1435
|
+
|
|
1436
|
+
```txt
|
|
1437
|
+
BUILD PHASE {N} — BUILD VALIDATED
|
|
1438
|
+
|
|
1439
|
+
Spec: {SPEC_DIR_BASENAME} ({TASK_NAME})
|
|
1440
|
+
Phase: {N} — {PHASE_NAME}
|
|
1441
|
+
Phase Directory: {PHASE_DIR}
|
|
1442
|
+
|
|
1443
|
+
Artifacts:
|
|
1444
|
+
- build_report.md ({line count} lines)
|
|
1445
|
+
- build_validation_report.md ({line count} lines)
|
|
1446
|
+
- fix_report_cycle*.md ({count or none})
|
|
1447
|
+
|
|
1448
|
+
Build Validation:
|
|
1449
|
+
- Result: {pass|blocked}
|
|
1450
|
+
- Checks passed: {X/Y}
|
|
1451
|
+
- Checks blocked: {Z/Y}
|
|
1452
|
+
- Cycles: {BUILD_VALIDATION_CYCLE}
|
|
1453
|
+
- Fix cycles: {count}
|
|
1454
|
+
- Browser checks: {yes/no}
|
|
1455
|
+
- Mobile checks: {yes/no}
|
|
1456
|
+
|
|
1457
|
+
Step 5 complete. Workflow intentionally stopped before Step 6 Finalize & Report.
|
|
883
1458
|
```
|
|
884
1459
|
|
|
885
1460
|
## Stop condition
|
|
886
1461
|
|
|
887
|
-
After the Step
|
|
1462
|
+
After the Step 5 summary, stop. Do not create `phase_completion_report.md`.
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: testing-and-validation
|
|
3
|
+
description: >
|
|
4
|
+
Project-specific testing and validation reference. Use when running tests,
|
|
5
|
+
linting, type checking, formatting, building, dev servers, browser checks,
|
|
6
|
+
or build validation. Defines exact scripts, testing URLs, credentials, and
|
|
7
|
+
mobile device settings. Pair with agent-browser for browser/UI validation.
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# Testing & Validation
|
|
11
|
+
|
|
12
|
+
A lightweight, project-specific reference for testing and validation scripts. This skill may ship with placeholders that should be populated when a project is set up.
|
|
13
|
+
|
|
14
|
+
## Core Principle: Use Project Scripts, Don't Guess
|
|
15
|
+
|
|
16
|
+
- Always use the exact scripts defined in this file when they are configured and present.
|
|
17
|
+
- Never assume or guess commands based only on the tech stack.
|
|
18
|
+
- If a placeholder has not been filled in, check `specs/project.md` for the project's scripts or ask the user.
|
|
19
|
+
- If a configured command is missing in the current project, report it as BLOCKED or a project setup issue rather than substituting an ungrounded command.
|
|
20
|
+
|
|
21
|
+
## Project Scripts
|
|
22
|
+
|
|
23
|
+
| Category | Command | Notes |
|
|
24
|
+
|----------|---------|-------|
|
|
25
|
+
| Run All Dev Servers | `./scripts/dev.sh` | Starts all development servers in parallel |
|
|
26
|
+
| Run Frontend | `./scripts/dev-frontend.sh` | Starts the frontend dev server only |
|
|
27
|
+
| Run Backend | `./scripts/dev-backend.sh` | Starts the backend dev server only |
|
|
28
|
+
| Lint | `./scripts/lint.sh` | Runs linting across the project |
|
|
29
|
+
| Type Check | `./scripts/typecheck.sh` | Runs TypeScript type checking |
|
|
30
|
+
| Format | `./scripts/format.sh` | Runs code formatting |
|
|
31
|
+
| Build | `./scripts/build.sh` | Production build |
|
|
32
|
+
| Docker Build | `./scripts/docker-build.sh` | Build Docker image |
|
|
33
|
+
| Docker Run | `./scripts/docker-run.sh` | Run Docker container locally |
|
|
34
|
+
|
|
35
|
+
## Testing Configuration
|
|
36
|
+
|
|
37
|
+
| Setting | Value |
|
|
38
|
+
|---------|-------|
|
|
39
|
+
| Testing URL | `http://localhost:3000` |
|
|
40
|
+
| Backend URL | Convex cloud (see NEXT_PUBLIC_CONVEX_URL in .env.local) |
|
|
41
|
+
| Test Runner | Not configured |
|
|
42
|
+
| Test Command | Not configured |
|
|
43
|
+
| E2E Test Command | Not configured |
|
|
44
|
+
|
|
45
|
+
## Test Credentials
|
|
46
|
+
|
|
47
|
+
Credentials for automated browser-based authentication. Validator agents use these credentials before browser checks that require a logged-in session.
|
|
48
|
+
|
|
49
|
+
| Setting | Value |
|
|
50
|
+
|---------|-------|
|
|
51
|
+
| Login URL | `http://localhost:3000/login` |
|
|
52
|
+
| Username | `REPLACE_WITH_TEST_USERNAME` |
|
|
53
|
+
| Password | `REPLACE_WITH_TEST_PASSWORD` |
|
|
54
|
+
| Post-Login URL | `http://localhost:3000/dashboard` |
|
|
55
|
+
|
|
56
|
+
Setup instructions:
|
|
57
|
+
|
|
58
|
+
1. Replace placeholder username/password with valid test account credentials.
|
|
59
|
+
2. The Login URL is the page where the login form is rendered.
|
|
60
|
+
3. The Post-Login URL is the page the browser should land on after successful login.
|
|
61
|
+
4. If the app does not require authentication, set Username to `NONE`.
|
|
62
|
+
5. If placeholders remain, browser checks requiring authentication must be marked BLOCKED with a clear reason.
|
|
63
|
+
|
|
64
|
+
## Mobile Test Devices
|
|
65
|
+
|
|
66
|
+
Device configurations for mobile viewport testing via browser automation.
|
|
67
|
+
|
|
68
|
+
| Setting | Value |
|
|
69
|
+
|---------|-------|
|
|
70
|
+
| Primary Device | `iPhone 12 Pro` |
|
|
71
|
+
| Secondary Device | `NONE` |
|
|
72
|
+
|
|
73
|
+
Setup instructions:
|
|
74
|
+
|
|
75
|
+
1. The Primary Device is the Chrome DevTools device name used for mobile viewport checks.
|
|
76
|
+
2. The Secondary Device is optional. Set to `NONE` to skip.
|
|
77
|
+
3. Device emulation is set via `agent-browser set device "{device name}"`.
|
|
78
|
+
4. Reset to desktop after mobile checks with `agent-browser set viewport 1920 1080`.
|
|
79
|
+
5. If the app does not need mobile testing, set Primary Device to `NONE`.
|
|
80
|
+
|
|
81
|
+
## Front-End Testing
|
|
82
|
+
|
|
83
|
+
For visual and interactive front-end testing, use the `agent-browser` skill.
|
|
84
|
+
|
|
85
|
+
Agents that need browser-based testing should follow both:
|
|
86
|
+
|
|
87
|
+
- `testing-and-validation` for WHAT to run and WHERE to test.
|
|
88
|
+
- `agent-browser` for HOW to drive the browser.
|
|
89
|
+
|
|
90
|
+
Browser-based validation should use the Testing URL from this skill. Never use macOS `open` for URLs; browser automation must go through `agent-browser open`.
|
|
91
|
+
|
|
92
|
+
## For Agents Consuming This Skill
|
|
93
|
+
|
|
94
|
+
1. Use the exact configured commands. Do not improvise substitutes from memory.
|
|
95
|
+
2. Verify command files exist before running them. If a command is configured but missing, report it clearly.
|
|
96
|
+
3. Run validation commands after code changes when appropriate.
|
|
97
|
+
4. Use the Testing URL for browser validation and HTTP readiness checks.
|
|
98
|
+
5. For auth-required browser checks:
|
|
99
|
+
- If real credentials are configured, authenticate with `agent-browser` and do not mark auth as BLOCKED just because login is required.
|
|
100
|
+
- If Username is `NONE`, skip authentication.
|
|
101
|
+
- If Username is `REPLACE_WITH_TEST_USERNAME`, mark auth-required checks BLOCKED.
|
|
102
|
+
6. For mobile checks, use the configured device(s) and report desktop/mobile results separately.
|
|
103
|
+
7. Treat BLOCKED as environmental/external/human-action only. Code defects should be FAIL, not BLOCKED.
|
package/manifest.json
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"version": "1.9.
|
|
2
|
+
"version": "1.9.6",
|
|
3
3
|
"presets": {
|
|
4
4
|
"coding": {
|
|
5
5
|
"description": "Research-driven coding workflow",
|
|
@@ -85,14 +85,17 @@
|
|
|
85
85
|
"target": "pi",
|
|
86
86
|
"skills": [
|
|
87
87
|
"agent-browser",
|
|
88
|
-
"FOB-state-context"
|
|
88
|
+
"FOB-state-context",
|
|
89
|
+
"testing-and-validation"
|
|
89
90
|
],
|
|
90
91
|
"agents": [
|
|
91
92
|
"codebase-explorer",
|
|
92
93
|
"build-phase-explorer",
|
|
93
94
|
"build-phase-docs-researcher",
|
|
94
95
|
"build-phase-architect",
|
|
95
|
-
"build-phase-plan-validator"
|
|
96
|
+
"build-phase-plan-validator",
|
|
97
|
+
"build-phase-builder",
|
|
98
|
+
"build-phase-build-validator"
|
|
96
99
|
],
|
|
97
100
|
"prompts": [
|
|
98
101
|
"explore-codebase",
|