deadbyte-mcp 0.15.71 → 0.15.72
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/MANIFEST.SHA256 +31 -26
- package/PROVENANCE.json +26 -14
- package/README.txt +10 -10
- package/RELEASE.json +32 -17
- package/SBOM.cdx.json +2 -2
- package/TEST-MATRIX.json +16 -2
- package/bridge/package.json +1 -1
- package/controller/deadbyte-process-policy.json +4 -4
- package/docs/R184-package-lock.json +2 -2
- package/docs/R192-LIVE-LOG-HARDENING.txt +39 -0
- package/package.json +1 -1
- package/scripts/r192-focused.mjs +10 -0
- package/scripts/r192-release-tests.mjs +8 -0
- package/src/deadbyte-cli.mjs +2 -1
- package/src/remote-live-log.mjs +22 -1
- package/src/version.mjs +1 -1
- package/test/process-policy-refresh.test.mjs +1 -1
- package/test/r130-release-security-contract.test.mjs +8 -8
- package/test/r132-release-identity.test.mjs +7 -7
- package/test/r153-prepublish-identity.test.mjs +1 -1
- package/test/r160-release-contract.test.mjs +3 -3
- package/test/r165-live-cli-skew.test.mjs +1 -1
- package/test/r167-release-contract.test.mjs +11 -11
- package/test/r168-release-contract.test.mjs +4 -2
- package/test/r172-release-contract.test.mjs +6 -6
- package/test/r173-release-contract.test.mjs +15 -15
- package/test/r179-release-contract.test.mjs +10 -10
- package/test/r190-release-contract.test.mjs +10 -10
- package/test/r191-release-contract.test.mjs +8 -8
- package/test/r192-live-log-hardening.test.mjs +50 -0
- package/test/r192-release-identity.test.mjs +40 -0
- package/test/r59-tool-surface-compat.test.mjs +1 -1
package/MANIFEST.SHA256
CHANGED
|
@@ -30,7 +30,7 @@ c814771dddac8bfb184250b868ddb6ab9f5e0e43613c04c3ed8abe09324ec4db bin/deadbyte-n
|
|
|
30
30
|
daf9cfb371bee88cafbf5597eaa507fec504dbe0b0ddd40d0c3c2e02817f49e4 bin/deadbyte-process-host.exe
|
|
31
31
|
b55d2c4490dfb875d40f29a69df2addc5d579991cb7d094674c04d369dfcfac3 bin/deadbyte-tunnel-host.exe
|
|
32
32
|
f0ce7acb1e41325cef8b6789f95bd78b6a6107423773eace57a12b49faa55095 bin/WORKER-REGISTRY.txt
|
|
33
|
-
|
|
33
|
+
bfc07cd0c43c61563b01ee7312ea70210f843a389560991551c9af290459edc6 bridge/package.json
|
|
34
34
|
f99413d82f84c808f52d5b8696c190a9142dd08f517f5ec3e442f0769402d189 bridge/src/bridge-health-r59.mjs
|
|
35
35
|
fa0dcc4cde9c03e978c9f9dd24b62afa83f49bdada1f42ead544a9a17edd332f bridge/src/bridge.mjs
|
|
36
36
|
471f41c84c5b339cd81a708a4f36d4470e614946817ad2f9fca295dde2c83fb6 bridge/src/canonical-json-r60.mjs
|
|
@@ -46,7 +46,7 @@ b963f3256f407b4216343815d310f9dce06ac61633c3b45071be6712ebb357d2 bridge/src/rem
|
|
|
46
46
|
331d168750a18d2b8e351796ddbf8f9619374c707c3cea18b8b166934f8af0d3 controller/deadbyte-desktop-policy.json
|
|
47
47
|
5e8ef223b0dbc52173aaf044a075837eef8964ff0e7e16f83a595e0d17695625 controller/deadbyte-host-policy.json.example
|
|
48
48
|
6f0cc469f51444dd18211fa3346c826abeea4d2ec7a8945f0200dc5c622031ef controller/DEADBYTE-MCP.cmd
|
|
49
|
-
|
|
49
|
+
a46b67c0306e4a8c40b27509539d4ffcfe0b04b9960f217e1c014d70dfc9b6cc controller/deadbyte-process-policy.json
|
|
50
50
|
d274b099a298c1033fea8f1e8849751693bbc0448778d619400acb82d4f53a3b controller/deadbyte-semantic-lsp-config.json
|
|
51
51
|
3023d2985f5b6e5cc7c0d08cb8b342b362c93dce7ebd4224635362194be40cf2 controller/README.TXT
|
|
52
52
|
101e613518c73c6aa31c725fe1b5f9a24c995dc9876b7b28e1f3e97ac9f8d362 DEADBYTE-MCP-R27-FINAL/R27-ADMIN-CLOSURE.json
|
|
@@ -108,8 +108,9 @@ d6e3b755b0483eb9468c7dca55b005e5a7f8b041f2dc7f9de800c13692151e82 docs/R168-NATI
|
|
|
108
108
|
89105d5a90ee91fbb032004648c2b5661f95a48b62b1a4190d4c7361ef3bcd14 docs/R168-READONLY-AUDIT-AND-RESUME-20261026.md
|
|
109
109
|
640a232aa5210014a372d625e2d63c3c26f55a386411d68f6ce2ad79bd5d0104 docs/R168-SIGNED-RECONCILIATION-PRECOMMIT-20261026.md
|
|
110
110
|
eb985acaa740a6f4189d202f7c1f153c4586b6b1c5c17f825c61f57d583c143c docs/R169-NPX-ACTIVE-CONTROLLER-DELEGATION-20261026.md
|
|
111
|
-
|
|
111
|
+
f403c2aca1d5438667f0bac1dd289cadf91d14f8a06cb5897eac852c25701e7c docs/R184-package-lock.json
|
|
112
112
|
720abe9ae4a132b4b8e9d6f1456b6bc1c5b19c7a61990d53fdbabb131b75c196 docs/R186-OWNER-CONSENT-HANDOFF.txt
|
|
113
|
+
67abaa3e25608ff37f0b032904dc1629b693f70192d248a8a31be2c98b8d5e9a docs/R192-LIVE-LOG-HARDENING.txt
|
|
113
114
|
68b7e636d8e3091d4f571d7a0c79f81738f7bf1b89cd497a8681e0dd1f362f58 docs/R221-STRICT-OUTPUT-CONTRACT.md
|
|
114
115
|
d9b68959fa7382e2a6c3dae703ac62767bba72ba21680d304048723f1671b5a0 docs/R36-CAPABILITY-EVIDENCE.md
|
|
115
116
|
3c715faadfb568f094c262906c6bb8bc0caa77c6af6053c8b84aed74df3a43ef docs/R44-ARCHITECTURE.md
|
|
@@ -1428,8 +1429,8 @@ db605a698f917c4006462596e6526fe6a9c6eff9b8409e8472fe545d4b70027c node_modules/z
|
|
|
1428
1429
|
f67a25ded944912bd4621b68df17c7c70a52aae117278c076c0aabbc32a3abba node_modules/zod/v4/mini/schemas.d.ts
|
|
1429
1430
|
51b3a7869df2d3a1bd98acb9d5b6a61bbccc7653d7a3d8fca7f0e0db7e84e284 node_modules/zod/v4/mini/schemas.js
|
|
1430
1431
|
3e3125b5a537a24c3632c1c5c09640ce7bcb3935901b127ad8ae3c37a27f133f node_modules/zod/v4/package.json
|
|
1431
|
-
|
|
1432
|
-
|
|
1432
|
+
aaa3d680c0efc031399f31db86d13737a86f3847263e2b091b8bcbe9f6a95d3c package.json
|
|
1433
|
+
d7be74cd25fd0eccc8ecad0de004dd37f1df8d094465a1bd338afbe5c8b21e84 PROVENANCE.json
|
|
1433
1434
|
27ca0f3c9ee3a1b6374a9c8dd98008decdd0c7659c7a569c70ad7b9734c74655 R34-BASELINE.json
|
|
1434
1435
|
0b7ec5ee347ddfa6cca59740fc7a8fe3fc5d51406265bb12189e82fa106319d2 R41-PARENT.json
|
|
1435
1436
|
bd2a789b0aab5663f0d208af2ca8e4ec98179bc8c7b57e70a962d4e06a3dcfc4 R42-PARENT.json
|
|
@@ -1438,9 +1439,9 @@ f932ef78b7a72b1bb0d7aedb5fe42fbb9951c2492eb528b72442f46ddff81a6c R44-DONORS.jso
|
|
|
1438
1439
|
731b4c559fc0d25dea701e4474f02400b27e8e3f4cac9f230d5214497d4490a9 R44-PARENT.json
|
|
1439
1440
|
d33ec5d167dd44800ba4e68372b08db43deb8d01df2ef71dd435ff004ac66c8b R45-PARENT.json
|
|
1440
1441
|
3dc607603fea511e2f428e9546a875ab7e38b6a0bbd5e803e4510de082f30804 R49-PARENT.json
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1442
|
+
1cd4f7a087f3c7a801bd01209d073e3fbdae0762f26a763d7df53bff1f026a97 README.txt
|
|
1443
|
+
4233ee6bbb72b05a1993b14cbe97ce3e8cf16594f2704a14d149bfa1f3df200e RELEASE.json
|
|
1444
|
+
e0bb738faefb12f472fb6bc0aa007b3cbb8fe89fbbebed1e5e2c4839165c0aec SBOM.cdx.json
|
|
1444
1445
|
7c86062c4f69db3179a129d65945ccfab1b1c1c5bcc29b91383eac097d50f2aa scripts/activate-skill-creator-1.1.1.mjs
|
|
1445
1446
|
bd138fe5a64088e8e1a7a5bf6104c5b17317bdc8cf3ad8191ea00ed82ace7d9b scripts/agent-eval-r42.mjs
|
|
1446
1447
|
8d90256a6863f3bbbff02e95cb12389fc6f9e8dbcb77bf1c20c902de371425e8 scripts/archive-source-zips.mjs
|
|
@@ -1646,6 +1647,8 @@ fda8078f94a874b1f4cf0fc84ffed0e567d3f433f949d99686863ad4d4962fc4 scripts/r191-p
|
|
|
1646
1647
|
fd66906380af8d6f1671a74c84e58e5442489ebaaeb3294d727e07d0e7028476 scripts/r191-protected-failure-gate.mjs
|
|
1647
1648
|
21faa80e676fd50448b3b7201d84aa219389dc5132e1b813a4d8fb8e34e2af5a scripts/r191-release-contract-runner.mjs
|
|
1648
1649
|
9815f66c3966721016e2328776b3757e4dc802d689fb59cbe0c3946e4a0ad76f scripts/r191-unreached-focused.mjs
|
|
1650
|
+
fcf691339a6f81594ecf063806240ff0818d59273829efbcaff8d0541eed986a scripts/r192-focused.mjs
|
|
1651
|
+
ad48fbf914698e2d6d29f7716f72e020cc9a666ebf33bc02e3b6bc439d13cdbb scripts/r192-release-tests.mjs
|
|
1649
1652
|
e19a1d591ccd07af2e87d930ce23b0cc9b814bc2a395408045543847154097d7 scripts/r40-compact-ledger-probe.mjs
|
|
1650
1653
|
68b9a60aca3f3e3e9ec239710f8368594ef3c8a98fff0816d2e9a7950df48287 scripts/r47-core-failures.mjs
|
|
1651
1654
|
75f821cc44f8c31f67de0b28b64021d9fb160984a597e704b29c33f9f3a41dde scripts/r47-syntax-check.mjs
|
|
@@ -1841,7 +1844,7 @@ dcd4c9784e88e253e91ddad3c24b38cb0b36906ed737f6d7bee7712360f66f7a src/containmen
|
|
|
1841
1844
|
fe1761b98738e1aea1d25ddf3a0ba56ccad95a43d45104a89b8665197c7c9e18 src/containment-result.mjs
|
|
1842
1845
|
705a89cb12fedb993d55dfed32a5870d33e10db26422c944d1e52223566c096c src/containment-smoke.mjs
|
|
1843
1846
|
63a1d4d6a53f9eb7e02197b4e42158b867da8c042c2e61848d8a36cd398b8bd8 src/context-provenance.mjs
|
|
1844
|
-
|
|
1847
|
+
72b63189fb8bc0270f41ce1320d2fe54cf48d66ec9a0d40df3ccc952d3a48651 src/deadbyte-cli.mjs
|
|
1845
1848
|
9e9766d64dcc9e2c8d23c2c0a5e9dcb87b7213e8de668f79f593ad48daf15acd src/deadline-cancellation.mjs
|
|
1846
1849
|
fe7a8f8611c33552b3da466a9b866ce79a737bfd5b9a78a953269b30cce16274 src/desktop-contract.mjs
|
|
1847
1850
|
f97352e510c659910c2d4a874d15be028e1291d685c6c1a7be53bdf1a335c2d8 src/desktop-input-r40.mjs
|
|
@@ -1952,7 +1955,7 @@ a8a0d32f261e570802eae6358b0fde47f5b86bc3565e64020905373bb84d6ab2 src/release-ge
|
|
|
1952
1955
|
3f41fa32ddeed403b5431a338821b62e0c1946a9d808f06d0edb2d9341ca0121 src/remote-console.mjs
|
|
1953
1956
|
e4289e7a073e5de51fd6180130ba47fbf361f231cd074dc6069552474de7a100 src/remote-device-r44.mjs
|
|
1954
1957
|
9f6383c95b5339ab93fa17906248ad3a29de52339a6755ee78613e16d5e1ae96 src/remote-enforcement-probe-r60.mjs
|
|
1955
|
-
|
|
1958
|
+
f702d32247a969a2dbe3876ed8f22b9b3212313775ef430e7a835b369902b28d src/remote-live-log.mjs
|
|
1956
1959
|
192172611b350febcb37cf08aa1b519a08e766923f9da99d017a239a7ad9ec0b src/remote-log-decode-r60.mjs
|
|
1957
1960
|
6131fda046bf7a751ffc99d922e8f14bdbc3accff9ee81b4f5ebef5b7b2f9b98 src/remote-mcp-autonomous-smoke-client.mjs
|
|
1958
1961
|
ebff2982142263632a40b9f144e802b9cb0c86c798bb6c591de7f175ba50b660 src/remote-mcp-coding-smoke-client.mjs
|
|
@@ -2001,13 +2004,13 @@ aa765e9a28c69ff58a5b5a0d29b49ea181af4db9076633b102dbca25861e708e src/tunnel-std
|
|
|
2001
2004
|
34719b7d54336b2abbc152ff0c5fb2f0052d4f77753f9b7538adfdd20c804b5b src/uac-approval-contract-r153.mjs
|
|
2002
2005
|
642cb67d1854850e336ee73fbd71b329056bdcbdab35cea19c1a995a155ff5d9 src/verifier-cli.mjs
|
|
2003
2006
|
8f818a4852ce3be3a380cd4736c3073a7a3e0e45cd7c7ca90588a6b843d3d022 src/verifier.mjs
|
|
2004
|
-
|
|
2007
|
+
0b8954350f6fceedfcc7e7fa7a0a6e9ef94832cf24ab57c4b903f7a02f004b93 src/version.mjs
|
|
2005
2008
|
3706206ecaa560b9579f57ed3df104af543331fb09a3ad0d28b217aea2d0256f src/windows-powershell-environment.mjs
|
|
2006
2009
|
7e09c57a97289360aabfaf3d531208e54872efbfb3182f3c18203d2cb88c46b5 src/worker-registry.mjs
|
|
2007
2010
|
76361d5ae9a710273cf64a7525082197b692236bf23689875e5fd1ef4aa96d2b src/worker-scheduler.mjs
|
|
2008
2011
|
4da1b32f5198bb089bc68b7eb6de21ea296678b5020018a73742bf0df57d62fa src/workload-substrate.mjs
|
|
2009
2012
|
1bd637e7634ca0259791c5108fcf324554f70b1db49e5eac3505287c04bbc3be STABILIZATION-PROGRESS.md
|
|
2010
|
-
|
|
2013
|
+
793abdb4e543612b3368e6c7c3a4a8756ebbce90857e49075e3d0c4b2964a7c4 TEST-MATRIX.json
|
|
2011
2014
|
e4f1fb97545f23772ddff28ad3f9954a4714f9854062fca62e0e12c1cb2ec4ae test/agent-backend-r44.test.mjs
|
|
2012
2015
|
2a78c818058b25efdc143a3a97c832da231ccd6ff9d90c7796d681a0251b85c4 test/agent-crash-child.mjs
|
|
2013
2016
|
d9461ab7c118ee75d37a2d6f5e637d7e43505af6a9ad8c7ddafffc8ace185a5b test/agent-crash-worker.mjs
|
|
@@ -2226,7 +2229,7 @@ b1ad3bc391b2f897223fe4e71bb23d4a4a8e21f8bec0915756c2606b9294e164 test/output-sc
|
|
|
2226
2229
|
d81cbf3e6579d3f283387e5050f170fa4c84e1ef1418e46fbd1a67436264fbe7 test/process-longrun-r36.test.mjs
|
|
2227
2230
|
ddac61c12ab29be1736885c01c999ca0346ba44c712cc2c8a48a7eea1ed62a53 test/process-mcp-tools.test.mjs
|
|
2228
2231
|
b84622d07d2ecfe27b55e45f7e89949f29a2d14184d8c6f6f82ed7f1e5fa59be test/process-native.test.mjs
|
|
2229
|
-
|
|
2232
|
+
b91861b316ab512b6968842f9ceb88c9a66adae2d69b468b49340d9d9950e0e6 test/process-policy-refresh.test.mjs
|
|
2230
2233
|
a42147db7f8aa7dc5cb8c29598c3b2ba5f5f3498bddf84f4ada09c74665bc710 test/process-policy.test.mjs
|
|
2231
2234
|
e13275898e892ca70455cb53bb0a8c936c0f1a0a1c82ece671a314aefe106367 test/process-readiness.test.mjs
|
|
2232
2235
|
510f51a6288a1030387cf372951499aea6dba2a35362ad89510bf7480e2f8004 test/process-release-gate.test.mjs
|
|
@@ -2263,9 +2266,9 @@ ce163ee9f288e30a213636e2267b8630016ef8a170f12286e8cdd44219bdab32 test/r124-live
|
|
|
2263
2266
|
17475b51e416ae678f959f8975fab8497eb7c57d13e36cac8656c0e1f7424c0c test/r126-restore-policy-envelope.test.mjs
|
|
2264
2267
|
1721d4bd3bb58c10ad9d86b69ad1d993ec5a1e6315c95b28fa50ab67d4ca302a test/r127-restore-append-policy-boundary.test.mjs
|
|
2265
2268
|
07a4f6955058d0975e53ba3e4d0ec202a43dac2717cd5aa8e09cde9f3b859544 test/r129-sdk-security-baseline.test.mjs
|
|
2266
|
-
|
|
2269
|
+
2425b9217d9c3b1628a40052c11e8671e7f98935fbff06f610ad7b2be21022ca test/r130-release-security-contract.test.mjs
|
|
2267
2270
|
bb7963baf412ec0f5aca183f6dd98eda9026fe763017f9af595581b521ae6cb7 test/r131-installed-manifest-boundary.test.mjs
|
|
2268
|
-
|
|
2271
|
+
1705cab8e63c75a0ea60cf4c1d2feea628c851c37863e06db1ef5c7d6735435d test/r132-release-identity.test.mjs
|
|
2269
2272
|
acd236a4d8ba035007bde4166a521b8d4e6044f58c52c0bae9cb42fa75338533 test/r135-autonomous-scope.test.mjs
|
|
2270
2273
|
3fcf657aae1f8466abc5ab82bb5a619966ea9b8a33d4a95a5a5246df5bf3afa1 test/r136-scoped-command-rights.test.mjs
|
|
2271
2274
|
e0c466f25b35eb894166df792b71b23924610d32363756c75ff437dfdaa12a4c test/r136-scoped-observer.test.mjs
|
|
@@ -2289,7 +2292,7 @@ b92f914455cac010b1468cd37a31651e7d423571d0edfeb29829d2281073e1e3 test/r146-lega
|
|
|
2289
2292
|
32f40b649033172384267bbe8f6009dededcba81afff1e3ca51331407197fe3b test/r146-livelog-backpressure.test.mjs
|
|
2290
2293
|
77b3bfcd6fa04e21c7a04206181f7b4cbd5321f799a145859d8e84d0b984d174 test/r147-remote-request-hash.test.mjs
|
|
2291
2294
|
ad184a83ee098eac21d523adbebfd379dcf8b87d4878c2d8dcca95cb22fdc9ee test/r153-clean-activation-recovery.test.mjs
|
|
2292
|
-
|
|
2295
|
+
59c99c087dd10507a37cb466a8e14e126c6c91c90115e08e4c2fcb1c8c8a3959 test/r153-prepublish-identity.test.mjs
|
|
2293
2296
|
377b03dbb1d82ed0ddeee261a060b8173d5591dfc20a60d9ea991390a03039b4 test/r153-r60-host-repin-e2e-contract.test.mjs
|
|
2294
2297
|
e2bc7995f2ca85ce5d4a15e647c209d273d8f3871d25bd353046af66ee71bb34 test/r153-r65-signed-precondition-recovery.test.mjs
|
|
2295
2298
|
ce37fc59761ceddf43fd3844b34d57f64f1c8d191ca1d6cba13b643a5e2c02ce test/r153-restricted-reused-pid.test.mjs
|
|
@@ -2310,17 +2313,17 @@ efc195b10b5cb706c23f3a35ba8bf07e7ee23daffcb072704e5c14ffd6db26d5 test/r158-epoc
|
|
|
2310
2313
|
ff0fc541ef9b9b1565be647d2861c29afc8827504122c1df88a94d67fd2c20bd test/r159-legacy-marker-evidence.test.mjs.before-assertion-fix-20261025-120246.bak
|
|
2311
2314
|
d5d0eddc5c33ae9ea2f31d57381bf595bd85adf8048d2886f67554141f086bde test/r160-marker-proof.test.mjs
|
|
2312
2315
|
3f7ebe55c45c6c5e28145700179f6ad75e01fcaa9fd5e49be143098c314f1a9a test/r160-package-decision-manifest.test.mjs
|
|
2313
|
-
|
|
2316
|
+
f8e16dde5639bdc9cf00140c286b69b4cc7a36f70f71d908d711a5dd53e368f9 test/r160-release-contract.test.mjs
|
|
2314
2317
|
8ddebf4e81e5ccb66533694e7b04775ea9ce063ead75a17c54ce28580a55a0b4 test/r160-stable-launcher.test.mjs
|
|
2315
2318
|
c0635205da565e3643059abe65365740ba46bebe4591b8a9199cfba4ce525e3f test/r163-isolated-slot-rollback-restore.test.mjs
|
|
2316
2319
|
842222cce8d50ba214a4dc97d5965d711e83a29f6660e784ccaf000f50a4213d test/r163-publish-fence.test.mjs
|
|
2317
2320
|
3473a513db884f2ab40a9e3e875ca6ef2c9e5202fc0bf4df56e388b0d55e5e84 test/r164-remote-history-skew.test.mjs
|
|
2318
|
-
|
|
2321
|
+
261bf7201878c2ebeb0beb5febce637fcd66d0fa9e2b767cc2241fe54a9ea8f2 test/r165-live-cli-skew.test.mjs
|
|
2319
2322
|
e9c493435956201439479b05d301e81673457abe5c456d8a50153f3d9922daf9 test/r165-publish-fence.test.mjs
|
|
2320
2323
|
425e6756afe323d358287a4d00ab6460e8398a8ee39c4a64e4be7ae191c4676f test/r166-hotfix-contract.test.mjs
|
|
2321
2324
|
13c4c7792152466b6967627b44eb4aaf815e9c20b4bd67a50323420c937d532c test/r166-release-readiness.test.mjs
|
|
2322
2325
|
52e6f015329fecf570ac6211ca9904b929119b66dbf72c6776be5cefcc63b282 test/r167-activation-path.test.mjs
|
|
2323
|
-
|
|
2326
|
+
00fbe8b81dcd3c753de2369a6f82c9bf4c3d44a5e5fbfad12a4468dbf9e8b7d6 test/r167-release-contract.test.mjs
|
|
2324
2327
|
471102e7b4e1655423efa80688c786306df62d6b76e23d41c8ebe596b8f63749 test/r167-release-readiness.test.mjs
|
|
2325
2328
|
eb5a5e73fd0284297959f4e6ca1631ebf0f23749c56ec1b4cc75cad5f8f1ca6b test/r168-combined-targeted-runner.mjs
|
|
2326
2329
|
44818657894db72a0ead65e96e734f30c11f10f5914e2c4e2961ee3a3e5b2c70 test/r168-crash-journal.test.mjs
|
|
@@ -2334,14 +2337,14 @@ eb5a5e73fd0284297959f4e6ca1631ebf0f23749c56ec1b4cc75cad5f8f1ca6b test/r168-comb
|
|
|
2334
2337
|
191b6db0f79e23b48fd64be5d788dc651ef1af5ab165cff3cbe99f18139872aa test/r168-owner-reconciliation-contract.test.mjs
|
|
2335
2338
|
a648691c29341984996f57d55b0871ab98dc6c96ca4d927f41912bef9d15f320 test/r168-protected-entrypoint.test.mjs
|
|
2336
2339
|
c40ee4e3c6f22ace3da133fee953a88545c773def2fe1ef84d5b552b6c9f649a test/r168-reconciliation-audit.test.mjs
|
|
2337
|
-
|
|
2340
|
+
2c9d8bbc7e002b8e6c274dd8023c825440aaff5620f452e59d5297c6e437d75c test/r168-release-contract.test.mjs
|
|
2338
2341
|
aec64c26a92400784ad3693d594e28e7aa258a6330e2ba56f47bca1f57e568c7 test/r168-remote-one-shot-coherence.test.mjs
|
|
2339
2342
|
ccd8b5b287808f5165f5e7fd7ade8278ae84c33463e4f9753059806da503fd3c test/r169-delegate-active.test.mjs
|
|
2340
2343
|
2866649338191383446edb60d11d558736a4e6d58cb0cdebd94cd8e162fae6bc test/r169-delegate-cli-integration.test.mjs
|
|
2341
2344
|
5d2725223b48c2d44dab2eade455f9008a36f91522dcdcc3c0594d762c282b2b test/r169-targeted-runner.mjs
|
|
2342
2345
|
bf015b6b85a40f9f81a7627d71217b2994c2161943368bde46be94852ec7eb77 test/r172-activation-recovery.test.mjs
|
|
2343
|
-
|
|
2344
|
-
|
|
2346
|
+
ca1992779332006b235d493511d7d287b81dac9d1bb8cf62868c5ae955487a8d test/r172-release-contract.test.mjs
|
|
2347
|
+
56cfa94238cbd709daa43970cbb2583f6434902e411202f3e78d2f2cf792df0a test/r173-release-contract.test.mjs
|
|
2345
2348
|
41c7ae176274fb263b49a376a0f9d6ea92fe6c34015417584614a208146c33fb test/r174-owner-webauthn.test.mjs
|
|
2346
2349
|
1f39c010f8afa08d974f7741cbff09a3b75e38d2ee347a434bed0dfbdfd00c90 test/r175-cli-flags.test.mjs
|
|
2347
2350
|
d592c975ab4c53c5a88c9cc62eb07efef5c129ed27fdb9a55f97682bdd3ec56f test/r175-foreground-boundary.test.mjs
|
|
@@ -2349,7 +2352,7 @@ d592c975ab4c53c5a88c9cc62eb07efef5c129ed27fdb9a55f97682bdd3ec56f test/r175-fore
|
|
|
2349
2352
|
04a9f980a77496b66b33855afea30c020529261deefcee3e842bd16a787fbeac test/r176-pretty-live-log.test.mjs
|
|
2350
2353
|
f3e4319f862fe945690119eecbb7def921bbe81dc9b0b3e8e1964f4b693738f9 test/r177-windows-absolute-live-path.test.mjs
|
|
2351
2354
|
e8eaf25f5d0dd591c8dd486a53d2bf9c3d70d8d7a120cf4d820a02dba9b8d30e test/r179-absolute-path-live-log.test.mjs
|
|
2352
|
-
|
|
2355
|
+
2a938e1cdf0f07e37d8b26a169ddaa6b45531b610c47219ddb033ba9bfcab5b4 test/r179-release-contract.test.mjs
|
|
2353
2356
|
eff6de983ea907a6720d176d96065548163f0ec4070a8ff0a3ec8310b174136b test/r186-controller-owner-grant.test.mjs
|
|
2354
2357
|
9aac064b28b30bcdb99554561b43193fcf4e5bfed18e659e55aa69a30e010560 test/r186-owner-consent-preflight.test.mjs
|
|
2355
2358
|
6afcbea206aecfdd9e960b7a6f4bcfd2a073e1e9043d936177ab5c38d7d2f90c test/r186-owner-enrollment.test.mjs
|
|
@@ -2359,11 +2362,13 @@ c13ecbef48a524e13180e275e1d59db840d3c687457c1ecb39bd76383b6f2852 test/r186-owne
|
|
|
2359
2362
|
0ea5b5374234d74bfa82f2e32a3638cd2afcc6c604397b9dd2f88ec84f695467 test/r186-owner-review-export.test.mjs
|
|
2360
2363
|
e1aabf722066a7b747ef309411f1563869703211af8852c538268d6fd7485cf9 test/r190-foreground-cli.test.mjs
|
|
2361
2364
|
1dea1341cd9cb4a97adb8c55fdaa0abd57e46e6cef5a6454c5b13e5ab4fa2937 test/r190-foreground-owner-recovery.test.mjs
|
|
2362
|
-
|
|
2365
|
+
6285c9a9fd71db13f2e910621ccfef62a42fe7fe923398ba9aa46efaad9b428a test/r190-release-contract.test.mjs
|
|
2363
2366
|
c3689536a740de5f09ca1cb61e5cfe124b326a384cfe89f1b070bae0f4d3ff72 test/r191-epoch-root-selection.test.mjs
|
|
2364
2367
|
f1d544f8fe71f530995f1af5659c23a7783beba822b5db12d8fe2da63f8d7703 test/r191-epoch-source-claim.test.mjs
|
|
2365
2368
|
3cc7193029ff2935fd0997384216c324e3cdf7e750d6e42a96d41362a47bf6be test/r191-inherited-epoch-preflight.test.mjs
|
|
2366
|
-
|
|
2369
|
+
7f9ba5ef26d2561a1fc07f19ddaf02d3f12445141ce7d77fc3ab9ce2fab5be92 test/r191-release-contract.test.mjs
|
|
2370
|
+
43324a47621dbbf32383c6924d11762dfa5c4d59773c1eaaab8969e6e778b29b test/r192-live-log-hardening.test.mjs
|
|
2371
|
+
3ad304df1827fdd0234c0cc86dda459aee348f14249ca00c2f3ff5447a8de373 test/r192-release-identity.test.mjs
|
|
2367
2372
|
3c5c3724bce89aa1fa59fe97cc346c40a5674bb5cd6dc3e2f31b86f2d62e75e4 test/r33-closeout-regression.test.mjs
|
|
2368
2373
|
5e3700ee610442dfd7b7ae5e380263f231438be0e32790597142c41362a53c9a test/r33-finalization.test.mjs
|
|
2369
2374
|
7e419d3c1caf79bfc7407207f50e5645298f9b19d91a7d6f595af185b92cd55e test/r36-finalization.test.mjs
|
|
@@ -2429,7 +2434,7 @@ ca8e23abc89f3eadeceb4b6fdad2cb4db5a7933029ece8e8beae2c6a158876b7 test/r58-owner
|
|
|
2429
2434
|
9a42827782a3c476e545e954fe38b99c96e925462ad9d4f7ea159493f7736bcc test/r58-stale-owner.test.mjs
|
|
2430
2435
|
84be7ee7d167eb06c9f9fc178930daaa81e53a91de40bad6d7df2060bd3dd165 test/r58-windows-gate.test.mjs
|
|
2431
2436
|
76db2a4009d76b86e1da57b91a96b0d6bfeb4063bec3301ede736e2fd5832f39 test/r59-release-contract.test.mjs
|
|
2432
|
-
|
|
2437
|
+
df38cbdbc2afb6de622be5780513dda56fce820ea0d25701739ccfaf415d32b5 test/r59-tool-surface-compat.test.mjs
|
|
2433
2438
|
3befd5d4dc4d8ca9e1f6cbeb9c430671e676c5696d6ee5931c2cbe3244c558a4 test/r60-authority-coherence.test.mjs
|
|
2434
2439
|
60577e231c7d164f57a3960c574d3e369ca140d9dbc477b2444fa62dbf224e51 test/r60-authority-enforcement.test.mjs
|
|
2435
2440
|
a1fa0b1e529da05f3659a33be6d36dab02f93808638cf0f458d057e9c6d1e35b test/r60-bridge-dispatch.test.mjs
|
package/PROVENANCE.json
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": "deadbyte.provenance.v1",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.72",
|
|
4
4
|
"source_model": "npm deadbyte-mcp@0.15.70 exact registry artifact -> isolated R191 protected activation successor; active production 0.15.68 unchanged",
|
|
5
5
|
"signing": "ed25519",
|
|
6
|
-
"parent_tarball_sha256": "
|
|
7
|
-
"parent_activation_status": "
|
|
6
|
+
"parent_tarball_sha256": "20ed3b20e72b4e4226736a1e432b05b851e9fa265e9bc2966b74f266477b7e27",
|
|
7
|
+
"parent_activation_status": "PRODUCTION_ACTIVE",
|
|
8
8
|
"parent_rollback_receipt_sha256": null,
|
|
9
9
|
"runtime_predecessor": {
|
|
10
|
-
"release_id": "v0.15.
|
|
11
|
-
"manifest_sha256": "
|
|
12
|
-
"generation_manifest_sha256": "
|
|
10
|
+
"release_id": "v0.15.71-1818abc327478a96",
|
|
11
|
+
"manifest_sha256": "1818abc327478a96d935c200e25aad8515f15edc1842845b73bd0de57606da8c",
|
|
12
|
+
"generation_manifest_sha256": "aef437280102171a9b68da754fca16a03202104db7d5c420751624580ad6fadc"
|
|
13
13
|
},
|
|
14
|
-
"source_predecessor_manifest_file_sha256": "
|
|
15
|
-
"source_predecessor_tarball_sha256": "
|
|
14
|
+
"source_predecessor_manifest_file_sha256": "1818abc327478a96d935c200e25aad8515f15edc1842845b73bd0de57606da8c",
|
|
15
|
+
"source_predecessor_tarball_sha256": "20ed3b20e72b4e4226736a1e432b05b851e9fa265e9bc2966b74f266477b7e27",
|
|
16
16
|
"reproducibility": "R190 source extracted from registry-verified npm 0.15.69 SHA256 578c1630608f9df816524c78abc9e1a55357fdc3cd25e142122f1a823e1d69e3; protected full gate pending",
|
|
17
17
|
"public_surface_evidence": {
|
|
18
18
|
"status": "PASS",
|
|
@@ -78,10 +78,10 @@
|
|
|
78
78
|
"limitations_preserved": true
|
|
79
79
|
},
|
|
80
80
|
"builder": "deadbyte-r190-foreground-recovery-isolated",
|
|
81
|
-
"parent_release_id": "v0.15.
|
|
82
|
-
"parent_manifest_sha256": "
|
|
83
|
-
"parent_generation_manifest_sha256": "
|
|
84
|
-
"source_predecessor_version": "0.15.
|
|
81
|
+
"parent_release_id": "v0.15.71-1818abc327478a96",
|
|
82
|
+
"parent_manifest_sha256": "1818abc327478a96d935c200e25aad8515f15edc1842845b73bd0de57606da8c",
|
|
83
|
+
"parent_generation_manifest_sha256": "aef437280102171a9b68da754fca16a03202104db7d5c420751624580ad6fadc",
|
|
84
|
+
"source_predecessor_version": "0.15.71",
|
|
85
85
|
"operator_override": {
|
|
86
86
|
"four_hour_soak": "WAIVED_BY_OPERATOR",
|
|
87
87
|
"clean_machine": "WAIVED_BY_OPERATOR",
|
|
@@ -111,7 +111,7 @@
|
|
|
111
111
|
},
|
|
112
112
|
"doctor": "WARN_INHERITED_TRANSACTION_RESIDUE_EXIT_0"
|
|
113
113
|
},
|
|
114
|
-
"source_predecessor_tarball_status": "
|
|
114
|
+
"source_predecessor_tarball_status": "PUBLISHED_EXACT_REGISTRY_VERIFIED",
|
|
115
115
|
"r61": {
|
|
116
116
|
"reference_corpus_roots": 7,
|
|
117
117
|
"source_copying": false,
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
"package_registry_activation_rollback_restore": "PENDING",
|
|
126
126
|
"stable_final_claim": false
|
|
127
127
|
},
|
|
128
|
-
"parent_registry_tarball_sha1": "
|
|
128
|
+
"parent_registry_tarball_sha1": "4c8dc9b82185d5fa13eaee42a6209c3f499831de",
|
|
129
129
|
"r62": {
|
|
130
130
|
"transaction_inventory_default_max_entries": 1024,
|
|
131
131
|
"parent_state_records_observed": 341,
|
|
@@ -434,5 +434,17 @@
|
|
|
434
434
|
"preflight_acl_behavior": "ASSERT_TRUSTED_AND_UNTRUSTED_PATHS_BY_ACTUAL_R89",
|
|
435
435
|
"release_contract_changes": "R132_R59_README_EXACT_01571",
|
|
436
436
|
"full_protected_regression": "PENDING_FRESH_PROTECTED_CANDIDATE_D"
|
|
437
|
+
},
|
|
438
|
+
"r192": {
|
|
439
|
+
"status": "INTEGRATED_SOURCE_FOCUSED_TESTED",
|
|
440
|
+
"source_manifest_sha256": "PENDING_FINAL_SOURCE_MANIFEST",
|
|
441
|
+
"parent_tarball_sha256": "20ed3b20e72b4e4226736a1e432b05b851e9fa265e9bc2966b74f266477b7e27",
|
|
442
|
+
"secret_scrubbing": "R192_VERBOSE_RUNTIME_REASON_SCREENED",
|
|
443
|
+
"stale_cursor_pruning": "WIRED_TO_REMOTE_CLI_DISCOVERY",
|
|
444
|
+
"public_tool_delta": 0,
|
|
445
|
+
"authority_policy_delta": 0,
|
|
446
|
+
"protected_full": "NOT_RUN",
|
|
447
|
+
"npm_published": false,
|
|
448
|
+
"production_activated": false
|
|
437
449
|
}
|
|
438
450
|
}
|
package/README.txt
CHANGED
|
@@ -31,12 +31,12 @@ check `--version` before issuing a stateful command. The compatibility CMD
|
|
|
31
31
|
fails with an explanation when npm is detected rather than forwarding the
|
|
32
32
|
wrong command to the controller.
|
|
33
33
|
|
|
34
|
-
npx -y deadbyte-mcp@0.15.
|
|
35
|
-
npx -y deadbyte-mcp@0.15.
|
|
36
|
-
npx -y deadbyte-mcp@0.15.
|
|
37
|
-
npx -y deadbyte-mcp@0.15.
|
|
38
|
-
npx -y deadbyte-mcp@0.15.
|
|
39
|
-
npx -y deadbyte-mcp@0.15.
|
|
34
|
+
npx -y deadbyte-mcp@0.15.72 mcp
|
|
35
|
+
npx -y deadbyte-mcp@0.15.72 remote
|
|
36
|
+
npx -y deadbyte-mcp@0.15.72 remote status
|
|
37
|
+
npx -y deadbyte-mcp@0.15.72 remote restart
|
|
38
|
+
npx -y deadbyte-mcp@0.15.72 audit status
|
|
39
|
+
npx -y deadbyte-mcp@0.15.72 audit verify
|
|
40
40
|
|
|
41
41
|
|
|
42
42
|
R173 EPOCH-REVOKED AUTHORITY PROOF HOTFIX
|
|
@@ -60,7 +60,7 @@ CLAUDE DESKTOP
|
|
|
60
60
|
"mcpServers": {
|
|
61
61
|
"deadbyte": {
|
|
62
62
|
"command": "npx",
|
|
63
|
-
"args": ["-y", "deadbyte-mcp@0.15.
|
|
63
|
+
"args": ["-y", "deadbyte-mcp@0.15.72", "mcp"]
|
|
64
64
|
}
|
|
65
65
|
}
|
|
66
66
|
}
|
|
@@ -72,7 +72,7 @@ Save as .cursor/mcp.json:
|
|
|
72
72
|
"mcpServers": {
|
|
73
73
|
"deadbyte": {
|
|
74
74
|
"command": "npx",
|
|
75
|
-
"args": ["-y", "deadbyte-mcp@0.15.
|
|
75
|
+
"args": ["-y", "deadbyte-mcp@0.15.72", "mcp"]
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
}
|
|
@@ -85,7 +85,7 @@ Save as .vscode/mcp.json:
|
|
|
85
85
|
"deadbyte": {
|
|
86
86
|
"type": "stdio",
|
|
87
87
|
"command": "npx",
|
|
88
|
-
"args": ["-y", "deadbyte-mcp@0.15.
|
|
88
|
+
"args": ["-y", "deadbyte-mcp@0.15.72", "mcp"]
|
|
89
89
|
}
|
|
90
90
|
}
|
|
91
91
|
}
|
|
@@ -95,7 +95,7 @@ Add to the Codex MCP configuration:
|
|
|
95
95
|
|
|
96
96
|
[mcp_servers.deadbyte]
|
|
97
97
|
command = "npx"
|
|
98
|
-
args = ["-y", "deadbyte-mcp@0.15.
|
|
98
|
+
args = ["-y", "deadbyte-mcp@0.15.72", "mcp"]
|
|
99
99
|
|
|
100
100
|
The `mcp` command is the quiet stdio server entry for local MCP clients; stdout is reserved for MCP.
|
|
101
101
|
The remote CLI invokes the stable active-release PowerShell launcher directly with shell=false.
|
package/RELEASE.json
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": "deadbyte.release.v1",
|
|
3
3
|
"name": "deadbyte-mcp",
|
|
4
|
-
"version": "0.15.
|
|
5
|
-
"train": "
|
|
6
|
-
"label": "
|
|
4
|
+
"version": "0.15.72",
|
|
5
|
+
"train": "R192",
|
|
6
|
+
"label": "R192 live log hardening and foreground integration",
|
|
7
7
|
"protocol_revision": "2026-07-28",
|
|
8
8
|
"parent": {
|
|
9
|
-
"version": "0.15.
|
|
10
|
-
"release_id": "v0.15.
|
|
11
|
-
"manifest_sha256": "
|
|
12
|
-
"generation_manifest_sha256": "
|
|
9
|
+
"version": "0.15.71",
|
|
10
|
+
"release_id": "v0.15.71-1818abc327478a96",
|
|
11
|
+
"manifest_sha256": "1818abc327478a96d935c200e25aad8515f15edc1842845b73bd0de57606da8c",
|
|
12
|
+
"generation_manifest_sha256": "aef437280102171a9b68da754fca16a03202104db7d5c420751624580ad6fadc",
|
|
13
13
|
"activation_status": "PRODUCTION_ACTIVE"
|
|
14
14
|
},
|
|
15
15
|
"runtime_predecessor": {
|
|
16
|
-
"version": "0.15.
|
|
17
|
-
"release_id": "v0.15.
|
|
18
|
-
"manifest_sha256": "
|
|
19
|
-
"generation_manifest_sha256": "
|
|
16
|
+
"version": "0.15.71",
|
|
17
|
+
"release_id": "v0.15.71-1818abc327478a96",
|
|
18
|
+
"manifest_sha256": "1818abc327478a96d935c200e25aad8515f15edc1842845b73bd0de57606da8c",
|
|
19
|
+
"generation_manifest_sha256": "aef437280102171a9b68da754fca16a03202104db7d5c420751624580ad6fadc"
|
|
20
20
|
},
|
|
21
21
|
"r190_foreground_recovery": {
|
|
22
22
|
"status": "PREPUBLISH_VERIFIED",
|
|
@@ -36,13 +36,13 @@
|
|
|
36
36
|
"authority_scope_delta": 0
|
|
37
37
|
},
|
|
38
38
|
"source_predecessor": {
|
|
39
|
-
"version": "0.15.
|
|
40
|
-
"train": "
|
|
41
|
-
"source_path": "https://registry.npmjs.org/deadbyte-mcp/-/deadbyte-mcp-0.15.
|
|
39
|
+
"version": "0.15.71",
|
|
40
|
+
"train": "R191",
|
|
41
|
+
"source_path": "https://registry.npmjs.org/deadbyte-mcp/-/deadbyte-mcp-0.15.71.tgz",
|
|
42
42
|
"release_status": "PUBLISHED_REGISTRY_VERIFIED",
|
|
43
|
-
"manifest_status": "
|
|
44
|
-
"manifest_sha256": "
|
|
45
|
-
"tarball_sha256": "
|
|
43
|
+
"manifest_status": "PUBLISHED_EXACT_MANIFEST_VERIFIED_ACTIVE_PRODUCTION",
|
|
44
|
+
"manifest_sha256": "1818abc327478a96d935c200e25aad8515f15edc1842845b73bd0de57606da8c",
|
|
45
|
+
"tarball_sha256": "20ed3b20e72b4e4226736a1e432b05b851e9fa265e9bc2966b74f266477b7e27"
|
|
46
46
|
},
|
|
47
47
|
"consolidation": {
|
|
48
48
|
"frontend_status_vocabulary": true,
|
|
@@ -622,5 +622,20 @@
|
|
|
622
622
|
"r43_historical_signed_public_key": "2_PASS_0_FAIL_READ_ONLY",
|
|
623
623
|
"preflight_acl_behavior": "ASSERT_TRUSTED_AND_UNTRUSTED_PATHS_BY_ACTUAL_R89",
|
|
624
624
|
"release_contract_changes": "R132_R59_README_EXACT_01571"
|
|
625
|
+
},
|
|
626
|
+
"r192": {
|
|
627
|
+
"status": "CANDIDATE_TESTING",
|
|
628
|
+
"scope": "LIVE_LOG_SECRET_REDACTION_BOUNDED_DIAGNOSTICS_AND_ROTATION_CURSOR_PRUNING",
|
|
629
|
+
"production": "v0.15.71-1818abc327478a96_UNTOUCHED",
|
|
630
|
+
"production_activation": "NOT_RUN",
|
|
631
|
+
"publication": "NOT_RUN",
|
|
632
|
+
"source_predecessor_version": "0.15.71",
|
|
633
|
+
"focused_tests": "PASS_31_FAIL_0",
|
|
634
|
+
"development_policy_root": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-r192-live-log-hardening-dev",
|
|
635
|
+
"public_tool_schema_changed": false,
|
|
636
|
+
"authority_grants_changed": false,
|
|
637
|
+
"integration": "FOREGROND_CLI_SOURCE_INTEGRATION_NOT_MONOLITHIC_REWRITE",
|
|
638
|
+
"verified_artifact": "PENDING_PACK_GATE",
|
|
639
|
+
"references_used": "D:/Projects/deadbyte-mcp/references (read-only conceptual comparisons)"
|
|
625
640
|
}
|
|
626
641
|
}
|
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:
|
|
4
|
+
"serialNumber": "urn:cdx:deadbyte-mcp:r192:0.15.72",
|
|
5
5
|
"version": 1,
|
|
6
6
|
"metadata": {
|
|
7
7
|
"component": {
|
|
8
8
|
"type": "application",
|
|
9
9
|
"name": "deadbyte-mcp",
|
|
10
|
-
"version": "0.15.
|
|
10
|
+
"version": "0.15.72"
|
|
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.
|
|
4
|
-
"train": "
|
|
3
|
+
"version": "0.15.72",
|
|
4
|
+
"train": "R192",
|
|
5
5
|
"primary_platform": "win32-x64",
|
|
6
6
|
"reference": {
|
|
7
7
|
"package": "@wonderwhy-er/desktop-commander",
|
|
@@ -154,6 +154,11 @@
|
|
|
154
154
|
"id": "r179-live-log-and-foreground",
|
|
155
155
|
"command": "Run Ctrl+C, restart, crash and concurrent sessions with pre-existing standing grants and confirm no implicit revocation",
|
|
156
156
|
"expected": "Owner standing grants unchanged; observation-only marker CAS; signed audit remains verifiable"
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"id": "r192-live-log-hardening",
|
|
160
|
+
"gate": "R192 regression preserves clean default live logs, sanitization and bounded log rotation",
|
|
161
|
+
"status": "PASS_FOCUSED_31_0"
|
|
157
162
|
}
|
|
158
163
|
],
|
|
159
164
|
"observed_pre_release_evidence": {
|
|
@@ -729,5 +734,14 @@
|
|
|
729
734
|
"preflight_acl_behavior": "ASSERT_TRUSTED_AND_UNTRUSTED_PATHS_BY_ACTUAL_R89",
|
|
730
735
|
"release_contract_changes": "R132_R59_README_EXACT_01571",
|
|
731
736
|
"full_protected_regression": "PENDING_FRESH_PROTECTED_CANDIDATE_D"
|
|
737
|
+
},
|
|
738
|
+
"r192": {
|
|
739
|
+
"focused": "PASS_31_FAIL_0",
|
|
740
|
+
"integration": "PENDING_FULL_REGRESSION",
|
|
741
|
+
"protected_full": "NOT_RUN",
|
|
742
|
+
"npm_pack": "PENDING",
|
|
743
|
+
"npm_publish": "NOT_RUN",
|
|
744
|
+
"public_tool_delta": 0,
|
|
745
|
+
"authority_policy_delta": 0
|
|
732
746
|
}
|
|
733
747
|
}
|
package/bridge/package.json
CHANGED
|
@@ -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-
|
|
5
|
-
"state_dir": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-
|
|
4
|
+
"grant_file": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-r192-live-log-hardening-dev\\controller\\runtime\\process-grant.json",
|
|
5
|
+
"state_dir": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-r192-live-log-hardening-dev\\controller\\runtime\\process-state",
|
|
6
6
|
"native_host": {
|
|
7
|
-
"path": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-
|
|
7
|
+
"path": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-r192-live-log-hardening-dev\\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-
|
|
12
|
+
"path": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-r192-live-log-hardening-dev",
|
|
13
13
|
"deny_paths": [
|
|
14
14
|
"node_modules",
|
|
15
15
|
"controller/runtime",
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "deadbyte-mcp",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.72",
|
|
4
4
|
"lockfileVersion": 3,
|
|
5
5
|
"requires": true,
|
|
6
6
|
"packages": {
|
|
7
7
|
"": {
|
|
8
8
|
"name": "deadbyte-mcp",
|
|
9
|
-
"version": "0.15.
|
|
9
|
+
"version": "0.15.72",
|
|
10
10
|
"bundleDependencies": [
|
|
11
11
|
"@modelcontextprotocol/server",
|
|
12
12
|
"@modelcontextprotocol/client",
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
R192 live log hardening
|
|
2
|
+
target 0.15.72
|
|
3
|
+
|
|
4
|
+
the default npx remote console stays compact
|
|
5
|
+
signed tool audit is the authority for execution results
|
|
6
|
+
console output never grants or restores machine authority
|
|
7
|
+
|
|
8
|
+
changes
|
|
9
|
+
- extra screening and byte bounds for verbose runtime diagnostics
|
|
10
|
+
- keep tool name status and duration while reducing noisy reason text
|
|
11
|
+
- remove old log cursors and partial-line fragments after discovery drops files
|
|
12
|
+
- preserve independent START and terminal result lines for mutations
|
|
13
|
+
- keep heartbeat folding timeline filters and trace formatting
|
|
14
|
+
- no change to the public MCP tool catalog or authority policy
|
|
15
|
+
|
|
16
|
+
integration
|
|
17
|
+
src/deadbyte-cli.mjs reads and tracks foreground streams
|
|
18
|
+
src/remote-live-log.mjs formats audit-safe progress and prunes old readers
|
|
19
|
+
src/remote-log-decode-r60.mjs handles bounded append and file identity
|
|
20
|
+
src/tool-audit.mjs remains the signed and sanitized audit source
|
|
21
|
+
|
|
22
|
+
reference study
|
|
23
|
+
D:\Projects\deadbyte-mcp\references
|
|
24
|
+
read-only comparison of remote MCP/Commander implementations
|
|
25
|
+
no donor code imported or copied into R192
|
|
26
|
+
|
|
27
|
+
verification
|
|
28
|
+
R192 focused 31 pass 0 fail
|
|
29
|
+
R192 extended release identity 60 pass 0 fail
|
|
30
|
+
full workspace regression not yet verified
|
|
31
|
+
protected Windows package test not yet verified
|
|
32
|
+
npm publication not yet verified
|
|
33
|
+
production activation not run
|
|
34
|
+
|
|
35
|
+
release constraints
|
|
36
|
+
0.15.71 remains the active rollback predecessor
|
|
37
|
+
no writes to installed production files or owner authority
|
|
38
|
+
do not publish before exact package verification
|
|
39
|
+
do not use npm success messages as proof of registry bytes
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "deadbyte-mcp",
|
|
3
|
-
"version": "0.15.
|
|
3
|
+
"version": "0.15.72",
|
|
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.",
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import {spawnSync} from 'node:child_process';
|
|
2
|
+
import {fileURLToPath} from 'node:url';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
const root=path.resolve(fileURLToPath(new URL('..',import.meta.url)));
|
|
5
|
+
const files=['test/r192-live-log-hardening.test.mjs',
|
|
6
|
+
'test/remote-live-log-r37.test.mjs','test/r51-live-log-polling.test.mjs',
|
|
7
|
+
'test/remote-log-decode-r60.test.mjs'];
|
|
8
|
+
const r=spawnSync(process.execPath,['--test','--test-concurrency=1',...files],{cwd:root,encoding:'utf8',windowsHide:true,shell:false,timeout:130000,maxBuffer:700000});
|
|
9
|
+
console.log(JSON.stringify({state:r.status===0?'PASS':'FAIL',exit:r.status,error:r.error?.message??null,stdout:r.stdout?.slice(-16000),stderr:r.stderr?.slice(-4000)}));
|
|
10
|
+
if(r.error||r.status!==0)process.exitCode=1;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import {spawnSync} from 'node:child_process';import path from 'node:path';import {fileURLToPath} from 'node:url';
|
|
2
|
+
const root=path.resolve(fileURLToPath(new URL('..',import.meta.url)));
|
|
3
|
+
const tests=['r192-release-identity','r192-live-log-hardening','r130-release-security-contract','r132-release-identity','r153-prepublish-identity','r167-release-contract','r172-release-contract','r173-release-contract','r179-release-contract','r190-release-contract','r191-release-contract','process-policy-refresh','remote-live-log-r37','r51-live-log-polling'];
|
|
4
|
+
const r=spawnSync(process.execPath,['--test','--test-concurrency=1',...tests.map(t=>'test/'+t+'.test.mjs')],{
|
|
5
|
+
cwd:root,encoding:'utf8',windowsHide:true,shell:false,timeout:220000,maxBuffer:1400000});
|
|
6
|
+
console.log(JSON.stringify({status:r.status===0?'PASS':'FAIL',exit:r.status,error:r.error?.message??null,
|
|
7
|
+
stdout:r.stdout?.slice(-18000),stderr:r.stderr?.slice(-2200)}));
|
|
8
|
+
if(r.error||r.status!==0)process.exitCode=1;
|
package/src/deadbyte-cli.mjs
CHANGED
|
@@ -16,7 +16,7 @@ import { exportOfflineDiagnostics } from './r67-diagnostic-export.mjs';
|
|
|
16
16
|
import { verifyOfflineDiagnosticsZip } from './r67-diagnostics-verify.mjs';
|
|
17
17
|
import { parseActivePointer } from './release-slot.mjs';
|
|
18
18
|
import { printDoctor } from './doctor-r45.mjs';
|
|
19
|
-
import { classifyRemoteAuditOutcome, createLiveTimelineFilter, createLiveTimelineTracker, createLiveTimelineWriter, defaultForegroundTimelineOptions, formatRemoteLogResetNotice, formatCompactAuditEvent, formatRemoteLifecycle, formatRemoteToolCall, formatRuntimeDiagnosticLine, selectLiveLogNames } from './remote-live-log.mjs';
|
|
19
|
+
import { classifyRemoteAuditOutcome, createLiveTimelineFilter, createLiveTimelineTracker, createLiveTimelineWriter, defaultForegroundTimelineOptions, formatRemoteLogResetNotice, formatCompactAuditEvent, formatRemoteLifecycle, formatRemoteToolCall, formatRuntimeDiagnosticLine, selectLiveLogNames, pruneLiveLogReaders } from './remote-live-log.mjs';
|
|
20
20
|
import { prepareRemoteConsole, remoteDisplayText } from './remote-console.mjs';
|
|
21
21
|
import { ensureRuntimeCoherence } from './runtime-coherence.mjs';
|
|
22
22
|
import {selectR168OneShotRemotePath} from './remote-one-shot-coherence-r168.mjs';
|
|
@@ -414,6 +414,7 @@ async function tailRemoteLogs(root,signal,{journal=null,offsets=null,activityTra
|
|
|
414
414
|
const now=Date.now();
|
|
415
415
|
if(now>=nextDiscoveryAt){
|
|
416
416
|
liveFiles=await listLogFiles(root);
|
|
417
|
+
pruneLiveLogReaders(activeOffsets,partialLines,liveFiles);
|
|
417
418
|
nextDiscoveryAt=now+LIVE_LOG_DISCOVERY_INTERVAL_MS;
|
|
418
419
|
}
|
|
419
420
|
for(const file of liveFiles){
|
package/src/remote-live-log.mjs
CHANGED
|
@@ -62,6 +62,19 @@ export function formatRemoteLogResetNotice(file,reason){
|
|
|
62
62
|
return '[LIVELOG] RUNTIME_LOG_REOPENED '+name+' — '+detail+'; console diagnostic continuity may have gaps; audit verification is separate';
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
+
// Bound the foreground reader state to the current discovery snapshot.
|
|
66
|
+
// Audit continuity is still enforced by the signed journal, not this cache.
|
|
67
|
+
export function pruneLiveLogReaders(offsets,partialLines,liveFiles){
|
|
68
|
+
if(!(offsets instanceof Map)||!(partialLines instanceof Map)||
|
|
69
|
+
!Array.isArray(liveFiles)||liveFiles.some(file=>typeof file!=='string'||!file))
|
|
70
|
+
throw new Error('live log reader state invalid');
|
|
71
|
+
const keep=new Set(liveFiles);
|
|
72
|
+
let cursorsRemoved=0,fragmentsRemoved=0;
|
|
73
|
+
for(const file of offsets.keys())if(!keep.has(file)){offsets.delete(file);cursorsRemoved++;}
|
|
74
|
+
for(const file of partialLines.keys())if(!keep.has(file)){partialLines.delete(file);fragmentsRemoved++;}
|
|
75
|
+
return {cursors_removed:cursorsRemoved,fragments_removed:fragmentsRemoved};
|
|
76
|
+
}
|
|
77
|
+
|
|
65
78
|
export function selectLiveLogNames({auditNames=[],runtimeNames=[]}={}){
|
|
66
79
|
if(!Array.isArray(auditNames)||!Array.isArray(runtimeNames)) throw new Error('live log names must be arrays');
|
|
67
80
|
const audit=[...new Set(auditNames.filter(name=>typeof name==='string'&&/^segment-\d{8}\.jsonl$/.test(name)))].sort().slice(-2);
|
|
@@ -713,6 +726,14 @@ export function formatRuntimeDiagnosticLine(file,line,{verbose=false,displayMode
|
|
|
713
726
|
return remoteDisplayText('['+label+'.DEBUG] OUT '+output[1],displayMode);
|
|
714
727
|
}
|
|
715
728
|
const compact=line.match(/^\[TOOL\]\s+(\S+)\s+#(\d+)\s+(✓|✗|OK|ERR)\s+([A-Za-z0-9_.-]+)\s+([^\s]+)(?:\s+—\s+(.+))?$/u);
|
|
716
|
-
if(compact)
|
|
729
|
+
if(compact){
|
|
730
|
+
if(!verbose)return null;
|
|
731
|
+
// Runtime logs are lower-trust diagnostics than signed audit records.
|
|
732
|
+
// Never echo a donor/transport error reason before screening and bounding it.
|
|
733
|
+
const screened=compact[6]?sanitizeAuditArgs(compact[6]):null;
|
|
734
|
+
const reason=typeof screened==='string'?clipped(screened,180):screened?'[REDACTED]':'';
|
|
735
|
+
return remoteDisplayText('['+label+'.DEBUG] #'+compact[2]+' '+compact[3]+' '+compact[4]+' '+compact[5]+
|
|
736
|
+
(reason?' — '+reason:''),displayMode);
|
|
737
|
+
}
|
|
717
738
|
return null;
|
|
718
739
|
}
|
package/src/version.mjs
CHANGED
|
@@ -70,7 +70,7 @@ test('R167 process policy binds coherently to the explicit development root', as
|
|
|
70
70
|
// The distributed policy is pinned to its explicit development provenance,
|
|
71
71
|
// not to the physical extraction path of the exact immutable npm tarball.
|
|
72
72
|
const release = JSON.parse(await readFile(path.join(repoRoot, 'RELEASE.json'), 'utf8'));
|
|
73
|
-
const approvedRoot = release.
|
|
73
|
+
const approvedRoot = release.r192?.development_policy_root;
|
|
74
74
|
assert.equal(typeof approvedRoot, 'string', 'R191 development policy root must be explicit in release metadata');
|
|
75
75
|
assert.ok(path.isAbsolute(approvedRoot), 'R191 development policy root must be absolute');
|
|
76
76
|
const expectedRoot = path.resolve(approvedRoot);
|
|
@@ -14,14 +14,14 @@ test('current successor retains the R130 security baseline with truthful R190 id
|
|
|
14
14
|
read('SBOM.cdx.json'),readReleaseLock(root),read('TEST-MATRIX.json')]);
|
|
15
15
|
assert.equal(pkg.name,'deadbyte-mcp');
|
|
16
16
|
for(const actual of [pkg.version,release.version,provenance.version,matrix.version,bom.metadata.component.version,lock.version,lock.packages[''].version,DEADBYTE_VERSION])
|
|
17
|
-
assert.equal(actual,'0.15.
|
|
18
|
-
assert.equal(release.train,'
|
|
19
|
-
assert.equal(matrix.train,'
|
|
20
|
-
assert.equal(release.source_predecessor.version,'0.15.
|
|
21
|
-
assert.equal(release.source_predecessor.train,'
|
|
22
|
-
assert.match(release.source_predecessor.source_path,/deadbyte-mcp-0\.15\.
|
|
23
|
-
assert.equal(release.source_predecessor.manifest_status,'
|
|
24
|
-
assert.equal(release.runtime_predecessor.version,'0.15.
|
|
17
|
+
assert.equal(actual,'0.15.72');
|
|
18
|
+
assert.equal(release.train,'R192');
|
|
19
|
+
assert.equal(matrix.train,'R192');
|
|
20
|
+
assert.equal(release.source_predecessor.version,'0.15.71');
|
|
21
|
+
assert.equal(release.source_predecessor.train,'R191');
|
|
22
|
+
assert.match(release.source_predecessor.source_path,/deadbyte-mcp-0\.15\.71\.tgz/i);
|
|
23
|
+
assert.equal(release.source_predecessor.manifest_status,'PUBLISHED_EXACT_MANIFEST_VERIFIED_ACTIVE_PRODUCTION');
|
|
24
|
+
assert.equal(release.runtime_predecessor.version,'0.15.71');
|
|
25
25
|
assert.equal(provenance.r160.source_predecessor_manifest_status,'STALE_REJECTED');
|
|
26
26
|
assert.equal(pkg.dependencies['@modelcontextprotocol/client'],'2.3.1');
|
|
27
27
|
assert.equal(pkg.dependencies['@modelcontextprotocol/server'],'2.3.1');
|
|
@@ -16,17 +16,17 @@ test('R190 package identity preserves R132 evidence and published R179 source pr
|
|
|
16
16
|
for(const value of [pkg.version,lock.version,lock.packages[''].version,release.version,prov.version,bom.metadata.component.version,matrix.version,DEADBYTE_VERSION]){
|
|
17
17
|
assert.equal(value,pkg.version);
|
|
18
18
|
}
|
|
19
|
-
assert.equal(release.train,'
|
|
20
|
-
assert.equal(matrix.train,'
|
|
21
|
-
assert.equal(release.source_predecessor.version,'0.15.
|
|
22
|
-
assert.equal(release.source_predecessor.train,'
|
|
23
|
-
assert.match(release.source_predecessor.source_path,/deadbyte-mcp-0\.15\.
|
|
19
|
+
assert.equal(release.train,'R192');
|
|
20
|
+
assert.equal(matrix.train,'R192');
|
|
21
|
+
assert.equal(release.source_predecessor.version,'0.15.71');
|
|
22
|
+
assert.equal(release.source_predecessor.train,'R191');
|
|
23
|
+
assert.match(release.source_predecessor.source_path,/deadbyte-mcp-0\.15\.71\.tgz/i);
|
|
24
24
|
assert.equal(prov.r160.source_predecessor_manifest_status,'STALE_REJECTED');
|
|
25
25
|
assert.equal(release.r165.published_source_manifest_sha256,'4adf7d94682fbb71c4a91eb3147ecc48076bbc5d79cb67fcb875cde6a1bb4805');
|
|
26
26
|
assert.equal(release.r165.published_source_tarball_sha256,'812e97609b7c51353ed25f2202129737e43bb4fbe0778c3adec43ec065352641');
|
|
27
|
-
assert.equal(release.source_predecessor.tarball_sha256,'
|
|
27
|
+
assert.equal(release.source_predecessor.tarball_sha256,'20ed3b20e72b4e4226736a1e432b05b851e9fa265e9bc2966b74f266477b7e27');
|
|
28
28
|
assert.notEqual(release.r179.source_predecessor_tarball_sha256,release.source_predecessor.tarball_sha256);
|
|
29
|
-
assert.equal(release.runtime_predecessor.version,'0.15.
|
|
29
|
+
assert.equal(release.runtime_predecessor.version,'0.15.71');
|
|
30
30
|
assert.equal(prov.runtime_predecessor.release_id,release.runtime_predecessor.release_id);
|
|
31
31
|
assert.equal(prov.runtime_predecessor.manifest_sha256,release.runtime_predecessor.manifest_sha256);
|
|
32
32
|
assert.equal(prov.runtime_predecessor.generation_manifest_sha256,release.runtime_predecessor.generation_manifest_sha256);
|
|
@@ -26,7 +26,7 @@ test('R153 historical verifier refuses current successor package identity',async
|
|
|
26
26
|
const state={pkg:JSON.parse(await readFile(path.join(root,'package.json'),'utf8')),
|
|
27
27
|
release:JSON.parse(await readFile(path.join(root,'RELEASE.json'),'utf8')),
|
|
28
28
|
bridge:JSON.parse(await readFile(path.join(root,'bridge/package.json'),'utf8'))};
|
|
29
|
-
assert.equal(state.pkg.version,'0.15.
|
|
29
|
+
assert.equal(state.pkg.version,'0.15.72');
|
|
30
30
|
assert.throws(()=>verifyR153Lineage(state),/package version/);
|
|
31
31
|
await assert.rejects(verifyR153IdentityTree(root),/package version/);
|
|
32
32
|
});
|
|
@@ -8,9 +8,9 @@ const read=async rel=>JSON.parse(await readFile(path.join(root,rel),'utf8'));
|
|
|
8
8
|
|
|
9
9
|
test('R160 historical contract remains distinct from the current package identity',async()=>{
|
|
10
10
|
const [release,provenance]=await Promise.all([read('RELEASE.json'),read('PROVENANCE.json')]);
|
|
11
|
-
assert.equal(release.runtime_predecessor.version,'0.15.
|
|
12
|
-
assert.equal(release.runtime_predecessor.release_id,'v0.15.
|
|
13
|
-
assert.equal(release.runtime_predecessor.manifest_sha256,'
|
|
11
|
+
assert.equal(release.runtime_predecessor.version,'0.15.71');
|
|
12
|
+
assert.equal(release.runtime_predecessor.release_id,'v0.15.71-1818abc327478a96');
|
|
13
|
+
assert.equal(release.runtime_predecessor.manifest_sha256,'1818abc327478a96d935c200e25aad8515f15edc1842845b73bd0de57606da8c');
|
|
14
14
|
assert.equal(release.r160.runtime_predecessor_version,'0.15.61');
|
|
15
15
|
assert.equal(release.r160.source_predecessor_train,'R159');
|
|
16
16
|
assert.equal(release.r160.public_tool_delta,0);
|
|
@@ -17,7 +17,7 @@ const hashMarker=c=>c.repeat(64);
|
|
|
17
17
|
async function fixture(t,kind){
|
|
18
18
|
assert.equal(typeof envRoot,'string'); assert.ok(path.isAbsolute(envRoot));
|
|
19
19
|
assert.match(sha(await readFile(path.join(envRoot,'MANIFEST.SHA256'))),/^[0-9a-f]{64}$/);
|
|
20
|
-
assert.equal(JSON.parse(await readFile(path.join(envRoot,'package.json'),'utf8')).version,'0.15.
|
|
20
|
+
assert.equal(JSON.parse(await readFile(path.join(envRoot,'package.json'),'utf8')).version,'0.15.72');
|
|
21
21
|
const dir=await mkdtemp(path.join(os.tmpdir(),'deadbyte-r164-skew-e2e-'));
|
|
22
22
|
t.after(async()=>{await rm(dir,{recursive:true,force:true,maxRetries:10,retryDelay:150});});
|
|
23
23
|
const state=path.join(dir,'state'),bin=path.join(state,'bin');
|
|
@@ -8,7 +8,7 @@ import {DEADBYTE_VERSION} from '../src/version.mjs';
|
|
|
8
8
|
const root=path.resolve(fileURLToPath(new URL('..',import.meta.url)));
|
|
9
9
|
const read=async rel=>JSON.parse(await readFile(path.join(root,rel),'utf8'));
|
|
10
10
|
const readOptional=async rel=>{try{return await read(rel);}catch(error){if(error?.code==='ENOENT')return null;throw error;}};
|
|
11
|
-
const VERSION='0.15.
|
|
11
|
+
const VERSION='0.15.72';
|
|
12
12
|
const R166_MANIFEST='ad3c091fbbe2bac6d234548724008b67305fd483ad6542f92d5aeb1aa84f5849';
|
|
13
13
|
const R166_TARBALL='3d22412c3cebabd66bfa92ca4dbaaf3ef49acba7f92436a16485d7e4cb18c653';
|
|
14
14
|
|
|
@@ -20,20 +20,20 @@ test('current package identity retains the immutable R167/R173 activation lineag
|
|
|
20
20
|
provenance.version,matrix.version,bom.metadata.component.version,DEADBYTE_VERSION];
|
|
21
21
|
if(lock)versions.push(lock.version,lock.packages[''].version);
|
|
22
22
|
for(const version of versions)assert.equal(version,VERSION);
|
|
23
|
-
assert.equal(release.train,'
|
|
24
|
-
assert.equal(matrix.train,'
|
|
25
|
-
assert.equal(bom.serialNumber,'urn:cdx:deadbyte-mcp:
|
|
23
|
+
assert.equal(release.train,'R192');
|
|
24
|
+
assert.equal(matrix.train,'R192');
|
|
25
|
+
assert.equal(bom.serialNumber,'urn:cdx:deadbyte-mcp:r192:0.15.72');
|
|
26
26
|
assert.deepEqual(release.runtime_predecessor,{
|
|
27
|
-
version:'0.15.
|
|
28
|
-
manifest_sha256:'
|
|
29
|
-
generation_manifest_sha256:'
|
|
27
|
+
version:'0.15.71',release_id:'v0.15.71-1818abc327478a96',
|
|
28
|
+
manifest_sha256:'1818abc327478a96d935c200e25aad8515f15edc1842845b73bd0de57606da8c',
|
|
29
|
+
generation_manifest_sha256:'aef437280102171a9b68da754fca16a03202104db7d5c420751624580ad6fadc'
|
|
30
30
|
});
|
|
31
|
-
assert.equal(release.source_predecessor.version,'0.15.
|
|
32
|
-
assert.equal(release.source_predecessor.train,'
|
|
33
|
-
assert.equal(release.source_predecessor.tarball_sha256,'
|
|
31
|
+
assert.equal(release.source_predecessor.version,'0.15.71');
|
|
32
|
+
assert.equal(release.source_predecessor.train,'R191');
|
|
33
|
+
assert.equal(release.source_predecessor.tarball_sha256,'20ed3b20e72b4e4226736a1e432b05b851e9fa265e9bc2966b74f266477b7e27');
|
|
34
34
|
assert.equal(release.r173.source_predecessor_version,'0.15.67');
|
|
35
35
|
assert.equal(release.r167.source_predecessor_manifest_sha256,R166_MANIFEST);
|
|
36
|
-
assert.equal(provenance.source_predecessor_manifest_file_sha256,'
|
|
36
|
+
assert.equal(provenance.source_predecessor_manifest_file_sha256,'1818abc327478a96d935c200e25aad8515f15edc1842845b73bd0de57606da8c');
|
|
37
37
|
assert.equal(provenance.r173.source_predecessor_manifest_sha256,'4fd7bfc76b1de6401c142b607cc84e847434b28c888bc99ceb09c9e8e5adc8f8');
|
|
38
38
|
assert.equal(release.r172.source_predecessor_manifest_sha256,'962e227dace247d59aa860211388fbde461c5f9c8a7e8a878e34a14a27d355f8');
|
|
39
39
|
assert.equal(release.r172.source_predecessor_tarball_sha256,'31b194a4fbff7dbdb9f4f275b4ea49c5115f7b0bb2241c0c72d72ef690311a5d');
|
|
@@ -13,8 +13,10 @@ const predecessorTarball='fc3ae5b1505e316bc9dfedf8d063cb00641754c8f5f1306a31f8cc
|
|
|
13
13
|
|
|
14
14
|
test('R172 preserves the immutable R168 publication lineage separately from current identity',async()=>{
|
|
15
15
|
const release=await read('RELEASE.json');
|
|
16
|
-
assert.equal(release.runtime_predecessor.version,'0.15.
|
|
17
|
-
assert.equal(release.parent.version,'0.15.
|
|
16
|
+
assert.equal(release.runtime_predecessor.version,'0.15.71');
|
|
17
|
+
assert.equal(release.parent.version,'0.15.71');
|
|
18
|
+
assert.equal(release.runtime_predecessor.release_id,'v0.15.71-1818abc327478a96');
|
|
19
|
+
assert.equal(release.parent.release_id,'v0.15.71-1818abc327478a96');
|
|
18
20
|
assert.notEqual(release.runtime_predecessor.release_id,parent);
|
|
19
21
|
assert.notEqual(release.parent.release_id,parent);
|
|
20
22
|
assert.equal(release.r168.scope,'REMOTE_VERSION_SKEW_FAIL_CLOSED_AND_READONLY_RECONCILIATION');
|
|
@@ -16,12 +16,12 @@ test('R190 binds the published source predecessor separately from the active run
|
|
|
16
16
|
const versions=[pkg.version,bridge.version,release.version,provenance.version,matrix.version,
|
|
17
17
|
bom.metadata.component.version,DEADBYTE_VERSION];
|
|
18
18
|
if(lock)versions.push(lock.version,lock.packages[''].version);
|
|
19
|
-
for(const value of versions)assert.equal(value,'0.15.
|
|
20
|
-
assert.equal(release.train,'
|
|
21
|
-
assert.equal(release.source_predecessor.version,'0.15.
|
|
22
|
-
assert.equal(release.source_predecessor.manifest_sha256,'
|
|
23
|
-
assert.equal(release.source_predecessor.tarball_sha256,'
|
|
24
|
-
assert.equal(release.runtime_predecessor.release_id,'v0.15.
|
|
19
|
+
for(const value of versions)assert.equal(value,'0.15.72');
|
|
20
|
+
assert.equal(release.train,'R192'); assert.equal(matrix.train,'R192');
|
|
21
|
+
assert.equal(release.source_predecessor.version,'0.15.71');
|
|
22
|
+
assert.equal(release.source_predecessor.manifest_sha256,'1818abc327478a96d935c200e25aad8515f15edc1842845b73bd0de57606da8c');
|
|
23
|
+
assert.equal(release.source_predecessor.tarball_sha256,'20ed3b20e72b4e4226736a1e432b05b851e9fa265e9bc2966b74f266477b7e27');
|
|
24
|
+
assert.equal(release.runtime_predecessor.release_id,'v0.15.71-1818abc327478a96');
|
|
25
25
|
assert.equal(release.r173.public_tool_delta,0); assert.equal(release.r173.authority_scope_delta,0);
|
|
26
26
|
});
|
|
27
27
|
|
|
@@ -13,21 +13,21 @@ test('R190 package identity binds the exact published R179 source and live runti
|
|
|
13
13
|
json('package.json'),readReleaseLock(root),json('bridge/package.json'),json('RELEASE.json'),
|
|
14
14
|
json('PROVENANCE.json'),json('TEST-MATRIX.json'),json('SBOM.cdx.json')
|
|
15
15
|
]);
|
|
16
|
-
assert.equal(pkg.version,'0.15.
|
|
17
|
-
assert.equal(lock.version,'0.15.
|
|
18
|
-
assert.equal(lock.packages[''].version,'0.15.
|
|
19
|
-
assert.equal(bridge.version,'0.15.
|
|
20
|
-
assert.equal(release.version,'0.15.
|
|
21
|
-
assert.equal(release.train,'
|
|
22
|
-
assert.equal(matrix.version,'0.15.
|
|
23
|
-
assert.equal(matrix.train,'
|
|
24
|
-
assert.equal(sbom.metadata.component.version,'0.15.
|
|
25
|
-
assert.equal(release.source_predecessor.version,'0.15.
|
|
26
|
-
assert.equal(release.source_predecessor.train,'
|
|
27
|
-
assert.equal(release.source_predecessor.manifest_sha256,'
|
|
28
|
-
assert.equal(release.source_predecessor.tarball_sha256,'
|
|
29
|
-
assert.equal(release.runtime_predecessor.version,'0.15.
|
|
30
|
-
assert.equal(provenance.version,'0.15.
|
|
16
|
+
assert.equal(pkg.version,'0.15.72');
|
|
17
|
+
assert.equal(lock.version,'0.15.72');
|
|
18
|
+
assert.equal(lock.packages[''].version,'0.15.72');
|
|
19
|
+
assert.equal(bridge.version,'0.15.72');
|
|
20
|
+
assert.equal(release.version,'0.15.72');
|
|
21
|
+
assert.equal(release.train,'R192');
|
|
22
|
+
assert.equal(matrix.version,'0.15.72');
|
|
23
|
+
assert.equal(matrix.train,'R192');
|
|
24
|
+
assert.equal(sbom.metadata.component.version,'0.15.72');
|
|
25
|
+
assert.equal(release.source_predecessor.version,'0.15.71');
|
|
26
|
+
assert.equal(release.source_predecessor.train,'R191');
|
|
27
|
+
assert.equal(release.source_predecessor.manifest_sha256,'1818abc327478a96d935c200e25aad8515f15edc1842845b73bd0de57606da8c');
|
|
28
|
+
assert.equal(release.source_predecessor.tarball_sha256,'20ed3b20e72b4e4226736a1e432b05b851e9fa265e9bc2966b74f266477b7e27');
|
|
29
|
+
assert.equal(release.runtime_predecessor.version,'0.15.71');
|
|
30
|
+
assert.equal(provenance.version,'0.15.72');
|
|
31
31
|
assert.equal(provenance.parent_tarball_sha256,release.source_predecessor.tarball_sha256);
|
|
32
32
|
assert.equal(provenance.source_predecessor_manifest_file_sha256,release.source_predecessor.manifest_sha256);
|
|
33
33
|
});
|
|
@@ -7,23 +7,23 @@ import {DEADBYTE_VERSION} from '../src/version.mjs';
|
|
|
7
7
|
import {readReleaseLock} from './helpers/release-lock.mjs';
|
|
8
8
|
const root=path.resolve(fileURLToPath(new URL('..',import.meta.url)));
|
|
9
9
|
const read=async file=>JSON.parse(await readFile(path.join(root,file),'utf8'));
|
|
10
|
-
const parent='v0.15.
|
|
11
|
-
const manifest='
|
|
12
|
-
const generation='
|
|
10
|
+
const parent='v0.15.71-1818abc327478a96';
|
|
11
|
+
const manifest='1818abc327478a96d935c200e25aad8515f15edc1842845b73bd0de57606da8c';
|
|
12
|
+
const generation='aef437280102171a9b68da754fca16a03202104db7d5c420751624580ad6fadc';
|
|
13
13
|
const tarball='1a7f1fe05a06178b8d772a140be6e0470790b743cef690c3f8f8165cc61075bf';
|
|
14
14
|
test('R190 version, lock snapshot, bridge, matrix, SBOM and provenance identify exact 0.15.70 successor',async()=>{
|
|
15
15
|
const [pkg,lock,bridge,release,provenance,matrix,sbom]=await Promise.all([
|
|
16
16
|
read('package.json'),readReleaseLock(root),read('bridge/package.json'),read('RELEASE.json'),
|
|
17
17
|
read('PROVENANCE.json'),read('TEST-MATRIX.json'),read('SBOM.cdx.json')]);
|
|
18
18
|
for(const version of [pkg.version,lock.version,lock.packages[''].version,bridge.version,release.version,provenance.version,
|
|
19
|
-
matrix.version,sbom.metadata.component.version,DEADBYTE_VERSION])assert.equal(version,'0.15.
|
|
20
|
-
assert.equal(release.train,'
|
|
21
|
-
assert.equal(sbom.serialNumber,'urn:cdx:deadbyte-mcp:
|
|
19
|
+
matrix.version,sbom.metadata.component.version,DEADBYTE_VERSION])assert.equal(version,'0.15.72');
|
|
20
|
+
assert.equal(release.train,'R192');assert.equal(matrix.train,'R192');
|
|
21
|
+
assert.equal(sbom.serialNumber,'urn:cdx:deadbyte-mcp:r192:0.15.72');
|
|
22
22
|
assert.equal(release.parent.release_id,parent);assert.equal(release.parent.manifest_sha256,manifest);
|
|
23
23
|
assert.equal(release.parent.generation_manifest_sha256,generation);
|
|
24
|
-
assert.equal(release.source_predecessor.version,'0.15.
|
|
25
|
-
assert.equal(release.source_predecessor.manifest_sha256,'
|
|
26
|
-
assert.equal(release.source_predecessor.tarball_sha256,'
|
|
24
|
+
assert.equal(release.source_predecessor.version,'0.15.71');
|
|
25
|
+
assert.equal(release.source_predecessor.manifest_sha256,'1818abc327478a96d935c200e25aad8515f15edc1842845b73bd0de57606da8c');
|
|
26
|
+
assert.equal(release.source_predecessor.tarball_sha256,'20ed3b20e72b4e4226736a1e432b05b851e9fa265e9bc2966b74f266477b7e27');
|
|
27
27
|
assert.equal(release.runtime_predecessor.release_id,parent);
|
|
28
28
|
assert.equal(provenance.runtime_predecessor.release_id,parent);
|
|
29
29
|
assert.equal(provenance.parent_tarball_sha256,release.source_predecessor.tarball_sha256);
|
|
@@ -48,7 +48,7 @@ test('R190 retains historical R179 and R173 source evidence without promoting it
|
|
|
48
48
|
assert.equal(release.r173.source_predecessor_version,'0.15.67');
|
|
49
49
|
assert.equal(release.r173.source_predecessor_manifest_sha256,'4fd7bfc76b1de6401c142b607cc84e847434b28c888bc99ceb09c9e8e5adc8f8');
|
|
50
50
|
assert.equal(prov.r173.source_predecessor_version,'0.15.67');
|
|
51
|
-
assert.equal(release.source_predecessor.version,'0.15.
|
|
51
|
+
assert.equal(release.source_predecessor.version,'0.15.71');
|
|
52
52
|
assert.notEqual(release.source_predecessor.tarball_sha256,release.r173.source_predecessor_tarball_sha256);
|
|
53
53
|
});
|
|
54
54
|
test('R184 ships a semantic lock snapshot matching installed package identity and dependencies',async()=>{
|
|
@@ -8,17 +8,17 @@ test('R190 candidate identity separates published source 0.15.69 from active run
|
|
|
8
8
|
json('package.json'),json('bridge/package.json'),json('RELEASE.json'),json('PROVENANCE.json'),
|
|
9
9
|
json('TEST-MATRIX.json'),json('SBOM.cdx.json'),readFile(new URL('../src/version.mjs',import.meta.url),'utf8')]);
|
|
10
10
|
for(const value of [pkg.version,bridge.version,release.version,provenance.version,matrix.version,
|
|
11
|
-
sbom.metadata.component.version])assert.equal(value,'0.15.
|
|
12
|
-
assert.match(versionSource,/DEADBYTE_VERSION = '0\.15\.
|
|
13
|
-
assert.equal(release.train,'
|
|
14
|
-
assert.equal(release.source_predecessor.version,'0.15.
|
|
15
|
-
assert.equal(release.source_predecessor.tarball_sha256,'
|
|
16
|
-
assert.equal(release.source_predecessor.manifest_sha256,'
|
|
17
|
-
assert.equal(release.runtime_predecessor.version,'0.15.
|
|
18
|
-
assert.equal(release.runtime_predecessor.release_id,'v0.15.
|
|
19
|
-
assert.equal(provenance.source_predecessor_version,'0.15.
|
|
11
|
+
sbom.metadata.component.version])assert.equal(value,'0.15.72');
|
|
12
|
+
assert.match(versionSource,/DEADBYTE_VERSION = '0\.15\.72'/);
|
|
13
|
+
assert.equal(release.train,'R192');assert.equal(matrix.train,'R192');
|
|
14
|
+
assert.equal(release.source_predecessor.version,'0.15.71');
|
|
15
|
+
assert.equal(release.source_predecessor.tarball_sha256,'20ed3b20e72b4e4226736a1e432b05b851e9fa265e9bc2966b74f266477b7e27');
|
|
16
|
+
assert.equal(release.source_predecessor.manifest_sha256,'1818abc327478a96d935c200e25aad8515f15edc1842845b73bd0de57606da8c');
|
|
17
|
+
assert.equal(release.runtime_predecessor.version,'0.15.71');
|
|
18
|
+
assert.equal(release.runtime_predecessor.release_id,'v0.15.71-1818abc327478a96');
|
|
19
|
+
assert.equal(provenance.source_predecessor_version,'0.15.71');
|
|
20
20
|
assert.equal(provenance.source_predecessor_tarball_sha256,release.source_predecessor.tarball_sha256);
|
|
21
|
-
assert.match(sbom.serialNumber,/
|
|
21
|
+
assert.match(sbom.serialNumber,/r192:0\.15\.72$/);
|
|
22
22
|
});
|
|
23
23
|
|
|
24
24
|
test('R190 release metadata records verified recovery without claiming publication or activation',async()=>{
|
|
@@ -6,20 +6,20 @@ import path from 'node:path';
|
|
|
6
6
|
import {DEADBYTE_VERSION} from '../src/version.mjs';
|
|
7
7
|
const root=path.resolve(fileURLToPath(new URL('..',import.meta.url)));
|
|
8
8
|
const json=async f=>JSON.parse(await readFile(path.join(root,f),'utf8'));
|
|
9
|
-
const predecessor='v0.15.
|
|
10
|
-
const publishedManifest='
|
|
11
|
-
const publishedTarball='
|
|
9
|
+
const predecessor='v0.15.71-1818abc327478a96';
|
|
10
|
+
const publishedManifest='1818abc327478a96d935c200e25aad8515f15edc1842845b73bd0de57606da8c';
|
|
11
|
+
const publishedTarball='20ed3b20e72b4e4226736a1e432b05b851e9fa265e9bc2966b74f266477b7e27';
|
|
12
12
|
test('R191 exact version identity includes bundled bridge, lock snapshot, SBOM, provenance and matrix',async()=>{
|
|
13
13
|
const [pkg,bridge,lock,release,provenance,matrix,bom]=await Promise.all(['package.json','bridge/package.json','docs/R184-package-lock.json','RELEASE.json','PROVENANCE.json','TEST-MATRIX.json','SBOM.cdx.json'].map(json));
|
|
14
|
-
for(const ver of [pkg.version,bridge.version,lock.version,lock.packages[''].version,release.version,provenance.version,matrix.version,bom.metadata.component.version,DEADBYTE_VERSION])assert.equal(ver,'0.15.
|
|
15
|
-
for(const train of [release.train,matrix.train])assert.equal(train,'
|
|
16
|
-
assert.equal(bom.serialNumber,'urn:cdx:deadbyte-mcp:
|
|
14
|
+
for(const ver of [pkg.version,bridge.version,lock.version,lock.packages[''].version,release.version,provenance.version,matrix.version,bom.metadata.component.version,DEADBYTE_VERSION])assert.equal(ver,'0.15.72');
|
|
15
|
+
for(const train of [release.train,matrix.train])assert.equal(train,'R192');
|
|
16
|
+
assert.equal(bom.serialNumber,'urn:cdx:deadbyte-mcp:r192:0.15.72');
|
|
17
17
|
assert.equal(release.parent.release_id,predecessor);
|
|
18
18
|
assert.equal(provenance.parent_release_id,predecessor);
|
|
19
|
-
assert.equal(release.source_predecessor.version,'0.15.
|
|
19
|
+
assert.equal(release.source_predecessor.version,'0.15.71');
|
|
20
20
|
assert.equal(release.source_predecessor.manifest_sha256,publishedManifest);
|
|
21
21
|
assert.equal(release.source_predecessor.tarball_sha256,publishedTarball);
|
|
22
|
-
assert.equal(provenance.source_predecessor_version,'0.15.
|
|
22
|
+
assert.equal(provenance.source_predecessor_version,'0.15.71');
|
|
23
23
|
assert.equal(provenance.parent_tarball_sha256,publishedTarball);
|
|
24
24
|
assert.equal(provenance.source_predecessor_tarball_sha256,publishedTarball);
|
|
25
25
|
assert.equal(provenance.source_predecessor_manifest_file_sha256,publishedManifest);
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import test from 'node:test';
|
|
2
|
+
import assert from 'node:assert/strict';
|
|
3
|
+
import {formatRuntimeDiagnosticLine,createLiveTimelineTracker,
|
|
4
|
+
pruneLiveLogReaders} from '../src/remote-live-log.mjs';
|
|
5
|
+
|
|
6
|
+
const compact=(reason)=>'[TOOL] 2026-10-28T14:00:00.000Z #12 ✗ coding_command_run 10ms — '+reason;
|
|
7
|
+
|
|
8
|
+
test('R192 runtime verbose diagnostics never disclose secret-bearing reasons',()=>{
|
|
9
|
+
const raw=compact('password=canaryNotForConsole123');
|
|
10
|
+
const out=formatRuntimeDiagnosticLine('bridge.stdout.log',raw,{verbose:true,displayMode:'ascii'});
|
|
11
|
+
assert.equal(typeof out,'string');
|
|
12
|
+
assert.match(out,/coding_command_run/);
|
|
13
|
+
assert.match(out,/REDACTED/);
|
|
14
|
+
assert.doesNotMatch(out,/canaryNotForConsole123/);
|
|
15
|
+
assert.equal(formatRuntimeDiagnosticLine('bridge.stdout.log',raw,{verbose:false}),null);
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
test('R192 runtime diagnostic detail is short, single-line and status-preserving',()=>{
|
|
19
|
+
const out=formatRuntimeDiagnosticLine('bridge.stdout.log',compact('slow write rejected '+('x'.repeat(800))),{verbose:true,displayMode:'ascii'});
|
|
20
|
+
assert.match(out,/\[BRIDGE.STDOUT.DEBUG\].*coding_command_run 10ms/);
|
|
21
|
+
assert.ok(out.length<350,'a single runtime diagnostic cannot flood the foreground');
|
|
22
|
+
assert.equal(out.split(/\r?\n/).length,1);
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
test('R192 audit result redacts secrets without hiding outcome classification',()=>{
|
|
26
|
+
const tracker=createLiveTimelineTracker({clock:()=>1000,displayMode:'ascii'});
|
|
27
|
+
tracker.observe({event_type:'tool.request',request_id:'123456789012',tool:'host_exec',args:{root_id:'core',mode:'native'}});
|
|
28
|
+
const out=tracker.observe({event_type:'tool.result',request_id:'123456789012',tool:'host_exec',
|
|
29
|
+
outcome:{status:'denied',is_error:true,duration_ms:24,reason:'authorization: Bearer supersensitive123456'}});
|
|
30
|
+
assert.match(out,/ERR/);
|
|
31
|
+
assert.doesNotMatch(out,/supersensitive123456/);
|
|
32
|
+
assert.match(out,/REDACTED/);
|
|
33
|
+
});
|
|
34
|
+
|
|
35
|
+
test('R192 rotation prunes stale cursors and partial line fragments without touching current streams',()=>{
|
|
36
|
+
const live=new Map([['current.log',{offset:12}],['gone.log',{offset:77}]]);
|
|
37
|
+
const fragments=new Map([['current.log','half'],['gone.log','secret']]);
|
|
38
|
+
const result=pruneLiveLogReaders(live,fragments,['current.log','other.log']);
|
|
39
|
+
assert.deepEqual(result,{cursors_removed:1,fragments_removed:1});
|
|
40
|
+
assert.deepEqual([...live.keys()],['current.log']);
|
|
41
|
+
assert.deepEqual([...fragments], [['current.log','half']]);
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
test('R192 reject malformed discovery before mutating any reader state',()=>{
|
|
45
|
+
const live=new Map([['current.log',{offset:12}]]);
|
|
46
|
+
const fragments=new Map([['current.log','half']]);
|
|
47
|
+
assert.throws(()=>pruneLiveLogReaders(live,fragments,[123]),/invalid/i);
|
|
48
|
+
assert.equal(live.has('current.log'),true);
|
|
49
|
+
assert.equal(fragments.get('current.log'),'half');
|
|
50
|
+
});
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import test from 'node:test';import assert from 'node:assert/strict';
|
|
2
|
+
import {readFile} from 'node:fs/promises';import {createHash} from 'node:crypto';import path from 'node:path';import {fileURLToPath} from 'node:url';
|
|
3
|
+
import {DEADBYTE_VERSION} from '../src/version.mjs';
|
|
4
|
+
const root=path.resolve(fileURLToPath(new URL('..',import.meta.url)));
|
|
5
|
+
const read=async name=>JSON.parse(await readFile(path.join(root,name),'utf8'));
|
|
6
|
+
const prevHash='1818abc327478a96d935c200e25aad8515f15edc1842845b73bd0de57606da8c';
|
|
7
|
+
const prevTar='20ed3b20e72b4e4226736a1e432b05b851e9fa265e9bc2966b74f266477b7e27';
|
|
8
|
+
test('R192 exact package, bridge, lock, metadata and runtime version are 0.15.72',async()=>{
|
|
9
|
+
const [pkg,bridge,lock,release,prov,matrix,bom]=await Promise.all([
|
|
10
|
+
read('package.json'),read('bridge/package.json'),read('docs/R184-package-lock.json'),
|
|
11
|
+
read('RELEASE.json'),read('PROVENANCE.json'),read('TEST-MATRIX.json'),read('SBOM.cdx.json')]);
|
|
12
|
+
for(const actual of [pkg.version,bridge.version,lock.version,lock.packages[''].version,
|
|
13
|
+
release.version,prov.version,matrix.version,bom.metadata.component.version,DEADBYTE_VERSION])
|
|
14
|
+
assert.equal(actual,'0.15.72');
|
|
15
|
+
assert.equal(release.train,'R192');assert.equal(matrix.train,'R192');
|
|
16
|
+
assert.equal(bom.serialNumber,'urn:cdx:deadbyte-mcp:r192:0.15.72');
|
|
17
|
+
assert.equal(release.parent.release_id,'v0.15.71-1818abc327478a96');
|
|
18
|
+
assert.equal(release.parent.manifest_sha256,prevHash);
|
|
19
|
+
assert.equal(release.source_predecessor.tarball_sha256,prevTar);
|
|
20
|
+
assert.equal(release.source_predecessor.manifest_sha256,prevHash);
|
|
21
|
+
assert.equal(prov.parent_tarball_sha256,prevTar);
|
|
22
|
+
assert.equal(prov.parent_manifest_sha256,prevHash);
|
|
23
|
+
assert.equal(release.r192.production_activation,'NOT_RUN');
|
|
24
|
+
assert.equal(release.r192.public_tool_schema_changed,false);
|
|
25
|
+
assert.equal(release.r192.authority_grants_changed,false);
|
|
26
|
+
});
|
|
27
|
+
test('R192 foreground reader enforces caller-safe telemetry rather than changing authority',async()=>{
|
|
28
|
+
const [cli,log]=await Promise.all([
|
|
29
|
+
readFile(path.join(root,'src','deadbyte-cli.mjs'),'utf8'),
|
|
30
|
+
readFile(path.join(root,'src','remote-live-log.mjs'),'utf8')]);
|
|
31
|
+
assert.match(cli,/pruneLiveLogReaders\(activeOffsets,partialLines,liveFiles\)/);
|
|
32
|
+
assert.match(log,/export function pruneLiveLogReaders/);
|
|
33
|
+
assert.match(log,/sanitizeAuditArgs\(compact\[6\]\)/);
|
|
34
|
+
const [policy,release]=await Promise.all([
|
|
35
|
+
read('controller/deadbyte-process-policy.json'),read('RELEASE.json')]);
|
|
36
|
+
const approved=release.r192.development_policy_root;
|
|
37
|
+
assert.equal(typeof approved,'string');
|
|
38
|
+
assert.ok(path.isAbsolute(approved));
|
|
39
|
+
assert.equal(path.resolve(policy.roots.core.path),path.resolve(approved));
|
|
40
|
+
});
|
|
@@ -83,7 +83,7 @@ test('R72 compact baseline permits only R64 read offset and authorized coding-on
|
|
|
83
83
|
assert.deepEqual(diff.added,[]);
|
|
84
84
|
assert.deepEqual(diff.removed,[]);
|
|
85
85
|
const packageVersion=JSON.parse(await readFile(path.join(repoRoot,'package.json'),'utf8')).version;
|
|
86
|
-
if(['0.15.41','0.15.42','0.15.43','0.15.44','0.15.45','0.15.46','0.15.47','0.15.48','0.15.49','0.15.50','0.15.51','0.15.52','0.15.53','0.15.54','0.15.55','0.15.56','0.15.57','0.15.58','0.15.59','0.15.60','0.15.61','0.15.62','0.15.63','0.15.64','0.15.65','0.15.66','0.15.67','0.15.68','0.15.69','0.15.70','0.15.71'].includes(packageVersion)){
|
|
86
|
+
if(['0.15.41','0.15.42','0.15.43','0.15.44','0.15.45','0.15.46','0.15.47','0.15.48','0.15.49','0.15.50','0.15.51','0.15.52','0.15.53','0.15.54','0.15.55','0.15.56','0.15.57','0.15.58','0.15.59','0.15.60','0.15.61','0.15.62','0.15.63','0.15.64','0.15.65','0.15.66','0.15.67','0.15.68','0.15.69','0.15.70','0.15.71','0.15.72'].includes(packageVersion)){
|
|
87
87
|
assert.deepEqual([...diff.schema_changed].sort(),['machine_fs','native_diff_preview']);
|
|
88
88
|
assert.equal(diff.unchanged.length,41);
|
|
89
89
|
const prior=baseline.tools.find(tool=>tool.name==='machine_fs');
|