deadbyte-mcp 0.15.35 → 0.15.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 (92) hide show
  1. package/MANIFEST.SHA256 +91 -46
  2. package/PROVENANCE.json +76 -30
  3. package/README.txt +62 -8
  4. package/RELEASE.json +78 -23
  5. package/SBOM.cdx.json +10 -25
  6. package/TEST-MATRIX.json +109 -44
  7. package/bridge/package.json +4 -2
  8. package/bridge/src/bridge-health-r59.mjs +53 -0
  9. package/bridge/src/bridge.mjs +158 -26
  10. package/bridge/src/canonical-json-r60.mjs +13 -0
  11. package/bridge/src/r40-governor.mjs +56 -10
  12. package/bridge/src/reconnect-delay-r60.mjs +31 -0
  13. package/bridge/src/remote-call-claims-r60.mjs +157 -0
  14. package/bridge/src/remote-dispatch-r60.mjs +75 -0
  15. package/controller/deadbyte-controller.ps1 +76 -13
  16. package/controller/deadbyte-process-policy.json +4 -4
  17. package/docs/R59-PROVENANCE.json +87 -0
  18. package/docs/R59-RELEASE.json +187 -0
  19. package/docs/R59-SBOM.cdx.json +68 -0
  20. package/docs/R59-TASK-CONTRACT.md +26 -0
  21. package/docs/R59-TEST-MATRIX.json +258 -0
  22. package/docs/R59-bridge-package.json +13 -0
  23. package/docs/R59-package-lock.json +184 -0
  24. package/docs/R59-package.json +106 -0
  25. package/docs/R59-version.mjs +6 -0
  26. package/docs/R60-TASK-CONTRACT.md +22 -0
  27. package/package.json +7 -3
  28. package/proof/r59-full-regression-current.json +13 -0
  29. package/proof/r59-full-regression-current.stderr.log +0 -0
  30. package/proof/r59-full-regression-current.stdout.log +1268 -0
  31. package/scripts/full-regression-r60.mjs +32 -0
  32. package/scripts/gate-windows-r59-prepublish.ps1 +41 -0
  33. package/scripts/gate-windows-r60-prepublish.ps1 +74 -0
  34. package/scripts/r59-full-regression-capture.mjs +35 -0
  35. package/src/capability-resolver.mjs +25 -7
  36. package/src/capability-snapshot.mjs +56 -0
  37. package/src/compact-gateway-mcp-tools.mjs +10 -11
  38. package/src/deadbyte-cli.mjs +80 -34
  39. package/src/mcp-server.mjs +179 -118
  40. package/src/r40-compact-disarmed-probe.mjs +1 -1
  41. package/src/r44-compact-disarmed-probe.mjs +1 -1
  42. package/src/r45-compact-disarmed-probe.mjs +1 -1
  43. package/src/remote-authority.mjs +56 -0
  44. package/src/remote-enforcement-probe-r60.mjs +17 -0
  45. package/src/remote-live-log.mjs +19 -2
  46. package/src/remote-log-decode-r60.mjs +32 -0
  47. package/src/remote-mcp-machine-smoke-client.mjs +19 -1
  48. package/src/remote-mcp-r40-parity-client.mjs +1 -1
  49. package/src/remote-mcp-r44-parity-client.mjs +1 -1
  50. package/src/remote-mcp-r45-parity-client.mjs +1 -1
  51. package/src/remote-mcp-smoke-client.mjs +1 -1
  52. package/src/remote-session-guardian.mjs +20 -3
  53. package/src/runtime-plane-registry.mjs +74 -0
  54. package/src/tool-audit.mjs +5 -0
  55. package/src/version.mjs +1 -1
  56. package/test/bridge-runtime-r59.test.mjs +60 -0
  57. package/test/capability-resolver.test.mjs +16 -0
  58. package/test/capability-snapshot-r59.test.mjs +39 -0
  59. package/test/compact-gateway-r36.test.mjs +22 -2
  60. package/test/compact-max-catalog-r44.test.mjs +1 -1
  61. package/test/compact-max-catalog-r45.test.mjs +1 -1
  62. package/test/contained.test.mjs +2 -1
  63. package/test/controller-policy-preflight-r59.test.mjs +39 -0
  64. package/test/fixtures/r59-compact-surface-v0.15.35.json +222 -0
  65. package/test/observation-integration.test.mjs +2 -3
  66. package/test/optional-plane-degraded-r59.test.mjs +44 -0
  67. package/test/r48-release-contract.test.mjs +1 -1
  68. package/test/r49-windows-gate.test.mjs +1 -1
  69. package/test/r51-runtime-coherence.test.mjs +2 -2
  70. package/test/r58-bundled-bridge.test.mjs +3 -1
  71. package/test/r58-cleanup-retention.test.mjs +9 -3
  72. package/test/r58-concurrent-recovery.test.mjs +9 -3
  73. package/test/r58-controller-live-local.test.mjs +36 -4
  74. package/test/r58-controller-state-coherence.test.mjs +1 -1
  75. package/test/r58-release-contract.test.mjs +3 -2
  76. package/test/r58-stale-owner.test.mjs +2 -2
  77. package/test/r58-windows-gate.test.mjs +2 -1
  78. package/test/r59-release-contract.test.mjs +61 -0
  79. package/test/r59-tool-surface-compat.test.mjs +90 -0
  80. package/test/r60-authority-coherence.test.mjs +36 -0
  81. package/test/r60-authority-enforcement.test.mjs +28 -0
  82. package/test/r60-bridge-dispatch.test.mjs +119 -0
  83. package/test/r60-clock-discipline.test.mjs +15 -0
  84. package/test/r60-live-timeline.test.mjs +29 -0
  85. package/test/r60-reconnect-errors.test.mjs +21 -0
  86. package/test/r60-reconnect-jitter.test.mjs +18 -0
  87. package/test/r60-release-contract.test.mjs +81 -0
  88. package/test/r60-remote-call-recovery.test.mjs +170 -0
  89. package/test/r60-windows-log-decode.test.mjs +25 -0
  90. package/test/remote-live-log-r37.test.mjs +1 -1
  91. package/test/remote-session-cli.test.mjs +200 -43
  92. package/test/runtime-plane-registry-r59.test.mjs +40 -0
