Freeze data contract integration scope and compatibility strategy

This commit is contained in:
2026-09-06 03:17:33 +03:00
parent 5ce3eefdbf
commit 2bf4c5451a
+59
View File
@@ -0,0 +1,59 @@
# R6 implementation freeze — schema/source 4
Status: implementation starts in isolated D:/CodexBuilds/Capella2-data-integration.
State editing acceptance stays on state-integration; merge its navigation fix later.
The full first-release goal remains incomplete.
## Outcome and contract
Implement the complete data/interface contract in release-data-contract.md before
accepting schema/source4 artifacts: nature/mechanism, bounded scalar types/defaults,
field direction/storage, qualified scenario value paths, single specialization,
identified interface-item allocations/protocols and binary reference associations.
Use its exact types and validation rules. Existing PortContract and legacy
resolution/split behavior are authoritative; the old R6 InOut paragraph is superseded
by release-port-contract.md. R6 never creates a new InOut functional contract.
Retain three crates, Project and validated atomic Command/Document boundaries.
Use data.rs shared helpers for effective fields, item ancestry, inherited interface
allocations, carried field paths and value validation. Reference visitors own live
references; no second model or mutation API. Inherited rows expose original identity.
Scenario paths disambiguate reused records and stop at Reference storage.
## Sequence and ownership
1. Core owner freezes public shapes/helpers, implements typed data validation,
reference/removal/transition maintenance and focused meaningful regressions.
2. Source/migration owner preserves V1/V2/current3 inputs through an explicit4
reader; updates parser/source-project migration without flattening nesting,
includes or comments. Frozen strict DTOs only for changed old payloads plus a
closed old constructor catalog avoid cloning the whole metamodel.
3. Desktop owner integrates typed forms, path pickers, readable nested dictionary
and interface-allocation rows. Root integrates OpenAPI/spec and actual REST.
4. Full tests/strict checks, source/JSON/HTTP roundtrips, invalid/stale transactions,
Windows/Linux native authoring, compact UI and fresh independent review.
Separate files per owner; communicate model/helper signatures before dependent edits.
Use a dedicated target for this worktree. No simultaneous Cargo mutations.
Do not publish or accept intermediate4 files until both payload and dictionary
slices are complete. R3 semantic reconciliation follows this shape/reference freeze.
## Required evidence
- Physical flow and Operation parameters use bounded reusable types and defaults.
- Two parameters using one Record retain distinct value paths through calls/replies,
reidentify/delete, graphical/source edits and initial transitions.
- Two interfaces allocate one item with independent protocols/artifact links; removing
one allocation retains the item and the other allocation, and Undo restores it.
- Specialization/inherited fields and associations preserve ownership and identity;
invalid cycles/defaults/paths/ranges reject atomically, incomplete drafts warn.
- V1/V2/current3 migration preserves identities, typed ports, comments, includes and
nested ownership; deterministic allocation IDs and unresolved legacy annotations
have explicit diagnostics. GUI/source/REST save/reopen agree.
Alternatives: silent changes under schema3 rejected because existing saved3 projects
are real compatibility inputs. Whole-model frozen DTO/validator duplication rejected
in favor of strict changed-payload compatibility adapters. Generic JSON diff or
opaque body replacement is not the R3 solution. Instance literals, unit conversion,
expression execution and multiple inheritance remain explicitly outside this
bounded contract; the release requirements for categories/filters are separate.