7.1 KiB
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 and critique 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_public8becomeslanguage::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_unchangedbecomeslanguage::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.