110 lines
7.1 KiB
Markdown
110 lines
7.1 KiB
Markdown
# 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.
|