package/RELEASE.json CHANGED
@@ -1,27 +1,27 @@
1
1
  {
2
2
  "schema": "deadbyte.release.v1",
3
3
  "name": "deadbyte-mcp",
4
- "version": "0.15.35",
5
- "train": "R58",
6
- "label": "FRONTEND BACKEND BRIDGE PERFORMANCE CONSOLIDATION",
4
+ "version": "0.15.37",
5
+ "train": "R60",
6
+ "label": "REMOTE TRUTH + RESILIENCE HARDENING",
7
7
  "protocol_revision": "2026-07-28",
8
8
  "parent": {
9
- "version": "0.15.34",
10
- "release_id": "v0.15.34-2199bb59f0e0fc20",
11
- "manifest_sha256": "2199bb59f0e0fc205d470d11f990d3ce3df444be5eba2a7d8dbc60d5f5b790bb",
12
- "generation_manifest_sha256": "1a20a62aaeb324a9b5c03d158952f35092d58fedf2ac7725820ba2b094a4a88f",
13
- "tarball_sha256": "a6f7b21faf34793ca17dfb6d0e9ec03320f1468d011e75d8349098df82fc2639",
14
- "activation_status": "PRODUCTION_ACCEPTED_WITH_SIGNED_ROLLBACK_AND_RESTORE"
9
+ "version": "0.15.36",
10
+ "release_id": "v0.15.36-090d9db3e0679c0d",
11
+ "manifest_sha256": "090d9db3e0679c0d4943f3229ecab7b9fcccbe4f767348a568c9f3bb60d1b431",
12
+ "generation_manifest_sha256": "6134f9f26b680e13ed545da4ab5f3020f411ea2569062fb9c154c8a7e036c9dc",
13
+ "activation_status": "PRODUCTION_ACCEPTED_ACTIVE"
15
14
  },
16
15
  "runtime_predecessor": {
17
- "release_id": "v0.15.34-2199bb59f0e0fc20",
18
- "manifest_sha256": "2199bb59f0e0fc205d470d11f990d3ce3df444be5eba2a7d8dbc60d5f5b790bb",
19
- "generation_manifest_sha256": "1a20a62aaeb324a9b5c03d158952f35092d58fedf2ac7725820ba2b094a4a88f"
16
+ "release_id": "v0.15.36-090d9db3e0679c0d",
17
+ "manifest_sha256": "090d9db3e0679c0d4943f3229ecab7b9fcccbe4f767348a568c9f3bb60d1b431",
18
+ "generation_manifest_sha256": "6134f9f26b680e13ed545da4ab5f3020f411ea2569062fb9c154c8a7e036c9dc"
20
19
  },
21
20
  "source_predecessor": {
22
- "version": "0.15.34",
23
- "tarball_sha256": "a6f7b21faf34793ca17dfb6d0e9ec03320f1468d011e75d8349098df82fc2639",
24
- "manifest_file_sha256": "2199bb59f0e0fc205d470d11f990d3ce3df444be5eba2a7d8dbc60d5f5b790bb"
21
+ "version": "0.15.36",
22
+ "release_id": "v0.15.36-090d9db3e0679c0d",
23
+ "manifest_file_sha256": "090d9db3e0679c0d4943f3229ecab7b9fcccbe4f767348a568c9f3bb60d1b431",
24
+ "registry_tarball_status": "PENDING_INDEPENDENT_REGISTRY_ROUND_TRIP"
25
25
  },
26
26
  "consolidation": {
27
27
  "frontend_status_vocabulary": true,
@@ -34,13 +34,14 @@
34
34
  "bridge_path_escape_fail_closed": true,
35
35
  "isolated_controller_bridge_core_lifecycle": "PASS",
36
36
  "performance_acceptance": "PASS_BOUNDED_PREPUBLISH",
37
- "fresh_full_regression": "PASS",
38
- "package_acceptance": "PENDING",
37
+ "fresh_full_regression": "PASS_CURRENT_TREE_1241_TESTS_1210_PASS_31_SKIP_0_FAIL",
38
+ "package_acceptance": "PASS_VERIFY_ONLY_PRE_FINAL_SEAL",
39
39
  "registry_round_trip": "PENDING",
40
40
  "production_activation_rollback_restore": "PENDING",
41
41
  "stable_final_claim": false,
42
42
  "cross_plane_acceptance": "PASS",
43
- "public_surface_compatibility": "PASS_43_TOOLS_NO_SCHEMA_DRIFT"
43
+ "public_surface_compatibility": "PASS_43_TOOLS_NO_SCHEMA_DRIFT",
44
+ "windows_gate": "PASS_STAGED_WINDOWS_DOCTOR_WARN_INHERITED_TRANSACTION_RESIDUE"
44
45
  },
45
46
  "stabilization": {
46
47
  "semver_strict_validation": true,
@@ -48,10 +49,13 @@
48
49
  "explicit_state_root_propagation": true,
49
50
  "guardian_cleanup_fail_closed": true,
50
51
  "local_isolated_state_acceptance": "PASS",
51
- "full_regression": "PASS",
52
- "four_hour_soak": "NOT_COMPLETED",
53
- "clean_machine": "NOT_COMPLETED",
54
- "stable_final_claim": false
52
+ "full_regression": "PASS_CURRENT_TREE_1241_TESTS_1210_PASS_31_SKIP_0_FAIL",
53
+ "four_hour_soak": "WAIVED_BY_OPERATOR",
54
+ "clean_machine": "WAIVED_BY_OPERATOR",
55
+ "stable_final_claim": false,
56
+ "windows_gate": "PASS_STAGED_WINDOWS_DOCTOR_WARN_INHERITED_TRANSACTION_RESIDUE",
57
+ "package_verification": "PASS_VERIFY_ONLY_PRE_FINAL_SEAL",
58
+ "production_activation_rollback_restore": "PENDING"
55
59
  },
56
60
  "platform": {
57
61
  "primary": "win32",
@@ -154,6 +158,57 @@
154
158
  "bundled_release_bridge": true,
155
159
  "bridge_recursive_dependency_binding": true,
156
160
  "doctor_read_only_diagnostics": true,
157
- "coherent_structured_status": true
161
+ "coherent_structured_status": true,
162
+ "optional_plane_degradation": true,
163
+ "capability_manifest_v3": true,
164
+ "bridge_bounded_reconciliation": true,
165
+ "mutation_unknown_outcome_no_replay": true,
166
+ "controller_policy_root_preflight": true
167
+ },
168
+ "r59_runtime_hardening": {
169
+ "optional_plane_degradation": true,
170
+ "stable_tool_registration_on_optional_failure": true,
171
+ "capability_manifest_v3": true,
172
+ "live_overlay_authority_ceiling": true,
173
+ "bridge_bounded_reconciliation": true,
174
+ "bridge_health_requires_fresh_child_catalog_capability_attestation": true,
175
+ "mutation_unknown_outcome_no_replay": true,
176
+ "read_only_retry_only_before_dispatch": true,
177
+ "cancellation_aware_governor": true,
178
+ "controller_policy_root_preflight": true,
179
+ "public_surface_compatibility": "PASS_43_TOOLS_NO_SCHEMA_DRIFT",
180
+ "frontdoor_signed_ping": "PASS",
181
+ "four_hour_soak": "NOT_COMPLETED",
182
+ "clean_machine": "NOT_COMPLETED",
183
+ "stable_final_claim": false
184
+ },
185
+ "operator_override": {
186
+ "four_hour_soak": "WAIVED_BY_OPERATOR",
187
+ "clean_machine": "WAIVED_BY_OPERATOR",
188
+ "reason": "Operator explicitly requested immediate deployment without further testing.",
189
+ "stable_final_claim": false
190
+ },
191
+ "r60_remote_hardening": {
192
+ "authority_truth_coherence": true,
193
+ "execution_backed_readiness": true,
194
+ "keyed_mutation_dedup": true,
195
+ "keyless_ambiguous_mutation_fail_closed": true,
196
+ "read_only_recovery": true,
197
+ "bounded_reconnect_jitter": true,
198
+ "terminal_transient_failure_taxonomy": true,
199
+ "capability_manifest_human_suppression": true,
200
+ "windows_log_bom_decode": true,
201
+ "public_surface_tool_count": 43,
202
+ "behavioral_regression": "PASS_1241_TESTS_1210_PASS_31_HISTORICAL_OR_PLATFORM_SKIP_0_FAIL",
203
+ "windows_gate": "PASS_STAGED_WINDOWS_DOCTOR_WARN_INHERITED_TRANSACTION_RESIDUE",
204
+ "package_verification": "PASS_VERIFY_ONLY_PRE_FINAL_SEAL",
205
+ "registry_round_trip": "PENDING",
206
+ "production_activation_rollback_restore": "PENDING",
207
+ "stable_final_claim": false,
208
+ "doctor_assessment": "WARN_INHERITED_TRANSACTION_RESIDUE",
209
+ "manifest_pre_package": {
210
+ "files": 2204,
211
+ "status": "PASS_BEFORE_FINAL_METADATA_SEAL"
212
+ }
158
213
  }
159
214
  }
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:r58:0.15.35",
4
+ "serialNumber": "urn:cdx:deadbyte-mcp:r60:0.15.37",
5
5
  "version": 1,
