Compare commits

...
37 changed files with 16125 additions and 13 deletions
+30 -13
View File
@@ -11,10 +11,24 @@ active. The VPN remains untouched.
## Current integrated candidate and evidence
Branch `codex/behavior-authoring-20260910`, published as `codex/release1-956atf`.
Current source **c28abcf13a834585a9954f7e54175d47c0a0460b** adds Find focus and
departure-selection corrections. Combined execution and native acceptance are
not yet established; [integration issue27](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/issues/27)
holds current verification and release coordination.
Verified production source **44095f78c28b79d6d085863dc928adba8e24d955** includes
Find focus, departure-selection and scoped Escape corrections. Its Windows
desktop suite passes1095 with3 existing manual ignores; core passes471 with1
manual ignore; server passes56. All three strict Clippy scopes and the matching
development GUI/server build pass. [Exact source, commands and raw evidence](release-navigation-440-windows-20260913.md).
The integrated documentation checkpoint **3c22fe2629fc242714d32805790262fa2c4e33b9**
preserves those production inputs and includes the updated AGENTS instructions.
The actual440 native trial closed normally with79 notes,78 images and14 complete
saved-model/source comparisons. Rename/Undo/Redo/reopen, scoped selection,
placement/state targeting and sampled OA/SA lifecycle/topology navigation are
verified within the [closed trial's explicit scope](experiments/navigation-native-440-20260913/REPORT.md).
It found a same-page Details-to-Preview scroll-loss defect; initial keyboard
Delete after chooser navigation also required an explicit canvas click. Neither
is hidden by passing saved-byte checks. The separate scroll-correction branch
has not received native acceptance from this trial. This remains a development
checkpoint, not a combined release. [Integration issue27](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/issues/27)
owns current verification, correction and release coordination.
Earlier source **e1240295bd114d23d3f67a69e6b38bdb2e25bb0d** combines the canvas
contribution with source/diagram navigation and reviewed alias rename. Its1082-test
listing,17 cross-feature tests,4 mounted preview-scroll tests and strict all-target
@@ -70,16 +84,19 @@ failures and corrections. Earlier authoring and allocation checkpoints remain in
## Isolated contributions and material limitations
Analysis/core source checkpoint **b2c970b4673e062e47eadd12906d2316c4b1a7b3**,
Analysis/core source checkpoint **a2a28f8d23a46ba1696b6a8410d4d3b5c1808f49**,
publication branch `codex/analysis-core-956atf-20260911`, is not integrated into
production. It adds source-save decode/equality containment and a private staged
expression/declaration parser, then repairs the frozen source3 lowering envelope.
Its129-test library run has113 passes and16 failures, all at the unsupported
source8 header. All22 expression/declaration/token cases and8 bridge/save guards
pass; strict all-target Clippy passes on524 unchanged inputs. The separate language
integration target has7 passes and9 failures:8 unsupported headers and an old V2
oracle that omits the new empty definitions catalog. [Exact S2a evidence](release-analysis-source-s2a-20260913.md)
preserves every failure and the independent structural comparison.
production. Its private staged typed parser/lowerer has142 listed tests,
34 passing typed cases,1 passing raw-token case and strict all-target core Clippy
on531 unchanged inputs. The complete library run remains126 passed/16 failed,
with all16 failures at the unsupported public source8 header. The original
fixture error and its test-only correction remain in [exact S2b evidence](release-analysis-source-s2b-20260913.md).
Published private writer **f1d79df4979121335ed7b4ce4da84b2fca8a9ef4** extends that
isolated contribution but is not runtime-verified here; public source8 parser,
writer, source-update and persistence composition remain incomplete.
Earlier [S2a evidence](release-analysis-source-s2a-20260913.md) retains its
129-test113/16 library result and separate7/9 language integration result,
including the old V2 oracle that omitted the empty definitions catalog.
[Earlier bridge evidence](release-analysis-source3-bridge-20260913.md) remains scoped
to6216cff.
The earlier2c515cf full library run had98 passes and16 failures:14 rejected the
@@ -0,0 +1 @@
* -text
@@ -0,0 +1,19 @@
# Private S2c writer executable checkpoint — 2026-09-13
Source: `f1d79df4979121335ed7b4ce4da84b2fca8a9ef4`, a separate analysis branch. Documentation assembly starts from production checkpoint `9e51cd72ba05d37482c5bc258e284804058a1475`; it does not integrate analysis code into production.
Actual evidence: **152 listed; 44 typed passes (including all 10 writer tests); 1 raw-token pass; full library FAILED with 136 passed / 16 existing unsupported-header failures / 0 ignored; strict all-targets Clippy exit 0.** All five gates retain 534 unchanged committed inputs. No public8, S3/S4 or native acceptance is claimed.
Read the [independent review](independent-review.md), [machine audit](audit.json), [original closure](notes/analysis-source8-s2c-gate-closure-20260913.md), and [exact manifest](manifest.json). Raw logs and receipts are in `raw/`; original helpers and pre-run notes are preserved separately. Failed full outcomes and old unrun proposal statements are intentional historical records.
The preceding [S2b archive](../analysis-source-s2b-windows-20260913/archive/README.md) and [independent archive review](../analysis-source-s2b-windows-20260913/archive-review.md) are bound to publication commit `355f6d4d244e6b57fd89a8afd80a2dacdea69ba1`. They preserve original472 failure/correction evidence. This archive references exact required prior bytes via Git rather than duplicating them.
To verify in a checkout or extracted archive, use Python 3 with Git available and a repository containing f1, a2 and the prior evidence commit:
```text
python -B path/to/analysis-source-s2c-windows-20260913/verify.py --repo path/to/ARCADIA-Studio
```
The verifier rejects -O/-OO, requires exact payload membership/hashes, rechecks all 534 source blobs and recomputes listing/outcomes/failure causes. It requires no original Windows paths, executable, compiler, target cache or server. It reports the full suite as failed even when evidence verification succeeds. Run neither the archived raw recorder nor the original comparison/admission scripts as an archive verifier.
The manifest excludes only itself from payload hashes; its own digest is supplied in the publication handoff. No binary/toolchain/source bodies are packaged. The portable audit can verify recorded executable identity bindings but cannot retrospectively execute or attest the omitted executable.
@@ -0,0 +1,177 @@
{
"source": "f1d79df4979121335ed7b4ce4da84b2fca8a9ef4",
"baseline_source": "a2a28f8d23a46ba1696b6a8410d4d3b5c1808f49",
"prior_evidence_commit": "355f6d4d244e6b57fd89a8afd80a2dacdea69ba1",
"verified_git_inputs": 534,
"listing": 152,
"typed_pass": 44,
"raw_token_pass": 1,
"full": {
"passed": 136,
"failed": 16,
"ignored": 0,
"exit": 101
},
"strict_exit": 0,
"new_writer_passes": [
"language::analysis_source::write::tests::all_expr_variants_and_precedence_preserve_exact_trees",
"language::analysis_source::write::tests::canonical_calls_use_callee_parameter_order_and_qualified_names",
"language::analysis_source::write::tests::canonical_strings_and_exact_literals_use_existing_encodings",
"language::analysis_source::write::tests::iterative_writer_preserves_width1024_and_empty_call_topology",
"language::analysis_source::write::tests::negate_override_roundtrip_preserves_depth128_within_frame256",
"language::analysis_source::write::tests::subtree_output_respects_parent_context_and_retained_delimiters",
"language::analysis_source::write::tests::typed_declaration_order_and_required_empty_values_are_canonical",
"language::analysis_source::write::tests::typed_oa_sa_canonical_roundtrips_match_independent_projects",
"language::analysis_source::write::tests::writer_limits_are_aggregate_exact_and_latched_without_partial_results",
"language::analysis_source::write::tests::writer_lookup_scope_shape_and_depth_failures_are_model_located"
],
"gates": {
"list": {
"exit": 0,
"start": "2026-09-13T12:01:12.914765+00:00",
"end": "2026-09-13T12:08:00.913025+00:00",
"log_sha256": "085b90319f2bfa6c455731a35da18cc149b9df195aac817c8e56df53f1601dc2",
"result_sha256": "f57666eec6f236da7fbcbe99aca42de09e2d91823b36872c982d85c194136daf"
},
"typed": {
"exit": 0,
"start": "2026-09-13T12:09:32.804745+00:00",
"end": "2026-09-13T12:09:47.043155+00:00",
"log_sha256": "a65c12943cff40e99757660f99d7018a55799ffe6eaf25836709ce147a9c07a3",
"result_sha256": "9d4ab4415bdc4ac47e4f2cb8fa10430a337d0129111f7c99da59da10eba4ad21"
},
"tokens": {
"exit": 0,
"start": "2026-09-13T12:13:51.673467+00:00",
"end": "2026-09-13T12:13:55.998167+00:00",
"log_sha256": "fdf02a809a7f8b82880003708b27f5737093b20913cde6a4ab62c36e61924ded",
"result_sha256": "04392c3ed68e63a0dedfd754b3ecac4fce0a1dde5b471a177af475794f14097b"
},
"full": {
"exit": 101,
"start": "2026-09-13T12:14:34.666080+00:00",
"end": "2026-09-13T12:15:46.279177+00:00",
"log_sha256": "29a08cbfc02a83922f90c00f0b48f1aa403f93261457e65d29e3b9f46389dce9",
"result_sha256": "a1465abd64e2b3a29388f5da1912dcb87bfe9aed618c122bad557ff21c52c95b"
},
"strict": {
"exit": 0,
"start": "2026-09-13T12:17:28.004362+00:00",
"end": "2026-09-13T12:24:00.805354+00:00",
"log_sha256": "781fdc11e19af01eda6dac414a2cfacef8392524526418c3a74e7fceed279c35",
"result_sha256": "f7f70de01aa41b1deca9c501b45ca460f348d4423a8b54c9fc3dbe05c3c5dd8c"
}
},
"recorded_test_artifact": {
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-checked-save-target-20260913\\debug\\deps\\oa_core-73987e0d7089bf1e.exe",
"bytes": 37146112,
"sha256": "786c5e6deec4fd6f00cc9954ca8190fa47c3c0bdfb0b44dccf032795155438af"
},
"failure_causes": [
{
"name": "language::nesting_tests::checked_in_example_supports_cross_file_reparent_without_changing_allocations",
"current_block_sha256": "d52acb3170e7af64a6e59c7af35c857eddf300ef6a1e3b370f1f433cabb0f19c",
"baseline_block_sha256": "f620d41d68a04b804ea3564440fab89fa000487a1556ce6801bea75a6c390a25",
"diagnostic": "called `Result::unwrap()` on an `Err` value: [SourceDiagnostic { path: \"project.arcadia\", diagnostic: Diagnostic { severity: Error, code: \"invalid_source\", object_id: None, field: None, line: 1, column: 9, message: \"Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.\", span: Span { start: 8, end: 9 } }, related: [] }]"
},
{
"name": "language::nesting_tests::checked_in_nested_example_has_stable_ids_typed_exchanges_and_three_clear_views",
"current_block_sha256": "dc56e23ab1df9506d32855dfca09931fbb9996f9dd44e4ae9d63973cbe1e805a",
"baseline_block_sha256": "ae753ee10eb16dc99dc4adc501705227674c44fb7ba47413cc9385253d42a4c9",
"diagnostic": "called `Result::unwrap()` on an `Err` value: [SourceDiagnostic { path: \"project.arcadia\", diagnostic: Diagnostic { severity: Error, code: \"invalid_source\", object_id: None, field: None, line: 1, column: 9, message: \"Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.\", span: Span { start: 8, end: 9 } }, related: [] }]"
},
{
"name": "language::nesting_tests::nested_elements_infer_only_parent_and_keep_typed_fields_and_allocations_explicit",
"current_block_sha256": "71b4e6ce5c45f30c8917fe38eb61c47ea3ee898db6bbdbb64adac33ce88b8989",
"baseline_block_sha256": "c5528bba86b5df39a88c15fe83744512b64aaf3052551a73a74259d0912d3470",
"diagnostic": "called `Result::unwrap()` on an `Err` value: [Diagnostic { severity: Error, code: \"invalid_source\", object_id: None, field: None, line: 1, column: 9, message: \"Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.\", span: Span { start: 8, end: 9 } }]"
},
{
"name": "language::nesting_tests::nested_fragment_id_stabilization_preserves_comments_and_indexes_real_bytes",
"current_block_sha256": "464eaa6f8edb3e215e7e1065864ac19e5d7966b10f7a478c17cb631476e90c91",
"baseline_block_sha256": "fa4a100af559ac42cab36259e422fb39c6106fb3a1c46e71d4032d252d8763d5",
"diagnostic": "called `Result::unwrap()` on an `Err` value: [SourceDiagnostic { path: \"project.arcadia\", diagnostic: Diagnostic { severity: Error, code: \"invalid_source\", object_id: None, field: None, line: 1, column: 9, message: \"Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.\", span: Span { start: 8, end: 9 } }, related: [] }]"
},
{
"name": "language::nesting_tests::non_elements_includes_and_declarations_inside_typed_values_are_rejected",
"current_block_sha256": "296886536aad66a6076c537217b5f9c53c184bfac22329952f2be0a0c1bd3ab3",
"baseline_block_sha256": "b04bb2d9733291192bc1ca198e524c46e65323f92ad32a5e8c7fce2a4ece41a7",
"diagnostic": "called `Result::unwrap()` on an `Err` value: [Diagnostic { severity: Error, code: \"invalid_source\", object_id: None, field: None, line: 1, column: 9, message: \"Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.\", span: Span { start: 8, end: 9 } }]"
},
{
"name": "language::nesting_tests::normative_nested_ownership_example_compiles_as_a_source_fragment",
"current_block_sha256": "f88aadb299bba7d62db817c98f6fa08e87117fdeb90627f68022a7e0fcf4d699",
"baseline_block_sha256": "7da0ce2761abe8712b3ded9b7290cdde31571a2a48f95398954e80220f27a6a6",
"diagnostic": "called `Result::unwrap()` on an `Err` value: [SourceDiagnostic { path: \"project.arcadia\", diagnostic: Diagnostic { severity: Error, code: \"invalid_source\", object_id: None, field: None, line: 1, column: 9, message: \"Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.\", span: Span { start: 8, end: 9 } }, related: [] }]"
},
{
"name": "source_files::transaction_tests::interrupted_publication_without_write_marker_never_rolls_back_external_matching_bytes",
"current_block_sha256": "0821d31e02f9f2412076545dfdf8efe92e09a4a0cc8c50a41b01e64d32022730",
"baseline_block_sha256": "875205fefe41c87083536536552671de20a64ec4468f3c87a3777b3a5d94bea4",
"diagnostic": "called `Result::unwrap()` on an `Err` value: [SourceDiagnostic { path: \"project.arcadia\", diagnostic: Diagnostic { severity: Error, code: \"invalid_source\", object_id: None, field: None, line: 1, column: 9, message: \"Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.\", span: Span { start: 8, end: 9 } }, related: [] }]"
},
{
"name": "source_files::transaction_tests::interrupted_save_and_interrupted_recovery_can_both_be_resumed",
"current_block_sha256": "8acb6f36a3574e4794b10e658b4bff7f807964c98d0adafee5d403254c3343d5",
"baseline_block_sha256": "4fa2af08eb0fd41c7ca41b191de3a3aab57d898d32536b89fc7523936ed053f7",
"diagnostic": "called `Result::unwrap()` on an `Err` value: [SourceDiagnostic { path: \"project.arcadia\", diagnostic: Diagnostic { severity: Error, code: \"invalid_source\", object_id: None, field: None, line: 1, column: 9, message: \"Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.\", span: Span { start: 8, end: 9 } }, related: [] }]"
},
{
"name": "source_files::transaction_tests::malformed_v2_write_marker_refuses_recovery_without_changing_source_bytes",
"current_block_sha256": "23f8b4fdd0e8159a50cce1dd8c566fd45e8c65793275d22553efff903eb662c0",
"baseline_block_sha256": "85525e458f8f06763b7adc217405e100128bf6bec7be6f4fe09dfe0b18a2e778",
"diagnostic": "called `Result::unwrap()` on an `Err` value: [SourceDiagnostic { path: \"project.arcadia\", diagnostic: Diagnostic { severity: Error, code: \"invalid_source\", object_id: None, field: None, line: 1, column: 9, message: \"Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.\", span: Span { start: 8, end: 9 } }, related: [] }]"
},
{
"name": "source_files::transaction_tests::partial_save_failures_restore_every_original_and_write_entry_last",
"current_block_sha256": "ce5f1529f6c4b725048d780b67f988644522c5f21bf7b837a703d6fe0107df21",
"baseline_block_sha256": "58d713e17822d6145eb23d30f0568f56b15f0b3f4671e34212534dea9250c130",
"diagnostic": "called `Result::unwrap()` on an `Err` value: [SourceDiagnostic { path: \"project.arcadia\", diagnostic: Diagnostic { severity: Error, code: \"invalid_source\", object_id: None, field: None, line: 1, column: 9, message: \"Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.\", span: Span { start: 8, end: 9 } }, related: [] }]"
},
{
"name": "source_files::transaction_tests::recovery_before_any_write_accepts_v2_marker_and_keeps_v1_rollback_compatibility",
"current_block_sha256": "5d2ee6ac8ed42613f9fdaf6d2b3291ab0e3acbd56545ec540c5152a16ebea138",
"baseline_block_sha256": "4e3828e4d7238bf827b00d08424c4b7291c5863d84eb73c1e9aefc6054cb1396",
"diagnostic": "called `Result::unwrap()` on an `Err` value: [SourceDiagnostic { path: \"project.arcadia\", diagnostic: Diagnostic { severity: Error, code: \"invalid_source\", object_id: None, field: None, line: 1, column: 9, message: \"Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.\", span: Span { start: 8, end: 9 } }, related: [] }]"
},
{
"name": "source_files::transaction_tests::recovery_rechecks_external_changes_between_restorations",
"current_block_sha256": "d0fb61f6b6513f2bf23b61a61a1e28708d793c9143e20e1d1d63d873faaf265a",
"baseline_block_sha256": "a4a0af532b4d2874fa086514c43d7fc315fd1fc3b3d5cbedf165126f61cf9582",
"diagnostic": "called `Result::unwrap()` on an `Err` value: [SourceDiagnostic { path: \"project.arcadia\", diagnostic: Diagnostic { severity: Error, code: \"invalid_source\", object_id: None, field: None, line: 1, column: 9, message: \"Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.\", span: Span { start: 8, end: 9 } }, related: [] }]"
},
{
"name": "source_files::transaction_tests::recovery_rejects_untrusted_escape_paths_before_touching_files",
"current_block_sha256": "790f6096258dec847bc84cbdf5dc17e63bac63411c5ada50bc98d0f04139de67",
"baseline_block_sha256": "de9a685da01006a664f95b4de2f3e34c4a3c8c547fc2a0076b893f6670e17911",
"diagnostic": "called `Result::unwrap()` on an `Err` value: [SourceDiagnostic { path: \"project.arcadia\", diagnostic: Diagnostic { severity: Error, code: \"invalid_source\", object_id: None, field: None, line: 1, column: 9, message: \"Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.\", span: Span { start: 8, end: 9 } }, related: [] }]"
},
{
"name": "source_files::transaction_tests::rollback_refuses_external_edits_even_in_an_unchanged_dependency",
"current_block_sha256": "830b061232e941bd7f6398d2b5f0f1e29a045e19ecfaf479ff2e927d7f134c7f",
"baseline_block_sha256": "0baf0c610b03c5cf3cd2dda31354290bd48306c6228f4364d8cc9cf5c28a5b4e",
"diagnostic": "called `Result::unwrap()` on an `Err` value: [SourceDiagnostic { path: \"project.arcadia\", diagnostic: Diagnostic { severity: Error, code: \"invalid_source\", object_id: None, field: None, line: 1, column: 9, message: \"Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.\", span: Span { start: 8, end: 9 } }, related: [] }]"
},
{
"name": "source_files::transaction_tests::rollback_removes_only_our_new_file_and_retains_detached_files",
"current_block_sha256": "d3c4ccc3e57beec951123046a12b1b812ee4a6335ad8cc83ee357c87846b00d8",
"baseline_block_sha256": "760c7dee4968250020b8290a1900003cbc91b5f348501b620b30904d2fdf73be",
"diagnostic": "called `Result::unwrap()` on an `Err` value: [SourceDiagnostic { path: \"project.arcadia\", diagnostic: Diagnostic { severity: Error, code: \"invalid_source\", object_id: None, field: None, line: 1, column: 9, message: \"Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.\", span: Span { start: 8, end: 9 } }, related: [] }]"
},
{
"name": "source_files::transaction_tests::unwritten_journal_never_rolls_back_a_completed_writer_with_identical_after_bytes",
"current_block_sha256": "4e39a4f04eb260db6e594f325615a94c349d5e6f9bc27411989a9471edd969f1",
"baseline_block_sha256": "c260dab5c445ea6438fbbff58ec1284c23cd4282cbabb88cc70f5282225b5889",
"diagnostic": "called `Result::unwrap()` on an `Err` value: [SourceDiagnostic { path: \"project.arcadia\", diagnostic: Diagnostic { severity: Error, code: \"invalid_source\", object_id: None, field: None, line: 1, column: 9, message: \"Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.\", span: Span { start: 8, end: 9 } }, related: [] }]"
}
],
"unchanged_failure_sources": [
"crates/oa-core/src/model.rs",
"crates/oa-core/src/language.rs",
"crates/oa-core/src/language_nesting_tests.rs",
"crates/oa-core/src/source_project.rs",
"crates/oa-core/src/source_project/source_migration.rs",
"crates/oa-core/src/source_files.rs"
],
"scope": "Private staged writer evidence; full suite FAILED. No public8, S3/S4, native or release acceptance."
}
@@ -0,0 +1,197 @@
"""Admit only frozen S2c listing or explicit typed/raw-token focused gates.
Usage: NAME [ADMITTED_LIST_NAME SELECTOR]
Selectors: language::analysis_source or language::raw_tokens.
No compiler/test invocation. No full-suite pass or old failure waiver.
"""
from pathlib import Path
import hashlib
import json
import re
import subprocess
import sys
# Assertions are admission controls; optimized Python must never bypass them.
if not __debug__:
raise RuntimeError('S2c admission requires Python assertions; optimized Python is refused.')
BASE = Path(__file__).resolve().parent.parent
ROOT = BASE / '.local/analysis-core-worktree-20260911'
FOLDER = BASE / '.local/analysis-source-gates-20260913'
SOURCE = 'f1d79df4979121335ed7b4ce4da84b2fca8a9ef4'
BASELINE = 'a2a28f8d23a46ba1696b6a8410d4d3b5c1808f49'
BASE_NAME = 'list-a2a28f8'
BASE_HELPER_SHA = '92c03d25c8f5ae75a5c1e76bd4fa24cbca7aeb10cf7ee5847bc8a324cae3ec06'
BASE_PINS = {
'.result.json': '86db5467964d3712510f867379ae32e0797b4d9f46cbde762119ed9055fd3a62',
'.inputs.json': '08b6dabbffbd06f7abea717f9aa34cd910c41c4a8c650247006a0f6858561c84',
'.log': '8be8bd7ae75a690f0e36c8b0b39dabc4c5bd5654cf1e653bd43e3c0cddf560df',
'.admission.json': 'f6b08e4d0eac3a0f17a582f9d9a51fb0cf84fc3c30d94d8fac71df52a4442bf1',
}
PREFIX = ['cargo', 'test', '--locked', '-p', 'oa-core', '--lib']
SCOPES = ['Cargo.toml', 'Cargo.lock', 'rust-toolchain.toml', '.cargo', 'build',
'crates', 'assets', 'docs', 'examples', 'harness/fixtures']
SELECTORS = {'language::analysis_source': 44, 'language::raw_tokens': 1}
NEW_NAMES = {'language::analysis_source::write::tests::' + name for name in [
'typed_oa_sa_canonical_roundtrips_match_independent_projects',
'typed_declaration_order_and_required_empty_values_are_canonical',
'all_expr_variants_and_precedence_preserve_exact_trees',
'canonical_calls_use_callee_parameter_order_and_qualified_names',
'subtree_output_respects_parent_context_and_retained_delimiters',
'canonical_strings_and_exact_literals_use_existing_encodings',
'writer_limits_are_aggregate_exact_and_latched_without_partial_results',
'writer_lookup_scope_shape_and_depth_failures_are_model_located',
'negate_override_roundtrip_preserves_depth128_within_frame256',
'iterative_writer_preserves_width1024_and_empty_call_topology',
]}
assert len(NEW_NAMES) == 10
def digest(data):
return hashlib.sha256(data).hexdigest()
def git(*arguments, data=None):
return subprocess.check_output(['git', *arguments], cwd=ROOT, input=data)
watched = {}
def read(path):
path = Path(path)
data = path.read_bytes()
assert watched.setdefault(path, data) == data, 'Changed input during admission: ' + str(path)
return data
def raw(name, suffix):
assert re.fullmatch(r'[a-zA-Z0-9-]+', name)
return read(FOLDER / (name + suffix))
def document(name, suffix):
return json.loads(raw(name, suffix))
def closed(record, source):
assert type(record['exit']) is int and record['exit'] == 0
assert record['source'] == record['head_after'] == source and record['changed_inputs'] == []
assert record['start'] and record['end'] and record['start'] <= record['end']
def verify_admission(name, admission):
for key, suffix in [('result_sha256', '.result.json'), ('inputs_sha256', '.inputs.json'), ('log_sha256', '.log')]:
assert admission[key] == digest(raw(name, suffix)), (name, key)
def listing_names(record, log, count):
assert record['command'] == PREFIX + ['--', '--list']
names = re.findall(r'^([^\r\n]+): test\r?$', log, re.M)
assert names == record['listing_members'] and len(names) == len(set(names)) == record['listing_count'] == count
assert re.findall(r'^(\d+) tests, (\d+) benchmarks\s*$', log, re.M) == [(str(count), '0')]
return names
assert len(sys.argv) in (2, 4), 'NAME [ADMITTED_LIST_NAME SELECTOR]'
name = sys.argv[1]
assert re.fullmatch(r'[a-zA-Z0-9-]+', name)
output = FOLDER / (name + '.admission.json')
assert not output.exists(), 'Existing admissions cannot be overwritten'
self_sha = digest(read(Path(__file__)))
for suffix, expected_sha in BASE_PINS.items():
assert digest(raw(BASE_NAME, suffix)) == expected_sha, 'Changed historical S2b listing'
assert digest(read(BASE / '.local/admit-analysis-s2b-gate.py')) == BASE_HELPER_SHA
baseline = document(BASE_NAME, '.result.json')
baseline_admission = document(BASE_NAME, '.admission.json')
closed(baseline, BASELINE)
verify_admission(BASE_NAME, baseline_admission)
assert baseline_admission['source'] == BASELINE and baseline_admission['mode'] == 'list'
assert baseline_admission['verified_inputs'] == 531 and baseline_admission['admission_helper_sha256'] == BASE_HELPER_SHA
assert len(baseline['artifacts']) == 1 and baseline_admission['artifact'] == baseline['artifacts'][0]
baseline_names = listing_names(baseline, raw(BASE_NAME, '.log').decode('utf-8'), 142)
assert baseline_names == baseline_admission['names'] and not (set(baseline_names) & NEW_NAMES)
expected_names = set(baseline_names) | NEW_NAMES
assert len(expected_names) == 152
for selector, count in SELECTORS.items():
assert len([n for n in expected_names if selector in n]) == count
assert git('rev-parse', 'HEAD').decode().strip() == SOURCE
subprocess.run(['git', 'merge-base', '--is-ancestor', BASELINE, SOURCE], cwd=ROOT, check=True)
paths = git('ls-tree', '-r', '--name-only', SOURCE, *SCOPES).decode().splitlines()
assert len(paths) == len(set(paths)) == 534
blobs = git('cat-file', '--batch', data=''.join(f'{SOURCE}:{p}\n' for p in paths).encode())
offset, expected_inputs, writer_tests = 0, [], None
for path in paths:
end = blobs.index(b'\n', offset)
_, kind, size = blobs[offset:end].split()
size = int(size)
data = blobs[end + 1:end + 1 + size]
assert kind == b'blob' and len(data) == size and read(ROOT / path) == data, path
expected_inputs.append({'path': path, 'bytes': size, 'sha256': digest(data)})
if path == 'crates/oa-core/src/language/analysis_source/write/tests.rs':
writer_tests = data.decode('utf-8')
offset = end + size + 2
assert offset == len(blobs) and writer_tests is not None
authored = {'language::analysis_source::write::tests::' + n for n in re.findall(r'#\[test\]\s*fn (\w+)\(', writer_tests)}
assert authored == NEW_NAMES
record = document(name, '.result.json')
closed(record, SOURCE)
assert record['inputs'] == name + '.inputs.json'
assert document(name, '.inputs.json') == {'source': SOURCE, 'inputs': expected_inputs}
assert len(record['artifacts']) == 1
artifact = record['artifacts'][0]
artifact_path = Path(artifact['path'])
assert artifact_path.is_absolute()
data = read(artifact_path)
assert len(data) == artifact['bytes'] and digest(data) == artifact['sha256']
log = raw(name, '.log').decode('utf-8')
executables = re.findall(r'Running unittests [^\r\n]+ \(([^\r\n]+\.exe)\)', log)
assert len(executables) == 1
executable = Path(executables[0])
if not executable.is_absolute():
executable = ROOT / executable
assert executable.resolve() == artifact_path.resolve()
if record['command'] == PREFIX + ['--', '--list']:
assert len(sys.argv) == 2
names = listing_names(record, log, 152)
assert set(names) == expected_names
mode, selector = 'list', None
else:
assert len(sys.argv) == 4, 'Full and other commands cannot receive an S2c pass admission'
listing_name, selector = sys.argv[2:]
assert selector in SELECTORS and record['command'] == PREFIX + [selector, '--', '--test-threads=1']
assert record['listing_members'] == [] and record['listing_count'] == 0
listing = document(listing_name, '.result.json')
admission = document(listing_name, '.admission.json')
closed(listing, SOURCE)
verify_admission(listing_name, admission)
assert admission['source'] == SOURCE and admission['mode'] == 'list'
assert admission['admission_helper_sha256'] == self_sha and admission['verified_inputs'] == 534
assert listing['artifacts'] == [artifact] and admission['artifact'] == artifact
assert document(listing_name, '.inputs.json') == {'source': SOURCE, 'inputs': expected_inputs}
listed = listing_names(listing, raw(listing_name, '.log').decode('utf-8'), 152)
assert listed == admission['names'] and set(listed) == expected_names
names = [n for n in listed if selector in n]
assert len(names) == SELECTORS[selector]
actual = re.findall(r'^test ([^\r\n]+) \.\.\. (ok|FAILED|ignored)(?:, [^\r\n]*)?\s*$', log, re.M)
assert actual == [(n, 'ok') for n in names], 'Every focused case must run exactly once and pass; no ignored cases'
assert re.findall(r'test result: ok\. (\d+) passed; (\d+) failed; (\d+) ignored; (\d+) measured; (\d+) filtered out;', log) == [(str(len(names)), '0', '0', '0', str(152-len(names)))]
if selector == 'language::analysis_source':
assert NEW_NAMES.issubset(names) and all((n, 'ok') in actual for n in NEW_NAMES)
mode = 'focused'
assert git('rev-parse', 'HEAD').decode().strip() == SOURCE
for path, data in watched.items():
assert path.read_bytes() == data, 'Final evidence/input readback differs: ' + str(path)
admission = {'source': SOURCE, 'mode': mode, 'selector': selector, 'artifact': artifact, 'names': names,
'result_sha256': digest(raw(name, '.result.json')), 'inputs_sha256': digest(raw(name, '.inputs.json')),
'log_sha256': digest(raw(name, '.log')), 'verified_inputs': 534, 'admission_helper_sha256': self_sha,
'baseline_source': BASELINE, 'baseline_result_sha256': BASE_PINS['.result.json'],
'baseline_admission_sha256': BASE_PINS['.admission.json'], 'baseline_members': 142,
'required_new_names': sorted(NEW_NAMES),
'boundary': 'Listing or exact focused evidence only; no full-suite/public8/native acceptance.'}
with output.open('x', encoding='utf-8', newline='\n') as stream:
stream.write(json.dumps(admission, indent=2) + '\n')
print(json.dumps({'name': name, 'mode': mode, 'members': len(names), 'verified_inputs': 534, 'source': SOURCE}))
@@ -0,0 +1,193 @@
"""Admit only frozen S2c listing or explicit typed/raw-token focused gates.
Usage: NAME [ADMITTED_LIST_NAME SELECTOR]
Selectors: language::analysis_source or language::raw_tokens.
No compiler/test invocation. No full-suite pass or old failure waiver.
"""
from pathlib import Path
import hashlib
import json
import re
import subprocess
import sys
BASE = Path(__file__).resolve().parent.parent
ROOT = BASE / '.local/analysis-core-worktree-20260911'
FOLDER = BASE / '.local/analysis-source-gates-20260913'
SOURCE = 'f1d79df4979121335ed7b4ce4da84b2fca8a9ef4'
BASELINE = 'a2a28f8d23a46ba1696b6a8410d4d3b5c1808f49'
BASE_NAME = 'list-a2a28f8'
BASE_HELPER_SHA = '92c03d25c8f5ae75a5c1e76bd4fa24cbca7aeb10cf7ee5847bc8a324cae3ec06'
BASE_PINS = {
'.result.json': '86db5467964d3712510f867379ae32e0797b4d9f46cbde762119ed9055fd3a62',
'.inputs.json': '08b6dabbffbd06f7abea717f9aa34cd910c41c4a8c650247006a0f6858561c84',
'.log': '8be8bd7ae75a690f0e36c8b0b39dabc4c5bd5654cf1e653bd43e3c0cddf560df',
'.admission.json': 'f6b08e4d0eac3a0f17a582f9d9a51fb0cf84fc3c30d94d8fac71df52a4442bf1',
}
PREFIX = ['cargo', 'test', '--locked', '-p', 'oa-core', '--lib']
SCOPES = ['Cargo.toml', 'Cargo.lock', 'rust-toolchain.toml', '.cargo', 'build',
'crates', 'assets', 'docs', 'examples', 'harness/fixtures']
SELECTORS = {'language::analysis_source': 44, 'language::raw_tokens': 1}
NEW_NAMES = {'language::analysis_source::write::tests::' + name for name in [
'typed_oa_sa_canonical_roundtrips_match_independent_projects',
'typed_declaration_order_and_required_empty_values_are_canonical',
'all_expr_variants_and_precedence_preserve_exact_trees',
'canonical_calls_use_callee_parameter_order_and_qualified_names',
'subtree_output_respects_parent_context_and_retained_delimiters',
'canonical_strings_and_exact_literals_use_existing_encodings',
'writer_limits_are_aggregate_exact_and_latched_without_partial_results',
'writer_lookup_scope_shape_and_depth_failures_are_model_located',
'negate_override_roundtrip_preserves_depth128_within_frame256',
'iterative_writer_preserves_width1024_and_empty_call_topology',
]}
assert len(NEW_NAMES) == 10
def digest(data):
return hashlib.sha256(data).hexdigest()
def git(*arguments, data=None):
return subprocess.check_output(['git', *arguments], cwd=ROOT, input=data)
watched = {}
def read(path):
path = Path(path)
data = path.read_bytes()
assert watched.setdefault(path, data) == data, 'Changed input during admission: ' + str(path)
return data
def raw(name, suffix):
assert re.fullmatch(r'[a-zA-Z0-9-]+', name)
return read(FOLDER / (name + suffix))
def document(name, suffix):
return json.loads(raw(name, suffix))
def closed(record, source):
assert type(record['exit']) is int and record['exit'] == 0
assert record['source'] == record['head_after'] == source and record['changed_inputs'] == []
assert record['start'] and record['end'] and record['start'] <= record['end']
def verify_admission(name, admission):
for key, suffix in [('result_sha256', '.result.json'), ('inputs_sha256', '.inputs.json'), ('log_sha256', '.log')]:
assert admission[key] == digest(raw(name, suffix)), (name, key)
def listing_names(record, log, count):
assert record['command'] == PREFIX + ['--', '--list']
names = re.findall(r'^([^\r\n]+): test\r?$', log, re.M)
assert names == record['listing_members'] and len(names) == len(set(names)) == record['listing_count'] == count
assert re.findall(r'^(\d+) tests, (\d+) benchmarks\s*$', log, re.M) == [(str(count), '0')]
return names
assert len(sys.argv) in (2, 4), 'NAME [ADMITTED_LIST_NAME SELECTOR]'
name = sys.argv[1]
assert re.fullmatch(r'[a-zA-Z0-9-]+', name)
output = FOLDER / (name + '.admission.json')
assert not output.exists(), 'Existing admissions cannot be overwritten'
self_sha = digest(read(Path(__file__)))
for suffix, expected_sha in BASE_PINS.items():
assert digest(raw(BASE_NAME, suffix)) == expected_sha, 'Changed historical S2b listing'
assert digest(read(BASE / '.local/admit-analysis-s2b-gate.py')) == BASE_HELPER_SHA
baseline = document(BASE_NAME, '.result.json')
baseline_admission = document(BASE_NAME, '.admission.json')
closed(baseline, BASELINE)
verify_admission(BASE_NAME, baseline_admission)
assert baseline_admission['source'] == BASELINE and baseline_admission['mode'] == 'list'
assert baseline_admission['verified_inputs'] == 531 and baseline_admission['admission_helper_sha256'] == BASE_HELPER_SHA
assert len(baseline['artifacts']) == 1 and baseline_admission['artifact'] == baseline['artifacts'][0]
baseline_names = listing_names(baseline, raw(BASE_NAME, '.log').decode('utf-8'), 142)
assert baseline_names == baseline_admission['names'] and not (set(baseline_names) & NEW_NAMES)
expected_names = set(baseline_names) | NEW_NAMES
assert len(expected_names) == 152
for selector, count in SELECTORS.items():
assert len([n for n in expected_names if selector in n]) == count
assert git('rev-parse', 'HEAD').decode().strip() == SOURCE
subprocess.run(['git', 'merge-base', '--is-ancestor', BASELINE, SOURCE], cwd=ROOT, check=True)
paths = git('ls-tree', '-r', '--name-only', SOURCE, *SCOPES).decode().splitlines()
assert len(paths) == len(set(paths)) == 534
blobs = git('cat-file', '--batch', data=''.join(f'{SOURCE}:{p}\n' for p in paths).encode())
offset, expected_inputs, writer_tests = 0, [], None
for path in paths:
end = blobs.index(b'\n', offset)
_, kind, size = blobs[offset:end].split()
size = int(size)
data = blobs[end + 1:end + 1 + size]
assert kind == b'blob' and len(data) == size and read(ROOT / path) == data, path
expected_inputs.append({'path': path, 'bytes': size, 'sha256': digest(data)})
if path == 'crates/oa-core/src/language/analysis_source/write/tests.rs':
writer_tests = data.decode('utf-8')
offset = end + size + 2
assert offset == len(blobs) and writer_tests is not None
authored = {'language::analysis_source::write::tests::' + n for n in re.findall(r'#\[test\]\s*fn (\w+)\(', writer_tests)}
assert authored == NEW_NAMES
record = document(name, '.result.json')
closed(record, SOURCE)
assert record['inputs'] == name + '.inputs.json'
assert document(name, '.inputs.json') == {'source': SOURCE, 'inputs': expected_inputs}
assert len(record['artifacts']) == 1
artifact = record['artifacts'][0]
artifact_path = Path(artifact['path'])
assert artifact_path.is_absolute()
data = read(artifact_path)
assert len(data) == artifact['bytes'] and digest(data) == artifact['sha256']
log = raw(name, '.log').decode('utf-8')
executables = re.findall(r'Running unittests [^\r\n]+ \(([^\r\n]+\.exe)\)', log)
assert len(executables) == 1
executable = Path(executables[0])
if not executable.is_absolute():
executable = ROOT / executable
assert executable.resolve() == artifact_path.resolve()
if record['command'] == PREFIX + ['--', '--list']:
assert len(sys.argv) == 2
names = listing_names(record, log, 152)
assert set(names) == expected_names
mode, selector = 'list', None
else:
assert len(sys.argv) == 4, 'Full and other commands cannot receive an S2c pass admission'
listing_name, selector = sys.argv[2:]
assert selector in SELECTORS and record['command'] == PREFIX + [selector, '--', '--test-threads=1']
assert record['listing_members'] == [] and record['listing_count'] == 0
listing = document(listing_name, '.result.json')
admission = document(listing_name, '.admission.json')
closed(listing, SOURCE)
verify_admission(listing_name, admission)
assert admission['source'] == SOURCE and admission['mode'] == 'list'
assert admission['admission_helper_sha256'] == self_sha and admission['verified_inputs'] == 534
assert listing['artifacts'] == [artifact] and admission['artifact'] == artifact
assert document(listing_name, '.inputs.json') == {'source': SOURCE, 'inputs': expected_inputs}
listed = listing_names(listing, raw(listing_name, '.log').decode('utf-8'), 152)
assert listed == admission['names'] and set(listed) == expected_names
names = [n for n in listed if selector in n]
assert len(names) == SELECTORS[selector]
actual = re.findall(r'^test ([^\r\n]+) \.\.\. (ok|FAILED|ignored)(?:, [^\r\n]*)?\s*$', log, re.M)
assert actual == [(n, 'ok') for n in names], 'Every focused case must run exactly once and pass; no ignored cases'
assert re.findall(r'test result: ok\. (\d+) passed; (\d+) failed; (\d+) ignored; (\d+) measured; (\d+) filtered out;', log) == [(str(len(names)), '0', '0', '0', str(152-len(names)))]
if selector == 'language::analysis_source':
assert NEW_NAMES.issubset(names) and all((n, 'ok') in actual for n in NEW_NAMES)
mode = 'focused'
assert git('rev-parse', 'HEAD').decode().strip() == SOURCE
for path, data in watched.items():
assert path.read_bytes() == data, 'Final evidence/input readback differs: ' + str(path)
admission = {'source': SOURCE, 'mode': mode, 'selector': selector, 'artifact': artifact, 'names': names,
'result_sha256': digest(raw(name, '.result.json')), 'inputs_sha256': digest(raw(name, '.inputs.json')),
'log_sha256': digest(raw(name, '.log')), 'verified_inputs': 534, 'admission_helper_sha256': self_sha,
'baseline_source': BASELINE, 'baseline_result_sha256': BASE_PINS['.result.json'],
'baseline_admission_sha256': BASE_PINS['.admission.json'], 'baseline_members': 142,
'required_new_names': sorted(NEW_NAMES),
'boundary': 'Listing or exact focused evidence only; no full-suite/public8/native acceptance.'}
with output.open('x', encoding='utf-8', newline='\n') as stream:
stream.write(json.dumps(admission, indent=2) + '\n')
print(json.dumps({'name': name, 'mode': mode, 'members': len(names), 'verified_inputs': 534, 'source': SOURCE}))
@@ -0,0 +1,69 @@
"""Bind one isolated analysis source gate to committed inputs and actual output."""
from pathlib import Path
from datetime import datetime, timezone
import hashlib
import json
import os
import re
import subprocess
import sys
base = Path(__file__).resolve().parent.parent
root = base / '.local/analysis-core-worktree-20260911'
source, name, mode = sys.argv[1:4]
assert re.fullmatch(r'[a-zA-Z0-9-]+', name)
assert subprocess.check_output(['git', 'rev-parse', 'HEAD'], cwd=root).decode().strip() == source
out = base / '.local/analysis-source-gates-20260913'
out.mkdir(exist_ok=True)
assert not any((out / (name + s)).exists() for s in ('.inputs.json', '.log', '.result.json'))
prefix = ['cargo', 'test', '--locked', '-p', 'oa-core', '--lib']
commands = {
'list': prefix + ['--', '--list'],
'focused': prefix + [sys.argv[4] if len(sys.argv) > 4 else 'analysis_source', '--', '--test-threads=1'],
'full': prefix + ['--', '--test-threads=1'],
'clippy': ['cargo', 'clippy', '--locked', '-p', 'oa-core', '--all-targets', '--', '-D', 'warnings'],
}
command = commands[mode]
paths = subprocess.check_output(['git', 'ls-tree', '-r', '--name-only', source, 'Cargo.toml', 'Cargo.lock', 'rust-toolchain.toml', '.cargo', 'build', 'crates', 'assets', 'docs', 'examples', 'harness/fixtures'], cwd=root).decode().splitlines()
blobs = subprocess.check_output(['git', 'cat-file', '--batch'], cwd=root,
input=''.join(f'{source}:{p}\n' for p in paths).encode())
offset, inputs = 0, []
for path in paths:
end = blobs.index(b'\n', offset)
_, kind, size = blobs[offset:end].split()
assert kind == b'blob'
size = int(size)
raw = blobs[end + 1:end + 1 + size]
assert (root / path).read_bytes() == raw, path
inputs.append({'path': path, 'bytes': size, 'sha256': hashlib.sha256(raw).hexdigest()})
offset = end + size + 2
assert offset == len(blobs)
manifest = out / (name + '.inputs.json')
manifest.write_text(json.dumps({'source': source, 'inputs': inputs}, indent=2) + '\n', encoding='utf-8', newline='\n')
started = datetime.now(timezone.utc).isoformat()
print(json.dumps({'start': started, 'command': command, 'source': source, 'inputs': len(inputs)}), flush=True)
log_path = out / (name + '.log')
with log_path.open('xb') as stream:
run = subprocess.run(command, cwd=root, stdout=stream, stderr=subprocess.STDOUT)
ended = datetime.now(timezone.utc).isoformat()
changed = [i['path'] for i in inputs if hashlib.sha256((root / i['path']).read_bytes()).hexdigest() != i['sha256']]
head_after = subprocess.check_output(['git', 'rev-parse', 'HEAD'], cwd=root).decode().strip()
log = log_path.read_text(encoding='utf-8', errors='replace')
members = re.findall(r'^([^\r\n]+): test\r?$', log, re.M) if mode == 'list' else []
artifacts = []
for match in re.findall(r'Running unittests [^\r\n]+ \(([^\r\n]+\.exe)\)', log):
path = Path(match)
if not path.is_absolute():
path = root / path
raw = path.read_bytes()
artifacts.append({'path': str(path), 'bytes': len(raw), 'sha256': hashlib.sha256(raw).hexdigest()})
record = {'source': source, 'head_after': head_after, 'start': started, 'end': ended,
'exit': run.returncode, 'command': command, 'inputs': manifest.name,
'changed_inputs': changed, 'artifacts': artifacts,
'environment': {k: os.environ.get(k) for k in ['CARGO_TARGET_DIR', 'CARGO_BUILD_JOBS', 'CARGO_HOME', 'RUSTUP_HOME']},
'listing_members': members, 'listing_count': len(members),
'listing_scope': 'Names emitted by this actual Cargo test listing; focused/full runtime results have their own receipts.'}
(out / (name + '.result.json')).write_text(json.dumps(record, indent=2) + '\n', encoding='utf-8', newline='\n')
print(log[-14000:])
print(json.dumps({k:v for k,v in record.items() if k != 'listing_members'}))
sys.exit(run.returncode or int(bool(changed) or head_after != source))
@@ -0,0 +1,37 @@
# Independent S2c executable evidence review
Reviewed frozen source `f1d79df4979121335ed7b4ce4da84b2fca8a9ef4` and the actual five closed gate triplets. **No actionable discrepancy found. The full library gate remains FAILED: 136 passed, 16 failed, 0 ignored, Cargo exit 101.** This is private staged typed-writer evidence; it does not establish public source8, S3 indexing/update, S4 activation, native workflows or release acceptance.
## Independently verified results
| Gate | Actual result | UTC closure |
| --- | --- | --- |
| list | Exit 0; 152 unique names; admitted | 2026-09-13T12:08:00.913025+00:00 |
| typed | Exit 0; 44 passed, 0 failed/ignored, 108 filtered; admitted | 2026-09-13T12:09:47.043155+00:00 |
| raw tokens | Exit 0; 1 passed, 0 failed/ignored, 151 filtered; admitted | 2026-09-13T12:13:55.998167+00:00 |
| full | **Exit 101; 136 passed, 16 failed, 0 ignored** | 2026-09-13T12:15:46.279177+00:00 |
| strict | Exit 0; oa-core all-targets Clippy with -D warnings | 2026-09-13T12:24:00.805354+00:00 |
Raw listing order, unique membership, result-record membership, each focused/full outcome and exact summary agree. All 142 previous a2 names and statuses remain, plus exactly the ten test functions independently extracted from committed `analysis_source/write/tests.rs`. Every writer case passed in both typed and full runs. There are exactly three pass admissions: listing, typed and raw tokens. The full comparison is a comparison receipt, not a full-pass admission.
All five input manifests are byte-identical (SHA-256 `6a4c7e3c8d1e6edb7ad306c19abd05009ee410312eb34b68ec30d6408387967b`). Their exact 534-path scope, sizes and SHA-256 values were independently compared with committed f1 Git blobs. Git batch type/size/terminal framing and complete consumption were checked. Every result has matching source/head, ordered closed timestamps, no changed inputs, the appropriate exact command, and the same recorded environment. The runner/admitter/closure/comparison and baseline record hashes match their bindings.
The four test commands record the same emitted executable: 37,146,112 bytes, SHA-256 `786c5e6deec4fd6f00cc9954ca8190fa47c3c0bdfb0b44dccf032795155438af`. The raw Running line matches the recorded Windows path. Strict records no test executable and its raw log ends with the completed unoptimized dev profile, with no warning/error lines. These are historical executable receipt bindings; this review did not read a mutable target executable or run it. Commands use locked oa-core library tests, and all-targets Clippy; they do not contain --offline and do not claim full all-targets runtime or documentation tests.
## Failure causes, not merely matching names
The complete 16 panic sections were inspected and compared with a2 raw full evidence at immutable publication commit `355f6d4d244e6b57fd89a8afd80a2dacdea69ba1`. The panic source locations and complete diagnostic lines are equal after ignoring only thread IDs and the optional one-time backtrace hint. Every failure reports `Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.` at source line 1, column 9, span 8..9. Six names are nesting tests and ten are source-file transaction tests. The machine audit records every exact name, both panic-block hashes and the complete diagnostic line.
Read-only Git equality confirms the six relevant source files remain byte-identical between a2 and f1: `model.rs`, `language.rs`, `language_nesting_tests.rs`, `source_project.rs`, `source_project/source_migration.rs`, and `source_files.rs`. The prior source-derived cause therefore still applies: the current model/writer emits version 8 while the public parser accepts 3–7; bundle migration also reparses through that unchanged public gate. Transaction cases fail in their fixture compilation at `source_files.rs:1560`, before their later transaction/recovery assertions. These failures do not verify those later behaviors and cannot be waived into a pass.
The prior S2b archive separately preserves the original 472 focused failure and subsequent test-only correction. This checkpoint references that immutable evidence rather than copying it or relabeling historical outcomes. The preserved S2c proposal and source/admission reviews likewise retain their original pre-execution language; the new raw receipts supply later execution evidence.
## Portable assembly and limits
The archive copies original raw gate triplets, three admissions, full comparison source/receipt, closure, runner, original/r2 admitters, proposal and relevant handoffs/reviews byte-for-byte. Its manifest pins every local payload (including this report, README, audit and verifier) and the required prior records by exact immutable commit/path/hash. Local original paths are provenance labels, not replay dependencies. Binaries, toolchains, caches and source bodies are omitted; source verification requires a Git repository containing f1, a2 and the prior evidence commit.
`verify.py` uses explicit require failures, rejects optimized Python before reading evidence, verifies exact archive membership and payload hashes, checks pinned prior Git evidence, independently rereads all 534 source blobs and recomputes the audit. It does not invoke Cargo, tests, recorded helpers, artifacts, GUI or network. The original comparison script is preserved as historical evidence and not rerun: its absolute-path/exclusive-output behavior is replaced for portability by the independent read-only verifier, not by changing its bytes.
The raw recorder relies on assertions without an optimization guard. Its preserved preflight proposal records unset PYTHONOPTIMIZE and the closure reports unoptimized Python; the r2 admitter explicitly refuses optimization. This review independently checks all recoverable raw/source invariants and does not claim forensic proof of the historical process environment or protection against wholesale fabricated raw evidence. Runtime success of the public parser, mixed ordinary/typed updates, save/history installation and native editing remains outside this private milestone.
No compiler/test, GUI, source-input mutation or Gitea/push was performed by this review. Source analysis remains separate from the production root. The evidence is suitable for parent review/publication with its failure scope intact.
@@ -0,0 +1,276 @@
{
"source": "f1d79df4979121335ed7b4ce4da84b2fca8a9ef4",
"baseline_source": "a2a28f8d23a46ba1696b6a8410d4d3b5c1808f49",
"prior_evidence_commit": "355f6d4d244e6b57fd89a8afd80a2dacdea69ba1",
"docs_base": "9e51cd72ba05d37482c5bc258e284804058a1475",
"files": [
{
"path": ".gitattributes",
"bytes": 8,
"sha256": "705fd4d6451a31d36b3df7de96f83f30ac976c9b4a6d1e51671d8e2f33e2d0da"
},
{
"path": "audit.json",
"bytes": 14702,
"sha256": "6664bfab4d0dbed17067b73542dc22eb3b42664fe1caaa09f913aa5a15ac7cc5"
},
{
"path": "helpers/admit-analysis-s2c-gate-r2.py",
"bytes": 10010,
"sha256": "d2bd3c38feb77b8e916b3d413a278d4b0960baff8e14843aed4c2b20c26c90e1",
"original": ".local/admit-analysis-s2c-gate-r2.py"
},
{
"path": "helpers/admit-analysis-s2c-gate.py",
"bytes": 9816,
"sha256": "0202540eec8870f1fd0a03ad39d55653c18c9bb3c533e491d67234e040c42833",
"original": ".local/admit-analysis-s2c-gate.py"
},
{
"path": "helpers/run-analysis-source-gate.py",
"bytes": 3865,
"sha256": "d8d9c1c9e9dc94fdd43afb4118ebc491c8eb6d89082f8441f8395b9d4265b068",
"original": ".local/run-analysis-source-gate.py"
},
{
"path": "independent-review.md",
"bytes": 6323,
"sha256": "fadc2c3ca5f14a92e15839eed6a0c9c479eb49ba3e2e44ec20bb9b2be9d882a5"
},
{
"path": "notes/analysis-source-s2c-admission-handoff-20260913.md",
"bytes": 5715,
"sha256": "17aa4ecf03bcd931b181342ada9fd3211aafa5721e529dd4347f52da0e168cc1",
"original": ".local/analysis-source-s2c-admission-handoff-20260913.md"
},
{
"path": "notes/analysis-source-s2c-admission-independent-review-20260913.md",
"bytes": 5470,
"sha256": "c3e929b24dfea2fc445cb43f795154ca60fef41c11a86d2b26755831e15fd567",
"original": ".local/analysis-source-s2c-admission-independent-review-20260913.md"
},
{
"path": "notes/analysis-source-s2c-run-proposal-20260913.md",
"bytes": 4239,
"sha256": "0fcb398e9702942e5a82f42710094080c412f29df9c0ed71a16fb159d0a1eb03",
"original": ".local/analysis-source-s2c-run-proposal-20260913.md"
},
{
"path": "notes/analysis-source8-s2c-gate-closure-20260913.md",
"bytes": 2427,
"sha256": "00602acf0eef20b545d504518a2af6e546ed2cd84729600624ca9beac46d97f8",
"original": ".local/analysis-source8-s2c-gate-closure-20260913.md"
},
{
"path": "notes/analysis-source8-s2c-handoff-20260913.md",
"bytes": 11889,
"sha256": "62c7e60b10b503afc97529707335d47eaebde36cfd6fd3b3bf01a0d7800e2073",
"original": ".local/analysis-source8-s2c-handoff-20260913.md"
},
{
"path": "notes/analysis-source8-s2c-independent-review-20260913.md",
"bytes": 8483,
"sha256": "3cda6c2fc84a1db7e9636fc02638c02f4a5f8218b56d03d78ad22b08f96e21d1",
"original": ".local/analysis-source8-s2c-independent-review-20260913.md"
},
{
"path": "raw/closure-f1d79df.json",
"bytes": 4037,
"sha256": "76a7f039a22aa8e3d61372bc34c692b7ddd570ee4e016b0e9d95dec5dab81b8b",
"original": ".local/analysis-source-gates-20260913/closure-f1d79df.json"
},
{
"path": "raw/full-f1d79df-comparison.py",
"bytes": 3499,
"sha256": "e88c0c630b05d0568b29301efdfb0c6e74135e4b04e27a1f71f27954b8809921",
"original": ".local/analysis-source-gates-20260913/full-f1d79df-comparison.py"
},
{
"path": "raw/full-f1d79df.comparison.json",
"bytes": 3864,
"sha256": "5497ce589c3e8eea6158055af77da598aab1a7c2a92af30c7264bfd311ec89f4",
"original": ".local/analysis-source-gates-20260913/full-f1d79df.comparison.json"
},
{
"path": "raw/full-f1d79df.inputs.json",
"bytes": 99490,
"sha256": "6a4c7e3c8d1e6edb7ad306c19abd05009ee410312eb34b68ec30d6408387967b",
"original": ".local/analysis-source-gates-20260913/full-f1d79df.inputs.json"
},
{
"path": "raw/full-f1d79df.log",
"bytes": 28480,
"sha256": "29a08cbfc02a83922f90c00f0b48f1aa403f93261457e65d29e3b9f46389dce9",
"original": ".local/analysis-source-gates-20260913/full-f1d79df.log"
},
{
"path": "raw/full-f1d79df.result.json",
"bytes": 1234,
"sha256": "a1465abd64e2b3a29388f5da1912dcb87bfe9aed618c122bad557ff21c52c95b",
"original": ".local/analysis-source-gates-20260913/full-f1d79df.result.json"
},
{
"path": "raw/list-f1d79df.admission.json",
"bytes": 17862,
"sha256": "b0469254ba86e172592647774abfc181942f4bdebf255058477ad2725a286f08",
"original": ".local/analysis-source-gates-20260913/list-f1d79df.admission.json"
},
{
"path": "raw/list-f1d79df.inputs.json",
"bytes": 99490,
"sha256": "6a4c7e3c8d1e6edb7ad306c19abd05009ee410312eb34b68ec30d6408387967b",
"original": ".local/analysis-source-gates-20260913/list-f1d79df.inputs.json"
},
{
"path": "raw/list-f1d79df.log",
"bytes": 15801,
"sha256": "085b90319f2bfa6c455731a35da18cc149b9df195aac817c8e56df53f1601dc2",
"original": ".local/analysis-source-gates-20260913/list-f1d79df.log"
},
{
"path": "raw/list-f1d79df.result.json",
"bytes": 16801,
"sha256": "f57666eec6f236da7fbcbe99aca42de09e2d91823b36872c982d85c194136daf",
"original": ".local/analysis-source-gates-20260913/list-f1d79df.result.json"
},
{
"path": "raw/strict-f1d79df.inputs.json",
"bytes": 99490,
"sha256": "6a4c7e3c8d1e6edb7ad306c19abd05009ee410312eb34b68ec30d6408387967b",
"original": ".local/analysis-source-gates-20260913/strict-f1d79df.inputs.json"
},
{
"path": "raw/strict-f1d79df.log",
"bytes": 188,
"sha256": "781fdc11e19af01eda6dac414a2cfacef8392524526418c3a74e7fceed279c35",
"original": ".local/analysis-source-gates-20260913/strict-f1d79df.log"
},
{
"path": "raw/strict-f1d79df.result.json",
"bytes": 968,
"sha256": "f7f70de01aa41b1deca9c501b45ca460f348d4423a8b54c9fc3dbe05c3c5dd8c",
"original": ".local/analysis-source-gates-20260913/strict-f1d79df.result.json"
},
{
"path": "raw/tokens-f1d79df.admission.json",
"bytes": 2411,
"sha256": "d1d32eb461614c6f6bbd86926d5b93313fa73277823f675eac93cce8eacfcee0",
"original": ".local/analysis-source-gates-20260913/tokens-f1d79df.admission.json"
},
{
"path": "raw/tokens-f1d79df.inputs.json",
"bytes": 99490,
"sha256": "6a4c7e3c8d1e6edb7ad306c19abd05009ee410312eb34b68ec30d6408387967b",
"original": ".local/analysis-source-gates-20260913/tokens-f1d79df.inputs.json"
},
{
"path": "raw/tokens-f1d79df.log",
"bytes": 447,
"sha256": "fdf02a809a7f8b82880003708b27f5737093b20913cde6a4ab62c36e61924ded",
"original": ".local/analysis-source-gates-20260913/tokens-f1d79df.log"
},
{
"path": "raw/tokens-f1d79df.result.json",
"bytes": 1262,
"sha256": "04392c3ed68e63a0dedfd754b3ecac4fce0a1dde5b471a177af475794f14097b",
"original": ".local/analysis-source-gates-20260913/tokens-f1d79df.result.json"
},
{
"path": "raw/typed-f1d79df.admission.json",
"bytes": 7379,
"sha256": "86da1ea2f0438c2b9bb9ff94effbb26f866b137834081a85bb800096f42b1074",
"original": ".local/analysis-source-gates-20260913/typed-f1d79df.admission.json"
},
{
"path": "raw/typed-f1d79df.inputs.json",
"bytes": 99490,
"sha256": "6a4c7e3c8d1e6edb7ad306c19abd05009ee410312eb34b68ec30d6408387967b",
"original": ".local/analysis-source-gates-20260913/typed-f1d79df.inputs.json"
},
{
"path": "raw/typed-f1d79df.log",
"bytes": 5628,
"sha256": "a65c12943cff40e99757660f99d7018a55799ffe6eaf25836709ce147a9c07a3",
"original": ".local/analysis-source-gates-20260913/typed-f1d79df.log"
},
{
"path": "raw/typed-f1d79df.result.json",
"bytes": 1266,
"sha256": "9d4ab4415bdc4ac47e4f2cb8fa10430a337d0129111f7c99da59da10eba4ad21",
"original": ".local/analysis-source-gates-20260913/typed-f1d79df.result.json"
},
{
"path": "README.md",
"bytes": 2377,
"sha256": "f76ac01b7308d7293cf28cacac7b7828c4171a38c7cc16b3befbef162f5e2017"
},
{
"path": "verify.py",
"bytes": 15893,
"sha256": "b257a3b0d5190512f6f4006a02f6057699cce01bf1bec2ba1e2a8a17157ae036"
}
],
"external_refs": [
{
"commit": "355f6d4d244e6b57fd89a8afd80a2dacdea69ba1",
"path": "harness/experiments/analysis-source-s2b-windows-20260913/archive/evidence/.local/analysis-source-gates-20260913/list-a2a28f8.log",
"bytes": 14712,
"sha256": "8be8bd7ae75a690f0e36c8b0b39dabc4c5bd5654cf1e653bd43e3c0cddf560df"
},
{
"commit": "355f6d4d244e6b57fd89a8afd80a2dacdea69ba1",
"path": "harness/experiments/analysis-source-s2b-windows-20260913/archive/evidence/.local/analysis-source-gates-20260913/list-a2a28f8.result.json",
"bytes": 15718,
"sha256": "86db5467964d3712510f867379ae32e0797b4d9f46cbde762119ed9055fd3a62"
},
{
"commit": "355f6d4d244e6b57fd89a8afd80a2dacdea69ba1",
"path": "harness/experiments/analysis-source-s2b-windows-20260913/archive/evidence/.local/analysis-source-gates-20260913/list-a2a28f8.inputs.json",
"bytes": 98909,
"sha256": "08b6dabbffbd06f7abea717f9aa34cd910c41c4a8c650247006a0f6858561c84"
},
{
"commit": "355f6d4d244e6b57fd89a8afd80a2dacdea69ba1",
"path": "harness/experiments/analysis-source-s2b-windows-20260913/archive/evidence/.local/analysis-source-gates-20260913/list-a2a28f8.admission.json",
"bytes": 15489,
"sha256": "f6b08e4d0eac3a0f17a582f9d9a51fb0cf84fc3c30d94d8fac71df52a4442bf1"
},
{
"commit": "355f6d4d244e6b57fd89a8afd80a2dacdea69ba1",
"path": "harness/experiments/analysis-source-s2b-windows-20260913/archive/evidence/.local/analysis-source-gates-20260913/full-a2a28f8.log",
"bytes": 27331,
"sha256": "9ae08b9a0157ebef587d36b40e5f7da8dd61b13bd5594bbae659f06c75e59044"
},
{
"commit": "355f6d4d244e6b57fd89a8afd80a2dacdea69ba1",
"path": "harness/experiments/analysis-source-s2b-windows-20260913/archive/evidence/.local/analysis-source-gates-20260913/full-a2a28f8.result.json",
"bytes": 1250,
"sha256": "81e171692b5c782bd234888e94468853b47a0e54375106e4cfce831e7b58e6c1"
},
{
"commit": "355f6d4d244e6b57fd89a8afd80a2dacdea69ba1",
"path": "harness/experiments/analysis-source-s2b-windows-20260913/archive/evidence/.local/analysis-source-gates-20260913/full-a2a28f8.inputs.json",
"bytes": 98909,
"sha256": "08b6dabbffbd06f7abea717f9aa34cd910c41c4a8c650247006a0f6858561c84"
},
{
"commit": "355f6d4d244e6b57fd89a8afd80a2dacdea69ba1",
"path": "harness/experiments/analysis-source-s2b-windows-20260913/archive/evidence/.local/admit-analysis-s2b-gate.py",
"bytes": 8388,
"sha256": "92c03d25c8f5ae75a5c1e76bd4fa24cbca7aeb10cf7ee5847bc8a324cae3ec06"
},
{
"commit": "355f6d4d244e6b57fd89a8afd80a2dacdea69ba1",
"path": "harness/experiments/analysis-source-s2b-windows-20260913/archive-review.md",
"bytes": 6977,
"sha256": "0572e46d4a565eba9933a7ca502de07d2f68dfba5b986963f5193b21c445d95c"
},
{
"commit": "355f6d4d244e6b57fd89a8afd80a2dacdea69ba1",
"path": "harness/experiments/analysis-source-s2b-windows-20260913/archive/README.md",
"bytes": 1598,
"sha256": "68371f8a71740694584f3c3aab8b4b62416bec6b47aa0eec1eda9e784623ff73"
}
],
"scope": "Private staged writer evidence; full suite FAILED. No public8, S3/S4, native or release acceptance."
}
@@ -0,0 +1,37 @@
# Prepared S2c gate admission helper
New ignored helper: `.local/admit-analysis-s2c-gate.py`. Source-only preparation; helper/admission functions were not invoked. No compiler, gate, full-suite waiver, Git mutation, Gitea or native action occurred. Parent owns review and actual execution after closed gates.
The helper is pinned to frozen `f1d79df4979121335ed7b4ce4da84b2fca8a9ef4` in `.local/analysis-core-worktree-20260911`; it requires that current HEAD at both initial and final admission. Read-only source preparation independently derived exactly534 scoped Git input files. Relative to admitted a2's531, the three writer files are new and the oracle rename adds one/removes one. The scope is exactly the existing recorder's Cargo manifest/lock/toolchain, .cargo, build, crates, assets, docs, examples and harness/fixtures scope.
Its fixed baseline is the actual admitted a2 listing142. The helper hard-pins the original a2 list result, inputs, raw log, admission and original S2b admitter. It does not reread the old mutable test EXE or treat the old full failure as a pass. The original S2b helper and all original outcomes remain unchanged.
The ten writer test names are a fixed set matching the actual frozen Rust test functions; membership is re-derived from the committed test source during admission. Together with all142 prior names, actual future listing must contain exactly152 unique names, with exact raw summary and recorded listing agreement. The future listing remains required; source counting alone does not fabricate an executable listing.
Only two focused selectors are permitted: `language::analysis_source` (44 actual passes,108 filtered) and `language::raw_tokens` (1 actual pass,151 filtered). Typed admission explicitly requires all ten new writer tests to pass, alongside the34 retained typed tests. Raw-token admission covers only its one actual case and does not claim to run those ten writer tests. All focused individual outcomes must equal the ordered selected listing, with zero failed/ignored/measured cases. Any different selector, wrong count, omitted/repeated case or full command rejects. The historical16 full failures cannot receive a full-pass admission here, even if a caller tries the focused interface.
Every current gate must be a closed integer-exit0 receipt at the exact source, with unchanged inputs, exact command, one test EXE and matching raw Running path. Actual EXE bytes/hash are reread at admission and must equal the list/focused identity. Exact534 committed file names/bytes/hashes and working-tree bytes must match the input manifest. Focused admission additionally verifies the admitted current listing's original result/input/log hashes, helper hash, executable, source and exact names. Historical baseline and all current inputs/receipts/helper/EXE are watched for final readback before exclusive admission output. Existing admission files cannot be overwritten.
No `--check-source`, strict-pass or full-pass mode was added. This keeps the helper bounded to the requested listing/focused admission. It uses read-only Git commands only and never invokes Cargo or Rust tests. Strict/full gates retain their own actual raw receipts and separate audit.
## Future invocation, after parent review and actual gate closure
Use the existing pinned Python with `-B` and substitute actual closed gate names:
```text
PYTHON -B .local/admit-analysis-s2c-gate.py ACTUAL_LIST_NAME
PYTHON -B .local/admit-analysis-s2c-gate.py ACTUAL_TYPED_NAME ACTUAL_LIST_NAME language::analysis_source
PYTHON -B .local/admit-analysis-s2c-gate.py ACTUAL_TOKENS_NAME ACTUAL_LIST_NAME language::raw_tokens
```
These commands have not been run. They write only a fresh matching `.admission.json` after all checks. Failed raw gate receipts/logs stay untouched. A future source correction needs a newly reviewed pin/helper adaptation and actual gates; this helper deliberately rejects source drift.
Preparation checks: Python AST parsing only, plus separate read-only Git membership/test-function extraction and baseline JSON/hash inspection. No helper import or admission invocation occurred. The new runner code remains unexecuted and may still expose actual integration/path/runtime errors. Its admission is evidence for the selected executed scope, not public source8, whole-project save or native acceptance.
Helper bytes/hash: 9816 / `0202540eec8870f1fd0a03ad39d55653c18c9bb3c533e491d67234e040c42833`.
## Independent review: r2 replaces the helper for future admission
The original helper and preparation record above are preserved. Independent review found that Python optimization could remove assert-based admission checks. Parent authorized the narrowly revised `.local/admit-analysis-s2c-gate-r2.py`: **10010 bytes / SHA256 `d2bd3c38feb77b8e916b3d413a278d4b0960baff8e14843aed4c2b20c26c90e1`**. Its only change is a non-assert `if not __debug__: raise RuntimeError(...)` guard immediately after imports, before evidence access or output. Use the r2 filename for all three future invocations above; current listing and focused admission helper hashes must both refer to r2.
An explicitly authorized `PYTHON -B -O .local/admit-analysis-s2c-gate-r2.py` with no gate arguments actually exited1 at the guard with `S2c admission requires Python assertions; optimized Python is refused.` It did not reach any evidence or admission operation. No normal-mode admission, compiler or S2c test was run. Counts534/152/44/1 and baseline pins were independently rechecked from source and existing records. See `.local/analysis-source-s2c-admission-independent-review-20260913.md` for the finding, exact invocation and active-runner risk limits. No active runner was modified.
@@ -0,0 +1,44 @@
# S2c admission independent review and narrow r2 correction
2026-09-13, `/root/source8_lowering_plan`. Reviewed `.local/admit-analysis-s2c-gate.py` and its handoff against committed `f1d79df4979121335ed7b4ce4da84b2fca8a9ef4` and the original admitted a2 listing. No compiler/test/native/Gitea operation occurred; no active runner or source checkout was modified.
## Finding and authorized correction
The original helper, SHA256 `0202540eec8870f1fd0a03ad39d55653c18c9bb3c533e491d67234e040c42833`, relies on assert for acceptance checks. Optimized Python removes these checks. The documented `-B` does not prevent `-O`, `-OO`, or inherited PYTHONOPTIMIZE from enabling optimization. In that mode failed case/count/source/hash guards can disappear while the final admission writer remains. This is an actionable false-positive acceptance risk, not evidence that any historical gate ran optimized.
Parent authorized a new r2 copy only. `.local/admit-analysis-s2c-gate-r2.py` adds, immediately after imports and before paths/evidence handling:
```python
if not __debug__:
raise RuntimeError('S2c admission requires Python assertions; optimized Python is refused.')
```
The guard itself is not an assert. Original helper bytes remain unchanged. Revised helper is **10010 bytes**, SHA256 **`d2bd3c38feb77b8e916b3d413a278d4b0960baff8e14843aed4c2b20c26c90e1`**. No other admission rule was changed. New admissions must use r2 consistently for listing and focused helper-hash linkage.
One specifically authorized non-mutating invocation actually ran:
```text
C:/Users/User/.cache/codex-runtimes/codex-primary-runtime/dependencies/python/python.exe -B -O .local/admit-analysis-s2c-gate-r2.py
```
It exited **1**, at line16, with the exact RuntimeError above. It received no gate name and failed before argument parsing, BASE/ROOT setup, Git/evidence access or output creation. No normal-mode admission/helper execution, Cargo or Rust test occurred. This validates optimization refusal only; S2c runtime tests remain unrun.
## Independently checked membership and binding
Read-only Git enumeration at f1 produced **534** files in the helper's exact scopes. The a2-to-f1 source diff adds the three writer files; the oracle is a 100% rename, with no net input count change. The versioned guidance changes are outside harness/fixtures, so they do not add scoped gate inputs.
The actual a2 record contains **142** listing names, including **34** typed cases. Extracting the actual ten `#[test]` functions from committed writer/tests.rs gives exactly the helper's NEW_NAMES. Their union contains **152 unique** names, **44** matching language::analysis_source and **1** matching language::raw_tokens. Thus 108/151 filtered counts are correct expectations; they are not an executed f1 listing.
Direct hashes of the original a2 result, inputs, log, admission and S2b helper match every hardcoded baseline pin. Original a2 results and historical failures are not rewritten or reclassified.
With assertions enabled, the reviewed helper requires an exact source and closed integer-exit0 receipt, exact command, unique raw/recorded listing agreement, complete expected membership, exact focused ordered outcomes and summary, zero ignored/failed/measured cases, and the same admitted current executable identity. Full and unrelated commands are rejected. It compares every scoped committed blob with working-tree and manifest bytes and performs final watched readback. Existing admissions use exclusive creation. Typed mode explicitly includes all ten writer cases; raw-token mode cannot masquerade as running them. No further actionable finding arose within this bounded listing/focused admission contract.
This remains local evidence verification using the trusted runner receipts/Git environment, not proof against a party fabricating all raw evidence or changing Git resolution. Compiler/profile/full-suite/public8/native claims remain outside the helper's scope. Actual new listing and focused execution must exist before normal admission is attempted.
## Active runner assertion-risk inspection
A read-only process snapshot observed PID7504 running `run-navigation-service-gate.py ... core-full-44095f7 core-full` and PID7872 running `navigation-palette-native-session-command-r2.py launch ...`; both command lines use `-B` and no `-O` or `-OO`. The current tool process's PYTHONOPTIMIZE and User/Machine environment settings were all unset. This does **not** read or prove the already running Python processes' inherited environments; parent separately reports launching without -O.
`run-navigation-service-gate.py`, `run-navigation-palette-gate.py` and `run-analysis-source-gate.py` use asserts for admission/preflight checks without an optimization guard. Their actual subprocess return codes and final changed-input/head exit logic are ordinary executable code, but optimized execution could skip preflight source/freshness checks. Historical/assert-based admission helpers have the same general risk. Do not mutate active runners; for future launches use a reviewed new guarded copy or verify/record disabled optimization. Existing raw receipts may be independently audited without assuming that this risk occurred.
The active native runner uses an explicit `require` function rather than assert for its acceptance checks, so this specific optimization-elision finding does not apply to that script. No native process was controlled or altered by this review.
@@ -0,0 +1,34 @@
# Proposed frozen S2c gates — not started
Read-only preflight after the desktop lease closed verified both `.local/as2-20260913` and `.local/analysis-core-worktree-20260911` are clean at **f1d79df4979121335ed7b4ce4da84b2fca8a9ef4**, with534 scoped committed inputs. Existing distinct `.local/analysis-checked-save-target-20260913` is a normal directory. Free disk was5106880512 bytes; inherited PYTHONOPTIMIZE was unset. Every proposed `*-f1d79df` output stem is absent. No S2c compiler or test was started by this preflight.
Binding decision needed before launch: both reviewed helpers hard-code `analysis-core-worktree-20260911`, whereas the parent's latest request named `as2-20260913`. Recommend using the identical frozen analysis-core checkout with these unchanged helpers and its existing cache binding. Using as2 instead requires fresh helper copies with only the checkout binding changed and reviewed; changing shell cwd alone will not redirect these helpers. Parent has been asked to resolve this before execution.
Reviewed helper pins:
- `.local/run-analysis-source-gate.py`: `d8d9c1c9e9dc94fdd43afb4118ebc491c8eb6d89082f8441f8395b9d4265b068`.
- `.local/admit-analysis-s2c-gate-r2.py`: `d2bd3c38feb77b8e916b3d413a278d4b0960baff8e14843aed4c2b20c26c90e1`.
The admitter independently pins admitted a2 listing142 plus ten exact writer tests, requiring actual listing152, typed44 and raw-token1. It rereads all534 committed inputs and the actual emitted test executable; original S2b results remain historical. Its non-assert guard refuses optimized Python. The raw recorder still relies on assertions, so the invocation must reject a nonempty PYTHONOPTIMIZE and use Python without `-O`.
Proposed commands after parent accepts binding and scope, from repository root with the same known Cargo/Rustup/LLVM toolchain environment as desktop, **except** `CARGO_TARGET_DIR` must be the distinct analysis target below:
```powershell
$analysisPython = 'C:/Users/User/.cache/codex-runtimes/codex-primary-runtime/dependencies/python/python.exe'
$analysisSource = 'f1d79df4979121335ed7b4ce4da84b2fca8a9ef4'
$env:CARGO_TARGET_DIR = 'C:/Users/User/Documents/Git/ARCADIA-Studio/.local/analysis-checked-save-target-20260913'
$env:CARGO_BUILD_JOBS = '1'
if ($env:PYTHONOPTIMIZE) { throw 'Use unoptimized Python for analysis admission.' }
& $analysisPython -B .local/run-analysis-source-gate.py $analysisSource list-f1d79df list
& $analysisPython -B .local/admit-analysis-s2c-gate-r2.py list-f1d79df
& $analysisPython -B .local/run-analysis-source-gate.py $analysisSource typed-f1d79df focused language::analysis_source
& $analysisPython -B .local/admit-analysis-s2c-gate-r2.py typed-f1d79df list-f1d79df language::analysis_source
& $analysisPython -B .local/run-analysis-source-gate.py $analysisSource tokens-f1d79df focused language::raw_tokens
& $analysisPython -B .local/admit-analysis-s2c-gate-r2.py tokens-f1d79df list-f1d79df language::raw_tokens
& $analysisPython -B .local/run-analysis-source-gate.py $analysisSource full-f1d79df full
& $analysisPython -B .local/run-analysis-source-gate.py $analysisSource strict-f1d79df clippy
```
These are a proposed serial sequence, not a blindly chained shell script: consume each closed result and require admission before dependent gates. Stop on any new failure. Listing must be152; typed must be44 passes (including all10 writer tests); token must be1 pass. If parent includes full/strict scope, full is expected to remain **136 passed/16 existing unsupported-source8 failures**, reflecting the unchanged public gate plus10 new writer tests; compare the exact failure set against retained `full-a2a28f8` rather than treating exit101 alone as acceptable. There is deliberately no full-pass admission or old-failure waiver in the r2 admitter. Strict all-targets requires actual exit0 and unchanged inputs. Full and strict retain their actual raw receipts for separate review.
No source8/public wiring or S2b source mutation is proposed. This is staged private writer/parser/lowerer evidence, not public source8, production source indexing, save/migration or native acceptance. The root desktop target and preserved feab test/GUI executables must remain untouched by analysis compilation.
@@ -0,0 +1,21 @@
# Private S2c executable gate closure — 2026-09-13
Frozen source: `f1d79df4979121335ed7b4ce4da84b2fca8a9ef4`, clean `.local/analysis-core-worktree-20260911`; separate existing `.local/analysis-checked-save-target-20260913` target. All 534 scoped inputs matched the admitted listing and original committed bytes throughout; final source readback clean.
| Actual gate | Result | UTC closure |
| --- | --- | --- |
| list | 152 exact names; admitted | 2026-09-13T12:08:00.913025+00:00 |
| typed | 44 passed; admitted | 2026-09-13T12:09:47.043155+00:00 |
| tokens | 1 passed; admitted | 2026-09-13T12:13:55.998167+00:00 |
| full | 136 passed, 16 failed, 0 ignored; Cargo 101 | 2026-09-13T12:15:46.279177+00:00 |
| strict | All targets with -D warnings passed; Cargo 0 | 2026-09-13T12:24:00.805354+00:00 |
The full suite remains **FAILED**. Its 152 exact outcomes retain all 142 prior a2 outcomes and add ten passing writer tests. All sixteen failure blocks match the prior unsupported schema-8 header behavior. The separate full comparison is not a full-suite pass admission.
Receipts and exact hashes: [closure-f1d79df.json](analysis-source-gates-20260913/closure-f1d79df.json). The retained full comparison source was executed inline before its identical content was saved as `full-f1d79df-comparison.py`; it checks original baseline hashes, exact outcome membership/no duplicates, all unchanged baseline statuses, ten new writer successes, failure identity/message and 534 actual input bytes.
Commands and environment are in each immutable result. Reviewed runner SHA256 `d8d9c1c9e9dc94fdd43afb4118ebc491c8eb6d89082f8441f8395b9d4265b068`; listing/focused r2 admitter SHA256 `d2bd3c38feb77b8e916b3d413a278d4b0960baff8e14843aed4c2b20c26c90e1`. Python ran without optimization. All child sessions closed; compiler lease released after strict closure.
The separate desktop test binary readback remains `a0bc95a60c7daf3400788a8821257bc964a34f7442d015f3745663d6646ad279`; preserved feab GUI remains `521ca576337a4b5add70c8fb7f101e459274f9b4462a5c0bdd3290cc1ca72b58`. No desktop compiler or GUI was invoked.
This establishes the private staged S2c writer tests and strict checks only. Public source8 remains unsupported; ordinary/typed production composition, include admission, S3 indexing/update and S4 activation remain separate work. No source edits or Gitea actions were performed during these gates.
@@ -0,0 +1,76 @@
# S2c typed canonical writer checkpoint
2026-09-13. Delegated owner: `/root/source8_lowering_plan`; integration, executable gates and publication: `/root`. This is a **source-only, private staged implementation**. All ten newly authored writer tests are **UNRUN**. No Cargo, compiler, GUI or Gitea operation was performed by this contribution.
## Frozen source and checks
- Worktree: `.local/as2-20260913`, branch `codex/analysis-s2-956atf-20260913`, clean after commit.
- Commit: **`f1d79df4979121335ed7b4ce4da84b2fca8a9ef4`**, `Stage bounded typed source8 canonical and subtree writers`.
- Parent: **`bed5b0e8320bfc106b1f5f62e42339ca23b900cd`**, accepted versioned Negate guidance addendum. That parent follows the corrected S2b pin `a2a28f8d23a46ba1696b6a8410d4d3b5c1808f49`.
- Six files, 1,863 insertions and two deletions. No edits to public `language.rs`, source_project, model, semantic admission, parser/Budget, source3 bridge, header dispatch, ordinary writers, or user-owned specification.
- Rustfmt completed and subsequent `rustfmt --check --edition 2024 --config skip_children=true` passed for the six affected Rust paths using the root `.local/toolchain` environment. Staged `git diff --check` passed. These checks are not compilation or behavioral evidence.
- The oracle was moved byte-for-byte from `analysis_source/lower/oracle.rs` to `analysis_source/model_oracle.rs`; both Git blobs are `7acca881a5f5b1243a8df760b230f57619212eef`. Lowerer tests change only their module import. No oracle values or constructors changed.
- Parent-reported prior a2 executable evidence: listing 142 admitted, typed 34 passed, raw_tokens one passed, full 126 passed / 16 existing unsupported-header failures, strict all targets passed at 07:09:57Z, with 531 unchanged inputs. **None of this is evidence that S2c compiles or passes.** Original analysis-core a2 and root 440 checkouts remain untouched.
## File partition
Paths below are relative to `crates/oa-core/src/language/`.
| File | Change |
| --- | --- |
| `analysis_source.rs` | Registers private writer and shared test oracle. Existing staged module admission remains unchanged. |
| `analysis_source/lower/tests.rs` | Uses the shared oracle instead of its former local module. |
| `analysis_source/model_oracle.rs` | Mechanical 100% rename of the independently authored complete Rust Project oracle. |
| `analysis_source/write.rs` | 664 lines: bounded output sink, lookup/scope tables, declaration/type/binding/item formatting and fallible fragment interfaces. |
| `analysis_source/write/expression.rs` | 284 lines: iterative expression task stack, all 13 Expr variants, precedence-aware parent context. |
| `analysis_source/write/tests.rs` | 910 lines: ten authored tests and local staged parse/lower helpers. |
## Private interfaces
All interfaces remain inside the existing private staged `analysis_source` module; there is no new public test API or production entry point.
- `Limits { bytes, entries }`, constructed with `Limits::source8(ParseLimits)` using the existing candidate source8 hard limits. `Writer::new` rejects caller limits above the hard ceilings.
- `Writer::new(&Project, Limits) -> Result<Writer, Error>` borrows the complete model, collects calculation parameter scopes once, and rejects duplicate IDs/names within a calculation. Reused parameter IDs across owners or between a parameter and a global object remain allowed.
- `Usage { bytes, entries }` is available through `usage()`. Work and output counters aggregate across successful fragment calls; they do not restart for each declaration or subtree.
- `Error { owner: Option<Id>, field: &'static str, message: String }` reports model context, without inventing source spans.
- `definition(Id)`, `analysis_element(Id)` return a complete typed declaration; `typed_declarations()` returns `Vec<(Id, String)>` in definitions-by-ID then analysis-elements-by-ID order, including unused definitions and unbound declarations.
- `value_type(owner, &AnalysisType)` emits a type value. `binding(owner, lower::Field)` emits the actual model binding and validates its owner/field context.
- `expression(owner, Field, &Expr, Parent)` emits a supplied expression, retaining owner/field parameter scope. `Parent` is `Root`, `Binary(BinaryOp, Side)` or `Negate`; `Side` is Left/Right. This is the explicit S3 replacement boundary: a retained binary/unary parent can request the grouping needed to preserve topology.
- `parameter(calculation, ParameterId)` emits a complete `input ...;` item with explicit scoped ID. `override_entry(case, property)` emits a complete `@property = binding;` entry and fails if absent. Other fragment APIs emit values without field keywords or semicolons.
The byte sink checks remaining capacity before growth and uses `serde_json::to_writer` directly for quoted strings, matching existing `language::quote`. Raw alias and quoted-string size checks precede their variable-size work. Exact values use existing `Exact::canonical_literal()`; its scratch is bounded by the model's two 4096-bit components. No float conversion, recursive child-string construction, JSON payload transport, or reparsing/normalization of Exact values is introduced.
Entry work is charged before scope-table insertion, structural visits and expression scheduling; stack growth has a pending-entry bound. The first failed output call latches its error, discards its unfinished fragment and prevents later calls from returning output. Completed fragments consume the same aggregate quota. No parser Budget reference/literal recharge or semantic admission occurs inside the writer.
## Formatting contract
Declarations use LF, four-space declaration indentation, eight-space fields, description first, short typed words and explicit required fields. Definitions retain ID order; parameters and call labels use the callee's parameter vector order; overrides use property ID order. Dimension axes follow the fixed seven-axis order. Empty dimension and override bodies remain explicit `{}`. Units retain exact scale/offset; display-unit none, documented-constraint none, base ModelBaseline and unbound values remain explicit. Headers emit all IDs and display names. Analysis parent must remain none.
The expression writer handles all 13 model variants iteratively. Binary grouping preserves lower precedence, equal-precedence right children, and comparison nesting on either side. Negate emits `- ` and groups only a binary operand. Negative literal nodes remain `ratio(-1, 1)`, distinct from unary `- 1`. Parameter and global references use typed lookups and owner scope; calls require the exact callee parameter-ID set, emit labels in declaration order, and do not expand the call graph. Depth 128, list width 1024 and exponent bounds remain unchanged.
The accepted Negate addendum is implemented without parser-limit changes. A source-derived case override with 127 Negates around Number(-1) consumes 130 staged frames; the calculation control consumes 129. The obsolete mandatory-grouping spelling consumes 257 in the case and 256 in the calculation, showing why the calculation-only control was insufficient. Replacing the entire grouped operand in `-(1)` with a binary expression requests `Parent::Negate` and restores required grouping.
## Authored tests — all UNRUN
Full prefix: `language::analysis_source::write::tests::`.
1. `typed_oa_sa_canonical_roundtrips_match_independent_projects`: complete independent OA/SA model equality through typed canonical parse/lower, 14 display-name assertions, one existing semantic admission per candidate, canonical stability and public8 rejection.
2. `typed_declaration_order_and_required_empty_values_are_canonical`: independent model additions for empty dimensions, affine algebra, negative unit offset, Unicode symbol, unused zero-input/list-result unbound calculation, explicit none/empty values and sorted overrides; complete model roundtrip/admission/stability and absent-override failure.
3. `all_expr_variants_and_precedence_preserve_exact_trees`: independent actual Expr and golden source for all 13 variants, including the corrected semantically valid AsKind; structural roundtrip plus admission in the complete candidate; additional unary, negative-literal, binary, comparison and empty-list topology controls.
4. `canonical_calls_use_callee_parameter_order_and_qualified_names`: reversed parameter vectors, map-order independence, reused IDs across scopes and a global ID, caller parameter names versus callee argument labels, complete parameter items and model roundtrip/admission.
5. `subtree_output_respects_parent_context_and_retained_delimiters`: replaces the whole `(1)` operand span in `-(1)` with binary, negative literal and unary trees, verifying retained-parent topology; right subtraction child, type fragment and complete override item controls.
6. `canonical_strings_and_exact_literals_use_existing_encodings`: quotes/backslash/control characters/NUL/Unicode equality with existing quote encoding, exact literal canonical forms, and typed model roundtrip.
7. `writer_limits_are_aggregate_exact_and_latched_without_partial_results`: exact and adjacent byte/entry limits, cross-fragment charging, latched errors, escaped Unicode byte controls and hard-limit rejection.
8. `writer_lookup_scope_shape_and_depth_failures_are_model_located`: wrong domains/unknown IDs, out-of-scope parameters, call argument-set mismatch, bad power/list/depth bounds, invalid owner/field contexts and contextual errors.
9. `negate_override_roundtrip_preserves_depth128_within_frame256`: source-derived whole-case depth-128 AST, prefix 130/129 and obsolete grouped 257/256 controls, exact 127-unary/negative-literal tree, complete model equality and stable canonical output.
10. `iterative_writer_preserves_width1024_and_empty_call_topology`: exact list-1024 and zero-argument-call structural roundtrips.
## Review and remaining work
Fresh independent source review and parent-owned compilation/executable gates are next. The writer's model precondition is complete semantic admission by its caller; writer lookup/shape failures do not replace semantic validation. The all-13 tests run the existing admission once per complete candidate. The helper used to inspect a bare expression wraps it in a private probe calculation for structural parsing/lowering; that helper's placeholder result type is not claimed as a semantic oracle.
OA/SA tests combine a separately authored ordinary source7 skeleton with typed declaration output and the existing staged lowerer. Complete Project equality here is **not public whole-source8 parsing, include admission, save admission or migration evidence**. The string-encoding test checks encoding and structure; it does not claim semantic admission of its modified control-character names/symbols. The width/empty-call test checks topology.
S3 still owns source-qualified indexing, deriving replacement context from existing expression sites, original span selection, comment/ownership-preserving edits, stabilization of missing parameter IDs, and cursor/update behavior. S4 still owns complete ordinary/typed production composition, envelope/include aggregate limits and inherited frames, version/migration/export/save integration, and eventual public8 activation. The writer's aggregate quota currently covers typed output only. `value_type` accepts its owner as error context; binding/expression methods validate model owner/field context. No production-wide writer or public formatter signature changes are included.
The local accepted implementation plan is `.local/analysis-source8-writer-plan-20260913.md` (SHA256 `e6ef6108792896cfb65e825cd19e984bf1c1729cff242653ed7947b4c6e9a803`). The versioned Negate addendum is `harness/analysis-source8-20260913/writer-canonical-negate-20260913.md` in the bed5 ancestor. Source stays frozen pending parent direction.
@@ -0,0 +1,48 @@
# S2c typed writer independent source review
Frozen review pin: `f1d79df4979121335ed7b4ce4da84b2fca8a9ef4`, direct parent `bed5b0e8320bfc106b1f5f62e42339ca23b900cd`, in `.local/as2-20260913`. The worktree was clean at readback. Reviewed the full six-file change, accepted writer plan, author's handoff, actual staged parser/Budget and relevant model/admission contracts. No compiler, Rust tests, formatter, GUI, Gitea or source mutation occurred. Read-only Git object inspection verified the pinned changes and oracle move. Only this report was written.
**No demonstrated actionable source defect within the private S2c contract.** This disposition does not establish compilation, runtime success, production/public source8 acceptance or complete save/export correctness. All ten added tests remain unrun in this review.
## Topology and reference review
`write/expression.rs:14-48` matches the actual Pratt parser's precedence table and left associativity. Lower-precedence binary children and equal-precedence right children are grouped; both comparison-child sides are grouped regardless of equality/ordering precedence. Constructors/list/call arguments use root expression context. `Parent::Negate` groups binary operands only. Canonical negative Exact nodes use ratio syntax, so `- 1`, `ratio(-1, 1)` and `- ratio(-1, 1)` remain distinct trees. The task scheduling reverses complete child/text sequences onto a LIFO stack, preserving left-to-right emission and constructor/list argument order.
All 13 Expr variants are explicit in the iterative match. Power writes the stored signed exponent with its -16..16 check; it does not turn the exponent into another Expr or evaluate/fold anything. Quantity resolves Unit rather than QuantityKind. Property, definition and parameter domains use separate lookups. Checked definition lookup precedes the call's later indexing, and the immutable Project borrow prevents a intervening mutation.
`write.rs:294-350` derives argument-value scope from the actual owning binding field. The call path at `write/expression.rs:190-237` validates exactly the called calculation's parameter-ID set and emits argument labels in its parameter Vec order. Child expressions retain the caller's calculation scope; callee names do not redirect caller `$parameter` resolution. Constructor scope tables are per calculation; duplicate IDs/names within a signature fail, while reused IDs across signatures or with a global UUID remain distinct. No call-graph expansion or global parameter-name map is introduced.
`write.rs:427-625` emits each typed body, explicit UUID/name/description, required none/unbound/empty forms, Vec parameter order and BTreeMap override order. Short OA/SA words and root-only analysis parent handling are explicit. All catalog definitions are emitted, including unused or unbound calculations. Stored aliases are checked, quoted text streams through serde_json and exact numbers use the existing bounded canonical literal implementation.
## Limits and error boundary
The sink checks cumulative UTF-8 bytes before extension. Quoted-string encoding streams into that same sink rather than materializing an unbounded escaped intermediate. Name size is checked before lexical validation at `write.rs:165`; Exact's temporary is bounded by existing numeric components. `run` at line179 preserves aggregate counters across successful fragments, discards an incomplete fragment on error and latches that error. `typed_declarations` returns no partial vector on an error.
Scope-table construction charges definitions/parameters before insertion. Expression tasks charge structural visits; stack extension has a pending-work bound. List width1024, expression depth128 and power bounds fail explicitly. The limits are private typed-output/structural quotas, not a promise that every semantically accepted Project fits every lowered caller quota. Semantic admission remains a caller precondition; the writer does not duplicate global identity/type/layer validation. In particular, `value_type` intentionally uses owner as error context, while binding/expression methods validate owner/field membership. The typed-declaration convenience still scans the complete element map to find analysis entries; its output quota is not a production-wide traversal/export bound. S4 must retain the separately stated complete Project/envelope/include/resource contract.
## Evaluator adequacy and limits
The ten source-authored test functions are meaningful for this checkpoint:
- OA and SA canonical tests start from the independently built complete Project oracle and separately authored ordinary source skeletons. Actual staged parse/lower output must equal the complete original Project, followed by semantic admission and stable re-emission. Expected typed bodies do not come from the writer. Public8 rejection remains explicit.
- All-13 tests use independently constructed Expr trees and exact source goldens, then compare actual parsed/lowered topology. The complete candidate is admitted for the semantically valid 13-variant cases; the corrected AsKind example is retained. Additional precedence cases are structural controls and do not claim semantic validity for the temporary probe calculation.
- Call tests distinguish callee order from argument-map order, caller versus callee parameter names and reused scoped/global UUIDs. Parameter-item checks and a complete model roundtrip preserve identities. These cover the key alias/scope confusion risk.
- Subtree tests exercise explicit parent contexts, retaining Unary topology after replacing the entire grouped operand of `-(1)` with binary, negative-literal or unary values, and preserving a right subtraction child. This is a private fragment contract. They do not exercise S3's actual expression-site selection, source edits, comment ownership or full transaction path.
- The exact-byte/one-byte-short controls include escaped Unicode and aggregate output across calls; low entry limits and latched errors are exercised. Wrong domains, missing/extra parameter IDs, invalid scope and nearby width/depth bounds are explicit negative controls. Full performance/memory behavior remains unmeasured.
- The previous Negate frame counterexample is retained as a complete case: 127 Unary nodes around a negative Exact leaf, independent tree count, actual staged parser frame counts130/129 and obsolete grouped case/calculation controls257/256. The intended failure records the hard maximum reached at256; it does not falsely assert a successful257-frame parse. Canonical case output must roundtrip to the complete model and remain stable. This directly addresses the earlier design finding rather than relying on a calculation-only witness.
The test suite samples consequential precedence combinations rather than exhaustively enumerating every binary-operator pair. Source comparison found no missing/mismapped operator. No expanded test framework or unrelated production changes are required by this review. Parent-owned executable gates must still check the new ten tests alongside retained lower/declaration/parser/raw-token tests and strict compilation. Previously failed full-library public-header tests must remain reported as failures until separately repaired; S2c does not fix or waive them.
## Mechanical move and scope evidence
The old `lower/oracle.rs` and new `model_oracle.rs` are exactly 8451 identical bytes, Git blob `7acca881a5f5b1243a8df760b230f57619212eef`, SHA256 `fa8bcf0a327debb219b145939601da4636cf85ddf7744a4e34c359542dfe6fb1`. Lower-test changes only replace its local module declaration with the shared private oracle import. `analysis_source.rs` only registers the private writer and cfg(test) oracle. No public parser/version dispatch, model, admission, source_project, migration, grammar or ordinary formatter changes are in this pin.
Reviewed writer file identities:
| File under analysis_source | Bytes | SHA256 |
| --- | ---: | --- |
| write.rs | 24143 | `a49b893225bc03b4ed9324a00ddd0179c73b6b06aed2dbabdd2afa851fb439fe` |
| write/expression.rs | 12138 | `8b84f5255ccd51aa20b0f01b4f8d4b3a0b67fe2afe0ffdd4752e38f3253bd446` |
| write/tests.rs | 30351 | `50364af0c82a7430a45edd8ec18ff9c5f1248c656a2234608b7a180bf2e39739` |
Plan SHA256 `e6ef6108792896cfb65e825cd19e984bf1c1729cff242653ed7947b4c6e9a803`; author handoff SHA256 `62c7e60b10b503afc97529707335d47eaebde36cfd6fd3b3bf01a0d7800e2073`. These are design/source records, not executed writer results.
@@ -0,0 +1,79 @@
{
"source": "f1d79df4979121335ed7b4ce4da84b2fca8a9ef4",
"checkout": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-core-worktree-20260911",
"target": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-checked-save-target-20260913",
"verified_inputs": 534,
"listing": 152,
"typed_pass": 44,
"raw_token_pass": 1,
"full": {
"passed": 136,
"failed": 16,
"ignored": 0,
"scope": "FAILED suite, exact16priorunsupportedheaderfailures; all142prioroutcomesunchanged and10newwriterpasses"
},
"strict": "PASS alltargets-Dwarnings",
"records": {
"list": {
"start": "2026-09-13T12:01:12.914765+00:00",
"end": "2026-09-13T12:08:00.913025+00:00",
"cargo_exit": 0,
"pins": {
"list-f1d79df.log": "085b90319f2bfa6c455731a35da18cc149b9df195aac817c8e56df53f1601dc2",
"list-f1d79df.result.json": "f57666eec6f236da7fbcbe99aca42de09e2d91823b36872c982d85c194136daf",
"list-f1d79df.inputs.json": "6a4c7e3c8d1e6edb7ad306c19abd05009ee410312eb34b68ec30d6408387967b",
"list-f1d79df.admission.json": "b0469254ba86e172592647774abfc181942f4bdebf255058477ad2725a286f08"
}
},
"typed": {
"start": "2026-09-13T12:09:32.804745+00:00",
"end": "2026-09-13T12:09:47.043155+00:00",
"cargo_exit": 0,
"pins": {
"typed-f1d79df.log": "a65c12943cff40e99757660f99d7018a55799ffe6eaf25836709ce147a9c07a3",
"typed-f1d79df.result.json": "9d4ab4415bdc4ac47e4f2cb8fa10430a337d0129111f7c99da59da10eba4ad21",
"typed-f1d79df.inputs.json": "6a4c7e3c8d1e6edb7ad306c19abd05009ee410312eb34b68ec30d6408387967b",
"typed-f1d79df.admission.json": "86da1ea2f0438c2b9bb9ff94effbb26f866b137834081a85bb800096f42b1074"
}
},
"tokens": {
"start": "2026-09-13T12:13:51.673467+00:00",
"end": "2026-09-13T12:13:55.998167+00:00",
"cargo_exit": 0,
"pins": {
"tokens-f1d79df.log": "fdf02a809a7f8b82880003708b27f5737093b20913cde6a4ab62c36e61924ded",
"tokens-f1d79df.result.json": "04392c3ed68e63a0dedfd754b3ecac4fce0a1dde5b471a177af475794f14097b",
"tokens-f1d79df.inputs.json": "6a4c7e3c8d1e6edb7ad306c19abd05009ee410312eb34b68ec30d6408387967b",
"tokens-f1d79df.admission.json": "d1d32eb461614c6f6bbd86926d5b93313fa73277823f675eac93cce8eacfcee0"
}
},
"full": {
"start": "2026-09-13T12:14:34.666080+00:00",
"end": "2026-09-13T12:15:46.279177+00:00",
"cargo_exit": 101,
"pins": {
"full-f1d79df.log": "29a08cbfc02a83922f90c00f0b48f1aa403f93261457e65d29e3b9f46389dce9",
"full-f1d79df.result.json": "a1465abd64e2b3a29388f5da1912dcb87bfe9aed618c122bad557ff21c52c95b",
"full-f1d79df.inputs.json": "6a4c7e3c8d1e6edb7ad306c19abd05009ee410312eb34b68ec30d6408387967b",
"full-f1d79df.comparison.json": "5497ce589c3e8eea6158055af77da598aab1a7c2a92af30c7264bfd311ec89f4",
"full-f1d79df-comparison.py": "e88c0c630b05d0568b29301efdfb0c6e74135e4b04e27a1f71f27954b8809921"
}
},
"strict": {
"start": "2026-09-13T12:17:28.004362+00:00",
"end": "2026-09-13T12:24:00.805354+00:00",
"cargo_exit": 0,
"pins": {
"strict-f1d79df.log": "781fdc11e19af01eda6dac414a2cfacef8392524526418c3a74e7fceed279c35",
"strict-f1d79df.result.json": "f7f70de01aa41b1deca9c501b45ca460f348d4423a8b54c9fc3dbe05c3c5dd8c",
"strict-f1d79df.inputs.json": "6a4c7e3c8d1e6edb7ad306c19abd05009ee410312eb34b68ec30d6408387967b"
}
}
},
"test_artifact": {
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-checked-save-target-20260913\\debug\\deps\\oa_core-73987e0d7089bf1e.exe",
"bytes": 37146112,
"sha256": "786c5e6deec4fd6f00cc9954ca8190fa47c3c0bdfb0b44dccf032795155438af"
},
"scope": "Private staged S2c writer only. No public source8 activation, parser/include integration, S3/S4 completion, or native acceptance claim."
}
@@ -0,0 +1,49 @@
from pathlib import Path
import hashlib,json,re
if not __debug__: raise RuntimeError("Assertions required")
folder=Path("C:/Users/User/Documents/Git/ARCADIA-Studio/.local/analysis-source-gates-20260913")
root=folder.parent/"analysis-core-worktree-20260911"
source="f1d79df4979121335ed7b4ce4da84b2fca8a9ef4"
def read(name): return (folder/name).read_bytes()
def data(name): return json.loads(read(name))
def sha(name): return hashlib.sha256(read(name)).hexdigest()
baseline=data("full-a2a28f8.result.json")
assert sha("full-a2a28f8.result.json")=="81e171692b5c782bd234888e94468853b47a0e54375106e4cfce831e7b58e6c1"
assert sha("full-a2a28f8.log")=="9ae08b9a0157ebef587d36b40e5f7da8dd61b13bd5594bbae659f06c75e59044"
assert baseline["exit"]==101 and baseline["changed_inputs"]==[]
result=data("full-f1d79df.result.json")
assert result["source"]==source==result["head_after"]
assert result["exit"]==101 and result["changed_inputs"]==[]
assert result["command"]==["cargo","test","--locked","-p","oa-core","--lib","--","--test-threads=1"]
listing=data("list-f1d79df.admission.json")
manifest=data("full-f1d79df.inputs.json")
assert manifest==data("list-f1d79df.inputs.json")
assert manifest["source"]==source and len(manifest["inputs"])==534
for item in manifest["inputs"]:
raw=(root/item["path"]).read_bytes()
assert len(raw)==item["bytes"] and hashlib.sha256(raw).hexdigest()==item["sha256"],item["path"]
assert result["artifacts"]==[listing["artifact"]]
artifact=Path(listing["artifact"]["path"]).read_bytes()
assert hashlib.sha256(artifact).hexdigest()==listing["artifact"]["sha256"]
def rows(name):
log=read(name).decode()
parsed=re.findall(r"^test ([^\r\n]+) \.\.\. (ok|FAILED|ignored)\r?$",log,re.M)
assert len(parsed)==len(dict(parsed))
return log,dict(parsed)
old,oldrows=rows("full-a2a28f8.log")
log,actual=rows("full-f1d79df.log")
assert len(oldrows)==142
assert len(actual)==152 and set(actual)==set(listing["names"])
assert all(actual[name]==status for name,status in oldrows.items())
new=set(actual)-set(oldrows)
assert len(new)==10 and all(name.startswith("language::analysis_source::write::tests::") and actual[name]=="ok" for name in new)
failed=sorted(name for name,status in actual.items() if status=="FAILED")
assert len(failed)==16 and failed==sorted(name for name,status in oldrows.items() if status=="FAILED")
assert re.findall(r"^test result: FAILED\. (\d+) passed; (\d+) failed; (\d+) ignored; (\d+) measured; (\d+) filtered out;",log,re.M)==[("136","16","0","0","0")]
blocks=re.findall(r"^---- (\S+) stdout ----\r?\n(.*?)(?=^---- |^failures:)",log,re.M|re.S)
assert sorted(name for name,body in blocks)==failed
assert all('Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.' in body for name,body in blocks)
report={"source":source,"scope":"Full suite remains FAILED; exact known-failure comparison only, not a passing full-suite admission.","cargo_exit":101,"passed":136,"failed":16,"ignored":0,"listed_outcomes":152,"verified_inputs":534,"unchanged_baseline_outcomes":142,"new_writer_passes":sorted(new),"failures":failed,"pins":{name:sha(name) for name in ["full-f1d79df.log","full-f1d79df.result.json","full-f1d79df.inputs.json","list-f1d79df.admission.json","full-a2a28f8.log","full-a2a28f8.result.json"]}}
with (folder/"full-f1d79df.comparison.json").open("x",encoding="utf8") as output: json.dump(report,output,indent=2)
print(json.dumps({key:value for key,value in report.items() if key not in ["pins","failures","new_writer_passes"]}))
@@ -0,0 +1,49 @@
{
"source": "f1d79df4979121335ed7b4ce4da84b2fca8a9ef4",
"scope": "Full suite remains FAILED; exact known-failure comparison only, not a passing full-suite admission.",
"cargo_exit": 101,
"passed": 136,
"failed": 16,
"ignored": 0,
"listed_outcomes": 152,
"verified_inputs": 534,
"unchanged_baseline_outcomes": 142,
"new_writer_passes": [
"language::analysis_source::write::tests::all_expr_variants_and_precedence_preserve_exact_trees",
"language::analysis_source::write::tests::canonical_calls_use_callee_parameter_order_and_qualified_names",
"language::analysis_source::write::tests::canonical_strings_and_exact_literals_use_existing_encodings",
"language::analysis_source::write::tests::iterative_writer_preserves_width1024_and_empty_call_topology",
"language::analysis_source::write::tests::negate_override_roundtrip_preserves_depth128_within_frame256",
"language::analysis_source::write::tests::subtree_output_respects_parent_context_and_retained_delimiters",
"language::analysis_source::write::tests::typed_declaration_order_and_required_empty_values_are_canonical",
"language::analysis_source::write::tests::typed_oa_sa_canonical_roundtrips_match_independent_projects",
"language::analysis_source::write::tests::writer_limits_are_aggregate_exact_and_latched_without_partial_results",
"language::analysis_source::write::tests::writer_lookup_scope_shape_and_depth_failures_are_model_located"
],
"failures": [
"language::nesting_tests::checked_in_example_supports_cross_file_reparent_without_changing_allocations",
"language::nesting_tests::checked_in_nested_example_has_stable_ids_typed_exchanges_and_three_clear_views",
"language::nesting_tests::nested_elements_infer_only_parent_and_keep_typed_fields_and_allocations_explicit",
"language::nesting_tests::nested_fragment_id_stabilization_preserves_comments_and_indexes_real_bytes",
"language::nesting_tests::non_elements_includes_and_declarations_inside_typed_values_are_rejected",
"language::nesting_tests::normative_nested_ownership_example_compiles_as_a_source_fragment",
"source_files::transaction_tests::interrupted_publication_without_write_marker_never_rolls_back_external_matching_bytes",
"source_files::transaction_tests::interrupted_save_and_interrupted_recovery_can_both_be_resumed",
"source_files::transaction_tests::malformed_v2_write_marker_refuses_recovery_without_changing_source_bytes",
"source_files::transaction_tests::partial_save_failures_restore_every_original_and_write_entry_last",
"source_files::transaction_tests::recovery_before_any_write_accepts_v2_marker_and_keeps_v1_rollback_compatibility",
"source_files::transaction_tests::recovery_rechecks_external_changes_between_restorations",
"source_files::transaction_tests::recovery_rejects_untrusted_escape_paths_before_touching_files",
"source_files::transaction_tests::rollback_refuses_external_edits_even_in_an_unchanged_dependency",
"source_files::transaction_tests::rollback_removes_only_our_new_file_and_retains_detached_files",
"source_files::transaction_tests::unwritten_journal_never_rolls_back_a_completed_writer_with_identical_after_bytes"
],
"pins": {
"full-f1d79df.log": "29a08cbfc02a83922f90c00f0b48f1aa403f93261457e65d29e3b9f46389dce9",
"full-f1d79df.result.json": "a1465abd64e2b3a29388f5da1912dcb87bfe9aed618c122bad557ff21c52c95b",
"full-f1d79df.inputs.json": "6a4c7e3c8d1e6edb7ad306c19abd05009ee410312eb34b68ec30d6408387967b",
"list-f1d79df.admission.json": "b0469254ba86e172592647774abfc181942f4bdebf255058477ad2725a286f08",
"full-a2a28f8.log": "9ae08b9a0157ebef587d36b40e5f7da8dd61b13bd5594bbae659f06c75e59044",
"full-a2a28f8.result.json": "81e171692b5c782bd234888e94468853b47a0e54375106e4cfce831e7b58e6c1"
}
}
@@ -0,0 +1,262 @@
Finished `test` profile [unoptimized] target(s) in 2.28s
Running unittests src\lib.rs (C:/Users/User/Documents/Git/ARCADIA-Studio/.local/analysis-checked-save-target-20260913\debug\deps\oa_core-73987e0d7089bf1e.exe)
running 152 tests
test analysis::admission::meter_tests::call_key_scan_and_argument_lookup_have_separate_precharges ... ok
test analysis::admission::meter_tests::relation_subject_resolution_charges_each_hop_and_bounds_cycles ... ok
test analysis::admission::meter_tests::static_meter_exact_boundary_zero_charge_and_exhaustion_latch ... ok
test analysis::admission::meter_tests::wide_expression_children_are_charged_before_they_are_queued ... ok
test analysis::tests::affine_definitions_require_linear_matching_difference_and_valid_units ... ok
test analysis::tests::anonymous_dimension_algebra_and_affine_rules_share_pure_runtime_helpers ... ok
test analysis::tests::calculations_are_pure_parameters_are_scoped_and_calls_bind_exactly ... ok
test analysis::tests::complete_real_model_roundtrips_and_exposes_explicit_effective_bindings ... ok
test analysis::tests::deletion_requires_explicit_repairs_in_the_same_atomic_batch ... ok
test analysis::tests::empty_lists_require_context_and_lists_are_flat_bounded_homogeneous ... ok
test analysis::tests::equal_dimensions_do_not_create_nominal_compatibility ... ok
test analysis::tests::every_case_is_checked_and_baseline_edits_cannot_introduce_a_case_only_cycle ... ok
test analysis::tests::existing_transport_record_limits_count_definitions_parameters_overrides_and_nodes ... ok
test analysis::tests::frozen_schema7_upgrades_without_interpreting_descriptive_metadata ... ok
test analysis::tests::global_reidentify_rewrites_typed_domains_but_preserves_scoped_parameters ... ok
test analysis::tests::layers_subject_kinds_and_display_units_are_strict ... ok
test analysis::tests::logical_depth_and_call_depth_have_exact_boundaries ... ok
test analysis::tests::map_key_collision_is_rejected_before_any_reference_mutation ... ok
test analysis::tests::narrow_override_commands_preserve_missing_clear_and_history ... ok
test analysis::tests::static_types_do_not_evaluate_domain_conditions_or_check_truth ... ok
test analysis::tests::static_work_is_lowerable_deterministic_and_aggregated_across_cases ... ok
test analysis::tests::stored_closure_limit_aggregates_distinct_called_definitions ... ok
test analysis::tests::unsupported_transition_and_header_only_review_fail_explicitly ... ok
test analysis::tests::unused_branches_still_reject_wrong_types_references_and_cycles ... ok
test analysis::tests::wire_contract_rejects_unknown_imports_duplicates_missing_fields_and_noncanonical_exact ... ok
test analysis_numeric::tests::affine_conversion_rejects_a_wider_stage_even_when_the_final_value_would_fit ... ok
test analysis_numeric::tests::affine_point_and_difference_arithmetic_has_distinct_kinds ... ok
test analysis_numeric::tests::anonymous_product_then_quotient_closes_and_preserves_scaling ... ok
test analysis_numeric::tests::arithmetic_matches_independent_small_integer_oracle ... ok
test analysis_numeric::tests::both_reduced_component_overflows_are_reported ... ok
test analysis_numeric::tests::c1_expanded_call_witness_terminates_at_dynamic_limit ... ok
test analysis_numeric::tests::canonical_wire_rejects_both_component_noncanonical_forms ... ok
test analysis_numeric::tests::cross_products_cancel_before_reduced_component_limit ... ok
test analysis_numeric::tests::decimals_are_exact_and_source_ratios_reduce ... ok
test analysis_numeric::tests::dimensions_use_checked_seven_axis_integer_algebra ... ok
test analysis_numeric::tests::duration_unit_coordinates_are_exact_and_nominal ... ok
test analysis_numeric::tests::exact_accounting_boundary_and_terminal_failure_are_stable ... ok
test analysis_numeric::tests::full_8193_bit_sum_intermediate_can_reduce_to_admitted_value ... ok
test analysis_numeric::tests::full_independent_r7_packets_round_trip_as_literals_and_wire ... ok
test analysis_numeric::tests::literal_reader_does_not_fold_expression_unary_minus ... ok
test analysis_numeric::tests::literal_syntax_and_decimal_exponent_are_bounded ... ok
test analysis_numeric::tests::multiple_targets_share_one_aggregate_meter ... ok
test analysis_numeric::tests::nominal_kinds_survive_comparison_but_explicit_quotients_can_erase_dimension ... ok
test analysis_numeric::tests::numeric_precharge_precedes_big_integer_result_allocation ... ok
test analysis_numeric::tests::numerical_power_types_and_dimension_overflow_are_checked ... ok
test analysis_numeric::tests::powers_and_signs_have_explicit_domains ... ok
test analysis_numeric::tests::provisional_limits_and_effective_limits_round_trip ... ok
test analysis_numeric::tests::r6_anonymous_compound_energy_needs_one_outer_assertion ... ok
test analysis_numeric::tests::serde_uses_closed_canonical_string_wire ... ok
test analysis_numeric::tests::wire_rejects_4097_bits_before_gcd_can_reduce_them ... ok
test analysis_numeric::tests::zero_cost_and_maximum_reservation_do_not_underflow_or_reactivate ... ok
test language::analysis_source::declarations::tests::borrowed_cursor_preserves_full_file_spans_and_does_not_rescan_fields ... ok
test language::analysis_source::declarations::tests::declaration_budgets_share_literals_types_references_and_failure_state ... ok
test language::analysis_source::declarations::tests::declaration_frames_restore_the_callers_inherited_context ... ok
test language::analysis_source::declarations::tests::empty_unbound_and_all_scalar_list_types_are_explicit_valid_syntax ... ok
test language::analysis_source::declarations::tests::inherited_version_root_and_short_word_contracts_do_not_enable_public8 ... ok
test language::analysis_source::declarations::tests::missing_id_metadata_is_stable_and_parameter_ids_are_owner_scoped ... ok
test language::analysis_source::declarations::tests::missing_required_fields_and_unknown_or_duplicate_entries_reject_locally ... ok
test language::analysis_source::declarations::tests::required_declarations_have_independent_typed_body_and_header_oracles ... ok
test language::analysis_source::declarations::tests::typed_brace_frames_have_exact_zero_one_two_boundaries ... ok
test language::analysis_source::declarations::tests::typed_frame_budget_and_truncated_declaration_cleanup_have_nearby_successes ... ok
test language::analysis_source::lower::tests::affine_kinds_optional_fields_list_signatures_and_unused_unbound_definitions_survive ... ok
test language::analysis_source::lower::tests::all_thirteen_expression_variants_lower_to_real_typed_values_and_admit ... ok
test language::analysis_source::lower::tests::call_sites_and_parameter_scopes_preserve_distinct_original_occurrences ... ok
test language::analysis_source::lower::tests::duplicate_file_keys_and_exhausted_shared_budget_cannot_enter_lowering ... ok
test language::analysis_source::lower::tests::duplicate_global_aliases_and_ids_fail_before_body_resolution ... ok
test language::analysis_source::lower::tests::forward_cross_unit_resolution_keeps_original_offsets_and_shared_work ... ok
test language::analysis_source::lower::tests::iterative_lowering_preserves_128_deep_and_1024_wide_accepted_expressions ... ok
test language::analysis_source::lower::tests::lowering_phase_bounds_count_ordinary_globals_and_scoped_parameters_together ... ok
test language::analysis_source::lower::tests::missing_ids_require_stabilization_without_uuid_or_budget_churn ... ok
test language::analysis_source::lower::tests::ordinary_non_element_categories_are_collected_and_never_property_fallbacks ... ok
test language::analysis_source::lower::tests::staged_oa_and_sa_lowering_match_complete_independent_17_uuid_oracles ... ok
test language::analysis_source::lower::tests::structural_lowering_defers_type_purity_layer_and_argument_sets_to_admission ... ok
test language::analysis_source::lower::tests::typed_reference_domains_unknown_names_and_parameter_scope_fail_at_tokens ... ok
test language::analysis_source::tests::budgets_aggregate_across_fragments_and_latch_numeric_exhaustion ... ok
test language::analysis_source::tests::byte_token_frame_logical_and_list_boundaries_have_nearby_successes ... ok
test language::analysis_source::tests::every_expression_shape_and_exact_constructor_arity_is_represented ... ok
test language::analysis_source::tests::flat_binary_depth_and_malformed_constructor_retain_bounded_completed_children ... ok
test language::analysis_source::tests::mixed_precedence_and_grouping_have_independent_expected_child_topology ... ok
test language::analysis_source::tests::partial_wide_and_deep_input_cleanup_does_not_poison_a_fresh_parse ... ok
test language::analysis_source::tests::public_source_headers_and_existing_numeric_token_controls_are_unchanged ... ok
test language::analysis_source::tests::raw_numeric_lexing_preserves_exact_atoms_and_operator_boundaries ... ok
test language::analysis_source::tests::repeated_call_argument_occurrences_have_distinct_original_spans ... ok
test language::analysis_source::tests::significant_ratio_and_quantity_trivia_preserve_original_spans ... ok
test language::analysis_source::tests::unary_literals_precedence_and_comparison_children_keep_distinct_trees ... ok
test language::analysis_source::write::tests::all_expr_variants_and_precedence_preserve_exact_trees ... ok
test language::analysis_source::write::tests::canonical_calls_use_callee_parameter_order_and_qualified_names ... ok
test language::analysis_source::write::tests::canonical_strings_and_exact_literals_use_existing_encodings ... ok
test language::analysis_source::write::tests::iterative_writer_preserves_width1024_and_empty_call_topology ... ok
test language::analysis_source::write::tests::negate_override_roundtrip_preserves_depth128_within_frame256 ... ok
test language::analysis_source::write::tests::subtree_output_respects_parent_context_and_retained_delimiters ... ok
test language::analysis_source::write::tests::typed_declaration_order_and_required_empty_values_are_canonical ... ok
test language::analysis_source::write::tests::typed_oa_sa_canonical_roundtrips_match_independent_projects ... ok
test language::analysis_source::write::tests::writer_limits_are_aggregate_exact_and_latched_without_partial_results ... ok
test language::analysis_source::write::tests::writer_lookup_scope_shape_and_depth_failures_are_model_located ... ok
test language::nesting_tests::checked_in_example_supports_cross_file_reparent_without_changing_allocations ... FAILED
test language::nesting_tests::checked_in_nested_example_has_stable_ids_typed_exchanges_and_three_clear_views ... FAILED
test language::nesting_tests::containment_validation_rejects_allocation_like_or_cross_layer_nesting ... ok
test language::nesting_tests::declarations_are_preorder_occurrences_with_real_own_field_and_body_spans ... ok
test language::nesting_tests::deep_declaration_parsing_and_positions_use_a_bounded_rust_stack ... ok
test language::nesting_tests::matching_explicit_parent_is_accepted_but_none_or_another_owner_is_located ... ok
test language::nesting_tests::nested_aliases_remain_global_and_forward_references_remain_legal ... ok
test language::nesting_tests::nested_elements_infer_only_parent_and_keep_typed_fields_and_allocations_explicit ... FAILED
test language::nesting_tests::nested_fragment_id_stabilization_preserves_comments_and_indexes_real_bytes ... FAILED
test language::nesting_tests::nested_record_admission_precedes_resolution_and_typed_depth_stays_bounded ... ok
test language::nesting_tests::non_elements_includes_and_declarations_inside_typed_values_are_rejected ... FAILED
test language::nesting_tests::normative_nested_ownership_example_compiles_as_a_source_fragment ... FAILED
test language::nesting_tests::syntax_edit_positions_retain_duplicate_identity_occurrences_during_a_command ... ok
test language::nesting_tests::tolerant_nested_analysis_retains_closed_children_before_an_unfinished_sibling ... ok
test language::raw_tokens::tests::legacy_adapter_retains_authored_numeric_operator_and_trivia_tokens ... ok
test language::source3_bridge::tests::frozen_source3_and_json3_have_complete_model_and_migration_parity ... ok
test language::source3_bridge::tests::frozen_wire_still_rejects_new_unknown_and_duplicate_fields ... ok
test language::source3_bridge::tests::old_review_prose_survives_without_admitting_semantic_fields ... ok
test language::source3_bridge::tests::scratch_bridge_refuses_to_discard_current_only_data ... ok
test persistence::json_codec::tests::codec_lifecycle_subprocess ... ok
test persistence::json_codec::tests::json_profile_does_not_contract_declared_cli_collection_counts ... ok
test persistence::json_codec::tests::production_save_always_reopens_with_its_reader_profile ... ok
test persistence::json_codec::tests::remote_serde_keeps_each_existing_expression_variant ... ok
test persistence::json_codec::tests::resource_preflight_has_exact_lowerable_boundaries ... ok
test persistence::json_codec::tests::scanner_is_not_a_parallel_json_grammar ... ok
test persistence::source_save_tests::equal_project_from_generated_legacy_source_still_rejects_migration ... ok
test persistence::source_save_tests::generated_source_admission_checks_final_newline_under_the_effective_byte_limit ... ok
test persistence::source_save_tests::malformed_generated_source_rejects_before_any_filesystem_staging ... ok
test persistence::source_save_tests::parseable_source_omitting_a_definition_cannot_replace_the_whole_project ... ok
test semantic::catalog::coverage::every_current_payload_field_has_a_closed_typed_capture_and_write_scope ... ok
test source_files::transaction_tests::interrupted_publication_without_write_marker_never_rolls_back_external_matching_bytes ... FAILED
test source_files::transaction_tests::interrupted_save_and_interrupted_recovery_can_both_be_resumed ... FAILED
test source_files::transaction_tests::journal_publication_does_not_replace_empty_target_created_after_precheck ... ok
test source_files::transaction_tests::journal_publication_exhaustion_and_permanent_errors_keep_stage_and_report_original_path ... ok
test source_files::transaction_tests::journal_publication_never_replaces_another_journal_that_appears_during_retry ... ok
test source_files::transaction_tests::journal_publication_retries_only_transient_windows_errors_before_transferring_ownership ... ok
test source_files::transaction_tests::malformed_v2_write_marker_refuses_recovery_without_changing_source_bytes ... FAILED
test source_files::transaction_tests::partial_save_failures_restore_every_original_and_write_entry_last ... FAILED
test source_files::transaction_tests::recovery_before_any_write_accepts_v2_marker_and_keeps_v1_rollback_compatibility ... FAILED
test source_files::transaction_tests::recovery_rechecks_external_changes_between_restorations ... FAILED
test source_files::transaction_tests::recovery_rejects_untrusted_escape_paths_before_touching_files ... FAILED
test source_files::transaction_tests::rollback_refuses_external_edits_even_in_an_unchanged_dependency ... FAILED
test source_files::transaction_tests::rollback_removes_only_our_new_file_and_retains_detached_files ... FAILED
test source_files::transaction_tests::unwritten_journal_never_rolls_back_a_completed_writer_with_identical_after_bytes ... FAILED
test topology_context::analysis::tests::edge_work_budget_stops_repeated_expansion_not_just_output_storage ... ok
test topology_context::analysis::tests::exact_edge_budget_includes_reference_boundaries_and_node_abort_has_no_bypass ... ok
test topology_context::analysis::tests::unresolved_authored_edges_consume_work_budget_without_stored_output ... ok
test validation::coverage::tests::malformed_self_reuse_is_bounded_even_without_structural_gate ... ok
test view_options::tests::global_behavior_coverage_and_chosen_context_are_independent_intersecting_predicates ... ok
test view_options::tests::hidden_identity_survives_label_and_category_changes_without_mutating_the_model ... ok
test view_options::tests::no_lines_and_explicit_trace_selection_include_actual_trace_identities ... ok
test view_options::tests::omission_reasons_distinguish_missing_placements_folded_edges_and_explicit_hides ... ok
test view_options::tests::persisted_empty_selectors_and_lifecycle_never_widen_to_all ... ok
test view_options::tests::reusable_sequences_and_nested_scenarios_use_listed_contributions_in_both_layers ... ok
test view_options::tests::separate_category_families_obey_all_any_empty_and_union_truth_table ... ok
test view_options::tests::traceability_defaults_preserve_both_layers_and_explicit_selectors_still_apply ... ok
test view_options::tests::wrong_family_layer_and_unknown_references_reject_and_draft_filters_fail_closed ... ok
failures:
---- language::nesting_tests::checked_in_example_supports_cross_file_reparent_without_changing_allocations stdout ----
thread 'language::nesting_tests::checked_in_example_supports_cross_file_reparent_without_changing_allocations' (9640) panicked at crates\oa-core\src\language_nesting_tests.rs:502:69:
called `Result::unwrap()` on an `Err` value: [SourceDiagnostic { path: "project.arcadia", diagnostic: Diagnostic { severity: Error, code: "invalid_source", object_id: None, field: None, line: 1, column: 9, message: "Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.", span: Span { start: 8, end: 9 } }, related: [] }]
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
---- language::nesting_tests::checked_in_nested_example_has_stable_ids_typed_exchanges_and_three_clear_views stdout ----
thread 'language::nesting_tests::checked_in_nested_example_has_stable_ids_typed_exchanges_and_three_clear_views' (6736) panicked at crates\oa-core\src\language_nesting_tests.rs:439:69:
called `Result::unwrap()` on an `Err` value: [SourceDiagnostic { path: "project.arcadia", diagnostic: Diagnostic { severity: Error, code: "invalid_source", object_id: None, field: None, line: 1, column: 9, message: "Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.", span: Span { start: 8, end: 9 } }, related: [] }]
---- language::nesting_tests::nested_elements_infer_only_parent_and_keep_typed_fields_and_allocations_explicit stdout ----
thread 'language::nesting_tests::nested_elements_infer_only_parent_and_keep_typed_fields_and_allocations_explicit' (3600) panicked at crates\oa-core\src\language_nesting_tests.rs:63:41:
called `Result::unwrap()` on an `Err` value: [Diagnostic { severity: Error, code: "invalid_source", object_id: None, field: None, line: 1, column: 9, message: "Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.", span: Span { start: 8, end: 9 } }]
---- language::nesting_tests::nested_fragment_id_stabilization_preserves_comments_and_indexes_real_bytes stdout ----
thread 'language::nesting_tests::nested_fragment_id_stabilization_preserves_comments_and_indexes_real_bytes' (10136) panicked at crates\oa-core\src\language_nesting_tests.rs:188:72:
called `Result::unwrap()` on an `Err` value: [SourceDiagnostic { path: "project.arcadia", diagnostic: Diagnostic { severity: Error, code: "invalid_source", object_id: None, field: None, line: 1, column: 9, message: "Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.", span: Span { start: 8, end: 9 } }, related: [] }]
---- language::nesting_tests::non_elements_includes_and_declarations_inside_typed_values_are_rejected stdout ----
thread 'language::nesting_tests::non_elements_includes_and_declarations_inside_typed_values_are_rejected' (10784) panicked at crates\oa-core\src\language_nesting_tests.rs:124:38:
called `Result::unwrap()` on an `Err` value: [Diagnostic { severity: Error, code: "invalid_source", object_id: None, field: None, line: 1, column: 9, message: "Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.", span: Span { start: 8, end: 9 } }]
---- language::nesting_tests::normative_nested_ownership_example_compiles_as_a_source_fragment stdout ----
thread 'language::nesting_tests::normative_nested_ownership_example_compiles_as_a_source_fragment' (10216) panicked at crates\oa-core\src\language_nesting_tests.rs:362:6:
called `Result::unwrap()` on an `Err` value: [SourceDiagnostic { path: "project.arcadia", diagnostic: Diagnostic { severity: Error, code: "invalid_source", object_id: None, field: None, line: 1, column: 9, message: "Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.", span: Span { start: 8, end: 9 } }, related: [] }]
---- source_files::transaction_tests::interrupted_publication_without_write_marker_never_rolls_back_external_matching_bytes stdout ----
thread 'source_files::transaction_tests::interrupted_publication_without_write_marker_never_rolls_back_external_matching_bytes' (4952) panicked at crates\oa-core\src\source_files.rs:1560:84:
called `Result::unwrap()` on an `Err` value: [SourceDiagnostic { path: "project.arcadia", diagnostic: Diagnostic { severity: Error, code: "invalid_source", object_id: None, field: None, line: 1, column: 9, message: "Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.", span: Span { start: 8, end: 9 } }, related: [] }]
---- source_files::transaction_tests::interrupted_save_and_interrupted_recovery_can_both_be_resumed stdout ----
thread 'source_files::transaction_tests::interrupted_save_and_interrupted_recovery_can_both_be_resumed' (5328) panicked at crates\oa-core\src\source_files.rs:1560:84:
called `Result::unwrap()` on an `Err` value: [SourceDiagnostic { path: "project.arcadia", diagnostic: Diagnostic { severity: Error, code: "invalid_source", object_id: None, field: None, line: 1, column: 9, message: "Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.", span: Span { start: 8, end: 9 } }, related: [] }]
---- source_files::transaction_tests::malformed_v2_write_marker_refuses_recovery_without_changing_source_bytes stdout ----
thread 'source_files::transaction_tests::malformed_v2_write_marker_refuses_recovery_without_changing_source_bytes' (9780) panicked at crates\oa-core\src\source_files.rs:1560:84:
called `Result::unwrap()` on an `Err` value: [SourceDiagnostic { path: "project.arcadia", diagnostic: Diagnostic { severity: Error, code: "invalid_source", object_id: None, field: None, line: 1, column: 9, message: "Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.", span: Span { start: 8, end: 9 } }, related: [] }]
---- source_files::transaction_tests::partial_save_failures_restore_every_original_and_write_entry_last stdout ----
thread 'source_files::transaction_tests::partial_save_failures_restore_every_original_and_write_entry_last' (4624) panicked at crates\oa-core\src\source_files.rs:1560:84:
called `Result::unwrap()` on an `Err` value: [SourceDiagnostic { path: "project.arcadia", diagnostic: Diagnostic { severity: Error, code: "invalid_source", object_id: None, field: None, line: 1, column: 9, message: "Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.", span: Span { start: 8, end: 9 } }, related: [] }]
---- source_files::transaction_tests::recovery_before_any_write_accepts_v2_marker_and_keeps_v1_rollback_compatibility stdout ----
thread 'source_files::transaction_tests::recovery_before_any_write_accepts_v2_marker_and_keeps_v1_rollback_compatibility' (2044) panicked at crates\oa-core\src\source_files.rs:1560:84:
called `Result::unwrap()` on an `Err` value: [SourceDiagnostic { path: "project.arcadia", diagnostic: Diagnostic { severity: Error, code: "invalid_source", object_id: None, field: None, line: 1, column: 9, message: "Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.", span: Span { start: 8, end: 9 } }, related: [] }]
---- source_files::transaction_tests::recovery_rechecks_external_changes_between_restorations stdout ----
thread 'source_files::transaction_tests::recovery_rechecks_external_changes_between_restorations' (10580) panicked at crates\oa-core\src\source_files.rs:1560:84:
called `Result::unwrap()` on an `Err` value: [SourceDiagnostic { path: "project.arcadia", diagnostic: Diagnostic { severity: Error, code: "invalid_source", object_id: None, field: None, line: 1, column: 9, message: "Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.", span: Span { start: 8, end: 9 } }, related: [] }]
---- source_files::transaction_tests::recovery_rejects_untrusted_escape_paths_before_touching_files stdout ----
thread 'source_files::transaction_tests::recovery_rejects_untrusted_escape_paths_before_touching_files' (8132) panicked at crates\oa-core\src\source_files.rs:1560:84:
called `Result::unwrap()` on an `Err` value: [SourceDiagnostic { path: "project.arcadia", diagnostic: Diagnostic { severity: Error, code: "invalid_source", object_id: None, field: None, line: 1, column: 9, message: "Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.", span: Span { start: 8, end: 9 } }, related: [] }]
---- source_files::transaction_tests::rollback_refuses_external_edits_even_in_an_unchanged_dependency stdout ----
thread 'source_files::transaction_tests::rollback_refuses_external_edits_even_in_an_unchanged_dependency' (11136) panicked at crates\oa-core\src\source_files.rs:1560:84:
called `Result::unwrap()` on an `Err` value: [SourceDiagnostic { path: "project.arcadia", diagnostic: Diagnostic { severity: Error, code: "invalid_source", object_id: None, field: None, line: 1, column: 9, message: "Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.", span: Span { start: 8, end: 9 } }, related: [] }]
---- source_files::transaction_tests::rollback_removes_only_our_new_file_and_retains_detached_files stdout ----
thread 'source_files::transaction_tests::rollback_removes_only_our_new_file_and_retains_detached_files' (9388) panicked at crates\oa-core\src\source_files.rs:1560:84:
called `Result::unwrap()` on an `Err` value: [SourceDiagnostic { path: "project.arcadia", diagnostic: Diagnostic { severity: Error, code: "invalid_source", object_id: None, field: None, line: 1, column: 9, message: "Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.", span: Span { start: 8, end: 9 } }, related: [] }]
---- source_files::transaction_tests::unwritten_journal_never_rolls_back_a_completed_writer_with_identical_after_bytes stdout ----
thread 'source_files::transaction_tests::unwritten_journal_never_rolls_back_a_completed_writer_with_identical_after_bytes' (10020) panicked at crates\oa-core\src\source_files.rs:1560:84:
called `Result::unwrap()` on an `Err` value: [SourceDiagnostic { path: "project.arcadia", diagnostic: Diagnostic { severity: Error, code: "invalid_source", object_id: None, field: None, line: 1, column: 9, message: "Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.", span: Span { start: 8, end: 9 } }, related: [] }]
failures:
language::nesting_tests::checked_in_example_supports_cross_file_reparent_without_changing_allocations
language::nesting_tests::checked_in_nested_example_has_stable_ids_typed_exchanges_and_three_clear_views
language::nesting_tests::nested_elements_infer_only_parent_and_keep_typed_fields_and_allocations_explicit
language::nesting_tests::nested_fragment_id_stabilization_preserves_comments_and_indexes_real_bytes
language::nesting_tests::non_elements_includes_and_declarations_inside_typed_values_are_rejected
language::nesting_tests::normative_nested_ownership_example_compiles_as_a_source_fragment
source_files::transaction_tests::interrupted_publication_without_write_marker_never_rolls_back_external_matching_bytes
source_files::transaction_tests::interrupted_save_and_interrupted_recovery_can_both_be_resumed
source_files::transaction_tests::malformed_v2_write_marker_refuses_recovery_without_changing_source_bytes
source_files::transaction_tests::partial_save_failures_restore_every_original_and_write_entry_last
source_files::transaction_tests::recovery_before_any_write_accepts_v2_marker_and_keeps_v1_rollback_compatibility
source_files::transaction_tests::recovery_rechecks_external_changes_between_restorations
source_files::transaction_tests::recovery_rejects_untrusted_escape_paths_before_touching_files
source_files::transaction_tests::rollback_refuses_external_edits_even_in_an_unchanged_dependency
source_files::transaction_tests::rollback_removes_only_our_new_file_and_retains_detached_files
source_files::transaction_tests::unwritten_journal_never_rolls_back_a_completed_writer_with_identical_after_bytes
test result: FAILED. 136 passed; 16 failed; 0 ignored; 0 measured; 0 filtered out; finished in 68.50s
error: test failed, to rerun pass `-p oa-core --lib`
@@ -0,0 +1,35 @@
{
"source": "f1d79df4979121335ed7b4ce4da84b2fca8a9ef4",
"head_after": "f1d79df4979121335ed7b4ce4da84b2fca8a9ef4",
"start": "2026-09-13T12:14:34.666080+00:00",
"end": "2026-09-13T12:15:46.279177+00:00",
"exit": 101,
"command": [
"cargo",
"test",
"--locked",
"-p",
"oa-core",
"--lib",
"--",
"--test-threads=1"
],
"inputs": "full-f1d79df.inputs.json",
"changed_inputs": [],
"artifacts": [
{
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-checked-save-target-20260913\\debug\\deps\\oa_core-73987e0d7089bf1e.exe",
"bytes": 37146112,
"sha256": "786c5e6deec4fd6f00cc9954ca8190fa47c3c0bdfb0b44dccf032795155438af"
}
],
"environment": {
"CARGO_TARGET_DIR": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/analysis-checked-save-target-20260913",
"CARGO_BUILD_JOBS": "1",
"CARGO_HOME": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/toolchain/cargo",
"RUSTUP_HOME": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/toolchain/rustup"
},
"listing_members": [],
"listing_count": 0,
"listing_scope": "Names emitted by this actual Cargo test listing; focused/full runtime results have their own receipts."
}
@@ -0,0 +1,186 @@
{
"source": "f1d79df4979121335ed7b4ce4da84b2fca8a9ef4",
"mode": "list",
"selector": null,
"artifact": {
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-checked-save-target-20260913\\debug\\deps\\oa_core-73987e0d7089bf1e.exe",
"bytes": 37146112,
"sha256": "786c5e6deec4fd6f00cc9954ca8190fa47c3c0bdfb0b44dccf032795155438af"
},
"names": [
"analysis::admission::meter_tests::call_key_scan_and_argument_lookup_have_separate_precharges",
"analysis::admission::meter_tests::relation_subject_resolution_charges_each_hop_and_bounds_cycles",
"analysis::admission::meter_tests::static_meter_exact_boundary_zero_charge_and_exhaustion_latch",
"analysis::admission::meter_tests::wide_expression_children_are_charged_before_they_are_queued",
"analysis::tests::affine_definitions_require_linear_matching_difference_and_valid_units",
"analysis::tests::anonymous_dimension_algebra_and_affine_rules_share_pure_runtime_helpers",
"analysis::tests::calculations_are_pure_parameters_are_scoped_and_calls_bind_exactly",
"analysis::tests::complete_real_model_roundtrips_and_exposes_explicit_effective_bindings",
"analysis::tests::deletion_requires_explicit_repairs_in_the_same_atomic_batch",
"analysis::tests::empty_lists_require_context_and_lists_are_flat_bounded_homogeneous",
"analysis::tests::equal_dimensions_do_not_create_nominal_compatibility",
"analysis::tests::every_case_is_checked_and_baseline_edits_cannot_introduce_a_case_only_cycle",
"analysis::tests::existing_transport_record_limits_count_definitions_parameters_overrides_and_nodes",
"analysis::tests::frozen_schema7_upgrades_without_interpreting_descriptive_metadata",
"analysis::tests::global_reidentify_rewrites_typed_domains_but_preserves_scoped_parameters",
"analysis::tests::layers_subject_kinds_and_display_units_are_strict",
"analysis::tests::logical_depth_and_call_depth_have_exact_boundaries",
"analysis::tests::map_key_collision_is_rejected_before_any_reference_mutation",
"analysis::tests::narrow_override_commands_preserve_missing_clear_and_history",
"analysis::tests::static_types_do_not_evaluate_domain_conditions_or_check_truth",
"analysis::tests::static_work_is_lowerable_deterministic_and_aggregated_across_cases",
"analysis::tests::stored_closure_limit_aggregates_distinct_called_definitions",
"analysis::tests::unsupported_transition_and_header_only_review_fail_explicitly",
"analysis::tests::unused_branches_still_reject_wrong_types_references_and_cycles",
"analysis::tests::wire_contract_rejects_unknown_imports_duplicates_missing_fields_and_noncanonical_exact",
"analysis_numeric::tests::affine_conversion_rejects_a_wider_stage_even_when_the_final_value_would_fit",
"analysis_numeric::tests::affine_point_and_difference_arithmetic_has_distinct_kinds",
"analysis_numeric::tests::anonymous_product_then_quotient_closes_and_preserves_scaling",
"analysis_numeric::tests::arithmetic_matches_independent_small_integer_oracle",
"analysis_numeric::tests::both_reduced_component_overflows_are_reported",
"analysis_numeric::tests::c1_expanded_call_witness_terminates_at_dynamic_limit",
"analysis_numeric::tests::canonical_wire_rejects_both_component_noncanonical_forms",
"analysis_numeric::tests::cross_products_cancel_before_reduced_component_limit",
"analysis_numeric::tests::decimals_are_exact_and_source_ratios_reduce",
"analysis_numeric::tests::dimensions_use_checked_seven_axis_integer_algebra",
"analysis_numeric::tests::duration_unit_coordinates_are_exact_and_nominal",
"analysis_numeric::tests::exact_accounting_boundary_and_terminal_failure_are_stable",
"analysis_numeric::tests::full_8193_bit_sum_intermediate_can_reduce_to_admitted_value",
"analysis_numeric::tests::full_independent_r7_packets_round_trip_as_literals_and_wire",
"analysis_numeric::tests::literal_reader_does_not_fold_expression_unary_minus",
"analysis_numeric::tests::literal_syntax_and_decimal_exponent_are_bounded",
"analysis_numeric::tests::multiple_targets_share_one_aggregate_meter",
"analysis_numeric::tests::nominal_kinds_survive_comparison_but_explicit_quotients_can_erase_dimension",
"analysis_numeric::tests::numeric_precharge_precedes_big_integer_result_allocation",
"analysis_numeric::tests::numerical_power_types_and_dimension_overflow_are_checked",
"analysis_numeric::tests::powers_and_signs_have_explicit_domains",
"analysis_numeric::tests::provisional_limits_and_effective_limits_round_trip",
"analysis_numeric::tests::r6_anonymous_compound_energy_needs_one_outer_assertion",
"analysis_numeric::tests::serde_uses_closed_canonical_string_wire",
"analysis_numeric::tests::wire_rejects_4097_bits_before_gcd_can_reduce_them",
"analysis_numeric::tests::zero_cost_and_maximum_reservation_do_not_underflow_or_reactivate",
"language::analysis_source::declarations::tests::borrowed_cursor_preserves_full_file_spans_and_does_not_rescan_fields",
"language::analysis_source::declarations::tests::declaration_budgets_share_literals_types_references_and_failure_state",
"language::analysis_source::declarations::tests::declaration_frames_restore_the_callers_inherited_context",
"language::analysis_source::declarations::tests::empty_unbound_and_all_scalar_list_types_are_explicit_valid_syntax",
"language::analysis_source::declarations::tests::inherited_version_root_and_short_word_contracts_do_not_enable_public8",
"language::analysis_source::declarations::tests::missing_id_metadata_is_stable_and_parameter_ids_are_owner_scoped",
"language::analysis_source::declarations::tests::missing_required_fields_and_unknown_or_duplicate_entries_reject_locally",
"language::analysis_source::declarations::tests::required_declarations_have_independent_typed_body_and_header_oracles",
"language::analysis_source::declarations::tests::typed_brace_frames_have_exact_zero_one_two_boundaries",
"language::analysis_source::declarations::tests::typed_frame_budget_and_truncated_declaration_cleanup_have_nearby_successes",
"language::analysis_source::lower::tests::affine_kinds_optional_fields_list_signatures_and_unused_unbound_definitions_survive",
"language::analysis_source::lower::tests::all_thirteen_expression_variants_lower_to_real_typed_values_and_admit",
"language::analysis_source::lower::tests::call_sites_and_parameter_scopes_preserve_distinct_original_occurrences",
"language::analysis_source::lower::tests::duplicate_file_keys_and_exhausted_shared_budget_cannot_enter_lowering",
"language::analysis_source::lower::tests::duplicate_global_aliases_and_ids_fail_before_body_resolution",
"language::analysis_source::lower::tests::forward_cross_unit_resolution_keeps_original_offsets_and_shared_work",
"language::analysis_source::lower::tests::iterative_lowering_preserves_128_deep_and_1024_wide_accepted_expressions",
"language::analysis_source::lower::tests::lowering_phase_bounds_count_ordinary_globals_and_scoped_parameters_together",
"language::analysis_source::lower::tests::missing_ids_require_stabilization_without_uuid_or_budget_churn",
"language::analysis_source::lower::tests::ordinary_non_element_categories_are_collected_and_never_property_fallbacks",
"language::analysis_source::lower::tests::staged_oa_and_sa_lowering_match_complete_independent_17_uuid_oracles",
"language::analysis_source::lower::tests::structural_lowering_defers_type_purity_layer_and_argument_sets_to_admission",
"language::analysis_source::lower::tests::typed_reference_domains_unknown_names_and_parameter_scope_fail_at_tokens",
"language::analysis_source::tests::budgets_aggregate_across_fragments_and_latch_numeric_exhaustion",
"language::analysis_source::tests::byte_token_frame_logical_and_list_boundaries_have_nearby_successes",
"language::analysis_source::tests::every_expression_shape_and_exact_constructor_arity_is_represented",
"language::analysis_source::tests::flat_binary_depth_and_malformed_constructor_retain_bounded_completed_children",
"language::analysis_source::tests::mixed_precedence_and_grouping_have_independent_expected_child_topology",
"language::analysis_source::tests::partial_wide_and_deep_input_cleanup_does_not_poison_a_fresh_parse",
"language::analysis_source::tests::public_source_headers_and_existing_numeric_token_controls_are_unchanged",
"language::analysis_source::tests::raw_numeric_lexing_preserves_exact_atoms_and_operator_boundaries",
"language::analysis_source::tests::repeated_call_argument_occurrences_have_distinct_original_spans",
"language::analysis_source::tests::significant_ratio_and_quantity_trivia_preserve_original_spans",
"language::analysis_source::tests::unary_literals_precedence_and_comparison_children_keep_distinct_trees",
"language::analysis_source::write::tests::all_expr_variants_and_precedence_preserve_exact_trees",
"language::analysis_source::write::tests::canonical_calls_use_callee_parameter_order_and_qualified_names",
"language::analysis_source::write::tests::canonical_strings_and_exact_literals_use_existing_encodings",
"language::analysis_source::write::tests::iterative_writer_preserves_width1024_and_empty_call_topology",
"language::analysis_source::write::tests::negate_override_roundtrip_preserves_depth128_within_frame256",
"language::analysis_source::write::tests::subtree_output_respects_parent_context_and_retained_delimiters",
"language::analysis_source::write::tests::typed_declaration_order_and_required_empty_values_are_canonical",
"language::analysis_source::write::tests::typed_oa_sa_canonical_roundtrips_match_independent_projects",
"language::analysis_source::write::tests::writer_limits_are_aggregate_exact_and_latched_without_partial_results",
"language::analysis_source::write::tests::writer_lookup_scope_shape_and_depth_failures_are_model_located",
"language::nesting_tests::checked_in_example_supports_cross_file_reparent_without_changing_allocations",
"language::nesting_tests::checked_in_nested_example_has_stable_ids_typed_exchanges_and_three_clear_views",
"language::nesting_tests::containment_validation_rejects_allocation_like_or_cross_layer_nesting",
"language::nesting_tests::declarations_are_preorder_occurrences_with_real_own_field_and_body_spans",
"language::nesting_tests::deep_declaration_parsing_and_positions_use_a_bounded_rust_stack",
"language::nesting_tests::matching_explicit_parent_is_accepted_but_none_or_another_owner_is_located",
"language::nesting_tests::nested_aliases_remain_global_and_forward_references_remain_legal",
"language::nesting_tests::nested_elements_infer_only_parent_and_keep_typed_fields_and_allocations_explicit",
"language::nesting_tests::nested_fragment_id_stabilization_preserves_comments_and_indexes_real_bytes",
"language::nesting_tests::nested_record_admission_precedes_resolution_and_typed_depth_stays_bounded",
"language::nesting_tests::non_elements_includes_and_declarations_inside_typed_values_are_rejected",
"language::nesting_tests::normative_nested_ownership_example_compiles_as_a_source_fragment",
"language::nesting_tests::syntax_edit_positions_retain_duplicate_identity_occurrences_during_a_command",
"language::nesting_tests::tolerant_nested_analysis_retains_closed_children_before_an_unfinished_sibling",
"language::raw_tokens::tests::legacy_adapter_retains_authored_numeric_operator_and_trivia_tokens",
"language::source3_bridge::tests::frozen_source3_and_json3_have_complete_model_and_migration_parity",
"language::source3_bridge::tests::frozen_wire_still_rejects_new_unknown_and_duplicate_fields",
"language::source3_bridge::tests::old_review_prose_survives_without_admitting_semantic_fields",
"language::source3_bridge::tests::scratch_bridge_refuses_to_discard_current_only_data",
"persistence::json_codec::tests::codec_lifecycle_subprocess",
"persistence::json_codec::tests::json_profile_does_not_contract_declared_cli_collection_counts",
"persistence::json_codec::tests::production_save_always_reopens_with_its_reader_profile",
"persistence::json_codec::tests::remote_serde_keeps_each_existing_expression_variant",
"persistence::json_codec::tests::resource_preflight_has_exact_lowerable_boundaries",
"persistence::json_codec::tests::scanner_is_not_a_parallel_json_grammar",
"persistence::source_save_tests::equal_project_from_generated_legacy_source_still_rejects_migration",
"persistence::source_save_tests::generated_source_admission_checks_final_newline_under_the_effective_byte_limit",
"persistence::source_save_tests::malformed_generated_source_rejects_before_any_filesystem_staging",
"persistence::source_save_tests::parseable_source_omitting_a_definition_cannot_replace_the_whole_project",
"semantic::catalog::coverage::every_current_payload_field_has_a_closed_typed_capture_and_write_scope",
"source_files::transaction_tests::interrupted_publication_without_write_marker_never_rolls_back_external_matching_bytes",
"source_files::transaction_tests::interrupted_save_and_interrupted_recovery_can_both_be_resumed",
"source_files::transaction_tests::journal_publication_does_not_replace_empty_target_created_after_precheck",
"source_files::transaction_tests::journal_publication_exhaustion_and_permanent_errors_keep_stage_and_report_original_path",
"source_files::transaction_tests::journal_publication_never_replaces_another_journal_that_appears_during_retry",
"source_files::transaction_tests::journal_publication_retries_only_transient_windows_errors_before_transferring_ownership",
"source_files::transaction_tests::malformed_v2_write_marker_refuses_recovery_without_changing_source_bytes",
"source_files::transaction_tests::partial_save_failures_restore_every_original_and_write_entry_last",
"source_files::transaction_tests::recovery_before_any_write_accepts_v2_marker_and_keeps_v1_rollback_compatibility",
"source_files::transaction_tests::recovery_rechecks_external_changes_between_restorations",
"source_files::transaction_tests::recovery_rejects_untrusted_escape_paths_before_touching_files",
"source_files::transaction_tests::rollback_refuses_external_edits_even_in_an_unchanged_dependency",
"source_files::transaction_tests::rollback_removes_only_our_new_file_and_retains_detached_files",
"source_files::transaction_tests::unwritten_journal_never_rolls_back_a_completed_writer_with_identical_after_bytes",
"topology_context::analysis::tests::edge_work_budget_stops_repeated_expansion_not_just_output_storage",
"topology_context::analysis::tests::exact_edge_budget_includes_reference_boundaries_and_node_abort_has_no_bypass",
"topology_context::analysis::tests::unresolved_authored_edges_consume_work_budget_without_stored_output",
"validation::coverage::tests::malformed_self_reuse_is_bounded_even_without_structural_gate",
"view_options::tests::global_behavior_coverage_and_chosen_context_are_independent_intersecting_predicates",
"view_options::tests::hidden_identity_survives_label_and_category_changes_without_mutating_the_model",
"view_options::tests::no_lines_and_explicit_trace_selection_include_actual_trace_identities",
"view_options::tests::omission_reasons_distinguish_missing_placements_folded_edges_and_explicit_hides",
"view_options::tests::persisted_empty_selectors_and_lifecycle_never_widen_to_all",
"view_options::tests::reusable_sequences_and_nested_scenarios_use_listed_contributions_in_both_layers",
"view_options::tests::separate_category_families_obey_all_any_empty_and_union_truth_table",
"view_options::tests::traceability_defaults_preserve_both_layers_and_explicit_selectors_still_apply",
"view_options::tests::wrong_family_layer_and_unknown_references_reject_and_draft_filters_fail_closed"
],
"result_sha256": "f57666eec6f236da7fbcbe99aca42de09e2d91823b36872c982d85c194136daf",
"inputs_sha256": "6a4c7e3c8d1e6edb7ad306c19abd05009ee410312eb34b68ec30d6408387967b",
"log_sha256": "085b90319f2bfa6c455731a35da18cc149b9df195aac817c8e56df53f1601dc2",
"verified_inputs": 534,
"admission_helper_sha256": "d2bd3c38feb77b8e916b3d413a278d4b0960baff8e14843aed4c2b20c26c90e1",
"baseline_source": "a2a28f8d23a46ba1696b6a8410d4d3b5c1808f49",
"baseline_result_sha256": "86db5467964d3712510f867379ae32e0797b4d9f46cbde762119ed9055fd3a62",
"baseline_admission_sha256": "f6b08e4d0eac3a0f17a582f9d9a51fb0cf84fc3c30d94d8fac71df52a4442bf1",
"baseline_members": 142,
"required_new_names": [
"language::analysis_source::write::tests::all_expr_variants_and_precedence_preserve_exact_trees",
"language::analysis_source::write::tests::canonical_calls_use_callee_parameter_order_and_qualified_names",
"language::analysis_source::write::tests::canonical_strings_and_exact_literals_use_existing_encodings",
"language::analysis_source::write::tests::iterative_writer_preserves_width1024_and_empty_call_topology",
"language::analysis_source::write::tests::negate_override_roundtrip_preserves_depth128_within_frame256",
"language::analysis_source::write::tests::subtree_output_respects_parent_context_and_retained_delimiters",
"language::analysis_source::write::tests::typed_declaration_order_and_required_empty_values_are_canonical",
"language::analysis_source::write::tests::typed_oa_sa_canonical_roundtrips_match_independent_projects",
"language::analysis_source::write::tests::writer_limits_are_aggregate_exact_and_latched_without_partial_results",
"language::analysis_source::write::tests::writer_lookup_scope_shape_and_depth_failures_are_model_located"
],
"boundary": "Listing or exact focused evidence only; no full-suite/public8/native acceptance."
}
@@ -0,0 +1,157 @@
Compiling oa-core v0.2.0 (C:\Users\User\Documents\Git\ARCADIA-Studio\.local\analysis-core-worktree-20260911\crates\oa-core)
Finished `test` profile [unoptimized] target(s) in 6m 46s
Running unittests src\lib.rs (C:/Users/User/Documents/Git/ARCADIA-Studio/.local/analysis-checked-save-target-20260913\debug\deps\oa_core-73987e0d7089bf1e.exe)
analysis::admission::meter_tests::call_key_scan_and_argument_lookup_have_separate_precharges: test
analysis::admission::meter_tests::relation_subject_resolution_charges_each_hop_and_bounds_cycles: test
analysis::admission::meter_tests::static_meter_exact_boundary_zero_charge_and_exhaustion_latch: test
analysis::admission::meter_tests::wide_expression_children_are_charged_before_they_are_queued: test
analysis::tests::affine_definitions_require_linear_matching_difference_and_valid_units: test
analysis::tests::anonymous_dimension_algebra_and_affine_rules_share_pure_runtime_helpers: test
analysis::tests::calculations_are_pure_parameters_are_scoped_and_calls_bind_exactly: test
analysis::tests::complete_real_model_roundtrips_and_exposes_explicit_effective_bindings: test
analysis::tests::deletion_requires_explicit_repairs_in_the_same_atomic_batch: test
analysis::tests::empty_lists_require_context_and_lists_are_flat_bounded_homogeneous: test
analysis::tests::equal_dimensions_do_not_create_nominal_compatibility: test
analysis::tests::every_case_is_checked_and_baseline_edits_cannot_introduce_a_case_only_cycle: test
analysis::tests::existing_transport_record_limits_count_definitions_parameters_overrides_and_nodes: test
analysis::tests::frozen_schema7_upgrades_without_interpreting_descriptive_metadata: test
analysis::tests::global_reidentify_rewrites_typed_domains_but_preserves_scoped_parameters: test
analysis::tests::layers_subject_kinds_and_display_units_are_strict: test
analysis::tests::logical_depth_and_call_depth_have_exact_boundaries: test
analysis::tests::map_key_collision_is_rejected_before_any_reference_mutation: test
analysis::tests::narrow_override_commands_preserve_missing_clear_and_history: test
analysis::tests::static_types_do_not_evaluate_domain_conditions_or_check_truth: test
analysis::tests::static_work_is_lowerable_deterministic_and_aggregated_across_cases: test
analysis::tests::stored_closure_limit_aggregates_distinct_called_definitions: test
analysis::tests::unsupported_transition_and_header_only_review_fail_explicitly: test
analysis::tests::unused_branches_still_reject_wrong_types_references_and_cycles: test
analysis::tests::wire_contract_rejects_unknown_imports_duplicates_missing_fields_and_noncanonical_exact: test
analysis_numeric::tests::affine_conversion_rejects_a_wider_stage_even_when_the_final_value_would_fit: test
analysis_numeric::tests::affine_point_and_difference_arithmetic_has_distinct_kinds: test
analysis_numeric::tests::anonymous_product_then_quotient_closes_and_preserves_scaling: test
analysis_numeric::tests::arithmetic_matches_independent_small_integer_oracle: test
analysis_numeric::tests::both_reduced_component_overflows_are_reported: test
analysis_numeric::tests::c1_expanded_call_witness_terminates_at_dynamic_limit: test
analysis_numeric::tests::canonical_wire_rejects_both_component_noncanonical_forms: test
analysis_numeric::tests::cross_products_cancel_before_reduced_component_limit: test
analysis_numeric::tests::decimals_are_exact_and_source_ratios_reduce: test
analysis_numeric::tests::dimensions_use_checked_seven_axis_integer_algebra: test
analysis_numeric::tests::duration_unit_coordinates_are_exact_and_nominal: test
analysis_numeric::tests::exact_accounting_boundary_and_terminal_failure_are_stable: test
analysis_numeric::tests::full_8193_bit_sum_intermediate_can_reduce_to_admitted_value: test
analysis_numeric::tests::full_independent_r7_packets_round_trip_as_literals_and_wire: test
analysis_numeric::tests::literal_reader_does_not_fold_expression_unary_minus: test
analysis_numeric::tests::literal_syntax_and_decimal_exponent_are_bounded: test
analysis_numeric::tests::multiple_targets_share_one_aggregate_meter: test
analysis_numeric::tests::nominal_kinds_survive_comparison_but_explicit_quotients_can_erase_dimension: test
analysis_numeric::tests::numeric_precharge_precedes_big_integer_result_allocation: test
analysis_numeric::tests::numerical_power_types_and_dimension_overflow_are_checked: test
analysis_numeric::tests::powers_and_signs_have_explicit_domains: test
analysis_numeric::tests::provisional_limits_and_effective_limits_round_trip: test
analysis_numeric::tests::r6_anonymous_compound_energy_needs_one_outer_assertion: test
analysis_numeric::tests::serde_uses_closed_canonical_string_wire: test
analysis_numeric::tests::wire_rejects_4097_bits_before_gcd_can_reduce_them: test
analysis_numeric::tests::zero_cost_and_maximum_reservation_do_not_underflow_or_reactivate: test
language::analysis_source::declarations::tests::borrowed_cursor_preserves_full_file_spans_and_does_not_rescan_fields: test
language::analysis_source::declarations::tests::declaration_budgets_share_literals_types_references_and_failure_state: test
language::analysis_source::declarations::tests::declaration_frames_restore_the_callers_inherited_context: test
language::analysis_source::declarations::tests::empty_unbound_and_all_scalar_list_types_are_explicit_valid_syntax: test
language::analysis_source::declarations::tests::inherited_version_root_and_short_word_contracts_do_not_enable_public8: test
language::analysis_source::declarations::tests::missing_id_metadata_is_stable_and_parameter_ids_are_owner_scoped: test
language::analysis_source::declarations::tests::missing_required_fields_and_unknown_or_duplicate_entries_reject_locally: test
language::analysis_source::declarations::tests::required_declarations_have_independent_typed_body_and_header_oracles: test
language::analysis_source::declarations::tests::typed_brace_frames_have_exact_zero_one_two_boundaries: test
language::analysis_source::declarations::tests::typed_frame_budget_and_truncated_declaration_cleanup_have_nearby_successes: test
language::analysis_source::lower::tests::affine_kinds_optional_fields_list_signatures_and_unused_unbound_definitions_survive: test
language::analysis_source::lower::tests::all_thirteen_expression_variants_lower_to_real_typed_values_and_admit: test
language::analysis_source::lower::tests::call_sites_and_parameter_scopes_preserve_distinct_original_occurrences: test
language::analysis_source::lower::tests::duplicate_file_keys_and_exhausted_shared_budget_cannot_enter_lowering: test
language::analysis_source::lower::tests::duplicate_global_aliases_and_ids_fail_before_body_resolution: test
language::analysis_source::lower::tests::forward_cross_unit_resolution_keeps_original_offsets_and_shared_work: test
language::analysis_source::lower::tests::iterative_lowering_preserves_128_deep_and_1024_wide_accepted_expressions: test
language::analysis_source::lower::tests::lowering_phase_bounds_count_ordinary_globals_and_scoped_parameters_together: test
language::analysis_source::lower::tests::missing_ids_require_stabilization_without_uuid_or_budget_churn: test
language::analysis_source::lower::tests::ordinary_non_element_categories_are_collected_and_never_property_fallbacks: test
language::analysis_source::lower::tests::staged_oa_and_sa_lowering_match_complete_independent_17_uuid_oracles: test
language::analysis_source::lower::tests::structural_lowering_defers_type_purity_layer_and_argument_sets_to_admission: test
language::analysis_source::lower::tests::typed_reference_domains_unknown_names_and_parameter_scope_fail_at_tokens: test
language::analysis_source::tests::budgets_aggregate_across_fragments_and_latch_numeric_exhaustion: test
language::analysis_source::tests::byte_token_frame_logical_and_list_boundaries_have_nearby_successes: test
language::analysis_source::tests::every_expression_shape_and_exact_constructor_arity_is_represented: test
language::analysis_source::tests::flat_binary_depth_and_malformed_constructor_retain_bounded_completed_children: test
language::analysis_source::tests::mixed_precedence_and_grouping_have_independent_expected_child_topology: test
language::analysis_source::tests::partial_wide_and_deep_input_cleanup_does_not_poison_a_fresh_parse: test
language::analysis_source::tests::public_source_headers_and_existing_numeric_token_controls_are_unchanged: test
language::analysis_source::tests::raw_numeric_lexing_preserves_exact_atoms_and_operator_boundaries: test
language::analysis_source::tests::repeated_call_argument_occurrences_have_distinct_original_spans: test
language::analysis_source::tests::significant_ratio_and_quantity_trivia_preserve_original_spans: test
language::analysis_source::tests::unary_literals_precedence_and_comparison_children_keep_distinct_trees: test
language::analysis_source::write::tests::all_expr_variants_and_precedence_preserve_exact_trees: test
language::analysis_source::write::tests::canonical_calls_use_callee_parameter_order_and_qualified_names: test
language::analysis_source::write::tests::canonical_strings_and_exact_literals_use_existing_encodings: test
language::analysis_source::write::tests::iterative_writer_preserves_width1024_and_empty_call_topology: test
language::analysis_source::write::tests::negate_override_roundtrip_preserves_depth128_within_frame256: test
language::analysis_source::write::tests::subtree_output_respects_parent_context_and_retained_delimiters: test
language::analysis_source::write::tests::typed_declaration_order_and_required_empty_values_are_canonical: test
language::analysis_source::write::tests::typed_oa_sa_canonical_roundtrips_match_independent_projects: test
language::analysis_source::write::tests::writer_limits_are_aggregate_exact_and_latched_without_partial_results: test
language::analysis_source::write::tests::writer_lookup_scope_shape_and_depth_failures_are_model_located: test
language::nesting_tests::checked_in_example_supports_cross_file_reparent_without_changing_allocations: test
language::nesting_tests::checked_in_nested_example_has_stable_ids_typed_exchanges_and_three_clear_views: test
language::nesting_tests::containment_validation_rejects_allocation_like_or_cross_layer_nesting: test
language::nesting_tests::declarations_are_preorder_occurrences_with_real_own_field_and_body_spans: test
language::nesting_tests::deep_declaration_parsing_and_positions_use_a_bounded_rust_stack: test
language::nesting_tests::matching_explicit_parent_is_accepted_but_none_or_another_owner_is_located: test
language::nesting_tests::nested_aliases_remain_global_and_forward_references_remain_legal: test
language::nesting_tests::nested_elements_infer_only_parent_and_keep_typed_fields_and_allocations_explicit: test
language::nesting_tests::nested_fragment_id_stabilization_preserves_comments_and_indexes_real_bytes: test
language::nesting_tests::nested_record_admission_precedes_resolution_and_typed_depth_stays_bounded: test
language::nesting_tests::non_elements_includes_and_declarations_inside_typed_values_are_rejected: test
language::nesting_tests::normative_nested_ownership_example_compiles_as_a_source_fragment: test
language::nesting_tests::syntax_edit_positions_retain_duplicate_identity_occurrences_during_a_command: test
language::nesting_tests::tolerant_nested_analysis_retains_closed_children_before_an_unfinished_sibling: test
language::raw_tokens::tests::legacy_adapter_retains_authored_numeric_operator_and_trivia_tokens: test
language::source3_bridge::tests::frozen_source3_and_json3_have_complete_model_and_migration_parity: test
language::source3_bridge::tests::frozen_wire_still_rejects_new_unknown_and_duplicate_fields: test
language::source3_bridge::tests::old_review_prose_survives_without_admitting_semantic_fields: test
language::source3_bridge::tests::scratch_bridge_refuses_to_discard_current_only_data: test
persistence::json_codec::tests::codec_lifecycle_subprocess: test
persistence::json_codec::tests::json_profile_does_not_contract_declared_cli_collection_counts: test
persistence::json_codec::tests::production_save_always_reopens_with_its_reader_profile: test
persistence::json_codec::tests::remote_serde_keeps_each_existing_expression_variant: test
persistence::json_codec::tests::resource_preflight_has_exact_lowerable_boundaries: test
persistence::json_codec::tests::scanner_is_not_a_parallel_json_grammar: test
persistence::source_save_tests::equal_project_from_generated_legacy_source_still_rejects_migration: test
persistence::source_save_tests::generated_source_admission_checks_final_newline_under_the_effective_byte_limit: test
persistence::source_save_tests::malformed_generated_source_rejects_before_any_filesystem_staging: test
persistence::source_save_tests::parseable_source_omitting_a_definition_cannot_replace_the_whole_project: test
semantic::catalog::coverage::every_current_payload_field_has_a_closed_typed_capture_and_write_scope: test
source_files::transaction_tests::interrupted_publication_without_write_marker_never_rolls_back_external_matching_bytes: test
source_files::transaction_tests::interrupted_save_and_interrupted_recovery_can_both_be_resumed: test
source_files::transaction_tests::journal_publication_does_not_replace_empty_target_created_after_precheck: test
source_files::transaction_tests::journal_publication_exhaustion_and_permanent_errors_keep_stage_and_report_original_path: test
source_files::transaction_tests::journal_publication_never_replaces_another_journal_that_appears_during_retry: test
source_files::transaction_tests::journal_publication_retries_only_transient_windows_errors_before_transferring_ownership: test
source_files::transaction_tests::malformed_v2_write_marker_refuses_recovery_without_changing_source_bytes: test
source_files::transaction_tests::partial_save_failures_restore_every_original_and_write_entry_last: test
source_files::transaction_tests::recovery_before_any_write_accepts_v2_marker_and_keeps_v1_rollback_compatibility: test
source_files::transaction_tests::recovery_rechecks_external_changes_between_restorations: test
source_files::transaction_tests::recovery_rejects_untrusted_escape_paths_before_touching_files: test
source_files::transaction_tests::rollback_refuses_external_edits_even_in_an_unchanged_dependency: test
source_files::transaction_tests::rollback_removes_only_our_new_file_and_retains_detached_files: test
source_files::transaction_tests::unwritten_journal_never_rolls_back_a_completed_writer_with_identical_after_bytes: test
topology_context::analysis::tests::edge_work_budget_stops_repeated_expansion_not_just_output_storage: test
topology_context::analysis::tests::exact_edge_budget_includes_reference_boundaries_and_node_abort_has_no_bypass: test
topology_context::analysis::tests::unresolved_authored_edges_consume_work_budget_without_stored_output: test
validation::coverage::tests::malformed_self_reuse_is_bounded_even_without_structural_gate: test
view_options::tests::global_behavior_coverage_and_chosen_context_are_independent_intersecting_predicates: test
view_options::tests::hidden_identity_survives_label_and_category_changes_without_mutating_the_model: test
view_options::tests::no_lines_and_explicit_trace_selection_include_actual_trace_identities: test
view_options::tests::omission_reasons_distinguish_missing_placements_folded_edges_and_explicit_hides: test
view_options::tests::persisted_empty_selectors_and_lifecycle_never_widen_to_all: test
view_options::tests::reusable_sequences_and_nested_scenarios_use_listed_contributions_in_both_layers: test
view_options::tests::separate_category_families_obey_all_any_empty_and_union_truth_table: test
view_options::tests::traceability_defaults_preserve_both_layers_and_explicit_selectors_still_apply: test
view_options::tests::wrong_family_layer_and_unknown_references_reject_and_draft_filters_fail_closed: test
152 tests, 0 benchmarks
@@ -0,0 +1,188 @@
{
"source": "f1d79df4979121335ed7b4ce4da84b2fca8a9ef4",
"head_after": "f1d79df4979121335ed7b4ce4da84b2fca8a9ef4",
"start": "2026-09-13T12:01:12.914765+00:00",
"end": "2026-09-13T12:08:00.913025+00:00",
"exit": 0,
"command": [
"cargo",
"test",
"--locked",
"-p",
"oa-core",
"--lib",
"--",
"--list"
],
"inputs": "list-f1d79df.inputs.json",
"changed_inputs": [],
"artifacts": [
{
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-checked-save-target-20260913\\debug\\deps\\oa_core-73987e0d7089bf1e.exe",
"bytes": 37146112,
"sha256": "786c5e6deec4fd6f00cc9954ca8190fa47c3c0bdfb0b44dccf032795155438af"
}
],
"environment": {
"CARGO_TARGET_DIR": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/analysis-checked-save-target-20260913",
"CARGO_BUILD_JOBS": "1",
"CARGO_HOME": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/toolchain/cargo",
"RUSTUP_HOME": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/toolchain/rustup"
},
"listing_members": [
"analysis::admission::meter_tests::call_key_scan_and_argument_lookup_have_separate_precharges",
"analysis::admission::meter_tests::relation_subject_resolution_charges_each_hop_and_bounds_cycles",
"analysis::admission::meter_tests::static_meter_exact_boundary_zero_charge_and_exhaustion_latch",
"analysis::admission::meter_tests::wide_expression_children_are_charged_before_they_are_queued",
"analysis::tests::affine_definitions_require_linear_matching_difference_and_valid_units",
"analysis::tests::anonymous_dimension_algebra_and_affine_rules_share_pure_runtime_helpers",
"analysis::tests::calculations_are_pure_parameters_are_scoped_and_calls_bind_exactly",
"analysis::tests::complete_real_model_roundtrips_and_exposes_explicit_effective_bindings",
"analysis::tests::deletion_requires_explicit_repairs_in_the_same_atomic_batch",
"analysis::tests::empty_lists_require_context_and_lists_are_flat_bounded_homogeneous",
"analysis::tests::equal_dimensions_do_not_create_nominal_compatibility",
"analysis::tests::every_case_is_checked_and_baseline_edits_cannot_introduce_a_case_only_cycle",
"analysis::tests::existing_transport_record_limits_count_definitions_parameters_overrides_and_nodes",
"analysis::tests::frozen_schema7_upgrades_without_interpreting_descriptive_metadata",
"analysis::tests::global_reidentify_rewrites_typed_domains_but_preserves_scoped_parameters",
"analysis::tests::layers_subject_kinds_and_display_units_are_strict",
"analysis::tests::logical_depth_and_call_depth_have_exact_boundaries",
"analysis::tests::map_key_collision_is_rejected_before_any_reference_mutation",
"analysis::tests::narrow_override_commands_preserve_missing_clear_and_history",
"analysis::tests::static_types_do_not_evaluate_domain_conditions_or_check_truth",
"analysis::tests::static_work_is_lowerable_deterministic_and_aggregated_across_cases",
"analysis::tests::stored_closure_limit_aggregates_distinct_called_definitions",
"analysis::tests::unsupported_transition_and_header_only_review_fail_explicitly",
"analysis::tests::unused_branches_still_reject_wrong_types_references_and_cycles",
"analysis::tests::wire_contract_rejects_unknown_imports_duplicates_missing_fields_and_noncanonical_exact",
"analysis_numeric::tests::affine_conversion_rejects_a_wider_stage_even_when_the_final_value_would_fit",
"analysis_numeric::tests::affine_point_and_difference_arithmetic_has_distinct_kinds",
"analysis_numeric::tests::anonymous_product_then_quotient_closes_and_preserves_scaling",
"analysis_numeric::tests::arithmetic_matches_independent_small_integer_oracle",
"analysis_numeric::tests::both_reduced_component_overflows_are_reported",
"analysis_numeric::tests::c1_expanded_call_witness_terminates_at_dynamic_limit",
"analysis_numeric::tests::canonical_wire_rejects_both_component_noncanonical_forms",
"analysis_numeric::tests::cross_products_cancel_before_reduced_component_limit",
"analysis_numeric::tests::decimals_are_exact_and_source_ratios_reduce",
"analysis_numeric::tests::dimensions_use_checked_seven_axis_integer_algebra",
"analysis_numeric::tests::duration_unit_coordinates_are_exact_and_nominal",
"analysis_numeric::tests::exact_accounting_boundary_and_terminal_failure_are_stable",
"analysis_numeric::tests::full_8193_bit_sum_intermediate_can_reduce_to_admitted_value",
"analysis_numeric::tests::full_independent_r7_packets_round_trip_as_literals_and_wire",
"analysis_numeric::tests::literal_reader_does_not_fold_expression_unary_minus",
"analysis_numeric::tests::literal_syntax_and_decimal_exponent_are_bounded",
"analysis_numeric::tests::multiple_targets_share_one_aggregate_meter",
"analysis_numeric::tests::nominal_kinds_survive_comparison_but_explicit_quotients_can_erase_dimension",
"analysis_numeric::tests::numeric_precharge_precedes_big_integer_result_allocation",
"analysis_numeric::tests::numerical_power_types_and_dimension_overflow_are_checked",
"analysis_numeric::tests::powers_and_signs_have_explicit_domains",
"analysis_numeric::tests::provisional_limits_and_effective_limits_round_trip",
"analysis_numeric::tests::r6_anonymous_compound_energy_needs_one_outer_assertion",
"analysis_numeric::tests::serde_uses_closed_canonical_string_wire",
"analysis_numeric::tests::wire_rejects_4097_bits_before_gcd_can_reduce_them",
"analysis_numeric::tests::zero_cost_and_maximum_reservation_do_not_underflow_or_reactivate",
"language::analysis_source::declarations::tests::borrowed_cursor_preserves_full_file_spans_and_does_not_rescan_fields",
"language::analysis_source::declarations::tests::declaration_budgets_share_literals_types_references_and_failure_state",
"language::analysis_source::declarations::tests::declaration_frames_restore_the_callers_inherited_context",
"language::analysis_source::declarations::tests::empty_unbound_and_all_scalar_list_types_are_explicit_valid_syntax",
"language::analysis_source::declarations::tests::inherited_version_root_and_short_word_contracts_do_not_enable_public8",
"language::analysis_source::declarations::tests::missing_id_metadata_is_stable_and_parameter_ids_are_owner_scoped",
"language::analysis_source::declarations::tests::missing_required_fields_and_unknown_or_duplicate_entries_reject_locally",
"language::analysis_source::declarations::tests::required_declarations_have_independent_typed_body_and_header_oracles",
"language::analysis_source::declarations::tests::typed_brace_frames_have_exact_zero_one_two_boundaries",
"language::analysis_source::declarations::tests::typed_frame_budget_and_truncated_declaration_cleanup_have_nearby_successes",
"language::analysis_source::lower::tests::affine_kinds_optional_fields_list_signatures_and_unused_unbound_definitions_survive",
"language::analysis_source::lower::tests::all_thirteen_expression_variants_lower_to_real_typed_values_and_admit",
"language::analysis_source::lower::tests::call_sites_and_parameter_scopes_preserve_distinct_original_occurrences",
"language::analysis_source::lower::tests::duplicate_file_keys_and_exhausted_shared_budget_cannot_enter_lowering",
"language::analysis_source::lower::tests::duplicate_global_aliases_and_ids_fail_before_body_resolution",
"language::analysis_source::lower::tests::forward_cross_unit_resolution_keeps_original_offsets_and_shared_work",
"language::analysis_source::lower::tests::iterative_lowering_preserves_128_deep_and_1024_wide_accepted_expressions",
"language::analysis_source::lower::tests::lowering_phase_bounds_count_ordinary_globals_and_scoped_parameters_together",
"language::analysis_source::lower::tests::missing_ids_require_stabilization_without_uuid_or_budget_churn",
"language::analysis_source::lower::tests::ordinary_non_element_categories_are_collected_and_never_property_fallbacks",
"language::analysis_source::lower::tests::staged_oa_and_sa_lowering_match_complete_independent_17_uuid_oracles",
"language::analysis_source::lower::tests::structural_lowering_defers_type_purity_layer_and_argument_sets_to_admission",
"language::analysis_source::lower::tests::typed_reference_domains_unknown_names_and_parameter_scope_fail_at_tokens",
"language::analysis_source::tests::budgets_aggregate_across_fragments_and_latch_numeric_exhaustion",
"language::analysis_source::tests::byte_token_frame_logical_and_list_boundaries_have_nearby_successes",
"language::analysis_source::tests::every_expression_shape_and_exact_constructor_arity_is_represented",
"language::analysis_source::tests::flat_binary_depth_and_malformed_constructor_retain_bounded_completed_children",
"language::analysis_source::tests::mixed_precedence_and_grouping_have_independent_expected_child_topology",
"language::analysis_source::tests::partial_wide_and_deep_input_cleanup_does_not_poison_a_fresh_parse",
"language::analysis_source::tests::public_source_headers_and_existing_numeric_token_controls_are_unchanged",
"language::analysis_source::tests::raw_numeric_lexing_preserves_exact_atoms_and_operator_boundaries",
"language::analysis_source::tests::repeated_call_argument_occurrences_have_distinct_original_spans",
"language::analysis_source::tests::significant_ratio_and_quantity_trivia_preserve_original_spans",
"language::analysis_source::tests::unary_literals_precedence_and_comparison_children_keep_distinct_trees",
"language::analysis_source::write::tests::all_expr_variants_and_precedence_preserve_exact_trees",
"language::analysis_source::write::tests::canonical_calls_use_callee_parameter_order_and_qualified_names",
"language::analysis_source::write::tests::canonical_strings_and_exact_literals_use_existing_encodings",
"language::analysis_source::write::tests::iterative_writer_preserves_width1024_and_empty_call_topology",
"language::analysis_source::write::tests::negate_override_roundtrip_preserves_depth128_within_frame256",
"language::analysis_source::write::tests::subtree_output_respects_parent_context_and_retained_delimiters",
"language::analysis_source::write::tests::typed_declaration_order_and_required_empty_values_are_canonical",
"language::analysis_source::write::tests::typed_oa_sa_canonical_roundtrips_match_independent_projects",
"language::analysis_source::write::tests::writer_limits_are_aggregate_exact_and_latched_without_partial_results",
"language::analysis_source::write::tests::writer_lookup_scope_shape_and_depth_failures_are_model_located",
"language::nesting_tests::checked_in_example_supports_cross_file_reparent_without_changing_allocations",
"language::nesting_tests::checked_in_nested_example_has_stable_ids_typed_exchanges_and_three_clear_views",
"language::nesting_tests::containment_validation_rejects_allocation_like_or_cross_layer_nesting",
"language::nesting_tests::declarations_are_preorder_occurrences_with_real_own_field_and_body_spans",
"language::nesting_tests::deep_declaration_parsing_and_positions_use_a_bounded_rust_stack",
"language::nesting_tests::matching_explicit_parent_is_accepted_but_none_or_another_owner_is_located",
"language::nesting_tests::nested_aliases_remain_global_and_forward_references_remain_legal",
"language::nesting_tests::nested_elements_infer_only_parent_and_keep_typed_fields_and_allocations_explicit",
"language::nesting_tests::nested_fragment_id_stabilization_preserves_comments_and_indexes_real_bytes",
"language::nesting_tests::nested_record_admission_precedes_resolution_and_typed_depth_stays_bounded",
"language::nesting_tests::non_elements_includes_and_declarations_inside_typed_values_are_rejected",
"language::nesting_tests::normative_nested_ownership_example_compiles_as_a_source_fragment",
"language::nesting_tests::syntax_edit_positions_retain_duplicate_identity_occurrences_during_a_command",
"language::nesting_tests::tolerant_nested_analysis_retains_closed_children_before_an_unfinished_sibling",
"language::raw_tokens::tests::legacy_adapter_retains_authored_numeric_operator_and_trivia_tokens",
"language::source3_bridge::tests::frozen_source3_and_json3_have_complete_model_and_migration_parity",
"language::source3_bridge::tests::frozen_wire_still_rejects_new_unknown_and_duplicate_fields",
"language::source3_bridge::tests::old_review_prose_survives_without_admitting_semantic_fields",
"language::source3_bridge::tests::scratch_bridge_refuses_to_discard_current_only_data",
"persistence::json_codec::tests::codec_lifecycle_subprocess",
"persistence::json_codec::tests::json_profile_does_not_contract_declared_cli_collection_counts",
"persistence::json_codec::tests::production_save_always_reopens_with_its_reader_profile",
"persistence::json_codec::tests::remote_serde_keeps_each_existing_expression_variant",
"persistence::json_codec::tests::resource_preflight_has_exact_lowerable_boundaries",
"persistence::json_codec::tests::scanner_is_not_a_parallel_json_grammar",
"persistence::source_save_tests::equal_project_from_generated_legacy_source_still_rejects_migration",
"persistence::source_save_tests::generated_source_admission_checks_final_newline_under_the_effective_byte_limit",
"persistence::source_save_tests::malformed_generated_source_rejects_before_any_filesystem_staging",
"persistence::source_save_tests::parseable_source_omitting_a_definition_cannot_replace_the_whole_project",
"semantic::catalog::coverage::every_current_payload_field_has_a_closed_typed_capture_and_write_scope",
"source_files::transaction_tests::interrupted_publication_without_write_marker_never_rolls_back_external_matching_bytes",
"source_files::transaction_tests::interrupted_save_and_interrupted_recovery_can_both_be_resumed",
"source_files::transaction_tests::journal_publication_does_not_replace_empty_target_created_after_precheck",
"source_files::transaction_tests::journal_publication_exhaustion_and_permanent_errors_keep_stage_and_report_original_path",
"source_files::transaction_tests::journal_publication_never_replaces_another_journal_that_appears_during_retry",
"source_files::transaction_tests::journal_publication_retries_only_transient_windows_errors_before_transferring_ownership",
"source_files::transaction_tests::malformed_v2_write_marker_refuses_recovery_without_changing_source_bytes",
"source_files::transaction_tests::partial_save_failures_restore_every_original_and_write_entry_last",
"source_files::transaction_tests::recovery_before_any_write_accepts_v2_marker_and_keeps_v1_rollback_compatibility",
"source_files::transaction_tests::recovery_rechecks_external_changes_between_restorations",
"source_files::transaction_tests::recovery_rejects_untrusted_escape_paths_before_touching_files",
"source_files::transaction_tests::rollback_refuses_external_edits_even_in_an_unchanged_dependency",
"source_files::transaction_tests::rollback_removes_only_our_new_file_and_retains_detached_files",
"source_files::transaction_tests::unwritten_journal_never_rolls_back_a_completed_writer_with_identical_after_bytes",
"topology_context::analysis::tests::edge_work_budget_stops_repeated_expansion_not_just_output_storage",
"topology_context::analysis::tests::exact_edge_budget_includes_reference_boundaries_and_node_abort_has_no_bypass",
"topology_context::analysis::tests::unresolved_authored_edges_consume_work_budget_without_stored_output",
"validation::coverage::tests::malformed_self_reuse_is_bounded_even_without_structural_gate",
"view_options::tests::global_behavior_coverage_and_chosen_context_are_independent_intersecting_predicates",
"view_options::tests::hidden_identity_survives_label_and_category_changes_without_mutating_the_model",
"view_options::tests::no_lines_and_explicit_trace_selection_include_actual_trace_identities",
"view_options::tests::omission_reasons_distinguish_missing_placements_folded_edges_and_explicit_hides",
"view_options::tests::persisted_empty_selectors_and_lifecycle_never_widen_to_all",
"view_options::tests::reusable_sequences_and_nested_scenarios_use_listed_contributions_in_both_layers",
"view_options::tests::separate_category_families_obey_all_any_empty_and_union_truth_table",
"view_options::tests::traceability_defaults_preserve_both_layers_and_explicit_selectors_still_apply",
"view_options::tests::wrong_family_layer_and_unknown_references_reject_and_draft_filters_fail_closed"
],
"listing_count": 152,
"listing_scope": "Names emitted by this actual Cargo test listing; focused/full runtime results have their own receipts."
}
@@ -0,0 +1,2 @@
Checking oa-core v0.2.0 (C:\Users\User\Documents\Git\ARCADIA-Studio\.local\analysis-core-worktree-20260911\crates\oa-core)
Finished `dev` profile [unoptimized] target(s) in 6m 26s
@@ -0,0 +1,30 @@
{
"source": "f1d79df4979121335ed7b4ce4da84b2fca8a9ef4",
"head_after": "f1d79df4979121335ed7b4ce4da84b2fca8a9ef4",
"start": "2026-09-13T12:17:28.004362+00:00",
"end": "2026-09-13T12:24:00.805354+00:00",
"exit": 0,
"command": [
"cargo",
"clippy",
"--locked",
"-p",
"oa-core",
"--all-targets",
"--",
"-D",
"warnings"
],
"inputs": "strict-f1d79df.inputs.json",
"changed_inputs": [],
"artifacts": [],
"environment": {
"CARGO_TARGET_DIR": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/analysis-checked-save-target-20260913",
"CARGO_BUILD_JOBS": "1",
"CARGO_HOME": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/toolchain/cargo",
"RUSTUP_HOME": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/toolchain/rustup"
},
"listing_members": [],
"listing_count": 0,
"listing_scope": "Names emitted by this actual Cargo test listing; focused/full runtime results have their own receipts."
}
@@ -0,0 +1,35 @@
{
"source": "f1d79df4979121335ed7b4ce4da84b2fca8a9ef4",
"mode": "focused",
"selector": "language::raw_tokens",
"artifact": {
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-checked-save-target-20260913\\debug\\deps\\oa_core-73987e0d7089bf1e.exe",
"bytes": 37146112,
"sha256": "786c5e6deec4fd6f00cc9954ca8190fa47c3c0bdfb0b44dccf032795155438af"
},
"names": [
"language::raw_tokens::tests::legacy_adapter_retains_authored_numeric_operator_and_trivia_tokens"
],
"result_sha256": "04392c3ed68e63a0dedfd754b3ecac4fce0a1dde5b471a177af475794f14097b",
"inputs_sha256": "6a4c7e3c8d1e6edb7ad306c19abd05009ee410312eb34b68ec30d6408387967b",
"log_sha256": "fdf02a809a7f8b82880003708b27f5737093b20913cde6a4ab62c36e61924ded",
"verified_inputs": 534,
"admission_helper_sha256": "d2bd3c38feb77b8e916b3d413a278d4b0960baff8e14843aed4c2b20c26c90e1",
"baseline_source": "a2a28f8d23a46ba1696b6a8410d4d3b5c1808f49",
"baseline_result_sha256": "86db5467964d3712510f867379ae32e0797b4d9f46cbde762119ed9055fd3a62",
"baseline_admission_sha256": "f6b08e4d0eac3a0f17a582f9d9a51fb0cf84fc3c30d94d8fac71df52a4442bf1",
"baseline_members": 142,
"required_new_names": [
"language::analysis_source::write::tests::all_expr_variants_and_precedence_preserve_exact_trees",
"language::analysis_source::write::tests::canonical_calls_use_callee_parameter_order_and_qualified_names",
"language::analysis_source::write::tests::canonical_strings_and_exact_literals_use_existing_encodings",
"language::analysis_source::write::tests::iterative_writer_preserves_width1024_and_empty_call_topology",
"language::analysis_source::write::tests::negate_override_roundtrip_preserves_depth128_within_frame256",
"language::analysis_source::write::tests::subtree_output_respects_parent_context_and_retained_delimiters",
"language::analysis_source::write::tests::typed_declaration_order_and_required_empty_values_are_canonical",
"language::analysis_source::write::tests::typed_oa_sa_canonical_roundtrips_match_independent_projects",
"language::analysis_source::write::tests::writer_limits_are_aggregate_exact_and_latched_without_partial_results",
"language::analysis_source::write::tests::writer_lookup_scope_shape_and_depth_failures_are_model_located"
],
"boundary": "Listing or exact focused evidence only; no full-suite/public8/native acceptance."
}
@@ -0,0 +1,8 @@
Finished `test` profile [unoptimized] target(s) in 3.36s
Running unittests src\lib.rs (C:/Users/User/Documents/Git/ARCADIA-Studio/.local/analysis-checked-save-target-20260913\debug\deps\oa_core-73987e0d7089bf1e.exe)
running 1 test
test language::raw_tokens::tests::legacy_adapter_retains_authored_numeric_operator_and_trivia_tokens ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 151 filtered out; finished in 0.16s
@@ -0,0 +1,36 @@
{
"source": "f1d79df4979121335ed7b4ce4da84b2fca8a9ef4",
"head_after": "f1d79df4979121335ed7b4ce4da84b2fca8a9ef4",
"start": "2026-09-13T12:13:51.673467+00:00",
"end": "2026-09-13T12:13:55.998167+00:00",
"exit": 0,
"command": [
"cargo",
"test",
"--locked",
"-p",
"oa-core",
"--lib",
"language::raw_tokens",
"--",
"--test-threads=1"
],
"inputs": "tokens-f1d79df.inputs.json",
"changed_inputs": [],
"artifacts": [
{
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-checked-save-target-20260913\\debug\\deps\\oa_core-73987e0d7089bf1e.exe",
"bytes": 37146112,
"sha256": "786c5e6deec4fd6f00cc9954ca8190fa47c3c0bdfb0b44dccf032795155438af"
}
],
"environment": {
"CARGO_TARGET_DIR": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/analysis-checked-save-target-20260913",
"CARGO_BUILD_JOBS": "1",
"CARGO_HOME": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/toolchain/cargo",
"RUSTUP_HOME": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/toolchain/rustup"
},
"listing_members": [],
"listing_count": 0,
"listing_scope": "Names emitted by this actual Cargo test listing; focused/full runtime results have their own receipts."
}
@@ -0,0 +1,78 @@
{
"source": "f1d79df4979121335ed7b4ce4da84b2fca8a9ef4",
"mode": "focused",
"selector": "language::analysis_source",
"artifact": {
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-checked-save-target-20260913\\debug\\deps\\oa_core-73987e0d7089bf1e.exe",
"bytes": 37146112,
"sha256": "786c5e6deec4fd6f00cc9954ca8190fa47c3c0bdfb0b44dccf032795155438af"
},
"names": [
"language::analysis_source::declarations::tests::borrowed_cursor_preserves_full_file_spans_and_does_not_rescan_fields",
"language::analysis_source::declarations::tests::declaration_budgets_share_literals_types_references_and_failure_state",
"language::analysis_source::declarations::tests::declaration_frames_restore_the_callers_inherited_context",
"language::analysis_source::declarations::tests::empty_unbound_and_all_scalar_list_types_are_explicit_valid_syntax",
"language::analysis_source::declarations::tests::inherited_version_root_and_short_word_contracts_do_not_enable_public8",
"language::analysis_source::declarations::tests::missing_id_metadata_is_stable_and_parameter_ids_are_owner_scoped",
"language::analysis_source::declarations::tests::missing_required_fields_and_unknown_or_duplicate_entries_reject_locally",
"language::analysis_source::declarations::tests::required_declarations_have_independent_typed_body_and_header_oracles",
"language::analysis_source::declarations::tests::typed_brace_frames_have_exact_zero_one_two_boundaries",
"language::analysis_source::declarations::tests::typed_frame_budget_and_truncated_declaration_cleanup_have_nearby_successes",
"language::analysis_source::lower::tests::affine_kinds_optional_fields_list_signatures_and_unused_unbound_definitions_survive",
"language::analysis_source::lower::tests::all_thirteen_expression_variants_lower_to_real_typed_values_and_admit",
"language::analysis_source::lower::tests::call_sites_and_parameter_scopes_preserve_distinct_original_occurrences",
"language::analysis_source::lower::tests::duplicate_file_keys_and_exhausted_shared_budget_cannot_enter_lowering",
"language::analysis_source::lower::tests::duplicate_global_aliases_and_ids_fail_before_body_resolution",
"language::analysis_source::lower::tests::forward_cross_unit_resolution_keeps_original_offsets_and_shared_work",
"language::analysis_source::lower::tests::iterative_lowering_preserves_128_deep_and_1024_wide_accepted_expressions",
"language::analysis_source::lower::tests::lowering_phase_bounds_count_ordinary_globals_and_scoped_parameters_together",
"language::analysis_source::lower::tests::missing_ids_require_stabilization_without_uuid_or_budget_churn",
"language::analysis_source::lower::tests::ordinary_non_element_categories_are_collected_and_never_property_fallbacks",
"language::analysis_source::lower::tests::staged_oa_and_sa_lowering_match_complete_independent_17_uuid_oracles",
"language::analysis_source::lower::tests::structural_lowering_defers_type_purity_layer_and_argument_sets_to_admission",
"language::analysis_source::lower::tests::typed_reference_domains_unknown_names_and_parameter_scope_fail_at_tokens",
"language::analysis_source::tests::budgets_aggregate_across_fragments_and_latch_numeric_exhaustion",
"language::analysis_source::tests::byte_token_frame_logical_and_list_boundaries_have_nearby_successes",
"language::analysis_source::tests::every_expression_shape_and_exact_constructor_arity_is_represented",
"language::analysis_source::tests::flat_binary_depth_and_malformed_constructor_retain_bounded_completed_children",
"language::analysis_source::tests::mixed_precedence_and_grouping_have_independent_expected_child_topology",
"language::analysis_source::tests::partial_wide_and_deep_input_cleanup_does_not_poison_a_fresh_parse",
"language::analysis_source::tests::public_source_headers_and_existing_numeric_token_controls_are_unchanged",
"language::analysis_source::tests::raw_numeric_lexing_preserves_exact_atoms_and_operator_boundaries",
"language::analysis_source::tests::repeated_call_argument_occurrences_have_distinct_original_spans",
"language::analysis_source::tests::significant_ratio_and_quantity_trivia_preserve_original_spans",
"language::analysis_source::tests::unary_literals_precedence_and_comparison_children_keep_distinct_trees",
"language::analysis_source::write::tests::all_expr_variants_and_precedence_preserve_exact_trees",
"language::analysis_source::write::tests::canonical_calls_use_callee_parameter_order_and_qualified_names",
"language::analysis_source::write::tests::canonical_strings_and_exact_literals_use_existing_encodings",
"language::analysis_source::write::tests::iterative_writer_preserves_width1024_and_empty_call_topology",
"language::analysis_source::write::tests::negate_override_roundtrip_preserves_depth128_within_frame256",
"language::analysis_source::write::tests::subtree_output_respects_parent_context_and_retained_delimiters",
"language::analysis_source::write::tests::typed_declaration_order_and_required_empty_values_are_canonical",
"language::analysis_source::write::tests::typed_oa_sa_canonical_roundtrips_match_independent_projects",
"language::analysis_source::write::tests::writer_limits_are_aggregate_exact_and_latched_without_partial_results",
"language::analysis_source::write::tests::writer_lookup_scope_shape_and_depth_failures_are_model_located"
],
"result_sha256": "9d4ab4415bdc4ac47e4f2cb8fa10430a337d0129111f7c99da59da10eba4ad21",
"inputs_sha256": "6a4c7e3c8d1e6edb7ad306c19abd05009ee410312eb34b68ec30d6408387967b",
"log_sha256": "a65c12943cff40e99757660f99d7018a55799ffe6eaf25836709ce147a9c07a3",
"verified_inputs": 534,
"admission_helper_sha256": "d2bd3c38feb77b8e916b3d413a278d4b0960baff8e14843aed4c2b20c26c90e1",
"baseline_source": "a2a28f8d23a46ba1696b6a8410d4d3b5c1808f49",
"baseline_result_sha256": "86db5467964d3712510f867379ae32e0797b4d9f46cbde762119ed9055fd3a62",
"baseline_admission_sha256": "f6b08e4d0eac3a0f17a582f9d9a51fb0cf84fc3c30d94d8fac71df52a4442bf1",
"baseline_members": 142,
"required_new_names": [
"language::analysis_source::write::tests::all_expr_variants_and_precedence_preserve_exact_trees",
"language::analysis_source::write::tests::canonical_calls_use_callee_parameter_order_and_qualified_names",
"language::analysis_source::write::tests::canonical_strings_and_exact_literals_use_existing_encodings",
"language::analysis_source::write::tests::iterative_writer_preserves_width1024_and_empty_call_topology",
"language::analysis_source::write::tests::negate_override_roundtrip_preserves_depth128_within_frame256",
"language::analysis_source::write::tests::subtree_output_respects_parent_context_and_retained_delimiters",
"language::analysis_source::write::tests::typed_declaration_order_and_required_empty_values_are_canonical",
"language::analysis_source::write::tests::typed_oa_sa_canonical_roundtrips_match_independent_projects",
"language::analysis_source::write::tests::writer_limits_are_aggregate_exact_and_latched_without_partial_results",
"language::analysis_source::write::tests::writer_lookup_scope_shape_and_depth_failures_are_model_located"
],
"boundary": "Listing or exact focused evidence only; no full-suite/public8/native acceptance."
}
@@ -0,0 +1,51 @@
Finished `test` profile [unoptimized] target(s) in 4.28s
Running unittests src\lib.rs (C:/Users/User/Documents/Git/ARCADIA-Studio/.local/analysis-checked-save-target-20260913\debug\deps\oa_core-73987e0d7089bf1e.exe)
running 44 tests
test language::analysis_source::declarations::tests::borrowed_cursor_preserves_full_file_spans_and_does_not_rescan_fields ... ok
test language::analysis_source::declarations::tests::declaration_budgets_share_literals_types_references_and_failure_state ... ok
test language::analysis_source::declarations::tests::declaration_frames_restore_the_callers_inherited_context ... ok
test language::analysis_source::declarations::tests::empty_unbound_and_all_scalar_list_types_are_explicit_valid_syntax ... ok
test language::analysis_source::declarations::tests::inherited_version_root_and_short_word_contracts_do_not_enable_public8 ... ok
test language::analysis_source::declarations::tests::missing_id_metadata_is_stable_and_parameter_ids_are_owner_scoped ... ok
test language::analysis_source::declarations::tests::missing_required_fields_and_unknown_or_duplicate_entries_reject_locally ... ok
test language::analysis_source::declarations::tests::required_declarations_have_independent_typed_body_and_header_oracles ... ok
test language::analysis_source::declarations::tests::typed_brace_frames_have_exact_zero_one_two_boundaries ... ok
test language::analysis_source::declarations::tests::typed_frame_budget_and_truncated_declaration_cleanup_have_nearby_successes ... ok
test language::analysis_source::lower::tests::affine_kinds_optional_fields_list_signatures_and_unused_unbound_definitions_survive ... ok
test language::analysis_source::lower::tests::all_thirteen_expression_variants_lower_to_real_typed_values_and_admit ... ok
test language::analysis_source::lower::tests::call_sites_and_parameter_scopes_preserve_distinct_original_occurrences ... ok
test language::analysis_source::lower::tests::duplicate_file_keys_and_exhausted_shared_budget_cannot_enter_lowering ... ok
test language::analysis_source::lower::tests::duplicate_global_aliases_and_ids_fail_before_body_resolution ... ok
test language::analysis_source::lower::tests::forward_cross_unit_resolution_keeps_original_offsets_and_shared_work ... ok
test language::analysis_source::lower::tests::iterative_lowering_preserves_128_deep_and_1024_wide_accepted_expressions ... ok
test language::analysis_source::lower::tests::lowering_phase_bounds_count_ordinary_globals_and_scoped_parameters_together ... ok
test language::analysis_source::lower::tests::missing_ids_require_stabilization_without_uuid_or_budget_churn ... ok
test language::analysis_source::lower::tests::ordinary_non_element_categories_are_collected_and_never_property_fallbacks ... ok
test language::analysis_source::lower::tests::staged_oa_and_sa_lowering_match_complete_independent_17_uuid_oracles ... ok
test language::analysis_source::lower::tests::structural_lowering_defers_type_purity_layer_and_argument_sets_to_admission ... ok
test language::analysis_source::lower::tests::typed_reference_domains_unknown_names_and_parameter_scope_fail_at_tokens ... ok
test language::analysis_source::tests::budgets_aggregate_across_fragments_and_latch_numeric_exhaustion ... ok
test language::analysis_source::tests::byte_token_frame_logical_and_list_boundaries_have_nearby_successes ... ok
test language::analysis_source::tests::every_expression_shape_and_exact_constructor_arity_is_represented ... ok
test language::analysis_source::tests::flat_binary_depth_and_malformed_constructor_retain_bounded_completed_children ... ok
test language::analysis_source::tests::mixed_precedence_and_grouping_have_independent_expected_child_topology ... ok
test language::analysis_source::tests::partial_wide_and_deep_input_cleanup_does_not_poison_a_fresh_parse ... ok
test language::analysis_source::tests::public_source_headers_and_existing_numeric_token_controls_are_unchanged ... ok
test language::analysis_source::tests::raw_numeric_lexing_preserves_exact_atoms_and_operator_boundaries ... ok
test language::analysis_source::tests::repeated_call_argument_occurrences_have_distinct_original_spans ... ok
test language::analysis_source::tests::significant_ratio_and_quantity_trivia_preserve_original_spans ... ok
test language::analysis_source::tests::unary_literals_precedence_and_comparison_children_keep_distinct_trees ... ok
test language::analysis_source::write::tests::all_expr_variants_and_precedence_preserve_exact_trees ... ok
test language::analysis_source::write::tests::canonical_calls_use_callee_parameter_order_and_qualified_names ... ok
test language::analysis_source::write::tests::canonical_strings_and_exact_literals_use_existing_encodings ... ok
test language::analysis_source::write::tests::iterative_writer_preserves_width1024_and_empty_call_topology ... ok
test language::analysis_source::write::tests::negate_override_roundtrip_preserves_depth128_within_frame256 ... ok
test language::analysis_source::write::tests::subtree_output_respects_parent_context_and_retained_delimiters ... ok
test language::analysis_source::write::tests::typed_declaration_order_and_required_empty_values_are_canonical ... ok
test language::analysis_source::write::tests::typed_oa_sa_canonical_roundtrips_match_independent_projects ... ok
test language::analysis_source::write::tests::writer_limits_are_aggregate_exact_and_latched_without_partial_results ... ok
test language::analysis_source::write::tests::writer_lookup_scope_shape_and_depth_failures_are_model_located ... ok
test result: ok. 44 passed; 0 failed; 0 ignored; 0 measured; 108 filtered out; finished in 8.47s
@@ -0,0 +1,36 @@
{
"source": "f1d79df4979121335ed7b4ce4da84b2fca8a9ef4",
"head_after": "f1d79df4979121335ed7b4ce4da84b2fca8a9ef4",
"start": "2026-09-13T12:09:32.804745+00:00",
"end": "2026-09-13T12:09:47.043155+00:00",
"exit": 0,
"command": [
"cargo",
"test",
"--locked",
"-p",
"oa-core",
"--lib",
"language::analysis_source",
"--",
"--test-threads=1"
],
"inputs": "typed-f1d79df.inputs.json",
"changed_inputs": [],
"artifacts": [
{
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-checked-save-target-20260913\\debug\\deps\\oa_core-73987e0d7089bf1e.exe",
"bytes": 37146112,
"sha256": "786c5e6deec4fd6f00cc9954ca8190fa47c3c0bdfb0b44dccf032795155438af"
}
],
"environment": {
"CARGO_TARGET_DIR": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/analysis-checked-save-target-20260913",
"CARGO_BUILD_JOBS": "1",
"CARGO_HOME": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/toolchain/cargo",
"RUSTUP_HOME": "C:/Users/User/Documents/Git/ARCADIA-Studio/.local/toolchain/rustup"
},
"listing_members": [],
"listing_count": 0,
"listing_scope": "Names emitted by this actual Cargo test listing; focused/full runtime results have their own receipts."
}
@@ -0,0 +1,210 @@
"""Read-only portable S2c evidence verification; no compiler or artifact execution."""
import argparse
from datetime import datetime
import hashlib
import json
from pathlib import Path, PurePosixPath, PureWindowsPath
import re
import subprocess
if not __debug__:
raise RuntimeError('Optimized Python is refused; use ordinary Python -B.')
SOURCE = 'f1d79df4979121335ed7b4ce4da84b2fca8a9ef4'
BASELINE = 'a2a28f8d23a46ba1696b6a8410d4d3b5c1808f49'
PRIOR = '355f6d4d244e6b57fd89a8afd80a2dacdea69ba1'
PRIOR_PREFIX = 'harness/experiments/analysis-source-s2b-windows-20260913/archive/evidence/.local/'
PREFIX = ['cargo', 'test', '--locked', '-p', 'oa-core', '--lib']
SCOPES = ['Cargo.toml', 'Cargo.lock', 'rust-toolchain.toml', '.cargo', 'build', 'crates', 'assets', 'docs', 'examples', 'harness/fixtures']
WRITER = 'language::analysis_source::write::tests::'
MESSAGE = 'Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.'
def require(condition, reason):
if not condition:
raise RuntimeError(reason)
def sha(data):
return hashlib.sha256(data).hexdigest()
def git(repo, *args, data=None):
return subprocess.check_output(['git', *args], cwd=repo, input=data)
def audit(repo, archive):
raw = archive / 'raw'
helpers = archive / 'helpers'
read = lambda name: (raw / name).read_bytes()
document = lambda name: json.loads(read(name))
closure = document('closure-f1d79df.json')
require(closure['source'] == SOURCE and closure['verified_inputs'] == 534, 'Closure source/input count')
require(closure['listing'] == 152 and closure['typed_pass'] == 44 and closure['raw_token_pass'] == 1 and [closure['full'][k] for k in ['passed', 'failed', 'ignored']] == [136, 16, 0], 'Closure count claims')
for record in closure['records'].values():
for name, digest in record['pins'].items():
require(sha(read(name)) == digest, 'Closure binding: ' + name)
helper_sha = sha((helpers / 'admit-analysis-s2c-gate-r2.py').read_bytes())
require(helper_sha == 'd2bd3c38feb77b8e916b3d413a278d4b0960baff8e14843aed4c2b20c26c90e1', 'Admitter differs')
require(sha((helpers / 'run-analysis-source-gate.py').read_bytes()) == 'd8d9c1c9e9dc94fdd43afb4118ebc491c8eb6d89082f8441f8395b9d4265b068', 'Recorder differs')
paths = git(repo, 'ls-tree', '-r', '--name-only', SOURCE, '--', *SCOPES).decode().splitlines()
require(len(paths) == len(set(paths)) == 534, 'Committed scope count')
batch = git(repo, 'cat-file', '--batch', data=''.join(SOURCE + ':' + p + '\n' for p in paths).encode())
offset, expected, writer_source = 0, [], None
for path in paths:
end = batch.index(b'\n', offset)
blob_id, kind, size = batch[offset:end].split()
size = int(size)
data = batch[end + 1:end + 1 + size]
require(kind == b'blob' and len(data) == size and batch[end + 1 + size:end + 2 + size] == b'\n', 'Git blob framing: ' + path)
expected.append({'path': path, 'bytes': size, 'sha256': sha(data)})
if path == 'crates/oa-core/src/language/analysis_source/write/tests.rs':
writer_source = data.decode()
offset = end + size + 2
require(offset == len(batch) and writer_source is not None, 'Complete Git batch')
new = sorted(WRITER + n for n in re.findall(r'#\[test\]\s*fn (\w+)\(', writer_source))
require(len(new) == len(set(new)) == 10, 'Ten source-derived writer cases')
previous_bytes = {}
def previous(name):
if name not in previous_bytes:
previous_bytes[name] = git(repo, 'show', PRIOR + ':' + PRIOR_PREFIX + 'analysis-source-gates-20260913/' + name)
return previous_bytes[name]
old_list = json.loads(previous('list-a2a28f8.result.json'))
old_admission = json.loads(previous('list-a2a28f8.admission.json'))
old_list_log = previous('list-a2a28f8.log').decode()
old_names = re.findall(r'^([^\r\n]+): test\r?$', old_list_log, re.M)
require(old_list['source'] == old_list['head_after'] == BASELINE and old_list['exit'] == 0 and not old_list['changed_inputs'], 'Baseline listing receipt')
require(old_names == old_list['listing_members'] == old_admission['names'] and len(old_names) == len(set(old_names)) == 142, 'Baseline actual listing')
for key, suffix in [('result_sha256', '.result.json'), ('inputs_sha256', '.inputs.json'), ('log_sha256', '.log')]:
require(old_admission[key] == sha(previous('list-a2a28f8' + suffix)), 'Baseline admission binding')
require(sha(git(repo, 'show', PRIOR + ':' + PRIOR_PREFIX + 'admit-analysis-s2b-gate.py')) == old_admission['admission_helper_sha256'], 'Baseline helper binding')
names, artifact, environment, gates, last_end = None, None, None, {}, None
logs = {}
for mode in ['list', 'typed', 'tokens', 'full', 'strict']:
stem = mode + '-f1d79df'
result = document(stem + '.result.json')
log = read(stem + '.log').decode()
logs[mode] = log
require(result['source'] == result['head_after'] == SOURCE and result['changed_inputs'] == [], 'Unchanged source: ' + mode)
require(result['inputs'] == stem + '.inputs.json' and document(result['inputs']) == {'source': SOURCE, 'inputs': expected}, 'Exact 534 Git inputs: ' + mode)
start, end = (datetime.fromisoformat(result[k]) for k in ['start', 'end'])
require(start.tzinfo is not None and end.tzinfo is not None and start <= end and (last_end is None or last_end <= start), 'Closed ordered UTC times')
last_end = end
require(type(result['exit']) is int and result['exit'] == (101 if mode == 'full' else 0), 'Actual exit: ' + mode)
recorded = closure['records'][mode]
require([recorded[k] for k in ['start', 'end', 'cargo_exit']] == [result['start'], result['end'], result['exit']], 'Closure result: ' + mode)
if environment is None:
environment = result['environment']
require(result['environment'] == environment, 'Same recorded environment')
if mode == 'strict':
require(result['command'] == ['cargo', 'clippy', '--locked', '-p', 'oa-core', '--all-targets', '--', '-D', 'warnings'], 'Strict command')
require(result['artifacts'] == [] and 'Finished `dev` profile [unoptimized]' in log and not re.search(r'^\s*(warning|error)(\[|:)', log, re.M), 'Closed clean strict log')
else:
if artifact is None:
require(len(result['artifacts']) == 1, 'One test executable')
artifact = result['artifacts'][0]
require(result['artifacts'] == [artifact], 'Same recorded test executable')
emitted = re.findall(r'Running unittests [^\r\n]+ \(([^\r\n]+\.exe)\)', log)
require(len(emitted) == 1 and PureWindowsPath(emitted[0]) == PureWindowsPath(artifact['path']), 'Raw emitted executable binding')
if mode == 'list':
require(result['command'] == PREFIX + ['--', '--list'], 'List command')
names = re.findall(r'^([^\r\n]+): test\r?$', log, re.M)
require(names == result['listing_members'] and len(names) == len(set(names)) == result['listing_count'] == 152, 'Actual unique listing')
require(set(names) == set(old_names) | set(new) and not set(old_names) & set(new), 'Exact retained142 + new10')
require(re.findall(r'^(\d+) tests, (\d+) benchmarks\s*$', log, re.M) == [('152', '0')], 'Listing summary')
else:
require(result['listing_count'] == 0 and result['listing_members'] == [], 'Non-list metadata')
if mode in ['list', 'typed', 'tokens']:
admission = document(stem + '.admission.json')
selected = names if mode == 'list' else [n for n in names if ('language::analysis_source' if mode == 'typed' else 'language::raw_tokens') in n]
require(admission['mode'] == ('list' if mode == 'list' else 'focused') and admission['selector'] == (None if mode == 'list' else 'language::analysis_source' if mode == 'typed' else 'language::raw_tokens'), 'Admission mode/selector')
require(admission['source'] == SOURCE and admission['artifact'] == artifact and admission['verified_inputs'] == 534 and admission['admission_helper_sha256'] == helper_sha, 'Admission source/helper')
require(admission['names'] == selected and admission['required_new_names'] == new and admission['baseline_source'] == BASELINE and admission['baseline_members'] == 142, 'Admission exact membership')
require(admission['baseline_result_sha256'] == sha(previous('list-a2a28f8.result.json')) and admission['baseline_admission_sha256'] == sha(previous('list-a2a28f8.admission.json')), 'Admission baseline pins')
for key, suffix in [('result_sha256', '.result.json'), ('inputs_sha256', '.inputs.json'), ('log_sha256', '.log')]:
require(admission[key] == sha(read(stem + suffix)), 'Admission raw binding')
if mode in ['typed', 'tokens', 'full']:
selector = 'language::analysis_source' if mode == 'typed' else 'language::raw_tokens'
require(result['command'] == PREFIX + ([] if mode == 'full' else [selector]) + ['--', '--test-threads=1'], 'Runtime command')
actual = outcomes(log)
selected = names if mode == 'full' else [n for n in names if selector in n]
require(list(actual) == selected, 'Exact ordered runtime membership')
passed, failed, filtered = {'typed': (44, 0, 108), 'tokens': (1, 0, 151), 'full': (136, 16, 0)}[mode]
require(list(actual.values()).count('ok') == passed and list(actual.values()).count('FAILED') == failed and 'ignored' not in actual.values(), 'Actual outcomes')
status = 'FAILED' if failed else 'ok'
require(re.findall(r'^test result: ' + status + r'\. (\d+) passed; (\d+) failed; (\d+) ignored; (\d+) measured; (\d+) filtered out;', log, re.M) == [(str(passed), str(failed), '0', '0', str(filtered))], 'Actual summary')
gates[mode] = {'exit': result['exit'], 'start': result['start'], 'end': result['end'], 'log_sha256': sha(read(stem + '.log')), 'result_sha256': sha(read(stem + '.result.json'))}
require(artifact == closure['test_artifact'], 'Closure executable identity')
old_log = previous('full-a2a28f8.log').decode()
old_full = json.loads(previous('full-a2a28f8.result.json'))
require(old_full['source'] == old_full['head_after'] == BASELINE and old_full['exit'] == 101 and old_full['changed_inputs'] == [], 'Baseline failed full receipt')
require(old_full['inputs'] == 'full-a2a28f8.inputs.json' and previous(old_full['inputs']) == previous('list-a2a28f8.inputs.json'), 'Baseline full/list input equality')
old_rows, rows = outcomes(old_log), outcomes(logs['full'])
require(set(old_rows) == set(old_names) and len(old_rows) == 142 and all(rows[n] == status for n, status in old_rows.items()), 'All baseline outcomes unchanged')
require(sorted(set(rows) - set(old_rows)) == new and all(rows[n] == 'ok' for n in new), 'Every new writer case passed')
old_blocks, blocks = failure_blocks(old_log), failure_blocks(logs['full'])
failed = sorted(n for n, status in rows.items() if status == 'FAILED')
require(len(failed) == 16 and sorted(blocks) == sorted(old_blocks) == failed, 'Exact sixteen panic identities')
causes = []
for name in failed:
current, old = blocks[name], old_blocks[name]
# Ignore only process/thread identities and optional one-time backtrace hint.
normalized = lambda b: [re.sub(r"' \(\d+\) panicked", "' (THREAD) panicked", line) for line in b.splitlines() if line and not line.startswith('note: run with')]
require(normalized(current) == normalized(old), 'Panic location/complete diagnostic changed: ' + name)
require(MESSAGE in current and 'line: 1, column: 9' in current and 'start: 8, end: 9' in current, 'Header cause: ' + name)
causes.append({'name': name, 'current_block_sha256': sha(current.encode()), 'baseline_block_sha256': sha(old.encode()), 'diagnostic': next(line for line in current.splitlines() if line.startswith('called `Result::unwrap()'))})
comparison = document('full-f1d79df.comparison.json')
require(comparison['source'] == SOURCE and comparison['cargo_exit'] == 101 and comparison['passed'] == 136 and comparison['failed'] == 16 and comparison['ignored'] == 0 and comparison['failures'] == failed and comparison['new_writer_passes'] == new and comparison['unchanged_baseline_outcomes'] == 142 and comparison['verified_inputs'] == 534 and comparison['listed_outcomes'] == 152, 'Comparison receipt facts')
for name, digest in comparison['pins'].items():
require(sha(previous(name) if 'a2a28f8' in name else read(name)) == digest, 'Comparison binding: ' + name)
failure_sources = ['crates/oa-core/src/' + p for p in ['model.rs', 'language.rs', 'language_nesting_tests.rs', 'source_project.rs', 'source_project/source_migration.rs', 'source_files.rs']]
require(git(repo, 'ls-tree', '-r', SOURCE, '--', *failure_sources) == git(repo, 'ls-tree', '-r', BASELINE, '--', *failure_sources), 'Failure-path source blobs changed')
return {'source': SOURCE, 'baseline_source': BASELINE, 'prior_evidence_commit': PRIOR, 'verified_git_inputs': 534, 'listing': 152, 'typed_pass': 44, 'raw_token_pass': 1, 'full': {'passed': 136, 'failed': 16, 'ignored': 0, 'exit': 101}, 'strict_exit': 0, 'new_writer_passes': new, 'gates': gates, 'recorded_test_artifact': artifact, 'failure_causes': causes, 'unchanged_failure_sources': failure_sources, 'scope': 'Private staged writer evidence; full suite FAILED. No public8, S3/S4, native or release acceptance.'}
def outcomes(log):
rows = re.findall(r'^test ([^\r\n]+) \.\.\. (ok|FAILED|ignored)\r?$', log, re.M)
require(len(rows) == len(dict(rows)), 'Duplicate raw outcome')
return dict(rows)
def failure_blocks(log):
rows = re.findall(r'^---- (\S+) stdout ----\r?\n(.*?)(?=^---- |^failures:)', log, re.M | re.S)
require(len(rows) == len(dict(rows)), 'Duplicate panic section')
return dict(rows)
def main():
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument('--repo', required=True, type=Path, help='Git repository containing both immutable source/evidence commits')
args = parser.parse_args()
archive = Path(__file__).resolve().parent
manifest = json.loads((archive / 'manifest.json').read_bytes())
require(manifest['source'] == SOURCE and manifest['prior_evidence_commit'] == PRIOR, 'Manifest source pins')
rows = manifest['files']
paths = [r['path'] for r in rows]
require(len(paths) == len(set(paths)), 'Duplicate manifest member')
actual = {p.relative_to(archive).as_posix() for p in archive.rglob('*') if p.is_file()}
require(actual == set(paths) | {'manifest.json'}, 'Exact archive inventory')
for row in rows:
path = PurePosixPath(row['path'])
require(not path.is_absolute() and '..' not in path.parts and '\\' not in row['path'], 'Relative member required')
file = archive / row['path']
require(not file.is_symlink(), 'No linked payload')
data = file.read_bytes()
require(len(data) == row['bytes'] and sha(data) == row['sha256'], 'Payload hash: ' + row['path'])
for row in manifest['external_refs']:
data = git(args.repo, 'show', row['commit'] + ':' + row['path'])
require(len(data) == row['bytes'] and sha(data) == row['sha256'], 'Immutable prior evidence binding')
result = audit(args.repo, archive)
require(result == json.loads((archive / 'audit.json').read_bytes()), 'Recomputed independent audit differs')
print(json.dumps({'verified_payloads': len(rows), 'verified_git_inputs': 534, 'listing': 152, 'typed_pass': 44, 'token_pass': 1, 'full': result['full'], 'strict_exit': 0, 'source': SOURCE}))
if __name__ == '__main__':
main()