persona-harness 0.8.38 → 0.8.39
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/dist/context-delivery/opencode-context-hooks.js +2 -9
- package/dist/context-delivery/opencode-context-hooks.js.map +1 -1
- package/docs/current/context-program-status.md +27 -17
- package/docs/current/release/consumer-authority-current-acceptance.json +1 -1
- package/docs/current/release/v0.8.39-release-notes.md +32 -0
- package/package.json +1 -1
- package/packages/shared-skills/package.json +1 -1
|
@@ -3,6 +3,7 @@ import { resolveContainedPath } from "../io/bounded-path-walker.js";
|
|
|
3
3
|
import { extractTargetFile, isInstalledPersonaHarnessPackageFile } from "../io/tool-target.js";
|
|
4
4
|
import { ContextDeliveryStore } from "./context-delivery-store.js";
|
|
5
5
|
const CONTEXT_DELIVERY_MARKER = "[Persona Harness Context]";
|
|
6
|
+
const CONTEXT_DELIVERY_PART_ID = "persona-harness-context";
|
|
6
7
|
export function createOpenCodeContextHooks(options) {
|
|
7
8
|
const store = options.store ?? new ContextDeliveryStore();
|
|
8
9
|
return {
|
|
@@ -61,13 +62,8 @@ function injectContextBlock(output, sessionID, block) {
|
|
|
61
62
|
const message = output.messages[index];
|
|
62
63
|
if (message?.info.role !== "user" || message.info.sessionID !== sessionID)
|
|
63
64
|
continue;
|
|
64
|
-
const textPart = message.parts.find(isTextPart);
|
|
65
|
-
if (textPart !== undefined) {
|
|
66
|
-
textPart.text = `${block}\n\n---\n\n${textPart.text}`;
|
|
67
|
-
return true;
|
|
68
|
-
}
|
|
69
65
|
message.parts.unshift({
|
|
70
|
-
id:
|
|
66
|
+
id: CONTEXT_DELIVERY_PART_ID,
|
|
71
67
|
messageID: message.info.id,
|
|
72
68
|
sessionID,
|
|
73
69
|
synthetic: true,
|
|
@@ -99,7 +95,4 @@ function asRecord(value) {
|
|
|
99
95
|
function isRecord(value) {
|
|
100
96
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
101
97
|
}
|
|
102
|
-
function isTextPart(part) {
|
|
103
|
-
return part.type === "text" && typeof part.text === "string";
|
|
104
|
-
}
|
|
105
98
|
//# sourceMappingURL=opencode-context-hooks.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode-context-hooks.js","sourceRoot":"","sources":["../../src/context-delivery/opencode-context-hooks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"opencode-context-hooks.js","sourceRoot":"","sources":["../../src/context-delivery/opencode-context-hooks.ts"],"names":[],"mappings":"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"}
|
|
@@ -22,7 +22,7 @@ Current compatibility package: [`persona-harness@0.8.36`](https://www.npmjs.com/
|
|
|
22
22
|
Current compatibility lineage: [#412](https://github.com/jyt6640/persona-harness/issues/412) delivered through [#441](https://github.com/jyt6640/persona-harness/pull/441)
|
|
23
23
|
Historical pre-integration audit source: `f677a635040ad55d8b7d25abab280c5703a153ea`
|
|
24
24
|
Program issue: [#389](https://github.com/jyt6640/persona-harness/issues/389)
|
|
25
|
-
Remaining bounded work: hosted
|
|
25
|
+
Remaining bounded work: the terminal, non-retryable hosted-observation record in [#410](https://github.com/jyt6640/persona-harness/issues/410), the metadata-only structural observer boundary in [#449](https://github.com/jyt6640/persona-harness/issues/449), and the not-started independent-value protocol from [#429](https://github.com/jyt6640/persona-harness/issues/429). The deterministic local P0 boundaries integrated by #443 are closed.
|
|
26
26
|
|
|
27
27
|
## Purpose
|
|
28
28
|
|
|
@@ -167,12 +167,20 @@ evidence rather than a description of current protected main.
|
|
|
167
167
|
released as `persona-harness@0.8.37` from
|
|
168
168
|
`a82b85ddef7e9fd9518348bff16deb38f53b4676`.
|
|
169
169
|
- **Product verdict: `INCONCLUSIVE`.** The release and local deterministic
|
|
170
|
-
evidence do not
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
-
|
|
174
|
-
|
|
175
|
-
|
|
170
|
+
evidence do not establish Context delivery or independent user value. #410
|
|
171
|
+
ran its one authorized real OpenCode session, but its privacy-preserving
|
|
172
|
+
observation could not classify delivery; the #429 status intentionally has
|
|
173
|
+
no independent-user observations.
|
|
174
|
+
- **Hosted-observation verdict: `hosted-unavailable`.** The #410 one-shot
|
|
175
|
+
completed its safe read and same-session checks, then retained only a
|
|
176
|
+
sanitized OpenCode export. OpenCode `v1.17.16` redacts every text part in
|
|
177
|
+
`export --sanitize`, so the absence of a Context marker in that export does
|
|
178
|
+
not prove that the transform did not inject one. The run is terminal and
|
|
179
|
+
cannot be retried as a debugger.
|
|
180
|
+
- **Next allowed step:** no Context host action starts automatically. #449
|
|
181
|
+
introduces a metadata-only structural observer boundary, but any future
|
|
182
|
+
observation still needs its own explicit Delivery Control predicate and a
|
|
183
|
+
semantically new consumer/session. It cannot reuse or replay #410.
|
|
176
184
|
|
|
177
185
|
## Current Delivery Order
|
|
178
186
|
|
|
@@ -197,11 +205,13 @@ evidence rather than a description of current protected main.
|
|
|
197
205
|
as stable `v0.8.37` on
|
|
198
206
|
`a82b85ddef7e9fd9518348bff16deb38f53b4676`. The release does not create
|
|
199
207
|
host-delivery or product-value evidence.
|
|
200
|
-
7. **Remaining independent evidence:** #410
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
208
|
+
7. **Remaining independent evidence:** #410's named predicate ran once on a
|
|
209
|
+
released `0.8.33` consumer and reached terminal `hosted-unavailable`.
|
|
210
|
+
Because the retained OpenCode `v1.17.16` `export --sanitize` result redacts
|
|
211
|
+
every text part, its marker count is not a delivery verdict; #410 cannot be
|
|
212
|
+
retried. #429 owns the preregistered external-validation schema; its current
|
|
213
|
+
empty status remains `INCONCLUSIVE` until a future independent observation
|
|
214
|
+
meets the fixed protocol.
|
|
205
215
|
|
|
206
216
|
Only one public command, schema, resolver, adapter, CI, script, or documentation
|
|
207
217
|
boundary is changed per child issue. A child issue closes only when its stated
|
|
@@ -283,7 +293,7 @@ was not modified.
|
|
|
283
293
|
| P0 implementation release lineage | #414 delivered stable `v0.8.33` through #437. Its immutable tag, GitHub Release, npm `latest`, canonical tar, and provenance bind to `9b80a45070be10659150095cf701a6f375bc6600`. | Historical P0 implementation release evidence does not prove live host delivery. |
|
|
284
294
|
| Deterministic comparison release lineage | #411 delivered stable `v0.8.34` through #439. Its immutable tag, GitHub Release, npm `latest`, canonical tar, and provenance bind to `19c397e4fed5b1cce7d024fbcc51350e9676105f`. | It records only deterministic technical results; host/model/operational values remain unavailable and product verdicts remain `INCONCLUSIVE`. |
|
|
285
295
|
| Current P0 integration release | #442 delivered stable `v0.8.37` through #443. Its immutable tag, GitHub Release, npm `latest`, canonical tar, and provenance bind to `a82b85ddef7e9fd9518348bff16deb38f53b4676`. | It closes the deterministic local P0 boundaries, not #410's real host observation or external product-value evidence. |
|
|
286
|
-
| Hosted Context delivery |
|
|
296
|
+
| Hosted Context delivery | #410's named predicate was satisfied for a registry-installed `0.8.33` consumer bound to `9b80a45070be10659150095cf701a6f375bc6600`; one real OpenCode `v1.17.16` session completed its safe sequence. The retained `export --sanitize` redacts all text parts, so its zero marker count cannot establish delivery absence. | The one-shot is terminal `hosted-unavailable` and non-retryable. No Context delivery or product-value claim is supported; any future observation needs a separately authorized, metadata-only host-observer contract. |
|
|
287
297
|
| Other follow-ups | #421 is delivered as stable `v0.8.35` through #440; #412 is delivered as stable `v0.8.36` through #441; the #429 protocol is released through #443 with zero observations. | None of these facts manufacture host or user-value evidence. |
|
|
288
298
|
|
|
289
299
|
Product-value verdict remains **INCONCLUSIVE**. Local composition, package,
|
|
@@ -326,9 +336,9 @@ expand the released Context delivery scope or change its default-off boundary.
|
|
|
326
336
|
|
|
327
337
|
No deterministic local Context P0 candidate remains open after #443. Do not
|
|
328
338
|
reopen the completed #390–#403 integration, #414 release, or #442 integration
|
|
329
|
-
paths.
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
infer host delivery or product value from local composition tests, catalog
|
|
339
|
+
paths. #410's one real OpenCode observation is terminal and cannot be retried;
|
|
340
|
+
its sanitized-export result is insufficient to attribute Context delivery or
|
|
341
|
+
absence. The #429 protocol remains `INCONCLUSIVE` with zero observations; do
|
|
342
|
+
not infer host delivery or product value from local composition tests, catalog
|
|
333
343
|
registration, release provenance, an empty external-validation status, or
|
|
334
344
|
historical evidence.
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
# v0.8.39 Release Notes
|
|
2
|
+
|
|
3
|
+
## Metadata-Only Context Delivery Signal
|
|
4
|
+
|
|
5
|
+
This release makes an explicit Context delivery structurally observable in a
|
|
6
|
+
sanitized OpenCode session export without exposing Context or user text. When
|
|
7
|
+
an enabled, safe Context delivery is selected, Persona Harness now prepends a
|
|
8
|
+
separate synthetic text part with the stable identifier
|
|
9
|
+
`persona-harness-context`; it leaves the original user text part unchanged.
|
|
10
|
+
|
|
11
|
+
OpenCode's sanitized export redacts text content while retaining structural
|
|
12
|
+
part fields. The resulting bounded signal is limited to the synthetic part's
|
|
13
|
+
identifier, type, and synthetic flag.
|
|
14
|
+
|
|
15
|
+
## Safety And Scope Boundaries
|
|
16
|
+
|
|
17
|
+
- Context remains explicit opt-in and default-off.
|
|
18
|
+
- Disabled, unsafe, malformed, budget-blocked, duplicate-suppressed, and
|
|
19
|
+
cleared-session paths remain absent or fail closed.
|
|
20
|
+
- The Context adapter still does not invoke workflow, shell/process, network,
|
|
21
|
+
GitHub, evidence, authority, credential, or external-observation behavior.
|
|
22
|
+
- This release does not replay issue #410, retain transcript content, create
|
|
23
|
+
user evidence, or claim Context delivery, token savings, or product value.
|
|
24
|
+
- A future real-host observation remains separately governed and needs a new
|
|
25
|
+
Delivery Control predicate and a semantically new consumer/session.
|
|
26
|
+
|
|
27
|
+
## Verification
|
|
28
|
+
|
|
29
|
+
The release path verifies the isolated Context adapter, the separate synthetic
|
|
30
|
+
part and unchanged original text structure, type safety, documentation and
|
|
31
|
+
release-policy checks, a fresh isolated tarball installation, protected CI,
|
|
32
|
+
canonical package identity, and registry provenance.
|
package/package.json
CHANGED