6
6
  "metadata": {
7
7
  "component": {
8
8
  "type": "application",
9
9
  "name": "deadbyte-mcp",
10
- "version": "0.15.35"
10
+ "version": "0.15.37"
11
11
  }
12
12
  },
13
13
  "components": [
@@ -34,35 +34,20 @@
34
34
  {
35
35
  "type": "file",
36
36
  "name": "deadbyte-hardware-observer-r45.exe",
37
- "version": "0.15.35",
38
- "hashes": [
39
- {
40
- "alg": "SHA-256",
41
- "content": "c9b46fc497b55b8f0ad1564c8e15f9c1cdf2a07f206b3c8fa7966c892058e920"
42
- }
43
- ]
37
+ "version": "0.15.37",
38
+ "hash_status": "PENDING_R60_FREEZE_REGENERATION"
44
39
  },
45
40
  {
46
41
  "type": "file",
47
- "name": "deadbyte-r58-bundled-bridge",
48
- "version": "0.15.35",
49
- "hashes": [
50
- {
51
- "alg": "SHA-256",
52
- "content": "abd6e5625ea18a5baf3f318d6a9c849a2978a9441fc9f906cd572db1a1c2b4d6"
53
- }
54
- ]
42
+ "name": "deadbyte-r60-bundled-bridge",
43
+ "version": "0.15.37",
44
+ "hash_status": "PENDING_R60_FREEZE_REGENERATION"
55
45
  },
56
46
  {
57
47
  "type": "file",
58
- "name": "deadbyte-r58-node-http-adapter",
59
- "version": "0.15.35",
60
- "hashes": [
61
- {
62
- "alg": "SHA-256",
63
- "content": "281985edd717b991d78fe1853057a6a6cbf6fc5b57cab48ed8444b09b15dcd6e"
64
- }
65
- ]
48
+ "name": "deadbyte-r60-node-http-adapter",
49
+ "version": "0.15.37",
50
+ "hash_status": "PENDING_R60_FREEZE_REGENERATION"
66
51
  }
67
52
  ]
