diff --git a/docs/project/roadmap.md b/docs/project/roadmap.md index 6c2df8093..0ab39aab7 100644 --- a/docs/project/roadmap.md +++ b/docs/project/roadmap.md @@ -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 @@ -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 @@ -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 @@ -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 ` computes an identity-keyed change set between the model and a repository branch, reading the branch through @@ -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) @@ -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 @@ -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). @@ -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 @@ -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. @@ -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. @@ -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 @@ -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