deadbyte-mcp 0.15.35 → 0.15.37
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/MANIFEST.SHA256 +91 -46
- package/PROVENANCE.json +76 -30
- package/README.txt +62 -8
- package/RELEASE.json +78 -23
- package/SBOM.cdx.json +10 -25
- package/TEST-MATRIX.json +109 -44
- package/bridge/package.json +4 -2
- package/bridge/src/bridge-health-r59.mjs +53 -0
- package/bridge/src/bridge.mjs +158 -26
- package/bridge/src/canonical-json-r60.mjs +13 -0
- package/bridge/src/r40-governor.mjs +56 -10
- package/bridge/src/reconnect-delay-r60.mjs +31 -0
- package/bridge/src/remote-call-claims-r60.mjs +157 -0
- package/bridge/src/remote-dispatch-r60.mjs +75 -0
- package/controller/deadbyte-controller.ps1 +76 -13
- package/controller/deadbyte-process-policy.json +4 -4
- package/docs/R59-PROVENANCE.json +87 -0
- package/docs/R59-RELEASE.json +187 -0
- package/docs/R59-SBOM.cdx.json +68 -0
- package/docs/R59-TASK-CONTRACT.md +26 -0
- package/docs/R59-TEST-MATRIX.json +258 -0
- package/docs/R59-bridge-package.json +13 -0
- package/docs/R59-package-lock.json +184 -0
- package/docs/R59-package.json +106 -0
- package/docs/R59-version.mjs +6 -0
- package/docs/R60-TASK-CONTRACT.md +22 -0
- package/package.json +7 -3
- package/proof/r59-full-regression-current.json +13 -0
- package/proof/r59-full-regression-current.stderr.log +0 -0
- package/proof/r59-full-regression-current.stdout.log +1268 -0
- package/scripts/full-regression-r60.mjs +32 -0
- package/scripts/gate-windows-r59-prepublish.ps1 +41 -0
- package/scripts/gate-windows-r60-prepublish.ps1 +74 -0
- package/scripts/r59-full-regression-capture.mjs +35 -0
- package/src/capability-resolver.mjs +25 -7
- package/src/capability-snapshot.mjs +56 -0
- package/src/compact-gateway-mcp-tools.mjs +10 -11
- package/src/deadbyte-cli.mjs +80 -34
- package/src/mcp-server.mjs +179 -118
- package/src/r40-compact-disarmed-probe.mjs +1 -1
- package/src/r44-compact-disarmed-probe.mjs +1 -1
- package/src/r45-compact-disarmed-probe.mjs +1 -1
- package/src/remote-authority.mjs +56 -0
- package/src/remote-enforcement-probe-r60.mjs +17 -0
- package/src/remote-live-log.mjs +19 -2
- package/src/remote-log-decode-r60.mjs +32 -0
- package/src/remote-mcp-machine-smoke-client.mjs +19 -1
- package/src/remote-mcp-r40-parity-client.mjs +1 -1
- package/src/remote-mcp-r44-parity-client.mjs +1 -1
- package/src/remote-mcp-r45-parity-client.mjs +1 -1
- package/src/remote-mcp-smoke-client.mjs +1 -1
- package/src/remote-session-guardian.mjs +20 -3
- package/src/runtime-plane-registry.mjs +74 -0
- package/src/tool-audit.mjs +5 -0
- package/src/version.mjs +1 -1
- package/test/bridge-runtime-r59.test.mjs +60 -0
- package/test/capability-resolver.test.mjs +16 -0
- package/test/capability-snapshot-r59.test.mjs +39 -0
- package/test/compact-gateway-r36.test.mjs +22 -2
- package/test/compact-max-catalog-r44.test.mjs +1 -1
- package/test/compact-max-catalog-r45.test.mjs +1 -1
- package/test/contained.test.mjs +2 -1
- package/test/controller-policy-preflight-r59.test.mjs +39 -0
- package/test/fixtures/r59-compact-surface-v0.15.35.json +222 -0
- package/test/observation-integration.test.mjs +2 -3
- package/test/optional-plane-degraded-r59.test.mjs +44 -0
- package/test/r48-release-contract.test.mjs +1 -1
- package/test/r49-windows-gate.test.mjs +1 -1
- package/test/r51-runtime-coherence.test.mjs +2 -2
- package/test/r58-bundled-bridge.test.mjs +3 -1
- package/test/r58-cleanup-retention.test.mjs +9 -3
- package/test/r58-concurrent-recovery.test.mjs +9 -3
- package/test/r58-controller-live-local.test.mjs +36 -4
- package/test/r58-controller-state-coherence.test.mjs +1 -1
- package/test/r58-release-contract.test.mjs +3 -2
- package/test/r58-stale-owner.test.mjs +2 -2
- package/test/r58-windows-gate.test.mjs +2 -1
- package/test/r59-release-contract.test.mjs +61 -0
- package/test/r59-tool-surface-compat.test.mjs +90 -0
- package/test/r60-authority-coherence.test.mjs +36 -0
- package/test/r60-authority-enforcement.test.mjs +28 -0
- package/test/r60-bridge-dispatch.test.mjs +119 -0
- package/test/r60-clock-discipline.test.mjs +15 -0
- package/test/r60-live-timeline.test.mjs +29 -0
- package/test/r60-reconnect-errors.test.mjs +21 -0
- package/test/r60-reconnect-jitter.test.mjs +18 -0
- package/test/r60-release-contract.test.mjs +81 -0
- package/test/r60-remote-call-recovery.test.mjs +170 -0
- package/test/r60-windows-log-decode.test.mjs +25 -0
- package/test/remote-live-log-r37.test.mjs +1 -1
- package/test/remote-session-cli.test.mjs +200 -43
- package/test/runtime-plane-registry-r59.test.mjs +40 -0
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
// This function is the one downstream-dispatch boundary used by the Bridge.
|
|
2
|
+
// A published dispatch marker precedes every call that might mutate Core.
|
|
3
|
+
const READ_ONLY_TOOLS=new Set([
|
|
4
|
+
'agent_task_events','agent_task_status','agent_task_verify',
|
|
5
|
+
'autonomous_goal_events','autonomous_goal_status','autonomous_goal_verify','autonomous_session_status',
|
|
6
|
+
'capability_manifest','coding_file_read','coding_files_read','coding_receipt_verify','coding_search',
|
|
7
|
+
'coding_session_status','coding_stat','coding_symbol_definition','coding_symbol_outline','coding_symbol_references',
|
|
8
|
+
'coding_task_events','coding_task_status','coding_task_verify','coding_tree','evidence_verify','file_read',
|
|
9
|
+
'host_file_read','machine_fs_list','machine_fs_read','machine_fs_stat','machine_list','machine_ping',
|
|
10
|
+
'machine_process_list','machine_search_page','machine_search_status','machine_status','machine_system_status',
|
|
11
|
+
'native_diff_preview','native_diff_verify','process_session_list','process_session_read','process_session_status'
|
|
12
|
+
]);
|
|
13
|
+
const MUTATING_TOOLS=new Set([
|
|
14
|
+
'agent_task_approve','agent_task_cancel','agent_task_run','agent_task_submit',
|
|
15
|
+
'autonomous_goal_approve','autonomous_goal_cancel','autonomous_goal_run','autonomous_goal_submit','autonomous_release_gate',
|
|
16
|
+
'coding_benchmark_run','coding_command_run','coding_file_write','coding_symbol_replace','coding_task_approve',
|
|
17
|
+
'coding_task_cancel','coding_task_run','coding_task_submit','coding_text_replace','contained_transform',
|
|
18
|
+
'host_exec','host_file_write','machine_fs_delete','machine_fs_edit_exact','machine_fs_mkdir','machine_fs_move',
|
|
19
|
+
'machine_fs_write','machine_revoke','machine_search_cancel','machine_search_start','native_diff_apply',
|
|
20
|
+
'process_session_action','process_session_start','process_session_terminate','proof_execute','workspace_open'
|
|
21
|
+
]);
|
|
22
|
+
const COMPACT_READ_ONLY={
|
|
23
|
+
machine_fs:new Set(['stat','list','read']),
|
|
24
|
+
process_session:new Set(['read','status','list']),
|
|
25
|
+
machine_observe:new Set(['machine_list','machine_status','machine_ping','search_page','search_status',
|
|
26
|
+
'process_list','system_status','hardware_query','registry_query','service_list','driver_list',
|
|
27
|
+
'socket_list','volume_list','usb_list','wsl_list']),
|
|
28
|
+
coding_inspect:new Set(['stat','search','files_read','symbol_outline','symbol_definition','symbol_references',
|
|
29
|
+
'symbol_diagnostics','symbol_implementations','symbol_rename_preview']),
|
|
30
|
+
desktop_control:new Set(['observe','status'])
|
|
31
|
+
};
|
|
32
|
+
const COMPACT_MUTATING={
|
|
33
|
+
machine_fs:new Set(['write','edit_exact','mkdir','move','delete']),
|
|
34
|
+
process_session:new Set(['start','write','action','terminate']),
|
|
35
|
+
machine_observe:new Set(['search_start','search_cancel']),
|
|
36
|
+
desktop_control:new Set(['target','action'])
|
|
37
|
+
};
|
|
38
|
+
|
|
39
|
+
export function classifyRemoteOperation(tool,args){
|
|
40
|
+
const name=tool?.name;
|
|
41
|
+
if(typeof name!=='string')return 'unknown';
|
|
42
|
+
if(Object.hasOwn(COMPACT_READ_ONLY,name)||Object.hasOwn(COMPACT_MUTATING,name)){
|
|
43
|
+
if(COMPACT_READ_ONLY[name]?.has(args?.op))return 'read_only';
|
|
44
|
+
if(COMPACT_MUTATING[name]?.has(args?.op))return 'mutating';
|
|
45
|
+
return 'unknown';
|
|
46
|
+
}
|
|
47
|
+
if(MUTATING_TOOLS.has(name))return 'mutating';
|
|
48
|
+
if(READ_ONLY_TOOLS.has(name))return 'read_only';
|
|
49
|
+
return 'unknown';
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
export async function dispatchBridgeCall({claims,binding,classification,signal,invoke}){
|
|
53
|
+
if(!claims||typeof claims.claim!=='function'||typeof invoke!=='function')throw new Error('remote dispatch dependencies invalid');
|
|
54
|
+
if(!['read_only','mutating','unknown'].includes(classification))throw new Error('remote dispatch classification invalid');
|
|
55
|
+
const claim=await claims.claim(binding);
|
|
56
|
+
if(claim.state==='TERMINAL')return claim.result;
|
|
57
|
+
const recoveredRead=claim.state==='INTERRUPTED'&&classification==='read_only'&&claim.side_effect_state==='none';
|
|
58
|
+
if((claim.state==='EXECUTING'||claim.state==='INTERRUPTED')&&!recoveredRead)throw new Error(`remote claim ${claim.claim_id} outcome unknown; reconcile before retry`);
|
|
59
|
+
if(claim.state!=='CLAIMED'&&!recoveredRead)throw new Error(`remote claim ${claim.claim_id} is ${claim.state}; no dispatch`);
|
|
60
|
+
if(signal?.aborted)throw new Error(`remote claim ${claim.claim_id} cancelled before dispatch`);
|
|
61
|
+
if(!recoveredRead){
|
|
62
|
+
try{await claims.dispatch(claim.claim_id);}
|
|
63
|
+
catch(error){throw new Error(`remote claim ${claim.claim_id} already in flight; no replay`,{cause:error});}
|
|
64
|
+
}
|
|
65
|
+
let result;
|
|
66
|
+
try{result=await invoke();}
|
|
67
|
+
catch(error){throw new Error(`remote claim ${claim.claim_id} outcome unknown after dispatch; no replay`,{cause:error});}
|
|
68
|
+
try{await claims.terminal(claim.claim_id,result);}
|
|
69
|
+
catch(error){
|
|
70
|
+
const existing=await claims.state(claim.claim_id);
|
|
71
|
+
if(recoveredRead&&existing.state==='TERMINAL')return existing.result;
|
|
72
|
+
throw new Error(`remote claim ${claim.claim_id} terminal publication failed; outcome unknown`,{cause:error});
|
|
73
|
+
}
|
|
74
|
+
return result;
|
|
75
|
+
}
|
|
@@ -685,11 +685,31 @@ function Stop-OwnedComponent([string]$Name) {
|
|
|
685
685
|
Remove-Item -LiteralPath (Ledger-Path $Name) -Force -ErrorAction SilentlyContinue
|
|
686
686
|
}
|
|
687
687
|
|
|
688
|
-
function
|
|
688
|
+
function Get-LocalHealth($Cfg) {
|
|
689
|
+
$response = $null
|
|
690
|
+
try {
|
|
691
|
+
$request = [System.Net.HttpWebRequest]::Create([string]$Cfg.LocalReadyUri)
|
|
692
|
+
$request.Timeout = [int]$Cfg.ProbeTimeoutSeconds * 1000
|
|
693
|
+
$request.ReadWriteTimeout = [int]$Cfg.ProbeTimeoutSeconds * 1000
|
|
694
|
+
$response = $request.GetResponse()
|
|
695
|
+
} catch [System.Net.WebException] {
|
|
696
|
+
$response = $_.Exception.Response
|
|
697
|
+
if ($null -eq $response) { return [pscustomobject]@{ State='UNREACHABLE'; StatusCode=0; Diagnostic='readiness endpoint unreachable' } }
|
|
698
|
+
} catch { return [pscustomobject]@{ State='UNREACHABLE'; StatusCode=0; Diagnostic='readiness probe failed' } }
|
|
689
699
|
try {
|
|
690
|
-
$
|
|
691
|
-
|
|
692
|
-
|
|
700
|
+
$status = [int]$response.StatusCode
|
|
701
|
+
$reader = New-Object System.IO.StreamReader($response.GetResponseStream())
|
|
702
|
+
try { $body = $reader.ReadToEnd() } finally { $reader.Dispose() }
|
|
703
|
+
try { $parsed = $body | ConvertFrom-Json } catch { return [pscustomobject]@{ State='INVALID'; StatusCode=$status; Diagnostic='readiness response JSON invalid' } }
|
|
704
|
+
if ($parsed.schema -ne 'deadbyte.bridge-health.v1' -or [string]$parsed.state -notin @('STARTING','READY','DEGRADED','RECONCILING','STOPPING')) {
|
|
705
|
+
return [pscustomobject]@{ State='INVALID'; StatusCode=$status; Diagnostic='readiness response schema invalid' }
|
|
706
|
+
}
|
|
707
|
+
return [pscustomobject]@{ State=[string]$parsed.state; StatusCode=$status; Diagnostic=[string]$parsed.diagnostic }
|
|
708
|
+
} finally { if ($null -ne $response) { $response.Dispose() } }
|
|
709
|
+
}
|
|
710
|
+
function Test-LocalReady($Cfg) {
|
|
711
|
+
$health = Get-LocalHealth $Cfg
|
|
712
|
+
return ($health.State -eq 'READY' -and $health.StatusCode -ge 200 -and $health.StatusCode -lt 300)
|
|
693
713
|
}
|
|
694
714
|
function Get-LocalReadyListenerOwners($Cfg) {
|
|
695
715
|
try { $uri = [Uri]([string]$Cfg.LocalReadyUri) } catch { Fail 'LocalReadyUri is invalid' }
|
|
@@ -719,18 +739,43 @@ function Test-LocalReadyOwned($Cfg, $Bridge) {
|
|
|
719
739
|
if ($owners.Count -ne 1 -or $owners[0] -ne [int]$Bridge.Ledger.pid) { return $false }
|
|
720
740
|
return (Test-LocalReady $Cfg)
|
|
721
741
|
}
|
|
742
|
+
function Get-LocalHealthOwned($Cfg, $Bridge) {
|
|
743
|
+
if (-not $Bridge -or -not $Bridge.Alive) { return [pscustomobject]@{ State='UNREACHABLE'; StatusCode=0; Diagnostic='bridge not alive' } }
|
|
744
|
+
$owners = @(Get-LocalReadyListenerOwners $Cfg)
|
|
745
|
+
if ($owners.Count -ne 1 -or $owners[0] -ne [int]$Bridge.Ledger.pid) { return [pscustomobject]@{ State='UNATTRIBUTED'; StatusCode=0; Diagnostic='readiness listener ownership mismatch' } }
|
|
746
|
+
return (Get-LocalHealth $Cfg)
|
|
747
|
+
}
|
|
722
748
|
|
|
723
749
|
function Get-ObservedState($Cfg) {
|
|
724
750
|
$bridge = Test-OwnedInstance 'Bridge'
|
|
725
751
|
$cloud = Test-OwnedInstance 'Cloud'
|
|
726
752
|
$core = Get-DownstreamCoreObservation $Cfg $bridge
|
|
727
|
-
$
|
|
753
|
+
$health = if ($bridge.Alive -and $core.alive) { try { Get-LocalHealthOwned $Cfg $bridge } catch { [pscustomobject]@{ State='UNREACHABLE'; StatusCode=0; Diagnostic='readiness attribution failed' } } } else { [pscustomobject]@{ State='UNREACHABLE'; StatusCode=0; Diagnostic='core not alive' } }
|
|
754
|
+
$ready = $health.State -eq 'READY'
|
|
728
755
|
$state = if (-not $bridge.Alive -and -not $cloud.Alive) { 'OFFLINE' }
|
|
729
756
|
elseif (-not $bridge.Alive -and $cloud.Alive) { 'PARKED' }
|
|
730
757
|
elseif ($bridge.Alive -and $cloud.Alive -and $ready) { 'ONLINE' }
|
|
758
|
+
elseif ($bridge.Alive -and $cloud.Alive -and $core.alive -and $health.State -eq 'DEGRADED') { 'DEGRADED' }
|
|
731
759
|
elseif ($bridge.Alive -and $core.reason -eq 'startup-zero-child') { 'STARTING' }
|
|
732
760
|
else { 'FAILED' }
|
|
733
|
-
[pscustomobject]@{ State=$state; Bridge=$bridge; Core=$core; Cloud=$cloud; LocalReady=$ready }
|
|
761
|
+
[pscustomobject]@{ State=$state; Bridge=$bridge; Core=$core; Cloud=$cloud; LocalReady=$ready; LocalHealth=$health }
|
|
762
|
+
}
|
|
763
|
+
|
|
764
|
+
function Wait-LocalOperational($Cfg) {
|
|
765
|
+
$deadline = [DateTime]::UtcNow.AddSeconds([int]$Cfg.StartTimeoutSeconds)
|
|
766
|
+
do {
|
|
767
|
+
$bridge = Test-OwnedInstance 'Bridge'
|
|
768
|
+
if (-not $bridge.Alive) { return $null }
|
|
769
|
+
$core = Get-DownstreamCoreObservation $Cfg $bridge
|
|
770
|
+
if (-not $core.alive -and $core.reason -ne 'startup-zero-child') { return $null }
|
|
771
|
+
if ($core.alive) {
|
|
772
|
+
$health = Get-LocalHealthOwned $Cfg $bridge
|
|
773
|
+
if ($health.State -in @('READY','DEGRADED')) { return $health }
|
|
774
|
+
}
|
|
775
|
+
if ([DateTime]::UtcNow -ge $deadline) { return $null }
|
|
776
|
+
Start-Sleep -Milliseconds 250
|
|
777
|
+
} while ([DateTime]::UtcNow -lt $deadline)
|
|
778
|
+
return $null
|
|
734
779
|
}
|
|
735
780
|
|
|
736
781
|
function Wait-LocalReady($Cfg) {
|
|
@@ -842,17 +887,18 @@ function Invoke-CoreGate($Cfg, [string]$ScriptName, [string[]]$ExtraArguments =
|
|
|
842
887
|
|
|
843
888
|
function Start-Deadbyte($Cfg) {
|
|
844
889
|
$state = Get-ObservedState $Cfg
|
|
845
|
-
if ($state.State -
|
|
890
|
+
if ($state.State -in @('ONLINE','DEGRADED')) { return $state }
|
|
846
891
|
if ($state.State -in @('FAILED','STARTING')) { Fail "runtime is $($state.State); inspect status and reconcile verified owned components before restart" }
|
|
847
892
|
$cloudWasAlive = [bool]$state.Cloud.Alive
|
|
848
893
|
Assert-LocalReadyPortAvailable $Cfg
|
|
849
894
|
try {
|
|
850
895
|
Start-OwnedComponent 'Bridge' $Cfg.Bridge $Cfg | Out-Null
|
|
851
|
-
|
|
896
|
+
$localHealth = Wait-LocalOperational $Cfg
|
|
897
|
+
if ($null -eq $localHealth) { Fail 'bridge started but owned local readiness gate failed' }
|
|
852
898
|
Start-OwnedComponent 'Cloud' $Cfg.Cloud $Cfg | Out-Null
|
|
853
899
|
if (-not (Wait-CurrentUrl $Cfg)) { Fail 'public endpoint metadata did not become available before timeout' }
|
|
854
900
|
$final = Get-ObservedState $Cfg
|
|
855
|
-
if ($final.State -
|
|
901
|
+
if ($final.State -notin @('ONLINE','DEGRADED')) { Fail "start gate failed: observed $($final.State)" }
|
|
856
902
|
return $final
|
|
857
903
|
} catch {
|
|
858
904
|
try { Stop-OwnedComponent 'Bridge' } catch {}
|
|
@@ -879,6 +925,18 @@ function Stop-Deadbyte($Cfg) {
|
|
|
879
925
|
return $s
|
|
880
926
|
}
|
|
881
927
|
|
|
928
|
+
function Assert-PolicyRootsAvailable($Policy, [string]$Plane) {
|
|
929
|
+
$rootIds = @($Policy.roots.PSObject.Properties.Name)
|
|
930
|
+
if ($rootIds.Count -lt 1) { Fail "$Plane policy requires at least one root" }
|
|
931
|
+
foreach ($rootId in $rootIds) {
|
|
932
|
+
$raw = [string]$Policy.roots.$rootId.path
|
|
933
|
+
if ([string]::IsNullOrWhiteSpace($raw)) { Fail "$Plane policy root '$rootId' path missing" }
|
|
934
|
+
try { $full = [System.IO.Path]::GetFullPath($raw) } catch { Fail "$Plane policy root '$rootId' path invalid" }
|
|
935
|
+
if (-not (Test-Path -LiteralPath $full -PathType Container)) { Fail "$Plane policy root '$rootId' missing: $full" }
|
|
936
|
+
}
|
|
937
|
+
return $rootIds
|
|
938
|
+
}
|
|
939
|
+
|
|
882
940
|
function Get-HostPolicyMetadata($Cfg) {
|
|
883
941
|
if ([string]::IsNullOrWhiteSpace([string]$Cfg.HostPolicyFile)) { Fail 'privileged host plane is not configured' }
|
|
884
942
|
$policyPath = [string]$Cfg.HostPolicyFile
|
|
@@ -888,6 +946,7 @@ function Get-HostPolicyMetadata($Cfg) {
|
|
|
888
946
|
$armFile = [System.IO.Path]::GetFullPath([string]$policy.arm_file)
|
|
889
947
|
$runtimeReal = [System.IO.Path]::GetFullPath($RuntimeDir).TrimEnd('\') + '\'
|
|
890
948
|
if (-not $armFile.StartsWith($runtimeReal, [System.StringComparison]::OrdinalIgnoreCase)) { Fail 'host policy arm_file must live under controller runtime directory' }
|
|
949
|
+
Assert-PolicyRootsAvailable $policy 'host' | Out-Null
|
|
891
950
|
[pscustomobject]@{
|
|
892
951
|
Path = $policyPath
|
|
893
952
|
Sha256 = Get-ExecutableHash $policyPath
|
|
@@ -950,7 +1009,7 @@ function Get-ProcessPolicyMetadata($Cfg) {
|
|
|
950
1009
|
$runtimeReal = [System.IO.Path]::GetFullPath($RuntimeDir).TrimEnd('\') + '\'
|
|
951
1010
|
if (-not $grantFile.StartsWith($runtimeReal, [System.StringComparison]::OrdinalIgnoreCase)) { Fail 'process policy grant_file must live under controller runtime directory' }
|
|
952
1011
|
$profileIds = @($policy.profiles.PSObject.Properties.Name)
|
|
953
|
-
$rootIds = @($policy
|
|
1012
|
+
$rootIds = @(Assert-PolicyRootsAvailable $policy 'process')
|
|
954
1013
|
if ($profileIds.Count -lt 1 -or $rootIds.Count -lt 1) { Fail 'process policy requires profiles and roots' }
|
|
955
1014
|
[pscustomobject]@{ Path=$policyPath; Sha256=Get-ExecutableHash $policyPath; GrantFile=$grantFile; ProfileIds=$profileIds; RootIds=$rootIds }
|
|
956
1015
|
}
|
|
@@ -1010,8 +1069,7 @@ function Get-CodingPolicyMetadata($Cfg) {
|
|
|
1010
1069
|
$leaseFile = [System.IO.Path]::GetFullPath([string]$policy.lease_file)
|
|
1011
1070
|
$runtimeReal = [System.IO.Path]::GetFullPath($RuntimeDir).TrimEnd('\') + '\'
|
|
1012
1071
|
if (-not $leaseFile.StartsWith($runtimeReal, [System.StringComparison]::OrdinalIgnoreCase)) { Fail 'coding policy lease_file must live under controller runtime directory' }
|
|
1013
|
-
$rootIds = @($policy
|
|
1014
|
-
if ($rootIds.Count -lt 1) { Fail 'coding policy requires at least one root' }
|
|
1072
|
+
$rootIds = @(Assert-PolicyRootsAvailable $policy 'coding')
|
|
1015
1073
|
[pscustomobject]@{ Path=$policyPath; Sha256=Get-ExecutableHash $policyPath; LeaseFile=$leaseFile; RootIds=$rootIds }
|
|
1016
1074
|
}
|
|
1017
1075
|
|
|
@@ -1374,7 +1432,12 @@ function Invoke-MachineSmoke($Cfg) {
|
|
|
1374
1432
|
$url = Get-CurrentUrl $Cfg
|
|
1375
1433
|
if (-not $url) { Fail 'public MCP URL unavailable' }
|
|
1376
1434
|
Wait-PublicDnsReady $Cfg $url
|
|
1377
|
-
|
|
1435
|
+
$probeArgs = @($url)
|
|
1436
|
+
if (-not [string]::IsNullOrWhiteSpace([string]$env:DEADBYTE_REMOTE_PROBE_MODE)) {
|
|
1437
|
+
if ([string]$env:DEADBYTE_REMOTE_PROBE_MODE -notin @('default','desktop','host','full','revoked')) { Fail 'invalid remote enforcement probe mode' }
|
|
1438
|
+
$probeArgs += [string]$env:DEADBYTE_REMOTE_PROBE_MODE
|
|
1439
|
+
}
|
|
1440
|
+
Invoke-CoreGate $Cfg 'remote-mcp-machine-smoke-client.mjs' $probeArgs
|
|
1378
1441
|
Write-Host 'MACHINE IDENTITY LIVE GATE PASS: public status/list + SPKI identity + signed Ed25519 ping verified.'
|
|
1379
1442
|
}
|
|
1380
1443
|
|
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema": "deadbyte.process-policy.v1",
|
|
3
3
|
"enabled": true,
|
|
4
|
-
"grant_file": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.
|
|
5
|
-
"state_dir": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.
|
|
4
|
+
"grant_file": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.37-r60\\controller\\runtime\\process-grant.json",
|
|
5
|
+
"state_dir": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.37-r60\\controller\\runtime\\process-state",
|
|
6
6
|
"native_host": {
|
|
7
|
-
"path": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.
|
|
7
|
+
"path": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.37-r60\\bin\\deadbyte-process-host.exe",
|
|
8
8
|
"sha256": "daf9cfb371bee88cafbf5597eaa507fec504dbe0b0ddd40d0c3c2e02817f49e4"
|
|
9
9
|
},
|
|
10
10
|
"roots": {
|
|
11
11
|
"core": {
|
|
12
|
-
"path": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.
|
|
12
|
+
"path": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.37-r60",
|
|
13
13
|
"deny_paths": [
|
|
14
14
|
"node_modules",
|
|
15
15
|
"controller/runtime",
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "deadbyte.provenance.v1",
|
|
3
|
+
"version": "0.15.36",
|
|
4
|
+
"source_model": "exact published and production-accepted 0.15.35 artifact -\u003e isolated R59 candidate -\u003e optional-plane degraded availability -\u003e runtime capability snapshot v3 -\u003e bounded Bridge Core reconciliation with no mutation replay -\u003e controller root preflight -\u003e fresh full regression/package/public frontdoor gates -\u003e operator-authorized publication with four-hour soak and clean-machine explicitly not completed -\u003e production activation/rollback/restore",
|
|
5
|
+
"signing": "ed25519",
|
|
6
|
+
"parent_tarball_sha256": "8259e30946d28dd138c1e2ce2f483fe1370d1658544f2adbfebafa4db8875bba",
|
|
7
|
+
"parent_activation_status": "PRODUCTION_ACCEPTED_WITH_SIGNED_ROLLBACK_AND_RESTORE",
|
|
8
|
+
"parent_rollback_receipt_sha256": "2f8aa5784fe6629c25af776b247b22b8e84d1a51c3420339ddd7a7445cf6ff9b",
|
|
9
|
+
"runtime_predecessor": {
|
|
10
|
+
"release_id": "v0.15.35-1b5715b276facbc0",
|
|
11
|
+
"manifest_sha256": "1b5715b276facbc00f8e341a554472cb4829e5af60e221c357c41b66053af9d4",
|
|
12
|
+
"generation_manifest_sha256": "047e73b62d7b7819b84201a221a09b7e647cacf21f82101ebed4fbd7e23fc430"
|
|
13
|
+
},
|
|
14
|
+
"source_predecessor_tarball_sha256": "8259e30946d28dd138c1e2ce2f483fe1370d1658544f2adbfebafa4db8875bba",
|
|
15
|
+
"source_predecessor_manifest_file_sha256": "1b5715b276facbc00f8e341a554472cb4829e5af60e221c357c41b66053af9d4",
|
|
16
|
+
"reproducibility": "0.15.35 remains immutable production authority while R59 is developed in D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.36-r59. Publication is operator-authorized with four-hour soak and clean-machine truth preserved as NOT_COMPLETED; no stable/final claim is permitted.",
|
|
17
|
+
"public_surface_evidence": {
|
|
18
|
+
"status": "PASS",
|
|
19
|
+
"baseline_release": "v0.15.35-1b5715b276facbc0",
|
|
20
|
+
"tool_count": 43,
|
|
21
|
+
"unchanged": 43,
|
|
22
|
+
"added": 0,
|
|
23
|
+
"removed": 0,
|
|
24
|
+
"schema_changed": 0,
|
|
25
|
+
"surface_sha256": "8e98978b720633acb0c7d4d65c36a945243c47f6dbccfa64ab877329f2956fe3",
|
|
26
|
+
"evidence_receipt_sha256": "2d3adcc33d010c4977974971222e6b13d613ff268097fff0eec0113e4f82f281"
|
|
27
|
+
},
|
|
28
|
+
"fresh_full_regression": {
|
|
29
|
+
"status": "PENDING_R59_AFTER_RELEASE_IDENTITY_CUT",
|
|
30
|
+
"proof_path": "proof/r59-full-regression-current.json"
|
|
31
|
+
},
|
|
32
|
+
"inherited_r58_consolidation": {
|
|
33
|
+
"frontend_status_vocabulary": true,
|
|
34
|
+
"read_only_structured_status": true,
|
|
35
|
+
"doctor_read_only_installation_runtime_transaction_checks": true,
|
|
36
|
+
"stale_foreground_identity_hardening": true,
|
|
37
|
+
"bridge_bundled_inside_release": true,
|
|
38
|
+
"bridge_recursive_local_dependency_binding": true,
|
|
39
|
+
"bridge_dynamic_relative_import_fail_closed": true,
|
|
40
|
+
"bridge_path_escape_fail_closed": true,
|
|
41
|
+
"isolated_controller_bridge_core_lifecycle": "PASS",
|
|
42
|
+
"performance_acceptance": "PASS_BOUNDED_PREPUBLISH",
|
|
43
|
+
"fresh_full_regression": "PASS",
|
|
44
|
+
"package_acceptance": "PENDING",
|
|
45
|
+
"registry_round_trip": "PENDING",
|
|
46
|
+
"production_activation_rollback_restore": "PENDING",
|
|
47
|
+
"stable_final_claim": false,
|
|
48
|
+
"cross_plane_acceptance": "PASS",
|
|
49
|
+
"public_surface_compatibility": "PASS_43_TOOLS_NO_SCHEMA_DRIFT"
|
|
50
|
+
},
|
|
51
|
+
"r59_runtime_hardening": {
|
|
52
|
+
"optional_plane_degradation": true,
|
|
53
|
+
"stable_tool_registration_on_optional_failure": true,
|
|
54
|
+
"capability_manifest_v3": true,
|
|
55
|
+
"live_overlay_authority_ceiling": true,
|
|
56
|
+
"bridge_bounded_reconciliation": true,
|
|
57
|
+
"bridge_health_requires_fresh_child_catalog_capability_attestation": true,
|
|
58
|
+
"mutation_unknown_outcome_no_replay": true,
|
|
59
|
+
"read_only_retry_only_before_dispatch": true,
|
|
60
|
+
"cancellation_aware_governor": true,
|
|
61
|
+
"controller_policy_root_preflight": true,
|
|
62
|
+
"public_surface_compatibility": "PASS_43_TOOLS_NO_SCHEMA_DRIFT",
|
|
63
|
+
"frontdoor_signed_ping": "PASS",
|
|
64
|
+
"four_hour_soak": "NOT_COMPLETED",
|
|
65
|
+
"clean_machine": "NOT_COMPLETED",
|
|
66
|
+
"stable_final_claim": false
|
|
67
|
+
},
|
|
68
|
+
"inherited_parent_performance_evidence": {
|
|
69
|
+
"summary_path": "D:\\Projects\\deadbyte-mcp\\testing\\0.15.35\\performance-summary.json",
|
|
70
|
+
"summary_sha256": "4586d8462ce1ae643d255315d4b4febfdd3f731dd8728e4b37b5636b622b756c",
|
|
71
|
+
"bridge_candidate_first_p95_reduction_pct": 63.632445348471286,
|
|
72
|
+
"bridge_baseline_first_p95_reduction_pct": 43.06594367803213,
|
|
73
|
+
"stdio_aggregate_p95_delta_pct": 1.984392678457768,
|
|
74
|
+
"limitations_preserved": true
|
|
75
|
+
},
|
|
76
|
+
"builder": "deadbyte-r59-resilient-runtime",
|
|
77
|
+
"parent_release_id": "v0.15.35-1b5715b276facbc0",
|
|
78
|
+
"parent_manifest_sha256": "1b5715b276facbc00f8e341a554472cb4829e5af60e221c357c41b66053af9d4",
|
|
79
|
+
"parent_generation_manifest_sha256": "047e73b62d7b7819b84201a221a09b7e647cacf21f82101ebed4fbd7e23fc430",
|
|
80
|
+
"source_predecessor_version": "0.15.35",
|
|
81
|
+
"operator_override": {
|
|
82
|
+
"four_hour_soak": "WAIVED_BY_OPERATOR",
|
|
83
|
+
"clean_machine": "WAIVED_BY_OPERATOR",
|
|
84
|
+
"reason": "Operator explicitly requested immediate deployment without further testing.",
|
|
85
|
+
"stable_final_claim": false
|
|
86
|
+
}
|
|
87
|
+
}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
{
|
|
2
|
+
"schema": "deadbyte.release.v1",
|
|
3
|
+
"name": "deadbyte-mcp",
|
|
4
|
+
"version": "0.15.36",
|
|
5
|
+
"train": "R59",
|
|
6
|
+
"label": "RESILIENT CORE BRIDGE CAPABILITY RUNTIME",
|
|
7
|
+
"protocol_revision": "2026-07-28",
|
|
8
|
+
"parent": {
|
|
9
|
+
"version": "0.15.35",
|
|
10
|
+
"release_id": "v0.15.35-1b5715b276facbc0",
|
|
11
|
+
"manifest_sha256": "1b5715b276facbc00f8e341a554472cb4829e5af60e221c357c41b66053af9d4",
|
|
12
|
+
"generation_manifest_sha256": "047e73b62d7b7819b84201a221a09b7e647cacf21f82101ebed4fbd7e23fc430",
|
|
13
|
+
"tarball_sha256": "8259e30946d28dd138c1e2ce2f483fe1370d1658544f2adbfebafa4db8875bba",
|
|
14
|
+
"activation_status": "PRODUCTION_ACCEPTED_WITH_SIGNED_ROLLBACK_AND_RESTORE"
|
|
15
|
+
},
|
|
16
|
+
"runtime_predecessor": {
|
|
17
|
+
"release_id": "v0.15.35-1b5715b276facbc0",
|
|
18
|
+
"manifest_sha256": "1b5715b276facbc00f8e341a554472cb4829e5af60e221c357c41b66053af9d4",
|
|
19
|
+
"generation_manifest_sha256": "047e73b62d7b7819b84201a221a09b7e647cacf21f82101ebed4fbd7e23fc430"
|
|
20
|
+
},
|
|
21
|
+
"source_predecessor": {
|
|
22
|
+
"version": "0.15.35",
|
|
23
|
+
"tarball_sha256": "8259e30946d28dd138c1e2ce2f483fe1370d1658544f2adbfebafa4db8875bba",
|
|
24
|
+
"manifest_file_sha256": "1b5715b276facbc00f8e341a554472cb4829e5af60e221c357c41b66053af9d4"
|
|
25
|
+
},
|
|
26
|
+
"consolidation": {
|
|
27
|
+
"frontend_status_vocabulary": true,
|
|
28
|
+
"read_only_structured_status": true,
|
|
29
|
+
"doctor_read_only_installation_runtime_transaction_checks": true,
|
|
30
|
+
"stale_foreground_identity_hardening": true,
|
|
31
|
+
"bridge_bundled_inside_release": true,
|
|
32
|
+
"bridge_recursive_local_dependency_binding": true,
|
|
33
|
+
"bridge_dynamic_relative_import_fail_closed": true,
|
|
34
|
+
"bridge_path_escape_fail_closed": true,
|
|
35
|
+
"isolated_controller_bridge_core_lifecycle": "PASS",
|
|
36
|
+
"performance_acceptance": "PASS_BOUNDED_PREPUBLISH",
|
|
37
|
+
"fresh_full_regression": "PASS",
|
|
38
|
+
"package_acceptance": "PENDING_R59_FINAL",
|
|
39
|
+
"registry_round_trip": "PENDING",
|
|
40
|
+
"production_activation_rollback_restore": "PENDING",
|
|
41
|
+
"stable_final_claim": false,
|
|
42
|
+
"cross_plane_acceptance": "PASS",
|
|
43
|
+
"public_surface_compatibility": "PASS_43_TOOLS_NO_SCHEMA_DRIFT"
|
|
44
|
+
},
|
|
45
|
+
"stabilization": {
|
|
46
|
+
"semver_strict_validation": true,
|
|
47
|
+
"powershell_child_environment_normalized": true,
|
|
48
|
+
"explicit_state_root_propagation": true,
|
|
49
|
+
"guardian_cleanup_fail_closed": true,
|
|
50
|
+
"local_isolated_state_acceptance": "PASS",
|
|
51
|
+
"full_regression": "PASS",
|
|
52
|
+
"four_hour_soak": "WAIVED_BY_OPERATOR",
|
|
53
|
+
"clean_machine": "WAIVED_BY_OPERATOR",
|
|
54
|
+
"stable_final_claim": false
|
|
55
|
+
},
|
|
56
|
+
"platform": {
|
|
57
|
+
"primary": "win32",
|
|
58
|
+
"architectures": [
|
|
59
|
+
"x64"
|
|
60
|
+
]
|
|
61
|
+
},
|
|
62
|
+
"capabilities": {
|
|
63
|
+
"host_execution_modes": [
|
|
64
|
+
"script",
|
|
65
|
+
"inline",
|
|
66
|
+
"native"
|
|
67
|
+
],
|
|
68
|
+
"hardware_queries": [
|
|
69
|
+
"cpu",
|
|
70
|
+
"gpu",
|
|
71
|
+
"memory",
|
|
72
|
+
"storage",
|
|
73
|
+
"network",
|
|
74
|
+
"pci"
|
|
75
|
+
],
|
|
76
|
+
"compact_tool_count": 43,
|
|
77
|
+
"full_tool_count": 117,
|
|
78
|
+
"full_tool_catalog": {
|
|
79
|
+
"path": "docs/R49-FULL-TOOL-CATALOG.json",
|
|
80
|
+
"base_sha256": "259fdc97a24575aff3f094911b5e86e4f512b07be7c2cc1286b0fd200d03a8c9"
|
|
81
|
+
},
|
|
82
|
+
"historical_r46_full_tool_count": 84,
|
|
83
|
+
"commander_reference_public_tool_count": 26,
|
|
84
|
+
"commander_additive_tool_count": 14,
|
|
85
|
+
"commander_drop_in": true,
|
|
86
|
+
"commander_rich_pdf": true,
|
|
87
|
+
"commander_incremental_pdf_revisions": true,
|
|
88
|
+
"commander_docx": true,
|
|
89
|
+
"commander_docx_header_footer_search": true,
|
|
90
|
+
"commander_xlsx": true,
|
|
91
|
+
"commander_url_read": true,
|
|
92
|
+
"commander_external_process_identity": true,
|
|
93
|
+
"commander_directory_read_fallback": true,
|
|
94
|
+
"commander_binary_detection": true,
|
|
95
|
+
"commander_protocol_adversarial": true,
|
|
96
|
+
"atomic_mutation_unknown_effect": true,
|
|
97
|
+
"package_slot_version_coherence": true,
|
|
98
|
+
"pid_reuse_self_recovery": true,
|
|
99
|
+
"bounded_controller_failure_evidence": true,
|
|
100
|
+
"durable_task_events_preserve_signed_envelope": true,
|
|
101
|
+
"capability_manifest_authority_truth": true,
|
|
102
|
+
"capability_manifest_host_grant_truth": true,
|
|
103
|
+
"process_profiles": [
|
|
104
|
+
"ping_hold",
|
|
105
|
+
"powershell",
|
|
106
|
+
"powershell_repl"
|
|
107
|
+
],
|
|
108
|
+
"powershell_fileless": true,
|
|
109
|
+
"powershell_source_max_arg_bytes": 8192,
|
|
110
|
+
"powershell_persistent_repl": true,
|
|
111
|
+
"process_raw_input_profile_opt_in": true,
|
|
112
|
+
"process_tail_reads": true,
|
|
113
|
+
"process_wait_reads": true,
|
|
114
|
+
"process_chunked_output_ring": true,
|
|
115
|
+
"remote_reachability_ttl": true,
|
|
116
|
+
"remote_probe_timeout_retry": true,
|
|
117
|
+
"remote_dispatch_timeout_no_retry": true,
|
|
118
|
+
"observation_search_session_ttl": true,
|
|
119
|
+
"observation_search_session_cap": 128,
|
|
120
|
+
"windows_queries": [
|
|
121
|
+
"registry",
|
|
122
|
+
"services",
|
|
123
|
+
"drivers",
|
|
124
|
+
"sockets",
|
|
125
|
+
"volumes",
|
|
126
|
+
"usb",
|
|
127
|
+
"wsl"
|
|
128
|
+
],
|
|
129
|
+
"machine_fs_list_entry_fault_isolation": true,
|
|
130
|
+
"native_windows_observation": true,
|
|
131
|
+
"desktop_bounded_semantic_wait": true,
|
|
132
|
+
"desktop_wait_signed_final_observation": true,
|
|
133
|
+
"desktop_wait_autonomous_goal_binding": true,
|
|
134
|
+
"native_windows_observer_sha256": "c9b46fc497b55b8f0ad1564c8e15f9c1cdf2a07f206b3c8fa7966c892058e920",
|
|
135
|
+
"human_livelog_visual_opcode": true,
|
|
136
|
+
"human_livelog_absolute_root_paths": true,
|
|
137
|
+
"human_livelog_trace_span": true,
|
|
138
|
+
"human_livelog_presentation_filter": true,
|
|
139
|
+
"human_livelog_tty_in_place_rewrite": true,
|
|
140
|
+
"human_livelog_expanded_summary": true,
|
|
141
|
+
"runtime_package_auto_coherence": true,
|
|
142
|
+
"coding_command_singleflight": true,
|
|
143
|
+
"coding_command_result_dedup_cache": true,
|
|
144
|
+
"foreground_desktop_host_fail_closed": true,
|
|
145
|
+
"human_livelog_slow_call_marker": true,
|
|
146
|
+
"human_livelog_peak_inflight": true,
|
|
147
|
+
"human_livelog_bounded_discovery": true,
|
|
148
|
+
"human_livelog_single_parse": true,
|
|
149
|
+
"offline_predecessor_host_revoke_before_capture": true,
|
|
150
|
+
"offline_recovery_self_process_exclusion": true,
|
|
151
|
+
"offline_recovery_foreground_guardian_family_exclusion": true,
|
|
152
|
+
"signed_rollback_launcher_snapshot_restore": true,
|
|
153
|
+
"bounded_core_startup_discovery": true,
|
|
154
|
+
"bundled_release_bridge": true,
|
|
155
|
+
"bridge_recursive_dependency_binding": true,
|
|
156
|
+
"doctor_read_only_diagnostics": true,
|
|
157
|
+
"coherent_structured_status": true,
|
|
158
|
+
"optional_plane_degradation": true,
|
|
159
|
+
"capability_manifest_v3": true,
|
|
160
|
+
"bridge_bounded_reconciliation": true,
|
|
161
|
+
"mutation_unknown_outcome_no_replay": true,
|
|
162
|
+
"controller_policy_root_preflight": true
|
|
163
|
+
},
|
|
164
|
+
"r59_runtime_hardening": {
|
|
165
|
+
"optional_plane_degradation": true,
|
|
166
|
+
"stable_tool_registration_on_optional_failure": true,
|
|
167
|
+
"capability_manifest_v3": true,
|
|
168
|
+
"live_overlay_authority_ceiling": true,
|
|
169
|
+
"bridge_bounded_reconciliation": true,
|
|
170
|
+
"bridge_health_requires_fresh_child_catalog_capability_attestation": true,
|
|
171
|
+
"mutation_unknown_outcome_no_replay": true,
|
|
172
|
+
"read_only_retry_only_before_dispatch": true,
|
|
173
|
+
"cancellation_aware_governor": true,
|
|
174
|
+
"controller_policy_root_preflight": true,
|
|
175
|
+
"public_surface_compatibility": "PASS_43_TOOLS_NO_SCHEMA_DRIFT",
|
|
176
|
+
"frontdoor_signed_ping": "PASS",
|
|
177
|
+
"four_hour_soak": "NOT_COMPLETED",
|
|
178
|
+
"clean_machine": "NOT_COMPLETED",
|
|
179
|
+
"stable_final_claim": false
|
|
180
|
+
},
|
|
181
|
+
"operator_override": {
|
|
182
|
+
"four_hour_soak": "WAIVED_BY_OPERATOR",
|
|
183
|
+
"clean_machine": "WAIVED_BY_OPERATOR",
|
|
184
|
+
"reason": "Operator explicitly requested immediate deployment without further testing.",
|
|
185
|
+
"stable_final_claim": false
|
|
186
|
+
}
|
|
187
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
{
|
|
2
|
+
"bomFormat": "CycloneDX",
|
|
3
|
+
"specVersion": "1.6",
|
|
4
|
+
"serialNumber": "urn:cdx:deadbyte-mcp:r59:0.15.36",
|
|
5
|
+
"version": 1,
|
|
6
|
+
"metadata": {
|
|
7
|
+
"component": {
|
|
8
|
+
"type": "application",
|
|
9
|
+
"name": "deadbyte-mcp",
|
|
10
|
+
"version": "0.15.36"
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
"components": [
|
|
14
|
+
{
|
|
15
|
+
"type": "library",
|
|
16
|
+
"name": "@modelcontextprotocol/client",
|
|
17
|
+
"version": "2.1.0"
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
"type": "library",
|
|
21
|
+
"name": "@modelcontextprotocol/server",
|
|
22
|
+
"version": "2.1.0"
|
|
23
|
+
},
|
|
24
|
+
{
|
|
25
|
+
"type": "library",
|
|
26
|
+
"name": "typescript",
|
|
27
|
+
"version": "5.9.3"
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
"type": "library",
|
|
31
|
+
"name": "zod",
|
|
32
|
+
"version": "4.4.3"
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
"type": "file",
|
|
36
|
+
"name": "deadbyte-hardware-observer-r45.exe",
|
|
37
|
+
"version": "0.15.36",
|
|
38
|
+
"hashes": [
|
|
39
|
+
{
|
|
40
|
+
"alg": "SHA-256",
|
|
41
|
+
"content": "c9b46fc497b55b8f0ad1564c8e15f9c1cdf2a07f206b3c8fa7966c892058e920"
|
|
42
|
+
}
|
|
43
|
+
]
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"type": "file",
|
|
47
|
+
"name": "deadbyte-r59-bundled-bridge",
|
|
48
|
+
"version": "0.15.36",
|
|
49
|
+
"hashes": [
|
|
50
|
+
{
|
|
51
|
+
"alg": "SHA-256",
|
|
52
|
+
"content": "32aa34687e26e37a1ad6b34245b37aa1c7523ce216225a2d189fed4f6c4ff346"
|
|
53
|
+
}
|
|
54
|
+
]
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"type": "file",
|
|
58
|
+
"name": "deadbyte-r59-node-http-adapter",
|
|
59
|
+
"version": "0.15.36",
|
|
60
|
+
"hashes": [
|
|
61
|
+
{
|
|
62
|
+
"alg": "SHA-256",
|
|
63
|
+
"content": "281985edd717b991d78fe1853057a6a6cbf6fc5b57cab48ed8444b09b15dcd6e"
|
|
64
|
+
}
|
|
65
|
+
]
|
|
66
|
+
}
|
|
67
|
+
]
|
|
68
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# R59 Task Contract
|
|
2
|
+
|
|
3
|
+
- TASK_ID: deadbyte-r59-robust-runtime
|
|
4
|
+
- OBJECTIVE: Produce backward-compatible DEADBYTE MCP 0.15.36 with fault-isolated optional planes, live capability snapshots, resilient Bridge/Core lifecycle, and verified direct-cloudflared frontdoor operation.
|
|
5
|
+
- ACTIVE_SKILL: implement-controlled-software-changes; final verification uses verify-production-implementation without repair authority.
|
|
6
|
+
- LEAD_ROLE: runtime implementation
|
|
7
|
+
- REVIEW_ROLES: independent release verifier after the candidate is frozen
|
|
8
|
+
- SOURCES: owner-approved 0.15.35 to 0.15.36 plan; exact 0.15.35 tarball SHA-256 `8259e30946d28dd138c1e2ce2f483fe1370d1658544f2adbfebafa4db8875bba`; sealed parent manifest `1b5715b276facbc00f8e341a554472cb4829e5af60e221c357c41b66053af9d4`
|
|
9
|
+
- FIXED: existing public tool names/counts/input contracts; authority planes; no Wrangler; no generic shell/PID/executable/stdin authority; no mutation of sealed 0.15.35 bytes
|
|
10
|
+
- TARGETS: Core initialization, capability resolver/manifest, bundled Bridge/governor, controller diagnostics, frontdoor verification and release evidence
|
|
11
|
+
- BOUNDS: optional configured planes may degrade independently; signed ledger remains the authority ceiling; no transparent replay after dispatch
|
|
12
|
+
- CLASS_2_DISCRETION: bounded retry/backoff/TTL values inside owner-approved limits, reversible and test-bound
|
|
13
|
+
- CLASS_3_DISCRETION: internal module boundaries, helper names and test organization
|
|
14
|
+
- PROHIBITED: dynamic plugin loading; authority widening; Host/Desktop auto-arm; in-place production edits; Wrangler transport
|
|
15
|
+
- METHOD_LOCK: direct cloudflared frontdoor; state-machine Bridge/Core lifecycle; signed static capability ceiling with live reducing overlay; status METHOD_CLOSED by owner instruction
|
|
16
|
+
- PRODUCTION_LINEAGE: source parent 0.15.35 tarball; delivery target npm `deadbyte-mcp@0.15.36`; runtime representation signed release/generation slot
|
|
17
|
+
- DEPENDENCIES: Node.js/PowerShell/MSVC already pinned by the parent; no new dependencies
|
|
18
|
+
- CAPABILITY_CONTEXT: local Windows host with D: isolated test state; npm and production activation only after deterministic gates
|
|
19
|
+
- ASSURANCE_MODE: HIGH_RISK
|
|
20
|
+
- TESTS: focused RED/GREEN, full regression, Windows gate, isolated acceptance, four-hour soak, registry round-trip, activation/rollback/restore
|
|
21
|
+
- ACCEPTANCE_ORACLES: actual MCP protocol/catalog, Ed25519 ping verification, OS process identity, protected hashes, npm registry bytes and independent receipt verifier
|
|
22
|
+
- ACCEPTANCE_ENVIRONMENT: current production Windows host with isolated D: state; clean-machine proof is not claimed
|
|
23
|
+
- PASS_CONDITION: every mandatory gate passes with fresh evidence and final authority is disarmed
|
|
24
|
+
- STOP_CONDITION: protected parent bytes drift, authority widens, unknown mutation is replayed, mandatory gate fails, or credentials/human authentication are required
|
|
25
|
+
- ROLLBACK: exact signed 0.15.35 pointer plus owned compatibility junction
|
|
26
|
+
|