Publish private mixed Project evidence with retained failure boundaries
This commit is contained in:
+18
-2
@@ -1,4 +1,4 @@
|
||||
# Verified branch checkpoint — 2026-09-23 UTC
|
||||
# Verified branch checkpoint — 2026-09-24 UTC
|
||||
|
||||
This describes Codex-956atf's contribution, not a combined release.
|
||||
[PROJECT_GOAL.md](../PROJECT_GOAL.md) remains authoritative. The complete OA/SA
|
||||
@@ -188,7 +188,23 @@ focused/full executable after Cargo rebuilt it. This syntax witness does not
|
||||
resolve or admit a complete mixed Project, activate public source8 or implement
|
||||
editing composition. The accepted
|
||||
[complete-Project contract](analysis-mixed-project-contract-20260923.md) defines
|
||||
the next semantic boundary; it is a design, not runtime acceptance.
|
||||
the semantic boundary implemented by the separate private checkpoint below.
|
||||
|
||||
Published private complete-Project source
|
||||
**aaec78fcc9b273d1485497126392afdd1fb2e54e** retains the original syntax, bundle,
|
||||
budgets and limits while resolving/admitting the complete ordinary/typed model.
|
||||
Its [Windows evidence](experiments/analysis-mixed-project-20260924/README.md)
|
||||
distinguishes runtime source **71cadfa0cd0e112caa29588d2494753301f3cb6c** from
|
||||
the formatting-only aaec successor. Strict core all-target Clippy, actual listing
|
||||
209, Project 13/13, shared validation 2/2 and four exact public compatibility
|
||||
cases pass on 544 unchanged inputs. Full lib remains **193 passed / 16 failed**,
|
||||
preserving all prior statuses and exact unsupported-public-source8 diagnostics.
|
||||
Successor formatting remains failed on eight inherited blocks in five unchanged
|
||||
files; no aaec runtime rerun is claimed. The parent-reviewed portable verifier
|
||||
and all 15 finite controls pass, with independent raw-output/pin readback.
|
||||
This private source is not integrated into the application prerelease. Public
|
||||
source8, mixed indexing/edit composition, checked output and UI parity remain
|
||||
unfinished.
|
||||
|
||||
The [reviewed S1/S7 assessment](issue28-s1-s7-assessment-956atf-20260923.md)
|
||||
distinguishes static analysis/case overlays from contextual inheritance,
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
* -text
|
||||
@@ -0,0 +1,28 @@
|
||||
# Finite v2 controls — execution pending parent review
|
||||
|
||||
`controls.py` has **15 cases total**: one unchanged positive, then fourteen negatives. It stops on the first unexpected result or timeout. It does not import the verifier. After review only:
|
||||
|
||||
```text
|
||||
python -B controls.py --repo /path/to/ARCADIA-Studio --package /path/to/v2-package --out /fresh/path/to/controls-results
|
||||
```
|
||||
|
||||
The positive uses original package bytes. Each negative rebuilds one transient ZIP; all changed inner log/input/outcome bindings, payload hashes, ZIP bytes/SHA and verifier bytes/SHA are refreshed, except the two intentional top-level pin controls. Repeated-target artifact negatives therefore reach the new identity check with valid transport hashes. Only compact stdout/stderr/result files remain. Temporary paths are checked beneath the fresh result directory before automatic cleanup; source/package files remain untouched. Peak additional archive storage is about 0.5 MiB, not a retained corpus. Per-case timeout defaults to300 seconds (configurable30–600); timeout is not a successful refusal.
|
||||
|
||||
| Case | Mutation / expected discriminator |
|
||||
| --- | --- |
|
||||
| archive-pin | Append ZIP transport bytes after recording its pin; top-level archive pin differs. |
|
||||
| verifier-pin | Corrupt only verifier descriptor; top-level verifier pin differs. |
|
||||
| route-pair-artifact | Change only route-error artifact SHA, with refreshed receipt/transport hashes; repeated integration target artifact differs. |
|
||||
| source-pair-artifact | Change only aggregate-reference artifact SHA; same pair-identity refusal. |
|
||||
| missing-new-outcome | Remove one new full-suite outcome and adjust pass count; exact runtime membership refuses. |
|
||||
| changed-inherited-diagnostic | Alter one old diagnostic column while retaining name/status/header error; exact diagnostic comparison refuses. |
|
||||
| forged-git-input | Consistently forge one input SHA across all ten71 manifests; immutable Git bytes refuse. |
|
||||
| missing-failed-history | Remove b9 failed-focus triple with refreshed membership; mandatory payload inventory refuses. |
|
||||
| integration-zero-test | Synthesize successful zero-test result/footer; exactly-one expected outcome refuses. |
|
||||
| integration-ignored | Replace one ok outcome/footer with ignored; required status refuses. |
|
||||
| integration-wrong-command | Remove `--exact` while retaining genuine outcomes; exact argv refuses. |
|
||||
| changed-formatter-body | Alter same inherited body in71/aaec fmt logs; published baseline comparison refuses. |
|
||||
| changed-successor-diff | Append text to correction patch; immutable Git diff refuses. |
|
||||
| duplicate-zip-member | Add duplicate member and refresh archive pin; ZIP uniqueness refuses. |
|
||||
|
||||
A refusal at a different earlier check is an unexpected result, not a pass for the intended discriminator. The driver checks original package hashes after every case and at completion. It launches only the reviewed verifier with read-only Git access, never subject code, compiler, GUI, archived launchers or binaries. This is a finite proposal, not evidence of executed controls.
|
||||
@@ -0,0 +1,19 @@
|
||||
# Private mixed Project evidence — unverified proposal
|
||||
|
||||
Current source `aaec78fcc9b273d1485497126392afdd1fb2e54e`; actual runtime source `71cadfa0cd0e112caa29588d2494753301f3cb6c`. This compact package is assembled for review. **Its portable verifier has not been executed.** Existing local readbacks are author evidence; package-level acceptance is pending review and an unchanged positive/control run.
|
||||
|
||||
Recorded 71 results: strict all-target Clippy PASS; actual listing209; exact Project13 and shared-validation2 PASS; four literal public compatibility cases PASS. Full core lib **FAILED:193 passed/16 failed**, retaining every a578 baseline name/status and exact unsupported-public-source8 failure diagnostic. b9 strict/list success and Project focus **FAILED11/2** are preserved. The two failed one-warning test expectations were corrected at71 without production changes.
|
||||
|
||||
The aaec78f formatting successor changes only two ConstructedDeclarations wraps and optional trailing commas. An author readback reports its direct file formatting check passed; that check is not a raw gate independently checked by this verifier. The recorded full fmt **FAILED** with exactly eight unchanged baseline blocks in five files. At71, fmt failed on those eight plus the two corrected language.rs blocks. No fresh aaec Clippy/list/runtime result is claimed. The source diffs and immutable 544-input manifests distinguish each revision.
|
||||
|
||||
The ZIP contains raw current receipts/logs/input manifests, one copy of each hash-pinned launcher, the two exact Git correction diffs and concise notes. It contains no binaries or caches. Baseline evidence is referenced through published commit `85cc27fed02ce770c30c9447f35c4ab4d24f9644`, archive `harness/experiments/analysis-mixed-syntax-20260923/evidence.zip`, SHA-256 `f39aab1639ce14e4fe61744cf8881b0883ecbe131fefd6bc65c18edd8c81215d`. The verifier reads that immutable archive for actual listing194/full178/16, historical152 linkage and nine old formatter blocks; it does not duplicate or execute the earlier package.
|
||||
|
||||
After review, run with a checkout containing all named Git objects:
|
||||
|
||||
```text
|
||||
python -B verify.py --repo /path/to/ARCADIA-Studio
|
||||
```
|
||||
|
||||
Only read-only Git commands execute, with replace objects, external diff, textconv and variable diff rendering disabled. ZIP payloads are read without extraction. Archived launchers, helpers and binaries never execute. The manifest pins the top-level ZIP and the executing packaged verifier. The verifier checks safe unique members/JSON keys, exact payload membership/hashes, complete immutable input membership/bytes, actual output names/footers/statuses, exact argv and the selected recorded environment fields, executable identity across listing/focus/full and each repeated integration-target pair, failed-history preservation, exact diagnostic causes and formatter bodies, and exact correction diffs. It does not capture or prove the complete process environment. Receipt hashes establish consistency, not authenticated authorship or an independent rerun. Keep an externally anchored package commit/checksum during transport.
|
||||
|
||||
The notes contain full commands/environment and the source contract/implementation references. This is private complete-Project resolution evidence only. It does not activate public source8, complete mixed indexing/updating/export, prove GUI parity, or establish application completion. Full-suite and formatting failures remain explicit.
|
||||
@@ -0,0 +1,29 @@
|
||||
# Private mixed Project: verified evidence consistency
|
||||
|
||||
The unchanged v2 package passed its portable consistency verifier, and **all15 finite controls passed**: one unchanged positive and14 deliberate corruptions reached their intended acceptance/refusal checks. An independent read-only review confirmed every raw output/result pin and all original package bytes. See [control summary](controls/summary.json), [positive output](controls/unchanged-positive.stdout.log), and [independent review](controls/REVIEW.md). The parent reviewed the verifier and driver before executing this finite set, read the independent results, and preserved its original bytes for delivery.
|
||||
|
||||
Source is `aaec78fcc9b273d1485497126392afdd1fb2e54e`; actual runtime-tested source is `71cadfa0cd0e112caa29588d2494753301f3cb6c`. At71: strict all-target core Clippy PASS; actual listing209; Project13/13 and shared-validation2/2 PASS; four exact public compatibility cases PASS. Full core lib remains **FAILED:193 passed/16 failed**, preserving all194 a578 baseline statuses and exact failure diagnostics rejecting public source8. These failures are not passes or application acceptance. The earlier b9 Project focus **FAILED11/2** remains archived; its one-warning expectations were corrected by the test-only71 commit.
|
||||
|
||||
The aaec successor changes only two ConstructedDeclarations wraps and optional trailing commas. Its full formatter gate remains **FAILED with eight inherited blocks** in five unchanged baseline files. The two new language.rs blocks from71 are gone. No new aaec Clippy/list/runtime result is claimed. An author readback reports the direct language.rs rustfmt check passed; that is distinct from the raw full-format gate independently checked by the verifier.
|
||||
|
||||
The source contract is [aecee2a: analysis-mixed-project-contract-20260923.md](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/src/commit/aecee2aff3f4410648a501a70cb2e6160c81adc5/harness/analysis-mixed-project-contract-20260923.md). The implementation note is [aaec78f: analysis-mixed-project-implementation-20260923.md](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/src/commit/aaec78fcc9b273d1485497126392afdd1fb2e54e/harness/analysis-mixed-project-implementation-20260923.md). Source aaec78f is published on `codex/analysis-mixed-project-956atf-20260923` and its remote ref was verified. The implementation note describes the original source checkpoint; the executed results are recorded here without rewriting that historical architectural record.
|
||||
|
||||
The baseline is the separately [published85cc package](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/src/commit/85cc27fed02ce770c30c9447f35c4ab4d24f9644/harness/experiments/analysis-mixed-syntax-20260923/README.md), whose `evidence.zip` SHA256 is `f39aab1639ce14e4fe61744cf8881b0883ecbe131fefd6bc65c18edd8c81215d`. Its immutable archive supplies listing194/full178/16, historical152 linkage and prior formatter blocks. It is referenced rather than duplicated.
|
||||
|
||||
## Reproduce the consistency check
|
||||
|
||||
Use a checkout containing the named b9/71/aaec source objects and published85cc baseline archive. Source/runtime commands and recorded environment fields remain in the ZIP's author handoff and raw gate receipts.
|
||||
|
||||
```text
|
||||
python -B verify.py --repo /path/to/ARCADIA-Studio
|
||||
```
|
||||
|
||||
The verifier performs read-only Git queries and reads ZIP members without extraction. It does not execute archived launchers, subject tests, binaries or compilers. It checks the top-level ZIP/verifier pins, exact payload/input membership and immutable Git bytes, actual output names/statuses/footers, exact commands and selected recorded environment fields, artifact identities across listing/focus/full and repeated integration-target pairs, failure history/causes, formatter bodies and exact correction diffs. It does not establish the full process environment, authenticated receipt authorship, or an independent subject rerun.
|
||||
|
||||
Git queries use `--no-replace-objects`. Diff queries disable external diff/textconv/color and explicitly set prefixes, Myers algorithm, indent heuristic, three-line context, seven-character abbreviation and no renames. **Not every Git rendering option is overridden:** a nondefault `diff.interHunkContext` can merge hunks and cause a false refusal of the exact patch comparison. The pinned verifier is unchanged. Run with the original/default setting or set the invoking process's Git configuration to `diff.interHunkContext=0`; do not weaken the exact comparison or edit archived patches to bypass refusal.
|
||||
|
||||
## Preserved package and limits
|
||||
|
||||
The ZIP, manifest, verifier, control driver and finite control plan are byte-exact copies of the tested v2 package. Its original README is retained as [ORIGINAL-PROPOSAL-README.md](ORIGINAL-PROPOSAL-README.md). The manifest's `NOT RUN` assembly status and original notes are preserved historical text; the completed execution status is recorded separately in the control evidence above. [publication-manifest.json](publication-manifest.json) pins every delivered file except itself. All raw control outputs are under `controls/`; transient corrupted archives were not retained.
|
||||
|
||||
This remains **private complete-Project resolution evidence**. Public source8 is not activated; mixed indexing/updating/export and full graphical/textual parity remain deferred. This package neither integrates private parser work into prerelease#37 nor claims shipped application/GUI completion. The private source branch and this evidence are delivered separately from the application release branch. Full-suite and formatting failures remain explicit.
|
||||
@@ -0,0 +1,211 @@
|
||||
"""Finite proposal controls. Run only AFTER parent review; never runs subject code.
|
||||
|
||||
One unchanged positive, then fourteen negatives, stopping on the first unexpected
|
||||
result or timeout. Only one transient ZIP exists; retain compact logs/results.
|
||||
"""
|
||||
from pathlib import Path
|
||||
import argparse
|
||||
import copy
|
||||
import hashlib
|
||||
import json
|
||||
import re
|
||||
import subprocess
|
||||
import sys
|
||||
import tempfile
|
||||
import zipfile
|
||||
|
||||
FULL = 'gates/project-full-71cadfa-1'
|
||||
PROJECT_NAME = 'language::analysis_source::mixed::project::tests::complete_oa_sa_forward_model_warning_and_original_authority'
|
||||
CASES = [
|
||||
('archive-pin', 'Top-level archive pin differs'),
|
||||
('verifier-pin', 'Top-level verifier pin differs'),
|
||||
('route-pair-artifact', 'Repeated integration target artifact differs'),
|
||||
('source-pair-artifact', 'Repeated integration target artifact differs'),
|
||||
('missing-new-outcome', 'Missing/extra runtime outcomes'),
|
||||
('changed-inherited-diagnostic', 'Exact historical failure diagnostics changed'),
|
||||
('forged-git-input', 'Git input bytes mismatch'),
|
||||
('missing-failed-history', 'Missing/extra package payload'),
|
||||
('integration-zero-test', 'Missing/extra runtime outcomes'),
|
||||
('integration-ignored', 'Runtime status mismatch'),
|
||||
('integration-wrong-command', 'Exact command/mode/filter differs'),
|
||||
('changed-formatter-body', 'Inherited formatter block body differs'),
|
||||
('changed-successor-diff', 'Exact Git correction diff differs'),
|
||||
('duplicate-zip-member', 'Duplicate ZIP members'),
|
||||
]
|
||||
|
||||
|
||||
def sha(raw):
|
||||
return hashlib.sha256(raw).hexdigest()
|
||||
|
||||
|
||||
def encode(value):
|
||||
return (json.dumps(value, indent=2) + '\n').encode()
|
||||
|
||||
|
||||
def mutate(case, payload):
|
||||
if case in ('route-pair-artifact', 'source-pair-artifact'):
|
||||
kind = 'route-errors' if case.startswith('route-') else 'aggregate-references'
|
||||
name = 'gates/project-' + kind + '-71cadfa-1.result.json'
|
||||
r = json.loads(payload[name])
|
||||
old = r['artifacts'][0]['sha256']
|
||||
r['artifacts'][0]['sha256'] = '0' * 64 if old != '0' * 64 else '1' * 64
|
||||
payload[name] = encode(r)
|
||||
return name + ': change only one repeated target artifact SHA, keeping its path/size and all outcomes.'
|
||||
if case == 'missing-new-outcome':
|
||||
name = FULL + '.log'
|
||||
text = payload[name].decode()
|
||||
text, count = re.subn(r'^test ' + re.escape(PROJECT_NAME) + r' \.\.\. ok\r?\n', '', text, flags=re.M)
|
||||
assert count == 1
|
||||
payload[name] = text.replace('193 passed; 16 failed', '192 passed; 16 failed').encode()
|
||||
return name + ': omit one new outcome and adjust pass count; exact membership must reject.'
|
||||
if case == 'changed-inherited-diagnostic':
|
||||
name = FULL + '.log'
|
||||
text = payload[name].decode()
|
||||
old = 'field: None, line: 1, column: 9, message: "Unsupported schema version:'
|
||||
assert old in text
|
||||
payload[name] = text.replace(old, old.replace('column: 9', 'column: 10'), 1).encode()
|
||||
return name + ': change one inherited diagnostic column, retaining name/status/header error.'
|
||||
if case == 'forged-git-input':
|
||||
for name in list(payload):
|
||||
if name.endswith('-71cadfa-1.inputs.json'):
|
||||
r = json.loads(payload[name])
|
||||
r['inputs'][0]['sha256'] = '0' * 64
|
||||
payload[name] = encode(r)
|
||||
return 'All71 input manifests: consistently forge first input SHA; immutable Git must reject.'
|
||||
if case == 'missing-failed-history':
|
||||
for suffix in ('.result.json', '.log', '.inputs.json'):
|
||||
del payload['gates/project-focused-b9a31bb-1' + suffix]
|
||||
return 'Remove only b9 failed-focus triple; mandatory history membership must reject.'
|
||||
if case in ('integration-zero-test', 'integration-ignored'):
|
||||
name = 'gates/project-route-errors-71cadfa-1.log'
|
||||
text = payload[name].decode()
|
||||
pattern = r'^test invalid_route_source_has_located_errors_and_no_silent_nested_defaults \.\.\. ok\r?\n'
|
||||
replacement = '' if case == 'integration-zero-test' else 'test invalid_route_source_has_located_errors_and_no_silent_nested_defaults ... ignored\n'
|
||||
text, count = re.subn(pattern, replacement, text, flags=re.M)
|
||||
assert count == 1
|
||||
if case == 'integration-zero-test':
|
||||
text = text.replace('running 1 test', 'running 0 tests').replace('1 passed; 0 failed; 0 ignored; 0 measured; 4 filtered out', '0 passed; 0 failed; 0 ignored; 0 measured; 5 filtered out')
|
||||
else:
|
||||
text = text.replace('1 passed; 0 failed; 0 ignored;', '0 passed; 0 failed; 1 ignored;')
|
||||
payload[name] = text.encode()
|
||||
return name + ': synthesize zero-test success or ignored outcome with matching footer.'
|
||||
if case == 'integration-wrong-command':
|
||||
name = 'gates/project-route-errors-71cadfa-1.result.json'
|
||||
r = json.loads(payload[name])
|
||||
r['command'].remove('--exact')
|
||||
payload[name] = encode(r)
|
||||
return name + ': remove --exact while retaining the outcome; exact argv must reject.'
|
||||
if case == 'changed-formatter-body':
|
||||
for short in ('71cadfa', 'aaec78f'):
|
||||
name = 'gates/project-fmt-' + short + '-1.log'
|
||||
text = payload[name].decode()
|
||||
old = '+ Self::EngineeringProperty | Self::AnalysisCase | Self::AnalysisCheck'
|
||||
assert text.count(old) == 1
|
||||
payload[name] = text.replace(old, old + ' /* altered */').encode()
|
||||
return 'Both fmt logs: alter the same inherited block body, retaining locations/counts.'
|
||||
if case == 'changed-successor-diff':
|
||||
name = 'diffs/71cadfa-to-aaec78f.patch'
|
||||
payload[name] += b'\n# altered correction\n'
|
||||
return name + ': append text; exact immutable Git diff must reject.'
|
||||
return 'Transport-only ZIP/verifier pin corruption or duplicate ZIP member.'
|
||||
|
||||
|
||||
def repair(payload, manifest):
|
||||
# Refresh every inner receipt binding and outcome vector, then all outer
|
||||
# payload hashes. ZIP and verifier pins are refreshed by materialize below.
|
||||
for name in list(payload):
|
||||
if name.startswith('gates/') and name.endswith('.result.json'):
|
||||
stem = name[:-len('.result.json')]
|
||||
r = json.loads(payload[name])
|
||||
r['log_sha256'] = sha(payload[stem + '.log'])
|
||||
r['inputs_sha256'] = sha(payload[stem + '.inputs.json'])
|
||||
rows = re.findall(r'^test ([^\r\n]+) \.\.\. (ok|FAILED|ignored)\r?$', payload[stem + '.log'].decode(), re.M)
|
||||
r['outcomes'] = [list(row) for row in rows]
|
||||
payload[name] = encode(r)
|
||||
manifest['payloads'] = {name: {'bytes': len(raw), 'sha256': sha(raw)} for name, raw in sorted(payload.items())}
|
||||
|
||||
|
||||
def materialize(folder, payload, manifest, verifier, case):
|
||||
(folder / 'verify.py').write_bytes(verifier)
|
||||
archive = folder / 'evidence.zip'
|
||||
with zipfile.ZipFile(archive, 'x', compression=zipfile.ZIP_DEFLATED) as z:
|
||||
for name, raw in sorted(payload.items()):
|
||||
z.writestr(name, raw)
|
||||
if case == 'duplicate-zip-member':
|
||||
name = sorted(payload)[0]
|
||||
z.writestr(name, payload[name])
|
||||
raw = archive.read_bytes()
|
||||
manifest['archive'] = {'file': 'evidence.zip', 'bytes': len(raw), 'sha256': sha(raw)}
|
||||
manifest['verifier'] = {'file': 'verify.py', 'bytes': len(verifier), 'sha256': sha(verifier)}
|
||||
if case == 'archive-pin':
|
||||
with archive.open('ab') as stream:
|
||||
stream.write(b'altered-transport')
|
||||
if case == 'verifier-pin':
|
||||
manifest['verifier']['sha256'] = '0' * 64
|
||||
(folder / 'manifest.json').write_bytes(encode(manifest))
|
||||
|
||||
|
||||
def main():
|
||||
if sys.flags.optimize:
|
||||
raise SystemExit('Optimized Python is forbidden for these controls.')
|
||||
parser = argparse.ArgumentParser(description=__doc__)
|
||||
parser.add_argument('--repo', type=Path, required=True)
|
||||
parser.add_argument('--package', type=Path, default=Path(__file__).resolve().parent)
|
||||
parser.add_argument('--out', type=Path, required=True)
|
||||
parser.add_argument('--timeout-seconds', type=int, default=300)
|
||||
args = parser.parse_args()
|
||||
package, out = args.package.resolve(), args.out.resolve()
|
||||
assert not out.exists() and not out.is_relative_to(package) and not package.is_relative_to(out), 'Choose a fresh output outside the original package.'
|
||||
assert 30 <= args.timeout_seconds <= 600
|
||||
original = {path.name: path.read_bytes() for path in package.iterdir() if path.is_file()}
|
||||
verifier = original['verify.py']
|
||||
manifest = json.loads(original['manifest.json'])
|
||||
with zipfile.ZipFile(package / 'evidence.zip') as z:
|
||||
assert len(z.namelist()) == len(set(z.namelist()))
|
||||
payload = {name: z.read(name) for name in z.namelist()}
|
||||
out.mkdir(parents=True, exist_ok=False)
|
||||
results = []
|
||||
def unchanged():
|
||||
assert {path.name for path in package.iterdir() if path.is_file()} == set(original)
|
||||
assert all((package / name).read_bytes() == raw for name, raw in original.items()), 'Original package changed.'
|
||||
def run(case, current, expected, mutation):
|
||||
argv = [sys.executable, '-B', str(package / 'verify.py'), '--repo', str(args.repo.resolve()), '--package', str(current)]
|
||||
try:
|
||||
r = subprocess.run(argv, stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=args.timeout_seconds)
|
||||
stdout, stderr, code = r.stdout, r.stderr, r.returncode
|
||||
passed = code == 0 if expected is None else code != 0 and expected in stderr.decode(errors='replace') and 'REFUSED:' in stderr.decode(errors='replace')
|
||||
status = 'PASS' if passed else 'UNEXPECTED_RESULT'
|
||||
except subprocess.TimeoutExpired as error:
|
||||
stdout, stderr, code, status = error.stdout or b'', error.stderr or b'', None, 'TIMEOUT'
|
||||
row = {'case': case, 'status': status, 'exit': code, 'expected_refusal': expected, 'mutation': mutation, 'command': argv,
|
||||
'stdout_sha256': sha(stdout), 'stderr_sha256': sha(stderr), 'semantic_transport_hashes_refreshed': expected is not None and case not in ('archive-pin', 'verifier-pin')}
|
||||
(out / (case + '.stdout.log')).write_bytes(stdout)
|
||||
(out / (case + '.stderr.log')).write_bytes(stderr)
|
||||
(out / (case + '.result.json')).write_bytes(encode(row))
|
||||
results.append(row)
|
||||
unchanged()
|
||||
return status == 'PASS'
|
||||
proceed = run('unchanged-positive', package, None, 'Original bytes, no mutation.')
|
||||
if proceed:
|
||||
for case, expected in CASES:
|
||||
current_payload, current_manifest = dict(payload), copy.deepcopy(manifest)
|
||||
mutation = mutate(case, current_payload)
|
||||
repair(current_payload, current_manifest)
|
||||
with tempfile.TemporaryDirectory(prefix='case-', dir=out) as temporary:
|
||||
folder = Path(temporary).resolve()
|
||||
assert folder.parent == out and not folder.is_symlink(), 'Temporary cleanup must remain in the named controls output.'
|
||||
materialize(folder, current_payload, current_manifest, verifier, case)
|
||||
proceed = run(case, folder, expected, mutation)
|
||||
if not proceed:
|
||||
break
|
||||
summary = {'status': 'PASS' if proceed and len(results) == 15 else 'INCOMPLETE_OR_FAILED', 'planned': 15, 'executed': len(results),
|
||||
'package_pins': {name: {'bytes': len(raw), 'sha256': sha(raw)} for name, raw in original.items()}, 'results': results,
|
||||
'limits': 'Evidence consistency controls only. No subject/compiler/GUI execution; no retained mutated archive corpus.'}
|
||||
unchanged()
|
||||
(out / 'summary.json').write_bytes(encode(summary))
|
||||
print(json.dumps({'status': summary['status'], 'executed': len(results), 'summary': str(out / 'summary.json')}, indent=2))
|
||||
return 0 if summary['status'] == 'PASS' else 1
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
raise SystemExit(main())
|
||||
@@ -0,0 +1,38 @@
|
||||
# Independent v2 control readback
|
||||
|
||||
**PASS: one unchanged positive and all fourteen declared negatives reached their intended outcomes.** This was a read-only review of completed evidence, not another verifier/control run. No subject code, compiler or GUI was executed. Only this review file was added.
|
||||
|
||||
All 15 per-case result JSONs equal their summary rows; all 30 raw stdout/stderr files match their recorded SHA256. All six original package files still match the frozen package pins. Commands identify the reviewed verifier, the intended repository and either the original positive package or a transient negative package beneath this controls directory.
|
||||
|
||||
The positive exited 0 with empty stderr. Its parsed output retains source `aaec78fcc9b273d1485497126392afdd1fb2e54e`, runtime source `71cadfa0cd0e112caa29588d2494753301f3cb6c`, listing 209, Project 13/admission 2/four integration passes, and strict PASS at the runtime source. Crucially, the **full suite remains FAILED: 193 passed/16 failed**, and successor **formatting remains FAILED with eight inherited blocks**. Prior statuses/diagnostics are reported preserved; `successor_runtime_claim` is false. This is private Project evidence, with no public source8 success, GUI completion or prerelease-production acceptance implied.
|
||||
|
||||
Each negative exited 1 with empty stdout and exactly one `REFUSED:` stderr line. Observed boundaries:
|
||||
|
||||
| Case | Exact refusal after `REFUSED: ` |
|
||||
| --- | --- |
|
||||
| archive-pin | Top-level archive pin differs |
|
||||
| verifier-pin | Top-level verifier pin differs |
|
||||
| route-pair-artifact | Repeated integration target artifact differs |
|
||||
| source-pair-artifact | Repeated integration target artifact differs |
|
||||
| missing-new-outcome | Missing/extra runtime outcomes |
|
||||
| changed-inherited-diagnostic | Exact historical failure diagnostics changed |
|
||||
| forged-git-input | Git input bytes mismatch: Cargo.lock |
|
||||
| missing-failed-history | Missing/extra package payload |
|
||||
| integration-zero-test | Missing/extra runtime outcomes |
|
||||
| integration-ignored | Runtime status mismatch |
|
||||
| integration-wrong-command | Exact command/mode/filter differs |
|
||||
| changed-formatter-body | Inherited formatter block body differs |
|
||||
| changed-successor-diff | Exact Git correction diff differs |
|
||||
| duplicate-zip-member | Duplicate ZIP members |
|
||||
|
||||
The semantic cases therefore reached their declared checks, not an incidental stale transport hash. The two top-level pin cases intentionally retained incorrect pins. The reviewed driver refreshes inner receipt/outcome and outer payload/archive bindings for the other cases; raw outcomes agree with that design. Mutated archives were transient and are not retained, so this readback reviews recorded execution plus the frozen mutation code rather than independently reconstructing each mutant.
|
||||
|
||||
Reviewed anchors:
|
||||
|
||||
- `summary.json`: SHA256 `c39e52c220b0b023382d70ed4344597cf3596e741ca67995fb67edf8e9aa20c8`.
|
||||
- Verifier: 23,199 bytes, SHA256 `f94e5f4a733c82c0b240dc4c64557bf34f6705590144df686ccfbc53c076b6ff`.
|
||||
- Control driver: 11,834 bytes, SHA256 `0d2cd38c7baffba78cd2f009d832c7a16e9ac46437d56105a484821ce54601e7`.
|
||||
- ZIP: 490,311 bytes, SHA256 `a42f29c9adc05adc6bd0c881b716bda3bd098732eb081b0f6214252db5d29d83`.
|
||||
- Manifest: 9,112 bytes, SHA256 `9277764168157819faaddaa8dffd2714efe995e2e136c795a51cc10340cd2f50`.
|
||||
|
||||
No unexpected refusal, timeout, changed original package pin or contradictory positive result was found. The result establishes this finite consistency-control set; it does not authenticate historical execution or turn retained failures into passes.
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"case": "archive-pin",
|
||||
"status": "PASS",
|
||||
"exit": 1,
|
||||
"expected_refusal": "Top-level archive pin differs",
|
||||
"mutation": "Transport-only ZIP/verifier pin corruption or duplicate ZIP member.",
|
||||
"command": [
|
||||
"C:\\Users\\User\\.cache\\codex-runtimes\\codex-primary-runtime\\dependencies\\python\\python.exe",
|
||||
"-B",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-proposal-v2-20260924\\verify.py",
|
||||
"--repo",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio",
|
||||
"--package",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-controls-v2-20260924-1\\case-7xqikh2m"
|
||||
],
|
||||
"stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"stderr_sha256": "d312212a64253be66ea3dae99ac7596865374f80bd64005481241c3d9b8675f4",
|
||||
"semantic_transport_hashes_refreshed": false
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"case": "changed-formatter-body",
|
||||
"status": "PASS",
|
||||
"exit": 1,
|
||||
"expected_refusal": "Inherited formatter block body differs",
|
||||
"mutation": "Both fmt logs: alter the same inherited block body, retaining locations/counts.",
|
||||
"command": [
|
||||
"C:\\Users\\User\\.cache\\codex-runtimes\\codex-primary-runtime\\dependencies\\python\\python.exe",
|
||||
"-B",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-proposal-v2-20260924\\verify.py",
|
||||
"--repo",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio",
|
||||
"--package",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-controls-v2-20260924-1\\case-l9jy1zgj"
|
||||
],
|
||||
"stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"stderr_sha256": "efa75ca69cccfe361e7f15bbf1ab67095f4ad6eaf87293414e51b800888c0c36",
|
||||
"semantic_transport_hashes_refreshed": true
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"case": "changed-inherited-diagnostic",
|
||||
"status": "PASS",
|
||||
"exit": 1,
|
||||
"expected_refusal": "Exact historical failure diagnostics changed",
|
||||
"mutation": "gates/project-full-71cadfa-1.log: change one inherited diagnostic column, retaining name/status/header error.",
|
||||
"command": [
|
||||
"C:\\Users\\User\\.cache\\codex-runtimes\\codex-primary-runtime\\dependencies\\python\\python.exe",
|
||||
"-B",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-proposal-v2-20260924\\verify.py",
|
||||
"--repo",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio",
|
||||
"--package",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-controls-v2-20260924-1\\case-60ivmn8r"
|
||||
],
|
||||
"stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"stderr_sha256": "3e5dc08afdee9b77cf4c507bea74aed13df97667f9b51d87e03f6ec63114dd4d",
|
||||
"semantic_transport_hashes_refreshed": true
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"case": "changed-successor-diff",
|
||||
"status": "PASS",
|
||||
"exit": 1,
|
||||
"expected_refusal": "Exact Git correction diff differs",
|
||||
"mutation": "diffs/71cadfa-to-aaec78f.patch: append text; exact immutable Git diff must reject.",
|
||||
"command": [
|
||||
"C:\\Users\\User\\.cache\\codex-runtimes\\codex-primary-runtime\\dependencies\\python\\python.exe",
|
||||
"-B",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-proposal-v2-20260924\\verify.py",
|
||||
"--repo",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio",
|
||||
"--package",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-controls-v2-20260924-1\\case-3imoup9b"
|
||||
],
|
||||
"stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"stderr_sha256": "370188fb9e8276c8c03588a8d8a2e211d3eb4d0f9f7195aa8030485436635fb2",
|
||||
"semantic_transport_hashes_refreshed": true
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"case": "duplicate-zip-member",
|
||||
"status": "PASS",
|
||||
"exit": 1,
|
||||
"expected_refusal": "Duplicate ZIP members",
|
||||
"mutation": "Transport-only ZIP/verifier pin corruption or duplicate ZIP member.",
|
||||
"command": [
|
||||
"C:\\Users\\User\\.cache\\codex-runtimes\\codex-primary-runtime\\dependencies\\python\\python.exe",
|
||||
"-B",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-proposal-v2-20260924\\verify.py",
|
||||
"--repo",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio",
|
||||
"--package",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-controls-v2-20260924-1\\case-m7ol708v"
|
||||
],
|
||||
"stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"stderr_sha256": "3d2d7e221ca2260dffaec5e5c15488e4317d59339bbf88511a79f58c03a36607",
|
||||
"semantic_transport_hashes_refreshed": true
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"case": "forged-git-input",
|
||||
"status": "PASS",
|
||||
"exit": 1,
|
||||
"expected_refusal": "Git input bytes mismatch",
|
||||
"mutation": "All71 input manifests: consistently forge first input SHA; immutable Git must reject.",
|
||||
"command": [
|
||||
"C:\\Users\\User\\.cache\\codex-runtimes\\codex-primary-runtime\\dependencies\\python\\python.exe",
|
||||
"-B",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-proposal-v2-20260924\\verify.py",
|
||||
"--repo",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio",
|
||||
"--package",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-controls-v2-20260924-1\\case-p4xl65pf"
|
||||
],
|
||||
"stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"stderr_sha256": "ecdc48f2565108daac7e3686f764d43c94a5bf50e8772fd147c29635d3b546a9",
|
||||
"semantic_transport_hashes_refreshed": true
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"case": "integration-ignored",
|
||||
"status": "PASS",
|
||||
"exit": 1,
|
||||
"expected_refusal": "Runtime status mismatch",
|
||||
"mutation": "gates/project-route-errors-71cadfa-1.log: synthesize zero-test success or ignored outcome with matching footer.",
|
||||
"command": [
|
||||
"C:\\Users\\User\\.cache\\codex-runtimes\\codex-primary-runtime\\dependencies\\python\\python.exe",
|
||||
"-B",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-proposal-v2-20260924\\verify.py",
|
||||
"--repo",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio",
|
||||
"--package",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-controls-v2-20260924-1\\case-cu8mu3sl"
|
||||
],
|
||||
"stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"stderr_sha256": "15d3d0e2c6fb3f20f18c2c8d7ed4f67ec51578df0c66d79cb395c0cd2a955190",
|
||||
"semantic_transport_hashes_refreshed": true
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"case": "integration-wrong-command",
|
||||
"status": "PASS",
|
||||
"exit": 1,
|
||||
"expected_refusal": "Exact command/mode/filter differs",
|
||||
"mutation": "gates/project-route-errors-71cadfa-1.result.json: remove --exact while retaining the outcome; exact argv must reject.",
|
||||
"command": [
|
||||
"C:\\Users\\User\\.cache\\codex-runtimes\\codex-primary-runtime\\dependencies\\python\\python.exe",
|
||||
"-B",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-proposal-v2-20260924\\verify.py",
|
||||
"--repo",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio",
|
||||
"--package",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-controls-v2-20260924-1\\case-k0p20tv3"
|
||||
],
|
||||
"stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"stderr_sha256": "6079ceba49384f935331c52ca7bf4d7928a73d311e2a125e36aa1cdd9ae9a982",
|
||||
"semantic_transport_hashes_refreshed": true
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"case": "integration-zero-test",
|
||||
"status": "PASS",
|
||||
"exit": 1,
|
||||
"expected_refusal": "Missing/extra runtime outcomes",
|
||||
"mutation": "gates/project-route-errors-71cadfa-1.log: synthesize zero-test success or ignored outcome with matching footer.",
|
||||
"command": [
|
||||
"C:\\Users\\User\\.cache\\codex-runtimes\\codex-primary-runtime\\dependencies\\python\\python.exe",
|
||||
"-B",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-proposal-v2-20260924\\verify.py",
|
||||
"--repo",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio",
|
||||
"--package",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-controls-v2-20260924-1\\case-z6jk_oy_"
|
||||
],
|
||||
"stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"stderr_sha256": "4ea6eb7a458fba980b8e4d8594be7d265cc93730502d4834f9ea2503185b555e",
|
||||
"semantic_transport_hashes_refreshed": true
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"case": "missing-failed-history",
|
||||
"status": "PASS",
|
||||
"exit": 1,
|
||||
"expected_refusal": "Missing/extra package payload",
|
||||
"mutation": "Remove only b9 failed-focus triple; mandatory history membership must reject.",
|
||||
"command": [
|
||||
"C:\\Users\\User\\.cache\\codex-runtimes\\codex-primary-runtime\\dependencies\\python\\python.exe",
|
||||
"-B",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-proposal-v2-20260924\\verify.py",
|
||||
"--repo",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio",
|
||||
"--package",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-controls-v2-20260924-1\\case-njsb6r9_"
|
||||
],
|
||||
"stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"stderr_sha256": "9996afdaae04ab63cb6907ab75bd732f408cd6af12d2d0a9268cf39bbb54425c",
|
||||
"semantic_transport_hashes_refreshed": true
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"case": "missing-new-outcome",
|
||||
"status": "PASS",
|
||||
"exit": 1,
|
||||
"expected_refusal": "Missing/extra runtime outcomes",
|
||||
"mutation": "gates/project-full-71cadfa-1.log: omit one new outcome and adjust pass count; exact membership must reject.",
|
||||
"command": [
|
||||
"C:\\Users\\User\\.cache\\codex-runtimes\\codex-primary-runtime\\dependencies\\python\\python.exe",
|
||||
"-B",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-proposal-v2-20260924\\verify.py",
|
||||
"--repo",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio",
|
||||
"--package",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-controls-v2-20260924-1\\case-j2xqghr9"
|
||||
],
|
||||
"stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"stderr_sha256": "4ea6eb7a458fba980b8e4d8594be7d265cc93730502d4834f9ea2503185b555e",
|
||||
"semantic_transport_hashes_refreshed": true
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"case": "route-pair-artifact",
|
||||
"status": "PASS",
|
||||
"exit": 1,
|
||||
"expected_refusal": "Repeated integration target artifact differs",
|
||||
"mutation": "gates/project-route-errors-71cadfa-1.result.json: change only one repeated target artifact SHA, keeping its path/size and all outcomes.",
|
||||
"command": [
|
||||
"C:\\Users\\User\\.cache\\codex-runtimes\\codex-primary-runtime\\dependencies\\python\\python.exe",
|
||||
"-B",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-proposal-v2-20260924\\verify.py",
|
||||
"--repo",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio",
|
||||
"--package",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-controls-v2-20260924-1\\case-iky8xrqv"
|
||||
],
|
||||
"stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"stderr_sha256": "193b24af95f1d6b7c52237d1ccd2b3aa88be65db6b248eb68e591bef0e6b1d66",
|
||||
"semantic_transport_hashes_refreshed": true
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"case": "source-pair-artifact",
|
||||
"status": "PASS",
|
||||
"exit": 1,
|
||||
"expected_refusal": "Repeated integration target artifact differs",
|
||||
"mutation": "gates/project-aggregate-references-71cadfa-1.result.json: change only one repeated target artifact SHA, keeping its path/size and all outcomes.",
|
||||
"command": [
|
||||
"C:\\Users\\User\\.cache\\codex-runtimes\\codex-primary-runtime\\dependencies\\python\\python.exe",
|
||||
"-B",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-proposal-v2-20260924\\verify.py",
|
||||
"--repo",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio",
|
||||
"--package",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-controls-v2-20260924-1\\case-kqipt08i"
|
||||
],
|
||||
"stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"stderr_sha256": "193b24af95f1d6b7c52237d1ccd2b3aa88be65db6b248eb68e591bef0e6b1d66",
|
||||
"semantic_transport_hashes_refreshed": true
|
||||
}
|
||||
@@ -0,0 +1,319 @@
|
||||
{
|
||||
"status": "PASS",
|
||||
"planned": 15,
|
||||
"executed": 15,
|
||||
"package_pins": {
|
||||
"CONTROLS.md": {
|
||||
"bytes": 3075,
|
||||
"sha256": "caee9431b94df6f85f2c0477fa8c29268c4c84a13672c65a8d99d4e268a18d0d"
|
||||
},
|
||||
"controls.py": {
|
||||
"bytes": 11834,
|
||||
"sha256": "0d2cd38c7baffba78cd2f009d832c7a16e9ac46437d56105a484821ce54601e7"
|
||||
},
|
||||
"evidence.zip": {
|
||||
"bytes": 490311,
|
||||
"sha256": "a42f29c9adc05adc6bd0c881b716bda3bd098732eb081b0f6214252db5d29d83"
|
||||
},
|
||||
"manifest.json": {
|
||||
"bytes": 9112,
|
||||
"sha256": "9277764168157819faaddaa8dffd2714efe995e2e136c795a51cc10340cd2f50"
|
||||
},
|
||||
"README.md": {
|
||||
"bytes": 3455,
|
||||
"sha256": "41aa843ea33740f0d2c8b20a63caa73f41508921b61e881db522c87e11bd2ec6"
|
||||
},
|
||||
"verify.py": {
|
||||
"bytes": 23199,
|
||||
"sha256": "f94e5f4a733c82c0b240dc4c64557bf34f6705590144df686ccfbc53c076b6ff"
|
||||
}
|
||||
},
|
||||
"results": [
|
||||
{
|
||||
"case": "unchanged-positive",
|
||||
"status": "PASS",
|
||||
"exit": 0,
|
||||
"expected_refusal": null,
|
||||
"mutation": "Original bytes, no mutation.",
|
||||
"command": [
|
||||
"C:\\Users\\User\\.cache\\codex-runtimes\\codex-primary-runtime\\dependencies\\python\\python.exe",
|
||||
"-B",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-proposal-v2-20260924\\verify.py",
|
||||
"--repo",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio",
|
||||
"--package",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-proposal-v2-20260924"
|
||||
],
|
||||
"stdout_sha256": "daee4749971ad9f41a5e1d8f0560b1b61a9168b21f2fd934d8781beddbc6d642",
|
||||
"stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"semantic_transport_hashes_refreshed": false
|
||||
},
|
||||
{
|
||||
"case": "archive-pin",
|
||||
"status": "PASS",
|
||||
"exit": 1,
|
||||
"expected_refusal": "Top-level archive pin differs",
|
||||
"mutation": "Transport-only ZIP/verifier pin corruption or duplicate ZIP member.",
|
||||
"command": [
|
||||
"C:\\Users\\User\\.cache\\codex-runtimes\\codex-primary-runtime\\dependencies\\python\\python.exe",
|
||||
"-B",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-proposal-v2-20260924\\verify.py",
|
||||
"--repo",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio",
|
||||
"--package",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-controls-v2-20260924-1\\case-7xqikh2m"
|
||||
],
|
||||
"stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"stderr_sha256": "d312212a64253be66ea3dae99ac7596865374f80bd64005481241c3d9b8675f4",
|
||||
"semantic_transport_hashes_refreshed": false
|
||||
},
|
||||
{
|
||||
"case": "verifier-pin",
|
||||
"status": "PASS",
|
||||
"exit": 1,
|
||||
"expected_refusal": "Top-level verifier pin differs",
|
||||
"mutation": "Transport-only ZIP/verifier pin corruption or duplicate ZIP member.",
|
||||
"command": [
|
||||
"C:\\Users\\User\\.cache\\codex-runtimes\\codex-primary-runtime\\dependencies\\python\\python.exe",
|
||||
"-B",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-proposal-v2-20260924\\verify.py",
|
||||
"--repo",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio",
|
||||
"--package",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-controls-v2-20260924-1\\case-uinxoc7p"
|
||||
],
|
||||
"stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"stderr_sha256": "fca5b1d1f72cba26710c9481743247e50024286837be10e16fa5b04829fa4286",
|
||||
"semantic_transport_hashes_refreshed": false
|
||||
},
|
||||
{
|
||||
"case": "route-pair-artifact",
|
||||
"status": "PASS",
|
||||
"exit": 1,
|
||||
"expected_refusal": "Repeated integration target artifact differs",
|
||||
"mutation": "gates/project-route-errors-71cadfa-1.result.json: change only one repeated target artifact SHA, keeping its path/size and all outcomes.",
|
||||
"command": [
|
||||
"C:\\Users\\User\\.cache\\codex-runtimes\\codex-primary-runtime\\dependencies\\python\\python.exe",
|
||||
"-B",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-proposal-v2-20260924\\verify.py",
|
||||
"--repo",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio",
|
||||
"--package",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-controls-v2-20260924-1\\case-iky8xrqv"
|
||||
],
|
||||
"stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"stderr_sha256": "193b24af95f1d6b7c52237d1ccd2b3aa88be65db6b248eb68e591bef0e6b1d66",
|
||||
"semantic_transport_hashes_refreshed": true
|
||||
},
|
||||
{
|
||||
"case": "source-pair-artifact",
|
||||
"status": "PASS",
|
||||
"exit": 1,
|
||||
"expected_refusal": "Repeated integration target artifact differs",
|
||||
"mutation": "gates/project-aggregate-references-71cadfa-1.result.json: change only one repeated target artifact SHA, keeping its path/size and all outcomes.",
|
||||
"command": [
|
||||
"C:\\Users\\User\\.cache\\codex-runtimes\\codex-primary-runtime\\dependencies\\python\\python.exe",
|
||||
"-B",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-proposal-v2-20260924\\verify.py",
|
||||
"--repo",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio",
|
||||
"--package",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-controls-v2-20260924-1\\case-kqipt08i"
|
||||
],
|
||||
"stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"stderr_sha256": "193b24af95f1d6b7c52237d1ccd2b3aa88be65db6b248eb68e591bef0e6b1d66",
|
||||
"semantic_transport_hashes_refreshed": true
|
||||
},
|
||||
{
|
||||
"case": "missing-new-outcome",
|
||||
"status": "PASS",
|
||||
"exit": 1,
|
||||
"expected_refusal": "Missing/extra runtime outcomes",
|
||||
"mutation": "gates/project-full-71cadfa-1.log: omit one new outcome and adjust pass count; exact membership must reject.",
|
||||
"command": [
|
||||
"C:\\Users\\User\\.cache\\codex-runtimes\\codex-primary-runtime\\dependencies\\python\\python.exe",
|
||||
"-B",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-proposal-v2-20260924\\verify.py",
|
||||
"--repo",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio",
|
||||
"--package",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-controls-v2-20260924-1\\case-j2xqghr9"
|
||||
],
|
||||
"stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"stderr_sha256": "4ea6eb7a458fba980b8e4d8594be7d265cc93730502d4834f9ea2503185b555e",
|
||||
"semantic_transport_hashes_refreshed": true
|
||||
},
|
||||
{
|
||||
"case": "changed-inherited-diagnostic",
|
||||
"status": "PASS",
|
||||
"exit": 1,
|
||||
"expected_refusal": "Exact historical failure diagnostics changed",
|
||||
"mutation": "gates/project-full-71cadfa-1.log: change one inherited diagnostic column, retaining name/status/header error.",
|
||||
"command": [
|
||||
"C:\\Users\\User\\.cache\\codex-runtimes\\codex-primary-runtime\\dependencies\\python\\python.exe",
|
||||
"-B",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-proposal-v2-20260924\\verify.py",
|
||||
"--repo",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio",
|
||||
"--package",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-controls-v2-20260924-1\\case-60ivmn8r"
|
||||
],
|
||||
"stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"stderr_sha256": "3e5dc08afdee9b77cf4c507bea74aed13df97667f9b51d87e03f6ec63114dd4d",
|
||||
"semantic_transport_hashes_refreshed": true
|
||||
},
|
||||
{
|
||||
"case": "forged-git-input",
|
||||
"status": "PASS",
|
||||
"exit": 1,
|
||||
"expected_refusal": "Git input bytes mismatch",
|
||||
"mutation": "All71 input manifests: consistently forge first input SHA; immutable Git must reject.",
|
||||
"command": [
|
||||
"C:\\Users\\User\\.cache\\codex-runtimes\\codex-primary-runtime\\dependencies\\python\\python.exe",
|
||||
"-B",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-proposal-v2-20260924\\verify.py",
|
||||
"--repo",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio",
|
||||
"--package",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-controls-v2-20260924-1\\case-p4xl65pf"
|
||||
],
|
||||
"stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"stderr_sha256": "ecdc48f2565108daac7e3686f764d43c94a5bf50e8772fd147c29635d3b546a9",
|
||||
"semantic_transport_hashes_refreshed": true
|
||||
},
|
||||
{
|
||||
"case": "missing-failed-history",
|
||||
"status": "PASS",
|
||||
"exit": 1,
|
||||
"expected_refusal": "Missing/extra package payload",
|
||||
"mutation": "Remove only b9 failed-focus triple; mandatory history membership must reject.",
|
||||
"command": [
|
||||
"C:\\Users\\User\\.cache\\codex-runtimes\\codex-primary-runtime\\dependencies\\python\\python.exe",
|
||||
"-B",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-proposal-v2-20260924\\verify.py",
|
||||
"--repo",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio",
|
||||
"--package",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-controls-v2-20260924-1\\case-njsb6r9_"
|
||||
],
|
||||
"stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"stderr_sha256": "9996afdaae04ab63cb6907ab75bd732f408cd6af12d2d0a9268cf39bbb54425c",
|
||||
"semantic_transport_hashes_refreshed": true
|
||||
},
|
||||
{
|
||||
"case": "integration-zero-test",
|
||||
"status": "PASS",
|
||||
"exit": 1,
|
||||
"expected_refusal": "Missing/extra runtime outcomes",
|
||||
"mutation": "gates/project-route-errors-71cadfa-1.log: synthesize zero-test success or ignored outcome with matching footer.",
|
||||
"command": [
|
||||
"C:\\Users\\User\\.cache\\codex-runtimes\\codex-primary-runtime\\dependencies\\python\\python.exe",
|
||||
"-B",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-proposal-v2-20260924\\verify.py",
|
||||
"--repo",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio",
|
||||
"--package",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-controls-v2-20260924-1\\case-z6jk_oy_"
|
||||
],
|
||||
"stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"stderr_sha256": "4ea6eb7a458fba980b8e4d8594be7d265cc93730502d4834f9ea2503185b555e",
|
||||
"semantic_transport_hashes_refreshed": true
|
||||
},
|
||||
{
|
||||
"case": "integration-ignored",
|
||||
"status": "PASS",
|
||||
"exit": 1,
|
||||
"expected_refusal": "Runtime status mismatch",
|
||||
"mutation": "gates/project-route-errors-71cadfa-1.log: synthesize zero-test success or ignored outcome with matching footer.",
|
||||
"command": [
|
||||
"C:\\Users\\User\\.cache\\codex-runtimes\\codex-primary-runtime\\dependencies\\python\\python.exe",
|
||||
"-B",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-proposal-v2-20260924\\verify.py",
|
||||
"--repo",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio",
|
||||
"--package",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-controls-v2-20260924-1\\case-cu8mu3sl"
|
||||
],
|
||||
"stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"stderr_sha256": "15d3d0e2c6fb3f20f18c2c8d7ed4f67ec51578df0c66d79cb395c0cd2a955190",
|
||||
"semantic_transport_hashes_refreshed": true
|
||||
},
|
||||
{
|
||||
"case": "integration-wrong-command",
|
||||
"status": "PASS",
|
||||
"exit": 1,
|
||||
"expected_refusal": "Exact command/mode/filter differs",
|
||||
"mutation": "gates/project-route-errors-71cadfa-1.result.json: remove --exact while retaining the outcome; exact argv must reject.",
|
||||
"command": [
|
||||
"C:\\Users\\User\\.cache\\codex-runtimes\\codex-primary-runtime\\dependencies\\python\\python.exe",
|
||||
"-B",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-proposal-v2-20260924\\verify.py",
|
||||
"--repo",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio",
|
||||
"--package",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-controls-v2-20260924-1\\case-k0p20tv3"
|
||||
],
|
||||
"stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"stderr_sha256": "6079ceba49384f935331c52ca7bf4d7928a73d311e2a125e36aa1cdd9ae9a982",
|
||||
"semantic_transport_hashes_refreshed": true
|
||||
},
|
||||
{
|
||||
"case": "changed-formatter-body",
|
||||
"status": "PASS",
|
||||
"exit": 1,
|
||||
"expected_refusal": "Inherited formatter block body differs",
|
||||
"mutation": "Both fmt logs: alter the same inherited block body, retaining locations/counts.",
|
||||
"command": [
|
||||
"C:\\Users\\User\\.cache\\codex-runtimes\\codex-primary-runtime\\dependencies\\python\\python.exe",
|
||||
"-B",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-proposal-v2-20260924\\verify.py",
|
||||
"--repo",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio",
|
||||
"--package",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-controls-v2-20260924-1\\case-l9jy1zgj"
|
||||
],
|
||||
"stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"stderr_sha256": "efa75ca69cccfe361e7f15bbf1ab67095f4ad6eaf87293414e51b800888c0c36",
|
||||
"semantic_transport_hashes_refreshed": true
|
||||
},
|
||||
{
|
||||
"case": "changed-successor-diff",
|
||||
"status": "PASS",
|
||||
"exit": 1,
|
||||
"expected_refusal": "Exact Git correction diff differs",
|
||||
"mutation": "diffs/71cadfa-to-aaec78f.patch: append text; exact immutable Git diff must reject.",
|
||||
"command": [
|
||||
"C:\\Users\\User\\.cache\\codex-runtimes\\codex-primary-runtime\\dependencies\\python\\python.exe",
|
||||
"-B",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-proposal-v2-20260924\\verify.py",
|
||||
"--repo",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio",
|
||||
"--package",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-controls-v2-20260924-1\\case-3imoup9b"
|
||||
],
|
||||
"stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"stderr_sha256": "370188fb9e8276c8c03588a8d8a2e211d3eb4d0f9f7195aa8030485436635fb2",
|
||||
"semantic_transport_hashes_refreshed": true
|
||||
},
|
||||
{
|
||||
"case": "duplicate-zip-member",
|
||||
"status": "PASS",
|
||||
"exit": 1,
|
||||
"expected_refusal": "Duplicate ZIP members",
|
||||
"mutation": "Transport-only ZIP/verifier pin corruption or duplicate ZIP member.",
|
||||
"command": [
|
||||
"C:\\Users\\User\\.cache\\codex-runtimes\\codex-primary-runtime\\dependencies\\python\\python.exe",
|
||||
"-B",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-proposal-v2-20260924\\verify.py",
|
||||
"--repo",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio",
|
||||
"--package",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-controls-v2-20260924-1\\case-m7ol708v"
|
||||
],
|
||||
"stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"stderr_sha256": "3d2d7e221ca2260dffaec5e5c15488e4317d59339bbf88511a79f58c03a36607",
|
||||
"semantic_transport_hashes_refreshed": true
|
||||
}
|
||||
],
|
||||
"limits": "Evidence consistency controls only. No subject/compiler/GUI execution; no retained mutated archive corpus."
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"case": "unchanged-positive",
|
||||
"status": "PASS",
|
||||
"exit": 0,
|
||||
"expected_refusal": null,
|
||||
"mutation": "Original bytes, no mutation.",
|
||||
"command": [
|
||||
"C:\\Users\\User\\.cache\\codex-runtimes\\codex-primary-runtime\\dependencies\\python\\python.exe",
|
||||
"-B",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-proposal-v2-20260924\\verify.py",
|
||||
"--repo",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio",
|
||||
"--package",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-proposal-v2-20260924"
|
||||
],
|
||||
"stdout_sha256": "daee4749971ad9f41a5e1d8f0560b1b61a9168b21f2fd934d8781beddbc6d642",
|
||||
"stderr_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"semantic_transport_hashes_refreshed": false
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"case": "verifier-pin",
|
||||
"status": "PASS",
|
||||
"exit": 1,
|
||||
"expected_refusal": "Top-level verifier pin differs",
|
||||
"mutation": "Transport-only ZIP/verifier pin corruption or duplicate ZIP member.",
|
||||
"command": [
|
||||
"C:\\Users\\User\\.cache\\codex-runtimes\\codex-primary-runtime\\dependencies\\python\\python.exe",
|
||||
"-B",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-proposal-v2-20260924\\verify.py",
|
||||
"--repo",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio",
|
||||
"--package",
|
||||
"C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-mixed-project-evidence-controls-v2-20260924-1\\case-uinxoc7p"
|
||||
],
|
||||
"stdout_sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
|
||||
"stderr_sha256": "fca5b1d1f72cba26710c9481743247e50024286837be10e16fa5b04829fa4286",
|
||||
"semantic_transport_hashes_refreshed": false
|
||||
}
|
||||
Binary file not shown.
@@ -0,0 +1,222 @@
|
||||
{
|
||||
"schema": 1,
|
||||
"source": "aaec78fcc9b273d1485497126392afdd1fb2e54e",
|
||||
"runtime_source": "71cadfa0cd0e112caa29588d2494753301f3cb6c",
|
||||
"verification_status": "NOT RUN; proposal awaiting review",
|
||||
"payloads": {
|
||||
"baseline-reference.json": {
|
||||
"bytes": 272,
|
||||
"sha256": "4e076c2a66f122fbf639e13a96641f72bd8158627d8de8cf6013fc61e8b76deb"
|
||||
},
|
||||
"diffs/71cadfa-to-aaec78f.patch": {
|
||||
"bytes": 1192,
|
||||
"sha256": "cdf55d848cf8c0af5fb1b378befc81bf7ccbade7fb2c1044e0e1d1774d101f1d"
|
||||
},
|
||||
"diffs/b9a31bb-to-71cadfa.patch": {
|
||||
"bytes": 5640,
|
||||
"sha256": "6e9b6d7a9a5d12d149a4069db69da5581bc980c104a685269227c3fc39a16483"
|
||||
},
|
||||
"gates/launchers/46c9ee5f4130e7854855e44b1509ecc0833dd4a3c41a1f3251955b0ac79cc154.py": {
|
||||
"bytes": 7629,
|
||||
"sha256": "46c9ee5f4130e7854855e44b1509ecc0833dd4a3c41a1f3251955b0ac79cc154"
|
||||
},
|
||||
"gates/launchers/a3b965c6d4d9f3f7d3d55ea0f142d16e43fccd9adcd9b8121615a2ea16df8af8.py": {
|
||||
"bytes": 7629,
|
||||
"sha256": "a3b965c6d4d9f3f7d3d55ea0f142d16e43fccd9adcd9b8121615a2ea16df8af8"
|
||||
},
|
||||
"gates/launchers/bb3e467ba12d55affbb8802987dfcdeb45c62aff507e16d21f5a106e8b0651a4.py": {
|
||||
"bytes": 7629,
|
||||
"sha256": "bb3e467ba12d55affbb8802987dfcdeb45c62aff507e16d21f5a106e8b0651a4"
|
||||
},
|
||||
"gates/project-admission-71cadfa-1.inputs.json": {
|
||||
"bytes": 101425,
|
||||
"sha256": "d09706edfcc24b769c463cfb9972c5db2510382cb5096afed1983cf8a1eb487a"
|
||||
},
|
||||
"gates/project-admission-71cadfa-1.log": {
|
||||
"bytes": 563,
|
||||
"sha256": "e5f476fc5c063910e25e2a8aaab294b618bcd7f79b67f710c8ac18418229c190"
|
||||
},
|
||||
"gates/project-admission-71cadfa-1.result.json": {
|
||||
"bytes": 2572,
|
||||
"sha256": "6e68571d9405d66e33e7933a83cf61295f27ff501f8465ef028e3405a73420dd"
|
||||
},
|
||||
"gates/project-aggregate-references-71cadfa-1.inputs.json": {
|
||||
"bytes": 101425,
|
||||
"sha256": "d09706edfcc24b769c463cfb9972c5db2510382cb5096afed1983cf8a1eb487a"
|
||||
},
|
||||
"gates/project-aggregate-references-71cadfa-1.log": {
|
||||
"bytes": 444,
|
||||
"sha256": "35e0df828ccfa9e68d91efbc0ba58cbb5cb74cbb067cd52c7de2e8e09e0698a6"
|
||||
},
|
||||
"gates/project-aggregate-references-71cadfa-1.result.json": {
|
||||
"bytes": 2603,
|
||||
"sha256": "db0d84900e934e70b8e7449b3afe56689591167796525cede24a2ed794c8f615"
|
||||
},
|
||||
"gates/project-clippy-71cadfa-1.inputs.json": {
|
||||
"bytes": 101425,
|
||||
"sha256": "d09706edfcc24b769c463cfb9972c5db2510382cb5096afed1983cf8a1eb487a"
|
||||
},
|
||||
"gates/project-clippy-71cadfa-1.log": {
|
||||
"bytes": 165,
|
||||
"sha256": "37525eea329fcbfc90c5c5c11bcbad20395c4511e6338f185b54a9551fafdeaf"
|
||||
},
|
||||
"gates/project-clippy-71cadfa-1.result.json": {
|
||||
"bytes": 1969,
|
||||
"sha256": "ba55e83185a806f91125d06359e010e036ecd0331b09335e20a5e20ff4a4c793"
|
||||
},
|
||||
"gates/project-clippy-b9a31bb-1.inputs.json": {
|
||||
"bytes": 101425,
|
||||
"sha256": "2095340b598fbfb6702f49941b6ec4efb658862dcf16b98efc1972e984d83aa9"
|
||||
},
|
||||
"gates/project-clippy-b9a31bb-1.log": {
|
||||
"bytes": 165,
|
||||
"sha256": "6607694cd25a358cd334761604f3144682e5796f84beddd77fa619aa7cdfaab7"
|
||||
},
|
||||
"gates/project-clippy-b9a31bb-1.result.json": {
|
||||
"bytes": 1968,
|
||||
"sha256": "48b57f25b0f18b58a5d02450aa17d17a8d950570be345a298dd0e6938143ba9a"
|
||||
},
|
||||
"gates/project-fmt-71cadfa-1.inputs.json": {
|
||||
"bytes": 101425,
|
||||
"sha256": "d09706edfcc24b769c463cfb9972c5db2510382cb5096afed1983cf8a1eb487a"
|
||||
},
|
||||
"gates/project-fmt-71cadfa-1.log": {
|
||||
"bytes": 7560,
|
||||
"sha256": "c8dd3f62edc5853d7d0ccf536e46e389f0b62e2dd8b3da0e1561bf4bbada96a8"
|
||||
},
|
||||
"gates/project-fmt-71cadfa-1.result.json": {
|
||||
"bytes": 1883,
|
||||
"sha256": "2baecbb8911087d401bc7961ff8b3f9a5b42d784fa6e7aec5a5c2156b8988491"
|
||||
},
|
||||
"gates/project-fmt-aaec78f-1.inputs.json": {
|
||||
"bytes": 101425,
|
||||
"sha256": "1ec30aeb757d0424598cdf0c52a4845c1645ff8ed0c12cb17e4d18b82d957345"
|
||||
},
|
||||
"gates/project-fmt-aaec78f-1.log": {
|
||||
"bytes": 6446,
|
||||
"sha256": "c1c6b12861c8117ce6ffc6d6742ebf92618aafb10160ec6f99d370ca72ebab2d"
|
||||
},
|
||||
"gates/project-fmt-aaec78f-1.result.json": {
|
||||
"bytes": 1882,
|
||||
"sha256": "fbb3e49b2373be566deb81f7c1e40d4a2a174abfe64515b1497e6e121dc31b97"
|
||||
},
|
||||
"gates/project-focused-71cadfa-1.inputs.json": {
|
||||
"bytes": 101425,
|
||||
"sha256": "d09706edfcc24b769c463cfb9972c5db2510382cb5096afed1983cf8a1eb487a"
|
||||
},
|
||||
"gates/project-focused-71cadfa-1.log": {
|
||||
"bytes": 1994,
|
||||
"sha256": "326367daeded59bc983fa0ac1691cd9bfc63f68783afb911a7c108cb506840cd"
|
||||
},
|
||||
"gates/project-focused-71cadfa-1.result.json": {
|
||||
"bytes": 4271,
|
||||
"sha256": "b1813fc381eb1b50dc4e29c8b4bd848858c2cdc5f724d72fae3da1ffd8695b20"
|
||||
},
|
||||
"gates/project-focused-b9a31bb-1.inputs.json": {
|
||||
"bytes": 101425,
|
||||
"sha256": "2095340b598fbfb6702f49941b6ec4efb658862dcf16b98efc1972e984d83aa9"
|
||||
},
|
||||
"gates/project-focused-b9a31bb-1.log": {
|
||||
"bytes": 3167,
|
||||
"sha256": "ec664df53e2d61a7e2b7bf3d524134a568257074db88f7be26f43b6ed0e9bbfc"
|
||||
},
|
||||
"gates/project-focused-b9a31bb-1.result.json": {
|
||||
"bytes": 4282,
|
||||
"sha256": "529ba645d1a93494345ae0594af49d5c3d18c4db05cc859bdae197f44b81aa7d"
|
||||
},
|
||||
"gates/project-fragment-coordinates-71cadfa-1.inputs.json": {
|
||||
"bytes": 101425,
|
||||
"sha256": "d09706edfcc24b769c463cfb9972c5db2510382cb5096afed1983cf8a1eb487a"
|
||||
},
|
||||
"gates/project-fragment-coordinates-71cadfa-1.log": {
|
||||
"bytes": 517,
|
||||
"sha256": "9f16172fdd1b5dcd7defaa42b640814696ce69218442be4894f1ac35b9379058"
|
||||
},
|
||||
"gates/project-fragment-coordinates-71cadfa-1.result.json": {
|
||||
"bytes": 2496,
|
||||
"sha256": "72a54d7bd5200540edf046ebbffb46686ef2e2b292b716d391832447dd89ddda"
|
||||
},
|
||||
"gates/project-full-71cadfa-1.inputs.json": {
|
||||
"bytes": 101425,
|
||||
"sha256": "d09706edfcc24b769c463cfb9972c5db2510382cb5096afed1983cf8a1eb487a"
|
||||
},
|
||||
"gates/project-full-71cadfa-1.log": {
|
||||
"bytes": 35486,
|
||||
"sha256": "4042844548d046880eb7b0dbdfadc92017a113c32d788dbcbc77b2197624c742"
|
||||
},
|
||||
"gates/project-full-71cadfa-1.result.json": {
|
||||
"bytes": 30035,
|
||||
"sha256": "73cfb2c6b819e631f0f8df050abc4278278d7e79e6f0d24d96da9bc50f4abbb2"
|
||||
},
|
||||
"gates/project-list-71cadfa-1.inputs.json": {
|
||||
"bytes": 101425,
|
||||
"sha256": "d09706edfcc24b769c463cfb9972c5db2510382cb5096afed1983cf8a1eb487a"
|
||||
},
|
||||
"gates/project-list-71cadfa-1.log": {
|
||||
"bytes": 22449,
|
||||
"sha256": "bd849c7c338d06a226cf3d49bc4a332dd6fcf1063e5df121db052f0718731e6d"
|
||||
},
|
||||
"gates/project-list-71cadfa-1.result.json": {
|
||||
"bytes": 24528,
|
||||
"sha256": "4ae6d131881e5af6f5d7dd001e367af20ac016e81e23cf2a1f52806946cdc500"
|
||||
},
|
||||
"gates/project-list-b9a31bb-1.inputs.json": {
|
||||
"bytes": 101425,
|
||||
"sha256": "2095340b598fbfb6702f49941b6ec4efb658862dcf16b98efc1972e984d83aa9"
|
||||
},
|
||||
"gates/project-list-b9a31bb-1.log": {
|
||||
"bytes": 22449,
|
||||
"sha256": "8d458e4739f36dbdbe271afd8a4700cd2742c41a58e9a5598619184164551e49"
|
||||
},
|
||||
"gates/project-list-b9a31bb-1.result.json": {
|
||||
"bytes": 24528,
|
||||
"sha256": "c3aca9e89b0e4bf2bd1973db7570748ccaf4813a14a276c0512267c7ff4ee406"
|
||||
},
|
||||
"gates/project-route-defaults-71cadfa-1.inputs.json": {
|
||||
"bytes": 101425,
|
||||
"sha256": "d09706edfcc24b769c463cfb9972c5db2510382cb5096afed1983cf8a1eb487a"
|
||||
},
|
||||
"gates/project-route-defaults-71cadfa-1.log": {
|
||||
"bytes": 532,
|
||||
"sha256": "fa284566c22193188f0e2814a5d47831155503b9a1de1f1c35604a2ee8c051c6"
|
||||
},
|
||||
"gates/project-route-defaults-71cadfa-1.result.json": {
|
||||
"bytes": 2556,
|
||||
"sha256": "485e6c510fbcc4ad0638fada648b5b5100564bdda92b7f0e8c3d3329efa70dc7"
|
||||
},
|
||||
"gates/project-route-errors-71cadfa-1.inputs.json": {
|
||||
"bytes": 101425,
|
||||
"sha256": "d09706edfcc24b769c463cfb9972c5db2510382cb5096afed1983cf8a1eb487a"
|
||||
},
|
||||
"gates/project-route-errors-71cadfa-1.log": {
|
||||
"bytes": 425,
|
||||
"sha256": "99c8ce1de3de2b2fb829cabfc43fc3b8bcd1bba00abe4917b6766671cf4db238"
|
||||
},
|
||||
"gates/project-route-errors-71cadfa-1.result.json": {
|
||||
"bytes": 2534,
|
||||
"sha256": "bab2d61fbeeab681b9ad980f606b2fc4159a70e2943afbc7d20d8c3a4ad39377"
|
||||
},
|
||||
"notes/private-handoff.md": {
|
||||
"bytes": 7092,
|
||||
"sha256": "11ccb063e4bf33ee039b90ea5fba3bbf71534398bb3a264972771ecf85fd33bb"
|
||||
},
|
||||
"notes/successor-format-readback.json": {
|
||||
"bytes": 2520,
|
||||
"sha256": "f1bd3631832376cd21d40341e7b9af2c42f6ea1b5d20dcda3ccdf3eb0e9b332f"
|
||||
},
|
||||
"notes/tested-readback.json": {
|
||||
"bytes": 15401,
|
||||
"sha256": "744e43c828a817e78c82c971157c2199ae2b96155640779fc3d148694a55f840"
|
||||
}
|
||||
},
|
||||
"archive": {
|
||||
"file": "evidence.zip",
|
||||
"bytes": 490311,
|
||||
"sha256": "a42f29c9adc05adc6bd0c881b716bda3bd098732eb081b0f6214252db5d29d83"
|
||||
},
|
||||
"verifier": {
|
||||
"file": "verify.py",
|
||||
"bytes": 23199,
|
||||
"sha256": "f94e5f4a733c82c0b240dc4c64557bf34f6705590144df686ccfbc53c076b6ff"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,227 @@
|
||||
{
|
||||
"source": "aaec78fcc9b273d1485497126392afdd1fb2e54e",
|
||||
"runtime_source": "71cadfa0cd0e112caa29588d2494753301f3cb6c",
|
||||
"status": "Reviewed delivery: completed consistency/control evidence preserved; no subject rerun",
|
||||
"files": {
|
||||
".gitattributes": {
|
||||
"bytes": 8,
|
||||
"sha256": "705fd4d6451a31d36b3df7de96f83f30ac976c9b4a6d1e51671d8e2f33e2d0da"
|
||||
},
|
||||
"controls/archive-pin.result.json": {
|
||||
"bytes": 904,
|
||||
"sha256": "01dbefeec9a94f0c0e5a98716b34e26651cdec0da85acd52ca76c12839bc77bb"
|
||||
},
|
||||
"controls/archive-pin.stderr.log": {
|
||||
"bytes": 40,
|
||||
"sha256": "d312212a64253be66ea3dae99ac7596865374f80bd64005481241c3d9b8675f4"
|
||||
},
|
||||
"controls/archive-pin.stdout.log": {
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"controls/changed-formatter-body.result.json": {
|
||||
"bytes": 935,
|
||||
"sha256": "c1ddaccf7d0e959dead8e984831d1bba6bfbdc89ef58dc1ba2eb5ba1cc85c815"
|
||||
},
|
||||
"controls/changed-formatter-body.stderr.log": {
|
||||
"bytes": 49,
|
||||
"sha256": "efa75ca69cccfe361e7f15bbf1ab67095f4ad6eaf87293414e51b800888c0c36"
|
||||
},
|
||||
"controls/changed-formatter-body.stdout.log": {
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"controls/changed-inherited-diagnostic.result.json": {
|
||||
"bytes": 977,
|
||||
"sha256": "feb779acc8f893eda3e3dc9cfe8aaa29cacf6543e30445692222b8a1ef13cba0"
|
||||
},
|
||||
"controls/changed-inherited-diagnostic.stderr.log": {
|
||||
"bytes": 55,
|
||||
"sha256": "3e5dc08afdee9b77cf4c507bea74aed13df97667f9b51d87e03f6ec63114dd4d"
|
||||
},
|
||||
"controls/changed-inherited-diagnostic.stdout.log": {
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"controls/changed-successor-diff.result.json": {
|
||||
"bytes": 933,
|
||||
"sha256": "b56fc4e1116ba9a6265e9e62dedf0b9dffd3c52afdd35904723b8d3a294db02c"
|
||||
},
|
||||
"controls/changed-successor-diff.stderr.log": {
|
||||
"bytes": 44,
|
||||
"sha256": "370188fb9e8276c8c03588a8d8a2e211d3eb4d0f9f7195aa8030485436635fb2"
|
||||
},
|
||||
"controls/changed-successor-diff.stdout.log": {
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"controls/duplicate-zip-member.result.json": {
|
||||
"bytes": 904,
|
||||
"sha256": "9e902da9f73be83e923f8d19d1d5d6253c84169f2fee8661fe3e7b8d0e876adb"
|
||||
},
|
||||
"controls/duplicate-zip-member.stderr.log": {
|
||||
"bytes": 32,
|
||||
"sha256": "3d2d7e221ca2260dffaec5e5c15488e4317d59339bbf88511a79f58c03a36607"
|
||||
},
|
||||
"controls/duplicate-zip-member.stdout.log": {
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"controls/forged-git-input.result.json": {
|
||||
"bytes": 921,
|
||||
"sha256": "9fd202a9ae2944bc5e221e306cbb32ef5a00682903d628df12818789323dee8e"
|
||||
},
|
||||
"controls/forged-git-input.stderr.log": {
|
||||
"bytes": 47,
|
||||
"sha256": "ecdc48f2565108daac7e3686f764d43c94a5bf50e8772fd147c29635d3b546a9"
|
||||
},
|
||||
"controls/forged-git-input.stdout.log": {
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"controls/integration-ignored.result.json": {
|
||||
"bytes": 949,
|
||||
"sha256": "c12504bef20ddb8b3e2f1aa7200b24936af17af9e68cc2ccb1976ae5bb8e8f85"
|
||||
},
|
||||
"controls/integration-ignored.stderr.log": {
|
||||
"bytes": 34,
|
||||
"sha256": "15d3d0e2c6fb3f20f18c2c8d7ed4f67ec51578df0c66d79cb395c0cd2a955190"
|
||||
},
|
||||
"controls/integration-ignored.stdout.log": {
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"controls/integration-wrong-command.result.json": {
|
||||
"bytes": 971,
|
||||
"sha256": "0ad5005e39f6ff9dee93c89e3c2b80034c8b09d557535ddddefa4d93eb1235bc"
|
||||
},
|
||||
"controls/integration-wrong-command.stderr.log": {
|
||||
"bytes": 44,
|
||||
"sha256": "6079ceba49384f935331c52ca7bf4d7928a73d311e2a125e36aa1cdd9ae9a982"
|
||||
},
|
||||
"controls/integration-wrong-command.stdout.log": {
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"controls/integration-zero-test.result.json": {
|
||||
"bytes": 958,
|
||||
"sha256": "aea4bd030470bb8d4d07587376d451642d8a95eb44ab69eabe6beb9f7329d48d"
|
||||
},
|
||||
"controls/integration-zero-test.stderr.log": {
|
||||
"bytes": 41,
|
||||
"sha256": "4ea6eb7a458fba980b8e4d8594be7d265cc93730502d4834f9ea2503185b555e"
|
||||
},
|
||||
"controls/integration-zero-test.stdout.log": {
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"controls/missing-failed-history.result.json": {
|
||||
"bytes": 924,
|
||||
"sha256": "3c85d2007285c650056a71c511879364c0bba807340464607738d874fb453a59"
|
||||
},
|
||||
"controls/missing-failed-history.stderr.log": {
|
||||
"bytes": 40,
|
||||
"sha256": "9996afdaae04ab63cb6907ab75bd732f408cd6af12d2d0a9268cf39bbb54425c"
|
||||
},
|
||||
"controls/missing-failed-history.stdout.log": {
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"controls/missing-new-outcome.result.json": {
|
||||
"bytes": 952,
|
||||
"sha256": "bac5c152ec17de114b6ae0ace1a6f3420321447e3d3940d9dd98d4be909ea876"
|
||||
},
|
||||
"controls/missing-new-outcome.stderr.log": {
|
||||
"bytes": 41,
|
||||
"sha256": "4ea6eb7a458fba980b8e4d8594be7d265cc93730502d4834f9ea2503185b555e"
|
||||
},
|
||||
"controls/missing-new-outcome.stdout.log": {
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"controls/REVIEW.md": {
|
||||
"bytes": 3566,
|
||||
"sha256": "81dd6baa1b89366f18d0b3a2d68745a1facdfb2ff8e090a9d8b1bae85cd721c5"
|
||||
},
|
||||
"controls/route-pair-artifact.result.json": {
|
||||
"bytes": 994,
|
||||
"sha256": "300153195a2965a9250029b2c088bc24760fb3cd8ef5fc5ca2770e9b2c5d9273"
|
||||
},
|
||||
"controls/route-pair-artifact.stderr.log": {
|
||||
"bytes": 55,
|
||||
"sha256": "193b24af95f1d6b7c52237d1ccd2b3aa88be65db6b248eb68e591bef0e6b1d66"
|
||||
},
|
||||
"controls/route-pair-artifact.stdout.log": {
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"controls/source-pair-artifact.result.json": {
|
||||
"bytes": 1003,
|
||||
"sha256": "73b22a33e449bcca491864fbe2dacfd7e90a0bf35235178345a763e583b2b2cd"
|
||||
},
|
||||
"controls/source-pair-artifact.stderr.log": {
|
||||
"bytes": 55,
|
||||
"sha256": "193b24af95f1d6b7c52237d1ccd2b3aa88be65db6b248eb68e591bef0e6b1d66"
|
||||
},
|
||||
"controls/source-pair-artifact.stdout.log": {
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"controls/summary.json": {
|
||||
"bytes": 16232,
|
||||
"sha256": "c39e52c220b0b023382d70ed4344597cf3596e741ca67995fb67edf8e9aa20c8"
|
||||
},
|
||||
"controls/unchanged-positive.result.json": {
|
||||
"bytes": 828,
|
||||
"sha256": "dfd4716a298a345fc4d3e8d6c811429719978a08f0701076da8260762d31f48e"
|
||||
},
|
||||
"controls/unchanged-positive.stderr.log": {
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"controls/unchanged-positive.stdout.log": {
|
||||
"bytes": 815,
|
||||
"sha256": "daee4749971ad9f41a5e1d8f0560b1b61a9168b21f2fd934d8781beddbc6d642"
|
||||
},
|
||||
"controls/verifier-pin.result.json": {
|
||||
"bytes": 906,
|
||||
"sha256": "fb95c45f7a34d50aec00648ebc24145ef150baf6be43af2d9af6678c79125b2b"
|
||||
},
|
||||
"controls/verifier-pin.stderr.log": {
|
||||
"bytes": 41,
|
||||
"sha256": "fca5b1d1f72cba26710c9481743247e50024286837be10e16fa5b04829fa4286"
|
||||
},
|
||||
"controls/verifier-pin.stdout.log": {
|
||||
"bytes": 0,
|
||||
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
|
||||
},
|
||||
"CONTROLS.md": {
|
||||
"bytes": 3075,
|
||||
"sha256": "caee9431b94df6f85f2c0477fa8c29268c4c84a13672c65a8d99d4e268a18d0d"
|
||||
},
|
||||
"controls.py": {
|
||||
"bytes": 11834,
|
||||
"sha256": "0d2cd38c7baffba78cd2f009d832c7a16e9ac46437d56105a484821ce54601e7"
|
||||
},
|
||||
"evidence.zip": {
|
||||
"bytes": 490311,
|
||||
"sha256": "a42f29c9adc05adc6bd0c881b716bda3bd098732eb081b0f6214252db5d29d83"
|
||||
},
|
||||
"manifest.json": {
|
||||
"bytes": 9112,
|
||||
"sha256": "9277764168157819faaddaa8dffd2714efe995e2e136c795a51cc10340cd2f50"
|
||||
},
|
||||
"ORIGINAL-PROPOSAL-README.md": {
|
||||
"bytes": 3455,
|
||||
"sha256": "41aa843ea33740f0d2c8b20a63caa73f41508921b61e881db522c87e11bd2ec6"
|
||||
},
|
||||
"README.md": {
|
||||
"bytes": 5622,
|
||||
"sha256": "8059b467532fa744e5e34596b22fda547e5b923440cd858f1a52518aa12ca06f"
|
||||
},
|
||||
"verify.py": {
|
||||
"bytes": 23199,
|
||||
"sha256": "f94e5f4a733c82c0b240dc4c64557bf34f6705590144df686ccfbc53c076b6ff"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,359 @@
|
||||
"""Read-only Project receipt/Git consistency verifier; never runs archived code.
|
||||
|
||||
Reuses the published mixed-syntax verifier's ZIP/manifest, unique JSON, immutable
|
||||
Git input, actual listing/outcome and exact-command design. Proposal: not run yet.
|
||||
"""
|
||||
from pathlib import Path, PurePosixPath, PureWindowsPath
|
||||
from datetime import datetime
|
||||
import argparse
|
||||
import hashlib
|
||||
import io
|
||||
import json
|
||||
import re
|
||||
import subprocess
|
||||
import zipfile
|
||||
|
||||
FAILED = 'b9a31bb848a4f74f097aa8a09351cc82c98b5815'
|
||||
TESTED = '71cadfa0cd0e112caa29588d2494753301f3cb6c'
|
||||
SOURCE = 'aaec78fcc9b273d1485497126392afdd1fb2e54e'
|
||||
BASELINE = 'a578ac98a06772a60bec00ae287e65650680d119'
|
||||
PUBLISHED = '85cc27fed02ce770c30c9447f35c4ab4d24f9644'
|
||||
BASELINE_PATH = 'harness/experiments/analysis-mixed-syntax-20260923/evidence.zip'
|
||||
BASELINE_HASH = 'f39aab1639ce14e4fe61744cf8881b0883ecbe131fefd6bc65c18edd8c81215d'
|
||||
SCOPE = ['Cargo.toml', 'Cargo.lock', 'rust-toolchain.toml', '.cargo', 'build',
|
||||
'crates', 'assets', 'docs', 'examples', 'harness/fixtures', 'vendor']
|
||||
PREFIX = ['cargo', 'test', '--locked', '--offline', '-p', 'oa-core', '--lib']
|
||||
PROJECT = 'language::analysis_source::mixed::project::tests::'
|
||||
ADMISSION = 'validation::shared_admission_tests::'
|
||||
PROJECT_NAMES = [PROJECT + name for name in (
|
||||
'catalog_alias_first_entry_first_and_canonical_occurrence_owners',
|
||||
'complete_global_arena_scoped_calls_and_coincident_file_offsets',
|
||||
'complete_oa_sa_forward_model_warning_and_original_authority',
|
||||
'complete_static_architecture_and_unicode_warning_mapping',
|
||||
'incomplete_call_borrows_large_signature_and_refuses_at_single_admission',
|
||||
'inherited_storage_failure_and_success_drop_deep_syntax_on_128k_stack',
|
||||
'mapped_warning_path_copies_are_admitted_before_retention',
|
||||
'ordinary_steps_add_once_to_inherited_typed_reference_budget',
|
||||
'public_source3_and_source7_preserve_legacy_scratch_defaults_and_errors',
|
||||
'retained_nested_record_policy_cannot_be_replaced_at_resolution',
|
||||
'scoped_parameter_faults_keep_real_file_and_unknown_fields_use_owner_fallback',
|
||||
'selector_counts_branch_and_context_chains_but_excludes_historical_and_scalars',
|
||||
'simultaneous_catalog_storage_is_not_individually_reset')]
|
||||
ADMISSION_NAMES = [ADMISSION + name for name in (
|
||||
'static_failure_returns_no_metadata_and_skips_architectural_warnings',
|
||||
'successful_static_metadata_survives_architectural_warnings')]
|
||||
FAILED_NAMES = {PROJECT_NAMES[2], PROJECT_NAMES[3]}
|
||||
INTEGRATIONS = {
|
||||
'route-defaults': ('route_source', 'omitted_schema_three_routes_default_to_empty_and_v2_reader_stays_frozen'),
|
||||
'route-errors': ('route_source', 'invalid_route_source_has_located_errors_and_no_silent_nested_defaults'),
|
||||
'fragment-coordinates': ('source_project', 'source_errors_keep_exact_fragment_unicode_positions'),
|
||||
'aggregate-references': ('source_project', 'duplicate_include_edges_count_toward_admission_and_ordered_references_are_aggregate'),
|
||||
}
|
||||
HELPERS = {
|
||||
FAILED: 'bb3e467ba12d55affbb8802987dfcdeb45c62aff507e16d21f5a106e8b0651a4',
|
||||
TESTED: 'a3b965c6d4d9f3f7d3d55ea0f142d16e43fccd9adcd9b8121615a2ea16df8af8',
|
||||
SOURCE: '46c9ee5f4130e7854855e44b1509ecc0833dd4a3c41a1f3251955b0ac79cc154',
|
||||
}
|
||||
GATES = {}
|
||||
for short, source, kinds in (
|
||||
('b9a31bb', FAILED, ('clippy', 'list', 'focused')),
|
||||
('71cadfa', TESTED, ('clippy', 'list', 'focused', 'admission', 'full', *INTEGRATIONS, 'fmt')),
|
||||
('aaec78f', SOURCE, ('fmt',)),
|
||||
):
|
||||
for kind in kinds:
|
||||
GATES[f'project-{kind}-{short}-1'] = (source, kind)
|
||||
NOTES = {
|
||||
'notes/private-handoff.md', 'notes/tested-readback.json', 'notes/successor-format-readback.json',
|
||||
'diffs/b9a31bb-to-71cadfa.patch', 'diffs/71cadfa-to-aaec78f.patch', 'baseline-reference.json',
|
||||
}
|
||||
ROOT = 'C:/Users/User/Documents/Git/ARCADIA-Studio'
|
||||
|
||||
|
||||
def require(condition, message):
|
||||
if not condition:
|
||||
raise ValueError(message)
|
||||
|
||||
|
||||
def sha(raw):
|
||||
return hashlib.sha256(raw).hexdigest()
|
||||
|
||||
|
||||
def unique_object(pairs):
|
||||
result = {}
|
||||
for key, value in pairs:
|
||||
require(key not in result, 'Duplicate JSON key: ' + key)
|
||||
result[key] = value
|
||||
return result
|
||||
|
||||
|
||||
def document(raw):
|
||||
return json.loads(raw, object_pairs_hook=unique_object)
|
||||
|
||||
|
||||
def safe_name(name):
|
||||
require(isinstance(name, str) and name and '\\' not in name and ':' not in name,
|
||||
'Unsafe archive name')
|
||||
p = PurePosixPath(name)
|
||||
require(not p.is_absolute() and str(p) == name and '..' not in p.parts,
|
||||
'Unsafe archive path: ' + name)
|
||||
return name
|
||||
|
||||
|
||||
def git(repo, *arguments, data=None):
|
||||
# Ignore replace objects and user-configured diff drivers/rendering. These
|
||||
# fixed options reproduce the archived conventional Git patch format.
|
||||
options = []
|
||||
if arguments[0] == 'diff':
|
||||
options = ['--no-ext-diff', '--no-textconv', '--no-color',
|
||||
'--src-prefix=a/', '--dst-prefix=b/', '--line-prefix=',
|
||||
'--diff-algorithm=myers', '--indent-heuristic',
|
||||
'--unified=3', '--abbrev=7', '--no-renames']
|
||||
return subprocess.check_output(
|
||||
['git', '--no-replace-objects', '-c', 'color.ui=false', '-c', 'core.quotePath=true',
|
||||
'-C', str(repo), arguments[0], *options, *arguments[1:]], input=data)
|
||||
|
||||
|
||||
def git_inputs(repo, source, current):
|
||||
require(current['source'] == source, 'Input source mismatch')
|
||||
records = current['inputs']
|
||||
require(len(records) == 544, 'Unexpected input count')
|
||||
paths = git(repo, 'ls-tree', '-r', '--name-only', source, *SCOPE).decode().splitlines()
|
||||
require(paths == [item['path'] for item in records], 'Git input membership/order mismatch')
|
||||
raw = git(repo, 'cat-file', '--batch', data=''.join(f'{source}:{p}\n' for p in paths).encode())
|
||||
offset = 0
|
||||
for item in records:
|
||||
end = raw.index(b'\n', offset)
|
||||
_, kind, size = raw[offset:end].split()
|
||||
size = int(size)
|
||||
blob = raw[end + 1:end + 1 + size]
|
||||
require(kind == b'blob' and size == item['bytes'] and sha(blob) == item['sha256'],
|
||||
'Git input bytes mismatch: ' + item['path'])
|
||||
offset = end + size + 2
|
||||
require(offset == len(raw), 'Trailing Git batch bytes')
|
||||
|
||||
|
||||
def listing(log):
|
||||
names = re.findall(r'^([^\r\n]+): test\r?$', log, re.M)
|
||||
require(len(names) == len(set(names)), 'Duplicate listed test')
|
||||
require(re.findall(r'^(\d+) tests, (\d+) benchmarks\r?$', log, re.M) == [(str(len(names)), '0')],
|
||||
'Listing footer mismatch')
|
||||
return names
|
||||
|
||||
|
||||
def outcomes(log, expected, passed, failed, filtered):
|
||||
rows = re.findall(r'^test ([^\r\n]+) \.\.\. (ok|FAILED|ignored)\r?$', log, re.M)
|
||||
require(len(rows) == len({name for name, _ in rows}), 'Duplicate runtime outcome')
|
||||
actual = dict(rows)
|
||||
require(set(actual) == set(expected), 'Missing/extra runtime outcomes')
|
||||
require(sum(v == 'ok' for v in actual.values()) == passed and
|
||||
sum(v == 'FAILED' for v in actual.values()) == failed and
|
||||
'ignored' not in actual.values(), 'Runtime status mismatch')
|
||||
summaries = re.findall(r'^test result: (ok|FAILED)\. (\d+) passed; (\d+) failed; '
|
||||
r'(\d+) ignored; (\d+) measured; (\d+) filtered out;', log, re.M)
|
||||
require(summaries == [('FAILED' if failed else 'ok', str(passed), str(failed), '0', '0', str(filtered))],
|
||||
'Runtime footer mismatch')
|
||||
return actual
|
||||
|
||||
|
||||
def failure_blocks(log, names):
|
||||
blocks = re.findall(r'^---- ([^\r\n]+) stdout ----\r?\n(.*?)(?=^---- |^failures:\r?$|\Z)', log, re.M | re.S)
|
||||
require(len(blocks) == len(names) and {name for name, _ in blocks} == set(names),
|
||||
'Failure-block membership mismatch')
|
||||
tails = re.findall(r'^failures:\r?\n((?: [^\r\n]+\r?\n)+)', log, re.M)
|
||||
require(len(tails) == 1 and tails[0].split() == sorted(names), 'Failure footer changed')
|
||||
return dict(blocks)
|
||||
|
||||
|
||||
def causes(log, names):
|
||||
result = {}
|
||||
for name, block in failure_blocks(log, names).items():
|
||||
details = [line for line in block.splitlines() if line.startswith('called `Result::unwrap()`')]
|
||||
require(len(details) == 1 and 'Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.' in details[0]
|
||||
and 'invalid_source' in details[0], 'Failure cause changed: ' + name)
|
||||
result[name] = details[0]
|
||||
return result
|
||||
|
||||
|
||||
def format_blocks(log):
|
||||
parts = re.split(r'^Diff in [^\n]*?[/\\]as3batch[/\\]([^\n]+):(\d+):\n', log.replace('\r\n', '\n'), flags=re.M)
|
||||
require(not parts[0] and len(parts) > 1 and (len(parts) - 1) % 3 == 0, 'Unexpected formatting output')
|
||||
result = {}
|
||||
for i in range(1, len(parts), 3):
|
||||
key = (parts[i].replace('\\', '/'), int(parts[i + 1]))
|
||||
require(key not in result, 'Duplicate formatter block')
|
||||
result[key] = parts[i + 2]
|
||||
return result
|
||||
|
||||
|
||||
def norm(path):
|
||||
return PureWindowsPath(path).as_posix().lower()
|
||||
|
||||
|
||||
def baseline(repo, reference):
|
||||
expected = {'commit': PUBLISHED, 'path': BASELINE_PATH, 'sha256': BASELINE_HASH, 'source': BASELINE}
|
||||
require(reference == expected, 'Published baseline reference changed')
|
||||
raw = git(repo, 'show', PUBLISHED + ':' + BASELINE_PATH)
|
||||
require(sha(raw) == BASELINE_HASH, 'Published baseline archive differs')
|
||||
with zipfile.ZipFile(io.BytesIO(raw)) as z:
|
||||
require(len(z.namelist()) == len(set(z.namelist())), 'Duplicate published baseline member')
|
||||
listed = z.read('gates/mixed-direct-list-a578-1.log').decode()
|
||||
full = z.read('gates/mixed-direct-full-a578-1.log').decode()
|
||||
fmt = z.read('gates/mixed-fmt-a578-1.log').decode()
|
||||
historical = z.read('baseline/full-f1d79df.log').decode()
|
||||
names = listing(listed)
|
||||
require(len(names) == 194, 'Published baseline name count differs')
|
||||
statuses = outcomes(full, names, 178, 16, 0)
|
||||
bad = {name for name, status in statuses.items() if status == 'FAILED'}
|
||||
old = dict(re.findall(r'^test ([^\r\n]+) \.\.\. (ok|FAILED|ignored)\r?$', historical, re.M))
|
||||
require(len(old) == 152 and all(statuses.get(name) == status for name, status in old.items()),
|
||||
'Published historical status link differs')
|
||||
return names, statuses, causes(full, bad), format_blocks(fmt)
|
||||
|
||||
|
||||
def verify_payload(payload, manifest, repo):
|
||||
require(manifest['schema'] == 1 and manifest['source'] == SOURCE and manifest['runtime_source'] == TESTED,
|
||||
'Manifest source/schema mismatch')
|
||||
expected_members = NOTES | {'gates/launchers/' + value + '.py' for value in HELPERS.values()}
|
||||
expected_members |= {'gates/' + stem + suffix for stem in GATES for suffix in ('.result.json', '.log', '.inputs.json')}
|
||||
require(set(payload) == set(manifest['payloads']) == expected_members, 'Missing/extra package payload')
|
||||
for name, raw in payload.items():
|
||||
safe_name(name)
|
||||
require(manifest['payloads'][name] == {'bytes': len(raw), 'sha256': sha(raw)}, 'Payload hash/size mismatch: ' + name)
|
||||
old_names, old_status, old_causes, old_fmt = baseline(repo, document(payload['baseline-reference.json']))
|
||||
records, logs, inventories = {}, {}, {}
|
||||
for stem, (source, kind) in GATES.items():
|
||||
root = 'gates/' + stem
|
||||
r = document(payload[root + '.result.json'])
|
||||
log = payload[root + '.log'].decode('utf-8')
|
||||
require(r['source'] == r['head_after'] == source and r['changed_inputs'] == [] and r['verification_failures'] == [], 'Gate source/verification drift: ' + stem)
|
||||
require(datetime.fromisoformat(r['start']) < datetime.fromisoformat(r['end']) and r['elapsed_monotonic_seconds'] > 0, 'Gate not closed')
|
||||
env = r['environment']
|
||||
require(env['CARGO_BUILD_JOBS'] == '1' and env['CARGO_INCREMENTAL'] == '0', 'Gate concurrency/profile differs')
|
||||
require(all(env.get(key) is None for key in ('RUSTFLAGS', 'RUSTC', 'RUSTUP_TOOLCHAIN', 'RUST_MIN_STACK', 'ARCADIA_CODEC_LIFECYCLE_PHASE')), 'Compiler/parent override differs')
|
||||
for key, expected in {'CARGO_TARGET_DIR': ROOT + '/.local/analysis-checked-save-target-20260913', 'CARGO_HOME': ROOT + '/.local/toolchain/cargo', 'RUSTUP_HOME': ROOT + '/.local/toolchain/rustup'}.items():
|
||||
require(norm(env[key]) == norm(expected), 'Gate environment path differs: ' + key)
|
||||
require(norm(r['cwd']) == norm(ROOT + '/.local/as3batch') and r['invocation'] == 'cargo', 'Gate invocation/cwd differs')
|
||||
require(r['inputs'] == stem + '.inputs.json' and sha(payload[root + '.inputs.json']) == r['inputs_sha256'] and sha(payload[root + '.log']) == r['log_sha256'], 'Log/input binding differs')
|
||||
helper = HELPERS[source]
|
||||
require(r['launcher_sha256'] == r['launcher_sha256_after'] == helper and r['launcher_copy'].replace('\\', '/') == 'launchers/' + helper + '.py' and sha(payload['gates/launchers/' + helper + '.py']) == helper, 'Launcher differs')
|
||||
current = document(payload[root + '.inputs.json'])
|
||||
if source not in inventories:
|
||||
git_inputs(repo, source, current)
|
||||
inventories[source] = current
|
||||
require(current == inventories[source], 'Same-source input manifests differ')
|
||||
mode = 'integration' if kind in INTEGRATIONS else ('focused' if kind == 'admission' else kind)
|
||||
selected = PROJECT if kind == 'focused' else ADMISSION if kind == 'admission' else INTEGRATIONS[kind][1] if mode == 'integration' else ''
|
||||
target = INTEGRATIONS[kind][0] if mode == 'integration' else None
|
||||
command = {
|
||||
'clippy': ['cargo', 'clippy', '--locked', '--offline', '-p', 'oa-core', '--all-targets', '--', '-D', 'warnings'],
|
||||
'fmt': ['cargo', 'fmt', '--all', '--', '--check'], 'list': PREFIX + ['--', '--list'],
|
||||
'full': PREFIX + ['--', '--test-threads=1'], 'focused': PREFIX + [selected, '--', '--test-threads=1'],
|
||||
'integration': ['cargo', 'test', '--locked', '--offline', '-p', 'oa-core', '--test', target, selected, '--', '--exact', '--test-threads=1'],
|
||||
}[mode]
|
||||
require(r['mode'] == mode and r['filter'] == selected and r['test_target'] == target and r['command'] == command, 'Exact command/mode/filter differs')
|
||||
require(r['exit'] == (1 if kind == 'fmt' else 101 if kind == 'full' or (source == FAILED and kind == 'focused') else 0), 'Gate exit differs')
|
||||
rows = re.findall(r'^test ([^\r\n]+) \.\.\. (ok|FAILED|ignored)\r?$', log, re.M)
|
||||
require(r['outcomes'] == [list(row) for row in rows], 'Receipt outcomes differ from raw log')
|
||||
binary = re.findall(r'^\s*Running ([^\r\n]+) \(([^\r\n]+\.exe)\)', log, re.M)
|
||||
require(len(binary) == len(r['artifacts']) == (0 if mode in ('fmt', 'clippy') else 1), 'Missing/extra actual executable')
|
||||
if binary:
|
||||
label, logged = binary[0]
|
||||
a = r['artifacts'][0]
|
||||
require(norm(logged) == norm(a['path']) and a['bytes'] > 0 and re.fullmatch('[0-9a-f]{64}', a['sha256']), 'Executable record differs')
|
||||
require(label.replace('\\', '/') == ('tests/' + target + '.rs' if mode == 'integration' else 'unittests src/lib.rs'), 'Wrong executable target')
|
||||
require(PureWindowsPath(a['path']).name.startswith((target or 'oa_core') + '-'), 'Wrong artifact basename')
|
||||
if mode == 'list':
|
||||
names = listing(log)
|
||||
require(r['listing_members'] == names and r['listing_count'] == len(names) == 209 and not rows, 'Listing receipt differs')
|
||||
require(set(names) == set(old_names) | set(PROJECT_NAMES) | set(ADMISSION_NAMES), 'Exact listed names differ')
|
||||
else:
|
||||
require(r['listing_members'] == [] and r['listing_count'] == 0, 'Non-list fabricated listing')
|
||||
if mode in ('clippy', 'fmt'):
|
||||
require(not rows and not re.search(r'^running \d+ tests', log, re.M), 'Unexpected tests in non-test gate')
|
||||
if mode == 'clippy':
|
||||
require('Finished `dev` profile' in log and not re.search(r'^error(?:\[|:)', log, re.M), 'Strict log did not close cleanly')
|
||||
records[stem], logs[stem] = r, log
|
||||
prior_end = None
|
||||
for stem in GATES:
|
||||
r = records[stem]
|
||||
started, ended = datetime.fromisoformat(r['start']), datetime.fromisoformat(r['end'])
|
||||
require(prior_end is None or prior_end < started, 'Serialized gate chronology differs')
|
||||
prior_end = ended
|
||||
for short in ('b9a31bb', '71cadfa'):
|
||||
strict, listed, focused = (records[f'project-{kind}-{short}-1'] for kind in ('clippy', 'list', 'focused'))
|
||||
require(datetime.fromisoformat(strict['end']) < datetime.fromisoformat(listed['start']) < datetime.fromisoformat(focused['start']), 'Strict/list/focus order differs')
|
||||
require(listed['artifacts'] == focused['artifacts'], 'Focus not bound to actual listed artifact')
|
||||
require(records['project-list-b9a31bb-1']['listing_members'] == records['project-list-71cadfa-1']['listing_members'], 'Successor actual listing order changed')
|
||||
bad_log = logs['project-focused-b9a31bb-1']
|
||||
bad = outcomes(bad_log, PROJECT_NAMES, 11, 2, 196)
|
||||
require({name for name, status in bad.items() if status == 'FAILED'} == FAILED_NAMES, 'Historical Project failures changed')
|
||||
for name, block in failure_blocks(bad_log, FAILED_NAMES).items():
|
||||
require('assertion `left == right` failed' in block and re.search(r'left: 2\r?\n right: 1', block), 'Historical warning-count failure cause changed')
|
||||
outcomes(logs['project-focused-71cadfa-1'], PROJECT_NAMES, 13, 0, 196)
|
||||
outcomes(logs['project-admission-71cadfa-1'], ADMISSION_NAMES, 2, 0, 207)
|
||||
current_names = records['project-list-71cadfa-1']['listing_members']
|
||||
actual = outcomes(logs['project-full-71cadfa-1'], current_names, 193, 16, 0)
|
||||
require(all(actual[name] == status for name, status in old_status.items()) and all(actual[name] == 'ok' for name in PROJECT_NAMES + ADMISSION_NAMES), 'Historical or added runtime status changed')
|
||||
require(causes(logs['project-full-71cadfa-1'], old_causes) == old_causes, 'Exact historical failure diagnostics changed')
|
||||
for kind in ('admission', 'full'):
|
||||
require(records[f'project-{kind}-71cadfa-1']['artifacts'] == records['project-list-71cadfa-1']['artifacts'], 'Runtime not bound to actual listing artifact')
|
||||
for kind, (target, selected) in INTEGRATIONS.items():
|
||||
outcomes(logs[f'project-{kind}-71cadfa-1'], [selected], 1, 0, 4 if target == 'route_source' else 32)
|
||||
for first, second in (('route-defaults', 'route-errors'), ('fragment-coordinates', 'aggregate-references')):
|
||||
require(records[f'project-{first}-71cadfa-1']['artifacts'] == records[f'project-{second}-71cadfa-1']['artifacts'],
|
||||
'Repeated integration target artifact differs')
|
||||
test_fmt = format_blocks(logs['project-fmt-71cadfa-1'])
|
||||
final_fmt = format_blocks(logs['project-fmt-aaec78f-1'])
|
||||
require(len(old_fmt) == 9 and len(test_fmt) == 10 and len(final_fmt) == 8, 'Formatting block count differs')
|
||||
require(all(key in old_fmt and old_fmt[key] == value and test_fmt.get(key) == value for key, value in final_fmt.items()), 'Inherited formatter block body differs')
|
||||
require(set(old_fmt) - set(final_fmt) == {('crates/oa-core/src/validation.rs', 182)}, 'Baseline formatting removal differs')
|
||||
require(set(test_fmt) - set(final_fmt) == {('crates/oa-core/src/language.rs', 1907), ('crates/oa-core/src/language.rs', 1917)}, 'New formatter correction scope differs')
|
||||
for path in {key[0] for key in final_fmt}:
|
||||
require(git(repo, 'show', BASELINE + ':' + path) == git(repo, 'show', SOURCE + ':' + path), 'Inherited formatting source blob changed')
|
||||
for a, b, changed, name in ((FAILED, TESTED, 'crates/oa-core/src/language/analysis_source/mixed/project/tests.rs', 'diffs/b9a31bb-to-71cadfa.patch'), (TESTED, SOURCE, 'crates/oa-core/src/language.rs', 'diffs/71cadfa-to-aaec78f.patch')):
|
||||
require(git(repo, 'diff', '--name-only', a, b).decode().splitlines() == [changed], 'Source correction scope expanded')
|
||||
require(git(repo, 'diff', '--binary', a, b) == payload[name], 'Exact Git correction diff differs')
|
||||
left, right = inventories[a]['inputs'], inventories[b]['inputs']
|
||||
require([row['path'] for row in left] == [row['path'] for row in right] and [x['path'] for x, y in zip(left, right) if x != y] == [changed], 'Scoped input correction differs')
|
||||
before = git(repo, 'show', TESTED + ':crates/oa-core/src/language.rs').decode()
|
||||
after = git(repo, 'show', SOURCE + ':crates/oa-core/src/language.rs').decode()
|
||||
before, after = (re.sub(r'\s', '', value) for value in (before, after))
|
||||
require(before.count('ConstructedDeclarations{project,legacy_elements}') == after.count('ConstructedDeclarations{project,legacy_elements,}') == 2 and after.replace('ConstructedDeclarations{project,legacy_elements,}', 'ConstructedDeclarations{project,legacy_elements}') == before, 'Successor has non-formatting semantic delta')
|
||||
return {'source': SOURCE, 'runtime_source': TESTED, 'actual_listing': 209, 'Project_pass': 13, 'admission_pass': 2,
|
||||
'full_status': 'FAILED', 'full_passed': 193, 'full_failed': 16, 'exact_prior_statuses_and_diagnostics_preserved': True,
|
||||
'integration_passes': 4, 'strict_status': 'PASS at runtime_source', 'successor_fmt_status': 'FAILED',
|
||||
'successor_fmt_inherited_blocks': 8, 'successor_runtime_claim': False,
|
||||
'limits': 'Receipt/Git consistency, not subject re-execution or authenticated authorship. Private Project only; no public source8/index/update/UI completion.'}
|
||||
|
||||
|
||||
def main():
|
||||
parser = argparse.ArgumentParser(description=__doc__)
|
||||
parser.add_argument('--repo', type=Path, required=True)
|
||||
parser.add_argument('--package', type=Path, default=Path(__file__).resolve().parent)
|
||||
args = parser.parse_args()
|
||||
manifest = document((args.package / 'manifest.json').read_bytes())
|
||||
archive_path = args.package / 'evidence.zip'
|
||||
require(archive_path.stat().st_size <= 16 * 1024 * 1024, 'Compressed archive exceeds bound')
|
||||
archive_raw = archive_path.read_bytes()
|
||||
require(manifest['archive'] == {'file': 'evidence.zip', 'bytes': len(archive_raw), 'sha256': sha(archive_raw)},
|
||||
'Top-level archive pin differs')
|
||||
verifier_raw = Path(__file__).read_bytes()
|
||||
require(manifest['verifier'] == {'file': 'verify.py', 'bytes': len(verifier_raw), 'sha256': sha(verifier_raw)}
|
||||
and (args.package / 'verify.py').read_bytes() == verifier_raw,
|
||||
'Top-level verifier pin differs')
|
||||
with zipfile.ZipFile(io.BytesIO(archive_raw)) as archive:
|
||||
names = archive.namelist()
|
||||
require(len(names) == len(set(names)), 'Duplicate ZIP members')
|
||||
require(len(names) <= 128 and sum(item.file_size for item in archive.infolist()) <= 16 * 1024 * 1024, 'Archive exceeds bounded evidence size')
|
||||
for name in names:
|
||||
safe_name(name)
|
||||
payload = {name: archive.read(name) for name in names}
|
||||
print(json.dumps(verify_payload(payload, manifest, args.repo), indent=2))
|
||||
print('VERIFIED evidence consistency; full suite FAILED193/16; successor formatting FAILED8 inherited blocks; no successor runtime rerun.')
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
try:
|
||||
main()
|
||||
except (ValueError, KeyError, TypeError, OSError, zipfile.BadZipFile, subprocess.CalledProcessError) as error:
|
||||
raise SystemExit('REFUSED: ' + str(error))
|
||||
Reference in New Issue
Block a user