Files
ARCADIA-Studio/harness/release-topology-core.md

5.2 KiB

R1 contextual process/chain core milestone — 2026-09-05

Status: bounded core implementation and focused automated verification complete. Native authoring/rendering, source/API integration and release migration remain separate gates. The original Capella benchmark is still incomplete; its actually observed path highlighting and semantic navigation inform the required UI work, not a claim of feature equivalence.

Frozen contract

  • Existing OccurrenceBody::Action { action, lifeline } is a contextual work involvement when directly owned by an OA Process or SA FunctionalChain. Its action points to same-layer Activity/Function; lifeline must be absent. Its name/description/precondition/postcondition retain contextual meaning independently of the referenced work.
  • ControlKind is Choice, Merge, Fork, Join or Loop. OccurrenceBody::Control { kind } belongs directly to a process/chain.
  • OccurrenceBody::SequenceReference { sequence: Option<Id> } reuses a same-layer process/chain of the same family. Direct/transitive recursive reuse is rejected. An absent target is an editable incomplete reference. Deleting the reused sequence clears this reference and preserves the occurrence; it does not delete callers or an unrelated reusable sequence.
  • Existing process/chain Exchange occurrences continue to reference Interaction in OA or FunctionalExchange in SA; they do not use scenario lifelines. Boundary exchanges remain available to scenario occurrences.
  • RelationKind::SequenceLink / RelationBody::SequenceLink { source, target, guard: String } connects distinct contribution occurrences directly owned by the same process/chain. That common owner determines contextual link ownership. Source is preceding; target is following. can_connect applies the same context and endpoint rules as committed transactions.
  • Action→Exchange, Exchange→Action and Exchange→Exchange adjacency must match the referenced global exchange's source/target work. Other links express contextual precedence without manufacturing a global work exchange.
  • steps remains stable membership/presentation order. Explicit links express topology; reordering steps does not alter links. A legacy exchange-only sequence without explicit links keeps the existing linear interpretation and sequence-gap diagnostics. No old IDs, schema version or stored sequence is silently rewritten.

Diagnostics and transition behavior

Once explicit links or work/control/reuse contributions exist, validation checks graph starts/ends, isolated/unreachable contributions and ability to reach an exit. Ambiguous splits/merges on non-control contributions warn. Choice/Fork expect one incoming and at least two outgoing links; Merge/Join expect at least two incoming and one outgoing; Loop expects at least one incoming and two outgoing (repeat/exit). Missing Choice/Loop outgoing guards warn and can use explicit else. Incomplete topology remains editable. Guard strings use the ordinary text-validity validator. Loops are permitted; there is no blanket topology-cycle prohibition.

Required/Subtree transition closure of a process/chain includes contextual links as well as owned steps and referenced dependencies. The shared visitor maps reused sequence references and link endpoints; guards and contextual properties survive. New mapped process/chain occurrences use TraceKind::Sequence, admitted for paired direct Process/FunctionalChain owners. Legacy TraceKind::Scenario occurrence traces remain accepted. Existing name/description-only drift remains a required R3 extension, not a claim that edited topology is already fully reconciled on existing counterparts.

The enum additions are 2 occurrence variants and 1 relation variant; Kind::ALL stays 28 and RelationKind::ALL is now 20. Generic session creation/ownership, projection endpoints, identity remapping and deletion infrastructure were reused. No additional registry, command type or UI-only semantic store was added.

Verification actually run

Target directory: D:/CodexBuilds/Capella2-01a06e2e.

cargo check -p oa-core --locked
cargo test -p oa-core --locked --test release_topology
cargo test -p oa-core --locked --test workflows --test review_regressions --test process_diagnostics --test release_capabilities
cargo clippy -p oa-core --all-targets --locked -- -D warnings

Observed: 6 new topology tests plus 51 prior focused core tests passed, strict core Clippy passed, edited sources/tests formatted with Rustfmt edition 2024. Tests exercise valid parallel and alternative paths with a reused subprocess in both transition directions; mapped reference closure and guards; explicit Sequence traces; invalid adjacency/ownership/self/recursive reuse; loop and incomplete topology diagnostics; every fixture element/relation reidentification/deletion and exact undo; list reordering independent of topology; and unchanged legacy linear behavior. Initial zero-warning assertions were corrected to account explicitly for intentionally unallocated global work and an unspecified system boundary in topology-only fixtures; no topology warning is filtered out.

Language fixtures, source/API/schema migration and native UI are being integrated by separate owners. Do not treat this focused report as a final workspace or first-release completion result.