Skip to content
Draft
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
44 changes: 34 additions & 10 deletions .github/workflows/soft-fold-limit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ name: Soft fold limit exact controls
paths:
- 'frontiers/soft_fold_limit_20261002/**'
- '.github/workflows/soft-fold-limit.yml'
- 'tests/test_soft_fold_workflow.py'
# bound merged sources (consumed and cited in SOURCES.json); the cited unmerged sources are bound through the API
- 'frontiers/three_fronts_20260924/LIFETIME_REMAINDER.md'
- 'imports/lifetime_parent_20260925/UNIFORM_MATRIX_CAP_AND_LIFETIME.md'
Expand Down Expand Up @@ -37,6 +38,13 @@ jobs:
- uses: actions/setup-python@5fda3b95a4ea91299a34e894583c3862153e4b97
with:
python-version: '3.11.16'
- name: Exercise complete-shell output contracts in both modes
env:
PYTHONDONTWRITEBYTECODE: '1'
run: |
set -euo pipefail
python -B -S -m unittest discover -s tests -p test_soft_fold_workflow.py -v
python -B -O -S -m unittest discover -s tests -p test_soft_fold_workflow.py -v
- name: Verify sources, replay both modes, reject mutants
env:
PYTHONDONTWRITEBYTECODE: '1'
Expand Down Expand Up @@ -150,17 +158,33 @@ jobs:
'via': where, 'current_ref_checked': now, 'dependency_merged': merged}))
script = str(root / 'fold_check.py')
expected = (root / 'RESULTS.json').read_bytes()
# Fixed native carriers measured at original checker c2e1e77e in run37464626067.
failures = {
'M1': b'mutant M1: failing controls F1_model_pins_and_weight\n',
'M2': b'mutant M2: failing controls F2_lemma_FL2_generic\n',
'M3': b'mutant M3: failing controls F3_lemma_FL1_window\n',
'M4': b'mutant M4: failing controls F4_proposition_FL4_certificates\n',
'M5': b'mutant M5: failing controls F5_theorem_FL_bookkeeping\n',
'M6': b'mutant M6: failing controls F6_corollaries\n',
'M7': b'mutant M7: failing controls F4_proposition_FL4_certificates\n',
'M8': b'mutant M8: failing controls F7_proposition_FL7_identification\n',
}
inventory = {'M1': 'F1', 'M2': 'F2', 'M3': 'F3', 'M4': 'F4',
'M5': 'F5', 'M6': 'F6', 'M7': 'F4', 'M8': 'F7'}
if (type(manifest['mutants']) is not dict or list(manifest['mutants']) != list(inventory)
or manifest['mutants'] != inventory):
raise RuntimeError('complete ordered M1-M8 control mapping required')
stages = [('baseline', [], 0, expected, b'')]
stages += [(m, ['--mutant', m], 1, b'', carrier) for m, carrier in failures.items()]
stages += [('M99', ['--mutant', 'M99'], 2, b'', b'unknown mutant label\n')]
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', 'M99'], capture_output=True, timeout=600).returncode
if rc != 2:
raise RuntimeError('unknown mutant label not rejected with exit 2')
for label, args, code, stdout, stderr in stages:
result = subprocess.run([sys.executable, *flags, script, *args], capture_output=True, timeout=600)
if (result.returncode, result.stdout, result.stderr) != (code, stdout, stderr):
raise RuntimeError(label + ': complete exit/stdout/stderr contract differs under ' + ' '.join(flags))
print(json.dumps({'stage': label, 'flags': flags, 'returncode': result.returncode,
'stdout_sha256': hashlib.sha256(result.stdout).hexdigest(),
'stderr_sha256': hashlib.sha256(result.stderr).hexdigest()}, sort_keys=True), flush=True)
print(json.dumps({'scientific_effect': 'NONE', 'mathematical_acceptance': False}))
PY
git diff --exit-code
151 changes: 151 additions & 0 deletions reviews/soft_fold_protocol_20261006/SCOPE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,151 @@
# Soft-fold workflow output contract

Dylan Roy — delegated AI engineering. Actual author OpenAI / GPT-6 Astra Pro,
`soft-fold-protocol-followthrough-20261006`; #322 pickup6016299453.
Scientific effect NONE; organizational-independence credit0. No author self-merge.

