@junghanacs/entwurf 0.25.1 → 0.30.0

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 (77) hide show
  1. package/AGENTS.md +1 -1
  2. package/BASELINE.md +1 -1
  3. package/CHANGELOG.md +73 -0
  4. package/DELIVERY.md +1 -1
  5. package/README.md +178 -674
  6. package/VERIFY.md +16 -15
  7. package/demo/README.md +1 -1
  8. package/docs/acp-backend-rail.md +6 -2
  9. package/docs/external-mcp-host.md +1 -1
  10. package/docs/setup-clean-host.md +346 -10
  11. package/mcp/entwurf-bridge/dist/mcp/entwurf-bridge/src/index.js +27 -4
  12. package/mcp/entwurf-bridge/dist/pi-extensions/lib/acp/backend-adapter.js +12 -1
  13. package/mcp/entwurf-bridge/dist/pi-extensions/lib/entwurf-peers-render.js +1 -1
  14. package/mcp/entwurf-bridge/dist/pi-extensions/lib/entwurf-v2-decider.js +2 -2
  15. package/mcp/entwurf-bridge/dist/pi-extensions/lib/entwurf-v2-mailbox.js +2 -2
  16. package/mcp/entwurf-bridge/dist/pi-extensions/lib/entwurf-v2-production.js +2 -2
  17. package/mcp/entwurf-bridge/dist/pi-extensions/lib/entwurf-v2-surface.js +3 -5
  18. package/mcp/entwurf-bridge/dist/pi-extensions/lib/entwurf-v2-visible-resume.js +3 -3
  19. package/mcp/entwurf-bridge/dist/pi-extensions/lib/fresh-call-composition.js +13 -6
  20. package/mcp/entwurf-bridge/dist/pi-extensions/lib/meta-mailbox-body.js +1 -1
  21. package/mcp/entwurf-bridge/dist/pi-extensions/lib/mux-fresh-call.js +3 -3
  22. package/mcp/entwurf-bridge/src/index.ts +30 -3
  23. package/package.json +11 -11
  24. package/pi-extensions/entwurf-control.ts +50 -637
  25. package/pi-extensions/lib/acp/backend-adapter.ts +13 -1
  26. package/pi-extensions/lib/entwurf-fact-provider.ts +2 -2
  27. package/pi-extensions/lib/entwurf-mcp-server.ts +74 -0
  28. package/pi-extensions/lib/entwurf-peers-render.ts +1 -1
  29. package/pi-extensions/lib/entwurf-v2-decider.ts +2 -2
  30. package/pi-extensions/lib/entwurf-v2-mailbox.ts +2 -2
  31. package/pi-extensions/lib/entwurf-v2-production.ts +3 -3
  32. package/pi-extensions/lib/entwurf-v2-surface.ts +3 -5
  33. package/pi-extensions/lib/entwurf-v2-visible-resume.ts +3 -3
  34. package/pi-extensions/lib/fresh-call-composition.ts +13 -6
  35. package/pi-extensions/lib/meta-mailbox-body.ts +1 -1
  36. package/pi-extensions/lib/mux-fresh-call.ts +3 -3
  37. package/run.sh +163 -50
  38. package/scripts/check-entwurf-peers-surface.ts +8 -15
  39. package/scripts/check-entwurf-self-address.ts +7 -11
  40. package/scripts/check-entwurf-v2-surface.ts +20 -112
  41. package/scripts/check-fresh-call-dispatch.ts +12 -13
  42. package/scripts/check-gate-qualification.ts +248 -4
  43. package/scripts/check-install-surface.ts +3 -2
  44. package/scripts/check-mux-resume-call.ts +24 -35
  45. package/scripts/check-pi-bridge-sender.ts +130 -0
  46. package/scripts/check-pi-mcp-bridge.ts +251 -0
  47. package/scripts/lib/codex-fresh-live-protocol.ts +17 -5
  48. package/scripts/lib/codex-fresh-source-receipts.ts +21 -2
  49. package/scripts/lib/mutation-qualify.ts +269 -44
  50. package/scripts/lib/pi-mcp-bridge-probe.mjs +170 -0
  51. package/scripts/meta-bridge-doctor.sh +16 -5
  52. package/scripts/mutants/acp-foreground-only.json +17 -0
  53. package/scripts/mutants/codex-native.json +11 -11
  54. package/scripts/mutants/control-send-receipt.json +6 -4
  55. package/scripts/mutants/copilot-birth.json +2 -1
  56. package/scripts/mutants/fresh-call-dispatch.json +3 -14
  57. package/scripts/mutants/gate-qualification.json +59 -0
  58. package/scripts/mutants/mux-fresh-call.json +43 -45
  59. package/scripts/mutants/mux-resume-call.json +11 -35
  60. package/scripts/mutants/pack-install.json +15 -4
  61. package/scripts/mutants/pi-bridge-sender.json +54 -0
  62. package/scripts/mutants/pi-floor.json +6 -2
  63. package/scripts/mutants/pi-mcp-bridge.json +36 -0
  64. package/scripts/mutants/pi-mcp-register.json +51 -0
  65. package/scripts/mutants/v2-surface.json +6 -6
  66. package/scripts/resident-rpc-drive.ts +5 -1
  67. package/scripts/smoke-acp-bundled-mcp-live.ts +3 -1
  68. package/scripts/smoke-acp-cortex-live.ts +3 -1
  69. package/scripts/smoke-acp-session-reuse-live.ts +29 -12
  70. package/scripts/smoke-acp-socket-citizen-live.ts +3 -1
  71. package/scripts/smoke-acp-v2-send-live.ts +3 -1
  72. package/scripts/smoke-codex-fresh-live.ts +20 -1
  73. package/scripts/smoke-entwurf-chain-live.ts +6 -2
  74. package/scripts/smoke-entwurf-v2-matrix-live.ts +3 -1
  75. package/scripts/smoke-herdr-raw-install-live.sh +1 -1
  76. package/scripts/smoke-mux-lifecycle-live.ts +1 -1
  77. package/scripts/smoke-resident-garden-guard.sh +3 -1
