Skip to content
Merged
Show file tree
Hide file tree
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
Binary file modified spacecraft-standard-constitution.skill
Binary file not shown.
Binary file modified spacecraft-standard-constitution.zip
Binary file not shown.
75 changes: 72 additions & 3 deletions spacecraft-standard-constitution/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ description: >
Spacecraft Software-umbrella project — even if the user doesn't explicitly mention the Standard.
If the user mentions "Spacecraft Software", a Spacecraft Software subproject name, or asks you to work on
anything in the Spacecraft Software ecosystem, consult this skill immediately. It encodes
The Steelbore Standard v1.38 (§4.3 LICENSE + LICENSES symlink; §11 palette family; §18 accessibility; §17 progress reporting; §3.2 compiler flags; concurrency; §3.3 security-by-design; §8 Texinfo; §7 Shell Environment) so
The Steelbore Standard v1.3911 palettes + §11.5 fidelity; §4.3 LICENSE symlink; §11 palette family; §18 accessibility; §17 progress reporting; §3.2 compiler flags; concurrency; §3.3 security-by-design; §8 Texinfo; §7 Shell Environment) so
you never need to ask for it or have it attached to a prompt again.
license: GPL-3.0-or-later
maintainer: Mohamed Hammad <Mohamed.Hammad@SpacecraftSoftware.org>
Expand All @@ -17,7 +17,7 @@ website: https://Construct.SpacecraftSoftware.org/

# The Steelbore Standard — Compliance Reference

