diff --git a/.github/ISSUE_TEMPLATE/2-spec-conformance-gap.yml b/.github/ISSUE_TEMPLATE/2-spec-conformance-gap.yml index 437bc8d632..a198cdf51b 100644 --- a/.github/ISSUE_TEMPLATE/2-spec-conformance-gap.yml +++ b/.github/ISSUE_TEMPLATE/2-spec-conformance-gap.yml @@ -5,8 +5,8 @@ body: - type: markdown attributes: value: | - Please check [the compliance record](https://opensysml.org/project/spec-compliance/) - and [the OMG-materials defect list](https://opensysml.org/project/omg-issues/) + Please check [the compliance record](https://implementation.opensysml.org/project/spec-compliance/) + and [the OMG-materials defect list](https://implementation.opensysml.org/project/omg-issues/) first — a known divergence is usually already a row there, with the reasoning behind it. - type: textarea diff --git a/.github/ISSUE_TEMPLATE/3-ruling-objection.yml b/.github/ISSUE_TEMPLATE/3-ruling-objection.yml index 4964210012..0ab5ea1e9c 100644 --- a/.github/ISSUE_TEMPLATE/3-ruling-objection.yml +++ b/.github/ISSUE_TEMPLATE/3-ruling-objection.yml @@ -8,9 +8,9 @@ body: This is for the case where the behaviour is deliberate — a maintainer ruling, a recorded divergence, or a design decision — and the argument is about whether it should be that way. The rulings live in - [spec-compliance](https://opensysml.org/project/spec-compliance/), - [OMG materials defects](https://opensysml.org/project/omg-issues/) and the - decision records under [project/](https://opensysml.org/project/). + [spec-compliance](https://implementation.opensysml.org/project/spec-compliance/), + [OMG materials defects](https://implementation.opensysml.org/project/omg-issues/) and the + decision records under [project/](https://implementation.opensysml.org/project/). - type: input id: ruling diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 902ea6aa51..565c73c8e6 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -4,5 +4,5 @@ contact_links: url: https://github.com/Open-MBEE/OpenSysML/discussions about: Anything that is not a defect, a conformance gap, or an objection to a ruling starts as a discussion. - name: Documentation - url: https://opensysml.org/ + url: https://implementation.opensysml.org/ about: The handbook, CLI/REPL reference, internals, and the measured compliance status. diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml index a0dc47d6dd..1d4229e3e1 100644 --- a/.github/workflows/nightly.yml +++ b/.github/workflows/nightly.yml @@ -207,9 +207,9 @@ jobs: echo printf '%s' "The snapshot is replaced each night and is never the \`latest\` release; Homebrew," printf '%s' " PyPI, npm and the Windows installer follow the stable line only. The" - printf '%s' " [snapshot page](https://opensysml.org/project/nightly/) explains what it is, how" + printf '%s' " [snapshot page](https://implementation.opensysml.org/project/nightly/) explains what it is, how" printf '%s' " to verify it and what to expect from it; the" - printf '%s\n' " [install guide](https://opensysml.org/guide/01-install/) covers the stable releases." + printf '%s\n' " [install guide](https://implementation.opensysml.org/guide/01-install/) covers the stable releases." echo printf '%s' "\`opensysml-sysml.vsix\` is the VS Code extension built from the same commit:" printf '%s' " \`code --install-extension opensysml-sysml.vsix\`, with a snapshot's \`sysml-lsp\`" diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 672e365956..ff1ff8042e 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -338,7 +338,7 @@ github.com/Open-MBEE/OpenSysML Documentation is organized by what a reader wants, not by the feature that landed. Four areas, mapped in [docs/README.md](docs/README.md) and published as -: +: - **[docs/guide/](docs/guide/)** — *how do I use it?* A numbered handbook read in order. - **[docs/reference/](docs/reference/)** — *what does this flag, command, API or triple mean?* diff --git a/README.md b/README.md index 0dc700d51a..332389ec9e 100644 --- a/README.md +++ b/README.md @@ -12,7 +12,7 @@ [![PyPI](https://img.shields.io/pypi/v/opensysml?label=pypi)](https://pypi.org/project/opensysml/) [![Python versions](https://img.shields.io/pypi/pyversions/opensysml)](https://pypi.org/project/opensysml/) [![License](https://img.shields.io/badge/license-Apache--2.0-blue)](LICENSE) -[![Documentation](https://img.shields.io/badge/docs-opensysml.org-blue)](https://opensysml.org/) +[![Documentation](https://img.shields.io/badge/docs-implementation.opensysml.org-blue)](https://implementation.opensysml.org/) OpenSysML is a SysML v2 and KerML 1.1 implementation in Go. It provides a language server, an interactive REPL, an execution runtime, an embeddable Go API, and Python, Node/TypeScript, Java @@ -49,7 +49,7 @@ certification is claimed. **Introductory material:** [the guide](docs/guide/) and the [document generation manual](docs/manual/README.md) -**Complete searchable documentation:** — the same pages as +**Complete searchable documentation:** — the same pages as [docs/](docs/), rendered from `main`. ### Install diff --git a/changes/unreleased/implementation-subdomain.changed.md b/changes/unreleased/implementation-subdomain.changed.md new file mode 100644 index 0000000000..c728415721 --- /dev/null +++ b/changes/unreleased/implementation-subdomain.changed.md @@ -0,0 +1,4 @@ +- **The documentation site moved to https://implementation.opensysml.org/.** The opensysml.org + apex domain now serves the OpenSysML ecosystem landing page published from + Open-MBEE/opensysml.github.io; every published page and every link to it lives at the new + subdomain. diff --git a/docs/CNAME b/docs/CNAME new file mode 100644 index 0000000000..e79dcae9a9 --- /dev/null +++ b/docs/CNAME @@ -0,0 +1 @@ +implementation.opensysml.org diff --git a/docs/project/spec-compliance.md b/docs/project/spec-compliance.md index a19e8b6533..4d9a12563a 100644 --- a/docs/project/spec-compliance.md +++ b/docs/project/spec-compliance.md @@ -20,7 +20,7 @@ no resolver. ### ✅ Fully Implemented & Tested -The map below tracks every rule row on this page. Its census — how many rows are ✅ faithful, ⚠️ approximate, ❌ not implemented or ⛔ deliberate divergence, and how many have no external referee — is counted from the rows when the documentation site is built and published at [opensysml.org](https://opensysml.org/project/spec-compliance/); no count is typed in or committed here. +The map below tracks every rule row on this page. Its census — how many rows are ✅ faithful, ⚠️ approximate, ❌ not implemented or ⛔ deliberate divergence, and how many have no external referee — is counted from the rows when the documentation site is built and published at [implementation.opensysml.org](https://implementation.opensysml.org/project/spec-compliance/); no count is typed in or committed here. Read that as progress, not as a compliance percentage — the denominator is the list of rules *we* chose to track, so it moves when we add a row, and a specification-derived denominator does not @@ -135,7 +135,7 @@ what cannot be checked by anything is in - Redefinition target resolution (:>> featureName) - Control flow node scope registration -**Test Coverage:** counted from the tree when the documentation site is built and published at [opensysml.org](https://opensysml.org/project/spec-compliance/); no figure is typed in or committed here, so a branch adding a test or fixture leaves this page as it is. +**Test Coverage:** counted from the tree when the documentation site is built and published at [implementation.opensysml.org](https://implementation.opensysml.org/project/spec-compliance/); no figure is typed in or committed here, so a branch adding a test or fixture leaves this page as it is. - Execution conformance: the execution conformance cases, by prefix — the calc cases include the fixed-step RK4 lunar descent whose stages are body-local usages read over a range, the one-binding output case, the library complex/vector/trig cases, and recursion — factorial, fibonacci, a descent over a sequence, a mutually recursive pair and one whose result is its last expression; the action and state cases include a decision and a transition guard reading a calc usage; the new `f62_send_body_payload`, `f62_transition_body_dotted_target`, `f63_control_node_body`, `f63_for_typed_variable`, and `f63_merge_body_runs_on_traversal` fixtures cover node bodies, dotted transition targets, typed `for` variables, and merge traversal, and the `action_merge_loop_reenters`, `action_merge_loop_three_passes`, `action_merge_fork_branch_and_loop` and `action_merge_body_flips_own_guard` fixtures a loop re-entering a merge, a merge fed by a fork and a loop at once, and a merge body write read by the merge's own outgoing guard; the `assign_chain_*` fixtures write through a feature chain at depth two and three, through a port, through an inherited feature, through two features holding one occurrence, from a state's entry, `do` and `exit` behaviors and from a transition effect, with the write read back by a later node and by a guard, and a calculation body's chained target rejected; the `assign_write_*` fixtures write a subtype value and a widening numeric value legally, and refuse a wrong-typed write, a wrong-typed chained write, a collection the target's multiplicity cannot hold and an empty write where one value is required; the `instance_quantity_coherent_units`, `calc_quantity_coherent_result` and `calc_quantity_coherent_mismatch` fixtures report a product, quotient, fractional power, prefixed input and user-declared derived unit in the coherent unit of the declared quantity kind, keep a dimensionless ratio a number and a non-numeric exponent an error, and keep the dimension mismatch of a speed written to an acceleration) - Runtime robustness: the runtime robustness cases (first-level subtests across the `TestRuntimeRobustness*` functions), among them: a write of a wrong-typed value, of too many values and of none where one is required, each leaving the feature as it was, and such a write from a state entry behavior, through a feature chain, to a calc output, to a body-local, to an output, to a performer feature and to a performance occurrence; a write to a constant or a derived feature, directly, through a chain, through a redefinition and through `SetFeatureValue`, each refused and leaving the value; deadlock, an accept payload read by a node that runs before the accept binds it, a default whose element count does not conform to its feature's multiplicity, a calc output the body never assigns or only a branch that did not run would assign, an output bound both by its declaration and by an assignment or by two assignments, empty entry/do/exit bodies, a do body that never finishes, a behavior both performing an action and stating a body, an assignment to a qualified target, a chained assignment target whose final segment the object reached does not hold, whose step is not an object, holds several objects or holds no value, whose base the body cannot reach, whose value the target's multiplicity refuses, or that is written in a calculation body, a body-local usage typed by something that is not a calc, a body-local declaration with no execution, a range bound that is not an Integer, a range spending the step budget, a collection spending the element budget, a chain through a part stopping at a calc usage, an index naming no position, a collection operand of the wrong kind, a collection body of the wrong arity, a `select` predicate that is not a condition, a collection operation spending the step budget, a non-terminating loop, a calc usage leaving an input unbound, reading an output it does not declare or one with no value, a usage nested in a calc leaving an input unbound, reading an output it does not declare, an input default naming only itself, a nested usage chain reaching the recursion limit or spending the step budget, outputs valued from each other, a usage typed by something that is not a calc, a usage body spending the step budget, an invocation of a calc that computes several outputs and designates no result, a non-terminating calc loop, a calc body that never returns, a send or a `terminate` inside a calc, an assignment outside a calc body, a non-Boolean calc condition, a body-local declaration that must not leak, a body member that is not executable, accept suspension that can never end, an accept standing as a statement of a loop body that nothing can end, guards, budgets, sourceless accept, fork/join misuse, pseudostate dead ends and cycles, non-numeric time trigger, a time trigger argument of the type validation refuses, misaddressed send, accept of an unsent type, send through an unconnected port, history misuse, non-deferrable deferred trigger, non-terminating do behavior, calc binding/arity/recursion failures, unhandled call, call argument of the wrong type, missing and cyclic `perform` references, a library function outside its domain or with the wrong arity, an extension library function outside its domain, an Integer result beyond the Integer size budget, an Integer beyond int64 used as an index, offset or size, a flow end that names no action node, a flow from a node that produced no value, an action accept waiting on the clock — `after` and `at` fired by advancing it, `at` an instant already past fired at once, a negative `after`, a duration of another dimension — and the clock advanced by zero, by a negative amount, with nothing waiting, past a wait that stays queued and into a machine the event budget stops, a non-Boolean change trigger, a variation with no variant selected, a selection that is not one of a variation's variants, two variants selected at once, a variation read through its declaration, a chain through an unselected variation part, two variation points selecting one variant without an owning object, a `variant` declared outside a variation, a variant under a redefined variation, a deep chain of redefinitions, conflicting redefinitions at several levels, one feature valued under two of its names, a feature both valued and restated in a body, a flow that names no feature to carry, an accepted message carrying no single value to bind, a transition that names no target, a transition endpoint that names nothing, a transition endpoint naming a state of a different machine, a transition endpoint lowered with no name-resolution pass, whose edge is left out, a connector end naming no reachable feature, a connector holding more than one object, a connector attached to itself or to one that names it back, a write into a pair of values derived from each other) diff --git a/mkdocs.yml b/mkdocs.yml index a1fc21d706..e8dcbbd872 100644 --- a/mkdocs.yml +++ b/mkdocs.yml @@ -4,7 +4,7 @@ # menu, which links the sites GitHub's own header cannot. site_name: OpenSysML site_description: A SysML v2 and KerML implementation in Go — language server, REPL, execution runtime, and Go, Python, Node, Java and Rust clients -site_url: https://opensysml.org/ +site_url: https://implementation.opensysml.org/ repo_url: https://github.com/Open-MBEE/OpenSysML repo_name: Open-MBEE/OpenSysML edit_uri: edit/main/docs/ diff --git a/overrides/home.html b/overrides/home.html index f7870a8763..a81deafae8 100644 --- a/overrides/home.html +++ b/overrides/home.html @@ -556,7 +556,7 @@

A SysML v2 toolchain that runs the model, not just reads it.

Apache-2.0 · Linux, macOS and Windows binaries · - loads the Apollo 11 model in 0.43 s, and finds what running it turns up + loads the Apollo 11 model in 0.27 s, and finds what running it turns up

@@ -945,7 +945,7 @@

Not self-assessed — measured against the reference implementation.

to parse the Apollo 11 model — 28 files, 7,200 lines — on one core. - 0.43 s + 0.27 s to load it with the standard library, resolve every name and validate it. diff --git a/overrides/partials/menu-links.html b/overrides/partials/menu-links.html index 0f7219a6b1..eaf9525b6b 100644 --- a/overrides/partials/menu-links.html +++ b/overrides/partials/menu-links.html @@ -3,6 +3,8 @@ Reference Roadmap
+{#- opensysml.org is the project landing page; this site is its documentation subdomain. -#} +opensysml.org {#- The apex domain serves no HTTPS, so the www host is the only one that answers. -#} OpenMBEE Community Wiki