104 lines
5.8 KiB
Markdown
104 lines
5.8 KiB
Markdown
# Default omission: preservation baseline, 2026-09-13
|
||
|
||
**Branch-specific regression evidence; no production fix or issue closure.**
|
||
Codex-9e8r6t `/root` prepared this checkpoint for
|
||
[Gitea issue 11](http://217.177.34.108:3000/sorokin.oleg.edu/ARCADIA-Studio/issues/11).
|
||
It establishes three existing source-preservation defects that compact generation
|
||
must avoid extending. The full OA/SA release remains incomplete; Linux work is
|
||
user-paused.
|
||
|
||
## Findings and evaluation
|
||
|
||
The corrected Windows baseline runs eleven tests: **eight pass, three fail**.
|
||
All three failing tests first admit independently handwritten source and a
|
||
literal, complete expected `Project`, then verify that `update_bundle` returns
|
||
that exact model. They fail only at the subsequent exact `SourceBundle`
|
||
comparison:
|
||
|
||
| Requested edit | Unrelated authored syntax erased |
|
||
| --- | --- |
|
||
| Bind an Exchange occurrence to an existing interaction | `operation none ;` |
|
||
| Change one node's x coordinate | `port_anchors [] ;` |
|
||
| Change one historical baseline's OA description | `semantic none ;` |
|
||
|
||
The updater preserves the adjacent whitespace/comments but deletes the field's
|
||
semantic tokens. No-op and header-only controls for each identical fixture all
|
||
pass. These distinguish actual changed-record traversal from header edits that
|
||
short-circuit before the erasure branch. Source and model expectations are not
|
||
generated by the formatter under test.
|
||
|
||
Two further controls pass. Action→State removes the inapplicable action field
|
||
and retains the shared lifeline field's distinctive spelling/comment. A valid
|
||
BoundaryExchange between legacy participant ports becomes a CommunicationMean
|
||
between their entity owners with oriented=false. The endpoint changes are
|
||
explicit parts of the latter target. Unchanged port declarations, comments and
|
||
other source bytes remain exact. Both controls independently admit narrowly
|
||
enumerated complete-source alternatives allowing newly redundant state/oriented
|
||
fields to be omitted; they do not require expanded default generation.
|
||
|
||
The original baseline is preserved: **seven passed, four failed**. Three failures
|
||
are the same production defects. The fourth was a test setup error: the initial
|
||
BoundaryExchange incorrectly used entities as endpoints and failed admission
|
||
before any update. That is not a fourth production defect. The
|
||
[independent test review](text-default-omission-preservation-test-review-20260913.md)
|
||
also found two over-specific default-presence assertions; the second
|
||
baseline corrects both and strengthens shared-field trivia coverage. Historical
|
||
inputs and failure logs are unchanged.
|
||
|
||
## Identified code and reproducibility
|
||
|
||
Both gates started at HEAD `74cc0e09119f9fa9e1287988bdd98c4cbf9db79e` with the
|
||
new, uncommitted-at-execution regression file. Production inputs remain the
|
||
published `9fd76aef3ae2810667d3f2b031fc43692fc04c89` contribution; this checkpoint
|
||
adds tests and evidence only. Each gate captures **605 exact input files** and
|
||
confirms they remained unchanged for its command. `baseline-2/inputs.zip` contains
|
||
the test source delivered with this checkpoint. The two captures differ only in
|
||
that test file; the verifier and parent Git-blob readback check the mapping.
|
||
|
||
Windows native `stable-x86_64-pc-windows-gnullvm`, Rust/Cargo 1.98.1, LLVM-MinGW,
|
||
one Cargo build job, incremental compilation disabled. Offline dependencies and
|
||
the lockfile were used. These are core integration tests; no GUI workflow,
|
||
Linux run, whole-suite green result or compact output acceptance is claimed.
|
||
|
||
```text
|
||
cargo test --locked --offline -p oa-core --test default_omission_preservation --message-format=json -- --include-ignored --nocapture
|
||
```
|
||
|
||
The three desired-behavior regressions are deliberately marked ignored with the
|
||
confirmed defect in the reason. The command above explicitly runs them and
|
||
**must currently exit 101**, with eight passes and the three named failures.
|
||
Remove those ignores when the actual preservation fix passes these checks.
|
||
A default test run skipping them is not evidence that preservation is fixed.
|
||
|
||
| Gate | UTC interval | Result |
|
||
| --- | --- | --- |
|
||
| baseline-1 | 09:43:48–09:45:58 | 7 pass / 4 fail; includes invalid fixture |
|
||
| baseline-2 | 09:52:58–09:53:03 | 8 pass / 3 fail; corrected controls |
|
||
|
||
The [portable evidence archive](experiments/default-omission-20260913/README.md)
|
||
includes exact source ZIPs/manifests, raw logs, original runner, start/result
|
||
receipts, and independent evidence/test reviews. Run its read-only verifier with
|
||
Python 3. Executable receipts identify what Cargo produced and the runner hashed;
|
||
test binaries are not distributed. No dependency on another machine's local
|
||
filesystem is required to inspect this evidence.
|
||
|
||
## Design implication and boundary
|
||
|
||
The [candidate omission design](text-default-omission-design-20260913.md)
|
||
recommends complete internal comparison records and compact generated fragments.
|
||
These failures demonstrate that complete comparison must restore fields already
|
||
skipped by persistence serialization. Generic empty/false/none removal would
|
||
also discard meaningful values or required syntax. The
|
||
[independent alternative-policy critique](text-default-omission-update-policy-review-20260913.md)
|
||
rejects a blanket rule retaining anything absent from both compact trees:
|
||
constructor and header-default changes lose information needed to remove or
|
||
rewrite stale fields. Its additional compact-policy counterexamples remain
|
||
static predictions, not outcomes established by this baseline.
|
||
|
||
This checkpoint does not modify shared public formatter/source update code or
|
||
the peer's private source8 analysis writer. Their eventual combination must use
|
||
identified commits, reconciled ownership, the broader default/required-field
|
||
matrix and public round trips, followed by real graphical/text editing workflows.
|
||
Live ownership and next actions remain in Gitea, rather than in this evidence
|
||
record.
|