Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
189 commits
Select commit Hold shift + click to select a range
c114b3e
ci(linux): validate unreleased v1.5.5-rc1 against pinned v1.5.4 stable
GOD13emad Oct 14, 2026
d843b67
test(ci): preserve R519 pre-fix provenance with pinned small fixtures
GOD13emad Oct 14, 2026
0195ecd
test(ci): model native user State owner separately from runner uid
GOD13emad Oct 14, 2026
f248a98
test(ci): enforce RC1 installer metadata activation contract (R526)
GOD13emad Oct 15, 2026
1d021b6
test(ci): privileged Root file rollback on disposable Ubuntu runner (…
GOD13emad Oct 15, 2026
fcd548a
test(ci): exercise exact protected Root CLI on ephemeral GitHub Ubunt…
GOD13emad Oct 15, 2026
1deb33e
test(ci): native Linux Root+User in-place update and rollback on host…
GOD13emad Oct 15, 2026
bdaffe4
test(ci): exercise autonomous root-owned systemd rollback watchdog on…
GOD13emad Oct 15, 2026
b3aebf1
feat(test): isolated Windows 1.5.5-rc1 Inno candidate and hosted upgr…
GOD13emad Oct 15, 2026
6a84171
fix(ci): store WPF source blob as Git-canonical LF for CRLF checkout …
GOD13emad Oct 15, 2026
4c8199c
fix(ci): normalize all remaining Windows text blobs to indexed LF (R535)
GOD13emad Oct 15, 2026
037fef3
fix(ci): count pinned .NET10 SDK jobs per private Windows RC1 context…
GOD13emad Oct 15, 2026
ad9fb13
test(ci): require native Windows RC1 acceptance on the main Draft PR …
GOD13emad Oct 15, 2026
8e02b92
fix(linux): reflect explicit DoH consent in GTK state and fail closed…
GOD13emad Oct 15, 2026
d70a9d9
fix(linux): correctly attest active encrypted targeted DoH and HTTPS …
GOD13emad Oct 15, 2026
280f27a
fix(linux): reject active NFQUEUE egress-interface drift without chan…
GOD13emad Oct 15, 2026
85c3ab4
test(linux): execute R541 route-drift Start preflight in isolated Bas…
GOD13emad Oct 15, 2026
2355e4f
docs(brain): reconcile R544 live host and CI authority without promot…
GOD13emad Oct 15, 2026
0e524b4
feat(linux): R545 periodic fail-closed GTK status refresh and exact R…
GOD13emad Oct 15, 2026
5b7293c
ci(linux): pin R545 exact deterministic archive byte length 8340334
GOD13emad Oct 15, 2026
5d4415a
docs(brain): accept exact R545 hosted CI and MMZ private archive receipt
GOD13emad Oct 15, 2026
7a58e40
build(windows): R548 disable commit-derived assembly identity; normal…
GOD13emad Oct 15, 2026
aba2542
docs(brain): upsert R546/R547 physical evidence and R548 build identi…
GOD13emad Oct 15, 2026
857d9e8
build(windows): R549 omit embedded Inno file timestamps; negative-fir…
GOD13emad Oct 15, 2026
952bde0
docs(brain): R548 two-run byte identities and R549 Inno deterministic…
GOD13emad Oct 15, 2026
b3b03b5
docs(brain): accept R549 SHA-identical Windows builds and physical R5…
GOD13emad Oct 15, 2026
83db423
test(linux): R552 fail-closed guarded-upgrade candidate and isolated …
GOD13emad Oct 15, 2026
20cddf5
fix(qa): R552 guard attests real User stage schema and metadata SHA, …
GOD13emad Oct 15, 2026
1201c73
feat(linux): R553 arm owned independent rollback guard before protect…
GOD13emad Oct 15, 2026
dfff9fe
test(linux): track R553 User transaction as accepted package delta
GOD13emad Oct 15, 2026
f09d875
test(linux): native R554 two-sided watchdog acceptance on disposable …
GOD13emad Oct 15, 2026
846dfba
test(linux): R555 exact production upgrade wrapper + independent two-…
GOD13emad Oct 15, 2026
345572e
docs(brain): upsert R554-R556 native guard, exact MMZ staging and per…
GOD13emad Oct 15, 2026
a50cca2
docs(brain): upsert R557 exact R553 physical shadow User rollback rec…
GOD13emad Oct 15, 2026
9faa525
docs(brain): accept R558 exact physical rootless guard preflight evid…
GOD13emad Oct 15, 2026
e14ad47
fix(linux): R559 persistent UTC rollback deadline survives timer rest…
GOD13emad Oct 15, 2026
b4ec38a
docs(brain): reconcile R559 UTC persistent rollback hosted CI and MMZ…
GOD13emad Oct 15, 2026
bad874c
fix(linux): R562 resume accepted Root/User pair after interrupted fin…
GOD13emad Oct 15, 2026
07ca88f
test(linux): R562 fake accepted identity follows actual unprivileged …
GOD13emad Oct 15, 2026
70a030e
docs(brain): upsert R562 native finalization PASS and MMZ R563-R564/r…
GOD13emad Oct 15, 2026
df91979
docs(brain): accept exact R562 full CI and record MMZ host approval t…
GOD13emad Oct 15, 2026
73a9706
test(linux): R565 native systemd fail-closed on mutable drift after a…
GOD13emad Oct 15, 2026
87ac6da
docs(brain): accept R565 native fail-closed mutable-drift CI and unre…
GOD13emad Oct 15, 2026
541af7c
test(linux): R566 native systemd persistent catch-up after inactive c…
GOD13emad Oct 15, 2026
0c981eb
docs(brain): accept R566 native systemd missed-deadline catch-up and …
GOD13emad Oct 15, 2026
8b930ef
test(linux): R567 fail-closed native User rollback on denied Polkit a…
GOD13emad Oct 15, 2026
5091414
docs(brain): capture R567 native single denied-Polkit rollback eviden…
GOD13emad Oct 15, 2026
3d35c3d
fix(linux): R568 explicitly retire SHA-attested terminal rollback slo…
GOD13emad Oct 15, 2026
1f16937
test(linux): R568 preserve watchdog receipt digest before attested re…
GOD13emad Oct 16, 2026
ccd18c1
fix(linux): R568 clean persistent systemd timer state during attested…
GOD13emad Oct 16, 2026
98e087f
test(linux): R568 remove shadowed subprocess binding from shared nega…
GOD13emad Oct 16, 2026
0bd88e9
docs(brain): accept exact R568 native two-sided rollback retirement a…
GOD13emad Oct 16, 2026
cc0c673
docs(brain): record R569 MMZ exact RC1 rootless preflight
GOD13emad Oct 16, 2026
93cc060
docs(brain): upsert R569 two-host direct HTTPS baseline
GOD13emad Oct 16, 2026
2382050
docs(brain): record R570 current-RC1 physical isolated GTK4 pass
GOD13emad Oct 16, 2026
930d820
docs(brain): record R571 native Windows QA timeout and safe recovery
GOD13emad Oct 16, 2026
122f075
docs(brain): upsert R572-R576 verified R568 canary stage and physical…
GOD13emad Oct 16, 2026
d0ee4e5
docs(brain): consolidate R577-R581 native browser transport and Windo…
GOD13emad Oct 16, 2026
ddaf838
docs(brain): close R583 exact 681-file physical Windows Stable baseline
GOD13emad Oct 16, 2026
a41759c
docs(brain): close R584-R586 exact RC1 DoH, native preflight, and pub…
GOD13emad Oct 16, 2026
291d0f6
docs(brain): record R587 exact-current native User Stage Apply Rollback
GOD13emad Oct 16, 2026
8b60abe
docs(brain): close R588 exact RC1 user Uninstaller ownership and pres…
GOD13emad Oct 16, 2026
8e22402
docs(brain): verify R589 physical two-host stable service and updater…
GOD13emad Oct 16, 2026
bfbbe91
docs(brain): R590 physical protected baseline, R591 systemd and Emad …
GOD13emad Oct 16, 2026
84ba9da
docs(brain): verify R592-R593 native Win10 RC1 build and service fail…
GOD13emad Oct 16, 2026
093fb2e
test(windows): verify single Inno uninstall pair by AppId not uninsNN…
GOD13emad Oct 16, 2026
7e679f6
test(windows): pin suffix-agnostic native installer rollback audit
GOD13emad Oct 16, 2026
12b6890
docs(brain): close R594-R595 suffix-neutral Inno native QA on two phy…
GOD13emad Oct 16, 2026
51b6a62
docs(brain): correct R595 native receipt digest formatting
GOD13emad Oct 16, 2026
caec2c6
ci(private): retain SHA-attested tested RC1 installer for two-day own…
GOD13emad Oct 16, 2026
1e1bef9
docs(brain): record R600-R605 exact Windows physical RC1 install HTTP…
GOD13emad Oct 16, 2026
1f62b2c
docs(brain): correct exact R603 and R605 operation SHA-256 formatting
GOD13emad Oct 16, 2026
b931c66
docs(brain): upsert R606-R617 Saeid real Windows RC1 install, SHA and…
GOD13emad Oct 16, 2026
c3ff73d
docs(brain): record R622-R625 physical DPI-off baseline, exact fake-r…
GOD13emad Oct 16, 2026
c861396
docs(brain): R626 physical two-host exact Windows RC1 auto-service re…
GOD13emad Oct 16, 2026
5d0c9da
docs(brain): record R627-R629 exact live Linux protected RC1 install …
GOD13emad Oct 16, 2026
d21cb32
docs(brain): R630 restored terminal MMZ and R632 Saeid guarded native…
GOD13emad Oct 16, 2026
632ea0b
docs(brain): R633 delayed guard reconciliation and R635-R638 Saeid co…
GOD13emad Oct 16, 2026
1ca45c2
docs(brain): R639-R642 site-SNI, forced QUIC and IPv6 physical V&V
GOD13emad Oct 16, 2026
59275d7
docs(brain): R643-R645 Saeid native TLS/ClientHello segmentation nega…
GOD13emad Oct 16, 2026
828742d
fix(gui): show partial health when active core HTTPS checks fail
GOD13emad Oct 16, 2026
9533b62
test(gui): require honest PARTIAL health for failed core reachability…
GOD13emad Oct 16, 2026
0e7a009
docs(brain): R646-R650 honest GUI health, native CI, Saeid UAC field …
GOD13emad Oct 16, 2026
ddcac39
docs(brain): R652-R655 real hidden WPF OFF and simulated ACTIVE PARTI…
GOD13emad Oct 16, 2026
21be87a
docs(brain): R656-R658 owner-approved same corrected GUI and 681 file…
GOD13emad Oct 16, 2026
d0f5749
docs(brain): correct R656 old RC1 recovery SHA in unique evidence delta
GOD13emad Oct 16, 2026
91f77f2
fix(windows): distinguish active engine quorum from partial core-site…
GOD13emad Oct 16, 2026
1f90cac
test(windows): assert structured PARTIAL core-site health without cha…
GOD13emad Oct 16, 2026
99b1aee
docs(brain): R659 SAEID native Microsoft PktMon one-IP inbound TCP RS…
GOD13emad Oct 16, 2026
757c3a5
docs(brain): verify R660 Emad Linux Stable ACTIVE HTTPS YouTube and T…
GOD13emad Oct 16, 2026
9ba953b
test(release): guard RC1-to-Stable numeric update path
GOD13emad Oct 16, 2026
2470474
fix(ci): run release monotonicity fixture on RC1 checkout
GOD13emad Oct 16, 2026
bf8bc2a
fix(linux): require YouTube page and 204 before accepting Start
GOD13emad Oct 16, 2026
7f6e9af
fix(linux): preserve selected DoH page-only HTTPS gate
GOD13emad Oct 16, 2026
fcaa340
fix(ci): preserve lowercase SHA for R528 native archive pin
GOD13emad Oct 16, 2026
ab332cc
fix(windows): distinguish real YouTube page from health ping
GOD13emad Oct 16, 2026
ddd458c
fix(linux): pin guarded YouTube first-segment compatibility profile
GOD13emad Oct 17, 2026
b4f3f3b
test(linux): execute pinned nfqws fixture from temporary owned copy
GOD13emad Oct 17, 2026
58d8ef8
test(security): isolate and verify Windows probe argv and curl proven…
GOD13emad Oct 17, 2026
c587a83
test(security): isolate and verify Windows probe argv and curl proven…
GOD13emad Oct 17, 2026
e6cc5f4
test(security): isolate and verify Windows probe argv and curl proven…
GOD13emad Oct 17, 2026
3704e57
fix(security): use pinned Windows system curl with tokenized validate…
GOD13emad Oct 17, 2026
0d4fd6e
ci(security): run R057 hostile IPv4, URL and PATH process-origin regr…
GOD13emad Oct 17, 2026
93eac48
fix(linux): exempt marked nfqws reinjection before owned NFQUEUE
GOD13emad Oct 17, 2026
6f5bb7b
fix(security): resolve verified curl from OS SystemDirectory, not fol…
GOD13emad Oct 17, 2026
1718a24
test(linux): include expected empty selective restore in owned mock
GOD13emad Oct 17, 2026
df2cd60
fix(security): resolve verified curl from OS SystemDirectory, not fol…
GOD13emad Oct 17, 2026
4f44cf8
test(linux): emulate no-op selected DNS restoration in rollback mock
GOD13emad Oct 17, 2026
dfe20e0
test(linux): escape Bash braces in transient rollback fixture
GOD13emad Oct 17, 2026
4a9d2e3
test(linux): model empty selective-DNS restore in isolated nft namespace
GOD13emad Oct 17, 2026
24139d9
test(linux): export isolated rollback DNS fixture to trap child
GOD13emad Oct 17, 2026
8f31bdc
fix(linux): avoid package-source pyc cache during in-place update
GOD13emad Oct 17, 2026
d0cff22
fix(service): pin updater curl to Windows SystemDirectory (R061)
GOD13emad Oct 17, 2026
3fd7e82
test(service): fail closed on unsafe curl execution provenance (R061)
GOD13emad Oct 17, 2026
21cc8dd
ci(security): enforce Windows service curl provenance negative fixtur…
GOD13emad Oct 17, 2026
3a5b57e
fix(linux): bypass TCP443 pure SYN before nfqws TLS queue
GOD13emad Oct 17, 2026
df6cffd
test(linux): show native nft table on strict SYN ownership mismatch
GOD13emad Oct 17, 2026
46b0724
fix(linux): recognize canonical nft TCP SYN flags in owner guard
GOD13emad Oct 17, 2026
c6c68de
test(service): native hosted loopback curl with poisoned PATH, no ins…
GOD13emad Oct 17, 2026
89c5a34
ci(service): verify system curl on disposable Windows loopback with P…
GOD13emad Oct 17, 2026
c0d1762
test(service): pass CLR strings to reflection on hosted PowerShell (R…
GOD13emad Oct 17, 2026
f50b5ff
test(service): hosted .NET10 typed native curl loopback regression (R…
GOD13emad Oct 17, 2026
621ddb6
test(service): hosted .NET10 typed native curl loopback regression (R…
GOD13emad Oct 17, 2026
be81c31
test(service): execute hosted R062 using typed .NET10 harness, no PS …
GOD13emad Oct 17, 2026
febda72
fix(windows): count real YouTube page and 204 in core health
GOD13emad Oct 17, 2026
ae0941a
fix(windows): pin privileged startup curl to Windows system binary
GOD13emad Oct 17, 2026
96612b3
fix(linux): show core HTTPS truth before green active status
GOD13emad Oct 17, 2026
234b7da
test(ci): pin reproducible R735 Linux candidate archive
GOD13emad Oct 17, 2026
1071c97
test(linux): require warning before HTTPS-backed active health
GOD13emad Oct 17, 2026
69220b3
fix(linux): isolate verified update downloads and clean cache
GOD13emad Oct 17, 2026
e9c77c2
fix(linux): forward TCP SYN into nfqws conntrack before TLS
GOD13emad Oct 17, 2026
a8072ce
feat(linux): explicit selected-site local SOCKS opt-in with route guard
GOD13emad Oct 17, 2026
e15f069
fix(linux): own optional SOCKS module in safe uninstall contract
GOD13emad Oct 17, 2026
079d0c8
test(linux): pin 28-member RC1 and root watchdog integrity
GOD13emad Oct 17, 2026
06f243c
test(linux): pin watchdog user transaction to RC1 source
GOD13emad Oct 17, 2026
65d1534
fix(linux): align root guard with current user transaction
GOD13emad Oct 17, 2026
365a3f2
fix(linux): idempotently verify repeated root rollback receipt
GOD13emad Oct 17, 2026
701a056
fix(windows): reject nonphysical curl probe interface addresses
GOD13emad Oct 18, 2026
2da4db4
audit-only: combine exact PR62 701a056 + PR60 365a3f2 for hosted chec…
GOD13emad Oct 18, 2026
df3cdb2
audit-only: pin root DNS helper binaries to trusted paths (R762, DO N…
GOD13emad Oct 18, 2026
52ebb0e
audit-only: coherently repin RC1 Root Guard and package after R762 (D…
GOD13emad Oct 18, 2026
0764401
audit-only: block symlink parent and untrusted root receipt (R765; DO…
GOD13emad Oct 18, 2026
73e71ff
audit-only: repin exact R765 archive byte count in CI
GOD13emad Oct 18, 2026
634d2c6
audit-only: create synthetic Root acceptance in a private root-owned …
GOD13emad Oct 18, 2026
91b899a
audit-only: preserve existing private hash map in native synthetic re…
GOD13emad Oct 18, 2026
6f008f3
audit-only: pin R566 systemctl executable and reject untrusted argume…
GOD13emad Oct 18, 2026
a0f6f64
audit-only: forbid symlink-parent consent files in protected DNS (R76…
GOD13emad Oct 18, 2026
1047672
audit-only: rebaseline trusted DNS consent Root and Guard SHA chain (…
GOD13emad Oct 18, 2026
c598bb4
audit-only: stream protected root files through no-follow descriptor …
GOD13emad Oct 18, 2026
8b0fd6f
audit-only: coherently pin R769 protected file descriptor guards and …
GOD13emad Oct 18, 2026
67aefb8
audit-only: reject user-owned FIFO before privileged file-read type c…
GOD13emad Oct 18, 2026
9ee0242
audit-only: coherently repin FIFO-safe Root/Guard and Linux RC1 artif…
GOD13emad Oct 18, 2026
0a13693
test(security): pin Root metadata and manifest reads to one fd (R776)
Oct 19, 2026
e7901c5
fix(security): retain native Root metadata-mode diagnostic (R777)
Oct 19, 2026
93fce50
fix(linux): pin protected Stage baseline backups before slot creation…
Oct 19, 2026
c317831
fix(linux): execute Root upgrade only from SHA-pinned protected copie…
Oct 19, 2026
1fff246
fix(linux): add fixed Root-owned bootstrap and exact manifest admissi…
GOD13emad Oct 19, 2026
1dfc68c
test(linux): preserve denied-Polkit fixture after trusted bootstrap s…
GOD13emad Oct 19, 2026
a185186
test(linux): verify trusted Root bootstrap on ephemeral GitHub VM (R782)
GOD13emad Oct 19, 2026
a543819
test(security): scope native Root fixture to fixed owned /run path (R…
GOD13emad Oct 19, 2026
4731ea9
fix(linux): pin source and acceptance paths to one validated file des…
GOD13emad Oct 19, 2026
5c8cc9e
test(linux): retain native fail-closed parent receipt guard (R783)
GOD13emad Oct 19, 2026
ce9973c
test(linux): native fake receipt rejects unsafe parent before leaf (R…
GOD13emad Oct 19, 2026
03ae50b
test(security): pin privileged CI fixture paths to owned GitHub-hoste…
GOD13emad Oct 19, 2026
66ae0f1
fix(linux): verify exact managed-provider user stage in privileged guard
GOD13emad Oct 19, 2026
1b3af38
fix(security): bind Linux Root acceptance to fresh upgrade nonce (AI-…
GOD13emad Oct 19, 2026
bbab842
test(linux): refresh independent watchdog Root/Guard pins after nonce…
GOD13emad Oct 19, 2026
878e14c
test(linux): update R528 native Root candidate digest after nonce har…
GOD13emad Oct 19, 2026
e5726b0
refactor(security): unify pinned fd readers, remove racy pathname pre…
GOD13emad Oct 19, 2026
206dde4
fix(security): validate pinned leaf basename before privileged fd open
GOD13emad Oct 19, 2026
b38aa94
fix(security): restrict Root file-read leaf to literal approved names…
GOD13emad Oct 19, 2026
65ff649
feat(linux): prepare 1.5.6 dual-baseline guarded release candidate
GOD13emad Oct 20, 2026
240ddae
fix(ci): bind private R803 trusted bootstrap to exact review-only branch
GOD13emad Oct 20, 2026
2ff2d4d
feat(windows): stage private 1.5.6 monotonic in-place upgrade candidate
GOD13emad Oct 20, 2026
413d6bc
test(windows): accept bounded stderr diagnostics without pipe deadlock
GOD13emad Oct 30, 2026
915407c
fix(windows): report VPN route guard safely without route changes
GOD13emad Oct 30, 2026
4289446
chore(windows): preserve LF formatting in audit contract
GOD13emad Oct 30, 2026
44e8d9b
chore(windows): preserve LF formatting in service source
GOD13emad Oct 30, 2026
b65cc43
ci(windows): authorize exact PR64 branch in hosted native build guard
GOD13emad Oct 30, 2026
cd9a206
ci(windows): authorize exact PR64 branch in hosted rollback guard
GOD13emad Oct 30, 2026
bbad8ee
ci(windows): run hosted native installer and rollback on exact PR64 head
GOD13emad Oct 30, 2026
da2c81c
ci(windows): allow R600 exact-head attestation on PR64 hosted branch
GOD13emad Oct 30, 2026
2067341
feat(r846): prepare private monotonic v1.5.7 source and hosted native…
GOD13emad Oct 31, 2026
bb577ea
fix(r846): re-pin private v1.5.7 protected source SHA chain and hoste…
GOD13emad Oct 31, 2026
e64a0b3
fix(r846): preserve lowercase exact watchdog digest literals for inde…
GOD13emad Oct 31, 2026
4940e16
test(r847): assert private 1.5.6 rooted pair and 1.5.7 forward guard,…
GOD13emad Oct 31, 2026
34ab45e
test(r847): pin native ephemeral gates to verified v1.5.7 candidate w…
GOD13emad Oct 31, 2026
1ab328f
test(r848-hosted-156-to-157-once): hosted private 1.5.6 -> 1.5.7 in-p…
GOD13emad Oct 31, 2026
7d58758
test(r850-hosted-integrity-once): assert all 674 installed privileged…
GOD13emad Oct 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
692 changes: 606 additions & 86 deletions .github/workflows/ci.yml

Large diffs are not rendered by default.

164 changes: 162 additions & 2 deletions PROJECT_BRAIN.md

Large diffs are not rendered by default.

22 changes: 14 additions & 8 deletions build_linux_package.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,23 @@
from __future__ import annotations
import hashlib,json,pathlib,zipfile,tempfile,os
R=pathlib.Path(__file__).resolve().parent
OUT=R/"delivery"/"DirectInternetMethod_1.5.4_Linux_x86_64.zip"
ROOT="DirectInternetMethod_1.5.4_Linux_x86_64"
OUT=R/"delivery"/"DirectInternetMethod_1.5.7_Linux_x86_64.zip"
ROOT="DirectInternetMethod_1.5.7_Linux_x86_64"
FILES=[
("docs/README_PACKAGE_154.md","README.md"),
("docs/README_PACKAGE_157.md","README.md"),
("linux/install.sh","install.sh"),
("linux/uninstall.sh","uninstall.sh"),
("linux/system/install_system.sh","system/install_system.sh"),
("linux/system/control.sh","system/control.sh"),
("linux/system/selective_dns.py","system/selective_dns.py"),
("linux/system/encrypted_selective_dns.py","system/encrypted_selective_dns.py"),
("linux/system/encrypted_selective_policy.py","system/encrypted_selective_policy.py"),
("linux/system/protected_upgrade_transaction.py","system/protected_upgrade_transaction.py"),
("linux/system/upgrade_guard.py","system/upgrade_guard.py"),
("linux/system/upgrade_system.sh","system/upgrade_system.sh"),
("linux/system/uninstall_system.sh","system/uninstall_system.sh"),
("linux/app/direct_internet_method.py","app/direct_internet_method.py"),
("linux/app/socket_fallback.py","app/socket_fallback.py"),
("linux/app/router_gateway.py","app/router_gateway.py"),
("linux/app/router_gateway_core.py","app/router_gateway_core.py"),
("linux/app/user_update_transaction.py","app/user_update_transaction.py"),
Expand All @@ -36,15 +42,15 @@ def payload_bytes(src:str,dst:str)->bytes:
data=data.replace(b"\r\n",b"\n").replace(b"\r",b"\n")
return data
# Frozen originally shipped documentation; root README may describe current publication.
if sha_bytes(payload_bytes("docs/README_PACKAGE_154.md","README.md"))!="4E17DB910024D0D5841857928C45AD0EC2C5D65D30B3311FBE1864F1885AC84F":
raise SystemExit("V154_PACKAGE_README_SHA_CHANGED")
if sha_bytes(payload_bytes("docs/README_PACKAGE_157.md","README.md"))!="9F7266E65D31DE84EE62A541FF35F9621E5009BF097C256D75FD2DFC407F21FF":
raise SystemExit("R519_PACKAGE_README_SHA_CHANGED")
rows=[]
for src,dst in FILES:
p=R/src
if not p.is_file(): raise SystemExit("MISSING:"+src)
data=payload_bytes(src,dst)
rows.append({"file":dst,"bytes":len(data),"sha256":sha_bytes(data)})
manifest={"schema":1,"product":"Direct Internet Method","version":"1.5.4","platform":"linux-x86_64","files":rows}
manifest={"schema":1,"product":"Direct Internet Method","version":"1.5.7","platform":"linux-x86_64","files":rows}
OUT.parent.mkdir(parents=True,exist_ok=True)
fd,tmp_name=tempfile.mkstemp(prefix="dim-build-",suffix=".zip",dir=OUT.parent)
os.close(fd)
Expand All @@ -53,7 +59,7 @@ def payload_bytes(src:str,dst:str)->bytes:
with zipfile.ZipFile(tmp,"w",compression=zipfile.ZIP_STORED) as z:
for src,dst in sorted(FILES,key=lambda x:x[1]):
data=payload_bytes(src,dst)
zi=zipfile.ZipInfo(f"{ROOT}/{dst}",date_time=(2026,10,1,0,0,0))
zi=zipfile.ZipInfo(f"{ROOT}/{dst}",date_time=(2026,10,14,0,0,0))
zi.create_system=3
zi.external_attr=((0o755 if dst.endswith((".sh",".py")) or dst in ("runtime/ctrld","runtime/nfqws") else 0o644)&0xFFFF)<<16
zi.compress_type=zipfile.ZIP_STORED
Expand All @@ -63,7 +69,7 @@ def payload_bytes(src:str,dst:str)->bytes:
("SHA256SUMS.txt","".join(f'{x["sha256"]} {x["file"]}\n' for x in rows))
]:
data=(json.dumps(obj,ensure_ascii=False,indent=2)+"\n").encode() if isinstance(obj,dict) else obj.encode()
zi=zipfile.ZipInfo(f"{ROOT}/{name}",date_time=(2026,10,1,0,0,0))
zi=zipfile.ZipInfo(f"{ROOT}/{name}",date_time=(2026,10,14,0,0,0))
zi.create_system=3
zi.external_attr=(0o644&0xFFFF)<<16;zi.compress_type=zipfile.ZIP_STORED
z.writestr(zi,data)
Expand Down
95 changes: 95 additions & 0 deletions docs/ENCRYPTED_DNS_R516.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,95 @@
# R516 — encrypted selective DNS candidate (NOT RELEASED)

**Project:** Direct Internet Method; source authority is exact GitHub main commit
`26ef644117ea474b487186ce5e6e61e92cd02dd4`. Existing public
Stable remains **v1.5.4**. The last cumulative Project Brain accepted is R514
SHA-256 `DF4D5EFD2F412D344160745491BC5F812DCD03AF8D89B3B21FC5644D9C229300`.

## Reason and evidence

The installed Linux `linux/system/selective_dns.py` has an explicitly
opted-in but **unencrypted** UDP upstream `194.225.152.10` routed via
`dnsmasq`. It does not meet the project's encrypted-DNS requirement
under observed DNS interception.

R511 and R513 used the already bundled `ctrld v1.5.7` with verified TLS
DoH `https://76.76.10.11/p0` on bounded per-link DNS pilots. R516 added
a narrower localhost-only source-policy test (non-root, MMZ Linux on
2026-10-14) on `127.0.0.1:53534` with `systemd-run --user` and a 90-second
`RuntimeMaxSec`; system DNS, Tailscale and the Direct Method app were not
changed. Exact runtime TOML SHA-256:
`46F63805FE53B5CEDC6B7D4DF242BBF13A6CA8229BB9072058BE8DE304697954`.

Observed R516 localhost DNS:
- `www.youtube.com`: public IP addresses `142.251.150.4` through
`142.251.157.4`, no RFC1918 addresses;
- `www.googlevideo.com`: public `142.251.141.36`;
- `github.com`: public `140.82.121.3`, same as router;
- `example.com`: public Cloudflare IPs;
- direct query against original `192.168.8.1` returned forged/private
`10.10.34.36` for YouTube.
The temporary user unit exited or was stopped and the listener was absent,
with DNS and default route/Tailscale unchanged.

Independent repeat on Emad Linux (router `192.168.20.1`, `127.0.0.1:53535`)
generated **byte-exact** source TOML SHA-256
`3CC90962571AC80220B1A947C901709C64CD0DA0BD63EE5BEB6D1EC8781615DC`.
The DoH path gave legitimate public YouTube and Googlevideo addresses,
and `github.com` matched the physical router. **`example.com` timed out
because this non-target request intentionally fell back to Emad's unreliable
router DNS.** Thus the targeted model demonstrably protects listed domains;
it does NOT repair arbitrary domains, which require an explicit broader opt-in.
The user-bounded test service stopped, with physical DNS, Tailscale and
Direct Method unchanged. On Emad, the separate Seman L2TP connection remained
user-controlled and was not used to infer safe combined product mode.

Both routers' rendered Policy bytes are pinned in the **46/46 offline
negative-first tests**, and all invalid resolver addresses and unsafe ports
fail closed. MMZ direct router YouTube answers were private during the test;
Emad's physical router responses vary over time, so one public answer from
that router does not establish reliable default DNS.

The pure source policy generator in
`linux/system/encrypted_selective_policy.py` emits **byte-exact** TOML
for the validated MMZ router and temporary listener port. It has negative-first
rootless contracts in `tests/encrypted_selective_dns_policy_contract.py`.
No installer, root helper, UI, upgrade flow or published binary is wired
to this policy in R516.

## Acceptance and open gates

**PASS:** rootless isolated policy, exact runtime sample, encrypted target
DoH with real public A, original router fallback for non-target names and
bounded cleanup without product/system DNS/Tailscale changes.

**OPEN:** supervised integration into one protected updater and GUI;
opt-in token migration from *unencrypted* to *encrypted* (never silently
reinterpret consent); native per-link route-only recovery/backstop with
systemd-resolved; tests on Ubuntu 26 under actual installed user/service;
one-install update/rollback and hosted exact-SHA CI; selected-site HTTPS
access (MMZ YouTube still curl35); Seman concurrent VPN policy and
service/region HTTP403.

The generator must not be silently substituted into v1.5.4's old
`dnsmasq` controller, because the controller's assumptions (runtime
binary, state schema, consent, rollback) differ. **SUPERSEDED—DO NOT RUN**
includes older temporary R510/R512/R513/R514 and independently completed
R515 scripts; preserve previous Brain and historical raw files.

## Next exact action

In a separate transaction, design and negative-test an opt-in encrypted
controller that owns a disposable per-link resolver, enforces route-only
domains and exposes an independent bounded rollback before touching DNS.
Then modify the protected installer and GUI together in a versioned release
candidate; require a clean in-place upgrade path, native V&V, CI and
explicit promotion gates. Do not publish merely because the pure policy
and DNS lookups PASS.

Sources:
- Control D ctrld v1.5.7 configuration reference, policy precedence
(rules before networks): https://github.com/Control-D-Inc/ctrld/blob/v1.5.7/docs/config.md
- Ubuntu systemd-resolved D-Bus SetLinkDNSEx/SetLinkDomains/RevertLink:
https://manpages.ubuntu.com/manpages/resolute/man5/org.freedesktop.resolve1.5.html
- Public v1.5.4 release:
https://github.com/GOD13emad/DirectInternetMethod/releases/tag/v1.5.4
41 changes: 41 additions & 0 deletions docs/README_PACKAGE_155_RC1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
# Direct Internet Method 1.5.5-rc1 — Linux candidate (NOT RELEASED)

This archive is a versioned development candidate for upgrading the existing
single-install Linux app from public **v1.5.4**. It is not a public Stable
release and must not be offered as an automatic update.

## Scope
- Existing v1.5.4 settings, custom hosts, Router Gateway provider and
Tailscale split mode must remain intact.
- Explicit NEW consent is required for encrypted selective DNS. Previous
unencrypted third-party UDP opt-in does **not** count as consent.
- Pinned ctrld v1.5.7 DoH upstream routes only documented target domains
through an owned per-link resolver. Non-target DNS stays with the user's
physical DNS server, which may still time out or be intercepted.
- The root backend upgrade from installed protected v1.5.2 is a single-slot
accepted-SHA transaction with an independent Rollback; it is **not**
authorized for promotion until installed-native QA and hosted CI.
- Running a new root backend without an accepted user/backend pair is
forbidden. The candidate's installer must fail closed if either side is
foreign, active, or has an uncommitted conflicting transaction.

## Known limitations / open acceptance gates
The R516 targeted DNS pilot succeeded on two different LANs, and the R517
controller passed source-only and simulated rollback tests; these do not
demonstrate a successful upgrade, protection after reboot, a working
per-link resolver under live root, or access to every website.
YouTube HTTPS on the MMZ mobile ISP reset TLS even after native balanced
DPI, with a separate Strong test's root-only receipts unavailable. Seman
L2TP combined with Tailscale is not an accepted mode. Some services may
still return a region/account-specific HTTP 403.

Do not delete backups, auto-promote, disable Tailscale/Seman, reset system
DNS, reboot or shutdown as part of installation.
A native acceptance record must prove exact SHA, data preservation, service
Start/Stop/Recovery, rollback, Tailscale and physical DNS invariants before
release.

Source authority: GOD13emad/DirectInternetMethod, main commit
26ef644117ea474b487186ce5e6e61e92cd02dd4, versioned R519 branch.
Public release authority remains v1.5.4 (tag
51009372e3c2d069d7016b97773f35ee5e1e0631).
54 changes: 54 additions & 0 deletions docs/README_PACKAGE_156.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# Direct Internet Method v1.5.6 — Linux release-preparation candidate (NOT PUBLISHED)

This package is a **private validation candidate**, not a second public product
line. The current public Stable remains v1.5.4 until a separate authorized
GitHub release establishes exact asset identities and accepted test receipts.

## Supported single-install upgrade paths

- Public Linux User 1.5.4 with protected Root backend 1.5.2.
- Previously owner-accepted private Linux User 1.5.5-rc1 with protected Root
backend 1.5.5-rc1.
- No mixed, unknown, modified, symlinked, or partially installed Root/User pair
is silently upgraded. Existing custom Router Gateway data, settings,
Tailscale, DNS/physical route, and one original installation must survive.
- Windows private installations have FileVersion 1.5.5.0. Public v1.5.5 is
**not** a forward numeric upgrade for their existing updater; v1.5.6 is the
first normal three-component version that can update them directly.

## Security and recovery

Privileged protected-file reads accept only literal approved filenames with
descriptor-based no-symlink traversal, pinned SHA-256 payloads, regular-file
identity, and verified original ownership. A per-transaction random acceptance
nonce prevents replay of previous Root acceptance receipts. The new
version-specific trusted privileged bootstrap must be installed only through
normal native administrator authorization after verifying its reviewed digest.

The Root+User maintenance transaction has one private rollback slot; a separate
Root-owned watchdog is armed before protected mutation and must be settled with
real Start, Stop, Recovery, original DNS/Tailscale checks and user settings
hashes before release. A preliminary staged/apply or hosted CI PASS alone does
not authorize physical deployment or publication. Do not disable host security
policies, reboot, modify default routes, reset DNS, or automatically install
a VPN or global tunnel.

## Known acceptance limits

Some physical networks reset YouTube TLS depending on SNI even when
public Google IPs are reachable. Site acceptance must be verified on the
intended network; no universal-connectivity claim is made. The current
physical network is not a verified universal connectivity target. Historical
plain `curl` HTTP403 and isolated headless browser timeout do **not** prove
ChatGPT account sign-in. Optional encrypted selective-DNS needs explicit,
separate user consent, and its controller remains restricted to safe native
rollback and Tailscale coexistence.

Current exact source starting point: primary PR #63 commit
`b38aa94b67fb102dd24359184abaa324cd29a3ad`, plus separately scoped
R803 forward-upgrade migration work. The new candidate's final Git SHA,
package digest, hosted Linux/Windows acceptance and release decision remain
UNVERIFIED until recorded on the exact generated artifacts.

Public v1.5.4 release and protected `main` remain unchanged. This document is
a package-level statement of intended behavior, not a claim of publication.
56 changes: 56 additions & 0 deletions docs/README_PACKAGE_157.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# Direct Internet Method v1.5.7 — Linux release-preparation candidate (NOT PUBLISHED)

This package is a **private validation candidate**, not a second public product
line. The current public Stable remains v1.5.4 until a separate authorized
GitHub release establishes exact asset identities and accepted test receipts.

## Supported single-install upgrade paths

- Public Linux User 1.5.4 with protected Root backend 1.5.2.
- Previously owner-accepted private Linux User 1.5.5-rc1 with protected Root
backend 1.5.5-rc1.
- No mixed, unknown, modified, symlinked, or partially installed Root/User pair
is silently upgraded. Existing custom Router Gateway data, settings,
Tailscale, DNS/physical route, and one original installation must survive.
- Windows private installations exist with FileVersion 1.5.5.0 and 1.5.6.0.
Publishing v1.5.6 will NOT offer an update to existing private v1.5.6.
Strictly newer v1.5.7 is required after full security and native acceptance.

## Security and recovery

Privileged protected-file reads accept only literal approved filenames with
descriptor-based no-symlink traversal, pinned SHA-256 payloads, regular-file
identity, and verified original ownership. A per-transaction random acceptance
nonce prevents replay of previous Root acceptance receipts. The new
version-specific trusted privileged bootstrap must be installed only through
normal native administrator authorization after verifying its reviewed digest.

The Root+User maintenance transaction has one private rollback slot; a separate
Root-owned watchdog is armed before protected mutation and must be settled with
real Start, Stop, Recovery, original DNS/Tailscale checks and user settings
hashes before release. A preliminary staged/apply or hosted CI PASS alone does
not authorize physical deployment or publication. Do not disable host security
policies, reboot, modify default routes, reset DNS, or automatically install
a VPN or global tunnel.

## Known acceptance limits

Some physical networks reset YouTube TLS depending on SNI even when
public Google IPs are reachable. Site acceptance must be verified on the
intended network; no universal-connectivity claim is made. The current
physical network is not a verified universal connectivity target. Historical
plain `curl` HTTP403 and isolated headless browser timeout do **not** prove
ChatGPT account sign-in. Optional encrypted selective-DNS needs explicit,
separate user consent, and its controller remains restricted to safe native
rollback and Tailscale coexistence.

Current exact source starting point: primary PR #63 commit
`b38aa94b67fb102dd24359184abaa324cd29a3ad`, plus separately scoped
R803 forward-upgrade migration work. The new candidate's final Git SHA,
package digest, hosted Linux/Windows acceptance and release decision remain
UNVERIFIED until recorded on the exact generated artifacts.

Public v1.5.4 release and protected `main` remain unchanged. This document is
a package-level statement of intended behavior, not a claim of publication.

R845 engineering draft: source preflight ONLY; native installation, CI and release are NOT ACCEPTED.
Loading
Loading