Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
40 changes: 30 additions & 10 deletions .github/workflows/equal-height-mass.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ name: Equal-height mass controls
paths:
- 'frontiers/equal_height_mass_value_20261001/**'
- '.github/workflows/equal-height-mass.yml'
- 'tests/test_equal_height_workflow.py'
# bound merged sources (consumed and cited_only in SOURCES.json)
- 'frontiers/c7_zero_gap_limit_20260929/PROOF.md'
- 'frontiers/three_fronts_20260924/LIFETIME_REMAINDER.md'
Expand All @@ -31,6 +32,13 @@ jobs:
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97
with:
python-version: '3.11.16'
- name: Exercise complete output contracts in both modes
env:
PYTHONDONTWRITEBYTECODE: '1'
run: |
set -euo pipefail
python -B -S -m unittest discover -s tests -p test_equal_height_workflow.py -v
python -B -O -S -m unittest discover -s tests -p test_equal_height_workflow.py -v
- name: Verify sources, replay both modes, reject mutants
env:
PYTHONDONTWRITEBYTECODE: '1'
Expand Down Expand Up @@ -58,19 +66,31 @@ jobs:
raise ValueError('merged source drifted: ' + entry['path'])
if manifest.get('consumed_unmerged'):
raise ValueError('this packet declares no unmerged dependency')
mutants = manifest.get('mutants')
if type(mutants) is not list or mutants != ['M1', 'M2', 'M3']:
raise RuntimeError('complete ordered M1-M3 inventory required')
# Fixed full reports measured from unchanged checker 92ba3cde in both modes.
# Byte identity is intentional; changed diagnostics need a reviewed rebind.
contracts = {
'M1': (933, 'b6f95f60a211e6abf9c5595fcc26ebd74ea5d3c6c5ade551e94ac1ce4e98952f'),
'M2': (938, '4cd2c6f39ed2c920d0fc69fb3a1826b9cec35465c3013d00996b4b26ce788c49'),
'M3': (935, 'ac69c631970c2b5f6b1cba6c9457b5601148d0ca7ea087cc012e2772ffd9fa09'),
}
script = str(root / 'equal_height_mass.py')
expected = (root / 'RESULTS.json').read_bytes()
for flags in (['-B', '-S'], ['-B', '-O', '-S']):
out = subprocess.run([sys.executable, *flags, script], check=True, capture_output=True, timeout=600).stdout
if out != expected:
raise RuntimeError('output differs from RESULTS.json under ' + ' '.join(flags))
for m in manifest['mutants']:
rc = subprocess.run([sys.executable, *flags, script, '--mutant', m], capture_output=True, timeout=600).returncode
if rc != 1:
raise RuntimeError('mutant ' + m + ' not rejected')
rc = subprocess.run([sys.executable, *flags, script, '--mutant', 'M9'], capture_output=True, timeout=600).returncode
if rc != 2:
raise RuntimeError('unknown mutant label not rejected with exit 2')
result = subprocess.run([sys.executable, *flags, script], capture_output=True, timeout=600)
if result.returncode != 0 or result.stdout != expected or result.stderr != b'':
raise RuntimeError('baseline exit/stdout/stderr differs under ' + ' '.join(flags))
for m in mutants:
result = subprocess.run([sys.executable, *flags, script, '--mutant', m], capture_output=True, timeout=600)
size, digest = contracts[m]
if (result.returncode != 1 or result.stderr != b'' or len(result.stdout) != size
or hashlib.sha256(result.stdout).hexdigest() != digest):
raise RuntimeError('mutant ' + m + ' differs from its complete fixed rejection report')
result = subprocess.run([sys.executable, *flags, script, '--mutant', 'M9'], capture_output=True, timeout=600)
if result.returncode != 2 or result.stdout != b'' or result.stderr != b'unknown mutant label\n':
raise RuntimeError('unknown mutant label differs from fixed exit/stdout/stderr')
print(json.dumps({'scientific_effect': 'NONE', 'mathematical_acceptance': False}))
PY
git diff --exit-code
120 changes: 120 additions & 0 deletions reviews/equal_height_protocol_20261006/SCOPE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
# Equal-height mass workflow protocol repair

Dylan Roy — delegated AI engineering. Actual author: OpenAI / GPT-6 Astra Pro,
`remainder-followthrough-equal-height-20261006-r3`; pickup Math-#322/6017205382.
Scientific effect NONE; organizational-independence credit 0. No author self-merge.

## Exact source and unchanged scope

Source/base: `37bd017be7b1a48455fe651977fedc5b7105d188`.

| Source | Bytes | Git blob | SHA256 |
|---|---:|---|---|
| Original equal-height-mass.yml |3899|663324e708fbb552fb30e9bed21a697d132989a9|389736b7bc181915b9395ce59bff5f7208ed2dbc38147c3f07e3e93a6b57e9ed|
| equal_height_mass.py |10792|92ba3cdecb4344771d6d8c3f1ba22ca4fc96e864|88a00dafb5710009bd1eeb6267a6b9a197e2cca304ce2f90df5cd138951d1ace|
| RESULTS.json |929|98001bf939cdaa4a47418ebff0c8b1e13d49d35b|9054e435878a57a6bea42b8af08c0bd51770474503990334687559f7260b06c3|

The last two files are under `frontiers/equal_height_mass_value_20261001/`.
All three complete local byte strings were authenticated before execution.
No scientific checker, NOTE, README, RESULTS, GAMMA, gamma exploration,
SOURCES, consumed/cited proof, formal source or scientific register is modified.
No Monte Carlo regeneration or mathematical/numerical enclosure is claimed.

