diff --git a/harness/release-data-implementation.md b/harness/release-data-implementation.md new file mode 100644 index 00000000..a10b2c3e --- /dev/null +++ b/harness/release-data-implementation.md @@ -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.