68
53
  }
package/TEST-MATRIX.json CHANGED
@@ -1,64 +1,54 @@
1
1
  {
2
2
  "schema": "deadbyte.test-matrix.v1",
3
- "version": "0.15.35",
4
- "train": "R58",
3
+ "version": "0.15.37",
4
+ "train": "R60",
5
5
  "primary_platform": "win32-x64",
6
6
  "reference": {
7
7
  "package": "@wonderwhy-er/desktop-commander",
8
- "version": "0.2.51",
9
- "server_sha256": "dfc303bb7dd2e8d01debac50fc43bb8644d00089bffdf2887e149497cff8b305",
8
+ "version": "0.2.52",
9
+ "server_sha256": "dacffa416d0a46351aa553e6b05e51a10638bd190821eda03032de045b9f2aaf",
10
10
  "schemas_sha256": "f342345e34e48769dabaefe1b932f09d41e2e207b422f7794a15ee50ffa8f140"
11
11
  },
12
12
  "required": [
13
13
  {
14
- "id": "r58-focused",
15
- "command": "npm run r58:focused:test",
16
- "expected": "PASS frontend/backend/bridge consolidation and inherited update/rollback contracts"
14
+ "id": "r60-focused",
15
+ "command": "npm run r60:focused:test",
16
+ "expected": "PASS R60 authority truth, Bridge idempotency/recovery, reconnect, timeline, clock and Windows decode contracts"
17
17
  },
18
18
  {
19
- "id": "performance",
20
- "command": "R58 performance benchmark suite",
21
- "expected": "No material common-path regression and >=20% aggregate warm p95 improvement where DEADBYTE-owned latency dominates, or evidence-backed external-latency limitation"
22
- },
23
- {
24
- "id": "cross-plane",
25
- "command": "R58 cross-plane acceptance",
26
- "expected": "PASS isolated frontend/controller/bridge/core lifecycle, stale-session, durable-job, interruption and recovery cases"
27
- },
28
- {
29
- "id": "full-regression",
30
- "command": "npm run r48:full:test",
31
- "expected": "PASS current R58 candidate after final relevant source mutation"
32
- },
33
- {
34
- "id": "package-boundary",
35
- "command": "node --test test/package-boundary.test.mjs",
36
- "expected": "PASS bundled Bridge and canonical launchers/package surface"
19
+ "id": "r60-full-regression",
20
+ "command": "npm run r60:full:test",
21
+ "expected": "PASS complete current successor regression; connector execution may observe the identical 16-batch partition"
37
22
  },
38
23
  {
39
24
  "id": "windows-gate",
40
25
  "command": "npm run gate:windows",
41
- "expected": "PASS R58 focused/performance/cross-plane/full/package/manifest/doctor evidence"
26
+ "expected": "PASS exact 0.15.36 predecessor, focused/full regression, manifest verify and doctor; inherited transaction residue may remain an explicit WARN until production transition"
42
27
  },
43
28
  {
44
29
  "id": "package-verify",
45
30
  "command": "node scripts/npm-release-r48.mjs --verify-only",
46
- "expected": "PASS isolated exact packaged surface and doctor"
31
+ "expected": "PASS exact packed surface and isolated package version/doctor execution"
32
+ },
33
+ {
34
+ "id": "frontdoor",
35
+ "command": "node src/remote-mcp-smoke-client.mjs <active-https-mcp> smoke",
36
+ "expected": "PASS exact 43-tool compact catalog and independently verified Ed25519 ping after activation"
47
37
  },
48
38
  {
49
39
  "id": "activation",
50
- "command": "npx --yes deadbyte-mcp@0.15.35 remote",
51
- "expected": "activate exact R58 from exact active 0.15.34"
40
+ "command": "activate exact packed deadbyte-mcp@0.15.37 candidate",
41
+ "expected": "activate exact R60 from exact active 0.15.36 only after prepublish/package gates"
52
42
  },
53
43
  {
54
44
  "id": "rollback",
55
- "command": "runtime-update --rollback-receipt <signed R58 activation receipt>",
56
- "expected": "restore exact signed 0.15.34 pointer/runtime, ONLINE, all authority DISARMED"
45
+ "command": "runtime-update --rollback-receipt <signed R60 activation receipt>",
46
+ "expected": "restore exact signed 0.15.36 pointer/runtime and verify release/generation/machine binding"
57
47
  },
58
48
  {
59
49
  "id": "restore",
60
- "command": "npx --yes deadbyte-mcp@0.15.35 remote",
61
- "expected": "restore exact same immutable R58 release/generation and foreground authority contract"
50
+ "command": "restore exact same packed 0.15.37 candidate",
51
+ "expected": "restore exact immutable R60 release/generation and verify public MCP without rebuild"
62
52
  }
63
53
  ],
64
54
  "observed_pre_release_evidence": {
@@ -160,22 +150,79 @@
160
150
  "failed": 0,
161
151
  "receipt_id": "f1aa5d06775113d734b94149",
162
152
  "receipt_sha256": "d0dce46d897422f0db690b0cd523e5ab740ffd967e4dc8e265d436d888ccff9f"
153
+ },
154
+ "r59_contracts": {
155
+ "status": "PASS",
156
+ "tests": 19,
157
+ "failed": 0,
158
+ "receipt_sha256": "2d3adcc33d010c4977974971222e6b13d613ff268097fff0eec0113e4f82f281"
159
+ },
160
+ "r59_public_surface": {
161
+ "status": "PASS",
162
+ "tool_count": 43,
163
+ "unchanged": 43,
164
+ "added": 0,
165
+ "removed": 0,
166
+ "schema_changed": 0,
167
+ "baseline_release": "v0.15.35-1b5715b276facbc0",
168
+ "surface_sha256": "8e98978b720633acb0c7d4d65c36a945243c47f6dbccfa64ab877329f2956fe3"
169
+ },
170
+ "r59_full_regression": {
171
+ "status": "PENDING_AFTER_RELEASE_IDENTITY_MUTATION"
172
+ },
173
+ "r59_package": {
174
+ "status": "PENDING"
175
+ },
176
+ "r60_behavioral_regression": {
177
+ "status": "PASS",
178
+ "tests": 1241,
179
+ "passed": 1210,
180
+ "skipped": 31,
181
+ "failed": 0,
182
+ "batches": 16,
183
+ "note": "fresh current-tree R60 behavioral regression across 16 bounded Windows batches; manifest, doctor, package, registry and activation closure remain separate gates"
184
+ },
185
+ "r60_focused": {
186
+ "status": "PASS",
187
+ "tests": 43,
188
+ "passed": 43,
189
+ "skipped": 0,
190
+ "failed": 0
191
+ },
192
+ "r60_windows_gate": {
193
+ "status": "PASS_STAGED_WINDOWS_DOCTOR_WARN",
194
+ "preflight": "PASS",
195
+ "focused": "PASS_43_OF_43",
196
+ "full_regression": "PASS_1241_TESTS_1210_PASS_31_SKIP_0_FAIL_16_BATCHES",
197
+ "manifest": "PASS_CURRENT_TREE_FINAL_SEAL_REQUIRED_AFTER_METADATA_UPDATE",
198
+ "doctor": "WARN_EXIT_0",
199
+ "doctor_required_candidate_checks": "PASS",
200
+ "doctor_warning": "inherited production transaction-residue inventory remains unresolved; no recovery was launched during prepublish",
201
+ "note": "The connector request ceiling prevented observing the single long-lived all-stage invocation. The exact Windows gate script was observed stage-by-stage on the same candidate; default Stage=all remains the same ordered semantics."
202
+ },
203
+ "r60_package": {
204
+ "status": "PASS_VERIFY_ONLY_PRE_FINAL_SEAL",
205
+ "packed_surface_files": 2205,
206
+ "manifest_entries": 2204,
207
+ "isolated_package_gate": "PASS",
208
+ "note": "package hash is intentionally not embedded in manifest-covered metadata; exact final tarball identity is external evidence"
209
+ },
210
+ "r60_registry_round_trip": {
211
+ "status": "PENDING"
212
+ },
213
+ "r60_activation_rollback_restore": {
214
+ "status": "PENDING"
163
215
  }
164
216
  },
