Review nested message kind groups with exact timer scope

This commit is contained in:
2026-09-06 07:05:01 +03:00
parent 5a51a7572e
commit f73551fddc
8 changed files with 970 additions and 45 deletions
+56 -15
View File
@@ -1,7 +1,8 @@
# Semantic desktop review — milestones 1 and 2
# Semantic desktop review — scalars and nested message kind
Status: milestones 1–2 implemented and desktop tests/build verified; not full GUI
parity, native acceptance or release acceptance.
Status: milestones 1–2 implemented; the bounded MessageKind/TimerExpression
constructor slice is implemented. Full milestone 3, GUI parity, native acceptance
and release acceptance remain outstanding.
Base: `d130013`. Dedicated build target:
`D:/CodexBuilds/Capella2-semantic-desktop-target`. Native verification is root-owned.
@@ -16,7 +17,8 @@ Base: `d130013`. Dedicated build target:
- Support every applicable scalar leaf through Keep, Take and typed final-value
forms. Candidate records contain the complete combined selected result. Identity,
alias and layer are protected. The closed core remains the validation boundary.
- State.Kind is a single structural scalar. Other constructor switches, keyed
- State.Kind is a single structural scalar. Occurrence.MessageKind now supports
its complete nested group, including TimerExpression. Other constructor switches, keyed
membership/order/annotation/binding/attachment decisions and pairing resets belong
to milestone 3; show them read-only with an honest explanation.
- Core `6bb2583` permits first equal constructor acknowledgment without descendant
@@ -36,14 +38,16 @@ Base: `d130013`. Dedicated build target:
2. Scalar decisions and typed candidates; immutable initial observations; combined
final records; exact impact acceptance; atomic document/source commit. Focused
App event/source/history tests, strict Clippy and a dedicated desktop build.
3. Constructor closure, keyed and ordered facts, reset, complete artifact lifecycle,
multi-source review and remaining source/REST parity cases. Still outstanding.
3. Nested MessageKind/TimerExpression closure is implemented. Other constructor
groups, keyed and ordered facts, reset, complete artifact lifecycle, multi-source
review and remaining source/REST parity cases are outstanding.
4. Root-owned native review, cross-surface fixtures, package/release acceptance.
## Verification
Verified after the independent scalar review fixes on SEM `6ad3cb`, using only the
dedicated desktop target (core behavior remains based on `6bb2583`):
Scalar fixes were verified on SEM `6ad3cb`; the nested message-kind slice builds
on scalar commit `5a51a75`. Verification uses only the dedicated desktop target
(core behavior remains based on `6bb2583`):
```powershell
$env:CARGO_TARGET_DIR='D:/CodexBuilds/Capella2-semantic-desktop-target'
@@ -52,8 +56,8 @@ cargo clippy --locked -p oa-desktop --all-targets -- -D warnings
cargo build --locked -p oa-desktop
```
All **277 desktop tests passed**, including **11 original semantic review tests**
and **5 scalar review regression tests**.
All **285 desktop tests passed**, including **11 original semantic review tests**,
**5 scalar review regression tests**, and **8 nested message-kind tests**.
Strict Clippy and the desktop build passed. The existing migration test's header
assertion now follows `SCHEMA_VERSION` instead of expecting schema 4.
@@ -85,19 +89,56 @@ The independent scalar review found three gaps, now corrected:
The regression tests exercise App events, the actual default-form helpers and
button availability, exact source retention before Apply, and one-step undo.
## Bounded constructor slice
Occurrence.MessageKind is a complete closed nested family: Asynchronous, Call,
Reply, Create, Delete and Timer. It is available only when both traced counterparts
are Exchange occurrences. The only constructor-specific payload is the timer
expression. Outer occurrence replacement remains read-only.
- Keep/Take/Candidate use the core's switch and first-equal acknowledgment policy.
Taking a replacing group copies the typed MessageKind, including its expression.
Taking an initial equal discriminator does not copy an unselected timer value.
- Candidate MessageKind has its own scoped draft. The independent TimerExpression
scalar draft survives group decisions; the group timer's exact raw text, editor
cursor and selection survive switching away from Timer and back.
- An overlapping kind/timer draft retains both decisions and blocks Apply until
explicitly resolved. The dialog offers **Replace timer decision with message-kind
group** and **Leave message kind unselected; use timer decision**. First equal-kind
acknowledgment can coexist with an independent timer decision. Divergent authored
candidate values reject; neither candidate silently overwrites the other.
- The kind detail includes baseline/current timer observations and the complete
proposed kind. It displays the exact plan-provided acknowledged/retired lists.
Exchange, reply-to, lifelines, annotations and pre/postconditions stay separately
scoped. Incompatible Timer contracts remain core errors; no dependency or payload
is silently removed. Existing additional-impact approval remains in force.
- Group changes compose with scalar choices and execute the exact prepared Document
batch. Tests cover both directions, all six kinds, mapped reply correlation,
historical retirement, repeated no-switch rejection, invalid combinations,
protected scopes, stale preview, source failure, comments and one-step undo/redo.
- The Traceability contextual toolbar now wraps at the available width so +Artifact
remains reachable in the compact layout. This is a single `row.wrap()` change in
`views.rs`; other toolbars are outside this slice.
Root reported native scalar coverage on frozen integrated `e7fa061`: mixed numeric
Keep/Take/Candidate, invalid default retention/repair, zero additional changes,
atomic Apply, comment/value inspection, Undo/Redo and Save All at 1440×900 and
1100×700. Reverse/type/reference/history/reopen native checks were still continuing
when this slice was implemented. This task launched no native application.
Built executable:
`D:/CodexBuilds/Capella2-semantic-desktop-target/debug/arcadia-studio.exe`.
The build target is idle. No native application was launched by this task.
## Remaining work
Milestone 3 must add explicit constructor closure/replacement, keyed and ordered
Milestone 3 must add the remaining constructor closure/replacement, keyed and ordered
decisions, historical pairing reset, complete artifact lifecycle and multi-source
review. These facts are currently inspectable, with unsupported writes visibly
identified. The reference table supplies explicit mappings for scalar reference
Take; it does not claim to complete a reset or establish keyed acknowledgments.
Fresh independent scalar GUI review and root-owned native verification are still
required before merging this milestone into release acceptance. In particular,
validate the 1100×700 layout, keyboard/focus continuity, long historical values,
reference selection, source reopening and prepared-impact inspection in the app.
Fresh independent requirements/correctness review and root-owned native checks of
the message-kind slice are required before release acceptance. Verify the compact
kind picker, timer text/focus retention, overlap choices, exact closure/retirement,
mapped Reply, blocked Timer contract, source reopening and toolbar wrapping.