Skip to content

feat(standard): §6.4 authorized contribution targets, §5.6 skill packaging — v1.40 - #19

Merged
UnbreakableMJ merged 1 commit into
mainfrom
feat/v1.40-contribution-targets-skill-packaging
Jul 27, 2026
Merged

feat(standard): §6.4 authorized contribution targets, §5.6 skill packaging — v1.40#19
UnbreakableMJ merged 1 commit into
mainfrom
feat/v1.40-contribution-targets-skill-packaging

Conversation

@UnbreakableMJ

Copy link
Copy Markdown
Contributor

What

Two normative additions at v1.40 (2026-07-27).

§6.4 — Authorized Contribution Targets (Non-Negotiable)

§6.3 has always said how a commit must be signed on "a Spacecraft Software-controlled Git remote" without ever defining that set, so nothing in the standard stopped a script, a CI job, or an assistant-driven session from pushing a branch or opening a pull request against a third-party repository.

§6.4 names the authorized namespaces — github.com/Spacecraft-Software and github.com/UnbreakableMJ, with a future Spacecraft Software-controlled host (Gitway) inheriting the same standing — and makes every other destination outbound and default-deny:

  • Automation never initiates an outbound contribution; authorization for one does not carry to the next task, session, or repository.
  • Only Mohamed Hammad, explicitly and per contribution, may authorize one (§5.4).
  • Not git-only — package registries under namespaces we do not control (crates.io, npm, PyPI, AUR, Nixpkgs, Guix, Flathub) and external issue trackers or mailing lists are covered.
  • Forks stay free. Turning a fork branch into an upstream PR is the gated act, not the fork.
  • §4.2's carry-the-patch-in-tree route is preferred to upstreaming.
  • The free-software/GNU posture (§1) yields the identity clauses (§2, §11–§12, §15) but not this one.

The tooling already assumed this rule: construct-cli's ship command hard-codes EXPECTED_REMOTE = "Spacecraft-Software/Construct". Now the standard says it, so it applies beyond one command.

§5.6 — Skill Packaging Requirements

A SKILL.md frontmatter description over 1024 characters is rejected at install time — after the packing work is done. §5.6 caps it at 1000 rendered characters (a deliberate 24-char margin), pins down what rendered means for YAML folded scalars (description: > joins wrapped lines with single spaces and keeps a trailing newline, so raw line lengths are not the measurement), and requires the cap to be machine-enforced in the skill repo's CI and in the command that produces the bundle. A developer-installed git hook is opt-in per clone and is explicitly not the gate.

§16 gains a checklist bullet for each section.

Verification

  • makeinfo --no-split The_Steelbore_Standard.texi → zero errors, zero warnings
  • .md companion regenerated via the DocBook route; both multitables render as GFM tables
  • reuse lint → compliant
  • .github/validate-configs.py → 3 config files, 0 failed
  • Masthead, @set VERSION, and @set UPDATED all read 1.40 / 2026-07-27

Follow-ups (separate PRs)

  • Construct: sync spacecraft-standard-constitution SKILL.md + references/CHANGELOG.md to v1.40
  • Construct: implement the §5.6 gate — CI step over every SKILL.md, plus a pre-pack check in construct ship

🤖 Generated with Claude Code

…aging — v1.40

§6.3 says how a commit must be signed on "a Spacecraft Software-controlled
Git remote" but never defines that set, so nothing stopped a script, a CI
job, or an assistant-driven session from pushing a branch or opening a PR
against a third-party repository. §6.4 names the authorized namespaces
(Spacecraft-Software, UnbreakableMJ, plus any future Spacecraft
Software-controlled host) and makes every other destination outbound and
default-deny. Automation never initiates; only the maintainer, explicitly
and per contribution, may authorize one. Package registries and external
issue trackers are covered too. Forks under our namespaces stay free —
turning a fork branch into an upstream PR is the gated act. §4.2's
carry-the-patch route is preferred to upstreaming, and the GNU posture
yields the identity clauses but not this one.

§5.6 caps a SKILL.md frontmatter description at 1000 rendered characters
against the loader's hard 1024 limit, pins down what "rendered" means for
YAML folded scalars, and requires the cap to be machine-enforced in CI and
in the command that produces the bundle — a local git hook is opt-in per
clone and is not the gate.

§16 gains a checklist bullet for each section.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0081ced223

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +981 to +983
@tab Bots, CI pipelines, scripted workflows, and assistant-driven
sessions MUST NEVER open an outbound contribution. Authorization for one
contribution does not carry to the next task, session, or repository.

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 Resolve whether authorized automation may submit

When the maintainer explicitly asks a bot, script, CI job, or assistant session to make a particular outbound submission, this absolute MUST NEVER open rule forbids the action, while the immediately following maintainer-only exception permits an explicitly authorized submission and the session-scoping sentence implies such authorization can exist. This makes the non-negotiable policy ambiguous at exactly the point automation must enforce it; specify either that automation may execute a per-contribution authorization or that the exception is restricted to submissions performed directly by the maintainer.

Useful? React with 👍 / 👎.

Comment on lines +857 to +861
@tab The cap MUST be checked by an automated gate that runs both in the
skill repository's CI on every pull request and push to the default
branch, and in whatever command produces the distributable bundle. A
developer-installed git hook is a convenience, never the gate --- hooks
are opt-in per clone and cannot be relied on.

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 Align the automated gates with the commit prohibition

When an over-limit description is committed locally or pushed only to a feature branch without opening a pull request, neither required gate runs: CI is mandated only for pull requests and default-branch pushes, and the bundle check occurs later. The subsequent MUST NOT be ... committed rule therefore is not machine-enforced as this section claims; either require validation of every pushed/new commit through an enforceable mechanism or narrow the prohibition to merging, packing, and publishing.

Useful? React with 👍 / 👎.

@UnbreakableMJ
UnbreakableMJ merged commit 390e9e7 into main Jul 27, 2026
1 check passed
@UnbreakableMJ
UnbreakableMJ deleted the feat/v1.40-contribution-targets-skill-packaging branch July 27, 2026 21:58
UnbreakableMJ added a commit to Spacecraft-Software/Construct that referenced this pull request Jul 27, 2026
…ll packaging — v1.40 (#21)

Mirrors Spacecraft-Software/Standard#19 at the same version and date.

§6.4 names the authorized publication namespaces (Spacecraft-Software,
UnbreakableMJ, plus any future Spacecraft Software-controlled host) and makes
every other destination outbound and default-deny. Automation never
initiates; only the maintainer, explicitly and per contribution, may
authorize one. Package registries and external issue trackers are covered.
Forks under our namespaces stay free — turning a fork branch into an
upstream PR is the gated act. The GNU posture yields the identity clauses
but not this one.

§5.6 caps a SKILL.md frontmatter description at 1000 rendered characters
against the loader's hard 1024 limit, defines "rendered" for YAML folded
scalars, and requires the cap to be machine-enforced in CI and in the
command that produces the bundle rather than by an opt-in git hook.

The frontmatter description is re-cut to 973 chars under the new §5.6 cap:
§6.4 and §5.6 added to the encoded-sections list, §8 Texinfo and the
redundant "§11 palette family" dropped. §16 gains a bullet for each section.

Co-authored-by: Claude Opus 5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant