deadbyte-mcp 0.15.67 → 0.15.69

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 (87) hide show
  1. package/MANIFEST.SHA256 +85 -40
  2. package/PROVENANCE.json +46 -24
  3. package/README.txt +46 -33
  4. package/RELEASE.json +44 -17
  5. package/SBOM.cdx.json +2 -2
  6. package/TEST-MATRIX.json +25 -2
  7. package/bridge/package.json +1 -1
  8. package/controller/deadbyte-controller.ps1 +65 -1
  9. package/controller/deadbyte-process-policy.json +4 -4
  10. package/docs/R184-package-lock.json +97 -0
  11. package/docs/R186-OWNER-CONSENT-HANDOFF.txt +87 -0
  12. package/package.json +3 -2
  13. package/scripts/install-r186-owner-trust.ps1 +59 -0
  14. package/scripts/r173-protected-preflight.mjs +42 -0
  15. package/scripts/r175-focused-runner.mjs +38 -0
  16. package/scripts/r176-log-preview.mjs +18 -0
  17. package/scripts/r177-owner-trust-inventory.ps1 +36 -0
  18. package/scripts/r178-full-regression.mjs +21 -0
  19. package/scripts/r178-npm-ci.mjs +10 -0
  20. package/scripts/r178-npm-preflight.mjs +16 -0
  21. package/scripts/r178-release-gates-readonly.mjs +9 -0
  22. package/scripts/r178-shard-regression.mjs +25 -0
  23. package/scripts/r179-predecessor-registry.mjs +24 -0
  24. package/scripts/r179-protected-inventory.ps1 +21 -0
  25. package/scripts/r186-focused-runner.mjs +22 -0
  26. package/scripts/r186-owner-anchor-inspect.mjs +6 -0
  27. package/scripts/r186-owner-consent-check.mjs +86 -0
  28. package/scripts/r186-owner-grant-cli.mjs +45 -0
  29. package/scripts/r186-owner-key-local.mjs +22 -0
  30. package/scripts/r186-owner-review-export.mjs +34 -0
  31. package/src/activation-authority-proof-r75.mjs +28 -4
  32. package/src/activation-preflight-r65.mjs +2 -1
  33. package/src/deadbyte-cli.mjs +69 -56
  34. package/src/r174-owner-webauthn.mjs +176 -0
  35. package/src/r175-foreground-boundary.mjs +28 -0
  36. package/src/r186-owner-anchor.mjs +12 -0
  37. package/src/r186-owner-consent-preflight.mjs +63 -0
  38. package/src/r186-owner-grant-broker.mjs +96 -0
  39. package/src/r186-owner-local-signing.mjs +25 -0
  40. package/src/r186-owner-request.mjs +40 -0
  41. package/src/r186-owner-review-export.mjs +49 -0
  42. package/src/remote-live-log.mjs +81 -5
  43. package/src/remote-session-guardian.mjs +23 -0
  44. package/src/version.mjs +1 -1
  45. package/test/helpers/r175-active-pointer.mjs +28 -0
  46. package/test/helpers/release-lock.mjs +12 -0
  47. package/test/r129-sdk-security-baseline.test.mjs +2 -1
  48. package/test/r130-release-security-contract.test.mjs +11 -10
  49. package/test/r132-release-identity.test.mjs +12 -11
  50. package/test/r153-prepublish-identity.test.mjs +1 -1
  51. package/test/r155-default-live-log.test.mjs +17 -16
  52. package/test/r160-package-decision-manifest.test.mjs +1 -1
  53. package/test/r160-release-contract.test.mjs +4 -5
  54. package/test/r163-isolated-slot-rollback-restore.test.mjs +6 -6
  55. package/test/r165-live-cli-skew.test.mjs +6 -6
  56. package/test/r167-release-contract.test.mjs +15 -13
  57. package/test/r168-protected-entrypoint.test.mjs +14 -11
  58. package/test/r168-release-contract.test.mjs +4 -3
  59. package/test/r168-remote-one-shot-coherence.test.mjs +2 -1
  60. package/test/r172-release-contract.test.mjs +8 -8
  61. package/test/r173-release-contract.test.mjs +33 -0
  62. package/test/r174-owner-webauthn.test.mjs +144 -0
  63. package/test/r175-cli-flags.test.mjs +23 -0
  64. package/test/r175-foreground-boundary.test.mjs +87 -0
  65. package/test/r175-guardian-owner-boundary.test.mjs +56 -0
  66. package/test/r176-pretty-live-log.test.mjs +54 -0
  67. package/test/r177-windows-absolute-live-path.test.mjs +37 -0
  68. package/test/r179-absolute-path-live-log.test.mjs +40 -0
  69. package/test/r179-release-contract.test.mjs +62 -0
  70. package/test/r186-controller-owner-grant.test.mjs +20 -0
  71. package/test/r186-owner-consent-preflight.test.mjs +98 -0
  72. package/test/r186-owner-enrollment.test.mjs +20 -0
  73. package/test/r186-owner-grant-broker.test.mjs +85 -0
  74. package/test/r186-owner-local-signing.test.mjs +30 -0
  75. package/test/r186-owner-request.test.mjs +28 -0
  76. package/test/r186-owner-review-export.test.mjs +52 -0
  77. package/test/r48-release-contract.test.mjs +2 -1
  78. package/test/r51-runtime-coherence.test.mjs +4 -2
  79. package/test/r58-cleanup-retention.test.mjs +5 -12
  80. package/test/r58-concurrent-recovery.test.mjs +5 -1
  81. package/test/r58-stale-owner.test.mjs +9 -3
  82. package/test/r59-tool-surface-compat.test.mjs +1 -1
  83. package/test/r75-authority-evidence.test.mjs +32 -0
  84. package/test/remote-live-log-r37.test.mjs +2 -2
  85. package/test/remote-live-log-recovery-r36.test.mjs +1 -1
  86. package/test/remote-session-cli.test.mjs +92 -126
  87. package/node_modules/which/CHANGELOG.md +0 -166
package/README.txt CHANGED
@@ -1,8 +1,15 @@
1
- DEADBYTE MCP V0.15.67 / R172 TERMINAL ACTIVATION RECOVERY
1
+ DEADBYTE MCP V0.15.69 / R179 FOREGROUND OBSERVER + READABLE LIVE LOGS
2
2
  =========================
3
3
 
4
4
  AUTHENTICATED MACHINE TRUTH + DURABLE AGENT + CODING + AUTONOMOUS PRODUCTION ENGINE
5
5
 
6
+ R179 RELEASE STATE
7
+ ------------------
8
+ 0.15.69 is a release candidate until exact npm publication and registry readback.
9
+ The protected Windows regression and independent owner-authorized Autonomous
10
+ grant must pass before calling this a clean stable release. The npm CLI examples
11
+ below describe the intended version once it has been published.
12
+
6
13
  NPX PRIMARY OPERATOR UX
7
14
  ------------------------
8
15
  Use the npm CLI entry point instead of the legacy CMD convenience wrapper:
@@ -16,17 +23,17 @@ check `--version` before issuing a stateful command. The compatibility CMD
16
23
  fails with an explanation when npm is detected rather than forwarding the
17
24
  wrong command to the controller.
18
25
 
19
- npx -y deadbyte-mcp@0.15.67 mcp
20
- npx -y deadbyte-mcp@0.15.67 remote
21
- npx -y deadbyte-mcp@0.15.67 remote status
22
- npx -y deadbyte-mcp@0.15.67 remote restart
23
- npx -y deadbyte-mcp@0.15.67 audit status
24
- npx -y deadbyte-mcp@0.15.67 audit verify
26
+ npx -y deadbyte-mcp@0.15.69 mcp
27
+ npx -y deadbyte-mcp@0.15.69 remote
28
+ npx -y deadbyte-mcp@0.15.69 remote status
29
+ npx -y deadbyte-mcp@0.15.69 remote restart
30
+ npx -y deadbyte-mcp@0.15.69 audit status
31
+ npx -y deadbyte-mcp@0.15.69 audit verify
25
32
 
26
33
 
27
- R172 TERMINAL ACTIVATION RECOVERY
34
+ R173 EPOCH-REVOKED AUTHORITY PROOF HOTFIX
28
35
  ------------------------
29
- This 0.15.67 CLI keeps npm publication and local production activation separate.
36
+ This 0.15.68 CLI keeps npm publication and local production activation separate.
30
37
  When a newer npm CLI finds an older installed runtime, one-shot remote status
31
38
  observes the existing stable launcher and prints VERSION SKEW without deploying.
32
39
  On a version mismatch, remote arm/disarm/restart and bare foreground remote
@@ -45,7 +52,7 @@ CLAUDE DESKTOP
45
52
  "mcpServers": {
46
53
  "deadbyte": {
47
54
  "command": "npx",
48
- "args": ["-y", "deadbyte-mcp@0.15.67", "mcp"]
55
+ "args": ["-y", "deadbyte-mcp@0.15.69", "mcp"]
49
56
  }
50
57
  }
51
58
  }
@@ -57,7 +64,7 @@ Save as .cursor/mcp.json:
57
64
  "mcpServers": {
58
65
  "deadbyte": {
59
66
  "command": "npx",
60
- "args": ["-y", "deadbyte-mcp@0.15.67", "mcp"]
67
+ "args": ["-y", "deadbyte-mcp@0.15.69", "mcp"]
61
68
  }
62
69
  }
63
70
  }
@@ -70,7 +77,7 @@ Save as .vscode/mcp.json:
70
77
  "deadbyte": {
71
78
  "type": "stdio",
72
79
  "command": "npx",
73
- "args": ["-y", "deadbyte-mcp@0.15.67", "mcp"]
80
+ "args": ["-y", "deadbyte-mcp@0.15.69", "mcp"]
74
81
  }
75
82
  }
76
83
  }
@@ -80,23 +87,29 @@ Add to the Codex MCP configuration:
80
87
 
81
88
  [mcp_servers.deadbyte]
82
89
  command = "npx"
83
- args = ["-y", "deadbyte-mcp@0.15.67", "mcp"]
90
+ args = ["-y", "deadbyte-mcp@0.15.69", "mcp"]
84
91
 
85
92
  The `mcp` command is the quiet stdio server entry for local MCP clients; stdout is reserved for MCP.
86
93
  The remote CLI invokes the stable active-release PowerShell launcher directly with shell=false.
87
- Bare `remote` is a foreground observation-only session. It starts/resumes the verified runtime
88
- without arming Process, Coding, Autonomous, Desktop, or Host; all five must be DISARMED.
89
- Use `remote --operator` to request Process/Coding/Autonomous explicitly, subject to
90
- independent R70 owner approval, bound policy and signed authority checks. Desktop observation/UIA grounding is read-only; guarded GUI input
91
- requires the separate explicit Desktop standing grant (`armdesktop`) and is never implied by Autonomous authority. The single remote console shows device/bridge/cloud/session readiness plus a
92
- unified live timeline (`RUN`, `OK`, `ERR`, interrupted/recovery, cursors, and sanitized Bridge IN/OUT/ERR
93
- diagnostics) without dumping raw JSON payloads, tokens, private keys, or full Bridge payload records. Session shutdown
94
- revokes Desktop/process/coding/autonomous authority, applies fail-safe Host disarm, and parks the Bridge. A detached
95
- nonce-bound guardian watches the foreground owner and performs the same revoke+park cleanup if the
96
- owner is hard-killed before `finally` can run. The v2 runtime marker binds owner PID, guardian PID,
97
- and a random 256-bit session nonce, prevents concurrent foreground sessions, and lets a later start
98
- recover only a dead, unguarded stale owner. Explicit subcommands such as `remote status` remain
99
- one-shot controller operations.
94
+ Bare `remote` observes an already verified ONLINE runtime. Run `remote start`
95
+ as an explicit one-shot controller action when local runtime is offline. The foreground
96
+ observer never arms/disarms Process, Coding, Autonomous, Desktop or Host standing
97
+ grants, and it does not restart, upgrade, activate or park the runtime.
98
+ Existing owner standing grants are reported without changes. Ctrl+C disconnects
99
+ the foreground log only; the guardian removes only the observation session marker.
100
+ `remote --operator`, `remote --host`, `remote --desktop` and `remote --full`
101
+ are blocked until distinct, signed session-owned grants are implemented. To arm
102
+ an existing policy use explicit one-shot `remote arm*` commands. Project/successor
103
+ Autonomous grants still require independent R70 owner enrollment; the publication
104
+ of a package version does not itself issue that grant. Desktop guarded input needs
105
+ a separate explicit Desktop standing grant (`armdesktop`).
106
+
107
+ The default unified live timeline is compact and sanitized, with Windows paths, START,
108
+ PASS, DENIED, UNKNOWN and grouped heartbeat polling. Exact root-mapped paths
109
+ are shown when verified; unresolved roots are labeled, not guessed. Sensitive
110
+ tool arguments, keys, tokens and private file bodies stay redacted. A 256-bit
111
+ nonce and OS process identities guard concurrent foreground sessions and recovery.
112
+ `remote status` remains a read-only one-shot controller command.
100
113
 
101
114
  R59 DEGRADED RUNTIME + BRIDGE RECONCILIATION
102
115
  ---------------------------------------------
@@ -369,7 +382,7 @@ CONTROLLER
369
382
  ----------
370
383
  Primary operator entry point:
371
384
 
372
- npx -y deadbyte-mcp@0.15.67 remote
385
+ npx -y deadbyte-mcp@0.15.69 remote
373
386
 
374
387
  The legacy CMD entry remains compatibility-only for R33 rollback safety.
375
388
 
@@ -430,7 +443,7 @@ MCP CLIENT CONFIGURATION
430
443
  ------------------------
431
444
  The local stdio entry point is quiet and suitable for MCP hosts:
432
445
 
433
- npx -y deadbyte-mcp@0.15.67 mcp
446
+ npx -y deadbyte-mcp@0.15.69 mcp
434
447
 
435
448
  CLAUDE DESKTOP
436
449
  Use the standard local-server entry in claude_desktop_config.json:
@@ -439,7 +452,7 @@ Use the standard local-server entry in claude_desktop_config.json:
439
452
  "mcpServers": {
440
453
  "deadbyte": {
441
454
  "command": "npx",
442
- "args": ["-y", "deadbyte-mcp@0.15.67", "mcp"]
455
+ "args": ["-y", "deadbyte-mcp@0.15.69", "mcp"]
443
456
  }
444
457
  }
445
458
  }
@@ -452,7 +465,7 @@ Create .cursor/mcp.json:
452
465
  "deadbyte": {
453
466
  "type": "stdio",
454
467
  "command": "npx",
455
- "args": ["-y", "deadbyte-mcp@0.15.67", "mcp"]
468
+ "args": ["-y", "deadbyte-mcp@0.15.69", "mcp"]
456
469
  }
457
470
  }
458
471
  }
@@ -465,7 +478,7 @@ Create .vscode/mcp.json:
465
478
  "deadbyte": {
466
479
  "type": "stdio",
467
480
  "command": "npx",
468
- "args": ["-y", "deadbyte-mcp@0.15.67", "mcp"]
481
+ "args": ["-y", "deadbyte-mcp@0.15.69", "mcp"]
469
482
  }
470
483
  }
471
484
  }
@@ -475,9 +488,9 @@ Add this to ~/.codex/config.toml:
475
488
 
476
489
  [mcp_servers.deadbyte]
477
490
  command = "npx"
478
- args = ["-y", "deadbyte-mcp@0.15.67", "mcp"]
491
+ args = ["-y", "deadbyte-mcp@0.15.69", "mcp"]
479
492
 
480
- The remote device path remains `npx -y deadbyte-mcp@0.15.67 remote`. Remote public MCP uses the
493
+ The remote device path remains `npx -y deadbyte-mcp@0.15.69 remote`. Remote public MCP uses the
481
494
  verified HTTPS named-tunnel URL selected by the active generation; do not commit a private device
482
495
  URL or tunnel token into a repository.
483
496
 
package/RELEASE.json CHANGED
@@ -1,31 +1,31 @@
1
1
  {
2
2
  "schema": "deadbyte.release.v1",
3
3
  "name": "deadbyte-mcp",
4
- "version": "0.15.67",
5
- "train": "R172",
6
- "label": "R172 terminal activation recovery release",
4
+ "version": "0.15.69",
5
+ "train": "R179",
6
+ "label": "R179 foreground observer and native crash guardian release candidate",
7
7
  "protocol_revision": "2026-07-28",
8
8
  "parent": {
9
- "version": "0.15.61",
10
- "release_id": "v0.15.61-055d1ff0aa99e60b",
11
- "manifest_sha256": "055d1ff0aa99e60bbf9e9f136b02ebd4fffb8391712560f7607cff30af94dcdf",
12
- "generation_manifest_sha256": "f940e794daac2dda097a66301c4b85c4b29a2df7c669e549503c05a2a55ff6c4",
9
+ "version": "0.15.68",
10
+ "release_id": "v0.15.68-ff29dbb2fbb89862",
11
+ "manifest_sha256": "ff29dbb2fbb898625592afb47835a4a62ef289429f1e0a89a83242398cd98885",
12
+ "generation_manifest_sha256": "2887d4a8d54ea6fc6b28869072f72491c892dfe28178b3537936dce958147bd2",
13
13
  "activation_status": "PRODUCTION_ACTIVE"
14
14
  },
15
15
  "runtime_predecessor": {
16
- "version": "0.15.61",
17
- "release_id": "v0.15.61-055d1ff0aa99e60b",
18
- "manifest_sha256": "055d1ff0aa99e60bbf9e9f136b02ebd4fffb8391712560f7607cff30af94dcdf",
19
- "generation_manifest_sha256": "f940e794daac2dda097a66301c4b85c4b29a2df7c669e549503c05a2a55ff6c4"
16
+ "version": "0.15.68",
17
+ "release_id": "v0.15.68-ff29dbb2fbb89862",
18
+ "manifest_sha256": "ff29dbb2fbb898625592afb47835a4a62ef289429f1e0a89a83242398cd98885",
19
+ "generation_manifest_sha256": "2887d4a8d54ea6fc6b28869072f72491c892dfe28178b3537936dce958147bd2"
20
20
  },
21
21
  "source_predecessor": {
22
- "version": "0.15.66",
23
- "train": "R168",
24
- "source_path": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.66-r168-activation-reconcile",
22
+ "version": "0.15.68",
23
+ "train": "R173",
24
+ "source_path": "https://registry.npmjs.org/deadbyte-mcp/-/deadbyte-mcp-0.15.68.tgz",
25
25
  "release_status": "PUBLISHED_REGISTRY_VERIFIED",
26
- "manifest_status": "VERIFIED_FINAL_BYTES",
27
- "manifest_sha256": "962e227dace247d59aa860211388fbde461c5f9c8a7e8a878e34a14a27d355f8",
28
- "tarball_sha256": "31b194a4fbff7dbdb9f4f275b4ea49c5115f7b0bb2241c0c72d72ef690311a5d"
26
+ "manifest_status": "ACTIVE_PRODUCTION_MANIFEST_VERIFIED",
27
+ "manifest_sha256": "ff29dbb2fbb898625592afb47835a4a62ef289429f1e0a89a83242398cd98885",
28
+ "tarball_sha256": "1a7f1fe05a06178b8d772a140be6e0470790b743cef690c3f8f8165cc61075bf"
29
29
  },
30
30
  "consolidation": {
31
31
  "frontend_status_vocabulary": true,
@@ -534,5 +534,32 @@
534
534
  "npm_publish": "NOT_RUN",
535
535
  "production_activation": "NOT_RUN",
536
536
  "stable_final_claim": false
537
+ },
538
+ "r173": {
539
+ "scope": "EPOCH_REVOKED_AUTHORITY_PROOF_AND_FINAL_REMOTE_RECOVERY",
540
+ "source_predecessor_version": "0.15.67",
541
+ "source_predecessor_train": "R172",
542
+ "source_predecessor_manifest_sha256": "4fd7bfc76b1de6401c142b607cc84e847434b28c888bc99ceb09c9e8e5adc8f8",
543
+ "source_predecessor_tarball_sha256": "0fe761f035f38730a4717448da4217f55464c38cd1616126b5850ff44411cd6d",
544
+ "runtime_predecessor_release_id": "v0.15.61-055d1ff0aa99e60b",
545
+ "epoch_revoked_authority_proof": "GREEN_FOCUSED",
546
+ "public_tool_delta": 0,
547
+ "authority_scope_delta": 0,
548
+ "npm_publish": "NOT_RUN",
549
+ "production_activation": "NOT_RUN",
550
+ "stable_final_claim": false
551
+ },
552
+ "r179": {
553
+ "scope": "FOREGROUND_OBSERVATION_ONLY_CRASH_GUARDIAN_AND_READABLE_WINDOWS_LOGS",
554
+ "source_predecessor_version": "0.15.68",
555
+ "source_predecessor_manifest_sha256": "ff29dbb2fbb898625592afb47835a4a62ef289429f1e0a89a83242398cd98885",
556
+ "source_predecessor_tarball_sha256": "1a7f1fe05a06178b8d772a140be6e0470790b743cef690c3f8f8165cc61075bf",
557
+ "owner_approved_autonomous_grant": "NOT_ISSUED",
558
+ "protected_full_regression": "NOT_VERIFIED",
559
+ "windows_gate": "BLOCKED_R89_UNTRUSTED_INSTALLATION",
560
+ "foreground_live_integration": "NOT_VERIFIED",
561
+ "npm_publish": "NOT_RUN",
562
+ "production_activation": "NOT_RUN",
563
+ "stable_final_claim": false
537
564
  }
538
565
  }
