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
1 change: 0 additions & 1 deletion LICENSE

This file was deleted.

675 changes: 675 additions & 0 deletions LICENSE

Large diffs are not rendered by default.

232 changes: 0 additions & 232 deletions LICENSES/GPL-3.0-or-later.txt

This file was deleted.

1 change: 1 addition & 0 deletions LICENSES/GPL-3.0-or-later.txt
Binary file modified spacecraft-standard-constitution.skill
Binary file not shown.
Binary file modified spacecraft-standard-constitution.zip
Binary file not shown.
47 changes: 29 additions & 18 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.37 (§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
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
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.37 | **Date:** 2026-07-26 | **Author:** Mohamed Hammad
**Version:** 1.38 | **Date:** 2026-07-26 | **Author:** Mohamed Hammad

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 Sign the commit and add the assistant attribution trailer

The reviewed commit object has no gpgsig header (git verify-commit e599e12bc91050f01d9866aa4f37350956832847 exits with status 1), and its assistant-generated message lacks the required Co-Authored-By: Claude … trailer. Recreate the proposed commit with configured signing and the attribution trailer before merging so its provenance satisfies the repository requirements.

AGENTS.md reference: AGENTS.md:L25-L26

Useful? React with 👍 / 👎.

**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 @@ -276,24 +276,35 @@ and the correct comment syntax for the file type.)
- **`LICENSES/` directory:** verbatim text of every license used lives in
`LICENSES/<SPDX-id>.txt` (e.g., `LICENSES/GPL-3.0-or-later.txt`,
`LICENSES/AGPL-3.0-or-later.txt`, plus any upstream licenses per §4.2).
- **Root `LICENSE` is a symbolic link.** GitHub reads a repository's license from a
root `LICENSE` file; REUSE requires the verbatim texts under `LICENSES/`. Both are
satisfied with a single source of truth: the root `LICENSE` MUST be a symbolic link
to the project's primary license text inside `LICENSES/` — never a second,
duplicated copy of the text.
- **Root `LICENSE` holds the text; `LICENSES/` links to it.** GitHub reads a
repository's license from a root `LICENSE` file; REUSE requires the verbatim texts
under `LICENSES/`. Both are satisfied from a single source of truth: the root
`LICENSE` is a **regular file** carrying the verbatim text of the project's primary
license, and `LICENSES/<SPDX-id>.txt` for that same license is a **symbolic link**
to it. Every project MUST ship both.
Comment on lines +282 to +284

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 Correct the Grok README after reversing the symlink

This new layout makes the existing license text in grok-skills/README.md:93-94 false: it still says the root LICENSE is a symlink to LICENSES/GPL-3.0-or-later.txt, while this commit makes the root file regular and the LICENSES/ entry the symlink. Update that consumer-facing documentation in the same change so the repository does not publish mutually contradictory §4.3 instructions.

Useful? React with 👍 / 👎.


```sh
ln -s LICENSES/GPL-3.0-or-later.txt LICENSE
git add LICENSE
cp <canonical license text> LICENSE

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 Replace the non-runnable license copy placeholder

When an agent follows this fenced sh recipe literally, the shell parses <canonical and text> as input/output redirections and executes cp license text, rather than copying a canonical license into LICENSE; if a file named canonical exists, it can also truncate the existing LICENSE. Use a concrete one-argument source-path placeholder or an explicit download command so the authoritative migration procedure is safe to execute.

Useful? React with 👍 / 👎.

ln -s ../LICENSE LICENSES/GPL-3.0-or-later.txt
git add LICENSE LICENSES/GPL-3.0-or-later.txt
```

Git stores the result as a symlink (mode `120000`), GitHub follows it for license
detection, and `reuse lint` stays clean. 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. 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 direction matters. `reuse` reads the working tree through the filesystem, so it
follows the link and lints clean. GitHub's detector reads **git blobs**, and a
symlink's blob is the target *path*, not the license text — so a symlinked root
`LICENSE` is reported as `NOASSERTION` and the project shows no identified license.
Any secondary license in `LICENSES/` (§4.2 upstream texts, a differently-licensed
tooling class per §4.1.1) stays a regular file; only the primary license is linked.

