Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
69 changes: 38 additions & 31 deletions docs/project/roadmap.md
Original file line number Diff line number Diff line change
Expand Up @@ -244,10 +244,12 @@ goldens, 493 runtime robustness cases, 21 gRPC conformance and 8 gRPC robustness
ASTs and 252 negative subtests; the growth over the table is fixtures landed after the tag, all
unreleased. The robustness cases are counted across the `TestRuntimeRobustness*` and
`TestGRPCRobustness*` functions since #345 registered them per feature, so the table's
single-function figure and the block's are the same census under two spellings. The census,
rejection-oracle and RDF round-trip rows follow the committed baselines; none of the three moved
between `074f9c4b7` and the tag, the census did not move since `v0.7.0`, and the other two grew
with the corpus and the baseline between `v0.7.0` and `074f9c4b7` (bracketed above).
single-function figure and the block's are the same census under two spellings. The rejection-
oracle row follows the committed baselines and did not move between `074f9c4b7` and the tag. At
`develop`'s head, the validation census has moved to **163 of 217 reported —
157 faithful, 6 approximate, 0 not implemented, 1 deliberate, 53 unknown**, and the RDF corpus
round trip has moved to **356 of 356 models stable**. The API element-form round trip at the
same head is **354 of 356 models stable**, with 2 graph-diff cases.

Statement coverage, re-measured with `go test -cover ./...` at this baseline with the corpora
present. It counts only each package's own tests, which understates a package consumed by others
Expand Down Expand Up @@ -720,7 +722,9 @@ recording); the recording after D1 and D2 is 505/582, with the standard expressi
structure delivered in full and the remaining source and ordering limitations recorded in D1 and
D2.

## D1 — expression trees have standard ownership and operand vocabulary
## D1 — expression trees have standard ownership and operand vocabulary (done)

**Landed in #509.**

Every expression-valued position — a feature value, a multiplicity bound, a guard, a filter, a
condition, a send payload — is now a **tree of typed nodes** in the `expr:` namespace
Expand All @@ -742,7 +746,9 @@ What remains:
[rdf-mapping.md § Result expressions](../reference/rdf-mapping.md#result-expressions)), and no
file in the ratchet is refused for an expression.

## D2 — end bindings use standard connector ownership
## D2 — end bindings use standard connector ownership (done)

**Landed in #509.**

`connect`, `bind`, `flow`, `succession` and related heads now state their ends through
`sysml:connectorEnd`, `EndFeatureMembership` and end `ReferenceUsage`s marked with
Expand Down Expand Up @@ -862,7 +868,7 @@ the modules exist. Conformance beyond that is gated on D1 and D2 rather than on
has no place in the ontology, so an ontology-profile graph is conformant only as far as those
have landed, and the profile's documentation should say so.

## D9 — Flexo as a place models live, not only a place graphs are tested
## D9 — Flexo as a place models live, not only a place graphs are tested (done)

What exists at the baseline, all landed: `-sync-diff <repo.ttl | endpoint>` computes an
identity-keyed change set between the model and a repository branch, reading the branch through
Expand Down Expand Up @@ -941,9 +947,8 @@ The gate is the live-stack harness (`TestFlexoInterop`) with a two-project fixtu
project over two owned projects, an edit through the view lands as one commit in each owner and
nothing in the view project, the filter-violating edit and the variant mismatch are refused before
any write, and a re-run finds nothing to change. Depends on D9.1 (reading a branch as notation,
which is how the view project materializes what it exposes) and sits after D9.2 in the track
order; independent of D1/D2, since it moves whole elements by id and never inspects their
vocabulary.
which is how the view project materializes what it exposes). D9.1 and D9.2 are landed; independent
of D1/D2, since it moves whole elements by id and never inspects their vocabulary.

## D11 — the SysML v2 API element form as a `Convert` format (done)

Expand Down Expand Up @@ -2444,10 +2449,11 @@ B2 and B3 make a program the provider. Most values a twin reads are in a table,
service with a URL, and asking for a program to read them is asking for the same fifty lines in
every host. A small set of built-in providers, selected by the `binding` string's scheme — a CSV
or JSON file keyed by element, an HTTP endpoint returning JSON decoded by the I1 rules, and a
Flexo project's element values once D9.2 reads one — configured on the `sysml` and `sysml-grpc`
Flexo project's element values now that D9.2 reads one — configured on the `sysml` and `sysml-grpc`
command lines and refused by name when the scheme is unknown. This is the item that makes a model
with `@ExternalValue` runnable from the REPL against a spreadsheet with no host program at all.
Depends on B2; each provider is small and independent, and the Flexo one waits for D9.2.
Depends on B2; each provider is small and independent, and the Flexo provider is no longer gated
by D9.2, which is landed.

## B5 — bindings as a query, and in the REPL

