persona-harness 0.3.1-alpha.2 → 0.3.2-alpha.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +25 -0
- package/README.ko.md +2 -1
- package/README.md +3 -3
- package/dist/cli/index.js +2 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/plan-command.js +2 -2
- package/dist/cli/plan-command.js.map +1 -1
- package/dist/cli/plan-next.js +3 -3
- package/dist/cli/plan-next.js.map +1 -1
- package/dist/cli/plan-prompts.js +2 -2
- package/dist/cli/plan-prompts.js.map +1 -1
- package/dist/cli/workflow-command.js +20 -98
- package/dist/cli/workflow-command.js.map +1 -1
- package/dist/cli/workflow-output.d.ts +10 -0
- package/dist/cli/workflow-output.js +142 -0
- package/dist/cli/workflow-output.js.map +1 -0
- package/dist/cli/workflow-status.d.ts +3 -0
- package/dist/cli/workflow-status.js +76 -5
- package/dist/cli/workflow-status.js.map +1 -1
- package/dist/phase0/injection.js +2 -2
- package/dist/phase0/injection.js.map +1 -1
- package/docs/current/release/README.md +2 -0
- package/docs/current/release/next-version-readiness.md +58 -65
- package/docs/current/release/v0.3.2-alpha.0-release-notes.md +104 -0
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -12,6 +12,31 @@ This project uses npm prerelease versions for tester-facing alpha builds. During
|
|
|
12
12
|
|
|
13
13
|
### Known Gaps
|
|
14
14
|
|
|
15
|
+
## [0.3.2-alpha.0] - 2026-06-22
|
|
16
|
+
|
|
17
|
+
### Added
|
|
18
|
+
|
|
19
|
+
- Added `ph workflow implement` as the single AI-facing implementation rail for short TUI requests such as `README.md 보고 구현해줘`.
|
|
20
|
+
- Added README chunk-read guidance to the implementation rail, using `npx ph bearshell --shell 'wc -l README.md'` and 220-line `sed -n` ranges.
|
|
21
|
+
- Added README read coverage workflow diagnostics so filled implementation reports must record `README ranges read` when `README.md` exists.
|
|
22
|
+
- Added `src/cli/workflow-output.ts` to keep workflow command orchestration separate from long AI-facing rail output.
|
|
23
|
+
|
|
24
|
+
### Changed
|
|
25
|
+
|
|
26
|
+
- Updated injection, plan prompts, next/resume output, and README guidance to prefer `npx ph workflow implement` over the older two-step `workflow start implement` plus `plan --implement` path.
|
|
27
|
+
- Kept `ph workflow start implement` and `ph plan --implement` available as lower-level compatibility surfaces.
|
|
28
|
+
- Kept direct `.persona/rules` reads as non-blocking workflow notes, while raw final verification remains blocking.
|
|
29
|
+
|
|
30
|
+
### Fixed
|
|
31
|
+
|
|
32
|
+
- `ph workflow finish implement` now fails when `README.md` exists but README range coverage is empty, preventing agents from reporting completion after only a partial README read.
|
|
33
|
+
|
|
34
|
+
### Known Gaps
|
|
35
|
+
|
|
36
|
+
- The read coverage gate verifies recorded ranges, not semantic understanding of the README.
|
|
37
|
+
- This release still does not certify generated application product quality.
|
|
38
|
+
- Full TDD workflow, frontend, infra, desktop, and AST/linter enforcement remain future tracks.
|
|
39
|
+
|
|
15
40
|
## [0.3.1-alpha.2] - 2026-06-22
|
|
16
41
|
|
|
17
42
|
### Added
|
package/README.ko.md
CHANGED
|
@@ -6,7 +6,7 @@ OpenCode를 위한 Java/Spring backend Clean Code workflow pilot.
|
|
|
6
6
|
|
|
7
7
|
Persona Harness는 에이전트가 빈 프로젝트에서 시작해 backend 맥락을 묻고, 구현 전 architecture plan을 남긴 뒤, 더 균일한 Java/Spring 구조로 코드를 만들도록 돕습니다.
|
|
8
8
|
|
|
9
|
-
`ph` 명령어는 주로 AI가 쓰는 workflow surface입니다. 사용자는 설치와 초기화만 해두고, OpenCode나 Codex-style TUI에서 “README 보고 구현해줘”처럼 자연어로 요청하는 흐름을 목표로 합니다. 이후 `ph workflow
|
|
9
|
+
`ph` 명령어는 주로 AI가 쓰는 workflow surface입니다. 사용자는 설치와 초기화만 해두고, OpenCode나 Codex-style TUI에서 “README 보고 구현해줘”처럼 자연어로 요청하는 흐름을 목표로 합니다. 이후 `ph workflow implement`, `ph bearshell`, report-fill, `ph workflow finish implement` 명령은 에이전트가 실행해야 합니다.
|
|
10
10
|
|
|
11
11
|
> 현재 범위: Java/Spring backend MVP.
|
|
12
12
|
> frontend, infra, desktop app, AST/linter enforcement, 완전한 TDD workflow는 후속 트랙입니다.
|
|
@@ -112,6 +112,7 @@ opencode run --dir . --model <model> --dangerously-skip-permissions \
|
|
|
112
112
|
- `ph bearshell`: bounded shell command helper
|
|
113
113
|
- `ph history`: 사용한 workflow artifact를 `.persona/workflow/history/`에 보존
|
|
114
114
|
- `ph workflow check`: 현재 plan/report/evidence 상태 확인
|
|
115
|
+
- `ph workflow implement`: accepted plan workflow 상태가 준비된 뒤 AI용 단일 구현 레일과 README chunk-read 명령 출력
|
|
115
116
|
- `ph workflow start implement`: accepted plan workflow 상태가 준비된 뒤 AI용 구현 레일 출력
|
|
116
117
|
- `ph workflow finish implement`: workflow report/evidence가 준비되기 전 완료 보고 차단
|
|
117
118
|
- `ph workflow guard implement/final`: workflow rail이 재사용하는 저수준 strict gate
|
package/README.md
CHANGED
|
@@ -195,8 +195,7 @@ README.md 보고 구현해줘
|
|
|
195
195
|
The agent should run or follow these workflow commands by itself:
|
|
196
196
|
|
|
197
197
|
```text
|
|
198
|
-
npx ph workflow
|
|
199
|
-
npx ph plan --implement
|
|
198
|
+
npx ph workflow implement
|
|
200
199
|
npx ph bearshell ...
|
|
201
200
|
npx ph plan --report-filled implementation
|
|
202
201
|
npx ph plan --report-filled review
|
|
@@ -208,7 +207,7 @@ If the agent ignores the workflow, paste this stricter prompt:
|
|
|
208
207
|
```text
|
|
209
208
|
README.md, .persona/project-profile.jsonc, .persona/policies, .persona/workflow/plan.md를 읽고 plan이 accepted 상태인지 확인한 뒤 Java/Spring Gradle 기반으로 요구사항 전체를 구현해줘.
|
|
210
209
|
|
|
211
|
-
구현 전 `npx ph workflow
|
|
210
|
+
구현 전 `npx ph workflow implement`를 실행하고, README.md는 해당 출력의 bearshell chunk-read 방식으로 끝까지 읽어줘.
|
|
212
211
|
명령 실행은 가능하면 `npx ph bearshell`로 해줘.
|
|
213
212
|
구현 후 `npx ph bearshell --shell 'gradle test'`, `npx ph bearshell --shell 'gradle build'`를 실행해줘.
|
|
214
213
|
실행 가능한 Spring Boot 앱이면 bootRun과 HTTP happy/failure smoke도 확인해줘.
|
|
@@ -261,6 +260,7 @@ These commands are intentionally visible so AI agents can call them from OpenCod
|
|
|
261
260
|
- `ph plan --implement`: checks that implementation may start and prints the implementation rail.
|
|
262
261
|
- `ph bearshell`: runs timeout-bounded and output-bounded shell commands.
|
|
263
262
|
- `ph workflow check`: reports plan/report/evidence status.
|
|
263
|
+
- `ph workflow implement`: prints the single AI-facing implementation rail, including README chunk-read commands.
|
|
264
264
|
- `ph workflow start implement`: prints the AI-facing implementation workflow.
|
|
265
265
|
- `ph workflow finish implement`: checks whether the workflow can be reported complete.
|
|
266
266
|
- `ph doctor`: diagnoses OpenCode and Persona Harness integration.
|
package/dist/cli/index.js
CHANGED
|
@@ -79,6 +79,7 @@ function personaCliUsage(invocationName) {
|
|
|
79
79
|
" language Show supported user languages for intake and workflow prompts.",
|
|
80
80
|
" bearshell <command> [args...] Run a bounded command helper for repo inspection and smoke tests.",
|
|
81
81
|
" workflow check Report plan/report/evidence workflow status.",
|
|
82
|
+
" workflow implement Print the single AI-facing implementation rail.",
|
|
82
83
|
" workflow start implement Print the AI-facing implementation workflow rail.",
|
|
83
84
|
" workflow finish implement Block final answer until implementation workflow evidence is complete.",
|
|
84
85
|
" workflow guard implement Block implementation until plan workflow state is ready.",
|
|
@@ -98,6 +99,7 @@ function personaCliUsage(invocationName) {
|
|
|
98
99
|
` ${invocationName} history --id run-001`,
|
|
99
100
|
` ${invocationName} bearshell npm test`,
|
|
100
101
|
` ${invocationName} workflow check`,
|
|
102
|
+
` ${invocationName} workflow implement`,
|
|
101
103
|
` ${invocationName} workflow start implement`,
|
|
102
104
|
` ${invocationName} workflow finish implement`,
|
|
103
105
|
` ${invocationName} workflow guard implement`,
|
package/dist/cli/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/plan-command.js
CHANGED
|
@@ -124,7 +124,7 @@ function implementationGateOutput(planPath, status) {
|
|
|
124
124
|
`- ${REVIEW_REPORT_PATH}`,
|
|
125
125
|
"",
|
|
126
126
|
"Required workflow commands:",
|
|
127
|
-
"- Before implementation, run `npx ph workflow
|
|
127
|
+
"- Before implementation, run `npx ph workflow implement` for the single AI-facing implementation rail.",
|
|
128
128
|
"- Run shell verification through `npx ph bearshell` when possible.",
|
|
129
129
|
"- After implementation, fill the implementation report and run `npx ph plan --report-filled implementation`.",
|
|
130
130
|
"- Before final answer, fill the review report after manual QA, run `npx ph plan --report-filled review`, then run `npx ph workflow finish implement`.",
|
|
@@ -140,7 +140,7 @@ function runImplementationGate(options) {
|
|
|
140
140
|
"Workflow plan is not accepted.",
|
|
141
141
|
`Current status: ${result.status}`,
|
|
142
142
|
"Run npx ph plan --accept after review, or npx ph plan --revise if the plan needs changes.",
|
|
143
|
-
"For a short TUI request like '그냥 플랜보고 구현해줘', run npx ph
|
|
143
|
+
"For a short TUI request like '그냥 플랜보고 구현해줘', run npx ph workflow implement after acceptance.",
|
|
144
144
|
].join("\n"));
|
|
145
145
|
}
|
|
146
146
|
const missingArtifacts = missingWorkflowArtifacts(options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-command.js","sourceRoot":"","sources":["../../src/cli/plan-command.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"plan-command.js","sourceRoot":"","sources":["../../src/cli/plan-command.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/plan-next.js
CHANGED
|
@@ -79,7 +79,7 @@ function nextActionLines(snapshot) {
|
|
|
79
79
|
return ["Workflow report template is missing.", "Restore templates with npx ph plan --force after preserving existing plan content."];
|
|
80
80
|
}
|
|
81
81
|
if (snapshot.implementationStatus !== "filled") {
|
|
82
|
-
return ["Implementation is next.", "Next command: npx ph
|
|
82
|
+
return ["Implementation is next.", "Next command: npx ph workflow implement"];
|
|
83
83
|
}
|
|
84
84
|
if (snapshot.reviewStatus !== "filled") {
|
|
85
85
|
return [
|
|
@@ -154,8 +154,8 @@ function resumePrompt(snapshot, reportText) {
|
|
|
154
154
|
"- Fill .persona/workflow/implementation-report.md with actual Read Coverage and Continuation evidence.",
|
|
155
155
|
"- When implementation is complete, run npx ph plan --report-filled implementation.",
|
|
156
156
|
"",
|
|
157
|
-
"Fallback implementation
|
|
158
|
-
"npx ph
|
|
157
|
+
"Fallback implementation rail:",
|
|
158
|
+
"npx ph workflow implement",
|
|
159
159
|
"",
|
|
160
160
|
"Implementation prompt:",
|
|
161
161
|
createImplementationPrompt(),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-next.js","sourceRoot":"","sources":["../../src/cli/plan-next.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"plan-next.js","sourceRoot":"","sources":["../../src/cli/plan-next.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/plan-prompts.js
CHANGED
|
@@ -13,7 +13,7 @@ export function createPlanOnlyPrompt() {
|
|
|
13
13
|
"",
|
|
14
14
|
"계획이 불확실하면 구현하지 말고 질문이나 가정을 .persona/workflow/plan.md에 명확히 남겨줘.",
|
|
15
15
|
"",
|
|
16
|
-
"만약 사용자가 '플랜 보고 구현해줘', '계획대로 해줘', 'README 보고 구현해줘', '이제 구현해줘'처럼 짧은 구현 지시를 하면 바로 구현하지 말고 `npx ph workflow
|
|
16
|
+
"만약 사용자가 '플랜 보고 구현해줘', '계획대로 해줘', 'README 보고 구현해줘', '이제 구현해줘'처럼 짧은 구현 지시를 하면 바로 구현하지 말고 `npx ph workflow implement`를 먼저 실행해줘.",
|
|
17
17
|
"",
|
|
18
18
|
"명령 실행이 필요하면 `npx ph bearshell`을 우선 사용하고, Persona Harness CLI는 글로벌 `ph`가 아니라 `npx ph`로 실행해줘.",
|
|
19
19
|
].join("\n");
|
|
@@ -22,7 +22,7 @@ export function createImplementationPrompt() {
|
|
|
22
22
|
return [
|
|
23
23
|
"사용자가 `README.md 보고 구현해줘`, `플랜 보고 구현해줘`, `그냥 구현해줘`처럼 짧게 말해도 이 구현 workflow를 생략하지 마.",
|
|
24
24
|
"",
|
|
25
|
-
"구현을 시작하기 전에 `npx ph workflow
|
|
25
|
+
"구현을 시작하기 전에 `npx ph workflow implement`를 먼저 실행하고, 그 단일 레일에 따라 README.md, .persona/project-profile.jsonc, .persona/policies, .persona/workflow/plan.md를 읽은 뒤 accepted plan 기준으로 구현해줘.",
|
|
26
26
|
"",
|
|
27
27
|
"node_modules, .opencode, .persona/rules, .persona/evidence 경로는 읽지 마. package/vendor/setup 문서를 구현 컨텍스트로 읽지 마.",
|
|
28
28
|
".persona/rules를 직접 열어 규칙 원문을 읽지 마. 필요한 규칙은 Persona Harness injection summary와 accepted plan에 이미 요약된다.",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plan-prompts.js","sourceRoot":"","sources":["../../src/cli/plan-prompts.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,oBAAoB;IAClC,OAAO;QACL,yIAAyI;QACzI,EAAE;QACF,8GAA8G;QAC9G,uGAAuG;QACvG,EAAE;QACF,4HAA4H;QAC5H,EAAE;QACF,6LAA6L;QAC7L,EAAE;QACF,gJAAgJ;QAChJ,EAAE;QACF,gEAAgE;QAChE,EAAE;QACF,
|
|
1
|
+
{"version":3,"file":"plan-prompts.js","sourceRoot":"","sources":["../../src/cli/plan-prompts.ts"],"names":[],"mappings":"AAAA,MAAM,UAAU,oBAAoB;IAClC,OAAO;QACL,yIAAyI;QACzI,EAAE;QACF,8GAA8G;QAC9G,uGAAuG;QACvG,EAAE;QACF,4HAA4H;QAC5H,EAAE;QACF,6LAA6L;QAC7L,EAAE;QACF,gJAAgJ;QAChJ,EAAE;QACF,gEAAgE;QAChE,EAAE;QACF,8HAA8H;QAC9H,EAAE;QACF,6FAA6F;KAC9F,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,MAAM,UAAU,0BAA0B;IACxC,OAAO;QACL,mFAAmF;QACnF,EAAE;QACF,sLAAsL;QACtL,EAAE;QACF,8GAA8G;QAC9G,uGAAuG;QACvG,EAAE;QACF,6IAA6I;QAC7I,EAAE;QACF,6LAA6L;QAC7L,2JAA2J;QAC3J,EAAE;QACF,oGAAoG;QACpG,gLAAgL;QAChL,EAAE;QACF,0GAA0G;QAC1G,EAAE;QACF,mIAAmI;QACnI,EAAE;QACF,iMAAiM;QACjM,EAAE;QACF,6FAA6F;KAC9F,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC"}
|
|
@@ -1,12 +1,14 @@
|
|
|
1
|
+
import { failedGuardOutput, failedRunnerOutput, passedFinishOutput, passedGuardOutput, passedImplementOutput, passedStartOutput, } from "./workflow-output.js";
|
|
1
2
|
import { formatWorkflowStatus, readWorkflowStatus } from "./workflow-status.js";
|
|
2
3
|
export function workflowUsage(invocation = "ph") {
|
|
3
4
|
return [
|
|
4
|
-
`Usage: ${invocation} workflow <check|start implement|finish implement|guard implement|guard final>`,
|
|
5
|
+
`Usage: ${invocation} workflow <check|implement|start implement|finish implement|guard implement|guard final>`,
|
|
5
6
|
"",
|
|
6
7
|
"Checks or guards Persona Harness workflow artifacts before or after implementation.",
|
|
7
8
|
"",
|
|
8
9
|
"Scope:",
|
|
9
10
|
"- workflow check is report-only",
|
|
11
|
+
"- workflow implement prints a single AI-facing implementation rail",
|
|
10
12
|
"- workflow start/finish are AI-facing workflow rails",
|
|
11
13
|
"- workflow guard uses strict exit codes for AI-facing workflow discipline",
|
|
12
14
|
"- no generated app quality certification",
|
|
@@ -16,6 +18,9 @@ function parseWorkflowArgs(args) {
|
|
|
16
18
|
if (args.length === 0 || args[0] === "check") {
|
|
17
19
|
return args.length <= 1 ? { kind: "check" } : { kind: "invalid", message: "workflow check does not accept extra arguments." };
|
|
18
20
|
}
|
|
21
|
+
if (args[0] === "implement") {
|
|
22
|
+
return args.length === 1 ? { kind: "implement" } : { kind: "invalid", message: "workflow implement does not accept extra arguments." };
|
|
23
|
+
}
|
|
19
24
|
if (args[0] === "guard") {
|
|
20
25
|
if (args.length !== 2) {
|
|
21
26
|
return { kind: "invalid", message: "workflow guard requires implement or final." };
|
|
@@ -48,103 +53,6 @@ function parseWorkflowArgs(args) {
|
|
|
48
53
|
}
|
|
49
54
|
return { kind: "invalid", message: `Unknown workflow command: ${args[0]}` };
|
|
50
55
|
}
|
|
51
|
-
function failedGuardOutput(guardKind, reasons) {
|
|
52
|
-
return {
|
|
53
|
-
status: 1,
|
|
54
|
-
stdout: "",
|
|
55
|
-
stderr: [
|
|
56
|
-
`Workflow guard failed: ${guardKind}`,
|
|
57
|
-
"",
|
|
58
|
-
"Required fixes:",
|
|
59
|
-
...reasons.map((reason) => `- ${reason}`),
|
|
60
|
-
"",
|
|
61
|
-
"This is a workflow-state gate only. It does not certify generated app product quality.",
|
|
62
|
-
].join("\n") + "\n",
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
function failedRunnerOutput(action, runnerKind, reasons) {
|
|
66
|
-
return {
|
|
67
|
-
status: 1,
|
|
68
|
-
stdout: "",
|
|
69
|
-
stderr: [
|
|
70
|
-
`Workflow ${action} failed: ${runnerKind}`,
|
|
71
|
-
"",
|
|
72
|
-
"Required fixes:",
|
|
73
|
-
...reasons.map((reason) => `- ${reason}`),
|
|
74
|
-
"",
|
|
75
|
-
"This is an AI-facing workflow rail only. It does not certify generated app product quality.",
|
|
76
|
-
].join("\n") + "\n",
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
function passedStartOutput(runnerKind) {
|
|
80
|
-
return {
|
|
81
|
-
status: 0,
|
|
82
|
-
stdout: [
|
|
83
|
-
`Persona Harness Workflow Start: ${runnerKind}`,
|
|
84
|
-
"",
|
|
85
|
-
"Start status: PASS",
|
|
86
|
-
"",
|
|
87
|
-
"Short TUI request detected:",
|
|
88
|
-
"- If the user said `README.md 보고 구현해줘`, `플랜 보고 구현해줘`, or another short implementation request, treat this output as the required workflow rail.",
|
|
89
|
-
"",
|
|
90
|
-
"Run this implementation rail now:",
|
|
91
|
-
"1. `npx ph plan --implement`",
|
|
92
|
-
"2. Read `README.md`, `.persona/project-profile.jsonc`, `.persona/policies`, and `.persona/workflow/plan.md`.",
|
|
93
|
-
"3. Use codegraph MCP before raw file reads for code structure analysis when available.",
|
|
94
|
-
"4. Implement from the accepted plan.",
|
|
95
|
-
"5. Use `npx ph bearshell` for shell verification.",
|
|
96
|
-
"6. Fill `.persona/workflow/implementation-report.md`.",
|
|
97
|
-
"7. Run `npx ph plan --report-filled implementation`.",
|
|
98
|
-
"8. Fill `.persona/workflow/review-report.md` after review/manual QA.",
|
|
99
|
-
"9. Run `npx ph plan --report-filled review`.",
|
|
100
|
-
"10. Run `npx ph workflow finish implement`.",
|
|
101
|
-
"11. Do not give the final answer until `npx ph workflow finish implement` passes.",
|
|
102
|
-
"",
|
|
103
|
-
"Scope:",
|
|
104
|
-
"- AI-facing workflow rail",
|
|
105
|
-
"- no generated app product-quality certification",
|
|
106
|
-
].join("\n") + "\n",
|
|
107
|
-
stderr: "",
|
|
108
|
-
};
|
|
109
|
-
}
|
|
110
|
-
function passedFinishOutput(runnerKind) {
|
|
111
|
-
return {
|
|
112
|
-
status: 0,
|
|
113
|
-
stdout: [
|
|
114
|
-
`Persona Harness Workflow Finish: ${runnerKind}`,
|
|
115
|
-
"",
|
|
116
|
-
"Finish status: PASS",
|
|
117
|
-
"Workflow evidence is complete; final answer may be reported.",
|
|
118
|
-
"",
|
|
119
|
-
"Next:",
|
|
120
|
-
"- `npx ph history --id <run-id>` when this workflow should be archived.",
|
|
121
|
-
"",
|
|
122
|
-
"Scope:",
|
|
123
|
-
"- AI-facing workflow rail",
|
|
124
|
-
"- no generated app product-quality certification",
|
|
125
|
-
].join("\n") + "\n",
|
|
126
|
-
stderr: "",
|
|
127
|
-
};
|
|
128
|
-
}
|
|
129
|
-
function passedGuardOutput(guardKind) {
|
|
130
|
-
const nextLine = guardKind === "implement"
|
|
131
|
-
? "Implementation may start. Run `npx ph plan --implement`, then implement from the accepted plan."
|
|
132
|
-
: "Workflow evidence is complete; final answer may be reported.";
|
|
133
|
-
return {
|
|
134
|
-
status: 0,
|
|
135
|
-
stdout: [
|
|
136
|
-
`Persona Harness Workflow Guard: ${guardKind}`,
|
|
137
|
-
"",
|
|
138
|
-
"Guard status: PASS",
|
|
139
|
-
nextLine,
|
|
140
|
-
"",
|
|
141
|
-
"Scope:",
|
|
142
|
-
"- AI-facing workflow discipline gate",
|
|
143
|
-
"- no generated app product-quality certification",
|
|
144
|
-
].join("\n") + "\n",
|
|
145
|
-
stderr: "",
|
|
146
|
-
};
|
|
147
|
-
}
|
|
148
56
|
function implementationGuardReasons(summary) {
|
|
149
57
|
const reasons = [];
|
|
150
58
|
if (summary.plan !== "accepted") {
|
|
@@ -175,6 +83,9 @@ function finalGuardReasons(summary) {
|
|
|
175
83
|
if (summary.commandDisciplineBlocking) {
|
|
176
84
|
reasons.push(summary.commandDiscipline);
|
|
177
85
|
}
|
|
86
|
+
if (summary.readCoverageBlocking) {
|
|
87
|
+
reasons.push("README ranges read must be recorded in .persona/workflow/implementation-report.md");
|
|
88
|
+
}
|
|
178
89
|
return reasons;
|
|
179
90
|
}
|
|
180
91
|
function runWorkflowGuard(guardKind, options) {
|
|
@@ -193,6 +104,14 @@ function runWorkflowStart(runnerKind, options) {
|
|
|
193
104
|
}
|
|
194
105
|
return passedStartOutput(runnerKind);
|
|
195
106
|
}
|
|
107
|
+
function runWorkflowImplement(options) {
|
|
108
|
+
const summary = readWorkflowStatus(options.projectDir);
|
|
109
|
+
const reasons = implementationGuardReasons(summary);
|
|
110
|
+
if (reasons.length > 0) {
|
|
111
|
+
return failedRunnerOutput("implement", "implement", reasons);
|
|
112
|
+
}
|
|
113
|
+
return passedImplementOutput();
|
|
114
|
+
}
|
|
196
115
|
function runWorkflowFinish(runnerKind, options) {
|
|
197
116
|
const summary = readWorkflowStatus(options.projectDir);
|
|
198
117
|
const reasons = finalGuardReasons(summary);
|
|
@@ -212,6 +131,9 @@ export function runWorkflowCommand(args, options = {}, invocationName = "ph") {
|
|
|
212
131
|
if (parsed.kind === "guard") {
|
|
213
132
|
return runWorkflowGuard(parsed.guardKind, options);
|
|
214
133
|
}
|
|
134
|
+
if (parsed.kind === "implement") {
|
|
135
|
+
return runWorkflowImplement(options);
|
|
136
|
+
}
|
|
215
137
|
if (parsed.kind === "start") {
|
|
216
138
|
return runWorkflowStart(parsed.runnerKind, options);
|
|
217
139
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-command.js","sourceRoot":"","sources":["../../src/cli/workflow-command.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;
|
|
1
|
+
{"version":3,"file":"workflow-command.js","sourceRoot":"","sources":["../../src/cli/workflow-command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { CliRunResult } from "./bearshell.js";
|
|
2
|
+
export type WorkflowGuardKind = "implement" | "final";
|
|
3
|
+
export type WorkflowRunnerKind = "implement";
|
|
4
|
+
export type WorkflowRunnerAction = "implement" | "start" | "finish";
|
|
5
|
+
export declare function failedGuardOutput(guardKind: WorkflowGuardKind, reasons: readonly string[]): CliRunResult;
|
|
6
|
+
export declare function failedRunnerOutput(action: WorkflowRunnerAction, runnerKind: WorkflowRunnerKind, reasons: readonly string[]): CliRunResult;
|
|
7
|
+
export declare function passedStartOutput(runnerKind: WorkflowRunnerKind): CliRunResult;
|
|
8
|
+
export declare function passedImplementOutput(): CliRunResult;
|
|
9
|
+
export declare function passedFinishOutput(runnerKind: WorkflowRunnerKind): CliRunResult;
|
|
10
|
+
export declare function passedGuardOutput(guardKind: WorkflowGuardKind): CliRunResult;
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
export function failedGuardOutput(guardKind, reasons) {
|
|
2
|
+
return {
|
|
3
|
+
status: 1,
|
|
4
|
+
stdout: "",
|
|
5
|
+
stderr: [
|
|
6
|
+
`Workflow guard failed: ${guardKind}`,
|
|
7
|
+
"",
|
|
8
|
+
"Required fixes:",
|
|
9
|
+
...reasons.map((reason) => `- ${reason}`),
|
|
10
|
+
"",
|
|
11
|
+
"This is a workflow-state gate only. It does not certify generated app product quality.",
|
|
12
|
+
].join("\n") + "\n",
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
export function failedRunnerOutput(action, runnerKind, reasons) {
|
|
16
|
+
return {
|
|
17
|
+
status: 1,
|
|
18
|
+
stdout: "",
|
|
19
|
+
stderr: [
|
|
20
|
+
`Workflow ${action} failed: ${runnerKind}`,
|
|
21
|
+
"",
|
|
22
|
+
"Required fixes:",
|
|
23
|
+
...reasons.map((reason) => `- ${reason}`),
|
|
24
|
+
"",
|
|
25
|
+
"This is an AI-facing workflow rail only. It does not certify generated app product quality.",
|
|
26
|
+
].join("\n") + "\n",
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
export function passedStartOutput(runnerKind) {
|
|
30
|
+
return {
|
|
31
|
+
status: 0,
|
|
32
|
+
stdout: [
|
|
33
|
+
`Persona Harness Workflow Start: ${runnerKind}`,
|
|
34
|
+
"",
|
|
35
|
+
"Start status: PASS",
|
|
36
|
+
"",
|
|
37
|
+
"Short TUI request detected:",
|
|
38
|
+
"- If the user said `README.md 보고 구현해줘`, `플랜 보고 구현해줘`, or another short implementation request, treat this output as the required workflow rail.",
|
|
39
|
+
"",
|
|
40
|
+
"Run this implementation rail now:",
|
|
41
|
+
"1. `npx ph plan --implement`",
|
|
42
|
+
"2. Read `README.md`, `.persona/project-profile.jsonc`, `.persona/policies`, and `.persona/workflow/plan.md`.",
|
|
43
|
+
"3. Do not read `.persona/rules` directly; use the accepted plan and Persona Harness injection summary.",
|
|
44
|
+
"4. Use codegraph MCP before raw file reads for code structure analysis when available.",
|
|
45
|
+
"5. Implement from the accepted plan.",
|
|
46
|
+
"6. Use `npx ph bearshell` for shell verification.",
|
|
47
|
+
"7. Fill `.persona/workflow/implementation-report.md`.",
|
|
48
|
+
"8. Run `npx ph plan --report-filled implementation`.",
|
|
49
|
+
"9. Fill `.persona/workflow/review-report.md` after review/manual QA.",
|
|
50
|
+
"10. Run `npx ph plan --report-filled review`.",
|
|
51
|
+
"11. Run `npx ph workflow finish implement`.",
|
|
52
|
+
"12. Do not give the final answer until `npx ph workflow finish implement` passes.",
|
|
53
|
+
"",
|
|
54
|
+
"Scope:",
|
|
55
|
+
"- AI-facing workflow rail",
|
|
56
|
+
"- no generated app product-quality certification",
|
|
57
|
+
].join("\n") + "\n",
|
|
58
|
+
stderr: "",
|
|
59
|
+
};
|
|
60
|
+
}
|
|
61
|
+
export function passedImplementOutput() {
|
|
62
|
+
return {
|
|
63
|
+
status: 0,
|
|
64
|
+
stdout: [
|
|
65
|
+
"Persona Harness Workflow Implement",
|
|
66
|
+
"",
|
|
67
|
+
"Implementation rail status: PASS",
|
|
68
|
+
"",
|
|
69
|
+
"Use this as the single rail for short TUI requests like `README.md 보고 구현해줘` or `그냥 구현해줘`.",
|
|
70
|
+
"",
|
|
71
|
+
"Read README completely through bearshell chunks:",
|
|
72
|
+
"1. `npx ph bearshell --shell 'wc -l README.md'`",
|
|
73
|
+
"2. `npx ph bearshell --shell 'sed -n \"1,220p\" README.md'`",
|
|
74
|
+
"3. If README.md has more than 220 lines, continue with `npx ph bearshell --shell 'sed -n \"221,440p\" README.md'`.",
|
|
75
|
+
"4. Continue 220-line ranges until the README line count is covered.",
|
|
76
|
+
"5. Record README ranges read in `.persona/workflow/implementation-report.md`.",
|
|
77
|
+
"",
|
|
78
|
+
"Required context:",
|
|
79
|
+
"- README.md",
|
|
80
|
+
"- .persona/project-profile.jsonc",
|
|
81
|
+
"- .persona/policies",
|
|
82
|
+
"- .persona/workflow/plan.md",
|
|
83
|
+
"",
|
|
84
|
+
"Do not read `.persona/rules` directly; use the accepted plan and Persona Harness injection summary.",
|
|
85
|
+
"Do not read node_modules, .opencode, package vendor files, or .persona/evidence as implementation context.",
|
|
86
|
+
"",
|
|
87
|
+
"Implementation checklist:",
|
|
88
|
+
"1. Implement from the accepted plan.",
|
|
89
|
+
"2. Use `npx ph bearshell` for shell verification.",
|
|
90
|
+
"3. Fill `.persona/workflow/implementation-report.md` with README read method, README ranges read, plan read method, and plan ranges read.",
|
|
91
|
+
"4. Run `npx ph plan --report-filled implementation`.",
|
|
92
|
+
"5. Fill `.persona/workflow/review-report.md` after review/manual QA.",
|
|
93
|
+
"6. Run `npx ph plan --report-filled review`.",
|
|
94
|
+
"7. Run `npx ph workflow finish implement`.",
|
|
95
|
+
"8. Do not give the final answer until `npx ph workflow finish implement` passes.",
|
|
96
|
+
"",
|
|
97
|
+
"Scope:",
|
|
98
|
+
"- AI-facing workflow rail",
|
|
99
|
+
"- workflow evidence gate, not generated app product-quality certification",
|
|
100
|
+
].join("\n") + "\n",
|
|
101
|
+
stderr: "",
|
|
102
|
+
};
|
|
103
|
+
}
|
|
104
|
+
export function passedFinishOutput(runnerKind) {
|
|
105
|
+
return {
|
|
106
|
+
status: 0,
|
|
107
|
+
stdout: [
|
|
108
|
+
`Persona Harness Workflow Finish: ${runnerKind}`,
|
|
109
|
+
"",
|
|
110
|
+
"Finish status: PASS",
|
|
111
|
+
"Workflow evidence is complete; final answer may be reported.",
|
|
112
|
+
"",
|
|
113
|
+
"Next:",
|
|
114
|
+
"- `npx ph history --id <run-id>` when this workflow should be archived.",
|
|
115
|
+
"",
|
|
116
|
+
"Scope:",
|
|
117
|
+
"- AI-facing workflow rail",
|
|
118
|
+
"- no generated app product-quality certification",
|
|
119
|
+
].join("\n") + "\n",
|
|
120
|
+
stderr: "",
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
export function passedGuardOutput(guardKind) {
|
|
124
|
+
const nextLine = guardKind === "implement"
|
|
125
|
+
? "Implementation may start. Run `npx ph workflow implement`, then implement from the accepted plan."
|
|
126
|
+
: "Workflow evidence is complete; final answer may be reported.";
|
|
127
|
+
return {
|
|
128
|
+
status: 0,
|
|
129
|
+
stdout: [
|
|
130
|
+
`Persona Harness Workflow Guard: ${guardKind}`,
|
|
131
|
+
"",
|
|
132
|
+
"Guard status: PASS",
|
|
133
|
+
nextLine,
|
|
134
|
+
"",
|
|
135
|
+
"Scope:",
|
|
136
|
+
"- AI-facing workflow discipline gate",
|
|
137
|
+
"- no generated app product-quality certification",
|
|
138
|
+
].join("\n") + "\n",
|
|
139
|
+
stderr: "",
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=workflow-output.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"workflow-output.js","sourceRoot":"","sources":["../../src/cli/workflow-output.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,9 @@ export type WorkflowStatusSummary = {
|
|
|
5
5
|
readonly implementation: string;
|
|
6
6
|
readonly review: string;
|
|
7
7
|
readonly evidence: "present" | "missing";
|
|
8
|
+
readonly readCoverage: string;
|
|
9
|
+
readonly readCoverageBlocking: boolean;
|
|
10
|
+
readonly readCoverageFinding: "PASS" | "WARN";
|
|
8
11
|
readonly commandDiscipline: string;
|
|
9
12
|
readonly commandDisciplineBlocking: boolean;
|
|
10
13
|
readonly commandDisciplineFinding: "PASS" | "WARN";
|
|
@@ -5,6 +5,7 @@ const PLAN_PATH = ".persona/workflow/plan.md";
|
|
|
5
5
|
const IMPLEMENTATION_REPORT_PATH = ".persona/workflow/implementation-report.md";
|
|
6
6
|
const REVIEW_REPORT_PATH = ".persona/workflow/review-report.md";
|
|
7
7
|
const EVIDENCE_DIR = ".persona/evidence";
|
|
8
|
+
const README_PATH = "README.md";
|
|
8
9
|
function readStatusLine(filePath) {
|
|
9
10
|
if (!existsSync(filePath)) {
|
|
10
11
|
return "missing";
|
|
@@ -37,6 +38,59 @@ const FINAL_VERIFICATION_PATTERN = /(?:\.\/)?gradlew?\s+(?:test|build|bootRun)\b
|
|
|
37
38
|
const RAW_FINAL_VERIFICATION_PATTERN = /(?:raw shell|직접\s*썼|직접\s*사용|raw\s+command)[^\n]*(?:final verification|최종\s*검증)|(?:final verification|최종\s*검증)[^\n]*(?:raw shell|직접\s*썼|직접\s*사용|raw\s+command)/i;
|
|
38
39
|
const RAW_WITHOUT_BEARSHELL_PATTERN = /(?:raw shell|직접\s*썼|직접\s*사용|raw\s+command)[^\n]*(?:bearshell)[^\n]*(?:not provided|not used|없|않|못|미사용|제공되지)/i;
|
|
39
40
|
const FINAL_VERIFICATION_RERUN_PATTERN = /(?:final verification|최종\s*검증)[^\n]*(?:rerun|re-run|다시\s*실행|재실행|다시\s*검증)[^\n]*(?:bearshell|npx\s+ph\s+bearshell)|(?:final verification|최종\s*검증)[^\n]*(?:bearshell|npx\s+ph\s+bearshell)[^\n]*(?:rerun|re-run|다시\s*실행|재실행|다시\s*검증)|(?:bearshell|npx\s+ph\s+bearshell)[^\n]*(?:rerun|re-run|다시\s*실행|재실행|다시\s*검증)[^\n]*(?:final verification|최종\s*검증)/i;
|
|
41
|
+
const README_RANGES_FIELD_PATTERN = /^-\s*README ranges read:\s*(.*)$/i;
|
|
42
|
+
const READ_COVERAGE_STOP_PATTERN = /^-\s*(?:Plan read method|Plan ranges read|Unread ranges|Read evidence notes):/i;
|
|
43
|
+
const RANGE_COVERAGE_PATTERN = /\b\d+\s*[-–]\s*\d+\b|\ball\b|\bcomplete\b|전체|끝까지|완독/i;
|
|
44
|
+
function hasReadmeRangeCoverage(reportText) {
|
|
45
|
+
const lines = reportText.split(/\r?\n/);
|
|
46
|
+
const fieldIndex = lines.findIndex((line) => README_RANGES_FIELD_PATTERN.test(line));
|
|
47
|
+
if (fieldIndex === -1) {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
const fieldMatch = README_RANGES_FIELD_PATTERN.exec(lines[fieldIndex]);
|
|
51
|
+
if (fieldMatch?.[1] !== undefined && RANGE_COVERAGE_PATTERN.test(fieldMatch[1])) {
|
|
52
|
+
return true;
|
|
53
|
+
}
|
|
54
|
+
for (const line of lines.slice(fieldIndex + 1)) {
|
|
55
|
+
if (/^##\s+/.test(line) || READ_COVERAGE_STOP_PATTERN.test(line)) {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
if (RANGE_COVERAGE_PATTERN.test(line)) {
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
function readCoverage(projectDir, implementationStatus) {
|
|
65
|
+
if (implementationStatus !== "filled") {
|
|
66
|
+
return {
|
|
67
|
+
readCoverage: "not checked until implementation report is filled",
|
|
68
|
+
readCoverageBlocking: false,
|
|
69
|
+
readCoverageFinding: "PASS",
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
if (!existsSync(join(projectDir, README_PATH))) {
|
|
73
|
+
return {
|
|
74
|
+
readCoverage: "README.md missing; range coverage not required",
|
|
75
|
+
readCoverageBlocking: false,
|
|
76
|
+
readCoverageFinding: "PASS",
|
|
77
|
+
};
|
|
78
|
+
}
|
|
79
|
+
const implementationReportPath = join(projectDir, IMPLEMENTATION_REPORT_PATH);
|
|
80
|
+
const reportText = existsSync(implementationReportPath) ? readFileSync(implementationReportPath, "utf8") : "";
|
|
81
|
+
if (hasReadmeRangeCoverage(reportText)) {
|
|
82
|
+
return {
|
|
83
|
+
readCoverage: "README ranges observed",
|
|
84
|
+
readCoverageBlocking: false,
|
|
85
|
+
readCoverageFinding: "PASS",
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
readCoverage: "README.md exists but README ranges read is empty",
|
|
90
|
+
readCoverageBlocking: true,
|
|
91
|
+
readCoverageFinding: "WARN",
|
|
92
|
+
};
|
|
93
|
+
}
|
|
40
94
|
function commandDiscipline(projectDir, implementationStatus, reviewStatus) {
|
|
41
95
|
if (implementationStatus !== "filled") {
|
|
42
96
|
return {
|
|
@@ -67,10 +121,16 @@ function commandDiscipline(projectDir, implementationStatus, reviewStatus) {
|
|
|
67
121
|
if (hasBearshell) {
|
|
68
122
|
const warnings = [
|
|
69
123
|
...(hasRawShell ? ["raw shell environment probe observed"] : []),
|
|
124
|
+
];
|
|
125
|
+
const notes = [
|
|
70
126
|
...(hasDirectRulesRead ? ["direct `.persona/rules` read observed"] : []),
|
|
71
127
|
];
|
|
128
|
+
const details = [
|
|
129
|
+
...warnings.map((warning) => `warning: ${warning}`),
|
|
130
|
+
...notes.map((note) => `note: ${note}`),
|
|
131
|
+
];
|
|
72
132
|
return {
|
|
73
|
-
commandDiscipline:
|
|
133
|
+
commandDiscipline: details.length > 0 ? `bearshell observed; ${details.join("; ")}` : "bearshell observed",
|
|
74
134
|
commandDisciplineBlocking: false,
|
|
75
135
|
commandDisciplineFinding: warnings.length > 0 ? "WARN" : "PASS",
|
|
76
136
|
};
|
|
@@ -96,7 +156,7 @@ function nextAction(summary) {
|
|
|
96
156
|
return "review plan, then run `npx ph plan --accept` or `npx ph plan --revise`";
|
|
97
157
|
}
|
|
98
158
|
if (summary.implementation !== "filled") {
|
|
99
|
-
return "run `npx ph
|
|
159
|
+
return "run `npx ph workflow implement`, implement, fill implementation report, then run `npx ph plan --report-filled implementation`";
|
|
100
160
|
}
|
|
101
161
|
if (summary.review !== "filled") {
|
|
102
162
|
return "fill review report and run `npx ph plan --report-filled review`";
|
|
@@ -104,6 +164,9 @@ function nextAction(summary) {
|
|
|
104
164
|
if (summary.commandDisciplineBlocking) {
|
|
105
165
|
return "rerun final verification through `npx ph bearshell`";
|
|
106
166
|
}
|
|
167
|
+
if (summary.readCoverageBlocking) {
|
|
168
|
+
return "record README ranges read in `.persona/workflow/implementation-report.md`";
|
|
169
|
+
}
|
|
107
170
|
if (summary.commandDisciplineFinding === "WARN") {
|
|
108
171
|
return "review workflow noise, then archive completed workflow if acceptable";
|
|
109
172
|
}
|
|
@@ -118,10 +181,17 @@ export function readWorkflowStatus(projectDirInput) {
|
|
|
118
181
|
review: readStatusLine(join(projectDir, REVIEW_REPORT_PATH)),
|
|
119
182
|
evidence: hasFilesDeep(join(projectDir, EVIDENCE_DIR)) ? "present" : "missing",
|
|
120
183
|
};
|
|
184
|
+
const coverage = readCoverage(projectDir, summary.implementation);
|
|
121
185
|
const command = commandDiscipline(projectDir, summary.implementation, summary.review);
|
|
122
|
-
const next = nextAction({ ...summary, ...command });
|
|
123
|
-
const finding = summary.plan === "accepted"
|
|
124
|
-
|
|
186
|
+
const next = nextAction({ ...summary, ...coverage, ...command });
|
|
187
|
+
const finding = summary.plan === "accepted"
|
|
188
|
+
&& summary.implementation === "filled"
|
|
189
|
+
&& summary.review === "filled"
|
|
190
|
+
&& coverage.readCoverageFinding === "PASS"
|
|
191
|
+
&& command.commandDisciplineFinding === "PASS"
|
|
192
|
+
? "PASS"
|
|
193
|
+
: "WARN";
|
|
194
|
+
return { ...summary, ...coverage, ...command, finding, next };
|
|
125
195
|
}
|
|
126
196
|
export function formatWorkflowStatus(summary) {
|
|
127
197
|
return [
|
|
@@ -135,6 +205,7 @@ export function formatWorkflowStatus(summary) {
|
|
|
135
205
|
`- .persona/workflow/implementation-report.md: ${summary.implementation}`,
|
|
136
206
|
`- .persona/workflow/review-report.md: ${summary.review}`,
|
|
137
207
|
`- .persona/evidence: ${summary.evidence}`,
|
|
208
|
+
`- read coverage: ${summary.readCoverage}`,
|
|
138
209
|
`- command discipline: ${summary.commandDiscipline}`,
|
|
139
210
|
"",
|
|
140
211
|
`Next: ${summary.next}`,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workflow-status.js","sourceRoot":"","sources":["../../src/cli/workflow-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AACzE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,OAAO,MAAM,cAAc,CAAA;
|
|
1
|
+
{"version":3,"file":"workflow-status.js","sourceRoot":"","sources":["../../src/cli/workflow-status.ts"],"names":[],"mappings":"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"}
|
package/dist/phase0/injection.js
CHANGED
|
@@ -71,8 +71,8 @@ export function createInjectionBlock(targetFile, projectDir = process.cwd()) {
|
|
|
71
71
|
"이 Phase 0 블록은 .persona/rules 정본과 최소 frontmatter/glob/scenario catalog layer를 읽는 MVP rule-loader 결과이며, 아직 full rule engine은 아니다.",
|
|
72
72
|
"코드 구조 분석이나 변경 영향 파악이 필요하면 raw file read보다 codegraph MCP를 먼저 사용한다. codegraph를 사용할 수 없을 때만 필요한 파일 범위를 직접 읽고 그 이유를 남긴다.",
|
|
73
73
|
"repo inspection, CLI smoke test, 큰 출력 확인은 `ph bearshell`을 우선 사용한다.",
|
|
74
|
-
"짧은 구현 지시(예: '플랜 보고 구현해줘', '계획대로 해줘', '이제 구현해줘')를 받으면 먼저 `npx ph workflow
|
|
75
|
-
"`npx ph workflow
|
|
74
|
+
"짧은 구현 지시(예: '플랜 보고 구현해줘', '계획대로 해줘', '이제 구현해줘')를 받으면 먼저 `npx ph workflow implement`를 실행하고, 그 단일 레일을 따른다.",
|
|
75
|
+
"`npx ph workflow implement`가 실패하면 구현하지 말고 plan/status 문제를 사용자에게 보고한다.",
|
|
76
76
|
"긴 README/plan은 `npx ph bearshell --shell 'sed -n \"1,220p\" <file>'`처럼 범위를 나눠 끝까지 읽는다.",
|
|
77
77
|
"중간에 멈추면 implementation-report에 남은 범위를 기록한다.",
|
|
78
78
|
"최종 답변 전에는 review-report를 채우고 `npx ph plan --report-filled review`와 `npx ph workflow finish implement`를 실행한다.",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"injection.js","sourceRoot":"","sources":["../../src/phase0/injection.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"injection.js","sourceRoot":"","sources":["../../src/phase0/injection.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,8 @@ Use this package for repeatable release operations and release note drafting.
|
|
|
8
8
|
- [v0.3.0-alpha.3 candidate](v0.3.0-alpha.3-candidate.md)
|
|
9
9
|
- [v0.3.0-alpha.3 demo packaging decision](v0.3.0-alpha.3-demo-packaging-decision.md)
|
|
10
10
|
- [v0.3.0-alpha.3 release notes](v0.3.0-alpha.3-release-notes.md)
|
|
11
|
+
- [v0.3.1-alpha.0 release notes](v0.3.1-alpha.0-release-notes.md)
|
|
12
|
+
- [v0.3.2-alpha.0 release notes](v0.3.2-alpha.0-release-notes.md)
|
|
11
13
|
|
|
12
14
|
Release automation lives in `.github/workflows/release.yml`.
|
|
13
15
|
|
|
@@ -1,84 +1,77 @@
|
|
|
1
1
|
# Next Version Readiness
|
|
2
2
|
|
|
3
|
+
## Candidate
|
|
4
|
+
|
|
5
|
+
```text
|
|
6
|
+
persona-harness@0.3.2-alpha.0
|
|
7
|
+
dist-tag: alpha
|
|
8
|
+
date: 2026-06-22
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
## Release Intent
|
|
12
|
+
|
|
13
|
+
This candidate reduces short-TUI workflow drift. The main user-visible change is that AI agents can run one command, `npx ph workflow implement`, to receive the implementation rail, README chunk-read instructions, report lifecycle, and final finish gate.
|
|
14
|
+
|
|
15
|
+
## Included Changes
|
|
16
|
+
|
|
17
|
+
- `ph workflow implement` single AI-facing implementation rail.
|
|
18
|
+
- README chunk-read instructions using `ph bearshell` and 220-line ranges.
|
|
19
|
+
- README read coverage diagnostics in `ph workflow check`.
|
|
20
|
+
- `ph workflow finish implement` failure when `README.md` exists but `README ranges read` is empty.
|
|
21
|
+
- Injection, prompt, next/resume, root README, and Korean README guidance updated to prefer `npx ph workflow implement`.
|
|
22
|
+
- Direct `.persona/rules` read remains a non-blocking note; raw final verification remains blocking.
|
|
23
|
+
|
|
3
24
|
## Verification Commands
|
|
4
25
|
|
|
5
26
|
| Command | Result |
|
|
6
27
|
| --- | --- |
|
|
7
|
-
| `
|
|
8
|
-
| `git branch --show-current` | pass: `main` |
|
|
9
|
-
| `npm test` | pass: scope check PASS, docs taxonomy PASS, 32 test files passed, 190 tests passed |
|
|
28
|
+
| `npm test` | pass: 36 test files, 224 tests |
|
|
10
29
|
| `npm run typecheck` | pass |
|
|
11
30
|
| `npm run build` | pass |
|
|
12
31
|
| `npm run report:rules` | pass: PersonaHarnessRule diagnostics PASS, 0 findings |
|
|
13
|
-
| `npm run check:scope` | pass: MVP scope diagnostics PASS, 0 findings,
|
|
14
|
-
| `npm run check:injection-value` | pass:
|
|
15
|
-
| `npm pack --dry-run
|
|
16
|
-
| `npm publish --dry-run --tag alpha` | pass: dry-run only for `persona-harness@0.3.
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
```text
|
|
33
|
-
freeze-expansion-and-simplify
|
|
32
|
+
| `npm run check:scope:strict` | pass: MVP scope diagnostics PASS, 0 findings, STRICT mode |
|
|
33
|
+
| `npm run check:injection-value` | pass: current window 3/3, expected decision `continue-java-mvp` |
|
|
34
|
+
| `npm pack --dry-run` | pass: `persona-harness-0.3.2-alpha.0.tgz`, 220 files, 225.5 kB package size, 864.1 kB unpacked size |
|
|
35
|
+
| `npm publish --dry-run --tag alpha` | pass: dry-run only for `persona-harness@0.3.2-alpha.0` |
|
|
36
|
+
|
|
37
|
+
## Manual CLI Smoke
|
|
38
|
+
|
|
39
|
+
Expected release-loop smoke:
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
tmp_project=$(mktemp -d)
|
|
43
|
+
cd "$tmp_project"
|
|
44
|
+
npm init -y
|
|
45
|
+
npm install -D persona-harness@alpha
|
|
46
|
+
npx ph init
|
|
47
|
+
npx ph plan
|
|
48
|
+
npx ph plan --accept
|
|
49
|
+
npx ph workflow implement
|
|
34
50
|
```
|
|
35
51
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
- Persona Harness ON completed 4/5 runs and timed out once.
|
|
39
|
-
- Persona Harness OFF completed 5/5 runs.
|
|
40
|
-
- ON successful runs had better domain repository port placement.
|
|
41
|
-
- ON successful runs used application command/result DTO boundaries.
|
|
42
|
-
- OFF was more reliable as a generated runnable output baseline.
|
|
43
|
-
|
|
44
|
-
After context-noise reduction, `01-book-loans/A-persona-on/run-05` was rerun with the local package:
|
|
45
|
-
|
|
46
|
-
- `ph init` now writes project `.gitignore` entries for `node_modules/`, `.opencode/node_modules/`, `.persona/rules/`, `.persona/evidence/`, `.gradle/`, and `build/`.
|
|
47
|
-
- Persona Harness ON run-05 completed without timeout: OpenCode exit 0 in 270013 ms.
|
|
48
|
-
- Persona Harness ON run-05 produced Java/Spring code, generated 113 evidence files, and final `gradle test` passed.
|
|
49
|
-
- The paired Persona OFF run-05 also passed and completed faster: OpenCode exit 0 in 50085 ms.
|
|
50
|
-
- The generated ON code still did not match the target package-flow shape closely enough for the analyzer to treat run-05 as ON-positive.
|
|
51
|
-
- The analyzer now distinguishes this as `buildable-package-flow-mismatch`, not a generated-project failure.
|
|
52
|
-
|
|
53
|
-
## Demo Packaging Decision
|
|
52
|
+
Expected:
|
|
54
53
|
|
|
55
|
-
|
|
54
|
+
- `ph workflow implement` prints README chunk-read commands.
|
|
55
|
+
- `ph workflow finish implement` fails when README ranges are empty.
|
|
56
|
+
- `ph workflow finish implement` passes after `README ranges read` is recorded and normal workflow evidence exists.
|
|
56
57
|
|
|
57
|
-
##
|
|
58
|
+
## Supported Surface
|
|
58
59
|
|
|
59
|
-
-
|
|
60
|
-
-
|
|
61
|
-
-
|
|
62
|
-
-
|
|
63
|
-
- The previous external productization review did not permit packaging because the 5-run ON/OFF result remained mixed.
|
|
64
|
-
- The rerun reduces the timeout blocker, and analyzer reason codes now separate generated-project failure from buildable-but-wrong-shape output.
|
|
65
|
-
- The generated code-shape blocker has fresh positive evidence after package-flow guidance:
|
|
66
|
-
- fresh Persona ON run: `/Users/yongtae/Desktop/blackbear-persona-harness-test/fresh-runs/01-book-loans/A-persona-on/bootjar-guidance-20260622-005742`;
|
|
67
|
-
- generated code used `presentation/application/domain/infrastructure`;
|
|
68
|
-
- domain repository ports stayed in `domain`; in-memory implementations stayed in `infrastructure`;
|
|
69
|
-
- application services did not directly own storage state or ID sequence;
|
|
70
|
-
- `gradle build` passed with `:bootJar UP-TO-DATE`, not `:bootJar SKIPPED`;
|
|
71
|
-
- `gradle bootRun` plus HTTP happy/failure smoke passed independently.
|
|
60
|
+
- Java/Spring backend MVP.
|
|
61
|
+
- Gradle-first backend workflow.
|
|
62
|
+
- AI-facing workflow discipline for OpenCode/Codex-style TUI use.
|
|
63
|
+
- Report-only diagnostics and workflow evidence gates.
|
|
72
64
|
|
|
73
|
-
##
|
|
65
|
+
## Not Supported
|
|
74
66
|
|
|
75
|
-
-
|
|
76
|
-
-
|
|
77
|
-
-
|
|
78
|
-
-
|
|
67
|
+
- Generated app product-quality certification.
|
|
68
|
+
- AST/linter/build enforcement of rule compliance.
|
|
69
|
+
- Frontend/infra/desktop productization.
|
|
70
|
+
- Full TDD workflow.
|
|
71
|
+
- `ph bearshell` sandboxing.
|
|
79
72
|
|
|
80
|
-
## Decision
|
|
73
|
+
## Pre-Publish Release Decision
|
|
81
74
|
|
|
82
|
-
|
|
75
|
+
Proceed with `0.3.2-alpha.0`.
|
|
83
76
|
|
|
84
|
-
|
|
77
|
+
After publish, run a fresh installed-package smoke and then hand the alpha to external testers for short TUI request behavior.
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
# v0.3.2-alpha.0 Release Notes
|
|
2
|
+
|
|
3
|
+
## Version
|
|
4
|
+
|
|
5
|
+
`v0.3.2-alpha.0`
|
|
6
|
+
|
|
7
|
+
## Dist Tag
|
|
8
|
+
|
|
9
|
+
`alpha`
|
|
10
|
+
|
|
11
|
+
During the alpha pilot, `latest` is also synchronized to the current alpha build to avoid stale default installs. This is not a stable support claim.
|
|
12
|
+
|
|
13
|
+
## npm Package
|
|
14
|
+
|
|
15
|
+
`persona-harness@0.3.2-alpha.0`
|
|
16
|
+
|
|
17
|
+
## Summary
|
|
18
|
+
|
|
19
|
+
This alpha reduces AI workflow forgetfulness in short TUI implementation requests. It adds a single `ph workflow implement` rail and makes README read coverage a workflow evidence gate before an agent can report completion.
|
|
20
|
+
|
|
21
|
+
## What Changed
|
|
22
|
+
|
|
23
|
+
- Added `ph workflow implement` as the single AI-facing implementation rail.
|
|
24
|
+
- Added README chunk-read instructions to the rail:
|
|
25
|
+
- `npx ph bearshell --shell 'wc -l README.md'`
|
|
26
|
+
- `npx ph bearshell --shell 'sed -n "1,220p" README.md'`
|
|
27
|
+
- continuation ranges such as `221-440`.
|
|
28
|
+
- Added read coverage diagnostics to `ph workflow check`.
|
|
29
|
+
- Added a `ph workflow finish implement` failure when `README.md` exists but `README ranges read` is empty.
|
|
30
|
+
- Updated injection, plan prompts, next/resume output, root README, and Korean README to point agents to `npx ph workflow implement`.
|
|
31
|
+
- Kept `ph workflow start implement` and `ph plan --implement` as lower-level compatibility surfaces.
|
|
32
|
+
|
|
33
|
+
## Install
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
npm install -D persona-harness@alpha
|
|
37
|
+
npx ph init
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## Supported Scope
|
|
41
|
+
|
|
42
|
+
- Java/Spring backend MVP.
|
|
43
|
+
- Gradle-first backend workflow.
|
|
44
|
+
- OpenCode plugin injection for Java/Spring backend Clean Code guidance.
|
|
45
|
+
- AI-facing workflow rail and report lifecycle.
|
|
46
|
+
- Report-only diagnostics and workflow evidence gates.
|
|
47
|
+
|
|
48
|
+
## Not Supported
|
|
49
|
+
|
|
50
|
+
- Generated app product-quality certification.
|
|
51
|
+
- Rule compliance enforcement through AST/linter/build gates.
|
|
52
|
+
- Frontend, infra, or desktop productization.
|
|
53
|
+
- Full Test -> Feat -> Refactor workflow.
|
|
54
|
+
- `ph bearshell` sandboxing.
|
|
55
|
+
|
|
56
|
+
## Verification
|
|
57
|
+
|
|
58
|
+
Commands run before release:
|
|
59
|
+
|
|
60
|
+
```bash
|
|
61
|
+
npm test
|
|
62
|
+
npm run typecheck
|
|
63
|
+
npm run build
|
|
64
|
+
npm run report:rules
|
|
65
|
+
npm run check:scope:strict
|
|
66
|
+
npm run check:injection-value
|
|
67
|
+
npm pack --dry-run
|
|
68
|
+
npm publish --dry-run --tag alpha
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Result:
|
|
72
|
+
|
|
73
|
+
- `npm test`: pass, 36 test files and 224 tests.
|
|
74
|
+
- `npm run typecheck`: pass.
|
|
75
|
+
- `npm run build`: pass.
|
|
76
|
+
- `npm run report:rules`: pass, PersonaHarnessRule diagnostics PASS with 0 findings.
|
|
77
|
+
- `npm run check:scope:strict`: pass, MVP scope diagnostics PASS with 0 findings in STRICT mode.
|
|
78
|
+
- `npm run check:injection-value`: pass, current window 3/3 with expected decision `continue-java-mvp`.
|
|
79
|
+
- `npm pack --dry-run`: pass, 220 files, 225.5 kB package size, 864.1 kB unpacked size.
|
|
80
|
+
- `npm publish --dry-run --tag alpha`: pass for `persona-harness@0.3.2-alpha.0`.
|
|
81
|
+
|
|
82
|
+
## Package Contents Notes
|
|
83
|
+
|
|
84
|
+
- Includes `dist`, `README.md`, language README files, `LICENSE`, `CHANGELOG.md`, `.persona/harness.jsonc`, `.persona/rules`, current release docs, and the Java programming shared-skill reference subset.
|
|
85
|
+
- Excludes generated evidence, experiments, `.persona-test-fixtures`, inactive OMO reference skills, and Java no-excuse fixture files from package contents.
|
|
86
|
+
|
|
87
|
+
## Known Gaps
|
|
88
|
+
|
|
89
|
+
- README range coverage is evidence discipline, not semantic proof that the agent understood the README.
|
|
90
|
+
- OpenCode behavior still varies by model and runtime context.
|
|
91
|
+
- This release does not make `ph` a standalone agent runner; it is a workflow surface for OpenCode/Codex-style agents.
|
|
92
|
+
- codegraph-first guidance is AI-facing guidance only; Persona Harness does not install or require a codegraph MCP server.
|
|
93
|
+
|
|
94
|
+
## Release Automation
|
|
95
|
+
|
|
96
|
+
- `[ ]` tag matches `package.json` version
|
|
97
|
+
- `[ ]` GitHub Actions verify job passed
|
|
98
|
+
- `[ ]` npm publish job passed
|
|
99
|
+
- `[ ]` GitHub release notes were created
|
|
100
|
+
|
|
101
|
+
## Next
|
|
102
|
+
|
|
103
|
+
- Fresh install smoke with `persona-harness@alpha`.
|
|
104
|
+
- External tester retry focused on whether short TUI requests now follow `ph workflow implement`.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "persona-harness",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.2-alpha.0",
|
|
4
4
|
"private": false,
|
|
5
5
|
"type": "module",
|
|
6
6
|
"description": "OpenCode plugin for Java/Spring backend Clean Code guidance injection and local/tarball Persona Harness verification.",
|