165
217
  "inherited_parent_evidence": {
166
- "version": "0.15.34",
167
- "parent_manifest_sha256": "2199bb59f0e0fc205d470d11f990d3ce3df444be5eba2a7d8dbc60d5f5b790bb",
168
- "parent_generation_manifest_sha256": "1a20a62aaeb324a9b5c03d158952f35092d58fedf2ac7725820ba2b094a4a88f",
169
- "parent_tarball_sha256": "a6f7b21faf34793ca17dfb6d0e9ec03320f1468d011e75d8349098df82fc2639",
218
+ "version": "0.15.35",
219
+ "parent_manifest_sha256": "1b5715b276facbc00f8e341a554472cb4829e5af60e221c357c41b66053af9d4",
220
+ "parent_generation_manifest_sha256": "047e73b62d7b7819b84201a221a09b7e647cacf21f82101ebed4fbd7e23fc430",
221
+ "parent_tarball_sha256": "8259e30946d28dd138c1e2ce2f483fe1370d1658544f2adbfebafa4db8875bba",
170
222
  "parent_registry_identity": "PASS",
171
223
  "parent_activation_rollback_restore": "PASS",
172
- "parent_rollback_receipt_sha256": "2f8aa5784fe6629c25af776b247b22b8e84d1a51c3420339ddd7a7445cf6ff9b",
173
- "four_hour_soak": "NOT_COMPLETED"
174
- },
175
- "operator_override": {
176
- "four_hour_soak": "NOT_COMPLETED",
177
- "clean_machine": "NOT_COMPLETED",
178
- "stable_final_claim": false
224
+ "four_hour_soak": "WAIVED_BY_OPERATOR",
225
+ "clean_machine": "NOT_COMPLETED"
179
226
  },
