deadbyte-mcp 0.15.44 → 0.15.45
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 +69 -131
- package/PROVENANCE.json +257 -243
- package/README.txt +18 -18
- package/RELEASE.json +348 -334
- package/SBOM.cdx.json +2 -2
- package/TEST-MATRIX.json +503 -491
- package/bridge/package.json +1 -1
- package/controller/deadbyte-controller.ps1 +1857 -1769
- package/controller/deadbyte-desktop-policy.json +6 -6
- package/controller/deadbyte-process-policy.json +4 -4
- package/docs/R68-COMPAT-HOST-EXEC-CANDIDATE.md +63 -0
- package/docs/R69-LIVE-OUTCOME-R70-POLICY-TRANSFER.md +136 -0
- package/docs/R70-CODING-DIGEST-SUPERVISOR-CHECKPOINT-20261013.md +42 -0
- package/docs/R70-FINITE-GRANT-OWNER-BOUNDARY-20261013.md +80 -0
- package/docs/R70-OWNER-BOOTSTRAP-CHECKPOINT-20261013.md +60 -0
- package/docs/R70-REFERENCE-MECHANISMS.json +95 -0
- package/docs/R70-TRUST-GUARD-EXPIRY-CHECKPOINT-20261013.md +47 -0
- package/package.json +2 -2
- package/scripts/benchmark-l0-r71.mjs +76 -0
- package/scripts/gate-windows-r71.ps1 +64 -0
- package/scripts/npm-release-r48.mjs +2 -0
- package/scripts/npm-release-readiness-r71.mjs +21 -0
- package/scripts/verify-r70-full-regression.ps1 +72 -0
- package/src/authority-continuity-r65.mjs +28 -8
- package/src/autonomous-mcp-tools.mjs +1 -1
- package/src/autonomous-output-contracts.mjs +4 -1
- package/src/autonomous-policy.mjs +54 -7
- package/src/capability-ledger.mjs +1 -1
- package/src/capability-resolver.mjs +2 -1
- package/src/commander-compat-runtime.mjs +30 -2
- package/src/deadbyte-cli.mjs +8 -6
- package/src/native-diff-v2.mjs +18 -5
- package/src/native-diff.mjs +21 -5
- package/src/r70-owner-approval.mjs +78 -0
- package/src/remote-live-log.mjs +48 -14
- package/src/remote-result-journal.mjs +1 -1
- package/src/runtime-update.mjs +2051 -1891
- package/src/tool-audit.mjs +2 -0
- package/src/version.mjs +1 -1
- package/test/autonomous-local-supervisor.test.mjs +2 -1
- package/test/autonomous-output-contract.test.mjs +17 -1
- package/test/autonomous-supervisor-integration.test.mjs +2 -1
- package/test/capability-resolver.test.mjs +17 -0
- package/test/codex-autonomous-r44.test.mjs +1 -1
- package/test/commander-compat-runtime.test.mjs +42 -0
- package/test/controller-policy-preflight-r59.test.mjs +1 -0
- package/test/native-diff-topology-r36.test.mjs +35 -2
- package/test/native-diff.test.mjs +83 -3
- package/test/r59-tool-surface-compat.test.mjs +9 -5
- package/test/r65-authority-runtime-epoch.test.mjs +9 -1
- package/test/r67-isolated-slot-rollback-restore.test.mjs +2 -1
- package/test/r67-npm-publish-gate.test.mjs +4 -2
- package/test/r67-release-contract.test.mjs +8 -7
- package/test/r69-live-outcome.test.mjs +137 -0
- package/test/r70-autonomous-grant-expiry.test.mjs +89 -0
- package/test/r70-autonomous-policy-bootstrap.test.mjs +166 -0
- package/test/r70-controller-autonomous-root.test.mjs +104 -0
- package/test/r70-controller-grant-subset.test.mjs +28 -0
- package/test/r70-controller-owner-issue-boundary.test.mjs +80 -0
- package/test/r70-controller-policy-snapshot.test.mjs +66 -0
- package/test/r70-owner-approval.test.mjs +67 -0
- package/test/r71-full-verifier-artifact.test.mjs +28 -0
- package/test/r71-isolated-slot-rollback-restore.test.mjs +62 -0
- package/test/r71-native-diff-mcp-wire.test.mjs +75 -0
- package/test/r71-publish-fence.test.mjs +38 -0
- package/test/r71-release-identity.test.mjs +31 -0
- package/test/remote-result-journal.test.mjs +12 -0
- package/test/remote-session-cli.test.mjs +2 -1
- package/test/standing-grants.test.mjs +2 -2
- package/test/tool-audit.test.mjs +14 -0
- package/bin/appcontainer-stage.obj +0 -0
- package/bin/bootstrap-advapi32.obj +0 -0
- package/bin/bootstrap-exitcode.obj +0 -0
- package/bin/bootstrap-kernel32.obj +0 -0
- package/bin/child-control-probe.obj +0 -0
- package/bin/child-control-stage.obj +0 -0
- package/bin/contained-reverse-worker.obj +0 -0
- package/bin/contained-transform-worker.obj +0 -0
- package/bin/containment-probe.obj +0 -0
- package/bin/deadbyte-contain.obj +0 -0
- package/bin/deadbyte-desktop-input-r40.obj +0 -0
- package/bin/deadbyte-desktop-observer-r40.obj +0 -0
- package/bin/deadbyte-desktop-uia-r40.obj +0 -0
- package/bin/deadbyte-exec.obj +0 -0
- package/bin/deadbyte-hardware-observer-r45.obj +0 -0
- package/bin/deadbyte-native-inspect-r67.obj +0 -0
- package/bin/deadbyte-process-host.obj +0 -0
- package/bin/deadbyte-tunnel-host.obj +0 -0
- package/conpty-input-observer.obj +0 -0
- package/miniconpty.obj +0 -0
- package/proof/CONTAINMENT-BUILD.txt +0 -163
- package/proof/MCP-SMOKE-STATUS.txt +0 -9
- package/proof/NODE-SYNTAX.txt +0 -4
- package/proof/PROOF.txt +0 -6
- package/proof/R34-TASK8-SUPERVISOR-CHECKPOINT.json +0 -29
- package/proof/R34-TASK9-MCP-SURFACE-CHECKPOINT.json +0 -28
- package/proof/SECRET-SCAN.txt +0 -4
- package/proof/SOURCE-GATES.txt +0 -16
- package/proof/STATUS.txt +0 -11
- package/proof/TARGET-V0313-CONTAINMENT-PASS.sha256 +0 -1
- package/proof/TARGET-V0313-CONTAINMENT-PASS.txt +0 -215
- package/proof/TARGET-V040-CONTAINED-IPC-FAIL.sha256 +0 -1
- package/proof/TARGET-V040-CONTAINED-IPC-FAIL.txt +0 -299
- package/proof/TARGET-V041-CONTAINED-CREATEPROCESS-203.sha256 +0 -1
- package/proof/TARGET-V041-CONTAINED-CREATEPROCESS-203.txt +0 -311
- package/proof/TARGET-V042-CONTAINED-CREATEPROCESS-203.sha256 +0 -1
- package/proof/TARGET-V042-CONTAINED-CREATEPROCESS-203.txt +0 -313
- package/proof/TARGET-V043-CONTAINED-CREATEPROCESS-203.sha256 +0 -1
- package/proof/TARGET-V043-CONTAINED-CREATEPROCESS-203.txt +0 -308
- package/proof/TARGET-V044-CONTAINED-PASS.sha256 +0 -1
- package/proof/TARGET-V044-CONTAINED-PASS.txt +0 -432
- package/proof/TARGET-V045-DUAL-OPERATION-PASS.sha256 +0 -1
- package/proof/TARGET-V045-DUAL-OPERATION-PASS.txt +0 -481
- package/proof/TARGET-V046-FIXED-EXECUTABLE-REGISTRY-PASS.sha256 +0 -1
- package/proof/TARGET-V046-FIXED-EXECUTABLE-REGISTRY-PASS.txt +0 -610
- package/proof/TARGET-V047-RUNTIME-MANIFEST-PASS.sha256 +0 -1
- package/proof/TARGET-V047-RUNTIME-MANIFEST-PASS.txt +0 -642
- package/proof/TARGET-V050-BATCH-GATE-PASS.sha256 +0 -1
- package/proof/TARGET-V050-BATCH-GATE-PASS.txt +0 -713
- package/proof/TESTS.txt +0 -686
- package/proof/TRUST-EPHEMERAL.txt +0 -4
- package/proof/V03-FREEZE.txt +0 -27
- package/proof/V041-IPC-HOTFIX.txt +0 -16
- package/proof/V042-ENV-HOTFIX.txt +0 -15
- package/proof/V043-DRIVE-CWD-HOTFIX.txt +0 -14
- package/proof/V044-LOCALAPPDATA-HOTFIX.txt +0 -18
- package/proof/V045-OPERATION-REGISTRY.txt +0 -7
- package/proof/V046-WORKER-REGISTRY.txt +0 -12
- package/proof/V047-WORKER-MANIFEST.txt +0 -18
- package/proof/V050-BATCH-TRUST-CLOSURE.txt +0 -21
- package/proof/V060-ACTIVE-NETWORK-AUTHORITY.txt +0 -29
- package/proof/V070-NODE-SYNTAX.txt +0 -36
- package/proof/V070-NODE-TESTS.txt +0 -752
- package/proof/V070-PACK-DRY-RUN.txt +0 -126
- package/proof/V070-SOURCE-GATE.txt +0 -30
- package/proof/V070-STATIC-SCAN.txt +0 -4
- package/proof/V070-WINDOWS-GATE-PENDING.txt +0 -25
- package/proof/V071-NODE-SYNTAX.txt +0 -1
- package/proof/V071-NODE-TESTS.txt +0 -796
- package/proof/V071-PACK-DRY-RUN.json +0 -656
- package/proof/V071-SOURCE-GATE.txt +0 -16
- package/proof/V071-WINDOWS-GATE-PENDING.txt +0 -24
- package/proof/V073-NODE-SYNTAX.txt +0 -4
- package/proof/V073-SOURCE-GATE.txt +0 -21
- package/proof/V073-STATIC-SCAN.txt +0 -10
- package/proof/V073-WINDOWS-GATE-PENDING.txt +0 -5
- package/proof/VERIFY.txt +0 -7
- package/proof/WINDOWS-CONTAINED-STATUS.txt +0 -5
- package/proof/WINDOWS-CONTAINMENT-STATUS.txt +0 -3
- package/proof/commander-closure-20260927/CONTINUATION.json +0 -43
- package/proof/commander-closure-20260927/RESULT.json +0 -30
- package/proof/commander-closure-20260927/SEARCH-CONTINUATION.json +0 -30
- package/proof/commander-closure-20260927/XLS-REFERENCE-PROBE.json +0 -13
- package/proof/commander-closure-20260928/DIFFERENTIAL-CHECKPOINT.json +0 -122
- package/proof/r59-full-regression-current.json +0 -13
- package/proof/r59-full-regression-current.stderr.log +0 -0
- package/proof/r59-full-regression-current.stdout.log +0 -1268
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import test from 'node:test';
|
|
2
|
+
import assert from 'node:assert/strict';
|
|
3
|
+
import {createHash} from 'node:crypto';
|
|
4
|
+
import {mkdtemp,mkdir,readFile,rm,writeFile,lstat} from 'node:fs/promises';
|
|
5
|
+
import os from 'node:os';
|
|
6
|
+
import path from 'node:path';
|
|
7
|
+
import {fileURLToPath} from 'node:url';
|
|
8
|
+
import {atomicWriteActivePointer,materializeReleaseSlot,parseActivePointer,parseManifest,renderStableLauncherPs1,verifyManifestTreeExact} from '../src/release-slot.mjs';
|
|
9
|
+
|
|
10
|
+
const candidate=path.dirname(path.dirname(fileURLToPath(import.meta.url)));
|
|
11
|
+
const parent=path.join(os.homedir(),'.deadbyte-mcp','releases','v0.15.44-9f500af433df3e77');
|
|
12
|
+
const parentManifestSha='9f500af433df3e7778d4f11acf418526d5889f478114c955c8c72c0077a0636e';
|
|
13
|
+
const sha=bytes=>createHash('sha256').update(bytes).digest('hex');
|
|
14
|
+
|
|
15
|
+
async function generation(state,label){
|
|
16
|
+
const root=path.join(state,'generations',label);
|
|
17
|
+
await mkdir(root,{recursive:true});
|
|
18
|
+
const config=Buffer.from(`@{ Label = '${label}' }\r\n`,'utf8');
|
|
19
|
+
await writeFile(path.join(root,'controller-config.psd1'),config,{flag:'wx'});
|
|
20
|
+
const manifest=Buffer.from(`${sha(config)} controller-config.psd1\n`,'utf8');
|
|
21
|
+
await writeFile(path.join(root,'GENERATION.SHA256'),manifest,{flag:'wx'});
|
|
22
|
+
return {root,manifest_sha256:sha(manifest),config_path:path.join(root,'controller-config.psd1')};
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
test('R71 isolated immutable slot activates, rolls back exact sealed R70, and restores same R71 bytes with no authority',async()=>{
|
|
26
|
+
const base=await mkdtemp(path.join(os.tmpdir(),'deadbyte-r71-slot-parity-'));
|
|
27
|
+
const state=path.join(base,'state');
|
|
28
|
+
try{
|
|
29
|
+
const parentManifest=await readFile(path.join(parent,'MANIFEST.SHA256'));
|
|
30
|
+
const candidateManifest=await readFile(path.join(candidate,'MANIFEST.SHA256'));
|
|
31
|
+
assert.equal(sha(parentManifest),parentManifestSha);
|
|
32
|
+
const candidateManifestSha=sha(candidateManifest);
|
|
33
|
+
const parentSlot=await materializeReleaseSlot({source:parent,stateRoot:state,version:'0.15.44',manifestSha256:parentManifestSha});
|
|
34
|
+
const candidateSlot=await materializeReleaseSlot({source:candidate,stateRoot:state,version:'0.15.45',manifestSha256:candidateManifestSha});
|
|
35
|
+
const parentGeneration=await generation(state,'r70-parent');
|
|
36
|
+
const candidateGeneration=await generation(state,'r71-candidate');
|
|
37
|
+
const launcherSha=sha(Buffer.from(renderStableLauncherPs1(),'utf8'));
|
|
38
|
+
const pointerPath=path.join(state,'active-release.json');
|
|
39
|
+
const pointer=(slot,version,g)=>({schema:'deadbyte.active-release.v1',release_id:slot.release_id,version,
|
|
40
|
+
manifest_sha256:slot.manifest_sha256,release_root:slot.release_root,generation_root:g.root,
|
|
41
|
+
generation_manifest_sha256:g.manifest_sha256,launcher_sha256:launcherSha,config_path:g.config_path});
|
|
42
|
+
|
|
43
|
+
const activated=await atomicWriteActivePointer(pointerPath,pointer(candidateSlot,'0.15.45',candidateGeneration));
|
|
44
|
+
assert.equal(activated.release_id,candidateSlot.release_id);
|
|
45
|
+
await verifyManifestTreeExact(candidateSlot.release_root,parseManifest(candidateManifest.toString('utf8')));
|
|
46
|
+
|
|
47
|
+
const rolledBack=await atomicWriteActivePointer(pointerPath,pointer(parentSlot,'0.15.44',parentGeneration));
|
|
48
|
+
assert.equal(rolledBack.release_id,parentSlot.release_id);
|
|
49
|
+
assert.equal(rolledBack.manifest_sha256,parentManifestSha);
|
|
50
|
+
await verifyManifestTreeExact(parentSlot.release_root,parseManifest(parentManifest.toString('utf8')));
|
|
51
|
+
|
|
52
|
+
const restored=await atomicWriteActivePointer(pointerPath,pointer(candidateSlot,'0.15.45',candidateGeneration));
|
|
53
|
+
assert.deepEqual(restored,activated);
|
|
54
|
+
assert.deepEqual(parseActivePointer(await readFile(pointerPath,'utf8')),activated);
|
|
55
|
+
await verifyManifestTreeExact(candidateSlot.release_root,parseManifest(candidateManifest.toString('utf8')));
|
|
56
|
+
for(const name of ['process-grant.json','coding-grant.json','autonomous-grant.json','desktop-grant.json','host-grant.json']){
|
|
57
|
+
await assert.rejects(()=>lstat(path.join(state,'runtime',name)),{code:'ENOENT'});
|
|
58
|
+
}
|
|
59
|
+
}finally{
|
|
60
|
+
await rm(base,{recursive:true,force:true});
|
|
61
|
+
}
|
|
62
|
+
});
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import test from 'node:test';
|
|
2
|
+
import assert from 'node:assert/strict';
|
|
3
|
+
import {createHash,randomBytes} from 'node:crypto';
|
|
4
|
+
import {access,mkdtemp,mkdir,readFile,rm,writeFile} from 'node:fs/promises';
|
|
5
|
+
import os from 'node:os';
|
|
6
|
+
import path from 'node:path';
|
|
7
|
+
import {fileURLToPath} from 'node:url';
|
|
8
|
+
import {Client} from '@modelcontextprotocol/client';
|
|
9
|
+
import {StdioClientTransport,getDefaultEnvironment} from '@modelcontextprotocol/client/stdio';
|
|
10
|
+
import {generateTrustKeypair} from '../src/trust.mjs';
|
|
11
|
+
|
|
12
|
+
const root=path.dirname(path.dirname(fileURLToPath(import.meta.url)));
|
|
13
|
+
const sha=bytes=>createHash('sha256').update(bytes).digest('hex');
|
|
14
|
+
const exists=file=>access(file).then(()=>true,()=>false);
|
|
15
|
+
|
|
16
|
+
test('R71 compact MCP tools/list and tools/call permit Coding-read preview without Autonomous apply authority',
|
|
17
|
+
{timeout:30_000},async()=>{
|
|
18
|
+
const state=await mkdtemp(path.join(os.tmpdir(),'deadbyte-r71-native-wire-'));
|
|
19
|
+
const project=path.join(state,'project');
|
|
20
|
+
const trust=path.join(state,'trust');
|
|
21
|
+
await mkdir(project);await mkdir(trust);
|
|
22
|
+
const keys=await generateTrustKeypair({privateKeyPath:path.join(trust,'private.pem'),
|
|
23
|
+
publicKeyPath:path.join(trust,'public.pem')});
|
|
24
|
+
const target=path.join(project,'candidate.txt');
|
|
25
|
+
await writeFile(target,'before\n');
|
|
26
|
+
const before=sha(await readFile(target));
|
|
27
|
+
const codingPath=path.join(state,'coding-policy.json');
|
|
28
|
+
const codingLease=path.join(state,'coding-lease.json');
|
|
29
|
+
await writeFile(codingPath,JSON.stringify({schema:'deadbyte.coding-policy.v1',enabled:true,
|
|
30
|
+
lease_file:codingLease,evidence_dir:path.join(state,'coding-evidence'),
|
|
31
|
+
roots:{project:{path:project,read:true,write:true,exec:false,deny_paths:[]}},commands:{}}));
|
|
32
|
+
await writeFile(codingLease,JSON.stringify({schema:'deadbyte.coding-lease.v1',
|
|
33
|
+
policy_sha256:sha(await readFile(codingPath)),instance_nonce:randomBytes(32).toString('hex'),
|
|
34
|
+
root_ids:['project'],armed_at_utc:new Date().toISOString(),
|
|
35
|
+
expires_at_utc:new Date(Date.now()+60_000).toISOString()}));
|
|
36
|
+
const autonomousPath=path.join(state,'autonomous-policy.json');
|
|
37
|
+
await writeFile(autonomousPath,JSON.stringify({schema:'deadbyte.autonomous-policy.v1',enabled:true,
|
|
38
|
+
lease_file:path.join(state,'autonomous-lease.json'),evidence_dir:path.join(state,'autonomous-evidence'),
|
|
39
|
+
root_ids:['project'],coding_policy_sha256:sha(await readFile(codingPath)),
|
|
40
|
+
planner:{backend:'client_sampling',max_tokens:2048},profiles:{},limits:{max_files_per_diff:8}}));
|
|
41
|
+
const client=new Client({name:'deadbyte-r71-native-wire',version:'0.15.45'},
|
|
42
|
+
{versionNegotiation:{mode:{pin:'2026-07-28'}}});
|
|
43
|
+
const transport=new StdioClientTransport({command:process.execPath,
|
|
44
|
+
args:[path.join(root,'src','mcp-server.mjs')],cwd:root,
|
|
45
|
+
env:{...getDefaultEnvironment(),DEADBYTE_STATE_ROOT:state,DEADBYTE_CAPABILITY_PROFILE:'compact',
|
|
46
|
+
DEADBYTE_SIGNING_KEY:keys.privateKeyPath,DEADBYTE_VERIFY_KEY:keys.publicKeyPath,
|
|
47
|
+
DEADBYTE_PRIVILEGED_POLICY:'',DEADBYTE_CODING_RUNTIME:'1',DEADBYTE_CODING_POLICY:codingPath,
|
|
48
|
+
DEADBYTE_AUTONOMOUS_RUNTIME:'1',DEADBYTE_AUTONOMOUS_POLICY:autonomousPath},stderr:'pipe'});
|
|
49
|
+
try{
|
|
50
|
+
await client.connect(transport);
|
|
51
|
+
const tools=(await client.listTools()).tools;
|
|
52
|
+
const preview=tools.find(tool=>tool.name==='native_diff_preview');
|
|
53
|
+
assert.ok(preview,'compact catalog must expose native_diff_preview');
|
|
54
|
+
assert.match(preview.description,/Coding read authority/i);
|
|
55
|
+
assert.equal(preview.outputSchema?.additionalProperties,false);
|
|
56
|
+
const request={root_id:'project',title:'read only wire proof',operations:[
|
|
57
|
+
{kind:'replace',path:'candidate.txt',expected_sha256:before,old_string:'before',
|
|
58
|
+
new_string:'after',expected_replacements:1}]};
|
|
59
|
+
const accepted=await client.callTool({name:'native_diff_preview',arguments:request});
|
|
60
|
+
assert.equal(accepted.isError,false);
|
|
61
|
+
assert.equal(accepted.structuredContent.status,'preview_only');
|
|
62
|
+
assert.equal(accepted.structuredContent.diff_id,undefined);
|
|
63
|
+
assert.equal(sha(await readFile(target)),before);
|
|
64
|
+
assert.equal(await exists(path.join(state,'autonomous-evidence','native-diffs')),false);
|
|
65
|
+
const denied=await client.callTool({name:'native_diff_preview',arguments:{...request,root_id:'outside'}});
|
|
66
|
+
assert.equal(denied.isError,true);
|
|
67
|
+
await rm(codingLease);
|
|
68
|
+
const revoked=await client.callTool({name:'native_diff_preview',arguments:request});
|
|
69
|
+
assert.equal(revoked.isError,true);
|
|
70
|
+
assert.equal(sha(await readFile(target)),before);
|
|
71
|
+
}finally{
|
|
72
|
+
await client.close().catch(()=>{});
|
|
73
|
+
await rm(state,{recursive:true,force:true});
|
|
74
|
+
}
|
|
75
|
+
});
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import test from 'node:test';
|
|
2
|
+
import assert from 'node:assert/strict';
|
|
3
|
+
import {readFile} from 'node:fs/promises';
|
|
4
|
+
import {assertR71NpmPublishReady} from '../scripts/npm-release-readiness-r71.mjs';
|
|
5
|
+
|
|
6
|
+
test('R71 publish script enforces successor metadata before packing or dispatch',async()=>{
|
|
7
|
+
const source=await readFile(new URL('../scripts/npm-release-r48.mjs',import.meta.url),'utf8');
|
|
8
|
+
const guard=source.indexOf('assertR71NpmPublishReady(release)');
|
|
9
|
+
const pack=source.indexOf("'pack', '--json'");
|
|
10
|
+
const submit=source.indexOf("'publish',publishTarball");
|
|
11
|
+
assert.ok(guard>0&&guard<pack&&guard<submit,'R71 release fence must precede pack and publish');
|
|
12
|
+
});
|
|
13
|
+
|
|
14
|
+
test('R71 publication stays blocked while candidate gates are pending',async()=>{
|
|
15
|
+
const release=JSON.parse(await readFile(new URL('../RELEASE.json',import.meta.url),'utf8'));
|
|
16
|
+
assert.throws(()=>assertR71NpmPublishReady(release),/PUBLISH_BLOCKED/);
|
|
17
|
+
});
|
|
18
|
+
|
|
19
|
+
test('R71 fence accepts only the exact sealed parent and complete independently verified gate vector',()=>{
|
|
20
|
+
const release={version:'0.15.45',train:'R71',parent:{
|
|
21
|
+
release_id:'v0.15.44-9f500af433df3e77',
|
|
22
|
+
manifest_sha256:'9f500af433df3e7778d4f11acf418526d5889f478114c955c8c72c0077a0636e',
|
|
23
|
+
generation_manifest_sha256:'c35f6ccca58083acd53484a983ef401ee18f28b11185cd02c7b1eb3e29028c71'},
|
|
24
|
+
r71_candidate:{status:'CANDIDATE_SEALED',full_regression:'PASS',manifest:'PASS',
|
|
25
|
+
windows_gate:'PASS',hot_swap:'PASS',package_acceptance:'PASS',
|
|
26
|
+
local_coding_preview:'PASS_CODING_READ_ONLY_NO_AUTONOMOUS_APPLY',
|
|
27
|
+
public_catalog:'PASS_43_TOOLS',signed_public_mcp:'PASS',performance_l0:'PASS',
|
|
28
|
+
owner_independent_project_grant:'DISABLED_FAIL_CLOSED_NO_OWNER_ENROLLMENT'}};
|
|
29
|
+
assert.doesNotThrow(()=>assertR71NpmPublishReady(release));
|
|
30
|
+
for(const key of Object.keys(release.r71_candidate)){
|
|
31
|
+
const altered=structuredClone(release);
|
|
32
|
+
altered.r71_candidate[key]='PENDING';
|
|
33
|
+
assert.throws(()=>assertR71NpmPublishReady(altered),/PUBLISH_BLOCKED/);
|
|
34
|
+
}
|
|
35
|
+
const wrongParent=structuredClone(release);
|
|
36
|
+
wrongParent.parent.manifest_sha256='0'.repeat(64);
|
|
37
|
+
assert.throws(()=>assertR71NpmPublishReady(wrongParent),/PUBLISH_BLOCKED/);
|
|
38
|
+
});
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import test from 'node:test';
|
|
2
|
+
import assert from 'node:assert/strict';
|
|
3
|
+
import {readFile} from 'node:fs/promises';
|
|
4
|
+
|
|
5
|
+
const json=async rel=>JSON.parse(await readFile(new URL('../'+rel,import.meta.url),'utf8'));
|
|
6
|
+
const parent={release_id:'v0.15.44-9f500af433df3e77',
|
|
7
|
+
manifest_sha256:'9f500af433df3e7778d4f11acf418526d5889f478114c955c8c72c0077a0636e',
|
|
8
|
+
generation_manifest_sha256:'c35f6ccca58083acd53484a983ef401ee18f28b11185cd02c7b1eb3e29028c71'};
|
|
9
|
+
|
|
10
|
+
test('R71 current source, package, bridge, provenance and Windows gate bind exact predecessor',async()=>{
|
|
11
|
+
const [pkg,lock,bridge,release,provenance,matrix,sbom,version]=await Promise.all([
|
|
12
|
+
json('package.json'),json('package-lock.json'),json('bridge/package.json'),json('RELEASE.json'),
|
|
13
|
+
json('PROVENANCE.json'),json('TEST-MATRIX.json'),json('SBOM.cdx.json'),
|
|
14
|
+
readFile(new URL('../src/version.mjs',import.meta.url),'utf8')]);
|
|
15
|
+
for(const observed of [pkg.version,lock.version,lock.packages[''].version,bridge.version,
|
|
16
|
+
release.version,provenance.version,matrix.version,sbom.metadata.component.version]){
|
|
17
|
+
assert.equal(observed,'0.15.45');
|
|
18
|
+
}
|
|
19
|
+
assert.match(version,/DEADBYTE_VERSION = '0\.15\.45'/);
|
|
20
|
+
assert.equal(release.train,'R71');
|
|
21
|
+
assert.equal(matrix.train,'R71');
|
|
22
|
+
assert.equal(sbom.serialNumber,'urn:cdx:deadbyte-mcp:r71:0.15.45');
|
|
23
|
+
assert.deepEqual(release.runtime_predecessor,parent);
|
|
24
|
+
assert.equal(release.parent.release_id,parent.release_id);
|
|
25
|
+
assert.equal(release.parent.manifest_sha256,parent.manifest_sha256);
|
|
26
|
+
assert.equal(release.parent.generation_manifest_sha256,parent.generation_manifest_sha256);
|
|
27
|
+
assert.equal(provenance.parent_release_id,parent.release_id);
|
|
28
|
+
assert.equal(provenance.parent_manifest_sha256,parent.manifest_sha256);
|
|
29
|
+
assert.equal(provenance.parent_generation_manifest_sha256,parent.generation_manifest_sha256);
|
|
30
|
+
assert.match(pkg.scripts['gate:windows'],/gate-windows-r71\.ps1/);
|
|
31
|
+
});
|
|
@@ -71,3 +71,15 @@ test('remote result journal preserves explicit unknown side-effect state across
|
|
|
71
71
|
await assert.rejects(journal.recordTerminal({...item('req-invalid',H('5'),'error'),side_effect_state:'committed'}),/side_effect_state invalid/);
|
|
72
72
|
}finally{await rm(root,{recursive:true,force:true});}
|
|
73
73
|
});
|
|
74
|
+
|
|
75
|
+
test('R69 replay retains an input-required result as pending, never ok',async()=>{
|
|
76
|
+
const root=await mkdtemp(path.join(os.tmpdir(),'deadbyte-r69-remote-pending-'));
|
|
77
|
+
try{
|
|
78
|
+
const file=path.join(root,'journal.json');
|
|
79
|
+
let journal=await openRemoteResultJournal({filePath:file,sessionId:session,maxEntries:8});
|
|
80
|
+
await journal.recordTerminal(item('req-input',H('6'),'pending'));
|
|
81
|
+
journal=await openRemoteResultJournal({filePath:file,sessionId:session,maxEntries:8});
|
|
82
|
+
const replay=await journal.replayAfter('r1:'+session+':0',{limit:8});
|
|
83
|
+
assert.equal(replay.events[0].status,'pending');
|
|
84
|
+
}finally{await rm(root,{recursive:true,force:true});}
|
|
85
|
+
});
|
|
@@ -273,7 +273,8 @@ winTest('bare remote uses one unified live timeline, keeps authority semantics,
|
|
|
273
273
|
assert.deepEqual(ready.slice(0,8),['status','start','status','status','armprocess','armcoding','armautonomous','status']);
|
|
274
274
|
assert.equal(child.exitCode,null,'remote session must remain foreground after becoming ready');
|
|
275
275
|
const tailDeadline=Date.now()+3000;
|
|
276
|
-
while(Date.now()<tailDeadline
|
|
276
|
+
while(Date.now()<tailDeadline&&(!/\[AUTH\] process ARMED \| coding ARMED \| autonomous ARMED \| desktop DISARMED \| host DISARMED/.test(output.stdout)||
|
|
277
|
+
!/\[READY\] DEADBYTE MCP online/.test(output.stdout))) await sleep(50);
|
|
277
278
|
assert.match(output.stdout,/\[DISPLAY\] ASCII fallback: stdout_not_tty/);
|
|
278
279
|
assert.match(output.stdout,/\[DEVICE\] Starting DEADBYTE MCP/);
|
|
279
280
|
assert.match(output.stdout,/\[BRIDGE\] Local bridge connected/);
|
|
@@ -85,13 +85,13 @@ test('host standing grant remains armed until explicit revocation', async () =>
|
|
|
85
85
|
assert.equal(status.remaining_ms, null);
|
|
86
86
|
});
|
|
87
87
|
|
|
88
|
-
test('controller
|
|
88
|
+
test('controller retains coding/host standing grants but issues bounded autonomous expiry', async () => {
|
|
89
89
|
const controller = await import('node:fs/promises').then(fs => fs.readFile(
|
|
90
90
|
new URL('../controller/deadbyte-controller.ps1', import.meta.url), 'utf8'));
|
|
91
91
|
assert.match(controller, /deadbyte\.host-grant\.v2/);
|
|
92
92
|
assert.match(controller, /deadbyte\.coding-grant\.v2/);
|
|
93
93
|
assert.match(controller, /deadbyte\.autonomous-grant\.v2/);
|
|
94
|
-
assert.
|
|
94
|
+
assert.match(controller, /expires_at_utc=\$now\.AddHours\(1\)\.ToString\('o'\)/);
|
|
95
95
|
assert.doesNotMatch(controller, /AddMinutes\((?:15|30|60)\)/);
|
|
96
96
|
assert.doesNotMatch(controller, /expires=/);
|
|
97
97
|
});
|
package/test/tool-audit.test.mjs
CHANGED
|
@@ -71,6 +71,20 @@ test('tool wrapper durably records request before handler and writes correlated
|
|
|
71
71
|
}finally{await rm(root,{recursive:true,force:true});}
|
|
72
72
|
});
|
|
73
73
|
|
|
74
|
+
test('R69 audit retains explicit unknown side effect even when a tool envelope says ok',async()=>{
|
|
75
|
+
const root=await temp();
|
|
76
|
+
try{
|
|
77
|
+
const k=await keys(root);
|
|
78
|
+
const audit=await createToolAudit({stateRoot:root,signingKeyPath:k.privateKeyPath,contextProvider:async()=>context()});
|
|
79
|
+
const server=fakeServer();installToolAudit(server,audit);
|
|
80
|
+
server.registerTool('uncertain_write',{},async()=>({isError:false,
|
|
81
|
+
structuredContent:{status:'ok',side_effect_state:'unknown'}}));
|
|
82
|
+
await server.handlers.get('uncertain_write')({path:'scratch.txt'});
|
|
83
|
+
const all=await events(root);
|
|
84
|
+
assert.equal(all.at(-1).outcome.side_effect_state,'unknown');
|
|
85
|
+
}finally{await rm(root,{recursive:true,force:true});}
|
|
86
|
+
});
|
|
87
|
+
|
|
74
88
|
test('audit failure before request commit prevents handler side effects',async()=>{
|
|
75
89
|
const server=fakeServer();let sideEffect=false;
|
|
76
90
|
installToolAudit(server,{async recordRequest(){throw new Error('audit unavailable');},async recordResult(){throw new Error('unexpected');}});
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/bin/deadbyte-contain.obj
DELETED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/bin/deadbyte-exec.obj
DELETED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/miniconpty.obj
DELETED
|
Binary file
|
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
==== launcher ====
|
|
2
|
-
deadbyte-contain.cpp
|
|
3
|
-
exit_code=0
|
|
4
|
-
==== probe ====
|
|
5
|
-
containment-probe.cpp
|
|
6
|
-
exit_code=0
|
|
7
|
-
==== bootstrap-kernel32 ====
|
|
8
|
-
bootstrap-kernel32.cpp
|
|
9
|
-
exit_code=0
|
|
10
|
-
==== bootstrap-advapi32 ====
|
|
11
|
-
bootstrap-advapi32.cpp
|
|
12
|
-
exit_code=0
|
|
13
|
-
==== construction-launcher ====
|
|
14
|
-
appcontainer-stage.cpp
|
|
15
|
-
exit_code=0
|
|
16
|
-
==== bootstrap-exitcode ====
|
|
17
|
-
bootstrap-exitcode.cpp
|
|
18
|
-
exit_code=0
|
|
19
|
-
==== child-control-launcher ====
|
|
20
|
-
child-control-stage.cpp
|
|
21
|
-
exit_code=0
|
|
22
|
-
==== child-control-probe ====
|
|
23
|
-
child-control-probe.cpp
|
|
24
|
-
exit_code=0
|
|
25
|
-
==== contained-launcher ====
|
|
26
|
-
deadbyte-exec.cpp
|
|
27
|
-
exit_code=0
|
|
28
|
-
==== contained-worker ====
|
|
29
|
-
contained-transform-worker.cpp
|
|
30
|
-
exit_code=0
|
|
31
|
-
==== contained-reverse-worker ====
|
|
32
|
-
contained-reverse-worker.cpp
|
|
33
|
-
exit_code=0
|
|
34
|
-
==== named-tunnel-host ====
|
|
35
|
-
deadbyte-tunnel-host.cpp
|
|
36
|
-
exit_code=0
|
|
37
|
-
==== process-host ====
|
|
38
|
-
deadbyte-process-host.cpp
|
|
39
|
-
exit_code=0
|
|
40
|
-
==== probe-dependencies ====
|
|
41
|
-
|
|
42
|
-
Dump of file D:\Projects\deadbyte-mcp\development\deadbyte-mcp-0.15.44-r67\bin\containment-probe.exe
|
|
43
|
-
|
|
44
|
-
File Type: EXECUTABLE IMAGE
|
|
45
|
-
|
|
46
|
-
Image has the following dependencies:
|
|
47
|
-
|
|
48
|
-
ADVAPI32.dll
|
|
49
|
-
KERNEL32.dll
|
|
50
|
-
|
|
51
|
-
Summary
|
|
52
|
-
|
|
53
|
-
2000 .data
|
|
54
|
-
1000 .fptable
|
|
55
|
-
2000 .pdata
|
|
56
|
-
E000 .rdata
|
|
57
|
-
1000 .reloc
|
|
58
|
-
19000 .text
|
|
59
|
-
exit_code=0
|
|
60
|
-
==== contained-launcher-dependencies ====
|
|
61
|
-
|
|
62
|
-
Dump of file D:\Projects\deadbyte-mcp\development\deadbyte-mcp-0.15.44-r67\bin\deadbyte-exec.exe
|
|
63
|
-
|
|
64
|
-
File Type: EXECUTABLE IMAGE
|
|
65
|
-
|
|
66
|
-
Image has the following dependencies:
|
|
67
|
-
|
|
68
|
-
USERENV.dll
|
|
69
|
-
ADVAPI32.dll
|
|
70
|
-
ole32.dll
|
|
71
|
-
bcrypt.dll
|
|
72
|
-
WS2_32.dll
|
|
73
|
-
KERNEL32.dll
|
|
74
|
-
|
|
75
|
-
Summary
|
|
76
|
-
|
|
77
|
-
3000 .data
|
|
78
|
-
1000 .fptable
|
|
79
|
-
3000 .pdata
|
|
80
|
-
17000 .rdata
|
|
81
|
-
1000 .reloc
|
|
82
|
-
3B000 .text
|
|
83
|
-
exit_code=0
|
|
84
|
-
==== contained-worker-dependencies ====
|
|
85
|
-
|
|
86
|
-
Dump of file D:\Projects\deadbyte-mcp\development\deadbyte-mcp-0.15.44-r67\bin\contained-transform-worker.exe
|
|
87
|
-
|
|
88
|
-
File Type: EXECUTABLE IMAGE
|
|
89
|
-
|
|
90
|
-
Image has the following dependencies:
|
|
91
|
-
|
|
92
|
-
ADVAPI32.dll
|
|
93
|
-
WS2_32.dll
|
|
94
|
-
KERNEL32.dll
|
|
95
|
-
|
|
96
|
-
Summary
|
|
97
|
-
|
|
98
|
-
2000 .data
|
|
99
|
-
1000 .fptable
|
|
100
|
-
2000 .pdata
|
|
101
|
-
F000 .rdata
|
|
102
|
-
1000 .reloc
|
|
103
|
-
19000 .text
|
|
104
|
-
exit_code=0
|
|
105
|
-
==== contained-reverse-worker-dependencies ====
|
|
106
|
-
|
|
107
|
-
Dump of file D:\Projects\deadbyte-mcp\development\deadbyte-mcp-0.15.44-r67\bin\contained-reverse-worker.exe
|
|
108
|
-
|
|
109
|
-
File Type: EXECUTABLE IMAGE
|
|
110
|
-
|
|
111
|
-
Image has the following dependencies:
|
|
112
|
-
|
|
113
|
-
ADVAPI32.dll
|
|
114
|
-
WS2_32.dll
|
|
115
|
-
KERNEL32.dll
|
|
116
|
-
|
|
117
|
-
Summary
|
|
118
|
-
|
|
119
|
-
2000 .data
|
|
120
|
-
1000 .fptable
|
|
121
|
-
2000 .pdata
|
|
122
|
-
F000 .rdata
|
|
123
|
-
1000 .reloc
|
|
124
|
-
19000 .text
|
|
125
|
-
exit_code=0
|
|
126
|
-
==== named-tunnel-host-dependencies ====
|
|
127
|
-
|
|
128
|
-
Dump of file D:\Projects\deadbyte-mcp\development\deadbyte-mcp-0.15.44-r67\bin\deadbyte-tunnel-host.exe
|
|
129
|
-
|
|
130
|
-
File Type: EXECUTABLE IMAGE
|
|
131
|
-
|
|
132
|
-
Image has the following dependencies:
|
|
133
|
-
|
|
134
|
-
KERNEL32.dll
|
|
135
|
-
|
|
136
|
-
Summary
|
|
137
|
-
|
|
138
|
-
2000 .data
|
|
139
|
-
1000 .fptable
|
|
140
|
-
2000 .pdata
|
|
141
|
-
C000 .rdata
|
|
142
|
-
1000 .reloc
|
|
143
|
-
18000 .text
|
|
144
|
-
exit_code=0
|
|
145
|
-
==== process-host-dependencies ====
|
|
146
|
-
|
|
147
|
-
Dump of file D:\Projects\deadbyte-mcp\development\deadbyte-mcp-0.15.44-r67\bin\deadbyte-process-host.exe
|
|
148
|
-
|
|
149
|
-
File Type: EXECUTABLE IMAGE
|
|
150
|
-
|
|
151
|
-
Image has the following dependencies:
|
|
152
|
-
|
|
153
|
-
KERNEL32.dll
|
|
154
|
-
|
|
155
|
-
Summary
|
|
156
|
-
|
|
157
|
-
2000 .data
|
|
158
|
-
1000 .fptable
|
|
159
|
-
2000 .pdata
|
|
160
|
-
F000 .rdata
|
|
161
|
-
1000 .reloc
|
|
162
|
-
1C000 .text
|
|
163
|
-
exit_code=0
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
DEADBYTE MCP V0.6.0 MCP LIVE SMOKE
|
|
2
|
-
STATUS=PASS
|
|
3
|
-
PROTOCOL_REVISION=2026-07-28
|
|
4
|
-
PROTOCOL_ERA=modern
|
|
5
|
-
TOOLS=contained_transform,evidence_verify,file_read,proof_execute,workspace_open
|
|
6
|
-
SIGNATURE_ALGORITHM=ed25519
|
|
7
|
-
SIGNATURE_VALID=true
|
|
8
|
-
INDEPENDENT_VERIFY=true
|
|
9
|
-
OUTPUT_SHA256=72562501a654ddbb4f8810f8ba9017d02b29516853101456445e7642988fbd1b
|
package/proof/NODE-SYNTAX.txt
DELETED
package/proof/PROOF.txt
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
DEADBYTE MCP V0.6.0 SIGNED PROOF REGRESSION
|
|
2
|
-
STATUS=PASS
|
|
3
|
-
RECEIPT_SHA256=5bc4f1ace478b79fc491811888b039ebffb72d09f7cd51f520f6569a0cc3d0d4
|
|
4
|
-
KEY_ID=64ee8445e138c19a2049dc4242924d056f2b62913ed65364916413eb684a946e
|
|
5
|
-
SIGNATURE_ALGORITHM=ed25519
|
|
6
|
-
OUTPUT_SHA256=72562501a654ddbb4f8810f8ba9017d02b29516853101456445e7642988fbd1b
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"schema": "deadbyte.r34.task8-checkpoint.v1",
|
|
3
|
-
"task": 8,
|
|
4
|
-
"status": "passed",
|
|
5
|
-
"workspace": "D:\\Projects\\deadbyte-mcp-r34-loop-engine",
|
|
6
|
-
"node_executable_sha256": "9a4eb5f1c29c6a2e93852ead46b999e284a6a5ca8bab4d4e241d587d025a52de",
|
|
7
|
-
"sources": {
|
|
8
|
-
"src/autonomous-local-supervisor.mjs": "ab0158c3f6e270ee367ae96455dd2b75a902c808b2a10ac2c5b75fdda00be6c3",
|
|
9
|
-
"src/autonomous-supervisor.mjs": "8ea06b5941de9b346ab4e97ff6ed236964b864fbe725602baee3a54dd74527c0",
|
|
10
|
-
"src/autonomous-supervisor-host.mjs": "335022086ef41e6cc9853468d928acc864deab8009383dc22518a6ec7e749fa1",
|
|
11
|
-
"src/deadbyte-cli.mjs": "0b0d41a51559502a6ff377a4f74e6f80ea77d37002a700e04bd7c4dd3f226b42",
|
|
12
|
-
"controller/deadbyte-controller.ps1": "279dfe20345193ca229cc442b25796f12d4c8ec9f9d3e2d26a607a7342b96a5a",
|
|
13
|
-
"controller/deadbyte-controller.config.psd1.example": "f20a5bf0df576dbdd32af657640b26c5c50c39dce0b465b7488c218917c729f7"
|
|
14
|
-
},
|
|
15
|
-
"regression": {
|
|
16
|
-
"tests": 40,
|
|
17
|
-
"passed": 40,
|
|
18
|
-
"failed": 0,
|
|
19
|
-
"receipt_id": "473fb1f0f7e6a2dec1ea9d80",
|
|
20
|
-
"receipt_sha256": "255e3679051eff46ae745b16f07d6a3c40f87e42259ac651ef286c9d876ceae2",
|
|
21
|
-
"receipt_signature_valid": true,
|
|
22
|
-
"marker": "TASK8_REGRESSION=PASS"
|
|
23
|
-
},
|
|
24
|
-
"authority_contract": {
|
|
25
|
-
"self_arm": false,
|
|
26
|
-
"recovery_operations": ["resume","disarmautonomous","disarmcoding","disarmprocess","disarmhost","status"],
|
|
27
|
-
"final_required": "ONLINE + process/coding/autonomous/host DISARMED"
|
|
28
|
-
}
|
|
29
|
-
}
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"schema": "deadbyte.r34-task9-checkpoint.v1",
|
|
3
|
-
"status": "passed",
|
|
4
|
-
"workspace": "D:\\Projects\\deadbyte-mcp-r34-loop-engine",
|
|
5
|
-
"public_tool_count": 68,
|
|
6
|
-
"public_tool_unique_count": 68,
|
|
7
|
-
"public_tool_catalog_sha256": "bb7c08e116178e3da4b577b591f7058eb6caf7632358e765d28ccb20b2e36f45",
|
|
8
|
-
"mcp_server_sha256": "5a6cd82c332e4cef30c4ccfeb12f8cb3634cb6c92104931768b42ba6a84b62b3",
|
|
9
|
-
"controller_sha256": "cf8ab26a7481801da07c5c0a842df4ce1279854ed67781f967e5412da5c2aa3d",
|
|
10
|
-
"supervisor_integration_test_sha256": "127e170995460daabab88860f20f1b4c2416839e018df0e1cda23b58d032beab",
|
|
11
|
-
"exact_surface_gate": {
|
|
12
|
-
"tests": 19,
|
|
13
|
-
"pass": 19,
|
|
14
|
-
"fail": 0,
|
|
15
|
-
"receipt_id": "dc0b7e9c6c9e340c037bc54a",
|
|
16
|
-
"receipt_sha256": "f6b8ac9b6d499d51f60c7f8053a2e591e09654cdfe5bf69c449b15d133e48506"
|
|
17
|
-
},
|
|
18
|
-
"catalog_observation": {
|
|
19
|
-
"receipt_id": "7dd6df7d9b575e786101d1d0",
|
|
20
|
-
"receipt_sha256": "226e0861c01cb485ef94b91c1562a3cb70123698b9a52bb62ba883940be940cf"
|
|
21
|
-
},
|
|
22
|
-
"supervision": {
|
|
23
|
-
"in_process_compatibility": true,
|
|
24
|
-
"external_owner_mode": true,
|
|
25
|
-
"bridge_external_mode_does_not_execute_goal": true,
|
|
26
|
-
"standalone_host_advances_durable_goal": true
|
|
27
|
-
}
|
|
28
|
-
}
|
package/proof/SECRET-SCAN.txt
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
DEADBYTE_MCP_VERSION=0.7.3
|
|
2
|
-
RESULT=PASS
|
|
3
|
-
No private-key material, MCP secret path literal, node_modules, shell:true, broad taskkill-by-image, or Stop-Process -Name occurs in the source package.
|
|
4
|
-
The tunnel stdio compatibility adapter imports no child_process API and performs no file write.
|
package/proof/SOURCE-GATES.txt
DELETED
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
DEADBYTE MCP V0.7.3 SOURCE/ADVERSARIAL GATES
|
|
2
|
-
TESTS=142
|
|
3
|
-
PASS=142
|
|
4
|
-
FAIL=0
|
|
5
|
-
TUNNEL_STDIO_COMPAT_TESTS=10_10_PASS
|
|
6
|
-
NODE_SYNTAX=PASS_44_44
|
|
7
|
-
PROTOCOL_REVISION=2026-07-28
|
|
8
|
-
STRICT_SDK_LEGACY_POLICY=reject
|
|
9
|
-
TUNNEL_STARTUP_PROBE_COMPAT=SOURCE_PASS_TARGET_PENDING
|
|
10
|
-
LEGACY_CAPABILITY_TRANSLATION=NONE
|
|
11
|
-
SIGNED_PROOF_REGRESSION=PASS
|
|
12
|
-
INDEPENDENT_VERIFIER_REGRESSION=PASS
|
|
13
|
-
ACTIVE_NETWORK_SOURCE_GATES=PASS
|
|
14
|
-
EXECUTION_AUTHORITY_SOURCE_GATES=PASS
|
|
15
|
-
PRIVILEGED_HOST_PLANE_SOURCE_GATES=PASS
|
|
16
|
-
WINDOWS_NATIVE_BATCH_GATE=PENDING_TARGET
|
package/proof/STATUS.txt
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
DEADBYTE MCP V0.7.3
|
|
2
|
-
SOURCE_TESTS=PASS_142_142
|
|
3
|
-
TUNNEL_STDIO_COMPAT=SOURCE_PASS_TARGET_PENDING
|
|
4
|
-
MCP_PROTOCOL=2026-07-28
|
|
5
|
-
STRICT_CORE_LEGACY=REJECT
|
|
6
|
-
LEGACY_STARTUP_PROBE_ADAPTER=OPTIONAL_NARROW_PREFILTER
|
|
7
|
-
LEGACY_CAPABILITY_TRANSLATION=NONE
|
|
8
|
-
PRIVILEGED_HOST_PLANE=LOCAL_POLICY_PLUS_EXPIRING_ARM_LEASE
|
|
9
|
-
GENERAL_UNBOUNDED_COMMAND_EXECUTION=NOT_EXPOSED
|
|
10
|
-
WINDOWS_BATCH_GATE=PENDING_TARGET
|
|
11
|
-
PUBLIC_TUNNEL_GATE=PENDING_TARGET
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
e6a8f91b62b5fdb861ee039ae05a9c3572535d16608297ec75c6440e5ea6d20d TARGET-V0313-CONTAINMENT-PASS.txt
|