Skip to content

Commit a23101e

Browse files
Repair native ACL fixture cleanup and strict phase qualification
1 parent b569698 commit a23101e

11 files changed

Lines changed: 3281 additions & 94 deletions

‎.github/workflows/test.yml‎

Lines changed: 42 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -72,22 +72,33 @@ jobs:
7272
python -m unittest discover -s tests -p "test_windows_fence_diagnostics.py" -v 2>&1 | tee "$RUNNER_TEMP/windows-fence-diagnostics-tests.log"
7373
grep -Eq '^Ran 18 tests in ' "$RUNNER_TEMP/windows-fence-diagnostics-tests.log"
7474
grep -Eq '^OK[[:space:]]*$' "$RUNNER_TEMP/windows-fence-diagnostics-tests.log"
75-
- name: Run the thirty-seven native-descriptor, alias-cleanup, restoration, token and access-denied directory-creation probe cases (twenty-nine portable, eight native)
75+
- name: Run the 155 native-descriptor, installation-component, restoration, token, privilege-isolation, launcher-containment, privilege-restoration, child-evidence, standalone-script, runtime-main-section, child-stop-before-restoration, launcher-consumer fixture-retention, per-fixture installation-restoration and access-denied directory-creation probe cases (one hundred thirty-nine portable, sixteen native)
7676
if: always()
7777
shell: bash
7878
run: |
7979
set -o pipefail
8080
python -m unittest discover -s tests -p "test_windows_native_acl.py" -v 2>&1 | tee "$RUNNER_TEMP/windows-native-acl-tests.log"
81-
grep -Eq '^Ran 37 tests in ' "$RUNNER_TEMP/windows-native-acl-tests.log"
81+
grep -Eq '^Ran 155 tests in ' "$RUNNER_TEMP/windows-native-acl-tests.log"
8282
grep -Eq '^OK[[:space:]]*$' "$RUNNER_TEMP/windows-native-acl-tests.log"
83-
- name: Run the forty-four native v1/v4 fence, receipt-validator and phase-ownership trustee cases
83+
- name: Positive gate, supported context required - the strict v1 producer cases in a child whose own primary token has every privilege removed
8484
if: always()
8585
shell: bash
8686
run: |
8787
set -o pipefail
88+
python -m unittest tests.test_paper_pilot_phase_trustees_v1_v4.V1FenceTrusteeTests.test_the_strict_positive_producer_path_runs_in_a_restricted_primary_token_child -v 2>&1 | tee "$RUNNER_TEMP/windows-required-positive.log"
89+
grep -Eq '^Ran 1 test in ' "$RUNNER_TEMP/windows-required-positive.log"
90+
grep -Eq '^OK[[:space:]]*$' "$RUNNER_TEMP/windows-required-positive.log"
91+
- name: Run the forty-five native v1/v4 fence, receipt-validator and phase-ownership trustee cases as the original runner token (context-aware, the branch each case took is printed)
92+
if: always()
93+
shell: bash
94+
run: |
95+
set -o pipefail
96+
export JRAPHYTE_BRANCH_LOG="$RUNNER_TEMP/windows-branches.jsonl"
8897
python -m unittest discover -s tests -p "test_paper_pilot_phase_trustees_v1_v4.py" -v 2>&1 | tee "$RUNNER_TEMP/windows-phase-trustees.log"
89-
grep -Eq '^Ran 44 tests in ' "$RUNNER_TEMP/windows-phase-trustees.log"
98+
grep -Eq '^Ran 45 tests in ' "$RUNNER_TEMP/windows-phase-trustees.log"
9099
grep -Eq '^OK[[:space:]]*$' "$RUNNER_TEMP/windows-phase-trustees.log"
100+
echo "original-token branches (supported_positive = positive qualification; unsupported_refusal = negative evidence only):"
101+
cat "$RUNNER_TEMP/windows-branches.jsonl"
91102
- name: Run the existing three v1 and eight v4 native fence cases as the runner identity
92103
if: always()
93104
shell: bash
@@ -99,6 +110,14 @@ jobs:
99110
python -m unittest discover -s tests -p "test_paper_pilot_phase_cutover_guarded_v4.py" -v 2>&1 | tee "$RUNNER_TEMP/windows-phase-v4.log"
100111
grep -Eq '^Ran 8 tests in ' "$RUNNER_TEMP/windows-phase-v4.log"
101112
grep -Eq '^OK[[:space:]]*$' "$RUNNER_TEMP/windows-phase-v4.log"
113+
- name: Run the six converter worker parent-process cases (four portable, genuine Windows venv redirector chain and exit-259 liveness native; refs #94)
114+
if: always()
115+
shell: bash
116+
run: |
117+
set -o pipefail
118+
python -m unittest discover -s tests -p "test_paper_converter_worker_parent.py" -v 2>&1 | tee "$RUNNER_TEMP/windows-converter-worker-parent.log"
119+
grep -Eq '^Ran 6 tests in ' "$RUNNER_TEMP/windows-converter-worker-parent.log"
120+
grep -Eq '^OK[[:space:]]*$' "$RUNNER_TEMP/windows-converter-worker-parent.log"
102121
- name: Run the eighteen sdist/wheel discovery cases (both build-backend spellings, missing and ambiguous artifacts)
103122
if: always()
104123
shell: bash
@@ -125,11 +144,17 @@ jobs:
125144
grep -Eq '^Ran 18 tests in ' "$RUNNER_TEMP/sdist-discovery.log"
126145
grep -Eq '^OK[[:space:]]*$' "$RUNNER_TEMP/sdist-discovery.log"
127146
python -m unittest discover -s tests -p "test_windows_native_acl.py" -v 2>&1 | tee "$RUNNER_TEMP/sdist-native-acl.log"
128-
grep -Eq '^Ran 37 tests in ' "$RUNNER_TEMP/sdist-native-acl.log"
147+
grep -Eq '^Ran 155 tests in ' "$RUNNER_TEMP/sdist-native-acl.log"
129148
grep -Eq '^OK[[:space:]]*$' "$RUNNER_TEMP/sdist-native-acl.log"
149+
python -m unittest tests.test_paper_pilot_phase_trustees_v1_v4.V1FenceTrusteeTests.test_the_strict_positive_producer_path_runs_in_a_restricted_primary_token_child -v 2>&1 | tee "$RUNNER_TEMP/sdist-required-positive.log"
150+
grep -Eq '^Ran 1 test in ' "$RUNNER_TEMP/sdist-required-positive.log"
151+
grep -Eq '^OK[[:space:]]*$' "$RUNNER_TEMP/sdist-required-positive.log"
152+
export JRAPHYTE_BRANCH_LOG="$RUNNER_TEMP/sdist-branches.jsonl"
130153
python -m unittest discover -s tests -p "test_paper_pilot_phase_trustees_v1_v4.py" -v 2>&1 | tee "$RUNNER_TEMP/sdist-phase-trustees.log"
131-
grep -Eq '^Ran 44 tests in ' "$RUNNER_TEMP/sdist-phase-trustees.log"
154+
grep -Eq '^Ran 45 tests in ' "$RUNNER_TEMP/sdist-phase-trustees.log"
132155
grep -Eq '^OK[[:space:]]*$' "$RUNNER_TEMP/sdist-phase-trustees.log"
156+
cat "$RUNNER_TEMP/sdist-branches.jsonl"
157+
unset JRAPHYTE_BRANCH_LOG
133158
python -m unittest discover -s tests -p "test_paper_pilot_phase_fence.py" -v 2>&1 | tee "$RUNNER_TEMP/sdist-phase-v1.log"
134159
grep -Eq '^Ran 3 tests in ' "$RUNNER_TEMP/sdist-phase-v1.log"
135160
grep -Eq '^OK[[:space:]]*$' "$RUNNER_TEMP/sdist-phase-v1.log"
@@ -148,12 +173,20 @@ jobs:
148173
mkdir "$RUNNER_TEMP/outside-checkout"
149174
cd "$RUNNER_TEMP/outside-checkout"
150175
"$INSTALLED" -I "$SDIST/tools/installed_phase_authority_check.py" --require-windows "${DECLARED[@]}" | tee "$RUNNER_TEMP/installed-phase-check.json"
151-
python -c "import hashlib,json,os,sys;d=json.load(open(os.environ['RUNNER_TEMP']+'/installed-phase-check.json'));assert d['native_windows']=='RUN' and len(d['portable_checks'])==13 and len(d['windows_checks'])==34 and d['fixture_utility_sha256']==hashlib.sha256(open(sys.argv[1]+'/tools/windows_native_acl.py','rb').read()).hexdigest() and all(d['portable_checks'].values()) and all(d['windows_checks'].values()),d" "$SDIST"
176+
python -c "import hashlib,json,os,sys;d=json.load(open(os.environ['RUNNER_TEMP']+'/installed-phase-check.json'));assert d['native_windows']=='RUN' and len(d['portable_checks'])==13 and len(d['windows_checks'])==35 and d['fixture_utility_sha256']==hashlib.sha256(open(sys.argv[1]+'/tools/windows_native_acl.py','rb').read()).hexdigest() and d['fixture_acl_sha256']==hashlib.sha256(open(sys.argv[1]+'/tools/windows_fixture_acl.py','rb').read()).hexdigest() and all(d['portable_checks'].values()) and all(d['windows_checks'].values()),d" "$SDIST"
152177
- name: Sanitized Windows trustee serialization diagnostics
153178
if: always()
154179
continue-on-error: true
155180
run: python tools/windows_fence_diagnostics.py
156-
- name: Sanitized native directory-creation denial probe and candidate-shape matrix
181+
- name: Sanitized native directory-creation denial probe, candidate-shape matrix, privilege isolation and installation observation
157182
if: always()
158183
continue-on-error: true
159-
run: python tools/windows_native_acl.py
184+
shell: bash
185+
run: |
186+
set -o pipefail
187+
python tools/windows_native_acl.py | tee "$RUNNER_TEMP/native-probe.json"
188+
- name: Assert the standalone diagnostics script ran past its bootstrap and checkout imports on the runner
189+
if: always()
190+
shell: bash
191+
run: |
192+
python -c "import json,os;d=json.load(open(os.environ['RUNNER_TEMP']+'/native-probe.json'));assert d['os_name']=='nt' and d['completed_stages'][:4]==['bootstrap','checkout_imports','native_api','identity'] and 'error' not in d,d"

‎MANIFEST.json‎

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
"files": [
88
{
99
"path": ".github/workflows/test.yml",
10-
"bytes": 9858,
11-
"sha256": "1660c1eb8611a7db49a6eb78aa82a33be4de815fc25917a8e8e7922c762d628b"
10+
"bytes": 12883,
11+
"sha256": "1b148dbe243b919564f06d96d66c4a2698e45a9b9b7772f4331abdc33824a2fd"
1212
},
1313
{
1414
"path": ".gitignore",
@@ -737,8 +737,8 @@
737737
},
738738
{
739739
"path": "docs/paper_pilot_phase_transition.md",
740-
"bytes": 18288,
741-
"sha256": "e28409b2c6a356b85ce27857b282fc2819628addc676cf74ca8c95c5a40a865d"
740+
"bytes": 24745,
741+
"sha256": "ad69ebbe19ad4d7a6f87bc7e3b3818ee091f6a606c80d6ae496f417a81414ad1"
742742
},
743743
{
744744
"path": "docs/paper_pilot_workflow.md",
@@ -2292,8 +2292,8 @@
22922292
},
22932293
{
22942294
"path": "src/paper_pilot_phase_cutover.py",
2295-
"bytes": 6198,
2296-
"sha256": "f7ca0f1e8acb97ac263966bc5371abd43d23c9279a18bc4847643d3acb7945ee"
2295+
"bytes": 9460,
2296+
"sha256": "1bca8c2c85e3b7cf871da6af26076274f1dde925d424e28ac026a7d6b2f5f458"
22972297
},
22982298
{
22992299
"path": "src/paper_pilot_phase_cutover_guarded_v2.py",
@@ -2487,8 +2487,8 @@
24872487
},
24882488
{
24892489
"path": "tests/phase_trustee_harness.py",
2490-
"bytes": 23009,
2491-
"sha256": "68cfc191cfe98ebd45b3450a72def14a5ea118fb0808ac65122312922deb6dcc"
2490+
"bytes": 28549,
2491+
"sha256": "77a5c4ab973e8a6d3e99128ad92f06311fc9102c43ec04844c694a44b6f373d0"
24922492
},
24932493
{
24942494
"path": "tests/test_abstract_validation.py",
@@ -2662,8 +2662,8 @@
26622662
},
26632663
{
26642664
"path": "tests/test_paper_pilot_phase_fence.py",
2665-
"bytes": 5246,
2666-
"sha256": "ec0b8409b713a2f89c2ecc567bf2f5a3c983999420e655eba0eff17ee9329876"
2665+
"bytes": 6030,
2666+
"sha256": "9b48c17fce8ea4c2e915c238cf3fcc7eb4ae8f282992519a71cfb2dadc7fe5f7"
26672667
},
26682668
{
26692669
"path": "tests/test_paper_pilot_phase_import_lock.py",
@@ -2677,13 +2677,13 @@
26772677
},
26782678
{
26792679
"path": "tests/test_paper_pilot_phase_trustees_model.py",
2680-
"bytes": 33998,
2681-
"sha256": "4a2b6bb8f4cf5cf9f3b515725503b28ce43cd119e428755eea9f107f55ce2986"
2680+
"bytes": 48198,
2681+
"sha256": "061fa1f60e1b7335ba878fe3616083688349758a93fe79dff1269e2de02c5373"
26822682
},
26832683
{
26842684
"path": "tests/test_paper_pilot_phase_trustees_v1_v4.py",
2685-
"bytes": 38208,
2686-
"sha256": "172e6b742304dde987045badd3f567d2b6f436135d54559b35c248332d0fcba1"
2685+
"bytes": 43328,
2686+
"sha256": "f83e09133ca97d3e57e40d17621c18939835f9ed0dfae04a0b003071af44eee1"
26872687
},
26882688
{
26892689
"path": "tests/test_paper_qualification_v1.py",
@@ -2992,8 +2992,8 @@
29922992
},
29932993
{
29942994
"path": "tests/test_windows_native_acl.py",
2995-
"bytes": 33718,
2996-
"sha256": "33b9f7f195eb0b1b7d6b9af2c8bdea5d3548a5215e0cc97faa08a1b5ac73193d"
2995+
"bytes": 131065,
2996+
"sha256": "a466bf28608b379ca8e4745e3f953e7354d7ed5f8a0326ef5821517b96acf5c4"
29972997
},
29982998
{
29992999
"path": "tools/build_schemas.py",
@@ -3022,8 +3022,8 @@
30223022
},
30233023
{
30243024
"path": "tools/installed_phase_authority_check.py",
3025-
"bytes": 22735,
3026-
"sha256": "b7b949f676a60e9a678ed0e8dd3c71df88c6acaac08b14aab18a1e969a97792d"
3025+
"bytes": 24082,
3026+
"sha256": "de288c30423b0decc6777f4246d911943700c592988bad1b87b8a7d7fb9c0cdf"
30273027
},
30283028
{
30293029
"path": "tools/legacy_hardening.py",
@@ -3097,8 +3097,8 @@
30973097
},
30983098
{
30993099
"path": "tools/windows_native_acl.py",
3100-
"bytes": 28625,
3101-
"sha256": "aa019a497081c29af9d2675fa9ff691476c513a7a731631e9b98cdbcced69671"
3100+
"bytes": 71797,
3101+
"sha256": "36cff50790ac00d76e1fdf0425da8a25062f193cd0a28103a638135d3124c58b"
31023102
},
31033103
{
31043104
"path": "trace_gc/__init__.py",

0 commit comments

Comments
 (0)