180
227
  "performance": {
181
228
  "r51": {
@@ -223,10 +270,28 @@
223
270
  "bridge_baseline_first_p95_reduction_pct": 43.06594367803213,
224
271
  "bridge_candidate_first_p95_reduction_pct": 63.632445348471286,
225
272
  "stdio_p95_delta_pct": 1.984392678457768
273
+ },
274
+ "r59": {
275
+ "baseline_version": "0.15.35",
276
+ "candidate_version": "0.15.36",
277
+ "public_surface_tool_count": 43,
278
+ "status": "NO_NEW_PERFORMANCE_CLAIM_OPERATOR_OVERRIDE"
279
+ },
280
+ "r60": {
281
+ "baseline_version": "0.15.36",
282
+ "candidate_version": "0.15.37",
283
+ "public_surface_tool_count": 43,
284
+ "status": "PENDING_POST_FREEZE_MEASUREMENT"
226
285
  }
227
286
  },
228
287
  "non_win32": {
229
288
  "portable_tests": "supported where platform-independent",
230
289
  "windows_native_tests": "SKIP/unsupported"
290
+ },
291
+ "operator_override": {
292
+ "four_hour_soak": "WAIVED_BY_OPERATOR",
293
+ "clean_machine": "WAIVED_BY_OPERATOR",
294
+ "reason": "Operator explicitly requested immediate deployment without further testing.",
295
+ "stable_final_claim": false
231
296
  }