## Original sources and independently measured carriers

Source cut11f9127f00ce922e5d39b0da42af76134eb78a21. Original workflow
`.github/workflows/soft-fold-limit.yml`:10578 bytes, Git blob
839b99a47a4b9d0a79525216118717b22bad4614, SHA256
0aec5cb657a2fa37bab5f77f4f77ca6f978fbd9297a0b56b691b0f93d6ec2c6f.
Checker `frontiers/soft_fold_limit_20261002/fold_check.py` is unchanged blob
c2e1e77e9f16bc7c62fbb855b55dc2f72e5a8cc2. RESULTS is unchanged blob
604c53fadd71312baa3b4bfdbbf1760eddc4ac66.

An observation-only draft predecessor e710ba569feb5d66f5bac282de689758a9b22111
first obtained actual pinned-runtime evidence. Original run37464626067/1,
job112272450916, checked out64831bd92336733780928dc40e55db5304025123
(parents11f9127f+e710ba56), installed CPython3.11.16/Git2.55.0, authenticated
both workflow and checker, executed the exact original complete source preflight,
and ran20 authentic processes. Complete original log read; selected observations
are recorded in PR370/6016447033. No local authentic checker replay is claimed:
Git clone failed DNS and direct source download was unavailable.

Both baseline invocations exit0 with2903-byte frozen RESULTS stdout, SHA256
459bbdf3c84b77548e53824df889b13a8ebd0fe6b0d7d7cadf8a4d73821641e9,
and empty stderr. All eight named mutants exit1 with empty stdout and exactly:

`mutant LABEL: failing controls CONTROL\n`

|Label|CONTROL|
|---|---|
|M1|F1_model_pins_and_weight|
|M2|F2_lemma_FL2_generic|
|M3|F3_lemma_FL1_window|
|M4|F4_proposition_FL4_certificates|
|M5|F5_theorem_FL_bookkeeping|
|M6|F6_corollaries|
|M7|F4_proposition_FL4_certificates|
|M8|F7_proposition_FL7_identification|

M4 and M7 name the same control, but their complete label-bearing lines differ.
M99 exits2, empty stdout, exactly `unknown mutant label\n` on stderr.
All ten corresponding stdout/stderr identities match between interpreter modes.
The native main function reports the sorted complete failing-control set, so
an extra failed control is not accepted as the intended single failure.
Observation success alone did not establish a correct validator. Its temporary
workflow is removed from the final proposed tree, retained only in history.

## Repair and preservation

Only the existing inline process loop changes behavior. Require the exact native
ordered M1-M8 control mapping before children; construct the fixed20-command inventory; compare each
actual exit/stdout/stderr tuple with its independently measured complete contract.
The baseline retains byte-exact RESULTS and now requires empty stderr. Mutants
and M99 require empty stdout and their entire stderr, including the newline.
Whitespace changes are deliberately rejected for these deterministic text CLIs.
No expectations come from the child under validation; no scientific checker or
RESULTS generation, parser adapter, extra production helper/import is introduced.
Launch/timeout exceptions propagate; cwd, capture_output=True,600-second child
budget, both original modes and command arguments are unchanged. Accepted calls
print stream identities. Failure raw-output durability is not newly guaranteed.

