-
Notifications
You must be signed in to change notification settings - Fork 14
README
This repository is the source for https://github.com/UOR-Foundation/UOR-Framework/wiki. The committed .md files at the wiki root are GitHub-rendered output, not hand-edited content. The wiki is authored under three coordinated standards: arc42 + C4 (architecture, in src/arc42/ and src/c4/), OPM ISO 19450 (conceptual model, in src/opm/), and ISO/IEC/IEEE 15288 (system lifecycle, in src/15288/).
The full structural specification is wiki-definition.md at this repository's root. This README covers the day-to-day workflow.
git clone --recurse-submodules https://github.com/UOR-Foundation/UOR-Framework.wiki.git
cd UOR-Framework.wiki
./scripts/install-tools.shinstall-tools.sh downloads tools/structurizr.war and tools/pandoc.deb (both verified against tools/checksums.txt), extracts pandoc to tools/pandoc-prefix/ and symlinks it at tools/bin/pandoc, builds tools/bin/cmark-gfm from source at the pinned tag, checks out arc42-template at the SHA in tools/arc42-template-pin.txt, runs bundle install into vendor/bundle/, installs Playwright system libraries via apt-get so V3's SVG export can launch headless Chromium, verifies host tool versions match tools/versions.txt, and re-writes tools/versions.txt from observed values. The script needs sudo for the apt step only.
| Standard | Sources |
|---|---|
| arc42 |
src/arc42/adoc/NN_*.adoc (12 chapters); src/arc42/arc42-template.adoc (umbrella include) |
| C4 |
src/c4/workspace.dsl (single Structurizr workspace) |
| OPM (ISO 19450) |
src/opm/<opd-name>/opl.txt + opd.svg per OPD; src/opm/opd-order.txt lists OPDs in presentation order |
| ISO/IEC/IEEE 15288 | src/15288/{agreement,organizational-project-enabling,technical-management,technical}.adoc |
| Wiki frame | src/wiki/{Home,Sidebar,Footer}.adoc |
| Scientific Methods and Results (academic partition, non-normative) |
src/scientific/<Wiki-URL-Slug>.adoc per page |
./scripts/validate.shRuns V1–V8 in dependency order and prints an aggregated report. V1–V5 cover arc42+C4 architecture; V6/V7 cover OPM (ISO 19450); V8 covers ISO 15288 process structural superset. See wiki-definition.md for what each validator enforces.
V6/V7/V8 follow reconciliation gap discipline: when their pin file (tools/iso-19450-opl.ebnf, tools/iso-19450-opd-coherence.txt, tools/iso-15288-processes.txt) or source directory (src/opm/, src/15288/) is absent, they report skip-gap rather than failing. The build remains green throughout the gap. A pass and a skip-gap are both acceptable for exit-zero; an upstream-failure-skip (skip-upstream) is not.
./scripts/build.shRuns Stage 1 (pre-flight pin verification, including bundle check and transcribed-pin presence), Stage 2 (validate), Stage 3 (render wiki-frame, ISO 15288 lifecycle pages, and OPM Conceptual Model index), Stage 4 (stage to wiki root with chapter rename + image-path rewrite + lifecycle page rename + Conceptual-Model copy), and Stage 5 (idempotence check — re-runs Stage 4 to a scratch dir and cmps every output, failing on any byte-level divergence).
git status # confirm src/ AND rendered .md files changed
git add src/ images/ Home.md _Sidebar.md _Footer.md \
[0-9][0-9]-*.md
git commit -m "..."
git pushThe commit MUST include the source change AND the corresponding rendered output AND any SVG that V3 produced.
./scripts/check-wiki-state.shClones the live wiki repo, re-runs Stage 4 against the committed sources, and cmps each staged file against the wiki root. Detects commits where source and rendered output drifted (e.g., a contributor edited src/... but forgot to re-run build.sh before pushing). Repair: clone, run ./scripts/build.sh, commit the regenerated output, push.
Each external tool is pinned. The pin authorities:
| Pin | Authority |
|---|---|
arc42-generator |
submodule SHA recorded by git add vendor/arc42-generator
|
arc42-template |
tools/arc42-template-pin.txt (overrides the generator's transitive pin) |
structurizr.war |
version literal + SHA-256 in scripts/install-tools.sh and tools/checksums.txt
|
pandoc.deb |
version literal + SHA-256 in scripts/install-tools.sh and tools/checksums.txt
|
cmark-gfm |
git tag literal in scripts/install-tools.sh
|
| Ruby gems | Gemfile.lock |
| ISO 19450 OPL EBNF |
tools/iso-19450-opl.ebnf (workspace-authored transcription of Annex A) |
| ISO 19450 OPD/OPL coherence rule |
tools/iso-19450-opd-coherence.txt (workspace-authored transcription) |
| ISO 15288 process catalog |
tools/iso-15288-processes.txt (workspace-authored transcription of Clause 6) |
General update procedure (any tool pin):
- Edit the pin literal in
scripts/install-tools.sh(andtools/checksums.txtforstructurizr.war/pandoc.deb, ortools/arc42-template-pin.txtfor the template). - Run
./scripts/install-tools.shto download/build at the new pin and rewritetools/versions.txt. - Run
./scripts/build.shto confirm the new pin produces equivalent output. - Commit the pin literal change, the new
tools/versions.txt, and any rendered output churn in a single commit.
For the arc42-generator submodule specifically, also cd vendor/arc42-generator && git checkout <new-sha> then cd .. && git add vendor/arc42-generator before running install-tools.sh. Reconsider tools/arc42-template-pin.txt at the same time — a newer generator may expect a different template layout.
Transcribed-standard pins (tools/iso-*.{ebnf,txt}) are workspace-authored; updates are direct edits to the file followed by re-reading against the published standard. The commit message MUST name the standard's clause/annex and the publication year of the transcription source.
The wiki hosts a non-normative academic-documentation partition called
Scientific Methods and Results (per wiki-definition.md's
Non-normative content partitions section). The Director of Research
and the Academic Documentation Working Group own its content; the wiki
maintainer owns the authoring mechanics.
Standing operating procedure:
- Author submits an issue. The Director of Research (or another working-group member) opens an issue at https://github.com/UOR-Foundation/UOR-Framework/issues describing the page to add or the change to make. Content can be in the issue body or attached.
-
Maintainer authors AsciiDoc. A wiki maintainer creates or edits
the corresponding source file under
src/scientific/. The source filename is the wiki-URL slug verbatim (e.g.,Scientific-Methods-and-Results.adocbecomesScientific-Methods-and-Results.mdat the wiki root, accessible athttps://github.com/UOR-Foundation/UOR-Framework/wiki/Scientific-Methods-and-Results). The first heading in each file should match the page title (use the[[section-<slug>]]anchor +== Titlepattern modeled by the arc42 chapters and the existing landing page). -
Maintainer runs the build.
./scripts/build.shrenders the AsciiDoc to GFM markdown via the pandoc pipeline (Stage 3d) and stages eachsrc/scientific/<page>.adocto<page>.mdat the wiki root (Stage 4g). All eight validators (V1–V8) and the Stage 5 idempotence check apply unchanged; V4/V5 cover the well-formedness of the new pages. -
Maintainer commits and pushes. A single commit includes the
src/scientific/...source change, the regenerated<page>.mdat the wiki root, and the regenerated_Sidebar.mdif the sidebar changed. The push lands at the wiki repo'smaster. - Maintainer closes the issue, referencing the commit.
Working-group members may also propose edits via the GitHub web UI's
Suggested change mechanism on the source file; the maintainer
applies the suggestion the same way (edit src/..., run build.sh,
commit). Direct edits via the GitHub wiki web UI are still forbidden —
the standing rule against hand-editing rendered .md at the wiki root
applies to academic-partition pages too.
The partition's structure (number of pages, their sidebar grouping,
their inter-page links) is operational policy of the working group;
the partition's existence is a wiki commitment recorded in
wiki-definition.md.
| Path | Role |
|---|---|
wiki-definition.md |
The normative specification of wiki structure, validators, build pipeline, pin authorities, and reconciliation discipline |
src/arc42/adoc/NN_*.adoc |
Per-chapter AsciiDoc sources (arc42) |
src/arc42/arc42-template.adoc |
Top-level include (for direct asciidoctor use) |
src/arc42/version.properties |
Spec revision metadata |
src/arc42/images/*.svg |
Output of V3 (Structurizr → SVG); gitignored |
src/c4/workspace.dsl |
Single canonical Structurizr workspace |
src/opm/<opd>/ |
Per-OPD: opl.txt (canonical OPL) + opd.svg (rendering); V7 verifies they agree |
src/opm/opd-order.txt |
Manifest listing OPDs in presentation order |
src/15288/{group}.adoc |
Per-process-group lifecycle chapters (Agreement / Organizational Project-Enabling / Technical Management / Technical) |
src/scientific/<slug>.adoc |
Scientific Methods and Results partition (non-normative academic documentation, per the SOP above). One AsciiDoc file per wiki page; filename = wiki-URL slug. |
src/wiki/{Home,Sidebar,Footer}.adoc |
Wiki-frame fragments |
vendor/arc42-generator/ |
Pinned submodule. V1 reads upstream chapter manifest from vendor/arc42-generator/arc42-template/EN/adoc/. arc42-template's SHA is overridden by tools/arc42-template-pin.txt, not by the generator's recorded pin. |
tools/arc42-template-pin.txt |
SHA we want arc42-template checked out at; enforced by install-tools.sh after submodule init |
tools/checksums.txt |
SHA-256 pins for downloaded binaries (structurizr.war, pandoc.deb) |
tools/versions.txt |
Resolved version strings; written by install-tools.sh, read by build.sh Stage 1 |
tools/iso-*.{ebnf,txt} |
Transcribed-standard pin files (V6/V7/V8 authority) |
tools/opl-to-svg.rb |
One-time bootstrap helper that generates an OPM-style SVG from an OPL file. NOT a build step — opd.svg is a source artifact that V7 polices |
scripts/ |
All build, validate, and helper scripts (V1–V8 implementations + render-* + stage-to-wiki-root + check-wiki-state) |
scripts/lib/ |
Shared Ruby library code: ebnf_to_treetop.rb (V6's mechanical EBNF→PEG translator) and opl_entity_extractor.rb (V7's parse-tree walker) |
tests/ |
Unit tests for the library code, run via ./tests/run-all.sh. Exercise V6/V7 against synthetic mini-grammars; no dependency on the transcribed-standard pin files |
Gemfile, Gemfile.lock
|
Ruby gem pins (Asciidoctor for V1/V8, github-markup + commonmarker for V5, treetop + rexml for V6/V7) |
*.md at the root |
GitHub-rendered output (committed). 12 arc42 chapters, 3 wiki-frame files, Conceptual-Model.md, 4 Lifecycle-*.md pages |
images/ at the root |
SVGs referenced by rendered chapters (committed). 12 C4 SVGs + 6 per-OPD opm-*.svg
|
-
Do not edit
*.mdat the wiki root by hand. They are regenerated bybuild.sh. Editsrc/...instead. -
Do not edit pages via the GitHub web UI. Web-UI edits are overwritten by the next push from a
build.shrun. -
Do not skip the build. A commit that updates
src/...without updating the corresponding rendered file is detected byscripts/check-wiki-state.sh. -
Do not pin an
arc42-templatesubmodule directly in this repo's.gitmodules. The active pin lives intools/arc42-template-pin.txtand is applied byinstall-tools.shafter submodule init. Thearc42-generatorsubmodule has its own recorded pin forarc42-template, but that pin is too old for the generator's currentTemplates.groovylayout expectations — we deliberately override it.
Generated from sources at UOR-Framework.wiki. Do not edit pages directly via the GitHub web UI — edits are overwritten by the next build. See README for the authoring workflow.