Expand Down Expand Up @@ -3235,8 +3241,9 @@ carried more than that list. By track, with the pull requests the tracks cite:
SysML v2 construct; the exception-handlers record ([exception-handlers.md](exception-handlers.md))
closes the compliance mapping's last UML-referenced action item the same way, leaving its
*Implementable But Not Yet Done* list empty.
- **Track D** — D12 (the standard library's normative element ids) is done; D13 (the SysML v1
migration's remaining items) is written.
- **Track D** — D1, D2, D7, D9 (branch read and whole-graph push), D11 and D12 are done.
D3's Flexo harness is measured at 505 of 582 properties delivered. D8's ontology profile and
D10's write-through remain open; D13 (the SysML v1 migration's remaining items) is written.
- **Release follow-through** — R4's Windows installer is published by `v0.7.0` and `v0.8.0`
alike; the release procedure runs git-flow (#151); `opensysml` 0.5.0 is on PyPI; the
test-suite figures are generated and gated (#291, on `develop` after the tag).
Expand Down Expand Up @@ -3266,8 +3273,9 @@ Tracks F, S, L and A are closed.
landed in #356.
- **Release follow-through** — R2, R3, R5 (account- and hardware-gated), and nothing else: the
`v0.8.0` post-tag checks are met and the test figures are generated.
- **Tracks D, N, M, I, V, B** — as the tracks state them; nothing in them moved since `v0.6.0`
except D12 and the four `Value` arms Track I's clients carry (#113, #121, #122).
- **Tracks N, M, I, V, B** — as the tracks state them; nothing in them moved since `v0.6.0`
except the four `Value` arms Track I's clients carry (#113, #121, #122). Track D's current
status is stated above.
- **Proposed** — scaling to very large models (the design and its first step landed, #300 and
#316; #308, #309, #312 open). The PDF path onto the HTML backend (#358) and the fUML referee
for actions with its emitter (#319, #321, #334, #413; the `not-expressible` rows left are typed
Expand All @@ -3280,8 +3288,9 @@ Tracks F, S, L and A are closed.
## Cross-cutting order

The release housekeeping the previous order opened with is done — #286 folded `main` back into
`develop`, PyPI serves the Python client's 0.5.0 — and its steps 2 (L7, #292), 4's first half
(Q2, #293) and 5 (A4, #296) landed on `develop`, so the order is shorter by three.
`develop`, PyPI serves the Python client's 0.5.0 — and its steps 2 (L7, #292), 3 (D2 and D1,
#509), 4's first half (Q2, #293) and 5 (A4, #296) landed on `develop`, so the order is shorter
by four.

**Track E** — complete: E1, E2, E4, E6, E7, E8, E9 and E10 landed; E3 and E5 closed by
design record. Its remaining design notes do not add an open Track E item.
Expand All @@ -3293,10 +3302,11 @@ manual; #267, #289 and #293 closed Q2; Q4 (#849) landed independently ahead of t
1. **I2, I3, then I4's client** — the shared fixtures, the thin R, Julia and MATLAB packages, the
C client, each derived from the wire contract (I1, landed in #848); the C *ABI* half of I4 is
not here — it is step 7.
3. **D2 and D1** — Flexo: the standard vocabulary for expression trees and end structure (the
3. ~~**D2 and D1** — Flexo: the standard vocabulary for expression trees and end structure (the
collection JSON annotations, D3.4, landed in #850; the branch read and the authenticated
whole-graph push, D9.1 and D9.2, landed with `-convert` over a branch URL). What the hop
carries depends on the vocabulary quality; re-record the live-stack harness after D1/D2.
whole-graph push, D9.1 and D9.2, landed with `-convert` over a branch URL).~~ **Landed in
#509;** the live-stack harness was re-recorded at 505/582 properties, so the order is shorter
by one more step.
4. **X8's harness halves, then X7's native layout** — normalization and adjudication in
the pilot differential and a standalone RDF expression-tree round trip, so every later
expression item is measured; the set and tensor native layouts when something needs them.
Expand Down Expand Up @@ -3350,15 +3360,12 @@ initial state. The decision is the release checklist's, recorded there.
- **Track N.** N2.1 (records and enums) first, since compiling an analysis case and the
differential's record and constructor coverage both need it; decide N2.2 (the budget) before
N2.4; N2.3 tracks L4 package by package; N2.6's actions and states are Track M's M1/M2.
- **Track D.** The RDF ratchet is 353/353 with no refusal left; step 4 above is next; **D7** is
done (references are element IRIs, every metaclass written is concrete); the ontology modules (#774 on the
previous repository) have to be re-proposed against this repository before **D8**'s profile,
which only becomes conformant behind D1 and D2; **D12** (the standard library's normative
element ids) is done; **D11** (the API element form as a `Convert` format) is done, so the
branch read has a choice of representation; **D13** (the SysML v1 migration's units, its
report on the wire and its experimental notice) in the order it lists; **D9.1** and **D9.2**
(the branch read and the whole-graph push) are done; **D10** (write-through from a view-only
project) reads and writes through them.
- **Track D.** The RDF ratchet is 356/356 stable with no refusal left; the API element-form
ratchet is 354/356 with 2 graph-diff cases. **D1** and **D2** are done: expression trees use
standard ownership and operator vocabulary, and connector ends use `ReferenceSubsetting`;
**D8**'s ontology-profile gate is therefore open. **D7**, **D9.1**, **D9.2**, **D11** and
**D12** are done; **D8** and **D10** remain; **D13** (the SysML v1 migration's units, its
report on the wire and its experimental notice) in the order it lists.
- **Track F.** Closed. F1 and F2 landed together (#116) as the token-per-succession model, F3
(#120) as the per-traversal merge on top of it; `known_failures.txt` has no line left to delete.
- **Track S.** Landed in the order agreed: S1 (#110), S2 (#123), S3 (#125), S4 (#134); #141 added
Expand All @@ -3383,7 +3390,7 @@ initial state. The decision is the release checklist's, recorded there.
reconciled with #907, #909); work the census's 53 *unknown* rows, negative case first, each
change moving its row.
- **Track B.** B1, B2, then B3 — step 6 above; nothing holds B1 or B2 back; B4's file and HTTP
providers whenever asked, its Flexo provider after D9.2; B5 with Q1.
providers whenever asked, its Flexo provider unblocked now that D9.2 is landed; B5 with Q1.
- **Track W.** W1 (`dot`), W2 (`plantuml`) and W3 have landed, W3's PDF rasterization and
panel export in #356 on `develop` after the tag. What is left — richer node shapes and
compartments in both writers — is independent of every other track and runs beside any step
Expand Down
Loading