Add exact semantic history resets and unordered member review
Rust checks / check (ubuntu-latest) (push) Canceled after 0s
Rust checks / check (windows-latest) (push) Canceled after 0s
Rust checks / check (ubuntu-latest) (push) Canceled after 0s
Rust checks / check (windows-latest) (push) Canceled after 0s
This commit is contained in:
@@ -225,3 +225,67 @@ scope protection. Both delegated core defects are resolved and exercised.
|
||||
Owned-file rustfmt check, strict Clippy (`--all-targets -- -D warnings`) and the
|
||||
desktop build all pass using the dedicated target and commands above. Native checks remain root-owned. No native application
|
||||
was launched, and full milestone 3 / GUI parity / release acceptance remain open.
|
||||
|
||||
## Independent unordered membership and exact reset slice
|
||||
|
||||
Current scope: seven unordered reference collections (function input/output items,
|
||||
signal/exchange items, transition triggers/effects, constrained identities) and exact
|
||||
enumeration literals. Stage an explicit OA/SA address, then choose Keep, Take or
|
||||
Candidate presence. New rows never create referenced model objects or infer pairs.
|
||||
Pair changes preserve existing decisions and require explicit history resets and
|
||||
overlap resolution. Literal pairing uses the same exact string on both sides.
|
||||
|
||||
History lists exact previous observations, with reversible pending resets applied
|
||||
before catalog construction, constructor scope and candidate composition. A reset-only
|
||||
Apply uses the same core prepared command batch and atomic source/history undo.
|
||||
Artifact history stays deferred; other read-only value families can have their
|
||||
exact historical observations reset without exposing value editors.
|
||||
|
||||
Independent annotation, binding, ordered/owned/incident/artifact decisions and
|
||||
multi-source review remain later slices. Existing constructor forms remain intact.
|
||||
The member-family picker offers collections available on the current counterparts.
|
||||
Identity pickers reuse the ordinary property editor's typed choices. Presence and
|
||||
all scalar/group drafts remain separate; leaving a decision or removing a staged
|
||||
address retains its raw presence draft. A missing source key means a target-local
|
||||
row that Take preserves; an explicit absent source key can remove only the mapped
|
||||
entry. Existing model objects and unrelated entries remain intact. Previous member
|
||||
identities, deleted UUIDs and quoted exact literals remain distinguishable.
|
||||
|
||||
History and Members use the existing compact scroll area, and the contextual tabs
|
||||
wrap. Users can explicitly remove staged addresses and their decisions or uncheck
|
||||
obsolete pending resets after refresh, without discarding other work. Candidate
|
||||
projection changes only the selected boolean member entries; the core independently
|
||||
checks the complete typed candidate and supplies all acknowledged/retired/impact
|
||||
scope. The GUI never synthesizes accepted history or additional-change commands.
|
||||
|
||||
On base `c149f2f`, all **311 desktop tests pass**, including 12 new workflow tests.
|
||||
The suite covers 30 five-family/direction/Keep-Take-Candidate cases, both typed
|
||||
function-port item families with reverse Legacy applicability, exact literal
|
||||
add/remove and default retention, historical pair migration with explicit overlap
|
||||
resolution, constructor reset before equal-kind acknowledgment, deleted source
|
||||
members and target-local preservation, exact reset-only source/Undo/Redo, source
|
||||
reopen/comments, retained drafts, stale/source-write failures and recovery.
|
||||
Owned-file rustfmt check, strict Clippy (`--all-targets -- -D warnings`) and
|
||||
`cargo build --locked -p oa-desktop` all pass with the dedicated desktop target.
|
||||
No core, API, schema or shared header changes were needed.
|
||||
|
||||
Root-owned native acceptance uses the fixtures mirrored by `keyed_tests.rs`:
|
||||
- Signal pair: source contains a mapped item; destination contains a separate local
|
||||
item. In Members, choose Signal items and both mapped identities, then Take in
|
||||
Properties. Inspect the proposed present row and retained local row; apply, undo,
|
||||
redo and inspect source. Repeat in reverse. Test Candidate exclusion as well.
|
||||
- Enum pair: both contain `retained` with that default; source also contains
|
||||
` New value ` and destination contains `old`. Stage exact paired literals; Take
|
||||
the incoming row, Candidate-remove `old`, Candidate-add `new value`. Inspect the
|
||||
distinct exact strings, unchanged default and one source/history transaction.
|
||||
- Historical pair: an existing one-sided member observation is replaced by an
|
||||
explicitly paired address. Apply stays unavailable until that exact old history
|
||||
is reset and any overlapping earlier decision is explicitly left unselected.
|
||||
Use History for a reset-only Apply; values and prose history stay unchanged, and
|
||||
one Undo restores the exact prior source and semantic history.
|
||||
- At 1100x700, verify wrapped tabs, scrollable member/history content, long/deleted
|
||||
identity labels, retained errors/decisions, staged-address removal, source failure
|
||||
repair and apply/cancel access; repeat a normal transaction at 1440x900.
|
||||
|
||||
No native application was launched here. Independent review, actual native
|
||||
acceptance, later keyed/ordered slices and full GUI parity remain open.
|
||||
|
||||
Reference in New Issue
Block a user