dsh-completion-guard 0.4.2 → 0.4.3
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 +10 -1
- package/CHANGELOG.zh-CN.md +10 -1
- package/README.md +12 -18
- package/README.zh-CN.md +12 -18
- package/bin/dsh-completion-guard-host-lock.mjs +15 -2
- package/dist/domain/index.d.ts +2 -2
- package/dist/domain/index.js +2 -2
- package/dist/{domain-BXB_BPQg.js → domain-DebMrpyX.js} +222 -47
- package/dist/{index-DNF0OTi-.d.ts → index-BZYtgqlu.d.ts} +27 -4
- package/dist/index.d.ts +8 -2
- package/dist/index.js +95 -21
- package/docs/ARCHITECTURE.md +3 -1
- package/docs/COMPATIBILITY.md +17 -15
- package/docs/HOST_LOCK_UPGRADE.md +83 -0
- package/docs/LOCAL_ACCEPTANCE.md +16 -6
- package/docs/SEMANTIC_COMPATIBILITY.md +4 -2
- package/manifests/action-manifest.v1.json +1 -1
- package/manifests/supported-host.v1.json +835 -14
- package/package.json +2 -2
package/docs/LOCAL_ACCEPTANCE.md
CHANGED
|
@@ -2,28 +2,38 @@
|
|
|
2
2
|
|
|
3
3
|
Each section names its evidence boundary. Deterministic checks, isolated DSH_HOME composition, native-platform lifecycle runs, model sessions, CI, and public release readback are separate claims; none substitutes for another.
|
|
4
4
|
|
|
5
|
-
##
|
|
5
|
+
## Host-bound acceptance for the 0.4.3 line
|
|
6
6
|
|
|
7
|
-
This
|
|
7
|
+
This line separates core and optional-provider acceptance while retaining completion feedback and root-confirmed rebinding. Local regression tests exercise compound capture, source authority, one-to-many replacement, stale/partial replay, target matching, large pages, snapshot changes, small recovery budgets and qualified pending boundaries. Local tests and the existence of a host driver do not establish native DSH acceptance.
|
|
8
8
|
|
|
9
|
-
The versioned entrypoint is `scripts/native_acceptance.py`. Its default `portable_artifact` profile checks exact source/tgz identity, isolated installation, installed-file parity, second-install no-op and JavaScript syntax. `--gate-profile host_bound --runtime-root <audited-runtime>` additionally creates isolated Web and Headless profiles, injects and reads back their host locks, then runs `scripts/native_host_probe.mjs` inside the real DSH composition. The probe uses the host AgentRegistry, ToolRuntime and durable Session services for nonempty test certification, generic refusal, rebind confirmation, history queries, compact/resume and a qualified pending boundary. Web checks
|
|
9
|
+
The versioned entrypoint is `scripts/native_acceptance.py`. Its default `portable_artifact` profile checks exact source/tgz identity, isolated installation, installed-file parity, second-install no-op and JavaScript syntax. `--gate-profile host_bound --runtime-root <audited-runtime>` additionally creates isolated Web and Headless profiles, injects and reads back their host locks, then runs `scripts/native_host_probe.mjs` inside the real DSH composition. The probe uses the host AgentRegistry, ToolRuntime and durable Session services for nonempty test certification, generic refusal, rebind confirmation, history queries, compact/resume and a qualified pending boundary. Web checks require an owned-host restart, a different host process, persisted-session recovery and listener cleanup; they do not depend on a market restart API. The installed launcher shim is checked separately.
|
|
10
|
+
|
|
11
|
+
Supplied daily target paths use the [read-only installation preflight](HOST_LOCK_UPGRADE.md#check-a-headless-profile-before-installation). A dependency-free rc.1 Headless target may have no private map or lockfile; the preflight verifies its installation-owned bundles and labels that state separately. The isolated lifecycle still installs Guard before checking its private graph, lock and second-install no-op. A successful target preflight alone is not a native gate result or proof of live adoption.
|
|
10
12
|
|
|
11
13
|
The host driver deliberately makes no model request. It first checks that the normal Headless task driver stops with `MISSING_CREDENTIAL` in the isolated environment, then disables that task driver for the separate real-service probe. A required package-update probe installs an inert local fixture at version 1, then clarifies and confirms a generic requirement, applies version 2 through the real producer/action tools, independently reads it back and requires a nonempty certificate. Capability skips appear in the returned annex. Never treat a synthetic test or an empty probe case set as a passed native run.
|
|
12
14
|
|
|
13
15
|
After exact-candidate portability CI passes and one clean commit's tgz has been frozen, a native owner can run the following with Python 3.11+ (the same artifact is used on both platforms):
|
|
14
16
|
|
|
15
17
|
```text
|
|
16
|
-
python scripts/native_acceptance.py --gate-profile host_bound --repo-root <clean-checkout> --runtime-root <audited-runtime> --artifact <frozen.tgz> --artifact-sha256 <sha256> --source-commit <full-commit> --output <outside-repository-annex.json>
|
|
18
|
+
python scripts/native_acceptance.py --gate-profile host_bound --repo-root <clean-checkout> --runtime-root <audited-runtime> --web-cohort <exact-core-id> --headless-cohort <exact-core-id> --web-market-version <exact-version-or-none> --artifact <frozen.tgz> --artifact-sha256 <sha256> --source-commit <full-commit> --output <outside-repository-annex.json>
|
|
17
19
|
```
|
|
18
20
|
|
|
21
|
+
Use `--target-web-profile` and `--target-headless-profile` together to compare actual consumer targets read-only before isolated installation. Both core identities are explicit; the Web market version is also explicit, and Headless installs no market. A target mismatch fails instead of selecting a historical fixture.
|
|
22
|
+
|
|
19
23
|
The driver creates a new temporary DSH_HOME, explicit temporary HOME/USERPROFILE and credential-free environment; it does not select or enable a daily profile. It binds the annex to the artifact, source commit, host lock and probe bytes, and checks owned processes, ports and temporary-file cleanup. Do not run it from a dirty source tree, substitute a rebuilt package, or copy raw temporary logs into the repository.
|
|
20
24
|
|
|
21
|
-
The
|
|
25
|
+
The historical 0.4.2 candidate at `6b92b3b7a5eb642686df9f2a1b4d66d54455f503` passed [candidate CI](https://github.com/GreenLv/dsh-completion-guard/actions/runs/34128172642). Its frozen tgz SHA-256 was `9d3e0a0bb948b137f27303a98ad38d3ecc8a901c5c579ce7e3b3c664530c3b4a`. Native macOS and Windows each passed all 28 required host-bound gates, including the normal Headless credential boundary and package-update probe, with cleanup passed. Both annexes retained the `real_model_request` capability skip. These are historical candidate results, not a release or evidence for later package bytes.
|
|
22
26
|
|
|
23
|
-
The annex uses `native-acceptance/v2`
|
|
27
|
+
The core annex uses `native-acceptance/v2`, gate profile `host_bound_core`, and the DSH-specific `capability_skips`, `host_driver_sha256`, `host_lock_digests`, `host_lock_policy` and `market_interface` fields. A generic closed v2 validator correctly rejects those extensions. The historical 0.4.2 `host_bound` annex retains its original `dsh-host-bound/v1` contract; v1 and v2 are not interchangeable. A consumer that provides the explicit `dsh-host-bound/v2` contract profile must validate the original annex with independently supplied expected commit, artifact SHA-256, and probe SHA-256; do not remove fields to make it pass. `host_driver_sha256` identifies `native_host_probe.mjs`, not the Python wrapper. Windows checkout CRLF bytes can produce a different probe hash from macOS LF bytes; bind each platform to its actual reviewed file bytes. Failed probe annexes may additionally contain bounded `host_probe_failures` diagnostics. The profile consumer is separate tooling and is not installed by this npm package.
|
|
24
28
|
|
|
25
29
|
Every subsequent frozen package needs its own CI and same-byte native annexes, recorded outside its packaged documentation. Publication and public readback are separate gates. A disabled daily installation remains disabled until the user separately requests an upgrade and enablement.
|
|
26
30
|
|
|
31
|
+
## Historical 0.4.2 release
|
|
32
|
+
|
|
33
|
+
The [0.4.2 release](https://github.com/GreenLv/dsh-completion-guard/releases/tag/v0.4.2) binds commit `df19d84db35369afb5b3a8041b6e5051db367155` and tgz SHA-256 `87deac307922fdff3391f1d6e0fa1b537c5b57e3a99e1d0943b0dc44b4e90068`. Its published annexes and public readback are specific to those bytes and the old market-1.41 fixture. They do not establish compatibility with a market-1.44 daily profile or the new core-lock policy.
|
|
34
|
+
|
|
35
|
+
Direct market HTTP lifecycle checks exercise the installed market's actual interface. They do not substitute for the independent loaded-instance binding required by Guard's optional restart adapter. An unavailable adapter must leave an explicit restart requirement pending while core work remains protected.
|
|
36
|
+
|
|
27
37
|
## v0.4.0 release gates (2026-09-02, passed)
|
|
28
38
|
|
|
29
39
|
Version 0.4.0 targets DSH `0.1.2-alpha.3` with dshmarket `1.39.0` and Cordis `4.0.2`. The repository does not place a candidate's own commit, checksum, or public status inside that candidate's packaged documentation: those facts are generated after the package bytes are frozen and are attached to the GitHub Release.
|
|
@@ -126,9 +126,11 @@ DSH needs a deliberate follow-up, not a line-for-line port. The highest-value sh
|
|
|
126
126
|
|
|
127
127
|
Work-unit scope and correction attribution are also shared semantic gaps and should gain portable regression cases before implementation. Stop-disposition handling is partly equivalent already, so it should be compared with the 0.11.0 cases before code is changed. Codex cache repair, Hook trust, and plugin installation remain Codex-only. Incident-corpus tooling may remain owned by Codex, while reviewed platform-neutral cases continue to be mirrored here.
|
|
128
128
|
|
|
129
|
-
## 0.4.2
|
|
129
|
+
## 0.4.2 and 0.4.3 product boundaries
|
|
130
130
|
|
|
131
|
-
The 0.4.2
|
|
131
|
+
The 0.4.2 release retained these exact mirrored fixtures and the recorded upstream pin. Its DSH-native rebinding, bounded checkpoint output, and recovery changes do not establish parity with later Codex releases. `upstream-deltas.json` is the dated 2026-09-03 comparison snapshot: its `currentRelease` fields name the releases compared then, not a live latest-version lookup. Refreshing that comparison requires a separate upstream audit; it does not happen merely because either product releases a newer version.
|
|
132
|
+
|
|
133
|
+
The 0.4.3 core policy changes DSH-specific manifest values, not the shared digest-v3 encoding or byte-mirrored fixtures. Core manifest version 2 and `dsh-core/v1` produce a fresh identity after actual-graph inspection. Legacy cohorts remain historical inputs. Market service adapter `context-guard.service.v2` uses version `2.0.0`; old restart credentials cannot become new-instance credentials. Package apply remains a disk-state operation, and unavailable restart work remains pending.
|
|
132
134
|
|
|
133
135
|
## Validation boundaries
|
|
134
136
|
|