deadbyte-mcp 0.15.60 → 0.15.62
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 +90 -42
- package/PROVENANCE.json +33 -14
- package/README.txt +18 -18
- package/RELEASE.json +45 -16
- package/SBOM.cdx.json +2 -2
- package/TEST-MATRIX.json +24 -2
- package/bridge/package.json +1 -1
- package/controller/deadbyte-controller.ps1 +78 -1
- package/controller/deadbyte-process-policy.json +4 -4
- package/docs/R156-LOOP-AND-EPOCH-ROUTING.md +86 -0
- package/docs/R157-ARCHITECTURE-DEPENDENCIES.md +58 -0
- package/docs/R157-ARCHITECTURE-GRAPH.json +2874 -0
- package/docs/R157-ENGINEERING-HANDOFF.md +71 -0
- package/docs/R157-FILE-DELTA.json +80 -0
- package/docs/R157-FOCUSED-VERIFICATION.log +0 -0
- package/docs/R157-REFERENCE-CAPABILITY-MATRIX.md +207 -0
- package/docs/R157-REFERENCE-DECISIONS.md +46 -0
- package/docs/R157-REFERENCE-INVENTORY.json +2849 -0
- package/docs/R158-COMBINED-REGRESSION.log +0 -0
- package/docs/R158-DELTA.json +80 -0
- package/docs/R158-EPOCH-BOOTSTRAP-GREEN.log +0 -0
- package/docs/R158-EPOCH-BOOTSTRAP-RED.log +0 -0
- package/docs/R158-EPOCH-IDENTITY-RED.log +0 -0
- package/docs/R158-FOCUSED-GREEN.log +0 -0
- package/docs/R158-PROTECTED-EPOCH-VERIFIED.md +43 -0
- package/docs/R158-PROTECTED-EXACT-SOURCE-LIVE.log +0 -0
- package/docs/R158-UPDATER-REGRESSION.log +0 -0
- package/docs/R159-COMPLETED-HISTORY-BACKUP/deadbyte-cli.mjs.before +965 -0
- package/docs/R159-COMPLETED-HISTORY-BACKUP/legacy-marker-evidence-r159.mjs.before +102 -0
- package/docs/R159-COMPLETED-HISTORY-BACKUP/r159-legacy-marker-evidence.test.mjs.before +79 -0
- package/docs/R159-COMPLETED-HISTORY-PATCH.json +26 -0
- package/docs/R159-MARKER-LOCATOR-CHECKPOINT.md +46 -0
- package/docs/R160-ENGINEERING-HANDOFF.md +32 -0
- package/docs/R160-REFERENCE-CAPABILITY-MATRIX.json +165 -0
- package/package.json +2 -2
- package/scripts/bootstrap-uac-migration-r153.ps1 +17 -5
- package/scripts/deploy-r48.mjs +7 -6
- package/scripts/gate-windows-r160.ps1 +57 -0
- package/scripts/issue-uac-migration-r153.mjs +12 -5
- package/scripts/npm-release-r48.mjs +5 -0
- package/scripts/npm-release-readiness-r163.mjs +67 -0
- package/scripts/r153-prepublish-identity.mjs +3 -3
- package/scripts/request-uac-migration-r153.ps1 +17 -4
- package/scripts/verify-protected-stage-r153.mjs +1 -0
- package/src/autonomous-supervisor.mjs +21 -4
- package/src/clean-activation-recovery-r153.mjs +1 -1
- package/src/deadbyte-cli.mjs +83 -60
- package/src/host-command-pins-r154.mjs +34 -0
- package/src/legacy-marker-evidence-r159.mjs +128 -0
- package/src/package-identity-r160.mjs +61 -0
- package/src/release-generation.mjs +13 -0
- package/src/release-slot.mjs +2 -1
- package/src/remote-live-log.mjs +30 -2
- package/src/runtime-update.mjs +18 -6
- package/src/trusted-epoch-bootstrap-r158.mjs +42 -0
- package/src/uac-approval-contract-r153.mjs +6 -3
- package/src/version.mjs +1 -1
- package/src/windows-powershell-environment.mjs +5 -2
- package/test/r106-trusted-powershell-spawn.test.mjs +1 -0
- package/test/r130-release-security-contract.test.mjs +9 -9
- package/test/r132-release-identity.test.mjs +8 -10
- package/test/r153-clean-activation-recovery.test.mjs +2 -2
- package/test/r153-prepublish-identity.test.mjs +26 -5
- package/test/r153-r65-signed-precondition-recovery.test.mjs +2 -2
- package/test/r153-staging-leaf-acl.test.mjs +24 -10
- package/test/r153-uac-approval-contract.test.mjs +5 -3
- package/test/r153-uac-launch-parameter-contract.test.mjs +1 -1
- package/test/r154-multipin-recovery.test.mjs +45 -0
- package/test/r155-commander-live-log.test.mjs +44 -0
- package/test/r155-default-live-log.test.mjs +89 -0
- package/test/r156-epoch-route-smoke.ps1 +48 -0
- package/test/r156-supervisor-pacing.test.mjs +59 -0
- package/test/r157-architecture-map.mjs +61 -0
- package/test/r157-reference-survey.mjs +91 -0
- package/test/r157-supervisor-singleflight.test.mjs +32 -0
- package/test/r158-epoch-bootstrap.test.mjs +34 -0
- package/test/r159-legacy-marker-evidence.test.mjs +100 -0
- package/test/r159-legacy-marker-evidence.test.mjs.before-assertion-fix-20261025-120246.bak +100 -0
- package/test/r160-marker-proof.test.mjs +87 -0
- package/test/r160-package-decision-manifest.test.mjs +67 -0
- package/test/r160-release-contract.test.mjs +30 -0
- package/test/r160-stable-launcher.test.mjs +10 -0
- package/test/r163-isolated-slot-rollback-restore.test.mjs +58 -0
- package/test/r163-publish-fence.test.mjs +13 -0
- package/test/r48-release-contract.test.mjs +7 -1
- package/test/r58-launcher-shell.test.mjs +4 -1
- package/test/r59-tool-surface-compat.test.mjs +1 -1
- package/test/release-generation.test.mjs +16 -0
- package/test/remote-live-log-r37.test.mjs +5 -3
- package/test/remote-session-cli.test.mjs +11 -11
- package/test/stabilization-state-root.test.mjs +2 -1
package/RELEASE.json
CHANGED
|
@@ -1,28 +1,29 @@
|
|
|
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.62",
|
|
5
|
+
"train": "R160",
|
|
6
|
+
"label": "R160 TRUSTED RECOVERY AND BOUNDED ENGINEERING LOOP",
|
|
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.61",
|
|
10
|
+
"release_id": "v0.15.61-055d1ff0aa99e60b",
|
|
11
|
+
"manifest_sha256": "055d1ff0aa99e60bbf9e9f136b02ebd4fffb8391712560f7607cff30af94dcdf",
|
|
12
|
+
"generation_manifest_sha256": "f940e794daac2dda097a66301c4b85c4b29a2df7c669e549503c05a2a55ff6c4",
|
|
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.61",
|
|
17
|
+
"release_id": "v0.15.61-055d1ff0aa99e60b",
|
|
18
|
+
"manifest_sha256": "055d1ff0aa99e60bbf9e9f136b02ebd4fffb8391712560f7607cff30af94dcdf",
|
|
19
|
+
"generation_manifest_sha256": "f940e794daac2dda097a66301c4b85c4b29a2df7c669e549503c05a2a55ff6c4"
|
|
20
20
|
},
|
|
21
21
|
"source_predecessor": {
|
|
22
|
-
"version": "0.15.
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
"
|
|
22
|
+
"version": "0.15.61",
|
|
23
|
+
"train": "R159",
|
|
24
|
+
"source_path": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.62-r159-marker-reconcile",
|
|
25
|
+
"release_status": "DEVELOPMENT_UNSEALED",
|
|
26
|
+
"manifest_status": "STALE_REJECTED"
|
|
26
27
|
},
|
|
27
28
|
"consolidation": {
|
|
28
29
|
"frontend_status_vocabulary": true,
|
|
@@ -417,7 +418,7 @@
|
|
|
417
418
|
"stable_final_claim": false
|
|
418
419
|
},
|
|
419
420
|
"r153": {
|
|
420
|
-
"release_candidate_version": "0.15.
|
|
421
|
+
"release_candidate_version": "0.15.61",
|
|
421
422
|
"source_predecessor_version": "0.15.59",
|
|
422
423
|
"source_predecessor_tarball_sha256": "0c20152b8ee553f06f05dfe017f4bd823d30cd50710722e9e0874f0bd6c66c75",
|
|
423
424
|
"production_predecessor_version": "0.15.45",
|
|
@@ -431,5 +432,33 @@
|
|
|
431
432
|
"npm_publish": "NOT_RUN",
|
|
432
433
|
"production_activation": "NOT_RUN",
|
|
433
434
|
"stable_final_claim": false
|
|
435
|
+
},
|
|
436
|
+
"r160": {
|
|
437
|
+
"source_predecessor_train": "R159",
|
|
438
|
+
"runtime_predecessor_version": "0.15.61",
|
|
439
|
+
"located_receipt_proof_binding": "PASS_FOCUSED",
|
|
440
|
+
"startup_decision_manifest_gate": "PASS_FOCUSED",
|
|
441
|
+
"stable_launcher_native_powershell_pin": "PASS_FOCUSED",
|
|
442
|
+
"protected_r89_preflight": "PASS_LIVE_READ_ONLY",
|
|
443
|
+
"engineering_loop_isolated": "PASS_FOCUSED_RESTART_NO_REPLAY",
|
|
444
|
+
"reference_roots_reviewed": 12,
|
|
445
|
+
"public_tool_delta": 0,
|
|
446
|
+
"authority_scope_delta": 0,
|
|
447
|
+
"protected_full_regression": "PENDING_FINAL_BYTES",
|
|
448
|
+
"windows_gate": "PENDING_FINAL_BYTES",
|
|
449
|
+
"npm_publish": "NOT_RUN",
|
|
450
|
+
"production_activation": "NOT_RUN",
|
|
451
|
+
"stable_final_claim": false
|
|
452
|
+
},
|
|
453
|
+
"r163": {
|
|
454
|
+
"publication_mode": "PUBLISH_ONLY",
|
|
455
|
+
"runtime_predecessor_release_id": "v0.15.61-055d1ff0aa99e60b",
|
|
456
|
+
"r162_source_manifest_sha256": "061fcf3c2c713045bfde14ba6782f053f7f1017e5ebdd2137a7acb3dcba83afc",
|
|
457
|
+
"r162_protected_receipt_sha256": "54d3d177c63a9dedf6920f6030af9a093d5f656d7862e0f2540dfc6bc46751c0",
|
|
458
|
+
"r162_verify_receipt_sha256": "0042791601edb977ce8a455c019084550422f9bd9e3abb252a8c96059b794649",
|
|
459
|
+
"final_gate": "REQUIRES_EXTERNAL_FINAL_BYTE_RECEIPTS",
|
|
460
|
+
"production_activation": "NOT_RUN",
|
|
461
|
+
"npm_publish": "NOT_RUN",
|
|
462
|
+
"stable_final_claim": false
|
|
434
463
|
}
|
|
435
464
|
}
|
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:r160:0.15.62",
|
|
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.62"
|
|
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.62",
|
|
4
|
+
"train": "R160",
|
|
5
5
|
"primary_platform": "win32-x64",
|
|
6
6
|
"reference": {
|
|
7
7
|
"package": "@wonderwhy-er/desktop-commander",
|
|
@@ -10,6 +10,21 @@
|
|
|
10
10
|
"schemas_sha256": "f342345e34e48769dabaefe1b932f09d41e2e207b422f7794a15ee50ffa8f140"
|
|
11
11
|
},
|
|
12
12
|
"required": [
|
|
13
|
+
{
|
|
14
|
+
"id": "r160-receipt-startup-identity",
|
|
15
|
+
"command": "node --test test/r153-marker-reconcile-receipt.test.mjs test/r159-legacy-marker-evidence.test.mjs test/r160-marker-proof.test.mjs test/r160-package-decision-manifest.test.mjs",
|
|
16
|
+
"expected": "Located receipts require R153 proof binding and exact startup decision bytes before foreground claim"
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
"id": "r160-protected-r89",
|
|
20
|
+
"command": "Run R158 live preflight with distinct protected epoch root and writable exact release view",
|
|
21
|
+
"expected": "Protected exact source accepted; untrusted source remains denied"
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"id": "r160-protected-full",
|
|
25
|
+
"command": "node --test --test-concurrency=4 test/*.test.mjs from exact protected final candidate",
|
|
26
|
+
"expected": "Zero failures; every skip classified"
|
|
27
|
+
},
|
|
13
28
|
{
|
|
14
29
|
"id": "r146-scoped-policy-generation",
|
|
15
30
|
"command": "node --test test/r146-generation-scope-narrowing.test.mjs test/r146-legacy-offline-policy-proof.test.mjs test/r65-activation-orchestration.test.mjs",
|
|
@@ -557,5 +572,12 @@
|
|
|
557
572
|
"rollback": "PENDING",
|
|
558
573
|
"windows_gate": "PENDING",
|
|
559
574
|
"publisher": "BLOCKED_UNTIL_RELEASE_VERIFIED"
|
|
575
|
+
},
|
|
576
|
+
"r163": {
|
|
577
|
+
"windows_final": "PENDING_NEW_PROTECTED_FIXTURE",
|
|
578
|
+
"isolated_rollback_restore": "PENDING_CURRENT_VERSION_TEST",
|
|
579
|
+
"npm_verify_only": "PENDING_FINAL_BYTES",
|
|
580
|
+
"classified_skips": "R162_43_HISTORICAL_3_POSIX_3_R35_OPTIONAL",
|
|
581
|
+
"publish_guard": "REQUIRES_EXTERNAL_EVIDENCE"
|
|
560
582
|
}
|
|
561
583
|
}
|
package/bridge/package.json
CHANGED
|
@@ -952,8 +952,85 @@ function Get-AuthorityEpochStatus($Cfg, [string]$Plane, [string]$GrantFile, [str
|
|
|
952
952
|
}
|
|
953
953
|
}
|
|
954
954
|
|
|
955
|
+
function Assert-ProtectedEpochSourceAcl([string[]]$Files) {
|
|
956
|
+
# Check the OS path and its ancestors BEFORE executing any JS from it.
|
|
957
|
+
# The native R89 loader still performs its more complete independent check.
|
|
958
|
+
$trustedSids = @('S-1-5-18','S-1-5-32-544','S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464')
|
|
959
|
+
$visited = [System.Collections.Generic.HashSet[string]]::new([System.StringComparer]::OrdinalIgnoreCase)
|
|
960
|
+
$commonMutation = [long]0x000d0150
|
|
961
|
+
$genericMutation = [long]0x52000000
|
|
962
|
+
foreach ($file in $Files) {
|
|
963
|
+
$node = [System.IO.Path]::GetFullPath($file)
|
|
964
|
+
while ($true) {
|
|
965
|
+
if ($visited.Add($node)) {
|
|
966
|
+
$item = Get-Item -LiteralPath $node -Force -ErrorAction Stop
|
|
967
|
+
if ([bool]($item.Attributes -band [System.IO.FileAttributes]::ReparsePoint)) {
|
|
968
|
+
Fail "authority epoch protected path reparse denied: $node"
|
|
969
|
+
}
|
|
970
|
+
$acl = Get-Acl -LiteralPath $node -ErrorAction Stop
|
|
971
|
+
$owner = $acl.GetOwner([System.Security.Principal.SecurityIdentifier]).Value
|
|
972
|
+
if ($owner -cnotin $trustedSids) { Fail "authority epoch protected path owner denied: $node" }
|
|
973
|
+
$mutation = $commonMutation -bor $genericMutation
|
|
974
|
+
if (-not $item.PSIsContainer) { $mutation = $mutation -bor 6 }
|
|
975
|
+
foreach ($rule in $acl.GetAccessRules($true,$true,[System.Security.Principal.SecurityIdentifier])) {
|
|
976
|
+
$mask = [long]$rule.FileSystemRights -band [long]4294967295
|
|
977
|
+
if ($rule.AccessControlType -eq [System.Security.AccessControl.AccessControlType]::Allow -and
|
|
978
|
+
$rule.IdentityReference.Value -cnotin $trustedSids -and
|
|
979
|
+
-not ($rule.PropagationFlags -band [System.Security.AccessControl.PropagationFlags]::InheritOnly) -and
|
|
980
|
+
(($mask -band $mutation) -ne 0)) {
|
|
981
|
+
Fail "authority epoch protected path writable by an untrusted principal: $node"
|
|
982
|
+
}
|
|
983
|
+
}
|
|
984
|
+
}
|
|
985
|
+
$parent = [System.IO.Directory]::GetParent($node)
|
|
986
|
+
if ($null -eq $parent) { break }
|
|
987
|
+
$node = $parent.FullName
|
|
988
|
+
}
|
|
989
|
+
}
|
|
990
|
+
}
|
|
991
|
+
|
|
955
992
|
function Invoke-AuthorityEpochCommand($Cfg, [string]$Plane, [string]$Action, [string]$GrantFile, [string]$UpdateId = '', [string]$ExpectedHead = '') {
|
|
956
|
-
|
|
993
|
+
# R156: a privileged native Epoch Lock must execute from an OS-protected
|
|
994
|
+
# package, not from the writable npm release in the user's profile.
|
|
995
|
+
# This root is supplied by the pinned generation config, never by a CLI
|
|
996
|
+
# argument, caller environment, or a fallback search under Program Files.
|
|
997
|
+
$epochRoot = [string]$Cfg.CoreRoot
|
|
998
|
+
if ($Cfg.ContainsKey('AuthorityEpochRoot') -and -not [string]::IsNullOrWhiteSpace([string]$Cfg.AuthorityEpochRoot)) {
|
|
999
|
+
$epochRoot = [System.IO.Path]::GetFullPath([string]$Cfg.AuthorityEpochRoot)
|
|
1000
|
+
$release = [System.IO.Path]::GetFullPath([string]$Cfg.CoreRoot)
|
|
1001
|
+
# Fail closed if the protected source does not match this exact release.
|
|
1002
|
+
$releaseManifest = Join-Path $release 'MANIFEST.SHA256'
|
|
1003
|
+
$epochManifest = Join-Path $epochRoot 'MANIFEST.SHA256'
|
|
1004
|
+
if (-not (Test-Path -LiteralPath $releaseManifest -PathType Leaf) -or -not (Test-Path -LiteralPath $epochManifest -PathType Leaf) -or
|
|
1005
|
+
(Get-ExecutableHash $releaseManifest) -cne (Get-ExecutableHash $epochManifest)) {
|
|
1006
|
+
Fail 'authority epoch trusted root release manifest mismatch'
|
|
1007
|
+
}
|
|
1008
|
+
$critical = @(
|
|
1009
|
+
'src\authority-epoch-cli-r65.mjs',
|
|
1010
|
+
'src\authority-continuity-r65.mjs',
|
|
1011
|
+
'src\privileged-install-trust-r89.mjs',
|
|
1012
|
+
'src\epoch-lock-r85.mjs',
|
|
1013
|
+
'src\canonical-json.mjs',
|
|
1014
|
+
'src\text-policy.mjs',
|
|
1015
|
+
'src\foreground-marker-cas-win32.mjs',
|
|
1016
|
+
'src\foreground-process-identity.mjs',
|
|
1017
|
+
'src\windows-powershell-environment.mjs',
|
|
1018
|
+
'bin\deadbyte-epoch-lock-r85.node',
|
|
1019
|
+
'docs\R85-EPOCH-LOCK-BINARY.json',
|
|
1020
|
+
'native\deadbyte-epoch-lock-r85.cpp'
|
|
1021
|
+
)
|
|
1022
|
+
foreach ($relative in $critical) {
|
|
1023
|
+
$source = Join-Path $release $relative
|
|
1024
|
+
$protected = Join-Path $epochRoot $relative
|
|
1025
|
+
if (-not (Test-Path -LiteralPath $source -PathType Leaf) -or
|
|
1026
|
+
-not (Test-Path -LiteralPath $protected -PathType Leaf) -or
|
|
1027
|
+
(Get-ExecutableHash $source) -cne (Get-ExecutableHash $protected)) {
|
|
1028
|
+
Fail "authority epoch trusted root source mismatch: $relative"
|
|
1029
|
+
}
|
|
1030
|
+
}
|
|
1031
|
+
Assert-ProtectedEpochSourceAcl -Files @($critical | ForEach-Object { Join-Path $epochRoot $_ })
|
|
1032
|
+
}
|
|
1033
|
+
$cli = Join-Path $epochRoot 'src\authority-epoch-cli-r65.mjs'
|
|
957
1034
|
if (-not (Test-Path -LiteralPath $cli -PathType Leaf)) { Fail "authority epoch CLI missing: $cli" }
|
|
958
1035
|
$node = [string]$Cfg.Bridge.FilePath
|
|
959
1036
|
if ([string]::IsNullOrWhiteSpace($node) -or -not (Test-Path -LiteralPath $node -PathType Leaf)) { Fail 'authority epoch Node executable unavailable' }
|
|
@@ -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-0.15.62-r160-marker-proof\\controller\\runtime\\process-grant.json",
|
|
5
|
+
"state_dir": "D:\\Projects\\deadbyte-mcp\\development\\deadbyte-mcp-0.15.62-r160-marker-proof\\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-0.15.62-r160-marker-proof\\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-0.15.62-r160-marker-proof",
|
|
13
13
|
"deny_paths": [
|
|
14
14
|
"node_modules",
|
|
15
15
|
"controller/runtime",
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
# R156 — loop pacing and privileged Epoch routing
|
|
2
|
+
|
|
3
|
+
Status: DEVELOPMENT / TESTED FOCUSED / NOT PUBLISHED. Predecessor is the
|
|
4
|
+
R155 isolated candidate. The live 0.15.61 release, configured grants,
|
|
5
|
+
foreground session, R89 ACL rules, R70 owner admission, registry, and
|
|
6
|
+
production pointers are intentionally unchanged.
|
|
7
|
+
|
|
8
|
+
## What was wrong
|
|
9
|
+
|
|
10
|
+
1. The outer autonomous supervisor counted backoff-blocked goals as
|
|
11
|
+
runnable. Its 25 ms hot-scan path could therefore run when no provider
|
|
12
|
+
dispatch was eligible, wasting cycles on status scans and filesystem work.
|
|
13
|
+
2. The supervisor host provisions a trusted `codex_app_server` planner, and
|
|
14
|
+
the R24 runtime supports it, but the scheduler excluded the backend from
|
|
15
|
+
its provider-backed dispatch list. A running supervisor was not proof a
|
|
16
|
+
Codex goal would actually advance.
|
|
17
|
+
3. The normal npm release is installed under the owner's writable
|
|
18
|
+
`.deadbyte-mcp\releases` directory. Its controller launches
|
|
19
|
+
`authority-epoch-cli-r65.mjs` from that path. R89 correctly refuses
|
|
20
|
+
loading the native epoch lock with `UNTRUSTED_WRITE_ACE`. It is *not*
|
|
21
|
+
appropriate to weaken R89 or chmod the user release.
|
|
22
|
+
|
|
23
|
+
## Change: same engine, better outer loop
|
|
24
|
+
|
|
25
|
+
- Count only dispatched goals as runnable. A backoff-blocked goal now
|
|
26
|
+
permits the idle interval instead of triggering the 25 ms hot path.
|
|
27
|
+
- Include `codex_app_server` among the supervisor's provider-backed
|
|
28
|
+
planners. Leave `client_sampling` excluded: it requires a live model
|
|
29
|
+
through a client and must never be mistaken for unattended planning.
|
|
30
|
+
- Keep standing authority, task policy, Native Diff, approvals,
|
|
31
|
+
cancellation, journal replay and per-goal stop conditions unchanged.
|
|
32
|
+
- Add four isolated behavioral tests for provider backoff, Codex dispatch,
|
|
33
|
+
client sampling and paused owner-approval goals.
|
|
34
|
+
|
|
35
|
+
## Change: R89 exact protected root selection
|
|
36
|
+
|
|
37
|
+
The controller accepts an *optional generation-config-only*
|
|
38
|
+
`AuthorityEpochRoot`. When set, before invoking the epoch CLI it checks:
|
|
39
|
+
- `MANIFEST.SHA256` matches the active release
|
|
40
|
+
- exact SHA-256 equivalence for the Epoch CLI and its 11 supporting native/
|
|
41
|
+
JS trust files
|
|
42
|
+
- Windows R89 OS ACL verification still executes inside the selected native
|
|
43
|
+
Epoch Lock, denying untrusted write access to any checked ancestor
|
|
44
|
+
|
|
45
|
+
There is no CLI/env override and no automatic selection of an unverified
|
|
46
|
+
Program Files directory. The generation renderer preserves an existing
|
|
47
|
+
`AuthorityEpochRoot` only when supplied by the trusted deployment process.
|
|
48
|
+
If missing, the old fail-closed path remains and npm arm commands still
|
|
49
|
+
cannot work from a writable package alone.
|
|
50
|
+
|
|
51
|
+
**Important:** shipping the R156 source is not sufficient to fix new
|
|
52
|
+
installations. The release/activation workflow must provision an exact
|
|
53
|
+
manifest-matched, OS-owned native installation via owner-authorized Windows
|
|
54
|
+
privilege escalation, bind that absolute path to the generation config,
|
|
55
|
+
and verify the byte identity and ACL before issuing any grant.
|
|
56
|
+
R70 independent Autonomous owner enrollment is still required.
|
|
57
|
+
|
|
58
|
+
## Observed evidence
|
|
59
|
+
|
|
60
|
+
- R156 supervisor pacing TDD: first 1 RED / 1 PASS, then 2/2 PASS
|
|
61
|
+
- R156 Codex dispatch TDD: first 1 RED / 3 PASS, then 4/4 PASS
|
|
62
|
+
- R156 autonomous focused suite: 32 PASS / 0 FAIL
|
|
63
|
+
- R156 generation and native ACL guard suite: 16 PASS / 0 FAIL
|
|
64
|
+
- R156 PowerShell verifier:
|
|
65
|
+
- identical trusted stage accepted before a deliberately invalid plane
|
|
66
|
+
- unrelated root rejected with manifest mismatch
|
|
67
|
+
- protected Epoch module source SHA-256 equality PASS
|
|
68
|
+
- NO lease issued / process started / grant altered
|
|
69
|
+
- Two earlier Windows native integration tests remain RED when executed
|
|
70
|
+
directly under the user-writable development tree. This is expected
|
|
71
|
+
under R89 and is **not** counted as release readiness.
|
|
72
|
+
|
|
73
|
+
## Release gate
|
|
74
|
+
|
|
75
|
+
Must still be proven for the exact repackaged 0.15.62 candidate:
|
|
76
|
+
1. UAC-owned protected Epoch installation, exact artifact/manifest and
|
|
77
|
+
recovery proof, and generation-config path binding
|
|
78
|
+
2. protected Windows full regression (not user-writable dev tree)
|
|
79
|
+
3. clean install and `remote armprocess`, `armcoding`, `armdesktop`,
|
|
80
|
+
`armhost` with explicit local authorization, and successful revoke
|
|
81
|
+
4. Autonomous R70 owner enrollment and independent project-scope isolation
|
|
82
|
+
5. LiveLogs default START/DONE/FAIL plus audit continuity regression
|
|
83
|
+
6. npm tarball verification, release metadata, rollback, registry identity
|
|
84
|
+
|
|
85
|
+
No npm publish or production activation has been attempted by this R156
|
|
86
|
+
development pass.
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
# DEADBYTE MCP R157 static dependency map
|
|
2
|
+
|
|
3
|
+
Not a runtime reachability guarantee. Graph parses literal top-level relative ESM imports only.
|
|
4
|
+
|
|
5
|
+
| Boundary | Runtime entry / related source | Security / compatibility rule |
|
|
6
|
+
|---|---|---|
|
|
7
|
+
| Public MCP and remote | mcp-server.mjs / deadbyte-cli.mjs / remote-live-log.mjs | machine identity and live request/result pairing |
|
|
8
|
+
| Session ownership | foreground-marker-cas-win32.mjs / remote-session-guardian.mjs | file identity, PID+creation identity, explicit revoke |
|
|
9
|
+
| Privileged epoch | authority-continuity-r65.mjs / privileged-install-trust-r89.mjs | owner-approved OS-owned root, deny untrusted ACL writes |
|
|
10
|
+
| Coding and native diffs | coding-plane.mjs / native-diff.mjs / atomic-mutation.mjs | bounded roots and exact SHA-256 preconditions |
|
|
11
|
+
| Autonomous engine | autonomous-supervisor.mjs / autonomous-runtime.mjs / autonomous-progress.mjs | bounded retries, receipts, owner approval and durable goals |
|
|
12
|
+
| Release generation | runtime-update.mjs / release-generation.mjs | signed exact promotion, rollback, manifest match |
|
|
13
|
+
|
|
14
|
+
## Entrypoint reachability from literal imports
|
|
15
|
+
- mcp-server.mjs: present=true, static reachable files=134
|
|
16
|
+
- deadbyte-cli.mjs: present=true, static reachable files=151
|
|
17
|
+
- remote-live-log.mjs: present=true, static reachable files=7
|
|
18
|
+
- autonomous-supervisor-host.mjs: present=true, static reachable files=50
|
|
19
|
+
- autonomous-runtime.mjs: present=true, static reachable files=33
|
|
20
|
+
- autonomous-supervisor.mjs: present=true, static reachable files=1
|
|
21
|
+
|
|
22
|
+
## Most referenced modules within src/
|
|
23
|
+
- canonical-json.mjs <- 50 static imports
|
|
24
|
+
- trust.mjs <- 38 static imports
|
|
25
|
+
- path-policy.mjs <- 16 static imports
|
|
26
|
+
- coding-plane.mjs <- 12 static imports
|
|
27
|
+
- text-policy.mjs <- 12 static imports
|
|
28
|
+
- version.mjs <- 11 static imports
|
|
29
|
+
- hash.mjs <- 10 static imports
|
|
30
|
+
- desktop-policy-r40.mjs <- 9 static imports
|
|
31
|
+
- desktop-runtime-r40.mjs <- 9 static imports
|
|
32
|
+
- observation-runtime.mjs <- 9 static imports
|
|
33
|
+
- state-root.mjs <- 9 static imports
|
|
34
|
+
- authority-continuity-r65.mjs <- 8 static imports
|
|
35
|
+
- machine-fs.mjs <- 8 static imports
|
|
36
|
+
- release-slot.mjs <- 8 static imports
|
|
37
|
+
- output-contracts.mjs <- 7 static imports
|
|
38
|
+
- runtime-update.mjs <- 7 static imports
|
|
39
|
+
- contained-executor.mjs <- 6 static imports
|
|
40
|
+
- runtime-catalog-expectation.mjs <- 6 static imports
|
|
41
|
+
- autonomous-policy.mjs <- 5 static imports
|
|
42
|
+
- foreground-marker-cas-win32.mjs <- 5 static imports
|
|
43
|
+
- process-policy.mjs <- 5 static imports
|
|
44
|
+
- remote-mcp-r34-parity-client.mjs <- 5 static imports
|
|
45
|
+
- deadline-cancellation.mjs <- 4 static imports
|
|
46
|
+
- verifier.mjs <- 4 static imports
|
|
47
|
+
- windows-powershell-environment.mjs <- 4 static imports
|
|
48
|
+
|
|
49
|
+
## Explicit integration work
|
|
50
|
+
|
|
51
|
+
- R89 protected source routing is candidate-only. Actual install provision / owner consent / revoke remains unverified.
|
|
52
|
+
- R155 default LiveLogs focused checks pass, but full Windows regression and startup reconciliation are not closed.
|
|
53
|
+
- R156/R157 autonomous supervisor is test-backed; release identity has not changed.
|
|
54
|
+
- A code source import does not prove an IPC, host process, or cloud boundary. Prove via isolated end-to-end test.
|
|
55
|
+
|
|
56
|
+
## Rebuild
|
|
57
|
+
|
|
58
|
+
node test/r157-architecture-map.mjs
|