The root text MUST be a **canonical, unmodified** copy of the license as published
(the FSF text for the GPL family, the Creative Commons text for CC-BY-SA-4.0, or the
corresponding [choosealicense.com](https://choosealicense.com) copy). Reflowed,
Markdown-formatted, or otherwise reformatted license texts defeat GitHub's detection
even when the wording is intact.

Two independently maintained copies of the same license text are **non-compliant**:
they drift, and a stale root `LICENSE` misreports the project's license to every
GitHub visitor.
- **CI gate:** `reuse lint` MUST pass before shipping.

When writing or reviewing any file, confirm REUSE coverage; when generating a new file,
Expand Down Expand Up @@ -335,7 +346,7 @@ root, derived from the canonical Spacecraft Software templates:
| `NOTICE.md` | Full no-warranty / no-liability statement; defers to the project's GPL/AGPL license (§4.1) for binding terms |
| `CONTRIBUTING.md` | Contribution scope, PR-acceptance discretion, sign-off, security reporting, license-of-contributions |
| `LICENSES/` | REUSE license directory (§4.3): verbatim text of every license used (`GPL-3.0-or-later` or `AGPL-3.0-or-later`, plus any upstream licenses per §4.2). |
| `LICENSE` | Symbolic link to the primary license text in `LICENSES/` (§4.3) — e.g. `ln -s LICENSES/GPL-3.0-or-later.txt LICENSE`. Not a duplicated copy of the text. |
| `LICENSE` | Verbatim, canonical text of the project's primary license, as a regular file (§4.3). `LICENSES/<SPDX-id>.txt` for that license is a symbolic link back to it — `ln -s ../LICENSE LICENSES/GPL-3.0-or-later.txt` — so the text exists once. |

Customize only the project name, scope, and any project-specific carve-outs.

Expand Down Expand Up @@ -1268,7 +1279,7 @@ Before finalising **any** Spacecraft Software artifact, mentally verify:
- [ ] **§3.3** Hardened security; PQC readiness addressed
- [ ] **§4.1** License is `GPL-3.0-or-later` or `AGPL-3.0-or-later` (AGPL for network-facing; per §4.1)
- [ ] **§4.2** Upstream copyright notices, license texts, and `NOTICE`/`AUTHORS` preserved verbatim; upstream licenses shipped in `LICENSES/`
- [ ] **§4.3** REUSE-compliant: two-tag SPDX header (`SPDX-FileCopyrightText` + `SPDX-License-Identifier`) on every file (or `.license` sidecar / `REUSE.toml` entry); `LICENSES/` directory present; root `LICENSE` is a symbolic link into `LICENSES/` (never a duplicated copy); `reuse lint` passes
- [ ] **§4.3** REUSE-compliant: two-tag SPDX header (`SPDX-FileCopyrightText` + `SPDX-License-Identifier`) on every file (or `.license` sidecar / `REUSE.toml` entry); `LICENSES/` directory present; root `LICENSE` carries the canonical license text and `LICENSES/<SPDX-id>.txt` symlinks to it (never two independent copies); `reuse lint` passes
- [ ] **§5** Project Posture: README/NOTICE/CONTRIBUTING present; default personal-hobby stance applied; general-use carve-outs declared in project README
- [ ] **§5.5** Package distribution: `packaging/guix.scm`, `packaging/default.nix`, and `packaging/PKGBUILD` present, buildable, and carrying correct version + SHA-256 checksum (in each package manager's native format) before any release tag is pushed
- [ ] **§6.1** POSIX-compliant CLI/system tools
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.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.
- **v1.35 (2026-07-25):** **§11 becomes a palette family.** The single canonical palette is replaced by a registry of six. The v1.34 Steelbore 2 palette is now named **Steelbore Modern** and remains the default and canonical binding; the v1.33 six-token palette is **un-retired** and preserved as **Steelbore Classic** (§11.2), reversing the v1.34 retirement — which now stands only as a version-history note. **§11.3 added:** four alternates, each anchored on two fixed colors and verified against its own canvas and surfaces — **Steelbore Blue** (Orbit Navy `#0A1024` / Electric Blue `#0066FF`; Electric Blue is †restricted at 3.91:1 to large text, icons, and non-text UI), **Steelbore BlackPinkPanther** (Core Black `#141418` / Plasma Magenta `#E445FF`; no restricted pairings), **Steelbore MatrixGreen** (Circuit Navy `#0C1A2B` / Solar Lime `#B6FF3B`; its `surface-alt` Ambient Black `#05070A` is darker than the canvas, which §11.0.1 permits), and **Steelbore NavyWhite** (Pearl Silver `#E7E5E0` / Lunar Navy `#111827`) — the family's first **light-canvas** palette, whose high-contrast variant *darkens* rather than lightens and whose accent/status hues are deepened from the source tints to clear 4.5:1. **§11.1 generalized:** the eleven role tokens are now the contract for every palette, so application logic is palette-agnostic (Classic keeps its legacy six-role contract and defines no surface class). **§11.1.1 generalized:** every palette ships a `<slug>-high-contrast` sibling; `steelbore-mono` is palette-independent and serves all. **§11.4 added:** palette-selection rules — Modern is the default and needs no declaration, a project adopts exactly one palette and declares it in `README.md`, tokens are never mixed across palettes, and the canvas is mandatory within its palette. The Void Navy rule is accordingly scoped to Modern rather than stated globally. §16 checklist §11 bullet updated. All 13 themes, their per-background matrices, and per-palette rules ship in the `steelbore-color-palette` skill's `assets/steelbore.toml`.
Expand Down
Loading