You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Spacecraft Software tooling, documentation, and CI pipelines target **four first-class shell environments**: **Nushell**, **Ion**, **Brush**, and **Bash**. All four are equally supported; none is deprecated or downgraded.
401
+
402
+
### §7.1 — Script Portability Policy
403
+
404
+
| Rule | Detail |
405
+
|------|--------|
406
+
| Default: POSIX-compatible | Shell scripts in source trees, CI pipelines, `Makefile` targets, and documentation examples **must** be written to the POSIX sh subset unless a shell-native feature is required. POSIX scripts run correctly in Bash and Brush without modification. |
407
+
| Nushell / Ion native variants when needed | When a task cannot be expressed cleanly in POSIX sh (structured data pipelines, typed parameters, Nushell modules), provide a Nushell (`.nu`) and/or Ion-native variant alongside the POSIX version. Do not force POSIX-only idioms that degrade the Nushell or Ion experience. |
408
+
| No Bashisms in shared scripts | Bash-only extensions (`[[ ]]`, `(( ))`, process substitution `<(...)`, `${var^^}`, indexed arrays) are prohibited in files intended for all four shells. Bash-specific scripts are permitted only when explicitly scoped (e.g., `#!/usr/bin/env bash` shebang, clearly labeled). |
409
+
| Graceful shell detection | Tools that need runtime shell detection must inform the user or degrade gracefully rather than silently failing in non-Bash environments. |
410
+
411
+
---
412
+
413
+
## §8 — Privacy-Friendly Application (PFA) Policy
399
414
400
415
Every Spacecraft Software application must satisfy **all three** PFA requirements:
401
416
@@ -410,7 +425,7 @@ or networking, verify all three PFA requirements are met.
410
425
411
426
---
412
427
413
-
## §8 — Key Bindings
428
+
## §9 — Key Bindings
414
429
415
430
All interactive applications must support **both**:
416
431
@@ -421,7 +436,7 @@ All interactive applications must support **both**:
421
436
422
437
---
423
438
424
-
## §9 — Spacecraft Software Color Palette (WCAG-Compliant)
439
+
## §10 — Spacecraft Software Color Palette (WCAG-Compliant)
425
440
426
441
The **only** permitted colors for Spacecraft Software interfaces and documents:
427
442
@@ -440,7 +455,7 @@ No alternative background is permitted. This is non-negotiable.
440
455
For document/file generation → load the `spacecraft-document-format` skill.
441
456
For IDE/terminal themes → load the `spacecraft-theme-factory` skill.
| Date format | ISO 8601 only: `YYYY-MM-DD`|`2026-03-08`|
504
519
| Time format | 24-hour only: `HH:MM:SS` — AM/PM is **never** permitted |`14:30:00`|
505
520
| Timestamp | Combined ISO 8601 UTC: `YYYY-MM-DDTHH:MM:SSZ`|`2026-03-08T14:30:00Z`|
506
-
| Timezone |**UTC Z is the default and preferred primary** for general-purpose, cross-system, and machine-readable timestamps. A project whose core domain is inherently local-time-bound (e.g., solar/prayer-time calculations) may declare local time as its primary record instead — a documented exception, not a free choice. See §12.2 and §12.2.1 |`Z` not `+00:00`|
521
+
| Timezone |**UTC Z is the default and preferred primary** for general-purpose, cross-system, and machine-readable timestamps. A project whose core domain is inherently local-time-bound (e.g., solar/prayer-time calculations) may declare local time as its primary record instead — a documented exception, not a free choice. See §13.2 and §13.2.1 |`Z` not `+00:00`|
507
522
| Duration | ISO 8601 duration format only |`PT1H30M` not "1h 30m" |
508
523
| Units | Metric (SI) primary; imperial in parentheses only if locale requires |`100 km (62 mi)`|
509
524
510
525
Apply these conventions to all generated code, documentation, comments, and any
511
526
user-facing strings. Never output AM/PM time, non-ISO dates, or imperial-primary units.
512
527
513
-
### §12.2 — UTC Z Timezone Policy
528
+
### §13.2 — UTC Z Timezone Policy
514
529
515
530
**UTC Z is the default and preferred timezone for stored, transmitted, logged,
516
531
and committed timestamps across Spacecraft Software projects.** It is the
@@ -522,11 +537,11 @@ as a secondary, human-convenience field — but UTC Z remains the authoritative
522
537
record.
523
538
524
539
This is a strong default, not a universal mandate forced onto every domain
525
-
regardless of fit — §12.2.1 documents the exception that lets a project whose
540
+
regardless of fit — §13.2.1 documents the exception that lets a project whose
526
541
domain is genuinely local-time-bound use local time as its primary record instead.
527
542
528
543
**Rules for projects under the UTC Z default — apply unless a project has filed
529
-
the §12.2.1 exception:**
544
+
the §13.2.1 exception:**
530
545
531
546
| Rule | Detail |
532
547
|------|--------|
@@ -537,7 +552,7 @@ the §12.2.1 exception:**
537
552
| Commit timestamps use UTC |`GIT_COMMITTER_DATE` and `GIT_AUTHOR_DATE` must be UTC when set programmatically. |
538
553
| File metadata written by Spacecraft Software tools | mtime/ctime written by Spacecraft Software tools must be UTC-sourced. |
-[ ]**§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
760
781
-[ ]**§6.1** POSIX-compliant CLI/system tools
761
-
-[ ]**§7** PFA: no tracking, minimal permissions, local storage default
-[ ]**§9** Spacecraft Software color palette used; Void Navy background mandatory; new apps expose colors via a named `Steelbore` theme (§9.1) — no bare hex literals in UI logic
764
-
-[ ]**§10** FOSS-licensed fonts only (Share Tech Mono / Inconsolata)
765
-
-[ ]**§11** Material Design UI/UX; WCAG 2.1 AA verified
766
-
-[ ]**§12** ISO 8601 dates; 24h time; UTC Z is the default primary timestamp (companion local time with UTC offset permitted, never a replacement) — unless the project filed the §12.2.1 domain exception for inherently local-time-bound data; ISO 8601 durations; metric units
767
-
-[ ]**§13** Attribution present: maintainer name (`Mohamed Hammad`), contact (`Mohamed.Hammad@SpacecraftSoftware.org`), and project URL in `--version` / README / About
768
-
-[ ]**§13.3** Third-party work credited in `CREDITS.md` at project/skill root when triggers apply; deeper `references/ATTRIBUTION.md` present where reference content is adapted from external sources
782
+
-[ ]**§7** Shell scripts are POSIX-compatible; Nushell/Ion native variants provided where shell-native idioms are required; no Bashisms in shared scripts
783
+
-[ ]**§8** PFA: no tracking, minimal permissions, local storage default
-[ ]**§10** Spacecraft Software color palette used; Void Navy background mandatory; new apps expose colors via a named `Steelbore` theme (§10.1) — no bare hex literals in UI logic
786
+
-[ ]**§11** FOSS-licensed fonts only (Share Tech Mono / Inconsolata)
787
+
-[ ]**§12** Material Design UI/UX; WCAG 2.1 AA verified
788
+
-[ ]**§13** ISO 8601 dates; 24h time; UTC Z is the default primary timestamp (companion local time with UTC offset permitted, never a replacement) — unless the project filed the §13.2.1 domain exception for inherently local-time-bound data; ISO 8601 durations; metric units
789
+
-[ ]**§14** Attribution present: maintainer name (`Mohamed Hammad`), contact (`Mohamed.Hammad@SpacecraftSoftware.org`), and project URL in `--version` / README / About
790
+
-[ ]**§14.3** Third-party work credited in `CREDITS.md` at project/skill root when triggers apply; deeper `references/ATTRIBUTION.md` present where reference content is adapted from external sources
769
791
-[ ]**§6.3** All commits to Spacecraft Software Git remotes cryptographically signed with the `Mohamed.Hammad@SpacecraftSoftware.org` key and showing "Verified" on the hosting platform; rewrites preserve signatures; programmatic and assistant-driven commits signed too
770
792
771
793
If any item is not applicable to the current artifact type (e.g., color palette
@@ -775,12 +797,13 @@ for a pure Rust library), note it as N/A rather than silently skipping it.
0 commit comments