The7599-byte source preflight remains byte-identical, SHA256
2ad437f73e5f0c27482dd272144deadc2959d85e946c40f0226c51ce6abe5211.
The137-byte final JSON/Git postflight remains byte-identical, SHA256
752aa03685dbbe54ec40c3e91b8709eb6453c41c146e9636b295b2129c586cdc.
Sizes include YAML indentation. All packet, proof, manifest, result and consumed
or cited dependency bytes remain unchanged. So do action/runtime pins, read-only
permissions and ten-minute job budget. One test trigger and two focused discovery
commands are added. Existing D5/Palm/factorial tests/** triggers provide their
separate complete repository discovery on the actual candidate.

## Test-first local execution

Actual CPython3.13.5/Git2.47.3; nine unittest methods,147 distinct committed real-Git
whole-shell scenarios. Full uninterrupted original command:111 intended assertion
failures,0 errors (132.243s). Breakdown:96 named-mutant false admissions,2 baseline
stderr false admissions,8 unknown-label false admissions,4 malformed-inventory
admissions,1 missing-wiring assertion. One valid admission and36 correct rejecting
controls remain. The original executes2504 child commands.

The unchanged final test file runs against the repaired workflow:9/9 methods,
147/147 expected outcomes in EACH normal/optimized outer mode (65.548s/65.565s).
Each has one valid admission and146 rejections,1444 actual children. No skipped
or partitioned cases and no subprocess mocks. Across the three completed runs:
441 fixture records,882 raw shell streams and5392 child invocations. These are
repetitions of147 scenario types, not441 distinct defects.

All eight mutant stages and both child modes are targeted. Every protocol
rejection must reach and stop at its exact ordered target; nine source/tree
controls and four malformed inventories must stop before any child. The final
tracked-output mutation reaches all20 invocations before Git rejects it. Real
Git configuration is isolated to temporary environments/commands; no user signing,
hooks or maintenance settings are changed. Synthetic baseline/carriers never
import expectations from production code.

The local fixtures have nonempty tracked consumed and cited source pins. Their
remote-source arrays are empty; no live API replay is claimed locally. The
original hosted preflight actually resolved consumed #242 as merged, checked
current ref54c6759e8434846941eb5218601dfef69c2c9d98 and source blob
271412dbc96a29590f5f805258e15c9e335cb430 via TREE. The unchanged historical
head/path/blob fallback was not exercised by that observation. The final dedicated
workflow must supply its own actual full-packet candidate execution.

## Required author correction after the first candidate failed

Initial published head77b1b76f1c0b4a62e2359e83903c7b86a0c0db53 had a wrong
list-only inventory assumption, mirrored in its synthetic fixtures. Actual
SOURCES.json blob37b8a38a42a2dddbc4b2fdfdbae3a9cd4e28d7a6 stores an ordered
object: M1:F1,M2:F2,M3:F3,M4:F4,M5:F5,M6:F6,M7:F4,M8:F7. The observation
loop had correctly expanded its keys, but the first implementation wrongly
required a list. Dedicated37466840210/1/job112279898907 therefore failed
at that inventory check BEFORE any genuine checker invocation, after its
complete focused suites passed74.486s/73.334s and source preflight succeeded.
This is an author implementation/fixture error, not runner failure or a false
scientific result. Original failed execution is retained in370/6016816642.

The positive fixture was corrected FIRST to the native object. Its valid-case
test then produced exactly one intended assertion failure and zero errors in
each mode against77b1. Only afterwards the matcher was corrected to validate
the exact dictionary type, key order AND all control values. Missing/reordered
mappings, duplicate-label lists and wrong value types remain rejecting controls.
The original scientific manifest was not edited. The complete147-case local
results above are the successor mapping-based tests, not the older list-fixture
results. The same147 keys and nine methods are retained, with four fixture
construction lines corrected. All earlier list-fixture executions and original
failed CI remain separate historical evidence; none is overwritten as success.

The correction changes only the inventory predicate/fixed native mapping, the
fixture's native inventory construction and this scope record. Full failure
carriers, source preflight, postflight and all scientific bytes stay unchanged.
An original review of77b1 cannot be represented as final successor review. The
corrected source requires its own applicable fresh CI and exact-source review.

## Review and integration boundary

This is engineering validation, not the proof of FL, numerical certification,
a false theorem finding, hostile-source sandbox, bounded-output service, durable
storage guarantee or independent formal alignment. Existing mathematical scope
and status remain. No complete local repository checkout or local Lean execution
is claimed. Original failures and observation-only records remain historical;
old CI cannot be rebound to the successor repair or a later main.

Require an actual nonauthor engineering review of this final three-file delta,
all applicable fresh dedicated/general checks on its actual candidate, and a
separate eligible nonauthor/nonreader integrator's live ownership/ref/diff/source/
review/thread reconciliation before ordinary expected-head merge and landed/push
verification. #322 remains open for the broader wrapper class. No new owner
approval, duplicate scientific register, main-tip lock or timer is requested.
Loading
Loading