package/SBOM.cdx.json CHANGED
@@ -1,13 +1,13 @@
1
1
  {
2
2
  "bomFormat": "CycloneDX",
3
3
  "specVersion": "1.6",
4
- "serialNumber": "urn:cdx:deadbyte-mcp:r172:0.15.67",
4
+ "serialNumber": "urn:cdx:deadbyte-mcp:r179:0.15.69",
5
5
  "version": 1,
6
6
  "metadata": {
7
7
  "component": {
8
8
  "type": "application",
9
9
  "name": "deadbyte-mcp",
10
- "version": "0.15.67"
10
+ "version": "0.15.69"
11
11
  }
12
12
  },
13
13
  "components": [
package/TEST-MATRIX.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "schema": "deadbyte.test-matrix.v1",
3
- "version": "0.15.67",
4
- "train": "R172",
3
+ "version": "0.15.69",
4
+ "train": "R179",
5
5
  "primary_platform": "win32-x64",
6
6
  "reference": {
7
7
  "package": "@wonderwhy-er/desktop-commander",
@@ -124,6 +124,21 @@
124
124
  "id": "r168-claim-preservation",
125
125
  "command": "Verify read-only R168 signed epoch audit and old R65 claim",
126
126
  "expected": "Unresolved claim is preserved; no test key used as owner approval; production pointer and Coding scope unchanged"
127
+ },
128
+ {
129
+ "id": "r179-owner-authorized-autonomous",
130
+ "command": "Issue independently signed owner consent from protected broker, verify exact policy and epoch, then arm Autonomous",
131
+ "expected": "Owner proof bound to active release, scoped project, policy hashes, expiry and independently protected signing key"
132
+ },
133
+ {
134
+ "id": "r179-protected-full",
135
+ "command": "node --test --test-concurrency=4 test/*.test.mjs in exact protected 0.15.69 installation",
136
+ "expected": "Zero failures; all skips reviewed; R89 trusted installation and native tests pass"
137
+ },
138
+ {
139
+ "id": "r179-live-log-and-foreground",
140
+ "command": "Run Ctrl+C, restart, crash and concurrent sessions with pre-existing standing grants and confirm no implicit revocation",
141
+ "expected": "Owner standing grants unchanged; observation-only marker CAS; signed audit remains verifiable"
127
142
  }
128
143
  ],
129
144
  "observed_pre_release_evidence": {
@@ -645,5 +660,13 @@
645
660
  "new_authority_scopes": 0,
646
661
  "publication": "NOT_RUN",
647
662
  "production_activation": "NOT_RUN"
663
+ },
664
+ "r179": {
665
+ "owner_consent": "NOT_VERIFIED",
666
+ "protected_full": "NOT_VERIFIED",
667
+ "foreground_live": "NOT_VERIFIED",
668
+ "package_verify_only": "PASS_2552_MANIFEST_ENTRIES",
669
+ "registry_publish": "NOT_RUN",
670
+ "production_activation": "NOT_RUN"
648
671
  }
649
672
  }
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "deadbyte-chatgpt-bridge",
3
- "version": "0.15.67",
3
+ "version": "0.15.69",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "engines": {
@@ -1015,6 +1015,10 @@ function Invoke-AuthorityEpochCommand($Cfg, [string]$Plane, [string]$Action, [st
1015
1015
  'src\foreground-marker-cas-win32.mjs',
1016
1016
  'src\foreground-process-identity.mjs',
1017
1017
  'src\windows-powershell-environment.mjs',
1018
+ 'scripts\r186-owner-grant-cli.mjs',
1019
+ 'src\r186-owner-grant-broker.mjs',
1020
+ 'src\r186-owner-consent-preflight.mjs',
1021
+ 'src\r70-owner-approval.mjs',
1018
1022
  'bin\deadbyte-epoch-lock-r85.node',
1019
1023
  'docs\R85-EPOCH-LOCK-BINARY.json',
1020
1024
  'native\deadbyte-epoch-lock-r85.cpp'
@@ -1391,6 +1395,57 @@ function Get-AutonomousLeaseStatus($Cfg) {
1391
1395
  return [pscustomobject]@{ Configured=$true; Armed=$true; Reason='standing-grant'; EpochSeq=$epoch.Seq; EpochSha256=$epoch.EventSha256 }
1392
1396
  }
1393
1397
 
1398
+ function Invoke-R186ProtectedAutonomousGrant($Cfg, $Meta) {
1399
+ if (-not $Cfg.ContainsKey('AuthorityEpochRoot') -or [string]::IsNullOrWhiteSpace([string]$Cfg.AuthorityEpochRoot)) {
1400
+ Fail 'R70_OWNER_ENROLLMENT_REQUIRED: protected authority root unavailable'
1401
+ }
1402
+ $protectedRoot = [System.IO.Path]::GetFullPath([string]$Cfg.AuthorityEpochRoot)
1403
+ $releaseRoot = [System.IO.Path]::GetFullPath([string]$Cfg.CoreRoot)
1404
+ $relativeFiles = @(
1405
+ 'scripts\r186-owner-grant-cli.mjs',
1406
+ 'src\r186-owner-grant-broker.mjs',
1407
+ 'src\r186-owner-consent-preflight.mjs',
1408
+ 'src\r70-owner-approval.mjs',
1409
+ 'src\authority-continuity-r65.mjs',
1410
+ 'src\privileged-install-trust-r89.mjs',
1411
+ 'src\epoch-lock-r85.mjs',
1412
+ 'src\canonical-json.mjs',
1413
+ 'src\text-policy.mjs',
1414
+ 'src\foreground-marker-cas-win32.mjs',
1415
+ 'src\foreground-process-identity.mjs',
1416
+ 'src\windows-powershell-environment.mjs',
1417
+ 'src\release-slot.mjs',
1418
+ 'bin\deadbyte-epoch-lock-r85.node',
1419
+ 'docs\R85-EPOCH-LOCK-BINARY.json',
1420
+ 'native\deadbyte-epoch-lock-r85.cpp'
1421
+ )
1422
+ $releaseManifest = Join-Path $releaseRoot 'MANIFEST.SHA256'
1423
+ $protectedManifest = Join-Path $protectedRoot 'MANIFEST.SHA256'
1424
+ if (-not (Test-Path -LiteralPath $releaseManifest -PathType Leaf) -or
1425
+ -not (Test-Path -LiteralPath $protectedManifest -PathType Leaf) -or
1426
+ (Get-ExecutableHash $releaseManifest) -cne (Get-ExecutableHash $protectedManifest)) {
1427
+ Fail 'R186 protected owner broker release manifest mismatch'
1428
+ }
1429
+ foreach ($relative in $relativeFiles) {
1430
+ $source = Join-Path $releaseRoot $relative
1431
+ $protected = Join-Path $protectedRoot $relative
1432
+ if (-not (Test-Path -LiteralPath $source -PathType Leaf) -or
1433
+ -not (Test-Path -LiteralPath $protected -PathType Leaf) -or
1434
+ (Get-ExecutableHash $source) -cne (Get-ExecutableHash $protected)) {
1435
+ Fail "R186 protected owner broker source mismatch: $relative"
1436
+ }
1437
+ }
1438
+ Assert-ProtectedEpochSourceAcl -Files @($relativeFiles | ForEach-Object { Join-Path $protectedRoot $_ })
1439
+ $cli = Join-Path $protectedRoot 'scripts\r186-owner-grant-cli.mjs'
1440
+ $node = [string]$Cfg.Bridge.FilePath
1441
+ if ([string]::IsNullOrWhiteSpace($node) -or -not (Test-Path -LiteralPath $node -PathType Leaf)) { Fail 'R186 protected owner broker Node unavailable' }
1442
+ $output = @(& $node $cli $RuntimeDir ([string]$Cfg.CodingPolicyFile) ([string]$Cfg.AutonomousPolicyFile))
1443
+ $exit = $LASTEXITCODE
1444
+ if ($exit -ne 0) { Fail "R70_OWNER_ENROLLMENT_REQUIRED: protected owner grant broker rejected (exit=$exit)" }
1445
+ try { return (($output -join [Environment]::NewLine) | ConvertFrom-Json) }
1446
+ catch { Fail 'R186 protected owner grant broker returned invalid JSON' }
1447
+ }
1448
+
1394
1449
  function Arm-Autonomous($Cfg) {
1395
1450
  $coding = Get-CodingLeaseStatus $Cfg
1396
1451
  if (-not $coding.Armed) { Fail 'autonomous plane requires an active coding lease; run armcoding first' }
@@ -1403,7 +1458,16 @@ function Arm-Autonomous($Cfg) {
1403
1458
  $legacyOwnerPolicySha256 = '6274492644c303b38117541cc22a59e88e6ff5fdef7051a5d57ad336f45765f5'
1404
1459
  $selectedRoots = @($meta.RootIds)
1405
1460
  if ([string]$meta.Sha256 -cne $legacyOwnerPolicySha256 -or $selectedRoots.Count -ne 1 -or [string]$selectedRoots[0] -cne 'core') {
1406
- Fail 'R70_OWNER_ENROLLMENT_REQUIRED: project/successor Autonomous grant needs independent owner authorization before arm'
1461
+ $ownerApproval = Join-Path $RuntimeDir 'owner-consent\autonomous-approval.json'
1462
+ if (-not (Test-Path -LiteralPath $ownerApproval -PathType Leaf)) {
1463
+ Fail 'R70_OWNER_ENROLLMENT_REQUIRED: bounded owner approval is absent'
1464
+ }
1465
+ $issued = Invoke-R186ProtectedAutonomousGrant $Cfg $meta
1466
+ if ($null -eq $issued -or [string]$issued.status -cne 'GRANTED' -or $issued.authority_granted -ne $true) {
1467
+ Fail 'R70_OWNER_ENROLLMENT_REQUIRED: protected owner grant broker did not issue authority'
1468
+ }
1469
+ Write-Host 'AUTONOMOUS PLANE ENABLED BY OWNER-SIGNED BOUNDED GRANT'
1470
+ return
1407
1471
  }
1408
1472
  Ensure-Directory $RuntimeDir
1409
1473
  $nonceBytes = New-Object byte[] 32
@@ -1,15 +1,15 @@
1
1
  {
2
2
  "schema": "deadbyte.process-policy.v1",
3
3
  "enabled": true,
4
- "grant_file": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.67-r172-final-remote-recovery\\controller\\runtime\\process-grant.json",
5
- "state_dir": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.67-r172-final-remote-recovery\\controller\\runtime\\process-state",
4
+ "grant_file": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.69-r186-owner-consent\\controller\\runtime\\process-grant.json",
5
+ "state_dir": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.69-r186-owner-consent\\controller\\runtime\\process-state",
6
6
  "native_host": {
7
- "path": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.67-r172-final-remote-recovery\\bin\\deadbyte-process-host.exe",
7
+ "path": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.69-r186-owner-consent\\bin\\deadbyte-process-host.exe",
8
8
  "sha256": "daf9cfb371bee88cafbf5597eaa507fec504dbe0b0ddd40d0c3c2e02817f49e4"
9
9
  },
10
10
  "roots": {
11
11
  "core": {
12
- "path": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.67-r172-final-remote-recovery",
12
+ "path": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.69-r186-owner-consent",
13
13
  "deny_paths": [
14
14
  "node_modules",
15
15
  "controller/runtime",
@@ -0,0 +1,97 @@
1
+ {
2
+ "name": "deadbyte-mcp",
3
+ "version": "0.15.69",
4
+ "lockfileVersion": 3,
5
+ "requires": true,
6
+ "packages": {
7
+ "": {
8
+ "name": "deadbyte-mcp",
9
+ "version": "0.15.69",
10
+ "bundleDependencies": [
11
+ "@modelcontextprotocol/server",
12
+ "@modelcontextprotocol/client",
13
+ "typescript",
14
+ "zod"
15
+ ],
16
+ "dependencies": {
17
+ "@modelcontextprotocol/client": "2.3.1",
18
+ "@modelcontextprotocol/server": "2.3.1",
19
+ "typescript": "5.9.3",
20
+ "zod": "4.4.3"
21
+ },
22
+ "bin": {
23
+ "deadbyte-mcp": "src/deadbyte-cli.mjs"
24
+ },
25
+ "engines": {
26
+ "node": ">=22"
27
+ }
28
+ },
29
+ "node_modules/@modelcontextprotocol/client": {
30
+ "version": "2.3.1",
31
+ "resolved": "https://registry.npmjs.org/@modelcontextprotocol/client/-/client-2.3.1.tgz",
32
+ "integrity": "sha512-mIGZXpHsjnZ6lD+gD/WCMpR5k8yVQQ8nNFH1N0Srf7AvnwTUMYD6pvTY8ng2+He5FfV7YMZLmrjL7cLa/cc3dQ==",
33
+ "inBundle": true,
34
+ "license": "Apache-2.0",
35
+ "dependencies": {
36
+ "@modelcontextprotocol/core": "2.3.1",
37
+ "cross-spawn": "^7.0.5",
38
+ "eventsource": "^3.0.2",
39
+ "eventsource-parser": "^3.0.8",
40
+ "jose": "^6.1.3",
41
+ "pkce-challenge": "^5.0.0",
42
+ "zod": "^4.2.0"
43
+ },
44
+ "engines": {
45
+ "node": ">=20"
46
+ }
47
+ },
48
+ "node_modules/@modelcontextprotocol/core": {
49
+ "version": "2.3.1",
50
+ "resolved": "https://registry.npmjs.org/@modelcontextprotocol/core/-/core-2.3.1.tgz",
51
+ "integrity": "sha512-laVmIhPGpWi7rG9q+0UigblRN0Hws/Yjlb6qLFtVqryXVLkc4h+yN8z731POD2LnAGQlFe7/tXhUm7Bi0YB91g==",
52
+ "inBundle": true,
53
+ "license": "Apache-2.0",
54
+ "dependencies": {
55
+ "zod": "^4.2.0"
56
+ },
57
+ "engines": {
58
+ "node": ">=20"
59
+ }
60
+ },
61
+ "node_modules/@modelcontextprotocol/server": {
62
+ "version": "2.3.1",
63
+ "resolved": "https://registry.npmjs.org/@modelcontextprotocol/server/-/server-2.3.1.tgz",
64
+ "integrity": "sha512-e59MfWuSssj6DoQ96JCTqdW1AXT5/XtnTl0WWd6MU1Ka434fFUGGosCLJbGNySDhHGvxQWoRWK137FXYFkYNWw==",
65
+ "inBundle": true,
66
+ "license": "Apache-2.0",
67
+ "dependencies": {
68
+ "@modelcontextprotocol/core": "2.3.1",
69
+ "zod": "^4.2.0"
70
+ },
71
+ "engines": {
72
+ "node": ">=20"
73
+ }
74
+ },
75
+ "node_modules/cross-spawn": {
76
+ "version": "7.0.6",
77
+ "inBundle": true,
78
+ "license": "MIT",
79
+ "dependencies": {"path-key":"^3.1.0","shebang-command":"^2.0.0","which":"^2.0.1"},
80
+ "engines": {"node":">= 8"}
81
+ },
82
+ "node_modules/eventsource": {
83
+ "version":"3.0.7","inBundle":true,"license":"MIT",
84
+ "dependencies":{"eventsource-parser":"^3.0.1"},"engines":{"node":">=18.0.0"}
85
+ },
86
+ "node_modules/eventsource-parser": {"version":"3.1.1","inBundle":true,"license":"MIT","engines":{"node":">=18.0.0"}},
87
+ "node_modules/isexe": {"version":"2.0.0","inBundle":true,"license":"ISC"},
88
+ "node_modules/jose": {"version":"6.2.10","inBundle":true,"license":"MIT","funding":{"url":"https://github.com/sponsors/panva"}},
89
+ "node_modules/path-key": {"version":"3.1.1","inBundle":true,"license":"MIT","engines":{"node":">=8"}},
90
+ "node_modules/pkce-challenge": {"version":"5.0.1","inBundle":true,"license":"MIT","engines":{"node":">=16.20.0"}},
91
+ "node_modules/shebang-command": {"version":"2.0.0","inBundle":true,"license":"MIT","dependencies":{"shebang-regex":"^3.0.0"},"engines":{"node":">=8"}},
92
+ "node_modules/shebang-regex": {"version":"3.0.0","inBundle":true,"license":"MIT","engines":{"node":">=8"}},
93
+ "node_modules/typescript": {"version":"5.9.3","inBundle":true,"license":"Apache-2.0","bin":{"tsc":"bin/tsc","tsserver":"bin/tsserver"},"engines":{"node":">=14.17"}},
94
+ "node_modules/which": {"version":"2.0.2","inBundle":true,"license":"ISC","dependencies":{"isexe":"^2.0.0"},"bin":{"node-which":"bin/node-which"},"engines":{"node":">= 8"}},
95
+ "node_modules/zod": {"version":"4.4.3","inBundle":true,"license":"MIT","funding":{"url":"https://github.com/sponsors/colinhacks"}}
96
+ }
97
+ }
@@ -0,0 +1,87 @@
1
+ DEADBYTE MCP / R186 OWNER CONSENT
2
+ 2026-10-28
3
+
4
+ CURRENT STATE
5
+
6
+ production remains 0.15.68
7
+ R185 exact tarball 0.15.69 is frozen and protected regression was green
8
+ R186 is an isolated development successor and is not published or activated
9
+
10
+ WHAT R186 ADDS
11
+
12
+ src/r186-owner-consent-preflight.mjs
13
+ verifies owner Ed25519 public key against an exact pinned fingerprint
14
+ verifies the R70 project/policy/artifact/time-bound signature
15
+ returns verified_readonly and authority_granted=false
16
+
17
+ scripts/r186-owner-consent-check.mjs
18
+ loads public owner trust only from these fixed Windows locations
19
+
20
+ C:\Program Files\DEADBYTE-OwnerTrust\owner-anchor.json
21
+ C:\Program Files\DEADBYTE-OwnerTrust\owner-public.pem
22
+
23
+ requires the native R89 protected ACL check for the owner files
24
+ requires protected exact installation for executable verifier source
25
+ verifies the entire installed release manifest before trusting a proof
26
+ derives policy SHA256 from the actual policy files
27
+ derives reviewed_artifact_sha256 from the exact installed MANIFEST.SHA256 bytes
28
+ refuses to enroll a key or grant any authority
29
+
30
+ OWNER ACTION REQUIRED OUTSIDE THIS AGENT
31
+
32
+ the owner must generate and retain the Ed25519 private key on an independently
33
+ controlled device that DEADBYTE MCP and ChatGPT cannot read or execute on
34
+ do not send private key bytes or passwords to ChatGPT or DEADBYTE MCP
35
+
36
+ the owner must inspect and approve the public key fingerprint before a trusted
37
+ administrator-only installation at the two fixed Program Files paths
38
+ owner-anchor.json must have exactly these fields:
39
+
40
+ schema = deadbyte.r186-owner-anchor.v1
41
+ owner_key_id = lowercase SHA256 of Ed25519 SPKI DER public key
42
+
43
+ owner-public.pem contains only that public key
44
+ both files and their ancestor paths must pass Windows R89 ACL trust
45
+
46
+ AFTER A PROTECTED R186 RELEASE EXISTS
47
+
48
+ prepare an R70 owner subject for the exact installed release manifest
49
+ bind root_id, real project_root, the exact coding and autonomous policy SHA256
50
+ bind issued_at_utc and expires_at_utc to at most 1 hour
51
+
52
+ the owner signs that exact subject using the independent private key
53
+ the signed R70 approval is submitted as data, not as an owner key
54
+ R186 preflight may then report verified_readonly
55
+
56
+ STILL REQUIRED BEFORE ARMING OR PUBLISH
57
+
58
+ a separate protected one-time acceptance broker that consumes the owner approval
59
+ owner proof bound to native signed epoch and no-clobber race/crash recovery
60
+ agent-writable consent receipts must never act as grant issuance authority
61
+ controller Arm-Autonomous must invoke that protected broker on the current
62
+ verified runtime with no fallback to a writable source or caller-supplied key
63
+ the owner must explicitly approve this new authority issuance
64
+ run full protected regression again on exact new tarball
65
+ run real foreground live integration without revoking owner standing grants
66
+ publish only after independent release gate passes
67
+ activation is a separate user-approved step
68
+
69
+ NO PUBLISH AND NO GRANT HAVE OCCURRED IN R186
70
+
71
+ LIVE OWNER TRUST INVENTORY / 2026-10-28
72
+
73
+ old public key: C:\Users\DEADBYTE\.deadbyte-mcp\trust\r70-owner-public.pem
74
+ format: Ed25519 public only
75
+ SPKI DER SHA256: b07c6312673a190af6ac40fe86830dfe8c60e2747405f5151b9ae9bb9a71ad10
76
+ owner: local DEADBYTE account, writable to that account
77
+ R89 result: EPOCH_NATIVE_SLOT_UNTRUSTED
78
+ new protected C:\Program Files\DEADBYTE-OwnerTrust enrollment: NOT PRESENT
79
+
80
+ this fingerprint is an observation, not independent proof of owner enrollment
81
+ before any migration, the owner must compare it out of band with the key held
82
+ on their independent device and approve exact scope and expiry
83
+
84
+ R186 FOCUSED RESULT
85
+ 29 pass / 0 fail / 0 skip for R70, R174 and R186
86
+ independent trust enrollment: NOT RUN
87
+ one-time protected grant issuance: NOT IMPLEMENTED
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "deadbyte-mcp",
3
- "version": "0.15.67",
3
+ "version": "0.15.69",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "description": "Authenticated MCP agentic runtime with signed skills, persistent model backends, identity-bound remote devices, durable job supervision, immutable release slots, and separately revocable machine authority.",
@@ -98,7 +98,8 @@
98
98
  "gate:windows": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts/gate-windows-r168.ps1 -Stage all",
99
99
  "r168:focused:test": "node test/r168-combined-targeted-runner.mjs",
100
100
  "r168:release:verify": "node scripts/npm-release-r48.mjs --verify-only",
101
- "r172:focused:test": "node --test --test-concurrency=1 test/r172-activation-recovery.test.mjs test/r172-release-contract.test.mjs test/r169-delegate-active.test.mjs test/r169-delegate-cli-integration.test.mjs test/r65-activation-lock-recovery.test.mjs test/r65-activation-orchestration.test.mjs"
101
+ "r172:focused:test": "node --test --test-concurrency=1 test/r172-activation-recovery.test.mjs test/r172-release-contract.test.mjs test/r169-delegate-active.test.mjs test/r169-delegate-cli-integration.test.mjs test/r65-activation-lock-recovery.test.mjs test/r65-activation-orchestration.test.mjs",
102
+ "r173:focused:test": "node --test --test-concurrency=1 test/r75-authority-evidence.test.mjs test/r172-activation-recovery.test.mjs test/r173-release-contract.test.mjs test/r65-activation-preflight.test.mjs test/r65-activation-orchestration.test.mjs"
102
103
  },
103
104
  "bundleDependencies": [
104
105
  "@modelcontextprotocol/server",