Skip to content

Commit e44f5f4

Browse files
feat(standard): require explicit notation for applied/disabled compiler flags — v1.31 (#10)
Extends the §3.2 compiler optimization rule symmetrically: previously only disabled flags required documentation; now both applied flags and disabled flags (with reason) must be explicitly noted — e.g. a comment in the build file or a build-time message. The stated purpose is visibility: full flag state at compile time makes build errors traceable to specific flags. Compliance-checklist §3.2 bullet updated to include the notation requirement. Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
1 parent 9faaa4e commit e44f5f4

2 files changed

Lines changed: 41 additions & 17 deletions

File tree

The_Steelbore_Standard.md

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,14 @@ concerns.
2323

2424
## Changelog
2525

26+
- **v1.31 (2026-06-24):** **§3.2** compiler optimization flag
27+
documentation rule extended — previously only *disabled* flags
28+
required documentation; now **both applied and disabled** flags must
29+
be explicitly noted (comment in build file or build-time message).
30+
Symmetrical notation makes the full flag state visible at compile time
31+
and makes build errors traceable to specific flags.
32+
Compliance-checklist §3.2 bullet updated.
33+
2634
- **v1.30 (2026-06-24):** **§3.2** reframed — modern hardware
2735
universally provides multi-core/multi-thread capability; harnessing
2836
that concurrency is the primary performance lever. Concurrency is an
@@ -458,13 +466,16 @@ approach outperforms or is safer, it must be chosen and the trade-off
458466
documented.
459467

460468
- Release builds should use CPU-optimized flags — `-march=native`, LTO,
461-
PGO — **where the toolchain and target support them reliably.** Any
462-
such flag known to break or destabilize builds on a given platform,
463-
toolchain, or linker configuration (e.g., LTO under certain NixOS,
464-
cross-compilation, or static-linking setups) MUST be disabled and the
465-
reason documented. Stability (Priority 1) outranks Performance
466-
(Priority 2), so a build-breaking or instability-inducing optimization
467-
always yields — never ship a broken build for the sake of a flag.
469+
PGO — **where the toolchain and target support them reliably.**
470+
**Every applied flag must be explicitly noted** (e.g., a comment in
471+
the build file or a build-time message); **every disabled flag and the
472+
reason for disabling must be equally noted.** Visible flag state at
473+
compile time makes errors traceable to a specific flag. Any flag known
474+
to break or destabilize a build on a given platform, toolchain, or
475+
linker configuration (e.g., LTO under certain NixOS,
476+
cross-compilation, or static-linking setups) MUST be disabled.
477+
Stability (Priority 1) outranks Performance (Priority 2) — never ship
478+
a broken build for the sake of a flag.
468479

469480
- Benchmarking is **mandatory** before and after any optimization work;
470481
regressions must be documented and justified — and it is the evidence
@@ -1262,7 +1273,8 @@ Before finalising **any** Spacecraft Software artifact, mentally verify:
12621273
- [ ] **§3.2** Performance: concurrency considered throughout
12631274
architecture design; adopted where it advances performance, abandoned
12641275
where it degrades performance or compromises Stability; serial
1265-
trade-off documented; benchmarking before/after
1276+
trade-off documented; compiler optimization flags applied/disabled
1277+
with explicit notation; benchmarking before/after
12661278

12671279
- [ ] **§3.3** Hardened security; PQC readiness addressed
12681280

The_Steelbore_Standard.texi

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55
@setfilename The_Steelbore_Standard.info
66
@documentencoding UTF-8
77
@documentlanguage en
8-
@settitle The Steelbore Standard 1.30
8+
@settitle The Steelbore Standard 1.31
99
@c %**end of header
1010

11-
@set VERSION 1.30
11+
@set VERSION 1.31
1212
@set UPDATED 2026-06-24
1313
@set SUBDOMAIN https://Standard.SpacecraftSoftware.org/
1414

@@ -106,6 +106,14 @@ are separate concerns.
106106
@section Changelog
107107
@itemize
108108
@item
109+
@strong{v1.31 (2026-06-24):} @strong{§3.2} compiler optimization flag
110+
documentation rule extended --- previously only @emph{disabled} flags
111+
required documentation; now @strong{both applied and disabled} flags must
112+
be explicitly noted (comment in build file or build-time message).
113+
Symmetrical notation makes the full flag state visible at compile time
114+
and makes build errors traceable to specific flags.
115+
Compliance-checklist §3.2 bullet updated.
116+
@item
109117
@strong{v1.30 (2026-06-24):} @strong{§3.2} reframed --- modern hardware
110118
universally provides multi-core/multi-thread capability; harnessing that
111119
concurrency is the primary performance lever. Concurrency is an
@@ -670,12 +678,15 @@ trade-off documented.
670678
@item
671679
Release builds should use CPU-optimized flags --- @code{-march=native},
672680
LTO, PGO --- @strong{where the toolchain and target support them
673-
reliably.} Any such flag known to break or destabilize builds on a given
674-
platform, toolchain, or linker configuration (e.g., LTO under certain
675-
NixOS, cross-compilation, or static-linking setups) MUST be disabled and
676-
the reason documented. Stability (Priority 1) outranks Performance
677-
(Priority 2), so a build-breaking or instability-inducing optimization
678-
always yields --- never ship a broken build for the sake of a flag.
681+
reliably.} @strong{Every applied flag must be explicitly noted} (e.g., a
682+
comment in the build file or a build-time message); @strong{every
683+
disabled flag and the reason for disabling must be equally noted.}
684+
Visible flag state at compile time makes errors traceable to a specific
685+
flag. Any flag known to break or destabilize a build on a given platform,
686+
toolchain, or linker configuration (e.g., LTO under certain NixOS,
687+
cross-compilation, or static-linking setups) MUST be disabled. Stability
688+
(Priority 1) outranks Performance (Priority 2) --- never ship a broken
689+
build for the sake of a flag.
679690
@item
680691
Benchmarking is @strong{mandatory} before and after any optimization
681692
work; regressions must be documented and justified --- and it is the
@@ -2118,7 +2129,8 @@ robust error handling, fault tolerance, and test-verified
21182129
@strong{§3.2} Performance: concurrency considered throughout
21192130
architecture design; adopted where it advances performance, abandoned
21202131
where it degrades performance or compromises Stability; serial
2121-
trade-off documented; benchmarking before/after
2132+
trade-off documented; compiler optimization flags applied/disabled with
2133+
explicit notation; benchmarking before/after
21222134
@item
21232135
@strong{§3.3} Hardened security; PQC readiness addressed
21242136
@item

0 commit comments

Comments
 (0)