Record the executed typed-source checkpoint and retained failures

This commit is contained in:
2026-09-12 23:04:59 -07:00
parent c28abcf13a
commit 0ecdadbb9c
42 changed files with 25855 additions and 7 deletions
+1
View File
@@ -85,3 +85,4 @@ harness/experiments/analysis-source-s0-s1-windows-20260913/** -text whitespace=-
harness/experiments/analysis-source3-bridge-windows-20260913/** -text whitespace=-blank-at-eol,-blank-at-eof,cr-at-eol
harness/scenario-analysis-version-integration-review-20260913.md -text whitespace=cr-at-eol
harness/scenario-analysis-version-integration-inputs-20260913.json -text whitespace=cr-at-eol
harness/experiments/analysis-source-s2a-windows-20260913/** -text whitespace=-blank-at-eol,-blank-at-eof,cr-at-eol
+14
View File
@@ -442,3 +442,17 @@ Scenario row, global definition, scoped parameter and call-site edit identities.
The audit specifies failure cases and compatible implementation seams. Public
source8, resource calibration, combined save/reopen and interaction acceptance
remain separate requirements; neither isolated suite establishes their completion.
## Private source cursor and frame accounting — 2026-09-13
The [S2a checkpoint](release-analysis-source-s2a-20260913.md) uses one raw scanner
with separate legacy and typed adapters. Preserve the public legacy token contract,
including signed JSON numbers and contextual alias classification. Typed fields
borrow one full-file token stream and shared budget, retaining original spans
without rescanning field substrings. Declaration, dimension and override braces
count toward active syntax frames alongside expression/type delimiters. A successful
declaration restores the caller's inherited depth; a failed candidate is discarded.
Missing global and scoped parameter IDs remain explicit stabilization metadata,
not new random identities assigned on each parse. Public source8 integration must
thread the same accounting through the outer project and included files; this
private checkpoint does not itself admit a complete version8 source bundle.
+16 -7
View File
@@ -11,12 +11,15 @@ active. The VPN remains untouched.
## Current integrated candidate and evidence
Branch `codex/behavior-authoring-20260910`, published as `codex/release1-956atf`.
Current source **e1240295bd114d23d3f67a69e6b38bdb2e25bb0d** combines the canvas
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.
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
Clippy pass on578 unchanged inputs. Combined full-suite, GUI/native and package
acceptance are not established; a shared Find Close selection defect remains an
explicit acceptance concern. [Exact partial evidence](release-navigation-palette-e124029-windows-20260913.md).
acceptance are not established. [Exact partial evidence](release-navigation-palette-e124029-windows-20260913.md).
The matching core comparator and migrated fixtures pass their bounded preparation
checks, including an independently specified six-token rename. The original
migration-evaluator failure and its correction are preserved in
@@ -67,12 +70,18 @@ failures and corrections. Earlier authoring and allocation checkpoints remain in
## Isolated contributions and material limitations
Analysis/core source checkpoint **6216cff4cfeb1502b8453b40547aacb74941f2b2**,
Analysis/core source checkpoint **b2c970b4673e062e47eadd12906d2316c4b1a7b3**,
publication branch `codex/analysis-core-956atf-20260911`, is not integrated into
production. It adds source-save decode/equality containment and a private staged
expression parser, then repairs the frozen source3 lowering envelope. All4 bridge,
11 parser and4 save-guard tests and strict all-target Clippy pass on520 unchanged
inputs. [Exact bridge and syntax evidence](release-analysis-source3-bridge-20260913.md).
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.
[Earlier bridge evidence](release-analysis-source3-bridge-20260913.md) remains scoped
to6216cff.
The earlier2c515cf full library run had98 passes and16 failures:14 rejected the
unsupported source8 header and2 exposed the now-corrected legacy bridge mismatch.
Its original failed suite and naming lint remain in
@@ -0,0 +1,21 @@
# Source S2a Windows gate evidence
Source `b2c970b4673e062e47eadd12906d2316c4b1a7b3` adds shared raw scanning with a legacy adapter and a private typed declaration/cursor stage. The [checkpoint report](../../release-analysis-source-s2a-20260913.md) states the boundary. Public source8 stays disabled.
[manifest.json](manifest.json) binds 36 raw files (1,085,294 bytes): seven closed gate triples, three admission receipts, original recorders/admission helper, independent audit scripts/results/review, source handoff and this archival helper. Every raw file is copied byte-identically from its original path. Prior listing/failure dependencies are linked and hashed rather than duplicated. Executables and toolchains are omitted; original executable paths/hashes and input manifests remain unchanged.
| Gate | Actual outcome |
| --- | --- |
| Core listing | 129 unique tests; exit 0 |
| Typed syntax | 21 passed; exit 0 |
| Legacy token fixture | 1 passed; exit 0 |
| Full core library | 113 passed / 16 failed; exit 101 |
| Strict core all-target Clippy | exit 0; closed 2026-09-13 05:32:11.812372 UTC |
| Production-language listing | 16 unique tests; exit 0 |
| Production-language full target | 7 passed / 9 failed / 0 ignored; exit 101 |
All seven gates bind the same 524 unchanged inputs. The independent core audit compares every input with its pinned Git blob, all 129 runtime names with the actual listing, artifact hashes and admission bindings. All eleven additions and eight retained bridge/save guards pass. The sixteen full-library failures exactly retain the earlier failed-name set and now all stop at unsupported source8; the two legacy examples advanced from their old definitions-envelope error. Production-language outcomes are compared separately with their actual listing before archiving. No compiler, test, GUI or Git write is run by the archival helper.
The separate production-language target has eight public8 header failures and one outdated V2 oracle projection. Recursive comparison of the complete raw retained/original Debug values found only a left-only empty `/definitions` catalog; all other original structure and values match. The pinned V2 fixture equals the right operand. This does not show V2 data loss, but the test remains failed and later assertions did not execute. The compact comparison helper/result and original raw log are preserved.
This checkpoint does not establish passing full-core behavior, public source8 persistence/migration/update, resource-profile adoption, desktop integration or GUI acceptance. Reproduction requires the pinned source and a matching Windows build environment, with recorded absolute paths adapted.
@@ -0,0 +1,54 @@
"""Admit the eleven independently named S2a additions and retained baseline cases."""
from pathlib import Path
import hashlib, json, re, subprocess, sys
base=Path(__file__).resolve().parent.parent
root=base/'.local/analysis-core-worktree-20260911'
folder=base/'.local/analysis-source-gates-20260913'
name=sys.argv[1]
assert re.fullmatch(r'[a-zA-Z0-9-]+',name)
path=folder/(name+'.result.json'); record=json.loads(path.read_bytes())
assert record['exit']==0 and not record['changed_inputs'] and record['source']==record['head_after']
assert subprocess.check_output(['git','rev-parse','HEAD'],cwd=root).decode().strip()==record['source']
inputs_path=folder/record['inputs']; inputs=json.loads(inputs_path.read_bytes())
assert inputs['source']==record['source'] and len(inputs['inputs'])==524
for entry in inputs['inputs']:
raw=(root/entry['path']).read_bytes()
assert len(raw)==entry['bytes'] and hashlib.sha256(raw).hexdigest()==entry['sha256']
assert len(record['artifacts'])==1
artifact=record['artifacts'][0]; raw=Path(artifact['path']).read_bytes()
assert len(raw)==artifact['bytes'] and hashlib.sha256(raw).hexdigest()==artifact['sha256']
log_path=folder/(name+'.log'); log=log_path.read_text(encoding='utf-8')
if record['command'][-1]=='--list':
original_path=folder/'list-6216cff.result.json'
original=json.loads(original_path.read_bytes())
admission=json.loads((folder/'list-6216cff.admission.json').read_bytes())
assert admission['result_sha256']==hashlib.sha256(original_path.read_bytes()).hexdigest()
assert len(original['listing_members'])==118
new_names={'language::analysis_source::declarations::tests::inherited_version_root_and_short_word_contracts_do_not_enable_public8', 'language::analysis_source::declarations::tests::required_declarations_have_independent_typed_body_and_header_oracles', 'language::analysis_source::declarations::tests::borrowed_cursor_preserves_full_file_spans_and_does_not_rescan_fields', 'language::raw_tokens::tests::legacy_adapter_retains_authored_numeric_operator_and_trivia_tokens', 'language::analysis_source::declarations::tests::missing_required_fields_and_unknown_or_duplicate_entries_reject_locally', 'language::analysis_source::declarations::tests::empty_unbound_and_all_scalar_list_types_are_explicit_valid_syntax', 'language::analysis_source::declarations::tests::typed_brace_frames_have_exact_zero_one_two_boundaries', 'language::analysis_source::declarations::tests::declaration_frames_restore_the_callers_inherited_context', 'language::analysis_source::declarations::tests::declaration_budgets_share_literals_types_references_and_failure_state', 'language::analysis_source::declarations::tests::missing_id_metadata_is_stable_and_parameter_ids_are_owner_scoped', 'language::analysis_source::declarations::tests::typed_frame_budget_and_truncated_declaration_cleanup_have_nearby_successes'}
names=record['listing_members']
assert len(names)==len(set(names))==129
assert set(names)==set(original['listing_members'])|new_names
assert re.findall(r'^(\d+) tests, (\d+) benchmarks\s*$',log,re.M)==[('129','0')]
mode='list'
else:
listing_name,selector=sys.argv[2:4]
listing_path=folder/(listing_name+'.result.json'); listing=json.loads(listing_path.read_bytes())
admission=json.loads((folder/(listing_name+'.admission.json')).read_bytes())
assert admission['result_sha256']==hashlib.sha256(listing_path.read_bytes()).hexdigest()
assert admission['source']==listing['source']==record['source']
assert admission['artifact']==artifact and admission['mode']=='list'
assert selector in record['command']
names=[n for n in listing['listing_members'] if selector in n]
actual=re.findall(r'^test ([^\r\n]+) \.\.\. ok\s*$',log,re.M)
assert names and len(actual)==len(set(actual)) and set(actual)==set(names)
assert re.search(rf'test result: ok\. {len(actual)} passed; 0 failed; 0 ignored;',log)
mode='focused'
receipt={'source':record['source'],'mode':mode,'artifact':artifact,'names':names,
'result_sha256':hashlib.sha256(path.read_bytes()).hexdigest(),
'inputs_sha256':hashlib.sha256(inputs_path.read_bytes()).hexdigest(),
'log_sha256':hashlib.sha256(log_path.read_bytes()).hexdigest(),
'verified_inputs':len(inputs['inputs']),
'admission_helper_sha256':hashlib.sha256(Path(__file__).read_bytes()).hexdigest()}
with (folder/(name+'.admission.json')).open('x',encoding='utf-8',newline='\n') as stream:
stream.write(json.dumps(receipt,indent=2)+'\n')
print(json.dumps({'name':name,'mode':mode,'members':len(names),'source':record['source']}))
@@ -0,0 +1,239 @@
Finished `test` profile [unoptimized] target(s) in 2.73s
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 129 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::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::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' (10208) 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' (3332) 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' (6356) 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' (3744) 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' (10700) 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' (8756) 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' (9320) 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' (6752) 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' (8556) 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' (10884) 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' (9256) 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' (9288) 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' (8696) 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' (6572) 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' (8752) 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' (2416) 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. 113 passed; 16 failed; 0 ignored; 0 measured; 0 filtered out; finished in 52.34s
error: test failed, to rerun pass `-p oa-core --lib`
@@ -0,0 +1,35 @@
{
"source": "b2c970b4673e062e47eadd12906d2316c4b1a7b3",
"head_after": "b2c970b4673e062e47eadd12906d2316c4b1a7b3",
"start": "2026-09-13T05:23:05.136920+00:00",
"end": "2026-09-13T05:24:01.547372+00:00",
"exit": 101,
"command": [
"cargo",
"test",
"--locked",
"-p",
"oa-core",
"--lib",
"--",
"--test-threads=1"
],
"inputs": "full-b2c970b.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": 35920896,
"sha256": "67249b37f30b596eb3deb95a217bd77eb06905bdf7b6c27b74fec16f9f0362e5"
}
],
"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,36 @@
{
"source": "b2c970b4673e062e47eadd12906d2316c4b1a7b3",
"head_after": "b2c970b4673e062e47eadd12906d2316c4b1a7b3",
"start": "2026-09-13T05:39:47.589715+00:00",
"end": "2026-09-13T05:39:55.732295+00:00",
"exit": 101,
"command": [
"cargo",
"test",
"--locked",
"-p",
"oa-core",
"--test",
"language",
"--",
"--test-threads=1"
],
"inputs": "legacy-full-b2c970b.inputs.json",
"changed_inputs": [],
"artifacts": [
{
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-checked-save-target-20260913\\debug\\deps\\language-4b673916c5851673.exe",
"bytes": 26796032,
"sha256": "cc518b83924487f66cea72d8c697e9b1a639787e26317c60b8338d8dca556007"
}
],
"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,21 @@
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 16s
Running tests\language.rs (C:\Users\User\Documents\Git\ARCADIA-Studio\.local\analysis-checked-save-target-20260913\debug\deps\language-4b673916c5851673.exe)
all_typed_fields_round_trip_with_stable_aliases_and_occurrences: test
authoring_defaults_and_forward_references_remain_strict: test
branching_reused_processes_and_chains_have_lossless_readable_source: test
complete_normative_examples_are_accepted_by_the_real_parser: test
coordinate_bits_and_permitted_strings_survive_text_and_storage: test
deeply_nested_invalid_draft_returns_a_diagnostic_without_exhausting_the_stack: test
global_identity_and_alias_collisions_include_diagram_nodes_and_project: test
malformed_json_never_ignores_duplicate_maps_or_nested_unknown_fields: test
original_v2_text_and_json_preserve_identity_and_mixed_scenarios_after_extensions: test
text_and_model_transactions_preserve_history_with_stable_aliases: test
tolerant_analysis_covers_unicode_and_returns_declarations_before_failure: test
typed_events_vertices_and_transition_kinds_round_trip_in_both_layers: test
typed_scenario_messages_values_and_reuse_round_trip_in_both_work_perspectives: test
typed_unknown_fields_enums_duplicates_and_reference_spelling_are_rejected: test
v1_repeated_exchange_occurrences_and_authored_aliases_survive: test
v1_text_and_json_migrate_deterministically_without_losing_legacy_semantics: test
16 tests, 0 benchmarks
@@ -0,0 +1,53 @@
{
"source": "b2c970b4673e062e47eadd12906d2316c4b1a7b3",
"head_after": "b2c970b4673e062e47eadd12906d2316c4b1a7b3",
"start": "2026-09-13T05:32:32.950899+00:00",
"end": "2026-09-13T05:38:51.519016+00:00",
"exit": 0,
"command": [
"cargo",
"test",
"--locked",
"-p",
"oa-core",
"--test",
"language",
"--",
"--list"
],
"inputs": "legacy-list-b2c970b.inputs.json",
"changed_inputs": [],
"artifacts": [
{
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-checked-save-target-20260913\\debug\\deps\\language-4b673916c5851673.exe",
"bytes": 26796032,
"sha256": "cc518b83924487f66cea72d8c697e9b1a639787e26317c60b8338d8dca556007"
}
],
"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": [
"all_typed_fields_round_trip_with_stable_aliases_and_occurrences",
"authoring_defaults_and_forward_references_remain_strict",
"branching_reused_processes_and_chains_have_lossless_readable_source",
"complete_normative_examples_are_accepted_by_the_real_parser",
"coordinate_bits_and_permitted_strings_survive_text_and_storage",
"deeply_nested_invalid_draft_returns_a_diagnostic_without_exhausting_the_stack",
"global_identity_and_alias_collisions_include_diagram_nodes_and_project",
"malformed_json_never_ignores_duplicate_maps_or_nested_unknown_fields",
"original_v2_text_and_json_preserve_identity_and_mixed_scenarios_after_extensions",
"text_and_model_transactions_preserve_history_with_stable_aliases",
"tolerant_analysis_covers_unicode_and_returns_declarations_before_failure",
"typed_events_vertices_and_transition_kinds_round_trip_in_both_layers",
"typed_scenario_messages_values_and_reuse_round_trip_in_both_work_perspectives",
"typed_unknown_fields_enums_duplicates_and_reference_spelling_are_rejected",
"v1_repeated_exchange_occurrences_and_authored_aliases_survive",
"v1_text_and_json_migrate_deterministically_without_losing_legacy_semantics"
],
"listing_count": 16,
"listing_scope": "Names emitted by this actual Cargo test listing; focused/full runtime results have their own receipts."
}
@@ -0,0 +1,145 @@
{
"source": "b2c970b4673e062e47eadd12906d2316c4b1a7b3",
"mode": "list",
"artifact": {
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-checked-save-target-20260913\\debug\\deps\\oa_core-73987e0d7089bf1e.exe",
"bytes": 35920896,
"sha256": "67249b37f30b596eb3deb95a217bd77eb06905bdf7b6c27b74fec16f9f0362e5"
},
"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::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::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": "5684d349d284d2d040eb2e80f40762808cfd2f1285be3db1c1c4d3b0bc276495",
"inputs_sha256": "53137c230487519310eebcb3bdb22bae52f2ca95857c8b742f34440a37992763",
"log_sha256": "f852b4e6aa385f7e6f7bcb4ae770a4d6f500580f084febc1c9b2adceb0d9f54f",
"verified_inputs": 524,
"admission_helper_sha256": "908b09b044795a270590ea2e8d558f1a32442c873f81399ddc9fb402b992f12d"
}
@@ -0,0 +1,134 @@
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 7m 21s
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::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::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
129 tests, 0 benchmarks
@@ -0,0 +1,165 @@
{
"source": "b2c970b4673e062e47eadd12906d2316c4b1a7b3",
"head_after": "b2c970b4673e062e47eadd12906d2316c4b1a7b3",
"start": "2026-09-13T05:13:10.240376+00:00",
"end": "2026-09-13T05:20:33.890301+00:00",
"exit": 0,
"command": [
"cargo",
"test",
"--locked",
"-p",
"oa-core",
"--lib",
"--",
"--list"
],
"inputs": "list-b2c970b.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": 35920896,
"sha256": "67249b37f30b596eb3deb95a217bd77eb06905bdf7b6c27b74fec16f9f0362e5"
}
],
"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::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::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": 129,
"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 7m 37s
@@ -0,0 +1,30 @@
{
"source": "b2c970b4673e062e47eadd12906d2316c4b1a7b3",
"head_after": "b2c970b4673e062e47eadd12906d2316c4b1a7b3",
"start": "2026-09-13T05:24:31.457419+00:00",
"end": "2026-09-13T05:32:11.812372+00:00",
"exit": 0,
"command": [
"cargo",
"clippy",
"--locked",
"-p",
"oa-core",
"--all-targets",
"--",
"-D",
"warnings"
],
"inputs": "strict-b2c970b.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,17 @@
{
"source": "b2c970b4673e062e47eadd12906d2316c4b1a7b3",
"mode": "focused",
"artifact": {
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-checked-save-target-20260913\\debug\\deps\\oa_core-73987e0d7089bf1e.exe",
"bytes": 35920896,
"sha256": "67249b37f30b596eb3deb95a217bd77eb06905bdf7b6c27b74fec16f9f0362e5"
},
"names": [
"language::raw_tokens::tests::legacy_adapter_retains_authored_numeric_operator_and_trivia_tokens"
],
"result_sha256": "238cc7b141b7f0a3eeaed6f5079d9dbf2f830dc8687c2d6383020f2e9aad6192",
"inputs_sha256": "53137c230487519310eebcb3bdb22bae52f2ca95857c8b742f34440a37992763",
"log_sha256": "32cd7d2bda89d12695617dd956b85b286e7fe86129c78296fa3e3fcc19c31417",
"verified_inputs": 524,
"admission_helper_sha256": "908b09b044795a270590ea2e8d558f1a32442c873f81399ddc9fb402b992f12d"
}
@@ -0,0 +1,8 @@
Finished `test` profile [unoptimized] target(s) in 2.68s
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; 128 filtered out; finished in 0.23s
@@ -0,0 +1,36 @@
{
"source": "b2c970b4673e062e47eadd12906d2316c4b1a7b3",
"head_after": "b2c970b4673e062e47eadd12906d2316c4b1a7b3",
"start": "2026-09-13T05:22:16.981434+00:00",
"end": "2026-09-13T05:22:21.632353+00:00",
"exit": 0,
"command": [
"cargo",
"test",
"--locked",
"-p",
"oa-core",
"--lib",
"language::raw_tokens",
"--",
"--test-threads=1"
],
"inputs": "tokens-b2c970b.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": 35920896,
"sha256": "67249b37f30b596eb3deb95a217bd77eb06905bdf7b6c27b74fec16f9f0362e5"
}
],
"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,37 @@
{
"source": "b2c970b4673e062e47eadd12906d2316c4b1a7b3",
"mode": "focused",
"artifact": {
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-checked-save-target-20260913\\debug\\deps\\oa_core-73987e0d7089bf1e.exe",
"bytes": 35920896,
"sha256": "67249b37f30b596eb3deb95a217bd77eb06905bdf7b6c27b74fec16f9f0362e5"
},
"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::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"
],
"result_sha256": "2bc1c684a2f848e9cf8f64bc9ab78e0cfd64f3a3b40addf2f09f541a777e5099",
"inputs_sha256": "53137c230487519310eebcb3bdb22bae52f2ca95857c8b742f34440a37992763",
"log_sha256": "ffa47958eab98bb2223133b09ef1e446883e8a0b599bc4c8db7127b52760500e",
"verified_inputs": 524,
"admission_helper_sha256": "908b09b044795a270590ea2e8d558f1a32442c873f81399ddc9fb402b992f12d"
}
@@ -0,0 +1,28 @@
Finished `test` profile [unoptimized] target(s) in 2.31s
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 21 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::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 result: ok. 21 passed; 0 failed; 0 ignored; 0 measured; 108 filtered out; finished in 0.27s
@@ -0,0 +1,36 @@
{
"source": "b2c970b4673e062e47eadd12906d2316c4b1a7b3",
"head_after": "b2c970b4673e062e47eadd12906d2316c4b1a7b3",
"start": "2026-09-13T05:21:33.956125+00:00",
"end": "2026-09-13T05:21:37.519803+00:00",
"exit": 0,
"command": [
"cargo",
"test",
"--locked",
"-p",
"oa-core",
"--lib",
"language::analysis_source",
"--",
"--test-threads=1"
],
"inputs": "typed-b2c970b.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": 35920896,
"sha256": "67249b37f30b596eb3deb95a217bd77eb06905bdf7b6c27b74fec16f9f0362e5"
}
],
"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,93 @@
{
"source": "b2c970b4673e062e47eadd12906d2316c4b1a7b3",
"git_blob_verified_inputs": 524,
"listing_unique": 129,
"full": {
"exit": 101,
"passed": 113,
"failed": 16,
"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"
],
"same_failure_names_as_2c515cf": true,
"changed_cause_from_legacy_definitions_to_header": [
"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"
]
},
"new11_all_passed": [
"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::raw_tokens::tests::legacy_adapter_retains_authored_numeric_operator_and_trivia_tokens"
],
"retained8_all_passed": [
"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::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"
],
"typed_passed": 21,
"tokens_passed": 1,
"artifact": {
"path": "C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-checked-save-target-20260913\\debug\\deps\\oa_core-73987e0d7089bf1e.exe",
"bytes": 35920896,
"sha256": "67249b37f30b596eb3deb95a217bd77eb06905bdf7b6c27b74fec16f9f0362e5"
},
"records": {
"list-b2c970b": {
"exit": 0,
"result_sha256": "5684d349d284d2d040eb2e80f40762808cfd2f1285be3db1c1c4d3b0bc276495",
"inputs_sha256": "53137c230487519310eebcb3bdb22bae52f2ca95857c8b742f34440a37992763",
"log_sha256": "f852b4e6aa385f7e6f7bcb4ae770a4d6f500580f084febc1c9b2adceb0d9f54f"
},
"typed-b2c970b": {
"exit": 0,
"result_sha256": "2bc1c684a2f848e9cf8f64bc9ab78e0cfd64f3a3b40addf2f09f541a777e5099",
"inputs_sha256": "53137c230487519310eebcb3bdb22bae52f2ca95857c8b742f34440a37992763",
"log_sha256": "ffa47958eab98bb2223133b09ef1e446883e8a0b599bc4c8db7127b52760500e"
},
"tokens-b2c970b": {
"exit": 0,
"result_sha256": "238cc7b141b7f0a3eeaed6f5079d9dbf2f830dc8687c2d6383020f2e9aad6192",
"inputs_sha256": "53137c230487519310eebcb3bdb22bae52f2ca95857c8b742f34440a37992763",
"log_sha256": "32cd7d2bda89d12695617dd956b85b286e7fe86129c78296fa3e3fcc19c31417"
},
"full-b2c970b": {
"exit": 101,
"result_sha256": "8c8663ae841204a46331adc81e6298c3ecaea14f237049f606fe8a4d15d1d861",
"inputs_sha256": "53137c230487519310eebcb3bdb22bae52f2ca95857c8b742f34440a37992763",
"log_sha256": "0e0fd205258cd7f1b6a898486c35514a359eb02e3b17382b0f2cffb4d443cfb3"
}
},
"strict": {
"state": "result absent at audit; not inspected"
},
"admission_helper_sha256": "908b09b044795a270590ea2e8d558f1a32442c873f81399ddc9fb402b992f12d"
}
@@ -0,0 +1,95 @@
# Source8 S2a immutable source handoff
2026-09-13. Codex-956atf `/root/source8_lowering_plan`. Worktree `.local/as2-20260913`, branch `codex/analysis-s2-956atf-20260913`, **latest clean commit `b2c970b4673e062e47eadd12906d2316c4b1a7b3`**. Initial S2a checkpoint `021bdc5a921885d1f5ce5b3a4b9cdbc03a73ab68` was based on `6216cff4cfeb1502b8453b40547aacb74941f2b2`; the latest commit contains the narrowly reviewed corrections below.
This is the authorized first declaration/cursor/span checkpoint, not S2 lowering/writer completion. **No Cargo, compiler, executable tests, native UI or Gitea actions were run by this worker.** Parent owns immutable review, compiler lease, integration and publication. The original `.local/analysis-core-worktree-20260911` was not edited during S2a.
Parent-reported baseline evidence: strict passed on `9ff6e7c`; `6216cff4` has 118 listed core library tests and actual four bridge + eleven syntax + four save-guard passes, with 520 unchanged inputs, followed by all-targets strict PASS. None of that proves this new commit passes. Retain the old public source8 failure evidence until the complete public adapter exists.
## Concrete result and ownership boundary
Initial checkpoint: eight source files changed, 1,719 insertions / 325 deletions. The totals include moved lexical/cursor code and 531 lines of declaration tests plus 120 lines of lexical fixtures. Correction `b2c970b` adds 90 lines/removes2 in three files (two new frame tests account for most additions). All tests remain unrun on the latest source by this worker.
| File | Change |
| --- | --- |
| `language.rs` | Add `mod raw_tokens`; replace existing `tokenize` body with `raw_tokens::legacy(source)`. No other source changes. |
| New `language/raw_tokens.rs` | One streaming token iterator over raw source; legacy strict/tolerant adapter reproduces existing token classes/shapes, greedy signed JSON numeric classification, and individual-character errors for new expression punctuation. Authored compatibility fixtures. JSON string validation uses temporary allocation inherited from the old tokenizer; the iterator is not allocation-free. |
| `language/analysis_source.rs` | Add private cursor/declarations modules. Existing expression-only wrapper scans once, invokes borrowed binding parser, then requires cursor EOF. |
| `language/analysis_source/lex.rs` | Replace separate scanner with source8 significant-token adapter over the shared raw scanner. It charges source bytes once and every token, including trivia, before scanning/storing. |
| New `language/analysis_source/cursor.rs` | Move shared cursor, token/span/name/literal/frame helpers out of expression parser; add quoted strings and exact-only literal consumption for declarations. |
| `language/analysis_source/syntax.rs` | Existing iterative Expr machine consumes the shared cursor; caller now owns EOF/field delimiter. Reuse shared exact literal helper. Entry checks the latched budget before even `unbound`. |
| New `language/analysis_source/declarations.rs` | Required typed header/body/field/type/input/override grammar, identity insertion metadata and duplicate checks. No resolution/model construction. |
| New `language/analysis_source/declarations/tests.rs` | Eight authored declaration/cursor/identity/budget contract tests. |
The existing `#[cfg(test)] mod analysis_source` boundary remains. No public8 header admission, new public API, new production DeclKind, writer, model/semantic mutation, source_project integration or schema/codec switch. The nine short words are recognized **only by the staged declaration function**, and do not enter `reserved()` or the public declaration map. The public legacy token contract remains intentionally unchanged, including negative numbers as one Number token and `+1` as Error. This adapter choice was explicitly confirmed by the parent during implementation.
`source3_bridge.rs` and both root-owned hooks are unchanged. File SHA256 remains `e3a76cfdacf6d85ce3086dc9031aeab5115496786ddf197510939ac0e0c5310c`; the production language diff contains only the raw module declaration and tokenizer body replacement. No source_project/model/persistence files changed.
## Exact private interfaces
`raw_tokens::Scanner::new(source)` implements Iterator of raw `Token { class, span, legacy_number_part }`. Numeric tokens are never converted through JSON here. String validity uses the same JSON-string admission as the former public tokenizer. The legacy adapter uses bounded token lookahead to join the old contiguous numeric-token alphabet, then applies the existing JSON Number classification. This intentionally preserves old numeric validation at that legacy adapter boundary. The source8 adapter bypasses that number conversion and uses Exact at literal consumption. Operators do not become accepted old grammar just because the shared scanner recognizes them.
`analysis_source::lex::tokens(source, &mut Budget) -> Result<Vec<Token>, Error>` remains the charged source8 adapter. Tokens are significant-only and keep full-file byte spans. Scanner trivia still consumes token charges. A compile owner must pass the same Budget across its reachable files; no implicit session or per-field budget was added.
`Cursor::new(source, &tokens, &mut Budget)` borrows the full source/token stream. Its public-to-sibling fields are `source`, `tokens`, `cursor`, `frames`, `budget`. `syntax::binding(&mut Cursor) -> Result<Binding, Error>` consumes one binding and leaves its following token untouched. It does not search ahead for field endings or rescan source substrings. Nested commas and closes still belong to the existing explicit-task Expr machine. `Cursor::end()` enforces EOF when the caller needs it; all spans including numeric trivia remain original full-file offsets.
`declarations::parse(&mut Cursor, version: u32, lexical_owner: Option<Id>) -> Result<Declaration, Error>` consumes exactly one typed declaration from that cursor. `version` is the caller's inherited entry policy, not a fragment-selected mode. It rejects any version other than8, any lexical owner and unsupported/long declaration word before allocating a declaration. The outer parser/include owner is deliberately not implemented here.
Typed syntax:
- `DeclarationKind`: QuantityKind, Unit, Calculation, Property(Layer), Check(Layer), Case(Layer). `declaration_kind(word)` recognizes precisely the nine short neutral/OA/SA words.
- `Declaration`: Header, whole span, brace-excluding body span, optional description/explicit root-parent field, typed Body.
- `Header`: kind/token span, alias token+name, display name and its string token span, identity metadata and header span.
- `IdentitySyntax`: optional UUID value, optional `id` keyword and literal spans, optional insertion byte offset. **No UUIDs are generated.** Missing global/parameter IDs stay unresolved and repeat parsing yields identical syntax. The later stabilization owner assigns IDs, inserts them once and reparses exact bytes. This follows r2 line196 without pretending syntax parsing already performs bundle stabilization.
- `Field<T>`: complete field span including keyword/semicolon, separate keyword span, original value span, typed value. The value-span meaning matches existing top-level field consumers.
- `TypeSyntax`: whole type span, ordered scalar syntax/span and List boolean; exactly six forms. Nested List rejects. Quantity references remain unresolved.
- `ParameterSyntax`: whole input span, name/token, identity metadata and type. Authored order stays a Vec. Duplicate names and explicit IDs reject within one calculation; IDs are not inserted into any global registry.
- `DimensionSyntax`: fixed seven exponent slots plus authored ordered entry/axis/exponent spans. Unknown/duplicate axes and values outside -32..32 reject.
- `ExactSyntax`: Exact value plus full/component literal syntax. Scale/offset accept literal-only syntax, using the same exact helper as Expr literals.
- `OverrideSyntax`: full entry, target alias token, binding and its span; an ordered Vec until future typed resolution. Duplicate names reject before map construction.
- `Body` variants have required non-Option typed fields: QuantityKind(dimension/algebra), Unit(kind/scale/offset/symbol), Calculation(ordered parameters/result/body), Property(subject/type/base), Check(predicate), Case(ModelBaseline/explicit overrides). Only documented optional fields remain Option. Description can be absent; the three analysis roots may explicitly state `parent none`; definitions reject parent fields.
Expr syntax remains all thirteen variants. Repeated call argument tokens have distinct spans under separate actual Expr nodes; the authored declaration test verifies all four labels in the repeated two-call discriminator. S2b/S3 must attach owner/field/path and resolved callee/ParameterId identities. This checkpoint does not claim those qualified semantic index keys already exist.
## Authored tests, all unrun on this commit
Existing eleven `language::analysis_source::tests::*` tests were retained byte-identical. Existing public token control expectations were not weakened or replaced. The new tests are:
1. `language::raw_tokens::tests::legacy_adapter_retains_authored_numeric_operator_and_trivia_tokens`: exact expected classes/text/contiguous spans for adjacent/spaced minus, exponent signs, plus, malformed atoms, combined operator legacy errors, comments, Unicode, invalid/incomplete strings, control characters and contextual words.
2. `language::analysis_source::declarations::tests::required_declarations_have_independent_typed_body_and_header_oracles`: independently expected required bodies/headers for all nine declaration words, dimensional/algebra/unit numeric values, calculation parameter order/Expr topology, property/check/case fields.
3. `...::empty_unbound_and_all_scalar_list_types_are_explicit_valid_syntax`: six types, zero parameters, unbound, empty dimensions/overrides and optional links.
4. `...::missing_required_fields_and_unknown_or_duplicate_entries_reject_locally`: remove every required field, duplicate singleton fields/axes/parameter names+IDs/call arguments/overrides, unknown fields, literal-only violations, invalid types/dimensions, required subject/base violations and exact duplicate target span.
5. `...::borrowed_cursor_preserves_full_file_spans_and_does_not_rescan_fields`: two declarations on one charged stream with Unicode/CRLF/ratio comments, cursor continuation, exact body/input/type/literal/component spans, four distinct repeated-call key spans and unchanged lexical byte/token counters. Independently expected nine reference occurrences.
6. `...::missing_id_metadata_is_stable_and_parameter_ids_are_owner_scoped`: repeat parse exact syntax equality, header/parameter insertion offsets including comments, explicit parameter/global UUID collision and separate calculation reuse.
7. `...::inherited_version_root_and_short_word_contracts_do_not_enable_public8`: inherited version/root failures, long words excluded, existing contextual aliases still valid on public source7, public8 still rejects and old versions still reject short analysis declarations.
8. `...::declaration_budgets_share_literals_types_references_and_failure_state`: deterministic numeric/entry near-limit success and limit-1 failure, shared cross-unit type/subject/unit refs, latched first failure with no later literal work, and borrowed `unbound` cannot escape an exhausted budget.
9. `...::typed_frame_budget_and_truncated_declaration_cleanup_have_nearby_successes`: declaration + nested List/Quantity frame3 success/frame2 reject after correction `b2c970b`, truncation across declaration/override/call/ratio boundaries and fresh subsequent syntax parse.
10. `...::typed_brace_frames_have_exact_zero_one_two_boundaries` (added in `b2c970b`): standalone unbound succeeds with zero frames; the smallest calculation needs one; empty dimension and override blocks need two including their declaration. Each 0/1/2 ceiling has exact success/failure and located-brace assertions; successful declarations restore zero and report the independently expected deepest frame.
11. `...::declaration_frames_restore_the_callers_inherited_context` (added in `b2c970b`): a caller holding one outer frame causes a scalar calculation to reject at ceiling1 and succeed at ceiling2. Two sequential declarations restore the same caller frame rather than accumulating depth or resetting it.
## Reviewed correction history
Parent/fresh critic source review of `021bdc5` identified two concrete corrections before executable gating. `b2c970b4673e062e47eadd12906d2316c4b1a7b3` addresses them without changing unrelated production behavior:
- The authored `@alias` lexical fixture now expects `Keyword`, matching both the frozen `reserved()` behavior and the new legacy adapter. Only the test expectation changed; the production tokenizer did not.
- `declarations::parse`, `Cursor::dimension` and `Cursor::overrides` now reserve an active syntax frame before their opening brace and close it after the matching closing brace. The existing Expr/type/algebra/ratio delimiter accounting is unchanged. This makes typed-brace overhead explicit and consistent; it is not a claim that the previous fixed brace undercount permitted unbounded recursive syntax. Standalone S1 expression tests remain byte-identical and their frame counts remain unchanged.
The current private cursor starts at zero only when its caller creates a standalone parse context. Future S4 project/include integration owns the inherited outer syntax context and must pass/preserve that context consistently; declaration parsing adds its own braces and restores the caller's depth on success. A failed cursor remains discarded as documented below. The new inherited-context test exercises the interface without prematurely implementing or deciding the outer Project/include parser.
The handoff's former description of the iterator as allocation-free was inaccurate: raw string classification JSON-validates strings using a temporary String, as the old tokenizer did. It has been corrected to streaming; no allocation/RSS result is claimed.
Correction verification performed: rustfmt edition2024/skip_children on exactly the three corrected files exited0; git whitespace check passed; source diff was inspected and committed. No Cargo/compiler, test executable, GUI or Gitea action was performed. Latest source is paused for fresh critic verification and the parent's serialized executable gate.
Worker verification: rustfmt edition2024 with `skip_children=true` exited0 for the seven implementation/test paths beneath `language/` that changed. `language.rs` contains only the hand-formatted module/function hunks; its unrelated pre-existing formatting was preserved. Git staged whitespace check passed. Source inspection checked tokenizer compatibility, shared budget/cursor use, required-field paths and unchanged bridge/header hooks. **Rustfmt parses Rust syntax but does not establish typechecking, test correctness, runtime safety or resource performance.**
## Review focus and remaining work
The shared production scanner is the consequential surface to review first. Compare its legacy adapter against the frozen tokenizer, especially malformed greedy numeric runs, lookahead across trivia, UTF-8 invalid/incomplete string spans, and punctuation splitting. Root should run the authored legacy test, unchanged S1 tests, affected ordinary source/nesting/coordinate/message controls and strict all-targets checks after immutable review. The compiler has not yet validated this commit; repair findings on a new pin and retain failed evidence.
The typed stage intentionally does not resolve refs, check purity/layers/type compatibility, admit whole Projects or write source. Examples such as a property reading a wrong-domain `@alias` remain unresolved syntax and must reject in later lowering/admission. It also does not select a bounded entry header policy in production, thread budgets through includes, combine ordinary references/graph counts, map latched spans to file paths, stabilize IDs, or expose static admission usage. Those are explicit S2b/S3/root integration obligations, not accomplished behavior.
Caller contract on error: abandon the failed cursor/candidate and retain the source path that produced the first error. Budget exhaustion latches its original span; continuing in a new file and reattaching that span to the new file would be incorrect. No broad generic parse-session abstraction was introduced to hide this responsibility.
S2b can now build global categories/signatures and lower these typed bodies; S3 can design owner/field/Expr-path descriptors against these original spans. Before adding public DeclKind or replacing generic Declaration payloads, coordinate exact dependent match hooks with the source_project/root owner. Continue to preserve root's source3 bridge and public version gate. Canonical writer, full worked OA/SA whole-Project tests, proper qualified rename/swaps, fixed include/stabilization/migration pass counts and measured source profile adoption remain subsequent gates.
**Worker is paused after this immutable checkpoint; no broad lowering or writer work began.**
@@ -0,0 +1,100 @@
# Source8 S2a independent source review
2026-09-13. Reviewer: Codex-956atf `/root/source8_s2a_review`. Reviewed frozen clean `.local/as2-20260913` at **021bdc5a921885d1f5ce5b3a4b9cdbc03a73ab68**, against **6216cff4cfeb1502b8453b40547aacb74941f2b2**. HEAD and clean status were checked before and after source inspection. No source changes, compilation, executable tests, GUI, Gitea writes or publication were performed. This review file is outside the frozen worktree. Parent owns execution, repairs and integration.
## Outcome
One confirmed authored-test oracle defect must be repaired. One shared-frame accounting contract gap needs an explicit decision before the cursor contract is frozen for downstream work. No additional production lexical regression was found by source inspection. This is not an executable pass or approval of the later public source8 repair.
Inputs read: applicable AGENTS.md, harness/STATE.md (historical integrated context only), accepted `.local/analysis-source8-repair-design-r2-20260913.md`, `.local/analysis-source8-s2-implementation-plan-20260913.md`, `.local/analysis-source8-s2a-handoff-20260913.md`, all eight changed files and their base diffs, unchanged Budget, model alias rules and affected language helpers. Exact implementation facts below refer to the reviewed commit. Parent supplied initial suspicions for F1/F2; both were independently traced against source and the contract rather than credited as independent discoveries.
## Findings
### F1 — Medium: legacy fixture expects an identifier for an existing reserved word
`crates/oa-core/src/language/raw_tokens.rs:298–305` authors `// π\r\n"雪" @alias` and expects `(Identifier, "alias")`. Both the frozen original tokenizer and the replacement use `reserved(word)`; `language.rs:195` delegates to `crate::reserved_alias`, and `model.rs:1717` explicitly reserves `alias`. The replacement therefore correctly produces Keyword, while its new test asserts Identifier.
Impact: the new compatibility test should fail even if the production adapter preserves old behavior exactly. Changing production classification to satisfy this fixture would introduce a regression.
Action: correct only the expected class to Keyword (or change the fixture to an actually nonreserved name if its intended purpose is identifier coverage). Retain an explicit reserved-name discriminator. Run the unchanged legacy compatibility test plus affected old tokenizer/strict-reader controls on the repaired pin.
Falsifier: if the exact reviewed `tokenize("@alias")` returns Identifier, inspect which alias implementation was linked; that would contradict the visible source path. The source prediction is Keyword for the token at bytes1–6. No executable result is claimed here.
### F2 — Medium contract gate: typed brace containers do not participate in the shared frame budget
`declarations.rs:266` consumes the declaration opening brace with `take("{")`, and `:362` consumes its closing brace without `open`/`close`. `dimension():529` and `overrides():597` do the same for their brace bodies. In contrast List, Quantity, Affine, ratio, quantity suffix and expression constructors enter the shared Cursor frame counter.
Concrete source-derived discriminator: with `Limits.frames = 0`, `calculation f "F" { result Number; body unbound; }` succeeds through every frame-relevant path. `quantity_kind q "Q" { dimension {}; algebra Linear; }` and `oa_analysis a "A" { base ModelBaseline; overrides {}; }` also never call `open`. The current authored frame test expects List(Quantity(@q)) inside a calculation to cost2, intentionally ignoring the surrounding declaration.
Contract precision: r2 line221 names parentheses, lists, function/call/type constructors and ratios; it does not explicitly name declaration braces. The accepted S2 plan line45 says types and non-Expr constructors use the shared counter. Consequently the observed behavior is definite, but labeling every omitted brace a violation requires choosing the intended frame definition. This is a constant nesting undercount under a delimiter-nesting interpretation, **not a demonstrated unbounded nesting or native-stack attack**: nested declarations and nested dimension/override bodies are rejected structurally.
Preferred action: make the source-frame meaning consistent across the typed cursor by charging outer declaration and dimension/override braces, then add frame0 rejection/frame1 plain-declaration success/frame2 nested-container success, neighboring failures and sequential-declaration restoration checks. Update the current nested type oracle from2 to3 if the declaration brace counts. Keep the standalone S1 expression wrapper's own group256/group257 behavior unchanged. An explicit narrower definition that excludes these fixed containers is also defensible, but must be recorded as the chosen contract with targeted tests before downstream consumers infer delimiter depth from `deepest_frame`.
Falsifier: under the current code a lower-profile frame0 plain-declaration test must succeed. If it rejects, verify the rejection is actually the frame budget rather than another ceiling. After the preferred fix that same input must reject specifically for frames, and frame1 must admit it.
### F3 — Low documentation precision: the raw iterator is not allocation-free
The handoff describes `raw_tokens::Scanner` as an allocation-free token iterator. `raw_tokens.rs:126` calls `serde_json::from_str::<String>` to validate a string, which constructs a temporary owned String. This preserves the old tokenizer's string admission and allocation behavior; the new typed cursor later decodes the string again for its stored semantic value. Raw numeric tokenization itself does avoid numeric conversion.
Action: say the iterator returns spans without storing token text, while string validation temporarily decodes strings. No production change is needed for this finding. Source bytes are already checked before the typed adapter invokes the scanner, so this is not evidence of an unbounded string allocation.
## Reviewed invariants and limits
The only production behavior surface in this diff is the replacement tokenizer route. The raw scanner preserves ASCII whitespace, newline comment boundaries, JSON string escape/closure validation and original UTF-8 byte boundaries. Comments advance bytewise only to newline/end, both valid UTF-8 boundaries; strings and otherwise unsupported Unicode advance whole characters. Legacy joining begins only on the old digit/sign/dot starts and extends across contiguous tokens composed entirely of the old alphanumeric/underscore/dot/sign numeric alphabet. Trivia and other punctuation stop joining. Combined comparison punctuation is split back to the old individual character classes and spans. No changed header gate, public declaration mapping, reserved-word table, source3 bridge or wire/model files were found.
The significant source8 adapter intentionally differs from the old private S1 scanner in malformed-token diagnostics and now uses the legacy four-character whitespace set rather than all ASCII whitespace. This matches the accepted requirement to retain existing source whitespace. It also rejects invalid JSON strings during lexical admission. These are staged-only differences, not public legacy token regressions.
Required declaration fields are represented by nonoptional values after `Fields::finish`, with explicit empty/unbound values preserved. Unknown and duplicate fields reject; parameter order remains a Vec; duplicate parameter names and explicit UUIDs reject within their owner; missing IDs are deterministic metadata rather than fresh identities. References and contextual names use the existing alias rules without adding new global bans. Exact scale/offset share the same numeric helper and Budget as bindings, and cannot consume expression arithmetic or a quantity suffix as an exact-only value. Type syntax admits exactly the six settled forms. Dimension entries use fixed slots plus ordered original spans and bounded signed integer conversion. Override and repeated-call occurrences retain distinct original spans.
Source bytes and lexical tokens are charged once for the supplied token stream. Fields do not rescan source substrings. Declarations, fields/parameter rows, dimension entries, overrides and types reserve entries before growing their collections or creating their syntax; repeated attempts consume the ceiling before duplicate rejection. Type/unit/algebra/subject/constraint/parameter/call/argument/override references share the same reference counter. Numeric fields share one WorkMeter. Budget exhaustion is latched, including rejection of later `unbound`. Nonbudget syntax errors can leave Cursor.frames nonzero, but the handoff expressly requires abandoning the failed cursor/candidate, so this is not a finding against the stated caller contract. Later tolerant recovery must not reuse it without an explicit restoration design.
The nine authored tests have useful manually specified syntax and span expectations rather than parser-generated expected Projects. Their valid/invalid paired cases support the checkpoint's scope. They do not establish later whole-Project equality, typed reference resolution/purity/layer admission, scoped semantic index keys, missing-ID insertion, source updates, writer roundtrips, bundle-wide integration or measured resource performance. The current cleanup test exercises selected truncated prefixes and fresh parser construction; it does not establish cursor recovery, and does not claim to.
## Parent-owned next validation
Repair F1 and resolve F2 on a new immutable source pin. Compile and run the nine new tests and unchanged eleven S1 tests, then affected legacy tokenizer/coordinate/message/nesting/source3 controls and strict all-targets checking under the parent's compiler lease. Retain failures and source identities; baseline passes on6216 do not transfer automatically. A broader public persistence success claim remains blocked by the intentionally absent S2b/S3/S4 work and the existing public8 rejection gate.
Parent response after the review: root selected counting typed declaration/dimension/override braces and requested the bounded implementation and 0/1/2 boundary tests, updated List/Quantity oracle, Keyword fixture correction and allocation wording correction from the author. This records the accepted action only; no replacement commit or implemented repair was reviewed here.
## Bounded correction followup — b2c970b
Subsequently reviewed **b2c970b4673e062e47eadd12906d2316c4b1a7b3** atop the original reviewed021bdc5 pin in the same worktree. Verified clean status and HEAD, read the complete three-file correction diff (90 insertions/2 deletions), and read the updated handoff. This followup remained source-only: no compiler, test executable, production edits or Gitea operations.
- **F1 resolved in source.** The single lexical fixture expectation changes Identifier to Keyword. No production tokenizer behavior was modified in this correction.
- **F2 resolved in source under the parent's selected contract.** Declaration, dimension and override bodies each call `open()` before taking their opening brace and `close()` after taking their matching close. Successful declarations restore their inherited depth rather than resetting it. The existing nested List/Quantity test now expects3 success/2 failure. Two new tests assert the independent standalone0/plain1/nested-container2 thresholds, error message and exact brace span, measured peak depth, restoration after successful parsing, and two sequential declarations inheriting one outer frame. The standalone S1 expression wrapper, parser and tests are unchanged. Failure continues to require abandoning the cursor, as previously documented.
- **F3 resolved in the handoff.** Its table now describes a streaming iterator and explicitly states temporary JSON-string allocation. Its correction history preserves the earlier inaccurate claim as corrected history, not a current assertion.
No remaining blocking source-review finding was identified within this bounded correction. The source now contains eleven authored new tests across the initial checkpoint plus correction; the parent's expected full core listing of129 is a pending executable expectation, not a reviewer-observed listing. Typechecking, execution, strict checking, calibration and public source8 integration remain parent-owned gates. The original review above remains evidence about021bdc5 and is not retrospectively changed into a pass.
## Independent execution-evidence audit — b2c970b
Subsequently audited the parent's actual `list-b2c970b`, `typed-b2c970b`, `tokens-b2c970b` and `full-b2c970b` result records, raw logs, manifests and three admission receipts in `.local/analysis-source-gates-20260913`. Used a separate read-only evidence checker, `.local/audit-analysis-s2a-independent.py`, without rerunning Cargo, test executables or admission helpers. Machine-readable findings and exact result/log/input hashes are preserved in `.local/analysis-source8-s2a-execution-audit-20260913.json`.
Verified:
- Actual raw listing has129 unique tests and exactly equals the listing record. It preserves all118 names from `list-6216cff` and adds exactly the independently authored eleven names. Those names also exactly match the explicit `new_names` set parsed from `.local/admit-analysis-s2a-gate.py`.
- The complete raw runtime log has exactly129 unique named outcomes, with neither omitted nor extra names relative to the listing. Its actual summary is **113 passed / 16 failed / 0 ignored / 0 filtered**, and the full command exited **101**. This remains a failed full gate.
- All eleven new tests pass. All four retained `language::source3_bridge::tests::*` cases and four `persistence::source_save_tests::*` cases pass. The separate typed run has21 passing cases, and the raw-token run has1 passing case; both exit0 and match their listing-selected names exactly.
- The sixteen failed names exactly equal those in the prior `full-2c515cf` raw runtime log (98 passed/16 failed). All sixteen current failure sections identify unsupported source8. The only two failures whose cause advanced from the old definitions-envelope error are `checked_in_example_supports_cross_file_reparent_without_changing_allocations` and `checked_in_nested_example_has_stable_ids_typed_exchanges_and_three_clear_views`. The exact full failed-name list is in the JSON audit artifact. No failures were reclassified as passes or silently subtracted.
- Every one of the four input manifests identifies `b2c970b4673e062e47eadd12906d2316c4b1a7b3` and exactly matches all524 paths, byte sizes and SHA256 values independently reconstructed from that commit's Git blobs over the runner's declared source scopes. The records identify the same source before/after and contain no changed inputs.
- All four raw logs identify the same actual unit-test executable as their records. Its current bytes are35,920,896 and SHA256 is `67249b37f30b596eb3deb95a217bd77eb06905bdf7b6c27b74fec16f9f0362e5`; these match every artifact binding. Each of the three admission receipts matches its raw result, log and manifest hashes, source, artifact, selected names, mode,524-input count and current admission-helper hash `908b09b044795a270590ea2e8d558f1a32442c873f81399ddc9fb402b992f12d`.
Strict was checked once for a completed result record; `strict-b2c970b.result.json` did not yet exist. Its running log was not inspected and no polling was performed. No strict exit or pass is inferred. The later production-language integration target was not yet evidence available to this audit.
Disposition: no evidence mismatch found. These results close the executable uncertainty for the eleven authored additions and retained tests described above, while preserving the sixteen actual failures and the unfinished public source8 scope. This audit binds the declared tracked source inputs and existing artifact bytes; it does not independently reproduce the build, attest external toolchain/dependency contents, calibrate resource ceilings or prove behavior hidden behind the current public header rejection.
## Completed strict receipt followup
After the earlier historical no-result observation, audited the completed `strict-b2c970b.result.json`, input manifest and raw log. Actual `cargo clippy --locked -p oa-core --all-targets -- -D warnings` exited **0**, starting2026-09-13 05:24:31.457419 UTC and ending **05:32:11.812372 UTC**. The log contains its completed dev-profile line and no warning/error diagnostics. All524 input paths, sizes and hashes independently match the same b2c970b Git blobs; source and head_after match, and changed_inputs is empty. Clippy produces no test-executable artifact binding in this receipt.
Audit script `.local/audit-analysis-s2a-strict-independent.py` and result `.local/analysis-source8-s2a-strict-audit-20260913.json` preserve the exact bindings: result SHA256 `4a6e836eb816fe34ecb03771263e226568617656fa053320d8cf11ec5432781d`, raw log SHA256 `c5d02b2303b38e8383803140fc437df2f00e964f835cf3254d45044371fb01f7`, inputs SHA256 `53137c230487519310eebcb3bdb22bae52f2ca95857c8b742f34440a37992763`. No compiler/test rerun or source change was made. This strict pass does not change the full-library113/16 failure result.
## Production-language legacy failure cause
The separate `legacy-full-b2c970b` integration target completed with **7 passed / 9 failed / 0 ignored, exit 101**, matching all16 names in its actual listing. Eight failure sections reject unsupported source8. The ninth, `original_v2_text_and_json_preserve_identity_and_mixed_scenarios_after_extensions`, fails the historical retained/original equality oracle at pinned `crates/oa-core/tests/language.rs:982`.
Read the pinned test's compatibility normalization and independently parsed both complete serde_json Value Debug operands from the raw failure log, without executing project code. A recursive comparison of1,072 left nodes and1,071 right nodes found exactly one difference: **left-only `/definitions = {}`**. Removing only that empty catalog makes both structures and every remaining value equal. The right operand also exactly matches the pinned `tests/fixtures/v2-coastal-rescue.json`, including numeric spellings. The earlier source-decoded/JSON-decoded Project equality assertion had completed before this failure.
The current test normalizes earlier explicit compatibility defaults but does not remove the new empty definitions catalog before comparing with frozen V2. This is an outdated oracle projection, not evidence of lost original V2 data. It remains a failed test; subsequent identity/scenario assertions did not execute, and no normalization fix or weakened assertion was made. The failure is distinct from the eight public8 header failures and must not be grouped with them.
Compact reproducible evidence: `.local/audit-analysis-s2a-legacy-cause.py` and `.local/analysis-source8-s2a-legacy-cause-20260913.json`. The latter binds raw log SHA256 `6901e88ed2900e05f4de94cb20fdc2b9a09a31982192ae2d552e31328db8659c`, pinned test and fixture hashes, all eight header-failure names and the sole structural difference. The read-only comparator was run successfully; no compiler, test rerun, source or fixture edit occurred.
@@ -0,0 +1,34 @@
{
"source": "b2c970b4673e062e47eadd12906d2316c4b1a7b3",
"test": "original_v2_text_and_json_preserve_identity_and_mixed_scenarios_after_extensions",
"legacy_total": 16,
"legacy_passed": 7,
"legacy_failed": 9,
"unsupported8_failure_names": [
"all_typed_fields_round_trip_with_stable_aliases_and_occurrences",
"authoring_defaults_and_forward_references_remain_strict",
"branching_reused_processes_and_chains_have_lossless_readable_source",
"coordinate_bits_and_permitted_strings_survive_text_and_storage",
"text_and_model_transactions_preserve_history_with_stable_aliases",
"typed_events_vertices_and_transition_kinds_round_trip_in_both_layers",
"typed_scenario_messages_values_and_reuse_round_trip_in_both_work_perspectives",
"v1_text_and_json_migrate_deterministically_without_losing_legacy_semantics"
],
"assertion_difference": [
{
"path": "/definitions",
"difference": "left_only",
"left": {}
}
],
"all_other_values_and_structure_equal": true,
"right_matches_pinned_original_fixture": true,
"debug_nodes_left": 1072,
"debug_nodes_right": 1071,
"log_sha256": "6901e88ed2900e05f4de94cb20fdc2b9a09a31982192ae2d552e31328db8659c",
"test_source_path": "crates/oa-core/tests/language.rs",
"test_source_sha256": "77f6cb2a69976bfb5f60b243b71c07fb0edc7505002c1e9e73fcd6ddf6d9496e",
"fixture_path": "crates/oa-core/tests/fixtures/v2-coastal-rescue.json",
"fixture_sha256": "3ed53508eb544bbd788832f7bebea2ec31b3d66191f24f45098cc9750ec4c005",
"interpretation": "The historical retained-vs-original projection omits the newly explicit empty definitions catalog from its compatibility-default normalization. Source-vs-JSON equality earlier in the same test completed before this assertion. This failure is an oracle projection mismatch, not evidence of lost original V2 data; later assertions did not execute and the test remains failed."
}
@@ -0,0 +1,24 @@
{
"source": "b2c970b4673e062e47eadd12906d2316c4b1a7b3",
"exit": 0,
"command": [
"cargo",
"clippy",
"--locked",
"-p",
"oa-core",
"--all-targets",
"--",
"-D",
"warnings"
],
"start": "2026-09-13T05:24:31.457419+00:00",
"end": "2026-09-13T05:32:11.812372+00:00",
"verified_git_blob_inputs": 524,
"changed_inputs": [],
"result_sha256": "4a6e836eb816fe34ecb03771263e226568617656fa053320d8cf11ec5432781d",
"inputs_sha256": "53137c230487519310eebcb3bdb22bae52f2ca95857c8b742f34440a37992763",
"log_sha256": "c5d02b2303b38e8383803140fc437df2f00e964f835cf3254d45044371fb01f7",
"log": " Checking oa-core v0.2.0 (C:\\Users\\User\\Documents\\Git\\ARCADIA-Studio\\.local\\analysis-core-worktree-20260911\\crates\\oa-core)\n Finished `dev` profile [unoptimized] target(s) in 7m 37s\n",
"scope": "Completed receipt/raw log/source-input audit; no compiler rerun, build reproduction or toolchain attestation."
}
@@ -0,0 +1,116 @@
"""Read-only independent evidence audit; does not run project code or admissions."""
from pathlib import Path
import ast, hashlib, json, re, subprocess
base = Path(__file__).resolve().parent.parent
repo = base / '.local/as2-20260913'
folder = base / '.local/analysis-source-gates-20260913'
pin = 'b2c970b4673e062e47eadd12906d2316c4b1a7b3'
def sha(raw): return hashlib.sha256(raw).hexdigest()
def read(name, suffix): return (folder / (name + suffix)).read_bytes()
def obj(name, suffix='.result.json'): return json.loads(read(name, suffix))
def outcomes(log): return re.findall(r'^test ([^\r\n]+) \.\.\. (ok|FAILED|ignored)\s*$', log, re.M)
# Independently rebuild the runner's declared tracked-input universe from Git.
scopes = ['Cargo.toml', 'Cargo.lock', 'rust-toolchain.toml', '.cargo', 'build', 'crates', 'assets', 'docs', 'examples', 'harness/fixtures']
paths = subprocess.check_output(['git', 'ls-tree', '-r', '--name-only', pin, *scopes], cwd=repo).decode().splitlines()
assert len(paths) == len(set(paths)) == 524
raw = subprocess.check_output(['git', 'cat-file', '--batch'], cwd=repo, input=''.join(f'{pin}:{p}\n' for p in paths).encode())
offset, expected = 0, []
for path in paths:
end = raw.index(b'\n', offset)
_, kind, size = raw[offset:end].split()
assert kind == b'blob'
size = int(size)
blob = raw[end+1:end+1+size]
expected.append({'path': path, 'bytes': size, 'sha256': sha(blob)})
offset = end + size + 2
assert offset == len(raw)
listing = obj('list-b2c970b')
listed = re.findall(r'^([^\r\n]+): test\r?$', read('list-b2c970b', '.log').decode(), re.M)
assert listed == listing['listing_members']
assert len(listed) == len(set(listed)) == listing['listing_count'] == 129
original = obj('list-6216cff')['listing_members']
assert len(original) == len(set(original)) == 118 and set(original) <= set(listed)
new = set(listed) - set(original)
assert len(new) == 11
helper = (base / '.local/admit-analysis-s2a-gate.py').read_bytes()
tree = ast.parse(helper)
declared_new = next(ast.literal_eval(n.value) for n in ast.walk(tree) if isinstance(n, ast.Assign) and any(isinstance(t, ast.Name) and t.id == 'new_names' for t in n.targets))
assert new == declared_new
results, artifact_identity = {}, None
for name in ['list-b2c970b', 'typed-b2c970b', 'tokens-b2c970b', 'full-b2c970b']:
rec = obj(name)
assert rec['source'] == rec['head_after'] == pin and not rec['changed_inputs']
assert rec['inputs'] == name + '.inputs.json'
manifest = obj(name, '.inputs.json')
assert manifest['source'] == pin and manifest['inputs'] == expected
assert len(rec['artifacts']) == 1
artifact = rec['artifacts'][0]
content = Path(artifact['path']).read_bytes()
assert len(content) == artifact['bytes'] and sha(content) == artifact['sha256']
if artifact_identity is None: artifact_identity = artifact
assert artifact_identity == artifact
log = read(name, '.log').decode()
raw_artifacts = re.findall(r'Running unittests [^\r\n]+ \(([^\r\n]+\.exe)\)', log)
assert len(raw_artifacts) == 1
actual_path = Path(raw_artifacts[0])
if not actual_path.is_absolute(): actual_path = base / '.local/analysis-core-worktree-20260911' / actual_path
assert actual_path.resolve() == Path(artifact['path']).resolve()
rows = outcomes(log)
assert len(rows) == len(set(n for n, _ in rows))
results[name] = {'exit': rec['exit'], 'outcomes': dict(rows), 'result_sha256': sha(read(name,'.result.json')), 'inputs_sha256': sha(read(name,'.inputs.json')), 'log_sha256': sha(read(name,'.log'))}
if name != 'full-b2c970b':
assert rec['exit'] == 0
receipt = obj(name, '.admission.json')
assert receipt['source'] == pin and receipt['artifact'] == artifact and receipt['verified_inputs'] == 524
assert receipt['admission_helper_sha256'] == sha(helper)
for k in ['result_sha256', 'inputs_sha256', 'log_sha256']: assert receipt[k] == results[name][k]
if name == 'list-b2c970b':
assert receipt['mode'] == 'list' and receipt['names'] == listed
assert re.findall(r'^(\d+) tests, (\d+) benchmarks\s*$', log, re.M) == [('129','0')]
else:
selector = 'language::analysis_source' if name.startswith('typed') else 'language::raw_tokens'
members = [n for n in listed if selector in n]
assert selector in rec['command'] and receipt['mode'] == 'focused' and receipt['names'] == members
assert set(dict(rows)) == set(members) and all(s == 'ok' for n,s in rows)
assert re.search(rf'test result: ok\. {len(rows)} passed; 0 failed; 0 ignored;',log)
full = results['full-b2c970b']['outcomes']
assert set(full) == set(listed)
assert results['full-b2c970b']['exit'] == 101
assert list(full.values()).count('ok') == 113 and list(full.values()).count('FAILED') == 16
assert re.search(r'test result: FAILED\. 113 passed; 16 failed; 0 ignored; 0 measured; 0 filtered out;', read('full-b2c970b','.log').decode())
failures = {n for n,s in full.items() if s == 'FAILED'}
old_log = read('full-2c515cf','.log').decode()
old_rows = outcomes(old_log)
old_failed = {n for n,s in old_rows if s == 'FAILED'}
assert failures == old_failed and len(old_failed) == 16
assert len(old_rows) == len(set(n for n,s in old_rows)) == 114
assert list(dict(old_rows).values()).count('ok') == 98
retained = [n for n in listed if n.startswith('language::source3_bridge::tests::') or n.startswith('persistence::source_save_tests::')]
assert len(retained) == 8 and all(full[n] == 'ok' for n in retained)
assert all(full[n] == 'ok' for n in new)
def failure_sections(log):
return {n: body for n,body in re.findall(r'^---- (\S+) stdout ----\r?\n(.*?)(?=^---- |^failures:|\Z)',log,re.M|re.S)}
sections = failure_sections(read('full-b2c970b','.log').decode())
prior_sections = failure_sections(old_log)
assert set(sections) == failures
assert all('Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.' in body for body in sections.values())
changed_cause = [n for n in failures if 'Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.' not in prior_sections[n]]
assert len(changed_cause) == 2 and all('definitions' in prior_sections[n] for n in changed_cause)
# Inspect strict exactly once if its result already exists; never poll a running gate.
strict = {'state': 'result absent at audit; not inspected'}
strict_path = folder/'strict-b2c970b.result.json'
if strict_path.exists():
rec = obj('strict-b2c970b')
manifest = obj('strict-b2c970b','.inputs.json')
assert rec['source'] == rec['head_after'] == pin and not rec['changed_inputs']
assert manifest['source'] == pin and manifest['inputs'] == expected
strict = {'exit':rec['exit'], 'command':rec['command'], 'result_sha256':sha(strict_path.read_bytes()), 'log_sha256':sha(read('strict-b2c970b','.log')), 'log_tail':read('strict-b2c970b','.log').decode()[-1500:]}
report = {'source':pin,'git_blob_verified_inputs':524,'listing_unique':129,'full':{'exit':101,'passed':113,'failed':16,'failures':sorted(failures),'same_failure_names_as_2c515cf':True,'changed_cause_from_legacy_definitions_to_header':sorted(changed_cause)},'new11_all_passed':sorted(new),'retained8_all_passed':retained,'typed_passed':len(results['typed-b2c970b']['outcomes']),'tokens_passed':len(results['tokens-b2c970b']['outcomes']),'artifact':artifact_identity,'records':{n:{k:v for k,v in r.items() if k!='outcomes'} for n,r in results.items()},'strict':strict,'admission_helper_sha256':sha(helper)}
dest = base/'.local/analysis-source8-s2a-execution-audit-20260913.json'
with dest.open('x',encoding='utf-8') as stream: json.dump(report,stream,indent=2)
print(json.dumps(report,indent=2))
@@ -0,0 +1,73 @@
"""Compare serde_json Value Debug assertion operands without printing model dumps."""
from pathlib import Path
import hashlib,json,re,subprocess
base=Path(__file__).resolve().parent.parent
repo=base/'.local/as2-20260913'
pin='b2c970b4673e062e47eadd12906d2316c4b1a7b3'
folder=base/'.local/analysis-source-gates-20260913'
raw=(folder/'legacy-full-b2c970b.log').read_bytes(); log=raw.decode()
name='original_v2_text_and_json_preserve_identity_and_mixed_scenarios_after_extensions'
sections=dict(re.findall(r'^---- (\S+) stdout ----\r?\n(.*?)(?=^---- |^failures:|\Z)',log,re.M|re.S))
assert len(sections)==9
assert sum('Unsupported schema version: expected arcadia 3, 4, 5, 6 or 7.' in b for b in sections.values())==8
section=sections[name]
left=re.search(r'^ left: (.*)$',section,re.M).group(1).rstrip('\r')
right=re.search(r'^ right: (.*)$',section,re.M).group(1).rstrip('\r')
class Parser:
def __init__(self,s): self.s=s; self.i=0; self.nodes=0
def ws(self):
while self.i<len(self.s) and self.s[self.i].isspace(): self.i+=1
def take(self,x):
self.ws(); assert self.s.startswith(x,self.i),(self.i,x); self.i+=len(x)
def string(self):
self.ws(); value,n=json.JSONDecoder().raw_decode(self.s[self.i:]); assert isinstance(value,str); self.i+=n; return value
def value(self):
self.ws(); self.nodes+=1
if self.s.startswith('Object',self.i):
self.take('Object'); self.take('{'); out={}; self.ws()
while self.s[self.i]!='}':
k=self.string(); self.take(':'); assert k not in out; out[k]=self.value(); self.ws()
if self.s[self.i]=='}': break
self.take(',')
self.take('}'); return out
if self.s.startswith('Array',self.i):
self.take('Array'); self.take('['); out=[]; self.ws()
while self.s[self.i]!=']':
out.append(self.value()); self.ws()
if self.s[self.i]==']': break
self.take(',')
self.take(']'); return out
if self.s.startswith('String',self.i):
self.take('String'); self.take('('); v=self.string(); self.take(')'); return v
if self.s.startswith('Null',self.i): self.take('Null'); return None
if self.s.startswith('Bool',self.i):
self.take('Bool'); self.take('('); v=self.s.startswith('true',self.i); self.take('true' if v else 'false'); self.take(')'); return v
self.take('Number'); self.take('('); end=self.s.index(')',self.i); v=('Number',self.s[self.i:end]); self.i=end; self.take(')'); return v
def parse(self):
v=self.value(); self.ws(); assert self.i==len(self.s); return v
a=Parser(left); retained=a.parse(); b=Parser(right); original=b.parse()
differences=[]
def compare(a,b,path=''):
if isinstance(a,dict) and isinstance(b,dict):
for k in sorted(a.keys()|b.keys()):
p=path+'/'+k.replace('~','~0').replace('/','~1')
if k not in b: differences.append({'path':p,'difference':'left_only','left':a[k]})
elif k not in a: differences.append({'path':p,'difference':'right_only','right':b[k]})
else: compare(a[k],b[k],p)
elif isinstance(a,list) and isinstance(b,list):
if len(a)!=len(b): differences.append({'path':path,'difference':'array_length','left':len(a),'right':len(b)})
else:
for i,(x,y) in enumerate(zip(a,b)): compare(x,y,path+'/'+str(i))
elif type(a)!=type(b) or a!=b: differences.append({'path':path,'difference':'value','left':a,'right':b})
compare(retained,original)
assert differences==[{'path':'/definitions','difference':'left_only','left':{}}]
assert retained.pop('definitions')=={} and retained==original
source_path='crates/oa-core/tests/language.rs'
test_source=subprocess.check_output(['git','show',pin+':'+source_path],cwd=repo)
fixture_path='crates/oa-core/tests/fixtures/v2-coastal-rescue.json'
fixture=subprocess.check_output(['git','show',pin+':'+fixture_path],cwd=repo)
fixture_json=json.loads(fixture,parse_int=lambda n:('Number',n),parse_float=lambda n:('Number',n))
assert original==fixture_json
report={'source':pin,'test':name,'legacy_total':16,'legacy_passed':7,'legacy_failed':9,'unsupported8_failure_names':sorted(n for n,b in sections.items() if 'Unsupported schema version:' in b),'assertion_difference':differences,'all_other_values_and_structure_equal':True,'right_matches_pinned_original_fixture':True,'debug_nodes_left':a.nodes,'debug_nodes_right':b.nodes,'log_sha256':hashlib.sha256(raw).hexdigest(),'test_source_path':source_path,'test_source_sha256':hashlib.sha256(test_source).hexdigest(),'fixture_path':fixture_path,'fixture_sha256':hashlib.sha256(fixture).hexdigest(),'interpretation':'The historical retained-vs-original projection omits the newly explicit empty definitions catalog from its compatibility-default normalization. Source-vs-JSON equality earlier in the same test completed before this assertion. This failure is an oracle projection mismatch, not evidence of lost original V2 data; later assertions did not execute and the test remains failed.'}
with (base/'.local/analysis-source8-s2a-legacy-cause-20260913.json').open('x',encoding='utf-8') as out: json.dump(report,out,indent=2)
print(json.dumps(report,indent=2))
@@ -0,0 +1,33 @@
"""Audit a completed strict receipt; never runs Cargo or polls active logs."""
from pathlib import Path
import hashlib, json, subprocess
base=Path(__file__).resolve().parent.parent
repo=base/'.local/as2-20260913'
folder=base/'.local/analysis-source-gates-20260913'
name='strict-b2c970b'
pin='b2c970b4673e062e47eadd12906d2316c4b1a7b3'
def digest(raw): return hashlib.sha256(raw).hexdigest()
record_raw=(folder/(name+'.result.json')).read_bytes()
record=json.loads(record_raw)
assert record['source']==record['head_after']==pin and record['exit']==0 and record['changed_inputs']==[]
assert record['command']==['cargo','clippy','--locked','-p','oa-core','--all-targets','--','-D','warnings']
assert record['artifacts']==[] and record['inputs']==name+'.inputs.json'
manifest_raw=(folder/record['inputs']).read_bytes()
manifest=json.loads(manifest_raw)
assert manifest['source']==pin and len(manifest['inputs'])==524
paths=subprocess.check_output(['git','ls-tree','-r','--name-only',pin,'Cargo.toml','Cargo.lock','rust-toolchain.toml','.cargo','build','crates','assets','docs','examples','harness/fixtures'],cwd=repo).decode().splitlines()
assert paths==[x['path'] for x in manifest['inputs']] and len(set(paths))==524
blobs=subprocess.check_output(['git','cat-file','--batch'],cwd=repo,input=''.join(f'{pin}:{p}\n' for p in paths).encode())
offset=0
for entry in manifest['inputs']:
end=blobs.index(b'\n',offset); _,kind,size=blobs[offset:end].split(); size=int(size)
raw=blobs[end+1:end+1+size]
assert kind==b'blob' and len(raw)==entry['bytes']==size and digest(raw)==entry['sha256'],entry['path']
offset=end+size+2
assert offset==len(blobs)
log_raw=(folder/(name+'.log')).read_bytes()
log=log_raw.decode()
assert 'Finished `dev` profile' in log and 'error:' not in log and 'warning:' not in log
report={'source':pin,'exit':record['exit'],'command':record['command'],'start':record['start'],'end':record['end'],'verified_git_blob_inputs':524,'changed_inputs':[],'result_sha256':digest(record_raw),'inputs_sha256':digest(manifest_raw),'log_sha256':digest(log_raw),'log':log,'scope':'Completed receipt/raw log/source-input audit; no compiler rerun, build reproduction or toolchain attestation.'}
with (base/'.local/analysis-source8-s2a-strict-audit-20260913.json').open('x',encoding='utf-8') as stream: json.dump(report,stream,indent=2)
print(json.dumps(report,indent=2))
@@ -0,0 +1,69 @@
"""Bind one isolated production language integration 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', '--test', 'language']
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 [^\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,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,150 @@
"""Copy closed S2a evidence with byte manifests; never stage/commit Git or run gates."""
from pathlib import Path
import hashlib, json, re, sys
root=Path(__file__).resolve().parent.parent
source='b2c970b4673e062e47eadd12906d2316c4b1a7b3'
gates=root/'.local/analysis-source-gates-20260913'
folder=root/'harness/experiments/analysis-source-s2a-windows-20260913'
report_path=root/'harness/release-analysis-source-s2a-20260913.md'
names=['list-b2c970b','typed-b2c970b','tokens-b2c970b','full-b2c970b','strict-b2c970b','legacy-list-b2c970b','legacy-full-b2c970b']
def digest(raw): return hashlib.sha256(raw).hexdigest()
def decoded(name,suffix): return json.loads((gates/(name+suffix)).read_bytes())
def outcomes(log): return re.findall(r'^test ([^\r\n]+) \.\.\. (ok|FAILED|ignored)\s*$',log,re.M)
DRAFT='''# Analysis source S2a Windows checkpoint — 2026-09-13
Draft checkpoint for source `b2c970b4673e062e47eadd12906d2316c4b1a7b3`. Shared lexical scanning preserves the legacy token adapter; the private typed declaration/cursor stage adds required fields, original spans, missing-ID metadata and consistent brace frame accounting. Public source8 remains disabled.
Verified core gates: listing 129; typed 21 and token 1 pass; full library 113 pass/16 fail (exit 101), with the same failed names as the prior 2c checkpoint, all now at unsupported source8. All eleven new tests and eight retained bridge/save-guard cases pass. Strict all-target Clippy exits 0. Every core gate binds 524 unchanged source inputs, independently checked against Git blobs.
The production-language integration listing/full outcome and final archive are awaiting completed receipts. No legacy success is inferred. The prepared `.local/stage-analysis-s2a-checkpoint.py` archives only closed gates and preserves any failures. This checkpoint does not establish public source8 save/read/update, complete migration, resource-profile adoption or GUI acceptance.
Subsequent legacy audit: the completed target has 7 passed/9 failed, exit 101. Eight failures reject public source8. The V2 retained/original oracle has exactly one structural difference: a new empty `/definitions` catalog on the retained side. Every other original value matches; this is an outdated compatibility projection, not evidence of lost V2 data. The test remains failed and its later assertions did not execute.
'''
missing=[name+'.result.json' for name in names if not (gates/(name+'.result.json')).exists()]
if missing:
print(json.dumps({'ready':False,'pending_closed_results':missing,'archive_written':False}))
sys.exit(0 if '--check' in sys.argv else 2)
records={name:decoded(name,'.result.json') for name in names}
logs={name:(gates/(name+'.log')).read_text(encoding='utf-8') for name in names}
baseline_manifest=decoded('list-b2c970b','.inputs.json')
assert baseline_manifest['source']==source and len(baseline_manifest['inputs'])==524
execution=json.loads((root/'.local/analysis-source8-s2a-execution-audit-20260913.json').read_bytes())
strict_audit=json.loads((root/'.local/analysis-source8-s2a-strict-audit-20260913.json').read_bytes())
legacy_cause=json.loads((root/'.local/analysis-source8-s2a-legacy-cause-20260913.json').read_bytes())
assert legacy_cause['source']==source and legacy_cause['log_sha256']==digest((gates/'legacy-full-b2c970b.log').read_bytes())
assert legacy_cause['assertion_difference']==[{'path':'/definitions','difference':'left_only','left':{}}]
assert execution['source']==strict_audit['source']==source
assert execution['git_blob_verified_inputs']==strict_audit['verified_git_blob_inputs']==524
for name,rec in records.items():
assert rec['source']==rec['head_after']==source and not rec['changed_inputs']
assert rec['inputs']==name+'.inputs.json' and decoded(name,'.inputs.json')==baseline_manifest
assert rec['end'] and rec['start'] and isinstance(rec['exit'],int)
if name in execution['records']:
for key,suffix in [('result_sha256','.result.json'),('inputs_sha256','.inputs.json'),('log_sha256','.log')]:
assert digest((gates/(name+suffix)).read_bytes())==execution['records'][name][key]
elif name=='strict-b2c970b':
for key,suffix in [('result_sha256','.result.json'),('inputs_sha256','.inputs.json'),('log_sha256','.log')]:
assert digest((gates/(name+suffix)).read_bytes())==strict_audit[key]
for artifact in rec['artifacts']:
raw=Path(artifact['path']).read_bytes()
assert len(raw)==artifact['bytes'] and digest(raw)==artifact['sha256']
if name!='strict-b2c970b': assert len(rec['artifacts'])==1
else: assert rec['exit']==0 and rec['artifacts']==[]
for name in ['list-b2c970b','typed-b2c970b','tokens-b2c970b']:
admission=decoded(name,'.admission.json')
for key,suffix in [('result_sha256','.result.json'),('inputs_sha256','.inputs.json'),('log_sha256','.log')]:
assert admission[key]==digest((gates/(name+suffix)).read_bytes())
assert admission['admission_helper_sha256']==digest((root/'.local/admit-analysis-s2a-gate.py').read_bytes())
legacy_list=records['legacy-list-b2c970b']
listed=re.findall(r'^([^\r\n]+): test\r?$',logs['legacy-list-b2c970b'],re.M)
assert legacy_list['exit']==0 and listed==legacy_list['listing_members']
assert len(listed)==len(set(listed))==legacy_list['listing_count'] and listed
assert re.findall(r'^(\d+) tests, (\d+) benchmarks\s*$',logs['legacy-list-b2c970b'],re.M)==[(str(len(listed)),'0')]
legacy_full=records['legacy-full-b2c970b']
assert legacy_list['artifacts']==legacy_full['artifacts']
assert legacy_list['command']==['cargo','test','--locked','-p','oa-core','--test','language','--','--list']
assert legacy_full['command']==['cargo','test','--locked','-p','oa-core','--test','language','--','--test-threads=1']
rows=outcomes(logs['legacy-full-b2c970b'])
assert len(rows)==len(set(n for n,s in rows))==len(listed) and {n for n,s in rows}==set(listed)
passed=sum(s=='ok' for n,s in rows); failed=sum(s=='FAILED' for n,s in rows); ignored=sum(s=='ignored' for n,s in rows)
assert legacy_full['exit']==(101 if failed else 0)
assert re.search(rf'test result: (?:ok|FAILED)\. {passed} passed; {failed} failed; {ignored} ignored; 0 measured; 0 filtered out;',logs['legacy-full-b2c970b'])
for name in ['legacy-list-b2c970b','legacy-full-b2c970b']:
matches=re.findall(r'Running [^\r\n]+ \(([^\r\n]+\.exe)\)',logs[name])
assert len(matches)==1
path=Path(matches[0])
if not path.is_absolute(): path=root/'.local/analysis-core-worktree-20260911'/path
assert path.resolve()==Path(records[name]['artifacts'][0]['path']).resolve()
originals=[]
for name in names:
originals.extend(gates/(name+suffix) for suffix in ['.result.json','.log','.inputs.json'])
for name in ['list-b2c970b','typed-b2c970b','tokens-b2c970b']: originals.append(gates/(name+'.admission.json'))
originals.extend(root/'.local'/p for p in ['run-analysis-source-gate.py','run-analysis-legacy-gate.py','admit-analysis-s2a-gate.py','audit-analysis-s2a-independent.py','analysis-source8-s2a-execution-audit-20260913.json','audit-analysis-s2a-strict-independent.py','analysis-source8-s2a-strict-audit-20260913.json','audit-analysis-s2a-legacy-cause.py','analysis-source8-s2a-legacy-cause-20260913.json','analysis-source8-s2a-independent-review-20260913.md','analysis-source8-s2a-handoff-20260913.md','stage-analysis-s2a-checkpoint.py'])
files=[]; payloads={}
for original in sorted(originals):
relative=original.relative_to(root).as_posix(); path='evidence/'+relative; raw=original.read_bytes()
files.append({'path':path,'original_path':relative,'bytes':len(raw),'sha256':digest(raw)})
payloads[path]=raw
dependencies=[]
for archive,filename in [('analysis-source3-bridge-windows-20260913','list-6216cff.result.json'),('analysis-source3-bridge-windows-20260913','list-6216cff.admission.json'),('analysis-source-s0-s1-windows-20260913','full-2c515cf.log')]:
path=root/'harness/experiments'/archive/'evidence/.local/analysis-source-gates-20260913'/filename
raw=path.read_bytes()
assert raw==(gates/filename).read_bytes()
dependencies.append({'path':path.relative_to(root).as_posix(),'bytes':len(raw),'sha256':digest(raw)})
manifest={'scope':'Windows S2a source checkpoint. Full library remains failed 113/16; private syntax and legacy integration evidence are separate. Raw provenance preserved. Binaries/toolchains excluded.','source':source,'files':files,'published_dependencies':dependencies}
legacy_outcome=f'{passed} passed / {failed} failed / {ignored} ignored; exit {legacy_full["exit"]}'
summary=f'''# Source S2a Windows gate evidence
Source `{source}` adds shared raw scanning with a legacy adapter and a private typed declaration/cursor stage. The [checkpoint report](../../release-analysis-source-s2a-20260913.md) states the boundary. Public source8 stays disabled.
[manifest.json](manifest.json) binds {len(files)} raw files ({sum(e['bytes'] for e in files):,} bytes): seven closed gate triples, three admission receipts, original recorders/admission helper, independent audit scripts/results/review, source handoff and this archival helper. Every raw file is copied byte-identically from its original path. Prior listing/failure dependencies are linked and hashed rather than duplicated. Executables and toolchains are omitted; original executable paths/hashes and input manifests remain unchanged.
| Gate | Actual outcome |
| --- | --- |
| Core listing | 129 unique tests; exit 0 |
| Typed syntax | 21 passed; exit 0 |
| Legacy token fixture | 1 passed; exit 0 |
| Full core library | 113 passed / 16 failed; exit 101 |
| Strict core all-target Clippy | exit 0; closed 2026-09-13 05:32:11.812372 UTC |
| Production-language listing | {len(listed)} unique tests; exit 0 |
| Production-language full target | {legacy_outcome} |
All seven gates bind the same 524 unchanged inputs. The independent core audit compares every input with its pinned Git blob, all 129 runtime names with the actual listing, artifact hashes and admission bindings. All eleven additions and eight retained bridge/save guards pass. The sixteen full-library failures exactly retain the earlier failed-name set and now all stop at unsupported source8; the two legacy examples advanced from their old definitions-envelope error. Production-language outcomes are compared separately with their actual listing before archiving. No compiler, test, GUI or Git write is run by the archival helper.
The separate production-language target has eight public8 header failures and one outdated V2 oracle projection. Recursive comparison of the complete raw retained/original Debug values found only a left-only empty `/definitions` catalog; all other original structure and values match. The pinned V2 fixture equals the right operand. This does not show V2 data loss, but the test remains failed and later assertions did not execute. The compact comparison helper/result and original raw log are preserved.
This checkpoint does not establish passing full-core behavior, public source8 persistence/migration/update, resource-profile adoption, desktop integration or GUI acceptance. Reproduction requires the pinned source and a matching Windows build environment, with recorded absolute paths adapted.
'''
report=f'''# Analysis source S2a Windows checkpoint — 2026-09-13
The [gate archive](experiments/analysis-source-s2a-windows-20260913/README.md) records source `{source}`: shared raw scanning preserves the legacy token adapter, while private typed declarations use required fields, original spans, missing-ID metadata and shared frame/numeric budgets. The reserved-word test oracle and brace-frame accounting findings were corrected before execution; the original review remains in the archive.
Core listing: 129; typed 21 and token 1 pass. The **full library remains failed: 113 pass/16 fail, exit 101**. Its failed names match the earlier 2c checkpoint and all now stop at unsupported source8. All eleven new tests and eight retained bridge/save-guard cases pass. Strict all-target Clippy exits 0. The separate production-language integration target lists {len(listed)} cases and records **{legacy_outcome}**.
Eight production-language failures reject public source8. The ninth is the V2 compatibility oracle: complete retained/original value comparison found only a new empty `/definitions` catalog on the retained side, with every other original value equal. This outdated projection is not evidence of V2 data loss; the test remains failed and its later assertions did not execute. No source or fixture correction is included here.
Seven closed gates bind 524 unchanged inputs. Independent auditing compared core manifests with immutable Git blobs, runtime names with the actual listing, and raw artifact/receipt hashes; the archival helper additionally verifies the complete production-language outcome set. Raw logs, separate input manifests, helpers and reviews are preserved with byte digests. Executables and toolchains are omitted.
This is bounded Windows checkpoint evidence, not a release or complete source8 acceptance. Public source8 save/read/update, full migration, resource-profile adoption, desktop integration and GUI acceptance remain unverified by these gates.
'''
payloads['README.md']=summary.encode()
payloads['manifest.json']=(json.dumps(manifest,indent=2)+'\n').encode()
if '--check' in sys.argv:
print(json.dumps({'ready':True,'raw_evidence_files':len(files),'legacy':legacy_outcome,'archive_written':False})); sys.exit(0)
if report_path.exists(): assert report_path.read_text(encoding='utf-8') in [DRAFT,report], 'Report changed by another owner; refusing overwrite.'
for path,raw in payloads.items():
dest=folder/path
if dest.exists(): assert dest.read_bytes()==raw, f'Existing archive differs: {dest}'
for path,raw in payloads.items():
dest=folder/path; dest.parent.mkdir(parents=True,exist_ok=True)
if not dest.exists():
with dest.open('xb') as stream: stream.write(raw)
assert dest.read_bytes()==raw
report_path.parent.mkdir(parents=True,exist_ok=True)
report_path.write_text(report,encoding='utf-8',newline='\n')
print(json.dumps({'raw_evidence_files':len(files),'raw_bytes':sum(e['bytes'] for e in files),'legacy':legacy_outcome,'archive':folder.relative_to(root).as_posix(),'git_index_modified':False}))
@@ -0,0 +1,239 @@
{
"scope": "Windows S2a source checkpoint. Full library remains failed 113/16; private syntax and legacy integration evidence are separate. Raw provenance preserved. Binaries/toolchains excluded.",
"source": "b2c970b4673e062e47eadd12906d2316c4b1a7b3",
"files": [
{
"path": "evidence/.local/admit-analysis-s2a-gate.py",
"original_path": ".local/admit-analysis-s2a-gate.py",
"bytes": 4604,
"sha256": "908b09b044795a270590ea2e8d558f1a32442c873f81399ddc9fb402b992f12d"
},
{
"path": "evidence/.local/analysis-source-gates-20260913/full-b2c970b.inputs.json",
"original_path": ".local/analysis-source-gates-20260913/full-b2c970b.inputs.json",
"bytes": 97489,
"sha256": "53137c230487519310eebcb3bdb22bae52f2ca95857c8b742f34440a37992763"
},
{
"path": "evidence/.local/analysis-source-gates-20260913/full-b2c970b.log",
"original_path": ".local/analysis-source-gates-20260913/full-b2c970b.log",
"bytes": 25709,
"sha256": "0e0fd205258cd7f1b6a898486c35514a359eb02e3b17382b0f2cffb4d443cfb3"
},
{
"path": "evidence/.local/analysis-source-gates-20260913/full-b2c970b.result.json",
"original_path": ".local/analysis-source-gates-20260913/full-b2c970b.result.json",
"bytes": 1257,
"sha256": "8c8663ae841204a46331adc81e6298c3ecaea14f237049f606fe8a4d15d1d861"
},
{
"path": "evidence/.local/analysis-source-gates-20260913/legacy-full-b2c970b.inputs.json",
"original_path": ".local/analysis-source-gates-20260913/legacy-full-b2c970b.inputs.json",
"bytes": 97489,
"sha256": "53137c230487519310eebcb3bdb22bae52f2ca95857c8b742f34440a37992763"
},
{
"path": "evidence/.local/analysis-source-gates-20260913/legacy-full-b2c970b.log",
"original_path": ".local/analysis-source-gates-20260913/legacy-full-b2c970b.log",
"bytes": 230468,
"sha256": "6901e88ed2900e05f4de94cb20fdc2b9a09a31982192ae2d552e31328db8659c"
},
{
"path": "evidence/.local/analysis-source-gates-20260913/legacy-full-b2c970b.result.json",
"original_path": ".local/analysis-source-gates-20260913/legacy-full-b2c970b.result.json",
"bytes": 1282,
"sha256": "4740a310252b360943a4c017d8ffdfa0d9aea1f467e061b9ddb4b1b0a42ebab0"
},
{
"path": "evidence/.local/analysis-source-gates-20260913/legacy-list-b2c970b.inputs.json",
"original_path": ".local/analysis-source-gates-20260913/legacy-list-b2c970b.inputs.json",
"bytes": 97489,
"sha256": "53137c230487519310eebcb3bdb22bae52f2ca95857c8b742f34440a37992763"
},
{
"path": "evidence/.local/analysis-source-gates-20260913/legacy-list-b2c970b.log",
"original_path": ".local/analysis-source-gates-20260913/legacy-list-b2c970b.log",
"bytes": 1577,
"sha256": "58a841fb130d531709964bb30e18054fd634486a177c4be532a397c4b2e1eade"
},
{
"path": "evidence/.local/analysis-source-gates-20260913/legacy-list-b2c970b.result.json",
"original_path": ".local/analysis-source-gates-20260913/legacy-list-b2c970b.result.json",
"bytes": 2491,
"sha256": "8c5a38b0d6dbde0a834bf1ee9727c499fa8919695b948e807727280cf7bf5b05"
},
{
"path": "evidence/.local/analysis-source-gates-20260913/list-b2c970b.admission.json",
"original_path": ".local/analysis-source-gates-20260913/list-b2c970b.admission.json",
"bytes": 13675,
"sha256": "f177f4f0d1feb43ebd2af253d1f0c972141c7f215300ebb5ac385862b12f5fd1"
},
{
"path": "evidence/.local/analysis-source-gates-20260913/list-b2c970b.inputs.json",
"original_path": ".local/analysis-source-gates-20260913/list-b2c970b.inputs.json",
"bytes": 97489,
"sha256": "53137c230487519310eebcb3bdb22bae52f2ca95857c8b742f34440a37992763"
},
{
"path": "evidence/.local/analysis-source-gates-20260913/list-b2c970b.log",
"original_path": ".local/analysis-source-gates-20260913/list-b2c970b.log",
"bytes": 13171,
"sha256": "f852b4e6aa385f7e6f7bcb4ae770a4d6f500580f084febc1c9b2adceb0d9f54f"
},
{
"path": "evidence/.local/analysis-source-gates-20260913/list-b2c970b.result.json",
"original_path": ".local/analysis-source-gates-20260913/list-b2c970b.result.json",
"bytes": 14171,
"sha256": "5684d349d284d2d040eb2e80f40762808cfd2f1285be3db1c1c4d3b0bc276495"
},
{
"path": "evidence/.local/analysis-source-gates-20260913/strict-b2c970b.inputs.json",
"original_path": ".local/analysis-source-gates-20260913/strict-b2c970b.inputs.json",
"bytes": 97489,
"sha256": "53137c230487519310eebcb3bdb22bae52f2ca95857c8b742f34440a37992763"
},
{
"path": "evidence/.local/analysis-source-gates-20260913/strict-b2c970b.log",
"original_path": ".local/analysis-source-gates-20260913/strict-b2c970b.log",
"bytes": 188,
"sha256": "c5d02b2303b38e8383803140fc437df2f00e964f835cf3254d45044371fb01f7"
},
{
"path": "evidence/.local/analysis-source-gates-20260913/strict-b2c970b.result.json",
"original_path": ".local/analysis-source-gates-20260913/strict-b2c970b.result.json",
"bytes": 991,
"sha256": "4a6e836eb816fe34ecb03771263e226568617656fa053320d8cf11ec5432781d"
},
{
"path": "evidence/.local/analysis-source-gates-20260913/tokens-b2c970b.admission.json",
"original_path": ".local/analysis-source-gates-20260913/tokens-b2c970b.admission.json",
"bytes": 859,
"sha256": "d2fb50a7d9a8d312f74e55acdca2fe0d15dfb293dffdebdaaa15eda6321a594b"
},
{
"path": "evidence/.local/analysis-source-gates-20260913/tokens-b2c970b.inputs.json",
"original_path": ".local/analysis-source-gates-20260913/tokens-b2c970b.inputs.json",
"bytes": 97489,
"sha256": "53137c230487519310eebcb3bdb22bae52f2ca95857c8b742f34440a37992763"
},
{
"path": "evidence/.local/analysis-source-gates-20260913/tokens-b2c970b.log",
"original_path": ".local/analysis-source-gates-20260913/tokens-b2c970b.log",
"bytes": 447,
"sha256": "32cd7d2bda89d12695617dd956b85b286e7fe86129c78296fa3e3fcc19c31417"
},
{
"path": "evidence/.local/analysis-source-gates-20260913/tokens-b2c970b.result.json",
"original_path": ".local/analysis-source-gates-20260913/tokens-b2c970b.result.json",
"bytes": 1285,
"sha256": "238cc7b141b7f0a3eeaed6f5079d9dbf2f830dc8687c2d6383020f2e9aad6192"
},
{
"path": "evidence/.local/analysis-source-gates-20260913/typed-b2c970b.admission.json",
"original_path": ".local/analysis-source-gates-20260913/typed-b2c970b.admission.json",
"bytes": 3169,
"sha256": "fbbe8aae848a50f3696a0adc4290e4c47208543610e50115175e885c4b1be7f4"
},
{
"path": "evidence/.local/analysis-source-gates-20260913/typed-b2c970b.inputs.json",
"original_path": ".local/analysis-source-gates-20260913/typed-b2c970b.inputs.json",
"bytes": 97489,
"sha256": "53137c230487519310eebcb3bdb22bae52f2ca95857c8b742f34440a37992763"
},
{
"path": "evidence/.local/analysis-source-gates-20260913/typed-b2c970b.log",
"original_path": ".local/analysis-source-gates-20260913/typed-b2c970b.log",
"bytes": 2860,
"sha256": "ffa47958eab98bb2223133b09ef1e446883e8a0b599bc4c8db7127b52760500e"
},
{
"path": "evidence/.local/analysis-source-gates-20260913/typed-b2c970b.result.json",
"original_path": ".local/analysis-source-gates-20260913/typed-b2c970b.result.json",
"bytes": 1289,
"sha256": "2bc1c684a2f848e9cf8f64bc9ab78e0cfd64f3a3b40addf2f09f541a777e5099"
},
{
"path": "evidence/.local/analysis-source8-s2a-execution-audit-20260913.json",
"original_path": ".local/analysis-source8-s2a-execution-audit-20260913.json",
"bytes": 6390,
"sha256": "a3536aeaf1384b5f2d4e44a41855b19275d1d2530d7fe7ca183e8a4305477e11"
},
{
"path": "evidence/.local/analysis-source8-s2a-handoff-20260913.md",
"original_path": ".local/analysis-source8-s2a-handoff-20260913.md",
"bytes": 17250,
"sha256": "99142a99588357601617db884cf129fb6dd7908c3a066c21cd856da327dc228d"
},
{
"path": "evidence/.local/analysis-source8-s2a-independent-review-20260913.md",
"original_path": ".local/analysis-source8-s2a-independent-review-20260913.md",
"bytes": 19372,
"sha256": "b8b8c00f7f2fc47bfd63b1d03283ceb3a494e4e30ec487be0191e01227b0e36c"
},
{
"path": "evidence/.local/analysis-source8-s2a-legacy-cause-20260913.json",
"original_path": ".local/analysis-source8-s2a-legacy-cause-20260913.json",
"bytes": 1955,
"sha256": "6b7285489b33a883b920c7de653d77bde68010d1b02d7acddb89f37bc47c5699"
},
{
"path": "evidence/.local/analysis-source8-s2a-strict-audit-20260913.json",
"original_path": ".local/analysis-source8-s2a-strict-audit-20260913.json",
"bytes": 983,
"sha256": "bcefd4fe5c203ef4fc3275a1f6bbd52dc54eba946bfa5d34bbd8946a052dd08d"
},
{
"path": "evidence/.local/audit-analysis-s2a-independent.py",
"original_path": ".local/audit-analysis-s2a-independent.py",
"bytes": 7707,
"sha256": "b49beccea6e58b1d7be14476ac45cacaa402fe3a4ab52731aede5d2faa2c69c3"
},
{
"path": "evidence/.local/audit-analysis-s2a-legacy-cause.py",
"original_path": ".local/audit-analysis-s2a-legacy-cause.py",
"bytes": 5277,
"sha256": "bb2487ae2e92152016f81a9f27a59c0e8ebe8a4e44541209b081e87f6a0a0775"
},
{
"path": "evidence/.local/audit-analysis-s2a-strict-independent.py",
"original_path": ".local/audit-analysis-s2a-strict-independent.py",
"bytes": 2383,
"sha256": "a6555b8b408a28e51df7957bb6d352fe0d320aec66beac140df17e80d7d45449"
},
{
"path": "evidence/.local/run-analysis-legacy-gate.py",
"original_path": ".local/run-analysis-legacy-gate.py",
"bytes": 3884,
"sha256": "07647a675067fc2dc867ae0493453c8139e2dd0ff9712e5a3eace875bd5b01b5"
},
{
"path": "evidence/.local/run-analysis-source-gate.py",
"original_path": ".local/run-analysis-source-gate.py",
"bytes": 3865,
"sha256": "d8d9c1c9e9dc94fdd43afb4118ebc491c8eb6d89082f8441f8395b9d4265b068"
},
{
"path": "evidence/.local/stage-analysis-s2a-checkpoint.py",
"original_path": ".local/stage-analysis-s2a-checkpoint.py",
"bytes": 14312,
"sha256": "06743a7043d3e7474f807d0e4b5c5bbb0f25f36cbb99f48c697697ee154da581"
}
],
"published_dependencies": [
{
"path": "harness/experiments/analysis-source3-bridge-windows-20260913/evidence/.local/analysis-source-gates-20260913/list-6216cff.result.json",
"bytes": 12851,
"sha256": "0a03e438210d20f2295a0c4021c26eb1bc5ce4fe845309ea25a393113657f827"
},
{
"path": "harness/experiments/analysis-source3-bridge-windows-20260913/evidence/.local/analysis-source-gates-20260913/list-6216cff.admission.json",
"bytes": 12355,
"sha256": "483bdc1c3be24327334186c96c2b9f16c3d11a1415a5bd1ee1899a605f34db92"
},
{
"path": "harness/experiments/analysis-source-s0-s1-windows-20260913/evidence/.local/analysis-source-gates-20260913/full-2c515cf.log",
"bytes": 24166,
"sha256": "d016a7a614044148328b256e19072db1e3c0014286d6944d6b07f0207ae7b2cf"
}
]
}
@@ -0,0 +1,11 @@
# Analysis source S2a Windows checkpoint — 2026-09-13
The [gate archive](experiments/analysis-source-s2a-windows-20260913/README.md) records source `b2c970b4673e062e47eadd12906d2316c4b1a7b3`: shared raw scanning preserves the legacy token adapter, while private typed declarations use required fields, original spans, missing-ID metadata and shared frame/numeric budgets. The reserved-word test oracle and brace-frame accounting findings were corrected before execution; the original review remains in the archive.
Core listing: 129; typed 21 and token 1 pass. The **full library remains failed: 113 pass/16 fail, exit 101**. Its failed names match the earlier 2c checkpoint and all now stop at unsupported source8. All eleven new tests and eight retained bridge/save-guard cases pass. Strict all-target Clippy exits 0. The separate production-language integration target lists 16 cases and records **7 passed / 9 failed / 0 ignored; exit 101**.
Eight production-language failures reject public source8. The ninth is the V2 compatibility oracle: complete retained/original value comparison found only a new empty `/definitions` catalog on the retained side, with every other original value equal. This outdated projection is not evidence of V2 data loss; the test remains failed and its later assertions did not execute. No source or fixture correction is included here.
Seven closed gates bind 524 unchanged inputs. Independent auditing compared core manifests with immutable Git blobs, runtime names with the actual listing, and raw artifact/receipt hashes; the archival helper additionally verifies the complete production-language outcome set. Raw logs, separate input manifests, helpers and reviews are preserved with byte digests. Executables and toolchains are omitted.
This is bounded Windows checkpoint evidence, not a release or complete source8 acceptance. Public source8 save/read/update, full migration, resource-profile adoption, desktop integration and GUI acceptance remain unverified by these gates.