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 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, and audit lifecycle facts are maintained in governed registry and audit records; source documentation records only its own preparation boundary. Runtime injection remains **default-off / opt-in**. See [`docs/current/p3-integrity-roadmap.md`](docs/current/p3-integrity-roadmap.md), [`docs/MEASURED-CLAIMS.md`](docs/MEASURED-CLAIMS.md), and [`injection-value-status.json`](docs/current/injection-value-status.json).
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
 
@@ -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
@@ -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. Historical Consumer Authority records live under `release/`;
51
- their past PASS, NO-GO, or staging result does not provide current Finish
52
- authority, promotion, or channel permission.
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으로 설치된 plugin hook을 직접 호출해 `project-bootstrap` injection과 runtime evidence 생성을 확인한다.
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-10 release state:
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.2` | [`v0.8.2` release notes](v0.8.2-release-notes.md) |
26
- | npm `next` | `0.8.0-rc.1` | [`v0.8.0-rc.1` release notes](v0.8.0-rc.1-release-notes.md) |
27
- | npm `staging` | `0.8.0-beta.34` | [`v0.8.0-beta.34` release notes](v0.8.0-beta.34-release-notes.md) |
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