Files
ARCADIA-Studio/harness/release-language-integration.md
T

7.1 KiB

R1 / R2 / R4 language and API integration — 2026-09-05

Status: these bounded source/API milestones are implemented and verified. This is not first-release completion; native authoring and remaining R3/R5/R6, lifecycle, migration and final independent reviews remain required.

Current contract

  • R2: oa_mission, Mission traces, include/extend/generalization and mission involvement have canonical source and OpenAPI counterparts. Conditional extension preserves its exact condition. The broad fixture covers all 28 element kinds and all 20 current relation kinds (including R1 SequenceLink).
  • R1: Control Choice/Merge/Fork/Join/Loop and SequenceReference use typed source; sequence @alias is a real reference field. The OA and SA round-trip fixture contains work contributions, parallel/alternative paths, an explicit loop, a reused sequence and guarded contextual links. Recursive reuse and invalid reference spelling reject atomically.
  • R4: scenario viewpoints, every message kind including Timer, call correlation, carried-field expressions and ScenarioUse bindings have canonical source and closed OpenAPI payloads. Reference fields are scenario, reply_to, field, referenced and local; viewpoint/message-kind enum fields remain readable. Native parser fixtures cover both strict work viewpoints, call/reply reversal, create/delete order, timers, values and a reused scenario. No expressions are evaluated or silently converted to literals.
  • docs/language.rst now specifies the current R1/R2/R4 constructors, ownership, topology/message/reuse constraints, traces, compatibility and located lint. docs/api.rst and docs/openapi.json expose the matching service contract. The rendered language/API HTML is regenerated from those reST sources.

Compatibility is deliberate and testable

Schema 2 remains a temporary integration header. Omitted old Scenario viewpoint hydrates as MixedLegacy in both source and JSON, rather than applying a new GUI factory's stricter interpretation. Missing Exchange message fields hydrate as Asynchronous, no reply correlation and no value annotations. The V1 migration constructor supplies the same explicit defaults.

The original V2 coastal rescue source and JSON are preserved under crates/oa-core/tests/fixtures/v2-coastal-rescue.*. Do not regenerate them from the new demo. The golden regression compares the exact original JSON against the upgraded model after removing only the newly added defaults: every other persistent field remains equal. Original source and JSON produce the same model; canonical source records explicit compatibility choices and round-trips.

The final distinct release schema and explicit V2 migration are still required after R5/R6 interfaces freeze. Current serde defaults are staged compatibility, not evidence of that future adapter. New schema-3 contracts must not silently inherit these missing-field defaults without an explicit decision.

Verification actually observed

Target: D:/CodexBuilds/Capella2-01a06e2e, Windows Rust 1.98.1.

cargo test -p oa-core --locked
cargo test -p oa-server --locked
cargo clippy -p oa-server --all-targets --locked -- -D warnings

Current combined core: 83 passed (15 language, 4 admission/lint, 7 capability, 6 topology, 7 scenario, 15 prior regressions, 28 workflows, 1 process diagnostic). Server: 16 HTTP/configuration tests + 1 deterministic prepared-commit test passed. Strict server all-target Clippy passes; the core dependency is checked as part of that command, while the core owner separately ran strict all-target core Clippy. Owned Rust files pass Rustfmt. Language/API reST builds halt on warnings and both completed without warnings.

The actual HTTP suite imports the new mission/branching chain model, edits a SequenceLink guard, exports equivalent readable source, filters by the new relation kind and restarts from disk. A separate actual HTTP case imports the original V2 JSON, rejects a malformed richer source without advancing its revision, edits a typed call value, retains reply references, exports equivalent source and reopens the accepted envelope after restart.

TS1 parser/API responsiveness evidence remains in harness/release-text-service-audit.md: exact formerly stalling 638,689-byte source rejected in 0.050 s; concurrent native/legacy JSON catalog reads and a valid-candidate/rename race verified on the optimized native server. Those exact wall times were measured at the R2 checkpoint. The same rejection/concurrency transport regressions pass after R4; no new throughput guarantee is inferred.

No Computer Use operations were performed by this worker. No probe server or test process is intentionally left running. Current first-release changes have not yet had final Linux, container, release-toolchain or independent review verification; prior V2 platform evidence must remain labeled as prior evidence.

R5 state/event source and service integration checkpoint

R5 shapes are coordinated with the core worker: nine additional StateKind/Kind vertices, Event Signal/Time After/At/Change, and StateTransition transition_kind, triggers, effects. Language uses oa_/sa_ snake-case declarations, alias references in the new lists and a typed transition-kind word. The existing generic constructors handle the rest; no separate parser, event registry or service route was introduced. Core serde/factory defaults provide staged External/[]/[] compatibility, and the original V2 golden test now excludes only those added defaults when proving every original field remains identical. Trigger/guard/effect strings are explicitly compared.

The all-kind parity fixture includes all 38 kinds. A separate OA/SA source test exercises every new vertex, all Event bodies, every TransitionKind, Unicode and quoted prose, invalid typed enums/references, and old-field defaults. OpenAPI now names StateKind, EventBody, TimeEventKind and TransitionKind; language section 4.4 records the approved state semantics and API documents the ordinary batch/reference lifecycle. Header remains temporary schema 2; the explicit final schema-3 migration is still required after R6.

Observed at this checkpoint: 16/16 language tests; 17/17 HTTP/configuration tests plus the deterministic Store unit; strict all-target server Clippy. The actual HTTP event test imports source, creates an Event and changes its transition in one batch, reidentifies event/payload UUIDs, retains exact prose, checks stale ETag 412 and wrong-layer rollback 422, queries Event records, exports equal source, removes trigger/effect/payload references and verifies the last removed trigger leaves descriptive intent, then restarts from disk.

A follow-up added a located warning assertion for empty Time expression. Its rerun intersected the core worker's deliberate state-topology integration: lib.rs declared state_validation before the new file was saved, producing E0583. No source/service workaround was added. Await final core topology freeze, then rerun language+admission tests, server regression and strict Clippy. Both reST outputs already render with halt-on-warning enabled; an initial short section underline warning was fixed and successfully re-rendered.