Complete source 6 engineering workflows and preserve release validation evidence
This commit is contained in:
+53
-7
@@ -155,8 +155,8 @@ Parsing, validation and query processing use snapshot workers, so this work
|
||||
does not hold the catalog lock or serialize unrelated model preparation.
|
||||
|
||||
Import accepts schema-1 JSON through the shared explicit migration adapter,
|
||||
as well as schema-2, schema-3, schema-4 and current schema-5 JSON. Source import uses the shared language parser
|
||||
and its supported migrations. Export uses schema 5 / arcadia 5. Native JSON
|
||||
as well as schema-2, schema-3, schema-4, schema-5 and current schema-6 JSON. Source import uses the shared language parser
|
||||
and its supported migrations. Export uses schema 6 / arcadia 6. Native JSON
|
||||
replacement accepts supported older schemas through the same explicit migration.
|
||||
Only documented query parameters are accepted. In particular, appending
|
||||
``?revision=...`` to model/source export is an error, not historical retrieval.
|
||||
@@ -169,7 +169,7 @@ A source bundle contains ``entry`` and a map of ``files``. For example::
|
||||
{
|
||||
"entry": "rescue.arcadia",
|
||||
"files": {
|
||||
"rescue.arcadia": "arcadia 5; project rescue \"Rescue\" { include \"oa/work.arcadia\"; }\n",
|
||||
"rescue.arcadia": "arcadia 6; project rescue \"Rescue\" { include \"oa/work.arcadia\"; }\n",
|
||||
"oa/work.arcadia": "// Engineering rationale\noa_activity assess \"Assess assistance\" {}\n"
|
||||
}
|
||||
}
|
||||
@@ -181,7 +181,7 @@ targets or another hosted resource. All submitted files must be reachable;
|
||||
missing files, cycles, duplicate keys, case collisions and escaping paths are
|
||||
rejected. The bundle permits at most 256 files, 32 include edges along a path,
|
||||
and 1,024 include edges in total. Model and source-byte budgets apply across
|
||||
the complete bundle, not separately per file. Current bundle syntax is source5; source3/4 bundles migrate explicitly while
|
||||
the complete bundle, not separately per file. Current bundle syntax is source6; source3/4/5 bundles migrate explicitly while
|
||||
preserving their files/includes/comments. V1/V2 single-file migration remains
|
||||
available through interchange import.
|
||||
|
||||
@@ -403,7 +403,7 @@ contract in the same transaction when removing a used interface allocation.
|
||||
Explicit schema1/2/3 migration preserves prior identities and typed ports. Reports
|
||||
add semantic defaults, generated interface allocations and unresolved message
|
||||
values. Old source3 bundles retain files/includes/comments during upgrade; all
|
||||
current exports use schema5/source5. Reading an old envelope does not write it or
|
||||
current exports use schema6/source6. Reading an old envelope does not write it or
|
||||
advance its ETag. Canonical exports omit transient migration reports.
|
||||
|
||||
Validation
|
||||
@@ -419,7 +419,7 @@ or::
|
||||
|
||||
or::
|
||||
|
||||
{"format":"source-project", "source_project":{"entry":"rescue.arcadia", "files":{"rescue.arcadia":"arcadia 5; project rescue \"Rescue\" {}"}}}
|
||||
{"format":"source-project", "source_project":{"entry":"rescue.arcadia", "files":{"rescue.arcadia":"arcadia 6; project rescue \"Rescue\" {}"}}}
|
||||
|
||||
A well-formed validation request returns 200 with ``valid`` and ``issues`` even
|
||||
if its candidate is invalid, including a model record that fails typed decoding.
|
||||
@@ -491,17 +491,63 @@ Other projections continue to preserve hidden placements. Rejected writes
|
||||
retain the accepted model, source bundle, revision and ETag. Reading a state
|
||||
view has no semantic or persistence side effects.
|
||||
|
||||
Source-6 communication and saved views
|
||||
-------------------------------------
|
||||
|
||||
The same import, replacement and command endpoints admit OA
|
||||
``CommunicationMean { source, target, oriented, items }`` and root-level
|
||||
``ExchangeCategory { family, exchanges }`` records. Communication means join
|
||||
distinct OA entities/actors. Categories group same-layer exchanges as ``Work``
|
||||
or ``Participant`` without owning them. Existing legacy OA boundary exchanges
|
||||
retain their identities and contracts; migration does not silently replace them.
|
||||
|
||||
``Diagram.view_options`` is an optional closed object with defaults: empty
|
||||
``hidden_edges``, ``All`` for ``relation_kinds``, both category selections,
|
||||
``coverage`` and ``work_contexts``, and ``Name`` for ``exchange_labels``.
|
||||
``{"Only":[]}`` hides all relation and trace lines; ``{"Any":[]}`` preserves
|
||||
an explicit empty category/context selection. Category members union within
|
||||
each family, and independent filters intersect. ``Traceability`` permits
|
||||
references from both layers; ordinary projections require the diagram's layer.
|
||||
These presentation choices preserve semantic records, routes, placements and
|
||||
the automatic port positions derived from unfiltered eligible exchanges.
|
||||
|
||||
Earlier schema/source versions reject the new constructors, category review
|
||||
facts and explicit ``view_options`` field, including an empty object. Their
|
||||
frozen readers migrate accepted content to schema/source 6 with default view
|
||||
options. The OpenAPI document describes current records; it is not a permissive
|
||||
union of historical input formats. Source-6 integration and release acceptance
|
||||
are tracked separately in the release coverage audit.
|
||||
|
||||
Cross-layer transitions
|
||||
-----------------------
|
||||
|
||||
Preview accepts the shared ``TransitionRequest`` record, including direction
|
||||
(``OaToSa`` or ``SaToOa``), sources, dependency scope, mappings, selected fields,
|
||||
conflict resolutions and optional destination diagram. All fields are explicit
|
||||
in OpenAPI. At most 100 sources, 200 mappings and 400 field resolutions are
|
||||
in OpenAPI. At most 100 sources, 200 mappings, 200 communication endpoint
|
||||
decisions and 400 field resolutions are
|
||||
accepted. A conflict-free plan must fit the same 200-command transaction limit
|
||||
and model/source-capacity limits. A conflict-free preview also checks source
|
||||
writeback, so its commands can update the same accepted authored workspace.
|
||||
|
||||
OA ``CommunicationMean`` maps to an SA ``BoundaryExchange`` through an explicit
|
||||
``communication_endpoints`` array (omitted means empty). Each decision identifies
|
||||
the source communication means and both ``source_port`` and ``target_port``.
|
||||
Each port choice is either ``{"Reuse":{"port":"port-uuid"}}`` or
|
||||
``{"Create":{"id":"new-port-uuid","alias":"radio_port","name":"Radio port",
|
||||
"description":"","kind":"Standard","orientation":"Unset"}}``. Created or
|
||||
reused SA component ports must belong to the explicitly mapped participants.
|
||||
These per-exchange choices do not replace participant correspondence with port
|
||||
IDs. Missing or incompatible choices remain preview conflicts. Interface and
|
||||
functional-port allocations use their existing explicit workflows; an engineer
|
||||
may omit an unresolved allocation from this transition. Reverse transition maps
|
||||
boundary ports through their owners to OA participants.
|
||||
|
||||
``ExchangeCategory`` transitions preserve their family and map only explicitly
|
||||
corresponding member exchanges. Missing member mappings are conflicts, not new
|
||||
fabricated exchanges. Typed review exposes ``Category.Family`` and the
|
||||
``CategoryExchanges`` member collection; historical review facts remain exact.
|
||||
|
||||
The preview response is ``{"base_revision":1,"plan":{...}}``. It contains
|
||||
planned changes, conflicts, warnings and exact commands/IDs. It does not write
|
||||
the model or persist a server-side plan. Apply accepts that entire response and
|
||||
|
||||
+102
-14
@@ -1,8 +1,8 @@
|
||||
Arcadia Studio OA / SA Language and Editing Contract
|
||||
====================================================
|
||||
|
||||
:Version: 5
|
||||
:Status: Normative current implementation contract; first-release integration
|
||||
:Version: 6 (integration in progress)
|
||||
:Status: Source-6 contract under integration; native and API acceptance pending
|
||||
:Core implementation: ``crates/oa-core``
|
||||
:Text suffix: ``.arcadia``
|
||||
|
||||
@@ -11,10 +11,12 @@ Arcadia Studio OA / SA Language and Editing Contract
|
||||
|
||||
This specification defines the shared Operational Analysis (OA) and System
|
||||
Analysis (SA) model, its textual language, graphical editing obligations,
|
||||
validation, persistence, and explicit migration from versions 1, 2, 3 and 4. MUST, MUST NOT,
|
||||
validation, persistence, and explicit migration from versions 1, 2, 3, 4 and 5. MUST, MUST NOT,
|
||||
and MAY indicate requirements, prohibitions, and permitted choices.
|
||||
|
||||
Schema 5 adds closed typed semantic review facts to trace baselines, including
|
||||
Schema 6 adds OA communication means, exchange categories and saved view options.
|
||||
Their integration and acceptance are tracked separately; this version label does
|
||||
not claim completed graphical/API parity. Schema 5 added closed typed semantic review facts to trace baselines, including
|
||||
historical references that may no longer exist in the live model. It retains
|
||||
schema 4 bounded reusable data types, typed defaults, exchange mechanisms,
|
||||
qualified values, specialization, interface allocations and associations, and
|
||||
@@ -41,7 +43,7 @@ Actual verification evidence is separate from this contract.
|
||||
2. One authoritative model
|
||||
--------------------------
|
||||
|
||||
A Project stores ``schema_version`` (5), ``id``, ``alias``, ``name``,
|
||||
A Project stores ``schema_version`` (6), ``id``, ``alias``, ``name``,
|
||||
``description``, and maps named ``elements``, ``relations``, ``diagrams``,
|
||||
``artifact_links``, and ``traces``. Each map is keyed by the UUID contained in
|
||||
its record. Duplicate map keys and mismatching keys/identities are errors.
|
||||
@@ -246,6 +248,9 @@ references. Their kind is the declaration keyword:
|
||||
* - ``boundary_exchange``
|
||||
- Different participant owners; typed component ports have matching kinds
|
||||
- ``oriented`` bool / true; ``items`` refs / []
|
||||
* - ``communication_mean``
|
||||
- Different OA Entity/Actor elements; no operational ports or role inference
|
||||
- ``oriented`` bool / false; ``items`` refs / []
|
||||
* - ``port_allocation``
|
||||
- SA Component port → SA FunctionInput/FunctionOutput port
|
||||
- Requires the function's actual work Allocation to that component
|
||||
@@ -286,7 +291,7 @@ references. Their kind is the declaration keyword:
|
||||
- Work, participant, capability, or process/chain → state/mode
|
||||
- None
|
||||
* - ``exchange_allocation``
|
||||
- Boundary-exchange relation → same-layer interaction (OA) or functional exchange (SA)
|
||||
- CommunicationMean → OA Interaction, or BoundaryExchange → same-layer Interaction/FunctionalExchange
|
||||
- None
|
||||
* - ``interface_provision``, ``interface_requirement``
|
||||
- Participant/port → provided/required interface
|
||||
@@ -300,6 +305,89 @@ exchanges with distinct identities are permitted. Self-relations are invalid
|
||||
except for a state transition that returns to its source state or an explicit
|
||||
DataAssociation between two ends of the same Record type.
|
||||
|
||||
Source-6 communication and exchange categories
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
An OA ``communication_mean`` joins two distinct Entity/Actor records directly.
|
||||
Its stable source/target tuple does not create operational ports. An unoriented
|
||||
means permits either direction; an oriented ordinary use follows source to target.
|
||||
The empty carried-item set is explicit, not a wildcard. Every item carried by an
|
||||
allocated Interaction must specialize or equal a declared means item, using the
|
||||
same inheritance rule as existing exchange allocations.
|
||||
|
||||
``exchange_allocation`` remains a separately identified relation. A means may
|
||||
allocate several Interactions and an Interaction may have several explicit means.
|
||||
Allocation compares actual activity-to-participant Allocations, without inferring
|
||||
responsibility from roles or nesting. Every known performer must fit one complete
|
||||
permitted endpoint pair. A known contradiction is an error; a missing actual
|
||||
performer is an incomplete-model warning. Reorienting or reconnecting a means
|
||||
validates all dependent allocations and scenario uses in one candidate.
|
||||
|
||||
ParticipantInteraction and compatible MixedLegacy scenarios may reference means.
|
||||
For bidirectional use, explicit sender and receiver lifelines determine one
|
||||
compatible ordered endpoint pair. Missing or ambiguous bindings do not guess a
|
||||
direction. A Reply reusing its Call's means reverses the resolved actual Call,
|
||||
including a reverse Call on an unoriented means. The existing operation-response
|
||||
exception permits the correlated Reply on an oriented means; this implies no
|
||||
physical transport property. OA process contributions continue to use Interaction.
|
||||
|
||||
Mapped unoriented SA BoundaryExchange messages use the same explicit lifeline
|
||||
resolution. Ordinary messages also respect component-port direction; legacy
|
||||
port boundaries retain their stored direction. A correlated same-channel Reply
|
||||
still reverses the actual Call, including across directional Flow ports.
|
||||
|
||||
CommunicationMean and SA BoundaryExchange support Exchange traces. OA-to-SA
|
||||
transition requires a separate component-port choice for each end of each means:
|
||||
reuse an existing compatible port, or create a port with explicitly chosen
|
||||
Standard/Flow kind and orientation. Participant correspondence never substitutes
|
||||
a port UUID for its participant UUID. Interfaces and PortAllocations are not
|
||||
invented; unresolved technical allocations must be reviewed or omitted from the
|
||||
selection and authored explicitly. Reverse transition projects SA port owners to
|
||||
reviewed OA participant counterparts, without copying typed SA ports into OA.
|
||||
Source/Target review retains the exact participant/port identities in history.
|
||||
Taking an OA endpoint requires the scoped technical port decision, while Keep
|
||||
and a valid Candidate retain explicit technical choices.
|
||||
|
||||
``oa_exchange_category`` and ``sa_exchange_category`` are root-level named
|
||||
semantic elements with ``family`` Work (default) or Participant, and ``exchanges``
|
||||
references (default []). Work categories contain Interaction/FunctionalExchange;
|
||||
Participant categories contain CommunicationMean/BoundaryExchange. Members must
|
||||
be distinct and in the category's layer; categories never own or merge exchanges.
|
||||
Category transition requires mapped counterpart members. ``Category.Family`` and
|
||||
``Member { collection CategoryExchanges; ... }`` are closed typed semantic facts.
|
||||
Deleting an exchange removes its category membership; deleting a category does
|
||||
not remove its exchanges. Reidentification preserves all live references and
|
||||
typed historical reference provenance.
|
||||
|
||||
Each Diagram has optional ``view_options`` (all selections unrestricted, no hidden
|
||||
edges, Name labels by default). Its closed fields are ``hidden_edges``,
|
||||
``relation_kinds``, ``work_categories``, ``participant_categories``, ``coverage``,
|
||||
``work_contexts`` and ``exchange_labels``. Relation kinds use All or Only with
|
||||
Relation(kind)/Trace entries; Only([]) draws no lines, including traces. Category
|
||||
selectors use All or Any(category IDs); Any([]) draws none of that exchange family.
|
||||
Selected categories are unioned within each family; independent restrictions
|
||||
intersect. Coverage is All/InBehavior/OutsideBehavior; work contexts are All or
|
||||
Any(explicit process, chain or scenario IDs). Contexts follow ordered owned
|
||||
contributions and explicit reuse, sharing the advisory diagnostic evidence walk.
|
||||
Labels are Name, Items or NameAndItems. These settings alter presentation only;
|
||||
automatic port positions use unfiltered eligible lines. Hidden routes and semantic
|
||||
identities remain saved. Removing a referenced selection preserves explicit empty
|
||||
filters rather than widening them to All.
|
||||
|
||||
Traceability views retain their established two-layer projection: default options
|
||||
preserve eligible OA and SA lines. Their hidden-edge, category and context
|
||||
references may therefore select either layer. All ordinary projections require
|
||||
these references in the declared diagram layer. A filter never hides the other
|
||||
layer merely because the Traceability diagram has an OA or SA layer label.
|
||||
|
||||
Versions 1–5 reject the new relation, category constructor, diagram field (even
|
||||
an explicitly supplied default), and category historical facts. Reading version 5
|
||||
preserves existing records, legacy OA boundaries and reviewed facts, with an
|
||||
explicit upgrade report to version 6. Source upgrading changes the version token
|
||||
without rewriting unrelated authored trivia. No old boundary is automatically
|
||||
converted into communication means. Source-6 graphical/API/native acceptance is
|
||||
still tracked separately from this integration contract.
|
||||
|
||||
Direct Allocation has at most one performer per leaf. Role sharing is a
|
||||
different relationship: several OA participants can realize a Role. A direct
|
||||
allocation inconsistent with its role's realized performers produces an
|
||||
@@ -356,7 +444,7 @@ Port deletion cascades to incident FEs; FE deletion retains independent ports.
|
||||
|
||||
For example::
|
||||
|
||||
arcadia 5;
|
||||
arcadia 6;
|
||||
project ports_example "Typed function contract" {
|
||||
sa_function send "Send" {}
|
||||
sa_function receive "Receive" {}
|
||||
@@ -739,7 +827,7 @@ This complete data contract example is also exercised through the REST API:
|
||||
|
||||
.. code-block:: text
|
||||
|
||||
arcadia 5;
|
||||
arcadia 6;
|
||||
project engineering_data "Engineering data" {
|
||||
sa_data_type voltage "Voltage" {
|
||||
definition { Real { minimum 0.0; maximum 48.0; }; };
|
||||
@@ -808,7 +896,7 @@ This complete source example places one state from an existing machine:
|
||||
|
||||
.. code-block:: text
|
||||
|
||||
arcadia 5;
|
||||
arcadia 6;
|
||||
project operating "Operating modes" {
|
||||
oa_entity crew "Crew" {}
|
||||
oa_state_machine modes "Modes" { parent @crew; }
|
||||
@@ -1262,7 +1350,7 @@ change.
|
||||
This valid source records deliberately different constructor/unit observations.
|
||||
Its historical integer minimum is absent; the Real side has no integer branch::
|
||||
|
||||
arcadia 5;
|
||||
arcadia 6;
|
||||
project reviewed_dimensions "Reviewed dimensions" {
|
||||
oa_data_type oa_dimension "Operational distance" {
|
||||
definition { Integer { minimum 0; maximum 10; }; };
|
||||
@@ -1421,7 +1509,7 @@ declarations and include statements; it MUST NOT contain another version header,
|
||||
project wrapper, or project description. Includes MUST occur at document level,
|
||||
never inside an element body or typed field value. For example::
|
||||
|
||||
arcadia 5;
|
||||
arcadia 6;
|
||||
project rescue "Rescue" id "00000000-0000-4000-8000-000000000001" {
|
||||
description "Operational model";
|
||||
include "oa/participants.arcadia";
|
||||
@@ -1778,7 +1866,7 @@ explicitly before Apply succeeds.
|
||||
|
||||
Loading detects JSON from its first non-whitespace ``{``; other input is parsed
|
||||
as Arcadia source regardless of filename. Saving an ``.arcadia`` suffix uses
|
||||
the accepted V5 source bundle (``arcadia 5``); other suffixes use V5 JSON. Both forms preserve the same
|
||||
the accepted V6 source bundle (``arcadia 6``); other suffixes use V6 JSON. Both forms preserve the same
|
||||
complete model. JSON rejects unknown fields throughout typed payloads,
|
||||
duplicate maps, unsupported versions, and structural errors.
|
||||
|
||||
@@ -1814,7 +1902,7 @@ order) and ``unresolved_message_values`` (occurrence, field, reason). These new
|
||||
report arrays default empty when reading older responses. Version 1 normalizes
|
||||
through V2, then the typed-port V3 adapter, shared V4 data upgrade and V5 review
|
||||
adapter. Original V2 and real V3 fixtures remain unchanged compatibility inputs. Current exports
|
||||
always use version 5; reading/migrating alone never saves or changes revisions.
|
||||
always use version 6; reading/migrating alone never saves or changes revisions.
|
||||
|
||||
Native source Save All checks the original contents of observed dependencies
|
||||
before staging writes. Existing target files are replaced individually and the
|
||||
@@ -1903,7 +1991,7 @@ the assigned UUIDs explicitly.
|
||||
|
||||
.. code-block:: text
|
||||
|
||||
arcadia 5;
|
||||
arcadia 6;
|
||||
project harbor "Harbor assistance" {
|
||||
oa_entity control "Harbor control" {}
|
||||
oa_activity assess "Assess assistance" {}
|
||||
|
||||
+442
-16
@@ -3,7 +3,7 @@
|
||||
"info": {
|
||||
"title": "Arcadia Studio model API",
|
||||
"version": "1.0.0",
|
||||
"description": "Current schema-5 snapshots and conditional atomic writes. Request body limit: 8 MiB; at most 200 nested commands; no retained revisions, request receipts, automatic retries or persistent transition plans. See docs/api.rst. Fixed store capacity: 128 models / 256 MiB serialized envelopes. Stateless transition preview/apply. Artifact URI/revision strings remain opaque core fields. Model admission before structural validation: 5,000 graph objects, 20,000 total records and 50,000 ordered references. Preparation uses snapshots outside the catalog lock; final commits recheck the exact ETag. Each accepted envelope couples model and authored source under one revision. Source-only edits advance the shared ETag. Source bundles resolve logical paths only, preserve authored files/comments, and have a stabilized JSON cap of 8 MiB, 256 files, 32 include edges along a path and 1,024 include edges overall."
|
||||
"description": "Current schema-6 snapshots and conditional atomic writes. Request body limit: 8 MiB; at most 200 nested commands; no retained revisions, request receipts, automatic retries or persistent transition plans. See docs/api.rst. Fixed store capacity: 128 models / 256 MiB serialized envelopes. Stateless transition preview/apply. Artifact URI/revision strings remain opaque core fields. Model admission before structural validation: 5,000 graph objects, 20,000 total records and 50,000 ordered references. Preparation uses snapshots outside the catalog lock; final commits recheck the exact ETag. Each accepted envelope couples model and authored source under one revision. Source-only edits advance the shared ETag. Source bundles resolve logical paths only, preserve authored files/comments, and have a stabilized JSON cap of 8 MiB, 256 files, 32 include edges along a path and 1,024 include edges overall."
|
||||
},
|
||||
"servers": [
|
||||
{
|
||||
@@ -389,7 +389,7 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"description": "Schema-5 native JSON is described below. Schema-1/2/3/4 JSON and source are accepted through explicit frozen readers and migration, also on replacement and candidate validation. Prior prose reviews remain intact; absent semantic review stays Unreviewed. Export emits schema 5 / arcadia 5. See docs/language.rst."
|
||||
"description": "Schema-6 native JSON is described below. Schema-1/2/3/4/5 JSON and source are accepted through explicit frozen readers and migration, also on replacement and candidate validation. Earlier versions reject source-6 constructors and saved view fields. Prior prose and typed reviews remain intact; absent semantic review stays Unreviewed. Export emits schema 6 / arcadia 6. See docs/language.rst."
|
||||
}
|
||||
},
|
||||
"/api/v1/projects/{id}": {
|
||||
@@ -2039,6 +2039,7 @@
|
||||
"Mission",
|
||||
"FunctionalChain",
|
||||
"ExchangeItem",
|
||||
"ExchangeCategory",
|
||||
"DataType",
|
||||
"DataField",
|
||||
"Interface",
|
||||
@@ -2068,7 +2069,10 @@
|
||||
"RelationKind": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"InterfaceItemAllocation",
|
||||
"DataAssociation",
|
||||
"Allocation",
|
||||
"PortAllocation",
|
||||
"Interaction",
|
||||
"CapabilityInvolvement",
|
||||
"ChainInvolvement",
|
||||
@@ -2076,21 +2080,19 @@
|
||||
"RoleAssignment",
|
||||
"FunctionalExchange",
|
||||
"BoundaryExchange",
|
||||
"CommunicationMean",
|
||||
"MissionCapability",
|
||||
"StateTransition",
|
||||
"Availability",
|
||||
"ExchangeAllocation",
|
||||
"InterfaceProvision",
|
||||
"InterfaceRequirement",
|
||||
"StateAction",
|
||||
"CapabilityInclude",
|
||||
"CapabilityExtend",
|
||||
"CapabilityGeneralization",
|
||||
"MissionInvolvement",
|
||||
"SequenceLink",
|
||||
"PortAllocation",
|
||||
"InterfaceItemAllocation",
|
||||
"DataAssociation"
|
||||
"StateTransition",
|
||||
"Availability",
|
||||
"ExchangeAllocation",
|
||||
"InterfaceProvision",
|
||||
"InterfaceRequirement",
|
||||
"StateAction"
|
||||
]
|
||||
},
|
||||
"Position": {
|
||||
@@ -3118,6 +3120,34 @@
|
||||
"Event"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"ExchangeCategory": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"family": {
|
||||
"$ref": "#/components/schemas/ExchangeFamily"
|
||||
},
|
||||
"exchanges": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/components/schemas/Id"
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"family",
|
||||
"exchanges"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"ExchangeCategory"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
]
|
||||
}
|
||||
@@ -4089,6 +4119,42 @@
|
||||
"DataAssociation"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"CommunicationMean": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"source": {
|
||||
"$ref": "#/components/schemas/Id"
|
||||
},
|
||||
"target": {
|
||||
"$ref": "#/components/schemas/Id"
|
||||
},
|
||||
"oriented": {
|
||||
"type": "boolean"
|
||||
},
|
||||
"items": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/components/schemas/Id"
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"source",
|
||||
"target",
|
||||
"oriented",
|
||||
"items"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"CommunicationMean"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
]
|
||||
},
|
||||
@@ -4289,6 +4355,10 @@
|
||||
},
|
||||
"default": [],
|
||||
"description": "Unique by edge identity within this diagram. Stored order is retained. Each entry counts against the total model record admission limit. Missing routes in earlier schema-3 models default to empty."
|
||||
},
|
||||
"view_options": {
|
||||
"$ref": "#/components/schemas/ViewOptions",
|
||||
"default": {}
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
@@ -4485,7 +4555,7 @@
|
||||
"properties": {
|
||||
"schema_version": {
|
||||
"type": "integer",
|
||||
"const": 5
|
||||
"const": 6
|
||||
},
|
||||
"id": {
|
||||
"type": "string",
|
||||
@@ -6139,6 +6209,15 @@
|
||||
"type": "null"
|
||||
}
|
||||
]
|
||||
},
|
||||
"communication_endpoints": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/components/schemas/CommunicationEndpointDecision"
|
||||
},
|
||||
"maxItems": 200,
|
||||
"default": [],
|
||||
"description": "Explicit SA component-port pair per selected OA CommunicationMean. Reuse or Create only. Owners follow reviewed participant mappings; no participant-to-port substitution or automatic interface allocation."
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
@@ -6652,12 +6731,13 @@
|
||||
1,
|
||||
2,
|
||||
3,
|
||||
4
|
||||
4,
|
||||
5
|
||||
]
|
||||
},
|
||||
"to_schema": {
|
||||
"type": "integer",
|
||||
"const": 5
|
||||
"const": 6
|
||||
},
|
||||
"preserved_ports": {
|
||||
"type": "array",
|
||||
@@ -6844,11 +6924,11 @@
|
||||
"required_resolutions"
|
||||
],
|
||||
"additionalProperties": false,
|
||||
"description": "Transient observations from explicit V1/V2/V3/V4 to V5 migration. New report lists default to empty when reading older responses. Reading an old envelope neither saves nor changes its revision. Allocation UUIDv5 uses project namespace and v2-interface-item:<interface>:<item>."
|
||||
"description": "Transient observations from explicit V1/V2/V3/V4/V5 to V6 migration. New report lists default to empty when reading older responses. Reading an old envelope neither saves nor changes its revision. Allocation UUIDv5 uses project namespace and v2-interface-item:<interface>:<item>."
|
||||
},
|
||||
"SourceBundle": {
|
||||
"type": "object",
|
||||
"description": "Complete source5 workspace (source3/4 migrate explicitly). The entry is a root filename. Files use canonical portable slash-separated relative .arcadia paths and all must be reachable. Includes resolve only against this map, never the service filesystem. Up to 256 files, 32 include edges along a path and 1,024 include edges overall. Serialized bundle JSON is at most 8 MiB, checked again after missing UUIDs are inserted. GET returns exact accepted stable text.",
|
||||
"description": "Complete source6 workspace (source3/4/5 migrate explicitly). The entry is a root filename. Files use canonical portable slash-separated relative .arcadia paths and all must be reachable. Includes resolve only against this map, never the service filesystem. Up to 256 files, 32 include edges along a path and 1,024 include edges overall. Serialized bundle JSON is at most 8 MiB, checked again after missing UUIDs are inserted. GET returns exact accepted stable text.",
|
||||
"properties": {
|
||||
"entry": {
|
||||
"type": "string"
|
||||
@@ -7126,6 +7206,7 @@
|
||||
"FunctionOutputItems",
|
||||
"SignalItems",
|
||||
"ExchangeItems",
|
||||
"CategoryExchanges",
|
||||
"TransitionTriggers",
|
||||
"TransitionEffects",
|
||||
"Constrained"
|
||||
@@ -10792,6 +10873,18 @@
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"Category": {
|
||||
"$ref": "#/components/schemas/CategoryFacet"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"Category"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
@@ -11087,6 +11180,18 @@
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"Category": {
|
||||
"$ref": "#/components/schemas/CategoryReview"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"Category"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
@@ -11987,6 +12092,327 @@
|
||||
"items"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"ExchangeFamily": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Work",
|
||||
"Participant"
|
||||
]
|
||||
},
|
||||
"Coverage": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"All",
|
||||
"InBehavior",
|
||||
"OutsideBehavior"
|
||||
]
|
||||
},
|
||||
"ExchangeLabels": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Name",
|
||||
"Items",
|
||||
"NameAndItems"
|
||||
]
|
||||
},
|
||||
"CategoryFacet": {
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Family"
|
||||
]
|
||||
},
|
||||
"ReviewedExchangeFamily": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"oa": {
|
||||
"oneOf": [
|
||||
{
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"NotApplicable"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"Value": {
|
||||
"$ref": "#/components/schemas/ExchangeFamily"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"Value"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"sa": {
|
||||
"oneOf": [
|
||||
{
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"NotApplicable"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"Value": {
|
||||
"$ref": "#/components/schemas/ExchangeFamily"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"Value"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"oa",
|
||||
"sa"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
"CategoryReview": {
|
||||
"oneOf": [
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"Family": {
|
||||
"$ref": "#/components/schemas/ReviewedExchangeFamily"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"Family"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"EdgeKind": {
|
||||
"oneOf": [
|
||||
{
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"Trace"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"Relation": {
|
||||
"$ref": "#/components/schemas/RelationKind"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"Relation"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"RelationKinds": {
|
||||
"oneOf": [
|
||||
{
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"All"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"Only": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/components/schemas/EdgeKind"
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"Only"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"CategorySelection": {
|
||||
"oneOf": [
|
||||
{
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"All"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"Any": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/components/schemas/Id"
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"Any"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"ContextSelection": {
|
||||
"oneOf": [
|
||||
{
|
||||
"type": "string",
|
||||
"enum": [
|
||||
"All"
|
||||
]
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"Any": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/components/schemas/Id"
|
||||
}
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"Any"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"ViewOptions": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"hidden_edges": {
|
||||
"type": "array",
|
||||
"items": {
|
||||
"$ref": "#/components/schemas/Id"
|
||||
},
|
||||
"default": []
|
||||
},
|
||||
"relation_kinds": {
|
||||
"$ref": "#/components/schemas/RelationKinds",
|
||||
"default": "All"
|
||||
},
|
||||
"work_categories": {
|
||||
"$ref": "#/components/schemas/CategorySelection",
|
||||
"default": "All"
|
||||
},
|
||||
"participant_categories": {
|
||||
"$ref": "#/components/schemas/CategorySelection",
|
||||
"default": "All"
|
||||
},
|
||||
"coverage": {
|
||||
"$ref": "#/components/schemas/Coverage",
|
||||
"default": "All"
|
||||
},
|
||||
"work_contexts": {
|
||||
"$ref": "#/components/schemas/ContextSelection",
|
||||
"default": "All"
|
||||
},
|
||||
"exchange_labels": {
|
||||
"$ref": "#/components/schemas/ExchangeLabels",
|
||||
"default": "Name"
|
||||
}
|
||||
},
|
||||
"required": [],
|
||||
"additionalProperties": false,
|
||||
"description": "Presentation only. Independent predicates intersect; category members union within a family. Only([]) hides all relations and traces. Any([]) remains an explicit empty selection. Traceability permits both-layer hidden/category/context references; ordinary projections require the diagram layer. Filtering preserves unfiltered automatic port positions."
|
||||
},
|
||||
"CommunicationPortChoice": {
|
||||
"oneOf": [
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"Reuse": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"port": {
|
||||
"$ref": "#/components/schemas/Id"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"port"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"Reuse"
|
||||
],
|
||||
"additionalProperties": false
|
||||
},
|
||||
{
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"Create": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"id": {
|
||||
"$ref": "#/components/schemas/Id"
|
||||
},
|
||||
"alias": {
|
||||
"type": "string"
|
||||
},
|
||||
"name": {
|
||||
"type": "string"
|
||||
},
|
||||
"description": {
|
||||
"type": "string"
|
||||
},
|
||||
"kind": {
|
||||
"$ref": "#/components/schemas/ComponentPortKind"
|
||||
},
|
||||
"orientation": {
|
||||
"$ref": "#/components/schemas/ComponentPortOrientation"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"id",
|
||||
"alias",
|
||||
"name",
|
||||
"description",
|
||||
"kind",
|
||||
"orientation"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"Create"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
]
|
||||
},
|
||||
"CommunicationEndpointDecision": {
|
||||
"type": "object",
|
||||
"properties": {
|
||||
"source": {
|
||||
"$ref": "#/components/schemas/Id"
|
||||
},
|
||||
"source_port": {
|
||||
"$ref": "#/components/schemas/CommunicationPortChoice"
|
||||
},
|
||||
"target_port": {
|
||||
"$ref": "#/components/schemas/CommunicationPortChoice"
|
||||
}
|
||||
},
|
||||
"required": [
|
||||
"source",
|
||||
"source_port",
|
||||
"target_port"
|
||||
],
|
||||
"additionalProperties": false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+15
-10
@@ -6,14 +6,14 @@ Arcadia Studio implements a systems-engineering workbench spanning Operational A
|
||||
|
||||
| Area | Implemented semantics and authoring |
|
||||
|---|---|
|
||||
| Operational Analysis | Entities, actors, roles, activities, missions, capabilities and processes; entity/work decomposition; leaf allocation; role realization/assignment; interactions and capability/process involvement |
|
||||
| Operational Analysis | Entities, actors, roles, activities, missions, capabilities and processes; entity/work decomposition; leaf allocation; role realization/assignment; interactions, direct participant Communication means with direction/items and Interaction allocations, and capability/process involvement |
|
||||
| System Analysis | One System of Interest, external Actors, functions, missions, capabilities and functional chains; functional decomposition independent of the system boundary; allocation, functional/boundary exchanges and mission-capability links |
|
||||
| Data and interfaces | Information/material/energy nature and Flow/Event/Operation/SharedData mechanisms, bounded primitive/enum/record types, typed defaults, field multiplicity/units/direction/storage, specialization, identified interface allocations and reference associations, separate function input/output and Standard/Flow component ports, interface provision/requirement, port and exchange allocations |
|
||||
| Behavior | Process/chain work and exchange contributions, control topology and sequence reuse; scenario lifelines, correlated calls/replies, timers, action/state occurrences, ALT/PAR/LOOP/OPTIONAL fragments, scenario reuse and pre/postconditions |
|
||||
| States and conditions | Participant-owned state machines, nested regions, states/modes and typed pseudostates, signal/time/change events, trigger/guard/effect transitions, linked entry/do/exit work, availability and constraints |
|
||||
| Perspectives and evidence | Bidirectional counterpart creation/linking, reviewed descriptive and typed semantic changes, many-to-many typed/manual traces, arbitrary artifact URI/revision/fragment references |
|
||||
| Views and editing | Independent diagrams, decomposition/allocation nesting, collapse, pan/zoom/Fit/Arrange, editable connection routes and labels, four-side port positioning, direct interaction/functional/boundary exchange tools, contextual menus, SVG export, model explorer and typed properties |
|
||||
| Text and storage | `arcadia 5` source projects with relative includes and nested declarations, stable aliases/UUIDs, a source-file tree, per-file drafts and diagnostics, comment-preserving graphical updates, exact model/source Undo/Redo, legacy migration, atomic saves, interrupted source-save recovery, Home/recents and private unsaved-work checkpoints |
|
||||
| Perspectives and evidence | Bidirectional counterpart creation/linking, reviewed descriptive and typed semantic changes, explicit ordered collections and combined multi-source review, many-to-many typed/manual traces, arbitrary artifact URI/revision/fragment references |
|
||||
| Views and editing | Independent and duplicated diagrams, decomposition/allocation nesting, collapse, pan/zoom/Fit/Arrange, editable connection routes and labels, four-side port positioning, direct interaction/communication/functional/boundary exchange tools, named exchange categories, saved line-kind/category/coverage/context/hide/label settings, contextual menus, SVG export, model explorer and typed properties |
|
||||
| Text and storage | `arcadia 6` source projects with relative includes and nested declarations, stable aliases/UUIDs, a source-file tree, per-file drafts and diagnostics, comment-preserving graphical updates, exact model/source Undo/Redo, legacy migration, per-file atomic replacement with interrupted source-save recovery, Home/recents and private unsaved-work checkpoints |
|
||||
| Automation and hosted editing | Rust REST service for project/source-bundle/query/validation/transaction/transition/artifact workflows; optional desktop catalog/open/publish, explicit conditional Save, server review and local Save as; ETag preconditions, bounded requests and atomic current-revision storage |
|
||||
|
||||
Graphical and textual parity applies to the persistent fields of this profile. Diagram placements are model data; camera, selection, source cursor and undo history are session state. Canvas gestures need not match textual operations one for one: typed inspectors and explicit commands expose precise semantics. Full source replacement must repair dependencies in its candidate, while graphical delete/reidentify commands maintain references automatically.
|
||||
@@ -23,9 +23,10 @@ Graphical and textual parity applies to the persistent fields of this profile. D
|
||||
- OA captures operational needs; SA defines the selected system contribution. SA contains no internal logical/physical components, and Studio does not decompose SA Actors. The System may be absent while authoring, with a completeness warning.
|
||||
- Work decomposition and performer allocation are independent. Only leaves have direct allocations. A parent drawn within one performer can be a computed leaf summary, not an additional allocation. Role sharing does not create several direct performers for one function.
|
||||
- Nesting expresses semantic containment or the selected allocation projection. Placement movement does not change ownership or allocation. Hide and delete have different effects.
|
||||
- Counterpart creation copies mapped typed content and required references. Existing-counterpart semantic review compares typed facts and prior observations, with explicit keep, take or final-value decisions for supported scalar, structural, constructor and individual collection-row changes. Reference mapping and candidate validation apply before an undoable transaction. Ordered collections, attachment/artifact and multi-source GUI reconciliation remain unfinished. Review does not automatically synchronize arbitrary structure or overwrite the other perspective. Creation scope follows ownership/reference dependencies, not every incident relationship.
|
||||
- Counterpart creation copies mapped typed content and required references. Existing-counterpart semantic review compares typed facts and prior observations, with explicit keep, take or final-value decisions for supported scalar, structural, constructor and individual collection-row changes. Reference mapping and candidate validation apply before an undoable transaction. Ordered collections have explicit final-order review with retained rejected drafts. Included trace rows can combine multiple source contributions into one validated model/history transaction; conflicting decisions and incompatible reference mappings remain explicit blockers. Existing Child/Incident attachment fields and artifact lifecycle review are implemented. Artifact creation reserves an explicit counterpart identity and requires all seven metadata decisions; identified source-owner absence can delete a link, while destination-only Take retains it. Owner moves and kept Presence must agree. Latest attachment/artifact native acceptance remains pending. Review does not automatically synchronize arbitrary structure or overwrite the other perspective. Creation scope follows ownership/reference dependencies, not every incident relationship.
|
||||
- Processes/chains use contributions and explicit sequence links; imported ordered exchange paths retain their implied order until topology conversion. Rich fragments belong to scenarios. Guards, expressions and state behavior text are descriptive; there is no execution engine. Mixed states and modes are permitted by this Studio profile.
|
||||
- Preserved OA boundary exchanges use Legacy ports. Capability grouping is containment; include, extend and generalization use separate typed relationships in OA and SA. Data/item references remain within their layer and can have explicit transitioned counterparts.
|
||||
- OA Communication means connect Entities/Actors directly and can allocate Interactions whose actual performers match their endpoints and direction. Transition to SA requires explicit compatible boundary-port decisions; the tool does not guess system ports. Preserved OA boundary exchanges use Legacy ports. Capability grouping is containment; include, extend and generalization use separate typed relationships in OA and SA. Data/item references remain within their layer and can have explicit transitioned counterparts.
|
||||
- Saved view options preserve semantic records, placements and routes. Work and Participant categories are independent families; selected categories combine by union and explicit empty selections match none. Global behavior coverage and selected process/chain/scenario evidence intersect with category choices. Manual hides remain independent of labels and other filters. Traceability permits both layers' eligible references; ordinary views retain their declared-layer scope. Duplicating a view gives its diagram and placements fresh identities while preserving semantic references and presentation settings.
|
||||
- Applying a source project preserves authored comments and formatting while assigning missing identities. Graphical updates preserve unaffected source bytes; canonical export is a separate operation. JSON does not preserve comments or source-file organization. See the [source contract](language.rst) for comment ownership and update rules.
|
||||
- Port position and connection routing belong to each diagram and do not change semantic ownership or endpoints. Folding may temporarily promote an edge to a visible container; expansion restores its authored route. [Routing verification](../harness/release-routing-verification.md) records accepted behavior and measured limits.
|
||||
- Artifact references retain author-provided URI/revision/fragment values without fetching or executing resources.
|
||||
@@ -36,8 +37,8 @@ These are concrete design responses, not claims that every Capella user experien
|
||||
|
||||
| Concern | Studio response | Remaining tradeoff |
|
||||
|---|---|---|
|
||||
| Dense workbench and difficult onboarding | Task workspaces, OA/SA context, contextual menus, direct architecture and behavior gestures, searchable guidance, Home/recents and relation/transition builders | Current Home/recovery and expanded review controls still need native acceptance |
|
||||
| Noisy architecture pictures | Nested ownership/allocation views, independent placements, collapse, automatic routing, editable bends/labels and port positions | Dense diagrams may need manual adjustment; routing has a bounded solve budget |
|
||||
| Dense workbench and difficult onboarding | Task workspaces, OA/SA context, contextual menus, direct architecture and behavior gestures, searchable guidance, Home/recents and relation/transition builders | Home/recovery and keyed/main ordered review have current Windows evidence; remaining variants and Linux acceptance are tracked separately |
|
||||
| Noisy architecture pictures | Nested ownership/allocation views, independent and duplicated placements, saved category/coverage/context filters, explicit hides, collapse, automatic routing, editable bends/labels and port positions | Scoped forty-exchange native filtering/duplication/hide/reopening passed; other view combinations remain pending and routing has a bounded solve budget |
|
||||
| Hard-to-review model files | Modular typed source, stable aliases/UUIDs, preserved comments/formatting and source-aware history | Semantic merges, completion and an LSP are absent |
|
||||
| Hidden mutation effects | Validated atomic commands, dependency cleanup, identity maintenance, previewed counterpart changes and undo | No distributed editing or automatic structural reconciliation |
|
||||
| Platform/plugin overhead | Native Rust/Iced desktop and independent headless service | WGPU has substantial dependencies and needs a working graphics adapter |
|
||||
@@ -47,11 +48,15 @@ These are concrete design responses, not claims that every Capella user experien
|
||||
|
||||
Direct process/scenario/state authoring, typed semantic drift/reconciliation, Home/recents and unsaved-work checkpoints are implemented. Their evidence and outstanding acceptance cases are separated in the [current coverage audit](../harness/release-current-coverage-20260906.md). Direct state editing has earlier scoped Windows/Linux acceptance recorded in [state evidence](../harness/release-state-editing.md); that does not accept every current change.
|
||||
|
||||
Required unfinished implementation includes ordinary OA CommunicationMean authoring with an accurate participant-level contract; persisted selective relation/category/coverage views; completeness checks for exchanges on non-leaf work, behavior-context coverage and missions without capabilities; and ordered-collection, attachment, artifact and multi-source semantic-review GUI controls. Existing Legacy OA boundary exchanges and their Interaction allocations remain supported, but do not close the CommunicationMean requirement.
|
||||
Source-6 CommunicationMean authoring/transition contracts, persisted selective relation/category/coverage views, view duplication and combined multi-source semantic review are implemented and have automated coverage. The source-6 batch recovery and exact Apply/Save/Undo/Redo path, plus scoped forty-exchange filtering/duplication/hide/reopening, now have Windows native evidence. Child/Incident/Artifact semantic-review GUI controls are implemented and have automated coverage; their native acceptance, communication authoring and remaining selective-view cases remain pending. Located completeness warnings for non-leaf exchanges, behavior-context coverage and missing mission/capability context are implemented and verified across core and REST. Explicit ordered review's main native recovery/Apply/Undo/Redo path and reverse Apply/Undo/Redo have exact source comparisons; the reverse trial also exposed a transient save failure on the older binary, and remaining variants are tracked separately.
|
||||
|
||||
An earlier 2026-09-06 automated checkpoint accounted for 943 passing tests and one existing ignored benchmark across the full workspace run and complete affected-suite reruns following three compatibility-expectation corrections. This includes the 48-test HTTP suite, including source-6 acceptance/restart and endpoint-capacity rejection cases. OpenAPI validation passes 39 fixtures and checks 197 component schemas. Exact logs and later changes are identified in [current state](../harness/STATE.md); these totals do not claim a single uninterrupted green workspace run or native acceptance. The later full desktop suite passed 518/518, including artifact lifecycle and diagram-inspector tests; the corrected six-artifact rerun and strict all-target workspace Clippy also passed. These are separate later evidence points, not a recomputed whole-workspace total.
|
||||
|
||||
The desktop attempts a private checkpoint every 10 seconds while work is unsaved. It retains accepted source, raw source buffers, pending property/behavior forms and supported workflow drafts, including semantic-review input. Home recovery opens a detached unsaved copy requiring Save as; it restores no undo stack and writes neither the original model nor a hosted destination. Interrupted source-save recovery is a separate mechanism for an incomplete save transaction.
|
||||
|
||||
Remaining release gates include current-tree automated checks, expanded data/semantic-review and Home/recovery native acceptance, outstanding behavior and hosted workflow cases, default/minimum-window Windows/Linux acceptance, fresh build/MSRV and specification/OpenAPI checks, real REST/restart/parity verification, packages/checksums and independent final review. Guidance must follow the accepted controls. These are unfinished release requirements, not exclusions or release-acceptance claims.
|
||||
The [current Windows native record](../harness/release-current-native-verification.md) covers Home/recents, raw invalid source and UUID-property crash recovery, pending timed-transition recovery, keyed semantic recovery and retained rejected ordered input. It records exact repair/Save/Undo/Redo source comparisons and default/minimum-window observations for those workflows. The [timed-bundle oracle](../harness/release-timed-bundle-oracle-20260906.md) independently reopens both saved files and checks the complete intended graph delta. These scoped results do not accept every recovery adapter, current source-6 native workflows, final packages or Linux.
|
||||
|
||||
Remaining release gates include final-tree strict checks and rebuilt binaries, source-6 communication, remaining selective-view cases and latest attachment/artifact native acceptance, expanded data/semantic-review and remaining recovery variants, outstanding behavior and hosted workflow cases, default/minimum-window Windows/Linux acceptance, fresh MSRV and final specification/OpenAPI checks, remaining real REST/restart/parity scenarios, packages/checksums and independent final review. The Windows journal-publication fix has [bounded independent review and automated evidence](../harness/release-journal-publication-review-20260906.md); its new-binary native Save/reopen check remains pending. Guidance must follow the accepted controls. These are unfinished release requirements, not exclusions or release-acceptance claims.
|
||||
|
||||
## Remaining boundaries
|
||||
|
||||
|
||||
Reference in New Issue
Block a user