## Actual measured report contracts

The unchanged CLI was executed for baseline, M1, M2, M3 and M9 in both child
Python modes: ten complete real subprocesses, local CPython 3.13.5.
All corresponding stdout/stderr pairs match exactly; baseline equals RESULTS.

| Stage | Exit | stdout bytes | stdout SHA256 | stderr |
|---|---:|---:|---|---|
| baseline |0|929|9054e435878a57a6bea42b8af08c0bd51770474503990334687559f7260b06c3|empty|
| M1 |1|933|b6f95f60a211e6abf9c5595fcc26ebd74ea5d3c6c5ade551e94ac1ce4e98952f|empty|
| M2 |1|938|4cd2c6f39ed2c920d0fc69fb3a1826b9cec35465c3013d00996b4b26ce788c49|empty|
| M3 |1|935|ac69c631970c2b5f6b1cba6c9457b5601148d0ca7ea087cc012e2772ffd9fa09|empty|
| M9 |2|0|e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855|`unknown mutant label` plus LF|

M1 fails Q2 and Q3; M2 fails Q2, Q3 AND Q4; M3 fails Q3 only. Q1 remains true.
The full numeric values and all still-passing check details belong to the fixed
reports. A one-failed-check schema would not describe these genuine controls.
The stdout hashes do not certify the numerical values or locate an arbitrary
program's internal failure; they authenticate these measured output bytes.

The repair requires the native ordered LIST M1/M2/M3 before any child; exact
baseline exit/stdout with empty stderr; each mutant's exit1/empty stderr and
entire frozen stdout size/hash; and M9's exit2/empty stdout/exact stderr.
Report byte identity, including formatting, is intentional. A changed
deterministic report requires reviewed rebinding, not a tolerance change.
Expectations are fixed before validation, never learned from the child under test.

Ten additional genuine subprocesses through the exact changed loop matched
every characterization exit and stream hash. A pass-through recorder retained
the real results without replacing them. This loop-only replay is distinct
from a complete real-packet manifest/dependency replay, which requires hosted CI.

## Test-first whole-shell regression

Eight unittest methods contain 96 distinct, complete-shell synthetic scenarios.
Real committed temporary Git repositories, real Bash/Python children and
nonempty packet/consumed/cited inputs are used. No subprocess outputs are mocked.
Each fixture executes the actual workflow verification shell. Expected reports
are independently captured literals in the test source, not imported from the
production matcher. Test-only signing/maintenance switches apply only to
disposable commits; no user or persistent project setting is changed.

The same final test bytes were run against both original and repaired workflows:

| Workflow / outer mode | Methods / fixture outcome | Real children |
|---|---|---:|
| original / normal |74 intended assertion failures, 0 errors; 96 cases|811|
| original / optimized |74 intended assertion failures, 0 errors; 96 cases|811|
| repair / normal |8/8 methods; 96/96 expected outcomes|471|
| repair / optimized |8/8 methods; 96/96 expected outcomes|471|

The original's 74 assertions comprise 68 noncanonical report admissions
(62 semantic protocol failures, six formatting-only cases), five bad inventory
admissions and one missing wiring assertion. The original valid control and
22 source/exit/postflight rejections behave correctly. The repaired source
admits one valid case and rejects 95 cases. Both complete repaired runs finish
without skips or partitioning (28.933s and 28.593s locally).

Tests reach every named mutant in each child mode, including silence, unrelated
crash, wrong/noisy/trailing reports, wrong label/exit and deliberate formatting.
Same-length text and nested-type corruptions distinguish hash validation from
length-only checks. Baseline stderr and M9 output/reason are separately tested.
Every protocol rejection must stop at the exact ordered target prefix; seven
source guards and five malformed inventories stop before any child. The
tracked-output mutation reaches all ten children before final Git rejection.

An earlier 84-case test revision produced 62 intended assertions in both modes;
it was augmented with twelve equal-length corruption cases BEFORE the fix.
Those earlier executions are retained as development history, not added to the
384 final fixture executions or reported as different product defects.
Two unavailable execution launches produced no credited numerical result;
all counted commands completed with captured outputs.

## Source conservation and limitations

The complete 1467-byte original source preflight is byte-identical, SHA256
`d625514545e6d76b6271dc2f8641eafe94bb7197e2c1a6b9d0d0ed24362f860a`.
The final 137-byte JSON/Git postflight is byte-identical, SHA256
`752aa03685dbbe54ec40c3e91b8709eb6453c41c146e9636b295b2129c586cdc`.
Sizes include YAML indentation. Only the process validation loop, one test
trigger and two full discovery commands are changed/added. Existing action
pins, Python 3.11.16, read-only permission, inherited cwd, 600-second child
budget and 20-minute job budget remain unchanged. Launch/timeout exceptions
are not caught. The final Git guard and original scientific qualifications stay.

The local checkout is an authenticated source subset, not the full repository.
No local Lean or complete real-packet dependency replay is claimed. Hosted
dedicated/general/applicable broader results must be read on the actual
candidate; local Python 3.13.5 does not substitute for pinned-runtime success.
This is not a hostile-source sandbox, bounded-output-memory service, durable
evidence guarantee, numerical enclosure, theorem proof or global wrapper audit.
#322 remains open for the wider affected class.

One exact-source nonauthor engineering review, any required successor read,
and actual current-candidate checks precede a separate eligible nonauthor/
nonreader integration. Preserve original failed evidence, all reviewed blobs
and source interfaces; use guarded normal integration and verify the landed
tree and its own push evidence. A later base does not inherit old CI receipts.
Loading
Loading