dsh-codex-connect 0.1.0-alpha.4.36 → 0.1.0-alpha.4.37

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.
Files changed (28) hide show
  1. package/docs/agent-notes/adaptive-runtime-status.md +57 -0
  2. package/docs/agent-notes/adaptive-runtime-validation-2026-09-18.md +45 -0
  3. package/docs/agent-notes/astra-context-audit.md +27 -0
  4. package/docs/agent-notes/issue-211-root-cause.md +70 -0
  5. package/docs/agent-notes/issue-215-install-triage-2026-09-19.md +43 -0
  6. package/docs/agent-notes/remember-controlled-probes-delivery.md +41 -0
  7. package/docs/agent-notes/remember-delivery-preparation-2026-09-19.md +49 -0
  8. package/docs/agent-notes/remember-recall-investigation-2026-09-18.md +48 -0
  9. package/docs/experiments/issue-211-doctor-diagnostic-2026-09-18.json +153 -0
  10. package/docs/experiments/issue-211-peer-resolution-2026-09-18.json +837 -0
  11. package/docs/experiments/native-compaction-durable-m15-2026-09-18-1317.json +129 -0
  12. package/docs/experiments/native-compaction-durable-m15-2026-09-18-1317.md +37 -0
  13. package/docs/experiments/native-compaction-lifecycle.md +1 -1
  14. package/docs/experiments/native-context-switch-acceptance.md +65 -0
  15. package/docs/experiments/remember-acceptance.md +60 -0
  16. package/docs/experiments/remember-controlled-acceptance-plan.md +95 -0
  17. package/docs/experiments/remember-controlled-live-m15-2026-09-18-9n7e.json +548 -0
  18. package/docs/experiments/remember-controlled-live-m15-2026-09-18-9n7e.md +33 -0
  19. package/docs/experiments/remember-controlled-offline-evidence.json +1408 -0
  20. package/docs/experiments/remember-recall-offline-diagnostics-2026-09-18.json +553 -0
  21. package/docs/experiments/remember-user-acceptance-plan.md +33 -0
  22. package/docs/release-notes/alpha-4.37.md +29 -0
  23. package/lib/bin.js +1 -1
  24. package/lib/client.js +117 -21
  25. package/lib/index.d.ts +1 -1
  26. package/lib/index.js +1 -1
  27. package/lib/{src-HfJnOVCK.js → src-CceJ4VNv.js} +2 -2
  28. package/package.json +1 -1
