persona-harness 0.8.23 → 0.8.25
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 +14 -0
- package/README.md +23 -2
- package/docs/QUICK-DEMO.md +22 -0
- package/docs/current/README.md +6 -3
- package/docs/current/canonical-docs-index.md +1 -1
- package/docs/current/java-backend-mvp-install-guide.md +12 -3
- package/docs/current/persona-harness-detailed-usage.md +21 -3
- package/docs/current/release/README.md +4 -5
- package/docs/current/release/consumer-authority-v0824-acceptance.json +1220 -0
- package/docs/current/release/consumer-authority-v0825-acceptance.json +1225 -0
- package/docs/current/release/history.md +25 -12
- package/docs/current/release/v0.8.24-release-notes.md +32 -0
- package/docs/current/release/v0.8.25-release-notes.md +31 -0
- package/docs/releases/README.md +7 -6
- package/docs/releases/package-index.md +5 -5
- package/package.json +7 -2
- package/packages/shared-skills/package.json +1 -1
- package/scripts/consumer-authority-v0824-acceptance-schema.d.mts +27 -0
- package/scripts/consumer-authority-v0824-acceptance-schema.mjs +74 -0
- package/scripts/consumer-authority-v0825-acceptance-schema.d.mts +32 -0
- package/scripts/consumer-authority-v0825-acceptance-schema.mjs +79 -0
- package/scripts/preflight-consumer-authority-external-artifact-transport.mjs +2 -2
- package/scripts/preflight-consumer-authority-external-attestation.mjs +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -8,10 +8,24 @@ preparation alone does not establish stable support or channel state.
|
|
|
8
8
|
|
|
9
9
|
## Unreleased
|
|
10
10
|
|
|
11
|
+
- Add a release-truth contract: stable GitHub Release generation rejects
|
|
12
|
+
source-candidate language, distinguishes the GitHub Release from the later
|
|
13
|
+
npm/provenance completion step, and keeps public maintainer command scopes
|
|
14
|
+
explicit.
|
|
11
15
|
- Keep process-only evaluation cleanup in the normal CI lane while reserving
|
|
12
16
|
the single-worker resource-sensitive lane for fixtures that own mutable
|
|
13
17
|
package, Gradle, staged-consumer, workflow-loop, or producer runtime state.
|
|
14
18
|
|
|
19
|
+
## [0.8.24] - 2026-08-22
|
|
20
|
+
|
|
21
|
+
- Publish the exact packed-package Java/Spring Gradle/JUnit cooperative Finish
|
|
22
|
+
demo as the required `Verify repository` contract.
|
|
23
|
+
- Keep runtime injection default-off; the legacy runtime-hook demos use only an
|
|
24
|
+
explicit test-local preview opt-in.
|
|
25
|
+
- Record the protected integration, immutable tag, stable GitHub Release, npm
|
|
26
|
+
`latest` publication, canonical tar reconciliation, and provenance readback
|
|
27
|
+
as immutable 0.8.24 release facts.
|
|
28
|
+
|
|
15
29
|
## [0.8.4] - 2026-08-11
|
|
16
30
|
|
|
17
31
|
- Add a finite, nonreflective `bindingReason` to blocked authority fetch results
|
package/README.md
CHANGED
|
@@ -53,7 +53,13 @@ production readiness, token savings, or broad security guarantees.
|
|
|
53
53
|
**Start with:** [Quick Demo](docs/QUICK-DEMO.md) · [Measured Claims](docs/MEASURED-CLAIMS.md) · [Install guide](docs/START-HERE.md)
|
|
54
54
|
|
|
55
55
|
> [!IMPORTANT]
|
|
56
|
-
> **Alpha, gate-first, measured.** Live registry channels, tags, GitHub releases,
|
|
56
|
+
> **Alpha, gate-first, measured.** Live registry channels, tags, GitHub releases,
|
|
57
|
+
> and audit lifecycle facts are maintained by governed workflows and release
|
|
58
|
+
> records; source release notes are inputs, not standalone proof. Runtime
|
|
59
|
+
> injection remains **default-off / opt-in**. See
|
|
60
|
+
> [`docs/current/p3-integrity-roadmap.md`](docs/current/p3-integrity-roadmap.md),
|
|
61
|
+
> [`docs/MEASURED-CLAIMS.md`](docs/MEASURED-CLAIMS.md), and
|
|
62
|
+
> [`injection-value-status.json`](docs/current/injection-value-status.json).
|
|
57
63
|
|
|
58
64
|
## Measured Behavior
|
|
59
65
|
|
|
@@ -149,7 +155,22 @@ address hostile same-user filesystem path replacement.
|
|
|
149
155
|
> [!IMPORTANT]
|
|
150
156
|
> `workflow finish` cannot reach a trusted PASS from a purely local checkout. Clearing every content gate still leaves `trusted-authority-required`, because only a verified external attestation from an enrolled repository grants finish authority. Enrol one with `npx ph authority`, and run `npx ph doctor` to see the current `Finish authority` and `Consumer authority` state before you rely on the gate.
|
|
151
157
|
|
|
152
|
-
Three-beat setup, gate, and goal-entry walkthrough: **[Quick Demo](docs/QUICK-DEMO.md)**.
|
|
158
|
+
Three-beat setup, gate, and goal-entry walkthrough: **[Quick Demo](docs/QUICK-DEMO.md)**. Repository maintainers and reviewers can run the separate exact-package Gradle/JUnit contract: **[Full cooperative verification demo](docs/QUICK-DEMO.md#full-cooperative-verification-demo)**.
|
|
159
|
+
|
|
160
|
+
## Maintainer verification
|
|
161
|
+
|
|
162
|
+
From a source checkout, the commands have deliberately different scopes:
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
npm test # packaged CLI smoke
|
|
166
|
+
npm run test:unit # full Vitest unit/integration suite
|
|
167
|
+
npm run test:repository # full repository contract: policy, docs, unit/integration, and clean-package checks
|
|
168
|
+
node scripts/verify-cooperative-finish-demo.mjs # exact packed-package Java/Spring Gradle/JUnit demo
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
The required `Verify repository` workflow runs the full repository contract and
|
|
172
|
+
the exact cooperative demo. These commands establish their named contracts; they
|
|
173
|
+
do not certify generated application quality or external Finish authority.
|
|
153
174
|
|
|
154
175
|
## TDD Rail (opt-in)
|
|
155
176
|
|
package/docs/QUICK-DEMO.md
CHANGED
|
@@ -71,6 +71,28 @@ npx ph workflow closure next --json
|
|
|
71
71
|
`workflow closure next --json` is diagnostic state, not a `finish --json`
|
|
72
72
|
result. `workflow finish` has no `--json` option.
|
|
73
73
|
|
|
74
|
+
## Full Cooperative Verification Demo
|
|
75
|
+
|
|
76
|
+
Repository maintainers and reviewers can exercise the longer exact-package
|
|
77
|
+
contract from a Persona Harness checkout:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
npm ci
|
|
81
|
+
node scripts/verify-cooperative-finish-demo.mjs
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
It requires Node 20.19+, JDK 21, and Gradle 9.4.0. The required repository
|
|
85
|
+
verification job runs this exact command. It creates a disposable Java/Spring
|
|
86
|
+
Gradle fixture, packs and installs the current package tarball, demonstrates
|
|
87
|
+
the initial `workflow-state-uninitialized` block, then records real
|
|
88
|
+
Gradle/JUnit evidence and reaches `Finish status: PASS` with
|
|
89
|
+
`--assurance cooperative`.
|
|
90
|
+
|
|
91
|
+
This is a maintainer/reviewer test contract, not an end-user startup command.
|
|
92
|
+
It keeps runtime injection default-off, does not call an external authority,
|
|
93
|
+
and does not grant trusted external authority. Add `-- --keep` only when the
|
|
94
|
+
temporary fixture needs manual inspection.
|
|
95
|
+
|
|
74
96
|
## Boundaries
|
|
75
97
|
|
|
76
98
|
This walkthrough demonstrates only the observed setup, blocked-finish, and
|
package/docs/current/README.md
CHANGED
|
@@ -47,9 +47,12 @@ history but do not become a current product or release claim.
|
|
|
47
47
|
## Release And Package Records
|
|
48
48
|
|
|
49
49
|
The release row above leads to the compact operator entrypoint and durable
|
|
50
|
-
package chronology.
|
|
51
|
-
|
|
52
|
-
|
|
50
|
+
package chronology. The current source release input and the latest published
|
|
51
|
+
release record are intentionally separate: read the release operations table
|
|
52
|
+
and package index for recorded facts, then re-read live registry and protected
|
|
53
|
+
workflow state before a new release decision. Historical Consumer Authority
|
|
54
|
+
records live under `release/`; their past PASS, NO-GO, or staging result does
|
|
55
|
+
not provide current Finish authority, promotion, or channel permission.
|
|
53
56
|
|
|
54
57
|
## Deep Reference And History
|
|
55
58
|
|
|
@@ -18,7 +18,7 @@ Start with [Current Docs](README.md) unless you need a specific decision.
|
|
|
18
18
|
| External environment procedure | `docs/current/external-environment-verification.md` | A bounded packaged-install check on a separate machine. |
|
|
19
19
|
| External-attested Finish walkthrough | `docs/current/external-attested-finish-walkthrough.md` | Source-checkout-only enrolled/fetch/Finish/replay procedure and its limits. |
|
|
20
20
|
| Consumer Authority V1 decision | `docs/current/consumer-authority-v1-decision.md` | The explicit cooperative assurance boundary. |
|
|
21
|
-
| Release operations | `docs/current/release/README.md` | Current release checklist, runbooks, tag policy, and recorded state. |
|
|
21
|
+
| Release operations | `docs/current/release/README.md` | Current release checklist, runbooks, tag policy, and the separation of source inputs from recorded published state. |
|
|
22
22
|
| Version/package chronology | `docs/releases/package-index.md` | Durable version history and release-note links. |
|
|
23
23
|
| Advanced repository surfaces | `docs/current/advanced-surface-index.md` | Source-checkout-only dormant, preview, and repository work. |
|
|
24
24
|
| Full retained-file catalog | `docs/current/docs-inventory.md` | Exhaustive classification when the map above is insufficient. |
|
|
@@ -122,9 +122,18 @@ npm run demo:java-mvp
|
|
|
122
122
|
|
|
123
123
|
`npm run demo:init`은 package artifact가 실제 설치 환경에서 `persona-harness init`으로 clean project를 안전하게 초기화하는지 확인한다.
|
|
124
124
|
|
|
125
|
-
`npm run demo:bootstrap`은 init 이후 README target에서 bootstrap injection과 runtime evidence 생성이 되는지 확인한다.
|
|
125
|
+
`npm run demo:bootstrap`은 init 이후 README target에서 bootstrap injection과 runtime evidence 생성이 되는지 확인한다. 설치된 named `PersonaHarnessPlugin` export를 사용하고 임시 프로젝트 안에서만 `ph bootstrap backend --runtime-injection-preview --no-developer-mcp`를 명시적으로 적용한다. 이 opt-in은 기본 `runtimeInjection` 설정을 바꾸지 않는다.
|
|
126
126
|
|
|
127
|
-
`npm run demo:java-mvp`는 package artifact가 실제 설치 환경에서도 Java Controller plugin hook, injection, model input transform, evidence 생성 경로를 재현하는지 확인한다.
|
|
127
|
+
`npm run demo:java-mvp`는 package artifact가 실제 설치 환경에서도 Java Controller plugin hook, injection, model input transform, evidence 생성 경로를 재현하는지 확인한다. 마찬가지로 disposable fixture에서만 preview opt-in을 사용한다.
|
|
128
|
+
|
|
129
|
+
저장소 maintainer/reviewer가 실제 Gradle/JUnit과 workflow Finish 경계를 검증하려면 Node 20.19+, JDK 21, Gradle 9.4.0 환경에서 다음을 실행한다.
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
npm ci
|
|
133
|
+
node scripts/verify-cooperative-finish-demo.mjs
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
이 명령은 exact packed package를 disposable Java/Spring fixture에 설치하고, 먼저 `workflow-state-uninitialized` BLOCK을 확인한 다음 실제 Gradle/JUnit evidence와 `--assurance cooperative`의 `Finish status: PASS`를 확인한다. required repository CI도 같은 명령을 실행한다. 이는 trusted external authority나 production quality를 증명하지 않는다.
|
|
128
137
|
|
|
129
138
|
검증하는 것:
|
|
130
139
|
|
|
@@ -212,7 +221,7 @@ Plugin hook이 발동하면 연결한 Java/Spring 프로젝트의 configured evi
|
|
|
212
221
|
|
|
213
222
|
## Non-Goals
|
|
214
223
|
|
|
215
|
-
이 install guide와 `npm run demo:java-mvp`는 다음을 보증하지 않는다.
|
|
224
|
+
이 install guide와 `npm run demo:java-mvp` 및 `node scripts/verify-cooperative-finish-demo.mjs`는 다음을 보증하지 않는다.
|
|
216
225
|
|
|
217
226
|
- 생성된 Spring application의 품질
|
|
218
227
|
- 테스트 충분성
|
|
@@ -302,9 +302,18 @@ npm run demo:java-mvp
|
|
|
302
302
|
|
|
303
303
|
`npm run demo:init`은 package artifact를 임시 clean project에 설치하고 `persona-harness init`을 실행해 `.persona/rules`, `.persona/harness.jsonc`, `.opencode/opencode.json`이 안전하게 만들어지는지 확인한다. 이때 `.persona/evidence`가 생기면 실패한다.
|
|
304
304
|
|
|
305
|
-
`npm run demo:bootstrap`은 init 이후 `README.md` target으로 설치된
|
|
305
|
+
`npm run demo:bootstrap`은 init 이후 `README.md` target으로 설치된 named `PersonaHarnessPlugin` hook을 직접 호출해 `project-bootstrap` injection과 runtime evidence 생성을 확인한다. disposable fixture에서만 `ph bootstrap backend --runtime-injection-preview --no-developer-mcp`를 명시적으로 적용하며, 기본 `runtimeInjection`은 그대로 off다.
|
|
306
306
|
|
|
307
|
-
`npm run demo:java-mvp`는 package artifact가 실제 설치 환경에서도 plugin hook, injection, model input transform, evidence 생성 경로를 재현하는지 확인한다. 내부적으로 빌드, `npm pack`, 임시 프로젝트 설치, `persona-harness init`, 설치된 `dist/index.js` OpenCode plugin hook 실행, Java Controller injection, model input transform, `.persona/evidence/phase0` evidence 생성을 검증한다.
|
|
307
|
+
`npm run demo:java-mvp`는 package artifact가 실제 설치 환경에서도 plugin hook, injection, model input transform, evidence 생성 경로를 재현하는지 확인한다. 내부적으로 빌드, `npm pack`, 임시 프로젝트 설치, `persona-harness init`, 설치된 `dist/index.js` OpenCode plugin hook 실행, Java Controller injection, model input transform, `.persona/evidence/phase0` evidence 생성을 검증한다. 이 preview opt-in도 disposable fixture 안에 한정된다.
|
|
308
|
+
|
|
309
|
+
실제 Gradle/JUnit과 workflow Finish의 BLOCK-to-PASS 경계는 repository maintainer/reviewer용 별도 명령이다. Node 20.19+, JDK 21, Gradle 9.4.0 환경에서 실행한다.
|
|
310
|
+
|
|
311
|
+
```bash
|
|
312
|
+
npm ci
|
|
313
|
+
node scripts/verify-cooperative-finish-demo.mjs
|
|
314
|
+
```
|
|
315
|
+
|
|
316
|
+
이 명령은 exact packed package를 Java/Spring fixture에 설치하고 `workflow-state-uninitialized` BLOCK을 먼저 확인한 뒤, 실제 Gradle/JUnit evidence와 `--assurance cooperative`의 local `Finish status: PASS`를 검증한다. required repository CI도 같은 명령을 실행하며 trusted external authority나 생성된 application quality는 주장하지 않는다.
|
|
308
317
|
|
|
309
318
|
### B. Clean Java/Spring Project Local Install
|
|
310
319
|
|
|
@@ -559,6 +568,7 @@ npm run build
|
|
|
559
568
|
npm run demo:init
|
|
560
569
|
npm run demo:bootstrap
|
|
561
570
|
npm run demo:java-mvp
|
|
571
|
+
node scripts/verify-cooperative-finish-demo.mjs
|
|
562
572
|
npm test
|
|
563
573
|
npm run typecheck
|
|
564
574
|
npm run build
|
|
@@ -588,7 +598,15 @@ npm run demo:bootstrap
|
|
|
588
598
|
npm run demo:java-mvp
|
|
589
599
|
```
|
|
590
600
|
|
|
591
|
-
이 명령들은 현재 저장소를 빌드한 뒤 `npm pack`으로 tarball을 만들고, 임시 프로젝트에 `persona-harness` 패키지를 설치한다. `demo:init`은 `persona-harness init` 표면을 검증하고, `demo:bootstrap`은 README bootstrap hook surface를 검증하며, `demo:java-mvp`는 Java Controller target에 대한 Phase 0 hook을 직접 호출한다.
|
|
601
|
+
이 명령들은 현재 저장소를 빌드한 뒤 `npm pack`으로 tarball을 만들고, 임시 프로젝트에 `persona-harness` 패키지를 설치한다. `demo:init`은 `persona-harness init` 표면을 검증하고, `demo:bootstrap`은 disposable preview opt-in으로 README bootstrap hook surface를 검증하며, `demo:java-mvp`는 같은 disposable preview opt-in으로 Java Controller target에 대한 Phase 0 hook을 직접 호출한다.
|
|
602
|
+
|
|
603
|
+
Node 20.19+, JDK 21, Gradle 9.4.0이 있는 repository maintainer/reviewer는 다음 full contract도 실행할 수 있다.
|
|
604
|
+
|
|
605
|
+
```bash
|
|
606
|
+
node scripts/verify-cooperative-finish-demo.mjs
|
|
607
|
+
```
|
|
608
|
+
|
|
609
|
+
이 명령은 initial `workflow-state-uninitialized` BLOCK, exact packed package, 실제 Gradle/JUnit evidence, `--assurance cooperative` local PASS를 검증한다. trusted external authority나 application quality를 증명하지 않으며 required repository CI가 동일 명령을 실행한다.
|
|
592
610
|
|
|
593
611
|
검증하는 것:
|
|
594
612
|
|
|
@@ -18,14 +18,13 @@ find the record; it is not a ledger of every historical release decision.
|
|
|
18
18
|
|
|
19
19
|
## Recorded Release State
|
|
20
20
|
|
|
21
|
-
At the recorded 2026-08-
|
|
21
|
+
At the recorded 2026-08-22 release state:
|
|
22
22
|
|
|
23
23
|
| Channel or record | Value | Source |
|
|
24
24
|
| --- | --- | --- |
|
|
25
|
-
| npm `latest` | `0.8.
|
|
26
|
-
|
|
|
27
|
-
|
|
|
28
|
-
| GitHub latest release | `v0.8.1` | [GitHub releases](https://github.com/jyt6640/persona-harness/releases) |
|
|
25
|
+
| npm `latest` | `0.8.24` | [`v0.8.24` release notes](v0.8.24-release-notes.md) |
|
|
26
|
+
| GitHub latest release | `v0.8.24` | [GitHub releases](https://github.com/jyt6640/persona-harness/releases) |
|
|
27
|
+
| Historical prerelease channels | recorded separately | [Package/version index](../../releases/package-index.md) |
|
|
29
28
|
|
|
30
29
|
These are recorded facts, not a standing authorization to publish, promote a
|
|
31
30
|
channel, consume Finish authority, or create a release. Before a release
|