232
297
  }
@@ -1,9 +1,11 @@
1
1
  {
2
2
  "name": "deadbyte-chatgpt-bridge",
3
- "version": "0.15.35",
3
+ "version": "0.15.37",
4
4
  "private": true,
5
5
  "type": "module",
6
- "engines": { "node": ">=22" },
6
+ "engines": {
7
+ "node": ">=22"
8
+ },
7
9
  "dependencies": {
8
10
  "@modelcontextprotocol/client": "2.1.0",
9
11
  "@modelcontextprotocol/server": "2.1.0"
@@ -0,0 +1,53 @@
1
+ const HEX64=/^[0-9a-f]{64}$/;
2
+ const PHASES=new Set(['STARTING','READY','DEGRADED','RECONCILING','STOPPING']);
3
+
4
+ function bounded(value,max=512){
5
+ return String(value??'').replace(/[\r\n\t]+/g,' ')
6
+ .replace(/(?:Bearer\s+\S+|token|secret|password|[A-Za-z]:\\[^ ]+)/gi,'<redacted>').slice(0,max);
7
+ }
8
+
9
+ export function createBridgeHealth({clock=Date.now,elapsedClock=clock===Date.now?()=>performance.now():clock,maxCapabilityAgeMs=15000}={}){
10
+ if(typeof clock!=='function'||typeof elapsedClock!=='function'||!Number.isInteger(maxCapabilityAgeMs)||maxCapabilityAgeMs<5000||maxCapabilityAgeMs>60000) throw new Error('bridge health options invalid');
11
+ let phase='STARTING';
12
+ let diagnostic='downstream initialization pending';
13
+ let core=null;
14
+ let capability=null;
15
+
16
+ function coreConnected({childIdentity,protocolEra,catalogSha256}){
17
+ if(typeof childIdentity!=='string'||childIdentity.length<1||childIdentity.length>128) throw new Error('bridge child identity invalid');
18
+ if(protocolEra!=='modern'||!HEX64.test(String(catalogSha256))) throw new Error('bridge downstream attestation invalid');
19
+ core=Object.freeze({child_identity:childIdentity,protocol_era:protocolEra,catalog_sha256:catalogSha256});
20
+ phase='STARTING';diagnostic='capability attestation pending';
21
+ }
22
+ function capabilityObserved(manifest){
23
+ if(manifest?.schema!=='deadbyte.capability-manifest.v3'||!HEX64.test(String(manifest.snapshot_id))||!Number.isInteger(manifest.state_epoch)||manifest.state_epoch<1) throw new Error('bridge capability attestation invalid');
24
+ const observed=Date.parse(manifest.observed_at_utc),validUntil=Date.parse(manifest.valid_until_utc);
25
+ if(!Number.isFinite(observed)||!Number.isFinite(validUntil)||validUntil<observed) throw new Error('bridge capability timestamps invalid');
26
+ capability=Object.freeze({snapshot_id:manifest.snapshot_id,state_epoch:manifest.state_epoch,observed_at_ms:observed,
27
+ received_elapsed_ms:Number(elapsedClock()),age_at_receive_ms:Math.max(0,Number(clock())-observed),
28
+ valid_until_ms:validUntil,release_manifest_sha256:HEX64.test(String(manifest.bindings?.release_manifest_sha256))?manifest.bindings.release_manifest_sha256:null,
29
+ generation_manifest_sha256:HEX64.test(String(manifest.bindings?.generation_manifest_sha256))?manifest.bindings.generation_manifest_sha256:null});
30
+ const unavailable=Object.entries(manifest.planes??{}).filter(([,value])=>value?.state==='DEGRADED'||value?.state==='UNAVAILABLE');
31
+ if(unavailable.length){
32
+ phase='DEGRADED';
33
+ diagnostic=bounded(unavailable.map(([id,value])=>`${id}:${value.state}:${value.diagnostic?.code??'unavailable'}`).join(','));
34
+ }else{phase='READY';diagnostic=null;}
35
+ }
36
+ function reconciling(reason){phase='RECONCILING';diagnostic=bounded(reason||'downstream reconciliation required');capability=null;core=null;}
37
+ function degraded(reason){phase='DEGRADED';diagnostic=bounded(reason||'downstream degraded');}
38
+ function stopping(){phase='STOPPING';diagnostic='bridge stopping';}
39
+ function snapshot(){
40
+ const now=Number(clock());
41
+ let state=phase,reason=diagnostic;
42
+ const stale=capability&&(capability.age_at_receive_ms+Math.max(0,Number(elapsedClock())-capability.received_elapsed_ms)>maxCapabilityAgeMs||now>capability.valid_until_ms);
43
+ if(phase==='READY'&&(!core||!capability||stale)){state='DEGRADED';reason=stale?'capability snapshot stale':'downstream attestation incomplete';}
44
+ if(!PHASES.has(state)) throw new Error('bridge health phase invalid');
45
+ const ready=state==='READY'&&Boolean(core)&&Boolean(capability);
46
+ return Object.freeze({schema:'deadbyte.bridge-health.v1',state,http_status:ready?200:503,ready,
47
+ diagnostic:reason?bounded(reason):null,core,capability:capability?Object.freeze({snapshot_id:capability.snapshot_id,
48
+ state_epoch:capability.state_epoch,observed_at_utc:new Date(capability.observed_at_ms).toISOString(),
49
+ valid_until_utc:new Date(capability.valid_until_ms).toISOString(),release_manifest_sha256:capability.release_manifest_sha256,
50
+ generation_manifest_sha256:capability.generation_manifest_sha256}):null});
51
+ }
52
+ return Object.freeze({coreConnected,capabilityObserved,reconciling,degraded,stopping,snapshot});
53
+ }