@@ -0,0 +1,57 @@
1
+ # Alpha 4.37 preparation checkpoint — 2026-09-19
2
+
3
+ #216 was normally squash-merged at `525e01b6e1c2b7d23ba70e29510ef1fd31fb0168`; the merge tree equals the reviewed `1e05677` tree. Main CI `35436177342` passed. This branch prepares 0.1.0-alpha.4.37. The maintainer subsequently authorized publication through the normal candidate-review/main-CI/OIDC workflow on 2026-09-19; a prepared branch is not publication evidence. `latest`, running services and live model calls remain outside scope. See [release readiness](../../.github/ALPHA_437_RELEASE_READINESS.md) and [draft release notes](../release-notes/alpha-4.37.md).
4
+
5
+ Remember's bounded real A/B restart controls are on main. The user preview on DSH 0.1.5-rc.1 also produced a real automatic native checkpoint and completed subsequent tool-assisted work. Its checkpoint survived a normal preview restart; the deployment check sent no post-restart model continuation. Broader #196/#65 acceptance remains open.
6
+
7
+ The checkpoint-only retry repair at local source `2e5469e` was applied only to the preview host. It is NOT installed by this plugin candidate. Stock alpha.2 support remains undeclared (#211).
8
+
9
+ Split #199 (`b0bbbbb`) and #200 (`8883bc5`) remain unmerged drafts; #200's seven checks passed, including supplemental CodeQL and separate Split host matrices. Think #167 remains unmerged. None is included in this release. #215 remains open for reporter recovery. The maintainer-supplied excerpt and an offline control identify a missing local archive in the web-profile dependency set, not a declared plugin dependency; this is not currently a confirmed 4.37 regression blocker. UND_ERR_DESTROYED causality and the reporter's environment remain unverified. See [the bounded triage](issue-215-install-triage-2026-09-19.md). #182 was closed as superseded/not planned, not verified support. #208 remains an enhancement; #194, #183 and #207 retain separate acceptance scopes.
10
+
11
+ The dated checkpoints below are historical and retain their original scope.
12
+
13
+ ---
14
+
15
+ # Remember delivery checkpoint — 2026-09-19
16
+
17
+ Remote main was rechecked at `574d55f2f990053c64fabd3fb8867318875183a4`: #212 and #213 are merged. This Remember test/evidence delivery is based on that main and does not change product `src/`, built `lib/`, dependencies, supported-host metadata or experimental defaults. The September 18 checkpoint below is historical, including its then-open PR and unaccepted-live statements.
18
+
19
+ At test source `ad7c93481096b4750ede77dc93a19b241b7f11e0`, the separately authorized [real A/B controls](../experiments/remember-controlled-live-m15-2026-09-18-9n7e.md) both passed on plain Luna / DSH `0.1.2-rc.1`. A verified retained-user persistence; B verified assistant-origin recall with no target in non-compaction replay input. Each used four requests and distinct writer/resume processes. The [acceptance entry](../experiments/remember-acceptance.md) is the current scope reference.
20
+
21
+ The [earlier oversized-user failure](../experiments/native-compaction-durable-m15-2026-09-18-1317.md) remains failed and unexplained. Astra, actual UI/fork behavior, repeated/automatic live compaction, tools/images, fault recovery, accounting and long-task quality are not accepted by these controls. #196, #65 and #195 remain open; Think/Split are not incorporated. The [limited user experience plan](../experiments/remember-user-acceptance-plan.md) has no provisioned service or further model budget.
22
+
23
+ Current delivery authorization covers review, local commit, branch push, one PR and status synchronization only. No merge, package release, deployment, daily upgrade, new credential access or additional real model call is authorized. Exact-head PR checks remain separate from the historical live evidence. The #211 host-side repair evidence was delivered through #212; this PR does not certify stock alpha.2 or close #211.
24
+
25
+ ---
26
+
27
+ # Adaptive runtime checkpoint — 2026-09-18
28
+
29
+ Repository: `franksong2702/dsh-codex-connect`. This is a dated checkpoint, not a live dashboard.
30
+ Source baseline: `eae9430f16f1707d8cefb76dec6e8344871d7684` (main, #210).
31
+ GitHub prerelease: `v0.1.0-alpha.4.36`, published 2026-09-17T14:15:19Z at that SHA.
32
+ The Astra/Remember delivery branch `franksong2702/astra-remember-delivery` is independently based on that main commit and is not part of that release. No current npm readback or deployment is implied. The original combined work remains preserved at `3de1b69`; compatibility tooling is delivered separately in [PR #212](https://github.com/franksong2702/dsh-codex-connect/pull/212).
33
+
34
+ ## Current tracks
35
+
36
+ | Track | Implemented / merged / release state | Remaining gate |
37
+ | --- | --- | --- |
38
+ | Remember #65 / #196 | #197 merged as `78c8f71`; included in the 4.36 release record; native creation remains default-off | Real provider plus JSONL/process restart in one run remains unaccepted. See [the bounded acceptance contract](../experiments/remember-acceptance.md). |
39
+ | Think #167 | Open, head `7315795`; conflicts with main. September 17 history-format repairs are present. | Separate mechanism from proposal policy; refresh complete current-head validation. CodeQL success alone is not full CI. Compaction/multi-agent composition is not supported by this prototype. |
40
+ | Split #199 | Draft design, head `8b52da6`; mergeable but behind main at review time | Review the narrow contract against the current baseline. |
41
+ | Split #200 | Draft implementation, head `694b58e`; targets #199's design branch, not main | Current checks do not include CodeQL. Synthetic Gateway/Chat approval flows exist; human acceptance, persistence and real task-value comparisons remain open. |
42
+
43
+ The umbrella is #195. These are separate experiments, not three composable switches. No Think/Split source was incorporated in this follow-up.
44
+
45
+ ## Compatibility
46
+
47
+ Declared hosts remain exactly `0.1.2-rc.1`, `0.1.5-alpha.1`, `0.1.5-rc.1`, `0.1.5-rc.2`.
48
+
49
+ [#211](https://github.com/franksong2702/dsh-codex-connect/issues/211) stays open: alpha.2 changed ordinary startup from disk links to a process-local resolver without preparing peers for the separate `plugin exec` process. A local host-side repair passed a fresh isolated installation and was submitted in [upstream Discussion #5537](https://github.com/deepseek-ai/deepseek-harness/discussions/5537#discussioncomment-18498638). This is not an official alpha.2 fix. The diagnostic changes, upstream patch and pre-split evidence belong to PR #212, not this branch; neither PR depends on the other to run its tests.
50
+
51
+ Original CI run `35322318396` retained only the JSON-framing symptom. Concrete missing-package evidence came from later local reproductions; it was not recovered from the original CI streams. #207 and #183 keep their separate full-acceptance scope. #182 is an older undeclared candidate, not an implicit supported-version range.
52
+
53
+ ## Authorized follow-up and boundaries
54
+
55
+ This delivery covers the [Astra context audit](astra-context-audit.md), scoped denial guidance and bounded Remember acceptance preparation. Preparing and pushing the two delivery PRs is authorized; merge, release, deployment, enabled experimental defaults, live credentials and new model requests are outside this task. The previously blocked real durable probe is not retried or routed elsewhere.
56
+
57
+ Capture fresh local validation separately from historical PR checks. A successful synthetic fixture does not establish user value, token savings or live provider acceptance. The [pre-split record](adaptive-runtime-validation-2026-09-18.md) preserves historical scope; use the delivery PR's exact head and Checks for its current remote CI.
@@ -0,0 +1,45 @@
1
+ # September 18 pre-split delivery evidence
2
+
3
+ ## Historical record, not current-head CI
4
+
5
+ This document preserves the earlier combined local investigation, before the compatibility and Astra/Remember deliveries were split into independent PRs. Statements below about unknown causes, blocked investigation and unpushed code describe that original checkpoint, not the latest project state. Later #211 cause, repair and upstream-submission evidence is tracked in [PR #212](https://github.com/franksong2702/dsh-codex-connect/pull/212). Use [the current checkpoint](adaptive-runtime-status.md) for scope and each PR's exact-head Checks for fresh CI. The real Remember restart probe remains unaccepted and is not retried by this delivery.
6
+
7
+ ## Identity
8
+
9
+ Repository baseline: `eae9430f16f1707d8cefb76dec6e8344871d7684`.
10
+ Local branch: `franksong2702/astra-goals-1-3-20260918`.
11
+ WebCodex project: `agent:mac-webcodex-trial:dsh-codex-connect-f53ce775-42955146`.
12
+ Workflow session: `wc_sess_cGTpW5Z54AMlbcBs`.
13
+ Runtime: Node `v22.22.3`, pnpm `10.30.3`; frozen-lockfile installation reused the existing package cache.
14
+
15
+ ## Delivered scope
16
+
17
+ 1. Doctor JSON framing diagnostics now distinguish empty, multiline and invalid JSON with byte/line counts, without raw-output/parser excerpts. Strict parsing, candidate classification, support metadata and privacy checks are retained. This improves investigation evidence; #211's upstream root cause is not fixed or claimed verified.
18
+ 2. A short contributor router and explicit development/product context audit were added. The only shipped-source change scopes denial guidance to the denied action/dependents while retaining no-bypass, exact-action approval, higher-priority restrictions and the existing breaker.
19
+ 3. The bounded durable probe checks actual direct package versions in parent and children before credentials/dispatch, reports those versions, and rejects unverified combinations. Current-state and finite Remember acceptance documentation replace stale entry-point descriptions without deleting historical evidence.
20
+
21
+ ## Executed validation
22
+
23
+ | Check | Actual result |
24
+ | --- | --- |
25
+ | New denial/durable evidence regression, before implementation | Two expected failures; nine existing tests passed. |
26
+ | Doctor contract, before implementation | Three new content-free diagnostic assertions failed out of 67. |
27
+ | Focused denial/durable/runtime validation after implementation | Three files, 19 tests passed. |
28
+ | Doctor contract after implementation | 67/67 assertions passed, plus the existing 11 synthetic child-routing scenarios. These are checker fixtures, not upstream host installations. |
29
+ | First full check | Failed at TypeScript because the new `.mjs` helper lacked a declaration. A `.d.mts` declaration was added; no test was disabled. |
30
+ | Final runtime-source `pnpm run check` | Exit 0, **94 test files / 897 tests**; workflow contracts, metadata/source lint, host/client typecheck, build, import/CLI checks, declared development-host compatibility and package checks passed. Job `wc_job_RcZsJFijHuBe9Tjl`. |
31
+ | Generated runtime inspection | All nine generated files matched the baseline exactly after substituting only the reviewed notice and shared-chunk filename references. No unrelated runtime/client changes. |
32
+
33
+ The full check includes real DSH JSONL write and distinct-process restore with synthetic provider responses, native-rejection/fallback blocking, automatic and in-process fork/tool regressions. Only the dedicated subprocess fixture is a process-restart proof. The full check's package validation covered 70 files before this documentation-only evidence file was added; final package/link/whitespace checks are performed at closeout. No claim is made of a fresh four-host/Node matrix, Chromium run or remote CI for this local source.
34
+
35
+ ## GitHub synchronization actually completed
36
+
37
+ Current dated checkpoints were prepended to #195, #167, #199, #200, #196 and #65; each API response was read back and matched the intended body. Original bodies were preserved, all issues/PRs stayed open, and draft states/base branches were not changed. #211 received [the diagnostic follow-up](https://github.com/franksong2702/dsh-codex-connect/issues/211#issuecomment-5727447681); it remains unresolved.
38
+
39
+ A transient GitHub read failed with a connection reset; the subsequent read succeeded before updates. No uncertain mutation was blindly repeated.
40
+
41
+ ## Unfinished and excluded
42
+
43
+ #211 still lacks actual alpha.2 doctor-output framing evidence. Inspection of the upstream DSH release package was blocked by the platform, stopped, and not retried through another execution route. The prior real Remember durable probe also remains blocked/unaccepted and was not retried. These are different blocked operations; neither establishes an account problem or a confirmed core runtime defect.
44
+
45
+ New real provider dispatches: **0**. No real credentials were accessed or changed. No user service, default capability, supported-version declaration, main branch, release or installed plugin was changed. Code remains on the local branch, not pushed or deployed by this follow-up. Live restart acceptance and measurable Astra/long-task benefits remain unproven.
@@ -0,0 +1,27 @@
1
+ # Astra prompt and context audit — 2026-09-18
2
+
3
+ Baseline: main `eae9430f16f1707d8cefb76dec6e8344871d7684`. Scope: repository development guidance and plugin-owned model-visible text; not a DSH core prompt rewrite, model benchmark or port of #167/#200.
4
+
5
+ ## Reference and decision
6
+
7
+ The [OpenAI guidance published September 11](https://developers.openai.com/blog/rethinking-skills-and-prompts-for-gpt-6-astra) recommends precise skill triggers, progressive disclosure and revisiting excessive procedural instructions. Applied here, that means a short task-oriented router and explicit completion boundaries, not a new global Astra persona. Safety and lifecycle constraints remain in code and in the host's authority model.
8
+
9
+ ## Two different context layers
10
+
11
+ | Surface actually inspected | Finding | Action |
12
+ | --- | --- | --- |
13
+ | Repository `AGENTS.md` / `SKILL.md` discovery | The baseline has neither tracked file. `.agents/notes` contains historical feature notes, not registered skills. | Add a short `AGENTS.md` router. Do not require reading the whole documentation tree or invent a skill installation. |
14
+ | `src/adapter.ts` | The normal adapter preserves the host/pi-ai message pipeline; Astra specialization is catalog/effort metadata, not an injected global procedure. | Keep host-owned system instructions and message conversion. |
15
+ | `src/native-compaction.ts` | Native compaction forwards `context.systemPrompt` and tool definitions; it removes the host's extra summarization instruction for the native operation. | Keep the lifecycle/protocol implementation unchanged. No duplicate repository documentation is injected. |
16
+ | `src/image-tool.ts` | The optional tool already describes one prompt, exact original preservation, conversation preview and service-default size/style. | Keep the concise description and programmatic argument/size guards. |
17
+ | `src/search.ts` | Standalone search submits the query through its provider contract, not a plugin-wide Astra system prompt. | Keep routing, configured model, limits and authentication unchanged. |
18
+ | `src/auto-review-backend.ts` / `src/auto-review-probe.ts` | Risk/authorization instructions belong to the dedicated reviewer or diagnostic request, not every main-agent turn. | Do not shorten safety policy or change the reviewer route to claim Astra optimization. |
19
+ | `src/auto-review.ts` denial notice | The previous wording said to stop/request input without explicitly separating a rejected dependency from independent authorized work. | Scope the stop to the action and its dependents; retain the no-workaround rule and require exact-action approval subject to higher-priority restrictions. |
20
+
21
+ ## Product change and regression boundary
22
+
23
+ Only the denial notice changes in the shipped-source layer. It still returns `rejected`; it does not create an approval, enqueue a retry, change the three-denial circuit breaker, or replace platform/host policy. Tests retain the existing one-shot approval and breaker behavior and add a single-denial assertion covering independent work, no implicit follow-up, and no new authority.
24
+
25
+ The guidance is shared by Codex models rather than Astra-only. This is a clearer boundary, not a measured latency/cost reduction. No claim is made that the model will consistently interpret the new wording better until a separately authorized behavioral comparison exists. Repository-agent ergonomics and user-facing product outcomes must not be reported as the same metric.
26
+
27
+ Think's proposed reasoning changes and Split's synthetic consent UI remain in their own unmerged PRs. This audit does not validate their prompts as deployed behavior or resolve their composition with Remember.
@@ -0,0 +1,70 @@
1
+ # Issue 211: missing profile-visible host peers
2
+
3
+ ## Downstream delivery checkpoint — 2026-09-18
4
+
5
+ The complete upstream patch and generic regression are posted in [Discussion #5537](https://github.com/deepseek-ai/deepseek-harness/discussions/5537#discussioncomment-18498638). This downstream PR contains diagnostic improvements, explicit candidate-verification tooling and historical evidence only. It does not apply the upstream patch to normal installations, expand supported versions or close #211. Astra/Remember changes are delivered separately.
6
+
7
+ All test counts, source/archive hashes and execution-boundary notes below describe their original pre-split runs. They are not current-head PR CI evidence; later investigation superseded the earlier unknown-cause statements. The PR Checks identify fresh delivery validation. Original investigation history is preserved.
8
+
9
+ ## Repair follow-up — 2026-09-18
10
+
11
+ The upstream cause is now confirmed and a local repair has passed fresh installation. Alpha.1's ordinary launcher default was `link`; alpha.2 changed it to `runtime`. The separate `dsh plugin ... exec` process did not inherit that process-local resolver. The source repair calls DSH's public profile-local materializer only for explicit CLI `exec`, inside the existing profile write lock, preserving native package identity and cancellation. It does not hand-link named peers or change Codex Connect's business code.
12
+
13
+ The portable upstream source patch, builder, candidate hashes and detailed results are recorded in repository path `patches/README.md`. A packed repaired `@deepseek-ai/dsh-plugin-manager` was installed into a fresh alpha.2 host before testing; no acceptance-installation file was patched afterward. The original failure was reproduced separately, eight repaired-command regressions passed, and the new installation passed doctor, models, disposal, Reserve, ten process-restart compaction phases and synthetic images. All four unmodified declared hosts also passed with the same Codex Connect archive. The local complete check passed 95 files / 905 tests.
14
+
15
+ This is a local upstream repair, not an update to the official alpha.2 registry package. No push, publication or daily-service replacement was performed. Issue 211 remains open for upstream delivery and later verification of an unmodified official release. The diagnostic-only findings below are preserved as historical evidence.
16
+
17
+ ## Finding — 2026-09-18
18
+
19
+ The local exact-DSH `0.1.6-alpha.2` reproduction fails during ESM module linking, before the doctor can produce a report. Its first actual exception is `ERR_MODULE_NOT_FOUND` for `@deepseek-ai/schemastery`. This is an installation/profile dependency-resolution failure, not malformed JSON, extra logging, lost CLI arguments or a model/account failure.
20
+
21
+ The plugin already declares `@deepseek-ai/schemastery` in `peerDependencies` and deliberately leaves it external in `tsdown.config.ts`. It is present in the isolated DSH installation at version `3.18.2`, but initially invisible from the installed plugin's package directory. Reclassifying it as an omitted declaration or blindly bundling host peers would not describe the observed problem.
22
+
23
+ The checker obscured this failure: candidate exit 1 is provisionally allowed so a valid `unverified` doctor report can continue, but the startup exception also exits 1. Parsing its empty stdout then replaced the useful stderr exception with the generic one-JSON-line error.
24
+
25
+ ## Evidence and causal control
26
+
27
+ Original GitHub run `35322318396`, alpha job `105527422364`, used main `eae9430f16f1707d8cefb76dec6e8344871d7684` and Node `24.15.0`. Its complete job log contains 431 lines, but neither doctor stream was retained separately; the artifacts API returned zero artifacts. The exact historical stderr cannot be recovered from that run.
28
+
29
+ New local observations use Node `22.22.3`, pnpm `10.30.3`, exact DSH `0.1.6-alpha.2`, and the plugin runtime from local commit `5128b7868f53b1a583553aee3125fdf755b8c16a`. This is a concrete reproduction, not a claim to have recovered the original Linux/Node 24 process. Within each comparison the installed plugin CLI bytes were checked against the built source; neither plugin nor host code changed between the control conditions.
30
+
31
+ | Observation | Result |
32
+ | --- | --- |
33
+ | Ordinary isolated checker, job `wc_job_ktzmpbSbAmf6gytH` | Exit 1; stdout is empty, zero bytes. |
34
+ | DSH `plugin exec` versus direct installed plugin CLI | Both exit 1 with the same missing `@deepseek-ai/schemastery` exception. |
35
+ | Read-only own-entry observer and explicit `--` separator | DSH forwards `doctor --json` correctly; the realpath main-entry comparison matches; the separator does not change the failure. |
36
+ | ESM resolution from the plugin package directory | All 22 declared peers are initially unresolved. Twenty-one exist in the exact host; `react` is not a direct host-root package. |
37
+ | Expose only host `schemastery` inside the disposable profile | The next missing peer becomes `@deepseek-ai/dsh-util-values`; this is broader than one missing library. |
38
+ | Expose the 21 existing host peers inside that same disposable profile | Doctor emits one 1,294-byte JSON report, credential state `missing`, compatibility `unverified`. Exit 1 remains expected for an undeclared host. |
39
+ | Existing installed-runtime check in the dependency-exposure control | Exit 0: eight models prepared, disposal and Reserve transitions verified, ten fresh native-compaction processes across none/zstd encodings, and synthetic direct/PTC image checks passed. |
40
+
41
+ The final experiment deliberately validates the **original failed doctor result**, even after the control succeeds. Its overall exit stays 1. The manual dependency-exposure control is not normal installation success and does not promote candidate support.
42
+
43
+ Sanitized machine-readable records:
44
+
45
+ - [Doctor/entry comparison](../experiments/issue-211-doctor-diagnostic-2026-09-18.json), job `wc_job_YySfh5MGD8JOWuAG`, SHA-256 `4a6ad4cd7876a1c4e3af1a6a470a419d063515c199f9881ee1cdd680da678c80`.
46
+ - [Peer-resolution counterfactual](../experiments/issue-211-peer-resolution-2026-09-18.json), job `wc_job_dsJNi-kcYVSc0i8Y`, SHA-256 `0de54233d7bab215aad9c8c3dd8189aa3c74a718fb7af9a9fcb9ef0603b7a951`.
47
+
48
+ The last comparison's packed-artifact SHA-256 is `08c8e37e31072fc9f9c94ecead174ff05eb392ae34cc721616a0c784b5a28841`. Different experiment runs can have different archive hashes because evidence documentation is included in the package; no runtime change was used to obtain the counterfactual recovery. Both recorded temporary installations were confirmed absent after completion. No live credentials or provider requests were used. Runtime responses and images remain synthetic, not live acceptance.
49
+
50
+ ## Delivered diagnostic correction
51
+
52
+ `validateDoctorResult` now recognizes a single `ERR_MODULE_NOT_FOUND` startup exception naming one of this project's declared runtime packages when an undeclared candidate returns exit 1 and empty stdout. It reports only the error code and allowlisted package name, never the raw stderr, importer path or private text. Unknown/ambiguous errors keep the content-free framing diagnostic. Nonempty stdout still goes through strict JSON and schema validation, and infrastructure failures retain their classification.
53
+
54
+ The regression first failed one of 75 checker assertions, then passed all 75 after the correction. The existing 11 synthetic child-routing scenarios also passed. The temporary observation callback and experimental link/trace helper were removed after recording the evidence; no dependency linking is inserted into the normal checker or product.
55
+
56
+ Final `pnpm run check` passed on the completed checker/source changes: 94 files / 897 tests, typecheck, lint, build and package gates; job `wc_job_mvDMGKy8frhHrAxO`. The package check included 74 files. Replaying the saved actual process error through the final validator produced the expected safe missing-package diagnostic. Six local documentation links and the whitespace check passed. Generated `lib/` and runtime `src/` are unchanged from this task's starting commit. The GitHub cause report was posted and read back as issue-comment `5727830405`; #211 remained open. This paragraph is a documentation-only addition after that full check.
57
+
58
+ Ordinary fresh-install reproduction of the unresolved candidate is still:
59
+
60
+ ```sh
61
+ DSH_VERSION=0.1.6-alpha.2 DSH_UNDECLARED_CANARY_VERSION=1 node scripts/check-dsh-install.mjs
62
+ ```
63
+
64
+ This uses a disposable keyless installation. The new error is expected to identify the missing declared package rather than merely empty JSON; the final diagnostic change is separately validated against the saved actual process output without repeating an installation.
65
+
66
+ ## Remaining repair boundary
67
+
68
+ The observed break is between the isolated host's installed peer packages and the profile/plugin's module-resolution context. The exact upstream source change that stopped exposing those peers has not been inspected or established. The earlier denied upstream-source inspection was not retried. This follow-up used the ordinary permitted installer and black-box process observations instead.
69
+
70
+ A production repair must restore the supported host/profile peer-resolution contract, preserving shared package identity, then pass a **fresh unmodified installation** and the current host matrix. Manual symlinks in an experiment are not that repair; copying peer packages or silently accepting arbitrary JSON is not an adequate substitute. Keep #211 open with cause localized and repair pending. No new supported version, release, merge, push, deployment or daily-service change is made here.
@@ -0,0 +1,43 @@
1
+ # Issue #215 installation triage — 2026-09-19
2
+
3
+ ## Evidence and limits
4
+
5
+ The maintainer supplied the report excerpt directly after the earlier detailed issue-body read was blocked. This triage uses that supplied text, repository manifests, official documentation and a separate offline pnpm control. It does not recover or retry the denied issue-body read. The reporter's full hub.log, profile manifests, exact pnpm version and exact Git-install commit remain unavailable.
6
+
7
+ Reported environment: Windows x64, Node 24.16.0, DSH 0.1.6-alpha.2, Plugin Hub 1.4.2. The summary names a Git-based plugin add, whereas its attempted-channels section lists removal. The complete command/rollback order cannot be inferred from this summary.
8
+
9
+ ## Findings
10
+
11
+ The first concrete blocking error in the supplied excerpt is ENOENT while opening the local archive `dsh-computer-use-0.2.0-win1.tgz`. The package manager calls this a direct dependency of the web profile, not a Codex Connect dependency. A referenced path component or file was unavailable. How the reference entered that profile and whether the archive was moved/deleted or its path supplied incorrectly remain unconfirmed. Private absolute paths are intentionally omitted here.
12
+
13
+ Neither current HEAD `525e01b6e1c2b7d23ba70e29510ef1fd31fb0168`, the local 4.37 candidate, nor published 4.36 source `eae9430f16f1707d8cefb76dec6e8344871d7684` declares `dsh-computer-use`, `dsh-plugin` or `dsh-skill-manager` in dependency sections. The current lockfile and plugin patch contain no `dsh-computer-use` reference. Runtime dependencies are unchanged. This is not verification of the reporter's unrecorded exact Git revision.
14
+
15
+ UND_ERR_DESTROYED means an operation used an already destroyed Undici client; it does not identify who destroyed it or why. The registry warnings could be cleanup/cancellation consequences or a separate transport problem. The excerpt and the control below do not prove that causal link. Sharing an Undici dependency does not attribute this failure to Codex Connect. The auto-generated labels `plugin-side install failure` and `Key error: ERR_DESTROYED` are not established root-cause findings.
16
+
17
+ Stock DSH 0.1.6-alpha.2 remains undeclared and tracked separately by #211. The missing archive is not established as a duplicate of #211's plugin-exec peer-resolution problem. Repairing an archive reference does not certify alpha.2 compatibility.
18
+
19
+ ## Offline control
20
+
21
+ Executed on M15 / macOS / Node 22.22.3 / pnpm 10.30.3 at 2026-09-19T10:25:14Z. Only two metadata-only synthetic tarballs were used; no Codex Connect, DSH or Hub runtime was loaded. Every add used `--offline --ignore-scripts --ignore-workspace`, an isolated temporary home/store and empty npm configuration.
22
+
23
+ | Scenario | Exit | Result |
24
+ | --- | --- | --- |
25
+ | Add the new fixture to a clean project | 0 | Success. |
26
+ | Add the same fixture while another direct dependency references a missing local archive | 254 | ENOENT names the missing existing archive; direct-dependency diagnostic present. |
27
+ | Restore only that archive and repeat the same add in the same project | 0 | Success. |
28
+
29
+ None of these runs emitted UND_ERR_DESTROYED. This reproduces a package-manager mechanism, not the reporter's Windows/Hub stack or full warning sequence. No live model requests or reporter configuration changes occurred. Temporary files were removed. A sanitized receipt is in ignored `node_modules/.cache/issue215-local-tarball-repro.json`.
30
+
31
+ ## Maintainer response and release disposition
32
+
33
+ Keep #215 open pending reporter confirmation. Ask the reporter to check the archive using PowerShell `Test-Path -LiteralPath`, inspect the relevant dsh-computer-use entry in the profile package.json/pnpm-lock.yaml, and preserve backups before restoring the trusted archive or intentionally correcting/removing its stale reference through the supported plugin-manager workflow. Do not delete the whole .dsh home, blindly remove lockfiles or use an arbitrary substitute archive.
34
+
35
+ If installation still fails, request the exact package-manager version and the command-boundary/error section of hub.log, with credentials, auth URLs and unnecessary private paths redacted. Clarify add versus remove. Persistent registry warnings should be investigated separately after the local source blocker is addressed.
36
+
37
+ For 4.37 on the unchanged declared-supported host set, this is **not currently a confirmed release-blocking plugin regression**. Preparation may proceed with this evidence-backed disposition. Keep the issue open and reassess if a clean supported-host reproduction identifies a plugin defect. Do not claim that 4.37 fixes the archive, the network warnings or alpha.2 compatibility. Candidate review, artifact/compatibility records, remote CI, merge and publication authorization remain separate gates.
38
+
39
+ ## Primary references
40
+
41
+ - Node.js ENOENT definition: https://nodejs.org/api/errors.html#common-system-errors
42
+ - pnpm 10 install / removed file-dependency targets: https://pnpm.io/10.x/cli/install
43
+ - Undici ClientDestroyedError: https://undici.nodejs.org/api/Errors#clientdestroyederror
@@ -0,0 +1,41 @@
1
+ # Remember controlled probes: local implementation and offline evidence
2
+
3
+ ## Status
4
+
5
+ Implemented after `263bfcd866fc028798e39d588939ca899d564ba1`, whose parent is merged-main reference `574d55f2f990053c64fabd3fb8867318875183a4`. This delivery is local engineering preparation, not provider acceptance. The [original September 18 live failure](../experiments/native-compaction-durable-m15-2026-09-18-1317.md) remains failed; its three-request grant is exhausted. No new live requests or credential reads were performed.
6
+
7
+ The native execution channel recovered and actually returned Node `22.22.3`. This does not explain the earlier missing tunnel or the earlier live recall mismatch.
8
+
9
+ ## Implementation
10
+
11
+ The [controlled acceptance specification](../experiments/remember-controlled-acceptance-plan.md) is now implemented in the existing `scripts/native-compaction-durable-smoke.mjs`, with a shared helper `scripts/native-compaction-controlled-cases.mjs`. There is one credential/transport/persistence implementation, not a second copied runner.
12
+
13
+ - `--case=retained-user`: a short user message carries the target. The normal retained-user projection survives the real checkpoint and JSONL restore. The synthetic continuation reads the target from the actual retained request item; this is a persistence control, not opaque-state recall.
14
+ - `--case=assistant-origin`: the target is extracted from the actual baseline assistant answer. A real anchor turn moves it into the older prefix. The native request must contain it only in an assistant item; the restored request must contain no plaintext target. The synthetic native response derives a clearly marked fixture envelope from that assistant input, and the fresh-process responder reads the answer only from the replayed envelope. No comparator/expected-target parameter is supplied to this responder. This is not real encryption or evidence of provider semantics.
15
+ - Default/`--case=oversized-user`: the old 65,000-space user-message boundary, prompt, three-dispatch ceiling and strict recall criterion remain separate and tested. Its earlier failure is not erased or explained retrospectively.
16
+
17
+ A/B each follow baseline, anchor, native compaction, process exit/restore, continuation: four dispatches maximum, with no retry or fallback dispatch. The real DSH range selector is configured with `retainTokens: 0` only inside this isolated fixture. It still retains the newest item and rejects non-shrinking replacements. No host method or production retention code is overridden. The first prompt requests 600-750 words of neutral library prose; accepted material is bounded to 400-1100 words / 12,000 UTF-8 bytes, with Agent maxTokens 2048 and compaction maxTokens 1024. These settings are not a claim about actual live token usage.
18
+
19
+ The actual JSONL is parsed to locate a checkpoint structurally identical to the committed in-memory checkpoint; merely finding a marker string no longer proves A/B persistence. New-process restore checks the full checkpoint digest. Before dispatch, the retained prefix and opaque item must match their persisted identities. The target must not survive in another active message or request metadata. New assistant events are required after the continuation start; historical correct answers do not satisfy the gate. Recall still requires `reply.trim() === target`, with no case folding or substring acceptance.
20
+
21
+ Controlled live invocations require an explicit case, Codex-login selection, and run id. An owner-only exclusive claim survives temporary cleanup in ignored `.remember-acceptance-runs/`; a reused id, including reuse for another case, is refused before credentials. This is same-id duplicate prevention, not permission to mint another id after failure. Fault-injection flags are offline-only. Neither the wrapper nor this document authorizes live execution. The historical oversized live path is unchanged and still needs separate authorization before any invocation.
22
+
23
+ ## Validation obtained
24
+
25
+ The first focused run passed 59 tests over three files, including 31 new controlled-case tests. On the final code, `pnpm run check` completed with **98 test files / 965 passing tests**, plus metadata/source lint, host/client typechecking, build, CLI checks, compatibility check and package check. Original WebCodex job: `wc_job_z9tnGGA5qqaK_EVS`, exit 0. Node: `22.22.3`. This note is a later documentation addition; package/link checks are repeated at closeout. No new Node 24, browser, installed-host matrix or remote CI result is claimed.
26
+
27
+ [New machine-readable offline observations](../experiments/remember-controlled-offline-evidence.json) summarize 11 actual fixture runs on the final probe/helper hashes:
28
+
29
+ - Two positive controls finish four simulated dispatches and two distinct successful processes, with exact recall and physical checkpoint equality.
30
+ - Five negative wire fixtures omit the selected target, leak it in plaintext, lose retained-user input, alter the replayed opaque item, or remove it. They stop before the affected synthetic transport, after only two or three simulated dispatches. `guard_failure` records the precise cause even when the host wraps it as an agent/compaction failure.
31
+ - Four case-only/wrapped/wrong/empty answers still fail after four simulated dispatches with `RECALL_MISMATCH_NO_RETRY`. Restore success remains independently recorded.
32
+
33
+ Additional unit tests reject ambiguous assistant-generated labels, a correct historical answer without a new turn, marker-only physical-file checks, invalid/duplicate flags, unsafe run-ledger symlinks and reused run ids. These unit checks are not mislabeled as actual crash/disk-fault injections.
34
+
35
+ Original live JSON evidence remains SHA-256 `c8884b6b7fbeedb44f67615b0bfca9c96d4600203929da6627755e27d448aa91`. New offline evidence is SHA-256 `e5af6ff65cf3df5e3121c2e6533caec95be1321a5315a05e9c16ead36522a40f`. Public observations contain classifications, booleans, counts and source identities, not targets, answers, opaque contents or credential paths.
36
+
37
+ ## Next gate and limits
38
+
39
+ A proposed new live sequence is A first, then B only if A passes, using the previously designated M15 Codex login, plain Luna/low, at most four requests per case (eight total), stopping on any failure or platform denial. It requires fresh user authorization and the platform's normal approval; no unused budget from an old attempt is carried forward. There is no automatic multi-case runner. No manual user product acceptance is required at this engineering stage.
40
+
41
+ A/B live success would establish bounded same-account/same-model text behavior, not Astra, tools, images, UI forks, crash recovery, repeated compaction, savings or long-task quality. C remains a separately authorized retention-boundary test. This delivery does not push, open a PR, merge, publish, deploy or upgrade daily services, and does not enable experimental defaults.
@@ -0,0 +1,49 @@
1
+ # Remember delivery preparation — 2026-09-19
2
+
3
+ ## Resumed delivery review — 2026-09-19
4
+
5
+ After the user's explicit continuation, the normal WebCodex issue-read and evidence-review operations completed. The earlier safety-blocked call remains a historical event; it is not reclassified as a successful execution. Current issue reads found #196, #65 and #195 open, and no existing PR for this delivery branch. Main was still `574d55f`.
6
+
7
+ The review verified all four new JSON evidence files for raw target/answer, opaque-content, credential and private-path fields; no such payloads were found. Original A/B and failed-run digests remain unchanged. A/B report assertions, distinct process identities, usage sums and probe/helper source hashes match the historical `ad7c934` execution. Product code, built output, dependencies, compatibility metadata and workflows remain identical to the main baseline.
8
+
9
+ The outstanding local notes below describe the prior interrupted preparation. The resumed task will commit the reviewed evidence and navigation updates, publish one PR and prepend bounded status notes to the three trackers without closing them. PR creation is not a release. Final remote CI must be checked against the PR's exact head; the prior local checks are not remote evidence. See the PR and its read-back status notes for actual submission/check results.
10
+
11
+ ## Historical observed state and publication blocker
12
+
13
+ The current task is authorized to consolidate the local Remember diagnostics/controlled probes and their existing live evidence into one PR, synchronize the relevant issue status, and prepare a limited user experience plan. It does not authorize another live experiment, merge, release, deployment or daily environment upgrade.
14
+
15
+ The successful initial observation found local branch `franksong2702/remember-offline-diagnostics-20260918` at `ad7c93481096b4750ede77dc93a19b241b7f11e0`, with preceding diagnostic commit `263bfcd866fc028798e39d588939ca899d564ba1`. Remote main was `574d55f2f990053c64fabd3fb8867318875183a4`. The open-PR read returned #167, #199 and #200; no duplicate Remember delivery PR was observed. Uncommitted changes included the prior live A/B reports, their acceptance entry and existing local handoff records.
16
+
17
+ A subsequent combined `run_script` request to read issues #196/#65/#195, inspect the live-report structure/hash and review part of the local diff was blocked because OpenAI could not determine the request's safety. It returned no command result. Those reads were not retried, subdivided or moved to another execution route. Their dependent issue writes and public delivery confirmation remain stopped. The blocker is not evidence that GitHub denied write permissions, that the local Runner disconnected, or that the acceptance tests failed. No PR, push, remote CI run or issue update was completed by this preparation.
18
+
19
+ ## Fresh local validation
20
+
21
+ The independent `pnpm run check` completed successfully under original job `wc_job_xfGLXCEKw2ikT4Qr`, exit 0: **98 test files / 965 tests**, plus the command's lint, typecheck, build, workflow-contract, CLI, compatibility and package checks. The reported package check at that point counted 83 files. This note is a documentation addition after that command. This is fresh local validation of the current code, not remote CI and not additional live-provider acceptance.
22
+
23
+ The existing A/B evidence narrative and controlled-case tests were read directly. They distinguish normal retained-user replay from assistant-origin opaque-only recall; the oversized-user failure remains separately recorded. Live test source identity is `ad7c934`, not a future delivery commit. No current claim is made that the blocked publication/privacy audit completed.
24
+
25
+ ## Proposed PR text — not submitted
26
+
27
+ **Title:** `test: deliver bounded Remember restart controls and live acceptance evidence`
28
+
29
+ **Scope:** Consolidate the prior two local test-tool commits, the original failed oversized-user record, request-derived synthetic controls, content-free recall diagnostics, and the separately recorded successful live A/B controls. Include a clear current-state entry and the [limited user acceptance plan](../experiments/remember-user-acceptance-plan.md). Related to #196, #65 and #195; no automatic closing keywords.
30
+
31
+ **What is established:** At source `ad7c934`, ordinary Luna on direct DSH `0.1.2-rc.1` / pi-ai `0.84.4` / Cordis `4.0.2` passed one retained-user persistence control and one assistant-origin opaque-only recall control. Each used four requests and distinct writer/resume processes. Physical checkpoint equality, replay identity and a newly generated exact answer were recorded. A intentionally carries the answer in retained user input; B's replay contains no plaintext target outside its opaque item. Eight requests total and 6,737 backend-reported tokens belong to that historical run, not to this PR task.
32
+
33
+ **What is not established:** The oversized-user failure remains unexplained. These cases do not certify Astra, arbitrary user-message deletion, repeated/automatic compaction, tools, images, UI forks, crashes/disk failure, long-task quality, pricing or savings. The native compaction engine, model choices, credential logic, supported-host declaration and default-off behavior are not intended to change in this delivery.
34
+
35
+ **Validation:** Cite the fresh local check above as local evidence only. Before publication, complete the outstanding evidence/privacy and final-diff review. After creating the PR, require its exact final commit's normal Linux Node 22/24 tests and four-host matrices, browser regression, Windows contract, dependency review and CodeQL; do not substitute historical checks. No remote checks were run by this task.
36
+
37
+ **Boundaries:** No additional credential reads or live requests. Preserve one-shot run claims and old outcome records. Do not include `handoff/`, `.remember-acceptance-runs/`, local repair archives or actual session material in the public patch. Do not merge, publish, deploy, upgrade or enable experiments by virtue of opening the PR.
38
+
39
+ ## Proposed issue updates — not submitted
40
+
41
+ For **#196**, record the bounded Luna A/B persistence and opaque-recall gate as supported by the original execution evidence after publication review, while keeping broader unchecked acceptance items explicit. Do not close the issue in this task or mark untested checklist entries complete.
42
+
43
+ For **#65**, link the same bounded result as a feasibility/lifecycle data point; retain oversized-user semantics, repeated compaction, long-task quality and accounting/value questions as open research.
44
+
45
+ For **#195**, advance only the Remember status to reflect its limited A/B evidence and delivery-PR stage. Do not imply Think/Split composition is supported or any new default is enabled. Read the actual current issue text before applying an update; that read is still blocked in this task.
46
+
47
+ ## Next user experience gate
48
+
49
+ The [experience plan](../experiments/remember-user-acceptance-plan.md) is saved, but no UI entry is provisioned. The intended user task is a short disposable planning conversation with three ordinary constraints, one rejected alternative and one pending action. The engineer verifies actual compaction and shutdown/reopen; the user judges whether the assistant still respects those constraints and continues the pending work. No user installation or shell commands are part of that plan. Serving the UI and spending further model requests require separately scoped authorization.
@@ -0,0 +1,48 @@
1
+ # Remember recall mismatch: offline investigation — 2026-09-18
2
+
3
+ ## Status and scope
4
+
5
+ The [original three-request live attempt](../experiments/native-compaction-durable-m15-2026-09-18-1317.md) remains a failed acceptance with `RECALL_MISMATCH_NO_RETRY`. Its JSON and narrative are preserved byte-for-byte; the exact returned answer was not retained and cannot be reconstructed from token counts. No new live attempt is authorized or executed by this investigation. #196 and #65 remain unaccepted for their outstanding scopes.
6
+
7
+ This work starts from merged main `574d55f2f990053c64fabd3fb8867318875183a4` on local branch `franksong2702/remember-offline-diagnostics-20260918`. It changes the probe, its diagnostics and tests, not the shipped compaction engine, model settings, dependencies or default feature flags. The previous combined branch and live evidence are preserved.
8
+
9
+ ## Findings established offline
10
+
11
+ 1. The existing probe puts the only target label in a user message containing 65,000 spaces and asks the first assistant to reply only ACK. It deliberately exceeds the plugin's 64,000 **serialized UTF-8 byte** retention limit. `retainedNativeCompactionInput` consequently skips that whole user item. This is a user-retention stress condition, not just a persistence check.
12
+ 2. New observations through the real adapter/AgentLoop with synthetic responses show the native wire input contains the target in a user item, not an assistant item. The retained projection contains zero user items. The restored outgoing request contains exactly one unchanged opaque item, but no plaintext target. These new observations are offline evidence, not retroactively captured wire bodies from the earlier live run.
13
+ 3. The earlier successful bridge-only live smoke used an assistant-generated target, absent from retained user input. Its information source and persistence scope differ. That success does not validate dropping the padded user item, and the later failure does not by itself prove JSONL corruption.
14
+ 4. The synthetic responder reads the target from the private fixture state and returns it directly. It does not interpret encrypted model state. Its success can establish plumbing and diagnostic behavior, never semantic preservation by the provider.
15
+ 5. Previously a resume-phase recall assertion failed before appending that phase to the success-only `phases` array. That made `fresh_processes_completed: 1` ambiguous to a reader. New `restore_observation` records successful different-process/checkpoint checks before evaluating recall, without changing the meaning of the historical success counter.
16
+
17
+ ## Protocol reference and limits
18
+
19
+ The OpenAI Codex source was inspected at immutable commit `7498521d288b9b3b96ffba4eedf089d8d6e06a84`, file [`codex-rs/core/src/compact_remote_v2.rs`](https://github.com/openai/codex/blob/7498521d288b9b3b96ffba4eedf089d8d6e06a84/codex-rs/core/src/compact_remote_v2.rs): line 75 defines a 64,000-token retained-message budget; lines 501–527 build the next history from retained items plus the compaction output; lines 552–595 select retained user and certain other messages. The downstream byte-limited projection is deliberately not that full policy. This code is reference evidence, not an execution of the official Codex retention algorithm in our fixture.
20
+
21
+ The [public compaction guide](https://developers.openai.com/api/docs/guides/compaction), read on September 18, also distinguishes server-side and standalone output handling. Standalone output is a complete compacted window and must not be pruned. Our probe uses the Codex `compaction_trigger` flow, not the public standalone endpoint; those different APIs must not be treated as interchangeable contracts.
22
+
23
+ These sources make the retention difference important to investigate. They do **not** reveal the encrypted item's contents or establish that the provider never preserves user information. The exact cause of the historical mismatch remains unresolved: formatting, model recall and retention assumptions cannot be separated from that old report alone.
24
+
25
+ ## Diagnostic corrections
26
+
27
+ `scripts/native-compaction-recall-diagnostics.mjs` is IO-free. It emits only fixed classifications, booleans and byte/item counts, never the target, answer, fragments, encodings, paths or opaque contents.
28
+
29
+ - Recall classes distinguish exact match, case-only match, a target with extra text, case plus extra text, a different 12-character label, empty output, and other unmatched output. Substring presence is only a hint and is **not** certified semantic recall or format-only failure.
30
+ - The passing condition is still exactly `reply.trim() === label`. No case conversion, substring matching or punctuation removal grants a pass.
31
+ - Each actual request records target presence by role, outside the compaction item, and in the selected retained projection. Native dispatch rejects a missing target in the user input; resume rejects target leakage outside opaque input or a changed compaction item. These gates only become stricter.
32
+ - Provider final-message text, when present in a completed output item, is compared with the adapter-extracted answer in memory. Only classification and equality indicators persist. Missing provider text is unknown, not a fabricated matching result.
33
+ - Successful restore evidence and recall diagnostics are written to the existing private ledger before a mismatch is thrown. Parent cleanup copies only the content-free report, then removes the temporary session as before.
34
+ - Four explicit `--offline-recall=...` fault cases require `--offline`. They cannot be combined with live mode, rejection mode, duplicate cases or unknown values. Live random-label generation, model, account source, three-dispatch ceiling, no-refresh policy, stopping behavior and prompts are unchanged.
35
+
36
+ ## Executed evidence
37
+
38
+ The initial focused run passed 28 tests: 15 pure diagnostics/retention checks and 13 probe tests. Four deliberately mismatching replies still exit 1 after three **simulated** dispatches, retain successful restore evidence, report the expected difference class, and clean up. The normal offline control still exits 0. Invalid live/fixture combinations terminate at argument validation before credentials or transport.
39
+
40
+ Final local `pnpm run check` passed on the completed probe/helper/test changes: **97 files / 934 tests**, typecheck, lint, build, CLI and package checks; Node `22.22.3`, job `wc_job_iQMv6emB_AKoWxK_`. The package check included 78 files. This paragraph is a documentation-only addition after that run. No new browser run, installed-host matrix, remote CI or live model validation is claimed. All original live outcome bytes remain unchanged.
41
+
42
+ [Machine-readable offline observations](../experiments/remember-recall-offline-diagnostics-2026-09-18.json) are separately labelled new fixtures. They do not relabel the original live attempt. That file records exact probe/helper digests and the unchanged historical report digest `c8884b6b7fbeedb44f67615b0bfca9c96d4600203929da6627755e27d448aa91`.
43
+
44
+ ## Next acceptance design
45
+
46
+ Do not repeat the old padded-user test unchanged and interpret a pass/fail as a pure persistence conclusion. First separate a normal retained-user continuation control from a test whose target occurs only in an assistant/tool item that is actually inside the compacted prefix. Verify the latter is not simply the host-retained newest message; appending another turn may require a different, explicitly approved request budget. Keep the original padded-user case as a separate retention-boundary stress test.
47
+
48
+ A future real run needs a new explicit budget and the normal execution approval. The earlier three-request budget is exhausted. Any such run must retain these diagnostics and original strict assertions; this offline work supplies no new permission, provider success, savings estimate, Astra acceptance or long-task-quality claim.
@@ -0,0 +1,153 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "node": "v22.22.3",
4
+ "providerRequests": 0,
5
+ "evidence": [
6
+ {
7
+ "invocation": "host-plugin-exec",
8
+ "exitCode": 1,
9
+ "signal": null,
10
+ "stdoutBytes": 0,
11
+ "stderrBytes": 1190,
12
+ "stdoutLines": 0,
13
+ "singleDoctorJson": false,
14
+ "credentialMissing": false,
15
+ "compatibility": null,
16
+ "helpOutput": false,
17
+ "traces": [],
18
+ "stderrSummary": "node:internal/modules/package_json_reader:314\nthrow new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null);\n^\n\nError [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/schemastery' imported from /private<temporary-directory>/dsh-codex-connect-install-mcurNP/dsh-home/profiles/web/node_modules/dsh-codex-connect/lib/src-B2ExizRo.js\nat Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9)\nat packageResolve (node:internal/modules/esm/resolve:768:81)\nat moduleResolve (node:internal/modules/esm/resolve:855:18)\nat defaultResolve (node:internal/modules/esm/resolve:985:11)\nat #cachedDefaultResolve (node:internal/modules/esm/loader:747:20)\nat ModuleLoader.resolve (node:internal/modules/esm/loader:724:38)\nat ModuleLoader.getModuleJobForImport (node:internal/modules/esm/loader:320:38)\nat ModuleJob._link (node:internal/modules/esm/module_job:182:49) {\ncode: 'ERR_MODULE_NOT_FOUND'\n}\n\nNode.js v22.22.3\ndsh: pnpm failed; diagnostics: <temporary-directory>/dsh-codex-connect-install-mcurNP/dsh-home/profiles/web/.plugin-manager/logs/operation-XltGda/pnpm.log\n",
19
+ "missingExport": null,
20
+ "executionError": null
21
+ },
22
+ {
23
+ "invocation": "direct-plugin-cli",
24
+ "exitCode": 1,
25
+ "signal": null,
26
+ "stdoutBytes": 0,
27
+ "stderrBytes": 1008,
28
+ "stdoutLines": 0,
29
+ "singleDoctorJson": false,
30
+ "credentialMissing": false,
31
+ "compatibility": null,
32
+ "helpOutput": false,
33
+ "traces": [],
34
+ "stderrSummary": "node:internal/modules/package_json_reader:314\nthrow new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null);\n^\n\nError [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/schemastery' imported from /private<temporary-directory>/dsh-codex-connect-install-mcurNP/dsh-home/profiles/web/node_modules/dsh-codex-connect/lib/src-B2ExizRo.js\nat Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9)\nat packageResolve (node:internal/modules/esm/resolve:768:81)\nat moduleResolve (node:internal/modules/esm/resolve:855:18)\nat defaultResolve (node:internal/modules/esm/resolve:985:11)\nat #cachedDefaultResolve (node:internal/modules/esm/loader:747:20)\nat ModuleLoader.resolve (node:internal/modules/esm/loader:724:38)\nat ModuleLoader.getModuleJobForImport (node:internal/modules/esm/loader:320:38)\nat ModuleJob._link (node:internal/modules/esm/module_job:182:49) {\ncode: 'ERR_MODULE_NOT_FOUND'\n}\n\nNode.js v22.22.3\n",
35
+ "missingExport": null,
36
+ "executionError": null
37
+ },
38
+ {
39
+ "invocation": "traced-host-plugin-exec",
40
+ "exitCode": 1,
41
+ "signal": null,
42
+ "stdoutBytes": 0,
43
+ "stderrBytes": 1709,
44
+ "stdoutLines": 0,
45
+ "singleDoctorJson": false,
46
+ "credentialMissing": false,
47
+ "compatibility": null,
48
+ "helpOutput": false,
49
+ "traces": [
50
+ {
51
+ "stage": "startup",
52
+ "argvTail": [
53
+ "plugin",
54
+ "--profile",
55
+ "web",
56
+ "exec",
57
+ "dsh-codex-connect",
58
+ "doctor",
59
+ "--json"
60
+ ],
61
+ "preserveSymlinks": false,
62
+ "execFlags": []
63
+ },
64
+ {
65
+ "stage": "startup",
66
+ "argvTail": [
67
+ "exec",
68
+ "dsh-codex-connect",
69
+ "doctor",
70
+ "--json"
71
+ ],
72
+ "preserveSymlinks": false,
73
+ "execFlags": []
74
+ },
75
+ {
76
+ "stage": "startup",
77
+ "argvTail": [
78
+ "doctor",
79
+ "--json"
80
+ ],
81
+ "preserveSymlinks": false,
82
+ "execFlags": []
83
+ },
84
+ {
85
+ "stage": "plugin-entry",
86
+ "argvTail": [
87
+ "doctor",
88
+ "--json"
89
+ ],
90
+ "urlMatchesArgv": false,
91
+ "urlMatchesRealArgv": true
92
+ }
93
+ ],
94
+ "stderrSummary": "node:internal/modules/package_json_reader:314\nthrow new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null);\n^\n\nError [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/schemastery' imported from /private<temporary-directory>/dsh-codex-connect-install-mcurNP/dsh-home/profiles/web/node_modules/dsh-codex-connect/lib/src-B2ExizRo.js\nat Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9)\nat packageResolve (node:internal/modules/esm/resolve:768:81)\nat moduleResolve (node:internal/modules/esm/resolve:855:18)\nat defaultResolve (node:internal/modules/esm/resolve:985:11)\nat #cachedDefaultResolve (node:internal/modules/esm/loader:747:20)\nat ModuleLoader.resolve (node:internal/modules/esm/loader:724:38)\nat ModuleLoader.getModuleJobForImport (node:internal/modules/esm/loader:320:38)\nat ModuleJob._link (node:internal/modules/esm/module_job:182:49) {\ncode: 'ERR_MODULE_NOT_FOUND'\n}\n\nNode.js v22.22.3\ndsh: pnpm failed; diagnostics: <temporary-directory>/dsh-codex-connect-install-mcurNP/dsh-home/profiles/web/.plugin-manager/logs/operation-5Q7WjE/pnpm.log\n",
95
+ "missingExport": null,
96
+ "executionError": null
97
+ },
98
+ {
99
+ "invocation": "traced-direct-plugin-cli",
100
+ "exitCode": 1,
101
+ "signal": null,
102
+ "stdoutBytes": 0,
103
+ "stderrBytes": 1233,
104
+ "stdoutLines": 0,
105
+ "singleDoctorJson": false,
106
+ "credentialMissing": false,
107
+ "compatibility": null,
108
+ "helpOutput": false,
109
+ "traces": [
110
+ {
111
+ "stage": "startup",
112
+ "argvTail": [
113
+ "doctor",
114
+ "--json"
115
+ ],
116
+ "preserveSymlinks": false,
117
+ "execFlags": []
118
+ },
119
+ {
120
+ "stage": "plugin-entry",
121
+ "argvTail": [
122
+ "doctor",
123
+ "--json"
124
+ ],
125
+ "urlMatchesArgv": true,
126
+ "urlMatchesRealArgv": true
127
+ }
128
+ ],
129
+ "stderrSummary": "node:internal/modules/package_json_reader:314\nthrow new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null);\n^\n\nError [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/schemastery' imported from /private<temporary-directory>/dsh-codex-connect-install-mcurNP/dsh-home/profiles/web/node_modules/dsh-codex-connect/lib/src-B2ExizRo.js\nat Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9)\nat packageResolve (node:internal/modules/esm/resolve:768:81)\nat moduleResolve (node:internal/modules/esm/resolve:855:18)\nat defaultResolve (node:internal/modules/esm/resolve:985:11)\nat #cachedDefaultResolve (node:internal/modules/esm/loader:747:20)\nat ModuleLoader.resolve (node:internal/modules/esm/loader:724:38)\nat ModuleLoader.getModuleJobForImport (node:internal/modules/esm/loader:320:38)\nat ModuleJob._link (node:internal/modules/esm/module_job:182:49) {\ncode: 'ERR_MODULE_NOT_FOUND'\n}\n\nNode.js v22.22.3\n",
130
+ "missingExport": null,
131
+ "executionError": null
132
+ },
133
+ {
134
+ "invocation": "host-plugin-exec-with-separator",
135
+ "exitCode": 1,
136
+ "signal": null,
137
+ "stdoutBytes": 0,
138
+ "stderrBytes": 1190,
139
+ "stdoutLines": 0,
140
+ "singleDoctorJson": false,
141
+ "credentialMissing": false,
142
+ "compatibility": null,
143
+ "helpOutput": false,
144
+ "traces": [],
145
+ "stderrSummary": "node:internal/modules/package_json_reader:314\nthrow new ERR_MODULE_NOT_FOUND(packageName, fileURLToPath(base), null);\n^\n\nError [ERR_MODULE_NOT_FOUND]: Cannot find package '@deepseek-ai/schemastery' imported from /private<temporary-directory>/dsh-codex-connect-install-mcurNP/dsh-home/profiles/web/node_modules/dsh-codex-connect/lib/src-B2ExizRo.js\nat Object.getPackageJSONURL (node:internal/modules/package_json_reader:314:9)\nat packageResolve (node:internal/modules/esm/resolve:768:81)\nat moduleResolve (node:internal/modules/esm/resolve:855:18)\nat defaultResolve (node:internal/modules/esm/resolve:985:11)\nat #cachedDefaultResolve (node:internal/modules/esm/loader:747:20)\nat ModuleLoader.resolve (node:internal/modules/esm/loader:724:38)\nat ModuleLoader.getModuleJobForImport (node:internal/modules/esm/loader:320:38)\nat ModuleJob._link (node:internal/modules/esm/module_job:182:49) {\ncode: 'ERR_MODULE_NOT_FOUND'\n}\n\nNode.js v22.22.3\ndsh: pnpm failed; diagnostics: <temporary-directory>/dsh-codex-connect-install-mcurNP/dsh-home/profiles/web/.plugin-manager/logs/operation-SBUtmZ/pnpm.log\n",
146
+ "missingExport": null,
147
+ "executionError": null
148
+ }
149
+ ],
150
+ "dshVersion": "0.1.6-alpha.2",
151
+ "pluginArtifactSha256": "ed1a08eff0f2f0b12f451b5471ea94f9327c619659fb8676fff6014852476cd4",
152
+ "ownCliBytesVerified": true
153
+ }