Files
ARCADIA-Studio/harness/ordinary-source8-compatibility-contract-20260925.md
T

110 lines
7.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Restore ordinary current-schema source round trips
Baseline `edf096cd33350865ecfc3c65ec266a6c0d3c4000`. The public model and writers
already use schema8, while the ordinary public reader admits only3–7. Six nested
source tests and ten disk-transaction tests stop at that version rejection. The
selected immediate outcome restores existing ordinary OA/SA workflows without
claiming the private mixed analysis pipeline is publicly integrated.
## Decision and boundaries
Select ordinary source8 compatibility before broad mixed read/edit adoption.
Independent [mapping](ordinary-source8-design-20260925/ADOPTION-MAP.md) and
[critique](ordinary-source8-design-20260925/ADOPTION-CRITIQUE.md) identify the
writer→reader mismatch and the coupled public compilation callers. Existing
compile_bundle performs identity stabilization, source migration and indexing;
updates, checked save, history and server preparation depend on that complete
result. A private AcceptedRename cannot replace it with an incomplete index.
Admit current schema8 through the existing supported ordinary grammar and model
admission. Preserve version3–7 migration, caller limits, exact locations, omitted
UUID stabilization, lexical ownership, source index and unchanged-input refusal
semantics. Preserve future-version rejection with an accurate supported-version
diagnostic. Current-schema input must report no migration; old migrated output
must recompile idempotently at the current schema.
Keep explicit analysis-record refusal in ordinary conversion and refusal of short
typed declaration syntax. Do not promote cfg(test) mixed hooks, invent an empty
typed index, add unchecked constructors, change formatters, or silently accept
unsupported analysis payloads. The public formatter's missing typed definitions
and generic analysis payload output remain separate integration limitations.
Existing complete-model checks must still reject lossy checked-save output before
filesystem staging. Ordinary acceptance is not full source8 language support.
Do not change generic value depth64, typed logical depth128, parser/storage limits,
DEPTH_128_VALIDATED=false, codec platform qualification, or the separately recorded
full-pipeline stack limitation. Source and JSON checked-save paths must both be
exercised when the formerly first-failing source path begins to work; this does
not qualify depth128 or waive user-deferred Linux work.
## Finite acceptance
- Preserve all292 existing core tests. The16 named schema-refusal failures must
run their actual nested/migration/update/transaction assertions. Investigate any
newly reached failure at its own layer; neither changing an expected outcome
nor observing a different failure closes it.
- Add a focused direct ordinary current-schema formatter→parser and bundle
formatter→compile→compile regression. Check whole OA/SA models and actual source
identities, current no-migration behavior and old3–7 migration/idempotence.
Reuse substantial existing fixtures rather than creating a second model writer.
- Verify included/nested ordinary declarations with omitted IDs, Unicode/CRLF,
comment preservation, historical fields, exact warning/error attribution and
stabilized index spans in the returned bytes. Existing relevant integration
tests may supply this evidence when actually run on the candidate.
- Assert both short typed syntax and long ordinary analysis constructors remain
rejected through public entry points. Keep malformed/future headers rejected;
retain existing overbudget, stale compiled input and lossy-save safeguards.
- Run the core library suite, relevant existing source-project/identity/migration/
checked-save/disk-transaction integration tests, strict core all-target Clippy
and format disposition. Inventory test names before selecting focused commands
so a zero-test invocation cannot count. Prior private acceptance and stack
controls remain required regressions.
- Build a non-test consumer and exercise a real CLI source check and rename
preview over an ordinary multi-file input. Assert expected report/model/bytes
and that check/preview leaves every input unchanged. Use existing CLI semantics;
do not bypass discovery or perform a disk write merely to prove preview.
Keep source fixes and new evaluator expectations separate in the evidence. Record
initial failures, source/artifact identities and the precise tests that now reach
previously masked behavior. Root owns compilation, integration acceptance and
publication; bounded workers may implement and independently review. The remote
publication/comment failure does not turn local commits into shared handoffs.
## Reconcile obsolete version assertions after the full run
The first full candidate run at `520e50ce` reached all298 tests:294 passed and4
failed. All16 previously blocked workflows passed. Four earlier private-pipeline
tests explicitly required even an empty ordinary schema8 project to fail public
parsing, contrary to this contract's deliberate ordinary admission change. Keep
their initial failures and reconcile only those obsolete assumptions: verify
ordinary8 acceptance without migration and preserve explicit rejection of actual
typed analysis syntax. Keep their independent lowering, canonical model and
numeric-token assertions. No production change follows from this finding.
Two misleading names change with exact one-to-one inventory mappings:
- `language::analysis_source::declarations::tests::inherited_version_root_and_short_word_contracts_do_not_enable_public8`
becomes `language::analysis_source::declarations::tests::inherited_version_root_and_short_word_contracts_do_not_enable_public_typed8`.
- `language::analysis_source::tests::public_source_headers_and_existing_numeric_token_controls_are_unchanged`
becomes `language::analysis_source::tests::public_ordinary_source8_preserves_typed_refusal_and_numeric_controls`.
The other two affected tests keep their names. Preserve the other290 prior names
and all prior substantive checks; this explicit mapping is not permission to
exclude outcomes. Final expected inventory remains298. The initial focused5/1
fixture failure and subsequent focused6/0 plus full294/4 remain separate evidence.
The subsequent `0c07f53a` core suite passed298/298. Its migration integration
suite exposed one further stale oracle: the frozen schema4 JSON has no
`definitions` field, whereas `Project4::into_current` explicitly creates an
empty catalog and current Project serialization includes it. Correct only that
test's expected JSON, asserting original field absence and the migrated empty
catalog before adding `{}`. Keep the complete JSON comparison and all historical
field assertions. Preserve its initial4/1 result.
If the successor changes only that integration test and its implementation note,
reuse the unchanged core, other integration and CLI evidence at `0c07f53a`.
Verify the exact Git diff and every other declared input byte before reuse; label
tested component versions explicitly. Run the affected migration list/suite and
all-target Clippy/format gates on the successor. Do not imply that reused tests
were rerun at the successor or that the initial migration failure was a pass.