@@ -29,9 +29,16 @@ import { randomBytes } from "node:crypto";
29
29
  * missing HERE is not an unwired convenience, it is a release blocker. */
30
30
  export const FRESH_CALL_BACKENDS = ["pi", "claude-code", "copilot", "omp", "codex"];
31
31
  /**
32
- * The callback tool NAME differs per backend and that is not cosmetic: native pi exposes the
33
- * capability directly (`entwurf_v2`), while an MCP-hosted session reaches it under whatever
34
- * name that harness composes. Naming the wrong one costs the whole first turn.
32
+ * The callback tool NAME differs per backend and that is not cosmetic: every session reaches the
33
+ * capability under whatever name its harness composes for the `entwurf-bridge` MCP server, and
34
+ * naming the wrong one costs the whole first turn.
35
+ *
36
+ * `[측정 2026-10-01, pi 0.99.2]` pi reaches the verbs through its BUILT-IN MCP (#125 — the native
37
+ * `registerTool` copies are gone), and Pi composes `mcp__<server>__<tool>` replacing everything
38
+ * outside `[A-Za-z0-9_]` with `_` (`extensions/mcp/tools.ts:82-90`, tag v0.99.2): the server key
39
+ * stays `entwurf-bridge`, but the model-facing names are `mcp__entwurf_bridge__entwurf_*` — the
40
+ * same spelling Codex composes, and NOT Claude Code's. 0.99.1 kept the hyphen; the floor moved to
41
+ * 0.99.2 as a hard cut — one literal pi dialect, chosen over an alias or a version router.
35
42
  *
36
43
  * `[측정]` Copilot CLI 1.0.80 composes `<mcpServerName>-<mcpToolName>` — NOT Claude Code's
37
44
  * `mcp__<server>__<tool>`. Read from two independent sessions' own event logs
@@ -50,7 +57,7 @@ export const FRESH_CALL_BACKENDS = ["pi", "claude-code", "copilot", "omp", "code
50
57
  * permission dialect: omp's approval layer consults the same minted string (`source-audit.md`).
51
58
  */
