Files
ARCADIA-Studio/harness/text-default-omission-production-20260913.md
T

7.9 KiB
Raw Blame History

Ordinary compact source: production checkpoint, verification incomplete

Branch: codex/text-defaults-9e8r6t, based on 2a64344b929077c873cb81c4f0b36c6bb3ae1ffe. This checkpoint implements ordinary source defaults and lossless editing, but is not ready for integration or release acceptance. The focused production run passed 75 tests. The full core build exhausted disk space before all targets linked. Subsequent execution of 36 completed integration binaries yielded 354 passed, 2 failed, 1 ignored; one failure was subsequently resolved and rerun, while the other has a reviewed test correction awaiting compilation.

Behavior and architecture

Current ordinary parsing and canonical flat/modular output share the explicit source-default inventory in crates/oa-core/src/source_defaults.rs. Required top-level fields retain explicit admission checks; selected constructors are not deep-merged with another constructor. Historical source2–6 parser paths remain separate. Source-specific Scenario defaults remain MixedLegacy, independent of GUI creation defaults. Signed zero, present-empty optional values, required empty payloads, and historical semantic records retain their distinctions.

language::format_declarations(project, DeclarationFormat) makes the editing/output seam explicit. Compact omits known defaults; CompleteForEdit restores serializer-skipped fields and does not prune; internal CompactValues retains declaration fields while compacting optional nested payloads for insertion. The public flat and modular writers use Compact. The updater compares complete old/new fields, uses compact templates only for inserted syntax, and emits compact new declarations through the existing structural updater. Migration makes the mechanically required explicit CompleteForEdit call with no insertion policy.

Unchanged authored defaults now survive payload edits, including Exchange.operation none, Node.port_anchors [], and Trace.baseline.semantic none. Their three previously failing witnesses passed and are enabled as normal regressions. An independent critic found that changing a relation kind can change an omitted orientation's meaning even when its typed value remains true. The correction reconsiders only implicit fields on a declaration-kind change; a valid BoundaryExchange-port to CommunicationMean-entity test confirms the required explicit true value appears while other source remains unchanged.

The prototype's 18 independent policy-map tests were moved into the private production module, with four additional controls. The public fidelity suite now exercises actual flat and generated modular exports rather than the experimental span-deletion bridge. Six output tests check typed field locations and required/default distinctions. Six update witnesses cover constructor insertion, required Signal/String payloads, optional route fields, signed-zero insertion and changed default context. The original prototype evidence remains available at its published commits and archives.

Executed evidence

Environment: Windows, Rust/Cargo 1.98.1, stable-x86_64-pc-windows-gnullvm, configured LLVM-MinGW, one Cargo build job, incremental compilation disabled, locked offline dependencies. All process handles are closed.

Capture Outcome Scope
production-focused-1 75 passed, 0 failed, 0 ignored; exit 0 Six integration targets, including all formerly ignored preservation witnesses; 614 unchanged inputs; 10:44:08–10:46:40 UTC
production-core-1 Build failed, exit 101 LLVM reported no space left on device while linking review_regressions; 613 unchanged inputs, 39 executable receipts; 10:49:54–11:00:46 UTC; no complete Cargo suite execution
production-built-tests-1 354 passed, 2 failed, 1 ignored 36 integration binaries independently executed after exact hash checks against the closed compiler receipts; inputs unchanged; completed 11:03:09 UTC
production-teaching-1 Generator exit 0; 4 teaching tests passed Already-built and hash-verified generator/test executables, after updating current teaching source; 29 .arcadia files changed, every non-source teaching file unchanged
language-doc-3 Strict Docutils 0.23, zero warnings Final normative source and generated HTML, including correction of two stale explicit-default statements
production-format.log cargo fmt --all -- --check: exit 0 Final checkpoint Rust formatting

The focused command was:

cargo test --locked --offline -p oa-core --test default_omission_fidelity --test default_omission_output --test default_omission_updates --test default_omission_preservation --test default_omission_admission --test source_project --message-format=json -- --include-ignored --nocapture

The interrupted broad command was:

cargo test --locked --offline -p oa-core --no-fail-fast --message-format=json -- --nocapture

The portable evidence archive preserves the two original source captures, raw Cargo streams and receipts, independently executed binary logs/receipts, generator results and before/after teaching hashes, review, documentation receipts, and producer scripts. Binary hashes are historical execution receipts; this checkpoint does not distribute those binaries. The archive verifier validates captured membership, source and stream hashes, and explicitly distinguishes build failure from separately executed tests.

Findings and remaining validation

The teaching failure compared old verbose checked-in current-output examples with the new compact writer. The identified generator rebuilt the same model (94 elements, 62 relations, five views, 68 traces) and wrote 30 source files; 29 changed. Model JSON, transition requests/baselines, diagnostics, and other teaching files were byte-identical. Rerunning its unchanged identified test binary passed all four tests. Frozen historical compatibility fixtures were not regenerated.

The port-anchor test required removal of the enclosing authored field when its last manual entry was removed. Independent review found that this overconstrained lossless editing: retaining empty brackets and annotations is valid, while canonical export must omit the default field. The corrected test checks canonical omission, preserves complete-model/comment/re-add checks, and adds cleared no-op stability. That correction and its previously unreached re-add half have not yet been compiled/run.

The private 22-test policy/parser module, remaining full-suite targets, strict production Clippy, final native workflows, public consumer checks, and release packaging still require verification. Existing language negative tests that replace a now-omitted default (notably transition_kind External) must be reconciled with explicit invalid fixtures when those tests run. No production source8 acceptance is implied; that wiring remains the independent issue 7 contribution under the confirmed ownership partition (comments 949/951).

The new insertion metadata currently stores copied compact substrings. A read-only lifetime review confirmed a bounded improvement: retain the existing compact source string and map complete offsets to its Span values, avoiding repeated copies of enclosing records. That improvement is planned but unapplied, pending space to rebuild and verify it. Do not attribute this optimization to this checkpoint.

Disk recovery is externally constrained: automatic approval review rejected deletion of already-published duplicate local input ZIPs with “blocked by policy,” despite user authorization. No deletion occurred. A separate manually runnable cleanup script identifies 1,260,129,772 bytes of retired build artifacts and guards against active builds/newer files; it is local-only, not executed by the agent. User-facing cleanup is distinct from this reproducible code/evidence handoff. Linux checks remain explicitly user-paused. Issue 11 and the overall release objective remain open.