**Version:** 1.38 | **Date:** 2026-07-26 | **Author:** Mohamed Hammad
**Version:** 1.39 | **Date:** 2026-07-26 | **Author:** Mohamed Hammad
**Maintainer:** Mohamed Hammad | **Contact:** [Mohamed.Hammad@SpacecraftSoftware.org](mailto:Mohamed.Hammad@SpacecraftSoftware.org)
**Copyright:** Copyright (C) 2026 Mohamed Hammad & Spacecraft Software | **License:** GPL-3.0-or-later
**Website:** [https://Construct.SpacecraftSoftware.org/](https://Construct.SpacecraftSoftware.org/)
Expand Down Expand Up @@ -742,7 +742,7 @@ Radium Green on Liquid Coolant 1.01:1.

### §11.3 — Alternate Palettes

Four alternates, each anchored on two colors that never change, each verified
Five alternates, each anchored on two colors that never change, each verified
against its own canvas and surfaces. Full role tables and three-background
matrices live in the `steelbore-color-palette` skill's
`assets/steelbore.toml`; every token clears 4.5:1 on all three of its
Expand All @@ -754,6 +754,22 @@ backgrounds unless marked †.
| Steelbore BlackPinkPanther | `steelbore-blackpinkpanther` | Core Black `#141418` | Plasma Magenta `#E445FF` | No restricted pairings |
| Steelbore MatrixGreen | `steelbore-matrixgreen` | Circuit Navy `#0C1A2B` | Solar Lime `#B6FF3B` | `surface-alt` (Ambient Black `#05070A`) is darker than the canvas — permitted |
| Steelbore NavyWhite | `steelbore-navywhite` | Pearl Silver `#E7E5E0` | Lunar Navy `#111827` (foreground) | **Light canvas**; high contrast *darkens*. Lighter source tints are non-text fills only |
| Tokyo Night | `tokyonight` | Night `#1A1B26` | Tokyo Blue `#7AA2F7` | Verbatim from the upstream editor theme; no restricted pairings. `surface` is the Storm background `#24283B`, `surface-alt` the Night `bg_dark` `#16161E` (darker than the canvas — permitted) |

#### §11.3.5 — Tokyo Night

Registered verbatim from [enkia/tokyo-night-vscode-theme](https://github.com/enkia/tokyo-night-vscode-theme).
It needed **no Spacecraft-derived substitutes** — every role token clears 4.5:1
on all three backgrounds — so it is a conforming alternate, not a §11.5 fidelity
palette: `foreground` `#C0CAF5` 10.59:1, `accent` `#7AA2F7` 6.79:1, `structure`
`#BB9AF7` 7.39:1, `success` `#9ECE6A` 9.35:1, `error` `#F7768E` 6.46:1,
`warning` `#E0AF68` 8.55:1, `focus` `#7DCFFF` 9.96:1 (vs canvas).

`tokyonight-high-contrast` lifts the two tokens below 7:1 on the canvas —
`accent` → `#97B6F9` (8.44:1) and `error` → `#F998AA` (8.22:1); the other six
carry over verbatim. The upstream comment tone `#565F89` (2.76:1) clears neither
the 4.5:1 text floor nor the 3:1 non-text floor and is **not bindable to a role
token**; boundaries are drawn in `structure` per §11.0.1.

### §11.4 — Palette Selection

Expand All @@ -767,6 +783,59 @@ backgrounds unless marked †.
- **The canvas is mandatory within its palette.** Substituting a different
background for a declared palette is non-compliant.
- **Values are read, never retyped** — from `assets/steelbore.toml`.
- **Fidelity palettes are not adoptable.** The §11.5 palettes are registered for
interoperability only; a project may not declare one, and they ship no
high-contrast sibling.
- **Palettes have reference names** (§11.4.1) alongside their slugs. The slug
stays the machine identifier.

#### §11.4.1 — Reference Names

Additive. The slug remains the machine identifier used by theme lookups and
`steelbore.toml` keys; the reference name is for prose and conversation. Both
ship in the canonical file, the reference name as each palette's `reference` key.

| Slug | Reference name |
|------|----------------|
| `steelbore` | `steelbore-color-palette` |
| `steelbore-classic` | `steelboreclassic-color-palette` |
| `steelbore-blue` | `blue-color-palette` |
| `steelbore-blackpinkpanther` | `blackpinkpanther-color-palette` |
| `steelbore-matrixgreen` | `matrixgreen-color-palette` |
| `steelbore-navywhite` | `navywhite-color-palette` |
| `tokyonight` | `tokyonight-color-palette` |
| `solarized-dark` | `solarizeddark-color-palette` |
| `solarized-light` | `solarizedlight-color-palette` |

### §11.5 — Fidelity Palettes (registered, non-conforming)

A **fidelity palette** reproduces a widely used external theme **exactly**, so
Spacecraft Software tooling can meet a user who already works in it. Values are
copied verbatim; no token is substituted, deepened, or lifted to make a number
pass. The consequence is stated plainly: **a fidelity palette is not required to
satisfy §11's contrast guarantee, and neither registered one does.** The ratios
below are *the measurement, not a target*.

| Palette | Slug | Canvas | Body text | Worst pairings |
|---------|------|--------|-----------|----------------|
| Solarized Dark | `solarized-dark` | `base03` `#002B36` | `base0` 4.75:1 | 12 below 4.5:1; `structure`/`border` 2.97:1 and `error` 2.81:1 below 3:1 on `base02` |
| Solarized Light | `solarized-light` | `base3` `#FDF6E3` | `base00` **4.13:1 — under the AA floor** | `success` 2.97:1, `warning` 2.98:1, `focus` 2.93:1 below 3:1 — status cannot be signalled by color at all |

Rules:

- A project **MUST NOT** adopt a fidelity palette as its declared §11.4 palette.
§13 (WCAG 2.2 AA) and §18 (accessible mode) are unaffected by this section.
- Offered as a *user-selectable* theme, a conforming palette stays the default
and `steelbore-mono` (§11.1.1) stays the accessible-mode path.
- **No `-high-contrast` sibling.** Lifting the tokens would change the values the
palette exists to reproduce.
- Recorded in `steelbore.toml` under `meta.fidelity-palettes`, with
`conformance = "non-conforming"` in each theme's `rules` table.
- † marks a worst pairing of 3:1–4.5:1 (large text, icons, non-text UI only);
‡ marks below 3:1, which carries no legible use at any size.

Solarized (Ethan Schoonover, [ethanschoonover.com/solarized](https://ethanschoonover.com/solarized/))
defines one elevated tone per mode, so `surface-alt` shares `surface`.

---

Expand Down
1 change: 1 addition & 0 deletions spacecraft-standard-constitution/references/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ activation. The canonical record is the published Standard's own
`standard/CHANGELOG.md` (extracted from §1 of the document itself in v1.37); this
file mirrors it and must be synced to the same version and date.

- **v1.39 (2026-07-26):** **Three external palettes registered, and a new class for the two that cannot conform.** **§11.3.5 added — Tokyo Night**, verbatim from the upstream editor theme (canvas Night `#1A1B26`, `surface` the documented Storm background `#24283B`, `surface-alt` the Night `bg_dark` `#16161E`, darker than the canvas as §11.0.1 permits). No Spacecraft-derived substitutes were needed — every role token clears 4.5:1 on all three backgrounds (accent `#7AA2F7` 6.79:1, structure `#BB9AF7` 7.39:1, success `#9ECE6A` 9.35:1, error `#F7768E` 6.46:1, warning `#E0AF68` 8.55:1, focus `#7DCFFF` 9.96:1) — so it registers as a conforming alternate, with `tokyonight-high-contrast` lifting the two tokens below 7:1 on the canvas (`accent` → `#97B6F9` 8.44:1, `error` → `#F998AA` 8.22:1). The upstream comment tone `#565F89` (2.76:1) is recorded as not bindable to a role token. **§11.5 added — Fidelity Palettes (registered, non-conforming):** a class for palettes reproduced exactly from a widely used external theme so tooling can meet a user already working in it. **Solarized Dark** and **Solarized Light** are registered verbatim from Ethan Schoonover's Solarized with no token substituted, deepened, or lifted, and they do **not** satisfy §11's contrast guarantee — Solarized Dark carries twelve pairings below 4.5:1 plus `structure`/`border` (2.97:1) and `error` (2.81:1) below 3:1 on `base02`; Solarized Light's body text `base00` measures 4.13:1, under the AA floor, and `success` (2.97:1), `warning` (2.98:1), and `focus` (2.93:1) fall below 3:1, so status cannot be signalled by color at all. The printed ratios are the measurement, not a target. §11.5 bars adopting a fidelity palette as a project's §11.4 palette, keeps `steelbore-mono` as the accessible-mode path, ships no `-high-contrast` sibling, and marks the two failure bands † (3:1–4.5:1) and ‡ (below 3:1). Solarized defines one elevated tone per mode, so `surface-alt` shares `surface`. **§11.4.1 added — Reference Names:** every palette gains an additive reference name for prose (`steelbore-color-palette`, `steelboreclassic-color-palette`, `blue-color-palette`, `blackpinkpanther-color-palette`, `matrixgreen-color-palette`, `navywhite-color-palette`, `tokyonight-color-palette`, `solarizeddark-color-palette`, `solarizedlight-color-palette`), carried in `steelbore.toml` as each palette's `reference` key. Slugs are unchanged and remain the machine identifier, so no consumer breaks. `assets/steelbore.toml` → v3.1.0: 9 palettes, 17 themes, `meta.fidelity-palettes` added.
- **v1.38 (2026-07-26):** **§4.3 corrected — the symlink runs the other way.** v1.36 required the root `LICENSE` to be a symlink into `LICENSES/`, on the premise that GitHub follows symlinks for license detection. It does not: GitHub's detector reads **git blobs**, and a symlink's blob is the target *path*, not the license text. Measured after v1.36 landed, both `Standard` and `Construct` reported `NOASSERTION` — no identified license — where sibling repos with a regular `LICENSE` file report `GPL-3.0`. Inverted: the root `LICENSE` is a **regular file** holding the verbatim primary license text, and `LICENSES/<SPDX-id>.txt` for that license is a **symlink back to it** (`ln -s ../LICENSE LICENSES/GPL-3.0-or-later.txt`). `reuse` reads the working tree through the filesystem, so it follows the link and lints clean; GitHub gets a real blob. The text still exists exactly once, so v1.36's single-source-of-truth goal is preserved and two independently maintained copies remain non-compliant. Added: the root text MUST be a **canonical, unmodified** copy as published (FSF text for the GPL family, Creative Commons text for CC-BY-SA-4.0, or the choosealicense.com copy) — reflowed or Markdown-formatted texts defeat detection even when the wording is intact. Secondary licenses in `LICENSES/` stay regular files; only the primary license is linked. §5.2 `LICENSE` row and the §16 checklist bullet updated to match.
- **v1.37 (2026-07-26):** **Changelog extracted from the published Standard document.** The full version history moved out of §1 — Preamble into `CHANGELOG.md` at the root of the Standard repo, newest-first; the Preamble now carries a pointer to it plus the current version and date. All 37 entries (v1.0 → v1.36) were preserved verbatim. **No normative change** — every rule in force is unchanged, and this skill's encoding of the rules is untouched apart from the masthead and frontmatter version. The two changelogs (`standard/CHANGELOG.md` and this file) remain parallel records synced to the same version and date; the Standard's is canonical.
- **v1.36 (2026-07-26):** **§4.3:** the root `LICENSE` file is now **required** and MUST be a **symbolic link** to the project's primary license text in `LICENSES/` (e.g. `ln -s LICENSES/GPL-3.0-or-later.txt LICENSE`), upgrading the former "a root `LICENSE` MAY remain as a GitHub-detection pointer" allowance. GitHub reads a repository's license from a root `LICENSE` file while REUSE requires the verbatim texts under `LICENSES/`; the symlink satisfies both from one source of truth — Git stores it as mode `120000`, GitHub follows it for detection, and `reuse lint` stays clean. A duplicated regular-file `LICENSE` is **non-compliant**: the two copies drift, and a stale root `LICENSE` misreports the project's license to every GitHub visitor. The link target is the repository's **primary** license per §4.1.1 — `GPL-3.0-or-later` (or `AGPL-3.0-or-later` when network-facing) for a software-primary repo, `CC-BY-SA-4.0` for a document-primary repo. **§5.2:** `LICENSE` added as a required posture file in its own right, alongside `README.md`, `NOTICE.md`, `CONTRIBUTING.md`, and `LICENSES/`. **§16:** compliance-checklist §4.3 bullet extended with the symlink requirement.
Expand Down
Binary file modified steelbore-color-palette.skill
Binary file not shown.
Binary file modified steelbore-color-palette.zip
Binary file not shown.
51 changes: 32 additions & 19 deletions steelbore-color-palette/SKILL.md
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
---
name: steelbore-color-palette
description: >
Single source of truth for the Steelbore palette family (Standard §11
v1.35) — six palettes, their hex tokens, measured WCAG contrast matrices,
the §11.1 role-token contract, and every §11.1.1 accessibility variant.
Steelbore Modern is the default; Classic, Blue, BlackPinkPanther,
MatrixGreen, and NavyWhite are opt-in per §11.4. ALWAYS consult whenever a
color, hex value, palette token, theme, contrast ratio, or brand hue is
needed for ANY Spacecraft Software or Steelbore OS artifact — UI code, TUI
styling, editor/terminal themes, documents, diagrams, SVGs, or CSS — even
if the user never says "palette". Triggers: "Void Navy", "Plasma Orange",
"Orbit Navy", "Solar Lime", "Pearl Silver", "steelbore theme", "brand
colors", "high contrast variant", and any WCAG / EN 301 549 question about
Spacecraft colors. Consumer skills defer here for values — never restate
hexes from memory; read them here.
Single source of truth for the Steelbore palette family (Standard §11 v1.39)
— nine palettes, their hex tokens, WCAG contrast matrices, the §11.1
role-token contract, and every §11.1.1 accessibility variant. Modern is the
default; Classic, Blue, BlackPinkPanther, MatrixGreen, NavyWhite, and Tokyo
Night are opt-in (§11.4); Solarized Dark and Light are §11.5 fidelity
palettes — verbatim, non-conforming, never adoptable. ALWAYS consult whenever
a color, hex, palette token, theme, contrast ratio, or brand hue is needed for
ANY Spacecraft Software or Steelbore OS artifact — UI code, TUI styling,
editor/terminal themes, documents, diagrams, SVGs, or CSS — even if the user
never says "palette". Triggers: "Void Navy", "Plasma Orange", "Orbit Navy",
"Solar Lime", "Tokyo Night", "Solarized", "brand colors", "high contrast
variant", and any WCAG / EN 301 549 question about Spacecraft colors. Consumer
skills defer here for values — never restate hexes from memory.
license: GPL-3.0-or-later
maintainer: Mohamed Hammad <Mohamed.Hammad@SpacecraftSoftware.org>
website: https://Construct.SpacecraftSoftware.org/
Expand All @@ -25,7 +25,7 @@ website: https://Construct.SpacecraftSoftware.org/
**Copyright:** (C) 2026 Mohamed Hammad & Spacecraft Software | **License:** GPL-3.0-or-later
**Website:** [https://Construct.SpacecraftSoftware.org/](https://Construct.SpacecraftSoftware.org/)

> **Authority chain:** The Steelbore Standard §11 (v1.35) is the normative
> **Authority chain:** The Steelbore Standard §11 (v1.39) is the normative
> text; this skill is its canonical machine-readable mirror and the **only**
> place palette hexes should be read from. If this skill and the Standard ever
> disagree, the Standard governs — and this skill must be fixed. Consumer
Expand All @@ -35,7 +35,7 @@ website: https://Construct.SpacecraftSoftware.org/

## The family (§11)

Six palettes. **Steelbore Modern is the default** — use it unless the project
Nine palettes — seven conforming, two §11.5 fidelity. **Steelbore Modern is the default** — use it unless the project

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Sync the README catalogue with the expanded palette skill

This re-scopes the skill from six palettes/13 themes to nine palettes/17 themes, but the catalogue row in README.md:71 still advertises Standard v1.35, six palettes, and 13 themes. Users selecting skills from the catalogue therefore receive an obsolete description; update that row with the new palette and theme scope.

AGENTS.md reference: AGENTS.md:L27-L28

Useful? React with 👍 / 👎.

has declared an alternate in its `README.md` (§11.4). A project uses **exactly
one** palette; tokens are never mixed across palettes, because every contrast
guarantee is computed per-palette.
Expand All @@ -48,9 +48,22 @@ guarantee is computed per-palette.
| `steelbore-blackpinkpanther` | Steelbore BlackPinkPanther | `#141418` Core Black | Alternate (§11.3.2) |
| `steelbore-matrixgreen` | Steelbore MatrixGreen | `#0C1A2B` Circuit Navy | Alternate (§11.3.3) |
| `steelbore-navywhite` | Steelbore NavyWhite | `#E7E5E0` Pearl Silver | Alternate (§11.3.4) — **light canvas** |

Each has a `<slug>-high-contrast` sibling for §18.1 accessible mode.
`steelbore-mono` is palette-independent and serves them all.
| `tokyonight` | Tokyo Night | `#1A1B26` Night | Alternate (§11.3.5) — upstream theme, verbatim, no restricted pairings |
| `solarized-dark` | Solarized Dark | `#002B36` base03 | **Fidelity (§11.5) — non-conforming**, not adoptable |
| `solarized-light` | Solarized Light | `#FDF6E3` base3 | **Fidelity (§11.5) — non-conforming**, not adoptable; body text 4.13:1 |

Each conforming palette has a `<slug>-high-contrast` sibling for §18.1
accessible mode. The §11.5 fidelity palettes have **none** — lifting their
tokens would change the values they exist to reproduce, so `steelbore-mono`
Comment on lines +55 to +57

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Teach the theme factory to omit fidelity siblings

When a user asks the theme factory to emit either new Solarized theme, spacecraft-theme-factory/SKILL.md:87-95 and its checklist at lines 134-136 still unconditionally require a <slug>-high-contrast sibling and instruct the agent to read its lifts from the TOML. These fidelity palettes deliberately have no such theme, so the workflow will request or invent a nonexistent sibling instead of emitting only the palette plus steelbore-mono; update the factory's fidelity branch and rebuild both of its bundles.

AGENTS.md reference: AGENTS.md:L19-L22

Useful? React with 👍 / 👎.

(palette-independent) is the accessible path for them.

**Reference names (§11.4.1)** are additive prose labels; the slug above stays
the machine identifier: `steelbore-color-palette`,
`steelboreclassic-color-palette`, `blue-color-palette`,
`blackpinkpanther-color-palette`, `matrixgreen-color-palette`,
`navywhite-color-palette`, `tokyonight-color-palette`,
`solarizeddark-color-palette`, `solarizedlight-color-palette`. Each is carried
in the TOML as its palette's `reference` key.

**All values for every palette are in
[`assets/steelbore.toml`](assets/steelbore.toml) — read them there.** The
Expand Down Expand Up @@ -214,7 +227,7 @@ Colors ship with type: **Share Tech Mono** (headings) and **Inconsolata**

| File | What it is |
|------|------------|
| [`assets/steelbore.toml`](assets/steelbore.toml) | **The canonical contract for the whole family** — `[palettes.*]` for all six, `[themes.*]` (13 themes: six palettes, their `-high-contrast` siblings, and `steelbore-mono`) with measured per-background contrast tables and per-palette rules, plus `[typography]`. Copy or parse it; never retype hexes. |
| [`assets/steelbore.toml`](assets/steelbore.toml) | **The canonical contract for the whole family** — `[palettes.*]` for all nine, `[themes.*]` (17 themes: seven conforming palettes with their `-high-contrast` siblings, two §11.5 fidelity palettes, and `steelbore-mono`) with measured per-background contrast tables and per-palette rules, plus `[typography]`. Copy or parse it; never retype hexes. |
| [`assets/spacecraft.css`](assets/spacecraft.css) | The canonical Spacecraft HTML theme for `texi2any --css-include`. The copies in `standard/` and `spacecraft-texinfo-document/assets/` are synced derivatives — edit this one first, keep all three byte-identical. |

## Where application rules live
Expand Down
Loading
Loading