52
59
  export const FRESH_CALL_CALLBACK_TOOL = {
53
- pi: "entwurf_callback",
60
+ pi: "mcp__entwurf_bridge__entwurf_callback",
54
61
  "claude-code": "mcp__entwurf-bridge__entwurf_callback",
55
62
  copilot: "entwurf-bridge-entwurf_callback",
56
63
  omp: "mcp__entwurf_bridge_entwurf_callback",
@@ -60,7 +67,7 @@ export const FRESH_CALL_CALLBACK_TOOL = {
60
67
  };
61
68
  /** Where a sibling SENDS the task result. Always the delivery verb, never the birth callback. */
62
69
  export const FRESH_CALL_DELIVERY_TOOL = {
63
- pi: "entwurf_v2",
70
+ pi: "mcp__entwurf_bridge__entwurf_v2",
64
71
  "claude-code": "mcp__entwurf-bridge__entwurf_v2",
65
72
  copilot: "entwurf-bridge-entwurf_v2",
66
73
  omp: "mcp__entwurf_bridge_entwurf_v",
@@ -81,7 +88,7 @@ export const FRESH_CALL_DELIVERY_TOOL = {
81
88
  * SAME rule produces the whole word here.
82
89
  */
83
90
  export const FRESH_CALL_PEERS_TOOL = {
84
- pi: "entwurf_peers",
91
+ pi: "mcp__entwurf_bridge__entwurf_peers",
85
92
  "claude-code": "mcp__entwurf-bridge__entwurf_peers",
86
93
  copilot: "entwurf-bridge-entwurf_peers",
87
94
  omp: "mcp__entwurf_bridge_entwurf_peers",
@@ -3,7 +3,7 @@
3
3
  * meta-bridge mailbox body. Every transport that can deliver to a garden citizen
4
4
  * with no live control socket uses this:
5
5
  * - the MCP bridge entwurf_v2 (mcp/entwurf-bridge) — external/Claude-host sends
6
- * - the pi-native entwurf_v2 (pi-extensions/entwurf-control.ts) — pi-session sends
6
+ * (pi-session sends included since #125 — a pi session reaches that same verb)
7
7
  * - the native-push rail (pi-extensions/lib/entwurf-v2-native-push.ts) — direct
8
8
  * injection into an Antigravity conversation or a loaded Codex thread. Its
9
9
  * THIRD consumer, added after the #95 A LIVE run measured what an envelope-less
@@ -474,9 +474,9 @@ const REJECT_HINT = {
474
474
  "runtime-not-executable": "the resolved runtime path is not executable",
475
475
  };
476
476
  /**
477
- * ONE renderer for both surfaces. Not a convenience: the two registrations are separate literals
478
- * (that is this repo's shape), so a shared renderer is what keeps the operator-visible answer
479
- * from drifting apart between native pi and the MCP bridge.
477
+ * ONE renderer, outside the registration. Not a convenience: it keeps the operator-visible answer
478
+ * out of a registration literal. (Since #125 the MCP bridge is the only registration; the native
479
+ * pi copy it once had to agree with is retired.)
480
480
  *
481
481
  * The success text states the boundary out loud. A caller that reads "launched" and assumes
482
482
  * "delivered" is the exact confusion the two-receipt split exists to prevent, so the text refuses
@@ -100,6 +100,7 @@ import {
100
100
  defaultMetaSessionsDir,
101
101
  makeStoreRecordReader,
102
102
  readActiveStoreEntries,
103
+ readMetaIdentityByGardenId,
103
104
  readMetaInbox,
104
105
  readMetaReceiverMarker,
105
106
  readMetaSenderMarker,
@@ -358,10 +359,36 @@ async function resolveAuthoritativeSender(
358
359
  if (marker && marker.identity.gardenId === selected.id) {
359
360
  return buildMetaSenderEnvelope(marker.identity, marker.marker.cwd || cwd, marker);
360
361
  }
361
- if (pi && pi.sessionId === selected.id) return { envelope: pi };
362
+ if (pi && pi.sessionId === selected.id) return { envelope: requirePiSenderRecord(pi) };
362
363
  throw new Error(`entwurf-bridge: reconciled sender ${selected.id} has no matching identity source`);
363
364
  }
364
365
 
366
+ /**
367
+ * PI_SESSION_ID CARRIES a record-established identity; it does not establish one (Hard Rule 2).
368
+ * Since #125 the pi session reaches every Entwurf verb through this bridge, so the pi rail is the
369
+ * main road rather than a side door, and the carrier is checked where the sender is SELECTED:
370
+ * after the claims reconcile (so a complete conflicting Codex claim still earns its own
371
+ * diagnostic) and before any caller builds on the answer.
372
+ *
373
+ * The per-entry targeted read the sender/self policy already uses — no store scan, no second
374
+ * nativeSessionId carrier. An absent, unreadable or irregular record throws from the reader with
375
+ * its own cause; a record of another backend throws here. None of it falls back to another rail
376
+ * or to anonymous. Socket presence stays what it was: replyability, never admission.
377
+ *
378
+ * What it does NOT prove: that a trusted host which deliberately exports ANOTHER real pi
379
+ * citizen's id is that citizen. Carrier integrity below the record is the host's.
380
+ */
381
+ function requirePiSenderRecord(envelope: SenderEnvelope): SenderEnvelope {
382
+ const identity = readMetaIdentityByGardenId(envelope.sessionId);
383
+ if (identity.backend !== "pi") {
384
+ throw new Error(
385
+ `entwurf-bridge: PI_SESSION_ID ${envelope.sessionId} names a ${identity.backend} record, not a pi citizen — ` +
386
+ "the pi-session carrier must name the record this pi session was born with",
387
+ );
388
+ }
389
+ return envelope;
390
+ }
391
+
365
392
  // Async only when the selected sender rides native-push: replyability is the adapter's live fact.
366
393
  async function buildAuthoritativeSelfEnvelope(context: SenderRequestContext = {}): Promise<AuthoritativeSelf> {
367
394
  const resolved = await resolveAuthoritativeSender(context);
@@ -418,7 +445,7 @@ function abbreviateHomeMcp(cwd: string): string {
418
445
  // reports one outcome. The per-target lock is NOT taken by every rail: the decider
419
446
  // locks only a control-socket-domain dispatch; the mailbox and native-push branches
420
447
  // carry `lock: null` (entwurf-v2-decider.ts). It runs
421
- // IN-PROCESS here (the same production runner pi-native uses) — NOT a delegating
448
+ // IN-PROCESS here (the one production runner; pi reaches it through this bridge since #125) — NOT a delegating
422
449
  // RPC — so control, mailbox and native-push all flow through
423
450
  // `runEntwurfV2`. The sender envelope is
424
451
  // `buildSendSenderEnvelope()` verbatim (origin/replyable as resolved) — v2 does
@@ -488,7 +515,7 @@ server.tool(
488
515
  { target, intent, message, mode, wants_reply },
489
516
  // No trust-preflight inputs are passed, and none exist to pass: the preflight on this
490
517
  // path guarded the resume verdict and left with `owned-outcome`. `senderProvider` is
491
- // the whole options surface now (see the pi-native surface for the same note).
518
+ // the whole options surface now.
492
519
  { senderProvider: () => sender },
493
520
  );
494
521
  return rendered.isError ? textErr(rendered.text) : textOk(rendered.text);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@junghanacs/entwurf",
3
- "version": "0.25.1",
3
+ "version": "0.30.0",
4
4
  "description": "Garden-citizen dispatch substrate and meta-bridge for pi, Claude Code, Copilot CLI, OMP, Antigravity, and Codex CLI; Claude and Snowflake Cortex Code ACP backends.",
5
5
  "license": "MIT",
6
6
  "author": {
@@ -92,17 +92,17 @@
92
92
  "zod": "^3.25.0 || ^4.0.0"
93
93
  },
94
94
  "peerDependencies": {
95
- "@earendil-works/pi-ai": ">=0.87.1 <0.88",
96
- "@earendil-works/pi-coding-agent": ">=0.87.1 <0.88",
97
- "@earendil-works/pi-tui": ">=0.87.1 <0.88",
95
+ "@earendil-works/pi-ai": ">=1.0.0 <1.1",
96
+ "@earendil-works/pi-coding-agent": ">=1.0.0 <1.1",
97
+ "@earendil-works/pi-tui": ">=1.0.0 <1.1",
98
98
  "typebox": "*"
99
99
  },
100
100
  "devDependencies": {
101
101
  "@biomejs/biome": "^2.4.13",
102
- "@earendil-works/pi-agent-core": "0.87.1",
103
- "@earendil-works/pi-ai": "0.87.1",
104
- "@earendil-works/pi-coding-agent": "0.87.1",
105
- "@earendil-works/pi-tui": "0.87.1",
102
+ "@earendil-works/pi-agent-core": "1.0.0",
103
+ "@earendil-works/pi-ai": "1.0.0",
104
+ "@earendil-works/pi-coding-agent": "1.0.0",
105
+ "@earendil-works/pi-tui": "1.0.0",
106
106
  "@types/node": "^24.3.0",
107
107
  "husky": "^9.1.7",
108
108
  "rregex": "1.13.1",
@@ -177,9 +177,9 @@
177
177
  "check:core": "pnpm run check:toolchain && pnpm run check:vitest && pnpm run check:contracts",
178
178
  "check:toolchain": "pnpm lint && pnpm typecheck",
179
179
  "check:vitest": "./run.sh check-mux-fresh-call && ./run.sh check-acp-sdk-surface && ./run.sh check-pi-queue-oracle && ./run.sh check-tests-beside-behavior",
180
- "check:contracts": "./run.sh check-shell-quote && ./run.sh check-entwurf-session-identity && ./run.sh check-meta-session && ./run.sh check-meta-v3-record && ./run.sh check-mailbox-receipt-state && ./run.sh check-entwurf-capabilities && ./run.sh check-harness-admission-parity && ./run.sh check-capability-bundle-reach && ./run.sh check-meta-mailbox-state-write && ./run.sh check-meta-receiver-marker && ./run.sh check-meta-capability-source && ./run.sh check-model-lock && ./run.sh check-dep-versions && ./run.sh check-node-floor-coherence && ./run.sh check-claude-floor-coherence && ./run.sh check-copilot-statusline && ./run.sh check-pi-import-surface && ./run.sh check-env-namespace && ./run.sh check-pi-runtime-version && ./run.sh check-pi-preflight && ./run.sh check-project-trust-handler && ./run.sh check-entwurf-v2-contract && ./run.sh check-entwurf-v2-send && ./run.sh check-entwurf-v2-runner && ./run.sh check-control-send-receipt && ./run.sh check-compaction-send-guard && ./run.sh check-entwurf-resume-args && ./run.sh check-entwurf-v2-native-push && ./run.sh check-entwurf-v2-production && ./run.sh check-entwurf-v2-surface && ./run.sh check-entwurf-bridge-pi-free && ./run.sh check-resume-launch-identity && ./run.sh check-mux-placement && ./run.sh check-mux-launch && ./run.sh check-mux-resume-call && ./run.sh check-mux-parent-artifact && ./run.sh check-mux-launcher-fence && ./run.sh check-entwurf-v2-visible-resume && ./run.sh check-control-socket-path && ./run.sh check-meta-listing && ./run.sh check-entwurf-fact-provider && ./run.sh check-herdr-placement && ./run.sh check-herdr-fresh-call && ./run.sh check-herdr-supply && ./run.sh check-fresh-call-dispatch && ./run.sh check-entwurf-peers-surface && ./run.sh check-entwurf-self-address && ./run.sh check-entwurf-deliverability && ./run.sh check-native-push-adapter && ./run.sh check-native-push-register && ./run.sh check-auth-boundary && ./run.sh check-acp-overlay && ./run.sh check-acp-tool-surface && ./run.sh check-acp-event-mapper && ./run.sh check-acp-prompt-builder && ./run.sh check-acp-config && ./run.sh check-acp-session-store && ./run.sh check-acp-carrier-augment && ./run.sh check-codex-sender-identity && ./run.sh check-codex-native-push",
181
- "check:hermetic": "./run.sh check-bridge-delivery && ./run.sh smoke-pi-attach && ./run.sh check-fresh-cut-gate && ./run.sh check-hook-launch-topology && ./run.sh check-meta-hook-session-switch && ./run.sh check-copilot-birth-hook && ./run.sh check-copilot-receive-arm && ./run.sh check-copilot-launch && ./run.sh check-pi-launch && ./run.sh check-codex-app-server-launch && ./run.sh check-meta-identity-consumers && ./run.sh check-socket-probe && ./run.sh smoke-meta-honesty && ./run.sh check-meta-doctor-oracle && ./run.sh check-agy-permission-matrix && ./run.sh smoke-agy-statusline-state && ./run.sh smoke-copilot-statusline-state && ./run.sh smoke-copilot-mcp-state && ./run.sh smoke-omp-bridge-state && ./run.sh smoke-omp-mcp-state && ./run.sh smoke-omp-receive-state && ./run.sh check-omp-birth-hook && ./run.sh check-omp-receive-arm && ./run.sh check-omp-fresh-preflight && ./run.sh smoke-agy-hooks-state && ./run.sh smoke-pi-provider-state && ./run.sh smoke-user-scope-citizen && ./run.sh smoke-meta-prune && ./run.sh smoke-meta-keyset-guard && ./run.sh check-meta-manifest-schema && ./run.sh check-entwurf-control-rpc && ./run.sh check-entwurf-bridge-boot && ./run.sh check-probe-bridge-command && ./run.sh check-meta-facts && ./run.sh check-peer-facts && ./run.sh check-herdr-plugin && ./run.sh check-herdr-plugin-profile && ./run.sh check-herdr-plugin-build && ./run.sh check-herdr-runtime-bootstrap && ./run.sh check-herdr-activation && ./run.sh check-agy-sender-identity && ./run.sh check-acp-provider-surface && ./run.sh check-acp-stop-reason && ./run.sh check-acp-prompt-lifecycle && ./run.sh check-acp-usage-accounting && ./run.sh check-acp-launch-namespace && ./run.sh check-acp-stream-hooks && ./run.sh check-acp-backend-preflight && ./run.sh check-acp-session-reuse && ./run.sh check-typing-call-fence && ./run.sh check-gate-manifests && ./run.sh check-release-gate-outcomes && ./run.sh check-probe-ordering && ./run.sh check-probe-cli-shim && ./run.sh check-acp-cortex && ./run.sh check-codex-bridge-identity && ./run.sh check-codex-birth-hook && ./run.sh smoke-codex-config-state && ./run.sh smoke-codex-birth && ./run.sh check-herdr-sandbox",
182
- "check:package": "./run.sh check-install-surface && ./run.sh smoke-meta-install-state && ./run.sh smoke-agy-install-state && ./run.sh smoke-setup-verdict && ./run.sh check-pack-pin-matcher && ./run.sh check-package-source-routing && ./run.sh check-install-preflight && ./run.sh check-pack"
180
+ "check:contracts": "./run.sh check-shell-quote && ./run.sh check-entwurf-session-identity && ./run.sh check-meta-session && ./run.sh check-meta-v3-record && ./run.sh check-mailbox-receipt-state && ./run.sh check-entwurf-capabilities && ./run.sh check-harness-admission-parity && ./run.sh check-capability-bundle-reach && ./run.sh check-meta-mailbox-state-write && ./run.sh check-meta-receiver-marker && ./run.sh check-meta-capability-source && ./run.sh check-model-lock && ./run.sh check-dep-versions && ./run.sh check-node-floor-coherence && ./run.sh check-claude-floor-coherence && ./run.sh check-copilot-statusline && ./run.sh check-pi-import-surface && ./run.sh check-env-namespace && ./run.sh check-pi-runtime-version && ./run.sh check-pi-preflight && ./run.sh check-project-trust-handler && ./run.sh check-entwurf-v2-contract && ./run.sh check-entwurf-v2-send && ./run.sh check-entwurf-v2-runner && ./run.sh check-control-send-receipt && ./run.sh check-compaction-send-guard && ./run.sh check-entwurf-resume-args && ./run.sh check-entwurf-v2-native-push && ./run.sh check-entwurf-v2-production && ./run.sh check-entwurf-v2-surface && ./run.sh check-entwurf-bridge-pi-free && ./run.sh check-resume-launch-identity && ./run.sh check-mux-placement && ./run.sh check-mux-launch && ./run.sh check-mux-resume-call && ./run.sh check-mux-parent-artifact && ./run.sh check-mux-launcher-fence && ./run.sh check-entwurf-v2-visible-resume && ./run.sh check-control-socket-path && ./run.sh check-meta-listing && ./run.sh check-entwurf-fact-provider && ./run.sh check-herdr-placement && ./run.sh check-herdr-fresh-call && ./run.sh check-herdr-supply && ./run.sh check-fresh-call-dispatch && ./run.sh check-entwurf-peers-surface && ./run.sh check-entwurf-self-address && ./run.sh check-entwurf-deliverability && ./run.sh check-native-push-adapter && ./run.sh check-native-push-register && ./run.sh check-auth-boundary && ./run.sh check-acp-overlay && ./run.sh check-acp-tool-surface && ./run.sh check-acp-event-mapper && ./run.sh check-acp-prompt-builder && ./run.sh check-acp-config && ./run.sh check-acp-session-store && ./run.sh check-acp-carrier-augment && ./run.sh check-acp-foreground-only && ./run.sh check-codex-sender-identity && ./run.sh check-codex-native-push",
181
+ "check:hermetic": "./run.sh check-bridge-delivery && ./run.sh smoke-pi-attach && ./run.sh check-fresh-cut-gate && ./run.sh check-hook-launch-topology && ./run.sh check-meta-hook-session-switch && ./run.sh check-copilot-birth-hook && ./run.sh check-copilot-receive-arm && ./run.sh check-copilot-launch && ./run.sh check-pi-launch && ./run.sh check-codex-app-server-launch && ./run.sh check-meta-identity-consumers && ./run.sh check-socket-probe && ./run.sh smoke-meta-honesty && ./run.sh check-meta-doctor-oracle && ./run.sh check-agy-permission-matrix && ./run.sh smoke-agy-statusline-state && ./run.sh smoke-copilot-statusline-state && ./run.sh smoke-copilot-mcp-state && ./run.sh smoke-omp-bridge-state && ./run.sh smoke-omp-mcp-state && ./run.sh smoke-omp-receive-state && ./run.sh check-omp-birth-hook && ./run.sh check-omp-receive-arm && ./run.sh check-omp-fresh-preflight && ./run.sh smoke-agy-hooks-state && ./run.sh smoke-pi-provider-state && ./run.sh smoke-user-scope-citizen && ./run.sh smoke-meta-prune && ./run.sh smoke-meta-keyset-guard && ./run.sh check-meta-manifest-schema && ./run.sh check-entwurf-control-rpc && ./run.sh check-entwurf-bridge-boot && ./run.sh check-probe-bridge-command && ./run.sh check-meta-facts && ./run.sh check-peer-facts && ./run.sh check-herdr-plugin && ./run.sh check-herdr-plugin-profile && ./run.sh check-herdr-plugin-build && ./run.sh check-herdr-runtime-bootstrap && ./run.sh check-herdr-activation && ./run.sh check-agy-sender-identity && ./run.sh check-acp-provider-surface && ./run.sh check-acp-stop-reason && ./run.sh check-acp-prompt-lifecycle && ./run.sh check-acp-usage-accounting && ./run.sh check-acp-launch-namespace && ./run.sh check-acp-stream-hooks && ./run.sh check-acp-backend-preflight && ./run.sh check-acp-session-reuse && ./run.sh check-typing-call-fence && ./run.sh check-gate-manifests && ./run.sh check-release-gate-outcomes && ./run.sh check-probe-ordering && ./run.sh check-probe-cli-shim && ./run.sh check-acp-cortex && ./run.sh check-codex-bridge-identity && ./run.sh check-pi-bridge-sender && ./run.sh check-pi-mcp-register && ./run.sh check-pi-mcp-bridge && ./run.sh check-codex-birth-hook && ./run.sh smoke-codex-config-state && ./run.sh smoke-codex-birth && ./run.sh check-herdr-sandbox",
182
+ "check:package": "./run.sh check-install-surface && ./run.sh smoke-meta-install-state && ./run.sh smoke-agy-install-state && ./run.sh smoke-setup-verdict && ./run.sh check-pack-pin-matcher && ./run.sh check-pack-consumer-roots && ./run.sh check-package-source-routing && ./run.sh check-install-preflight && ./run.sh check-pack"
183
183
  },
184
184
  "pi": {
185
185
  "extensions": [