Skip to content

Commit 686f15d

Browse files
UnbreakableMJclaude
andcommitted
docs+cli: purge stale SFRS acronym for the CLI Standard
SFRS was a mistaken acronym that only ever meant "a feature (description/specification)". Reword every reference across docs and zamak-cli source to name the Spacecraft Software Dual-Mode Self-Documenting CLI Standard (v1.0.0) in full, or "the CLI Standard" in shorthand, per construct commit a301baf's precedent. Ticket IDs SFRS-1..17 become CLISTD-1..17 (TODO.md, CONTRIBUTING.md, sbom.rs). cargo check -p zamak-cli --tests passes clean after the sfrs_conformance.rs -> cli_standard_conformance.rs rename and the matching test-fn rename. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
1 parent bbf0c8b commit 686f15d

23 files changed

Lines changed: 84 additions & 82 deletions

AGENTS.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,12 @@ OpenAI Codex CLI, Cursor, Aider, and similar tools.
6363
## CLI conformance
6464

6565
Every host CLI binary (`zamak-cli` today, future ones the same)
66-
must conform to `SS-SFRS-SPACECRAFT-SOFTWARE-CLI v1.0.0`:
66+
must conform to the Spacecraft Software Dual-Mode Self-Documenting
67+
CLI Standard (v1.0.0):
6768

6869
- `--json` / `--format` / structured JSON error envelope on stderr
6970
- `schema` and `describe` sub-commands
70-
- Exit codes 0/1/2/3/4/5 as documented in the SFRS
71+
- Exit codes 0/1/2/3/4/5 as documented in the CLI Standard
7172
- `--dry-run` on every write command, idempotent re-runs
7273
- `AI_AGENT` / `AGENT` / `CI` env detection
7374
- `NO_COLOR` / `FORCE_COLOR` / `CLICOLOR` precedence

CHANGELOG.md

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,8 @@ for the full 4-arch UEFI asset set.
107107
plus one `ZAMAK_TSC_MHZ=<n>` discovered via CPUID 0x16
108108
(`unknown` when unavailable, as in QEMU). New
109109
`zamak-cli bench parse-serial [--tsc-mhz <mhz>] [<path>]`
110-
sub-command ingests a captured UEFI serial log and emits an
111-
SFRS envelope whose `data.phases[]` carries `{phase, tsc,
110+
sub-command ingests a captured UEFI serial log and emits the
111+
response envelope whose `data.phases[]` carries `{phase, tsc,
112112
delta_cycles[, delta_ns]}` per checkpoint. With this, the
113113
bare-metal perf leg of M6-3 is a one-shot: capture
114114
`-serial` on real hardware, feed through the parser, compare
@@ -353,7 +353,7 @@ is isolated to a single instruction and documented in M1-16.
353353

354354
## [0.7.0] - 2026-04-21
355355

356-
First cut of the dual-mode host CLI (SFRS v1.0.0), multi-arch UEFI
356+
First cut of the dual-mode host CLI (the CLI Standard v1.0.0), multi-arch UEFI
357357
paging for AArch64 + RISC-V 64, and the coverage / Miri / FreeBSD
358358
compliance bundle. M0–M5 functionally complete; M6-1 blocked on
359359
rustc upstream `loongarch64-unknown-uefi` support; M6-3 awaits
@@ -400,13 +400,13 @@ bare-metal perf validation.
400400
- `zamak-uefi::paging` — arch-dispatching `build(boot_services, kernel) -> u64` that returns the per-arch root-table physical address (PML4 on x86, L0 on AArch64, Sv48 root on RISC-V, PGDH on LoongArch)
401401
- `zamak-uefi::main` refactored: deleted `stub_entry` and all `#[cfg(target_arch = "x86_64")]` gates on the shared boot path. Single arch-neutral entry point now dispatches through `paging::build` and `handoff::jump_to_kernel`. `cargo check --target aarch64-unknown-uefi` and `riscv64gc-unknown-none-elf` both clean.
402402
- `Permissions::KERNEL_LOAD_AREA` — RWX coarse preset for kernel-image mapping parity across arches until per-PHDR splitting is implemented
403-
- **SFRS dual-mode CLI**`zamak-cli` now conforms to `SS-SFRS-SPACECRAFT-SOFTWARE-CLI v1.0.0`:
403+
- **Dual-mode CLI (CLI Standard)**`zamak-cli` now conforms to the Spacecraft Software Dual-Mode Self-Documenting CLI Standard (v1.0.0):
404404
- Global flags: `--json`, `--format <human|json|jsonl|yaml|csv|explore>`, `--fields`, `--dry-run`, `--verbose`, `--quiet`, `--color`, `--no-color`, `--yes`, `--force`, `--print0`
405405
- JSON envelope `{metadata:{tool,version,command,timestamp}, data:...}` via `OutputPolicy::emit`
406406
- Structured error envelope on stderr (`error.code/exit_code/message/hint/timestamp/command/docs_url/io_kind`) with stable `UPPER_SNAKE_CASE` codes
407-
- Expanded exit-code map: 0/1/2/3/4/5 per SFRS §3.2
407+
- Expanded exit-code map: 0/1/2/3/4/5 per the CLI Standard §3.2
408408
- `zamak schema [<command>]` — JSON Schema Draft 2020-12 introspection
409-
- `zamak describe` — capability manifest (SFRS §6.2)
409+
- `zamak describe` — capability manifest (CLI Standard §6.2)
410410
- `zamak completions <bash|zsh|fish|nushell>` — shell completion scripts
411411
- Agent-env detection (`AI_AGENT` / `AGENT` / `CI` / `TERM=dumb`) forces json + no-color + no-TUI + no-prompts
412412
- Color policy: NO_COLOR / FORCE_COLOR / CLICOLOR / `--color` precedence per §4.4
@@ -416,7 +416,7 @@ bare-metal perf validation.
416416
- UTF-8 without BOM throughout; ANSI escapes suppressed in every machine mode
417417
- `--format explore` TUI (feature-gated behind Cargo feature `tui`, `ratatui` 0.29 + `crossterm` 0.28) with CUA + Vim keybindings, `/` filter, `s` sort, Enter detail, `e` export; graceful JSON fallback when feature disabled, under `AI_AGENT=1`, or on non-TTY
418418
- Context files at `Zamak/` repo root: `CLAUDE.md`, `AGENTS.md`, `SKILL.md`, `CONTRIBUTING.md`
419-
- Integration test matrix in `zamak-cli/tests/sfrs_conformance.rs` covering exit codes, TTY/non-TTY, `AI_AGENT=1`, `--dry-run`, control-char rejection, UTF-8 encoding, ANSI suppression, JSON Schema shape, `describe` enumeration
419+
- Integration test matrix in `zamak-cli/tests/cli_standard_conformance.rs` covering exit codes, TTY/non-TTY, `AI_AGENT=1`, `--dry-run`, control-char rejection, UTF-8 encoding, ANSI suppression, JSON Schema shape, `describe` enumeration
420420
- Crate rename: `libzamak` -> `zamak-core`, `zamak-loader` -> `zamak-uefi` (PRD §4.1)
421421
- Converted all `.asm` files to `global_asm!` in Rust source files (Spacecraft Software Standard §3.2)
422422
- Added `rustfmt.toml` project formatting configuration

CLAUDE.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -124,9 +124,10 @@ defect.
124124
≤ 120 % of the Limine v10.x baseline. CI `size-gate` enforces
125125
this; baselines live inline in `.github/workflows/ci.yml`.
126126

127-
## CLI: SFRS dual-mode contract
127+
## CLI: CLI Standard dual-mode contract
128128

129-
`zamak-cli` conforms to `SS-SFRS-SPACECRAFT-SOFTWARE-CLI v1.0.0`:
129+
`zamak-cli` conforms to the Spacecraft Software Dual-Mode
130+
Self-Documenting CLI Standard (v1.0.0):
130131

131132
- **Global flags** (every sub-command): `--json`, `--format <fmt>`,
132133
`--fields`, `--dry-run`, `--verbose`, `--quiet`, `--color`,
@@ -153,7 +154,7 @@ defect.
153154
- Default to NO trailing summaries; the user reads diffs.
154155
- In-tree tests only; no integration tests that require host state
155156
(use `zamak-test` harness for those).
156-
- Keep commits small and scoped — one SFRS-N or M-N item per commit
157+
- Keep commits small and scoped — one CLISTD-N or M-N item per commit
157158
when possible.
158159
- Every user-facing change updates `CHANGELOG.md` and `TODO.md` in
159160
the *same* commit (per `CONTRIBUTING.md`). Releases roll

CONTRIBUTING.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ the machine / agent side.
2222
```
2323
- **Commit messages:** short imperative-mood subject (≤72 chars),
2424
blank line, then a body explaining the *why*. Reference the
25-
affected TODO.md item (e.g. `RG-3`, `SFRS-4`) in the subject when
25+
affected TODO.md item (e.g. `RG-3`, `CLISTD-4`) in the subject when
2626
applicable.
2727
- **Branching:** feature branches off `main`, squash-or-rebase merge.
2828

@@ -75,16 +75,16 @@ Before opening a PR:
7575
`options(...)`, and ≤ 20 instructions per block.
7676
- [ ] New address arithmetic uses `checked_add` / `checked_sub` /
7777
`div_ceil` or an address newtype from `zamak_core::addr`.
78-
- [ ] New CLI features honour SFRS §3–§11 (global flags,
78+
- [ ] New CLI features honour the CLI Standard §3–§11 (global flags,
7979
JSON envelope, exit-code map, structured errors).
8080
- [ ] `CHANGELOG.md` has a new entry under `## [Unreleased]`.
8181
- [ ] `TODO.md` has been updated if the change clears a tracked
8282
item.
8383

8484
## CLI-specific expectations
8585

86-
`zamak-cli` conforms to `SS-SFRS-SPACECRAFT-SOFTWARE-CLI v1.0.0`. New sub-
87-
commands must:
86+
`zamak-cli` conforms to the Spacecraft Software Dual-Mode Self-Documenting
87+
CLI Standard (v1.0.0). New sub-commands must:
8888

8989
1. Register a `CommandSpec` in `src/schema.rs`.
9090
2. Live in their own module under `src/commands/`.

SKILL.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
22
name: zamak
3-
description: ZAMAK bootloader host CLI — install stage1 MBR + stage2, enroll config BLAKE2B hashes into UEFI binaries, generate SPDX 2.3 SBOMs. Dual-mode (human + agent) per SS-SFRS-SPACECRAFT-SOFTWARE-CLI v1.0.0.
3+
description: ZAMAK bootloader host CLI — install stage1 MBR + stage2, enroll config BLAKE2B hashes into UEFI binaries, generate SPDX 2.3 SBOMs. Dual-mode (human + agent) per the Spacecraft Software Dual-Mode Self-Documenting CLI Standard (v1.0.0).
44
license: GPL-3.0-or-later
55
project: Spacecraft Software
66
component: Zamak
@@ -126,7 +126,7 @@ zamak schema install --json | jq .
126126
Under `AI_AGENT=1` or when stdout is a pipe, the command falls
127127
back to JSON with a warning on stderr.
128128
- Errors in JSON mode always land on stderr as a single-line JSON
129-
object matching the SFRS §3.5 envelope.
129+
object matching the CLI Standard §3.5 envelope.
130130
- The `sbom` command, with `--output <path>`, writes the SPDX
131131
document verbatim (no envelope) to the file; the stdout stream
132132
still carries the metadata/data envelope.
@@ -135,6 +135,6 @@ zamak schema install --json | jq .
135135

136136
- `../ZAMAK_Bootloader_PRD_v1.3.docx.md` — full product spec
137137
- `../TODO.md` — live implementation status
138-
- `../spacecraft-software-dual-mode-cli-sfrs.docx` — CLI framework SFRS v1.0.0
138+
- `../spacecraft-software-dual-mode-cli-standard.docx` — CLI framework, the CLI Standard v1.0.0
139139
- `zamak describe --json` — live capability manifest (authoritative
140140
at runtime)

TODO.md

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -198,7 +198,7 @@ SPDX-FileCopyrightText: 2026 Mohamed Hammad
198198
|---|--------|------|
199199
| M6-1 | `[~]` | LoongArch64 UEFI boot path — `arch::loongarch64::paging::PageTableBuilder` (4-level PGDH, MAT-encoded cache policy, PLV/NX encoding) + `paging::loongarch64::build` + `handoff::jump_to_kernel` (CRMD clear IE, PGDH, STLB flush) all implemented and compile for `loongarch64-unknown-none`; 5 new paging tests pass. Full `cargo check --target loongarch64-unknown-uefi` blocked on rustc upstream — the target does not yet exist (`uefi-services` uses the `efiapi` ABI which is unsupported on `loongarch64-unknown-none`) |
200200
| M6-2 | `[✓]` | `BOOTLOONGARCH64.EFI``release.yml` matrix entry for `loongarch64-unknown-none` executed by `v0.7.0` tag push on 2026-04-21 |
201-
| M6-3 | `[~]` | Performance tuning — LTO + `codegen-units = 1` + `panic = abort` in release profile; CI `size-gate` enforces ≤120% size target. **Part 1 (instrumentation) landed**: `zamak-uefi` emits `ZAMAK_PHASE=<name> tsc=<u64>` + `ZAMAK_TSC_MHZ=<n>` markers at 6 boot phases (uefi_entry / config_parsed / menu_finished / kernel_loaded / requests_fulfilled / pre_exit_boot_services) via `rdtsc()`; new `zamak-cli bench parse-serial [--tsc-mhz <n>] [<path>]` sub-command ingests a captured UEFI serial log and emits an SFRS envelope with `{tsc_mhz, phases:[{phase, tsc, delta_cycles, delta_ns}]}`. Hardware leg (Part 2) still needed: boot a USB stick (`target/esp.img` or any assembled image works as-is) on a physical x86-64 UEFI machine with COM1 captured, feed the log through `zamak bench parse-serial`, and compare Δ-ns against Limine v10.x on the same hardware. |
201+
| M6-3 | `[~]` | Performance tuning — LTO + `codegen-units = 1` + `panic = abort` in release profile; CI `size-gate` enforces ≤120% size target. **Part 1 (instrumentation) landed**: `zamak-uefi` emits `ZAMAK_PHASE=<name> tsc=<u64>` + `ZAMAK_TSC_MHZ=<n>` markers at 6 boot phases (uefi_entry / config_parsed / menu_finished / kernel_loaded / requests_fulfilled / pre_exit_boot_services) via `rdtsc()`; new `zamak-cli bench parse-serial [--tsc-mhz <n>] [<path>]` sub-command ingests a captured UEFI serial log and emits the response envelope with `{tsc_mhz, phases:[{phase, tsc, delta_cycles, delta_ns}]}`. Hardware leg (Part 2) still needed: boot a USB stick (`target/esp.img` or any assembled image works as-is) on a physical x86-64 UEFI machine with COM1 captured, feed the log through `zamak bench parse-serial`, and compare Δ-ns against Limine v10.x on the same hardware. |
202202
| M6-4 | `[✓]` | Full rustdoc — zero warnings on `cargo doc --no-deps` for zamak-core / theme / proto / cli / macros |
203203

204204
---
@@ -216,27 +216,27 @@ SPDX-FileCopyrightText: 2026 Mohamed Hammad
216216

217217
---
218218

219-
## SFRS — Dual-Mode CLI (SS-SFRS-SPACECRAFT-SOFTWARE-CLI v1.0.0) — zamak-cli
219+
## CLI Standard — Dual-Mode CLI (Spacecraft Software Dual-Mode Self-Documenting CLI Standard v1.0.0) — zamak-cli
220220

221221
| # | Status | Task |
222222
|---|--------|------|
223-
| SFRS-1 | `[✓]` | §3.1 / §4.1: global `--json` flag + `--format <json\|jsonl\|yaml\|csv\|explore>` with TTY auto-detect (json default when piped, under `AI_AGENT=1`, or `CI=true`) |
224-
| SFRS-2 | `[✓]` | §3.2: full exit-code map (0 success / 1 general / 2 usage / 3 not-found / 4 permission / 5 conflict + reserved 6 rate-limited) via `error::ErrorCode` |
225-
| SFRS-3 | `[✓]` | §3.3: `--dry-run` on `install` and `enroll-config`; idempotent re-runs short-circuit (byte-identical MBR → no-op; existing hash already enrolled → no-op) |
226-
| SFRS-4 | `[✓]` | §3.4 / §6.1: `zamak schema [<command>]` emits JSON Schema Draft 2020-12 (input, output, exit codes, examples) — single source of truth in `schema.rs` |
227-
| SFRS-5 | `[✓]` | §3.4 / §6.2: `zamak describe` emits capability manifest (commands, supports_json, supports_dry_run, idempotent, destructive, formats, mcp_available, tui_feature) |
228-
| SFRS-6 | `[✓]` | §3.5 / §4.3: structured JSON error envelope on stderr (`error.code`/`exit_code`/`message`/`hint`/`timestamp`/`command`/`docs_url`/`io_kind`) with stable `UPPER_SNAKE_CASE` codes via `error::emit` |
229-
| SFRS-7 | `[✓]` | §3.6: stdout=data / stderr=diagnostics split; `--fields a,b,c` projection via `Value::project`; `--format jsonl` streams each data row as one line |
230-
| SFRS-8 | `[✓]` | §3.7: noun-verb hierarchy with shared globals (`--json`, `--format`, `--fields`, `--dry-run`, `--verbose`, `--quiet`, `--color`, `--no-color`, `--yes`, `--force`, `--print0`); aliases hidden from `describe` / `schema` output |
231-
| SFRS-9 | `[✓]` | §4.2 / §4.4: Spacecraft Software six-token palette via 24-bit ANSI (`output::Palette`); NO_COLOR / FORCE_COLOR / CLICOLOR / `--color={auto,always,never}` precedence; ANSI suppressed in every machine mode |
232-
| SFRS-10 | `[✓]` | §4.3: top-level JSON envelope `{metadata:{tool,version,command,timestamp}, data:...}` produced by `OutputPolicy::emit`; snake_case canonical; ISO 8601 strings; JSON null for missing values |
233-
| SFRS-11 | `[✓]` | §5: `--format explore` TUI via `ratatui` 0.29 + `crossterm` 0.28 behind Cargo feature `tui`; alt-screen; CUA + Vim keybinds (`↑↓`/`jk`, `/` filter, `s` sort, Enter detail, `e` export); TTY + non-agent guard with JSON fallback. Feature build verified clean (`cargo check --features tui`); all 95 zamak-cli tests still pass with the feature enabled |
234-
| SFRS-12 | `[✓]` | §6.3: `CLAUDE.md`, `AGENTS.md`, `SKILL.md`, `CONTRIBUTING.md` at `Zamak/` repo root per Spacecraft Software context-file format |
235-
| SFRS-13 | `[✓]` | §7.2: `validate` module — path canonicalization + allow-list (`safe_path`), control-byte rejection (`reject_control_chars`), numeric bounds (`check_bounds`), `--yes`/`--force` required for destructive ops in non-TTY (`confirm_destructive`) |
236-
| SFRS-14 | `[✓]` | §8.1 / §8.4: POSIX text records; `--print0` / `-0` global flag wired; `zamak completions <shell>` sub-command emits bash / zsh / fish / nushell scripts |
237-
| SFRS-15 | `[✓]` | §8.3: PowerShell-friendly JSON — single document (not NDJSON unless explicit), single-line stderr errors (`to_compact`), UTF-8 without BOM, Windows startup sets console CP 65001 via `SetConsoleOutputCP` |
238-
| SFRS-16 | `[✓]` | §9.1: agent-env detection — `AI_AGENT` / `AGENT` / `CI` / `TERM=dumb` force json + no-color + no-TUI + no-prompts; captured once in `EnvSnapshot::capture` |
239-
| SFRS-17 | `[✓]` | §11.1: integration test matrix in `zamak-cli/tests/sfrs_conformance.rs` — exit codes, TTY/non-TTY, `AI_AGENT=1`, `--dry-run`, control-char rejection, UTF-8 encoding, ANSI suppression, JSON Schema shape, describe enumeration |
223+
| CLISTD-1 | `[✓]` | §3.1 / §4.1: global `--json` flag + `--format <json\|jsonl\|yaml\|csv\|explore>` with TTY auto-detect (json default when piped, under `AI_AGENT=1`, or `CI=true`) |
224+
| CLISTD-2 | `[✓]` | §3.2: full exit-code map (0 success / 1 general / 2 usage / 3 not-found / 4 permission / 5 conflict + reserved 6 rate-limited) via `error::ErrorCode` |
225+
| CLISTD-3 | `[✓]` | §3.3: `--dry-run` on `install` and `enroll-config`; idempotent re-runs short-circuit (byte-identical MBR → no-op; existing hash already enrolled → no-op) |
226+
| CLISTD-4 | `[✓]` | §3.4 / §6.1: `zamak schema [<command>]` emits JSON Schema Draft 2020-12 (input, output, exit codes, examples) — single source of truth in `schema.rs` |
227+
| CLISTD-5 | `[✓]` | §3.4 / §6.2: `zamak describe` emits capability manifest (commands, supports_json, supports_dry_run, idempotent, destructive, formats, mcp_available, tui_feature) |
228+
| CLISTD-6 | `[✓]` | §3.5 / §4.3: structured JSON error envelope on stderr (`error.code`/`exit_code`/`message`/`hint`/`timestamp`/`command`/`docs_url`/`io_kind`) with stable `UPPER_SNAKE_CASE` codes via `error::emit` |
229+
| CLISTD-7 | `[✓]` | §3.6: stdout=data / stderr=diagnostics split; `--fields a,b,c` projection via `Value::project`; `--format jsonl` streams each data row as one line |
230+
| CLISTD-8 | `[✓]` | §3.7: noun-verb hierarchy with shared globals (`--json`, `--format`, `--fields`, `--dry-run`, `--verbose`, `--quiet`, `--color`, `--no-color`, `--yes`, `--force`, `--print0`); aliases hidden from `describe` / `schema` output |
231+
| CLISTD-9 | `[✓]` | §4.2 / §4.4: Spacecraft Software six-token palette via 24-bit ANSI (`output::Palette`); NO_COLOR / FORCE_COLOR / CLICOLOR / `--color={auto,always,never}` precedence; ANSI suppressed in every machine mode |
232+
| CLISTD-10 | `[✓]` | §4.3: top-level JSON envelope `{metadata:{tool,version,command,timestamp}, data:...}` produced by `OutputPolicy::emit`; snake_case canonical; ISO 8601 strings; JSON null for missing values |
233+
| CLISTD-11 | `[✓]` | §5: `--format explore` TUI via `ratatui` 0.29 + `crossterm` 0.28 behind Cargo feature `tui`; alt-screen; CUA + Vim keybinds (`↑↓`/`jk`, `/` filter, `s` sort, Enter detail, `e` export); TTY + non-agent guard with JSON fallback. Feature build verified clean (`cargo check --features tui`); all 95 zamak-cli tests still pass with the feature enabled |
234+
| CLISTD-12 | `[✓]` | §6.3: `CLAUDE.md`, `AGENTS.md`, `SKILL.md`, `CONTRIBUTING.md` at `Zamak/` repo root per Spacecraft Software context-file format |
235+
| CLISTD-13 | `[✓]` | §7.2: `validate` module — path canonicalization + allow-list (`safe_path`), control-byte rejection (`reject_control_chars`), numeric bounds (`check_bounds`), `--yes`/`--force` required for destructive ops in non-TTY (`confirm_destructive`) |
236+
| CLISTD-14 | `[✓]` | §8.1 / §8.4: POSIX text records; `--print0` / `-0` global flag wired; `zamak completions <shell>` sub-command emits bash / zsh / fish / nushell scripts |
237+
| CLISTD-15 | `[✓]` | §8.3: PowerShell-friendly JSON — single document (not NDJSON unless explicit), single-line stderr errors (`to_compact`), UTF-8 without BOM, Windows startup sets console CP 65001 via `SetConsoleOutputCP` |
238+
| CLISTD-16 | `[✓]` | §9.1: agent-env detection — `AI_AGENT` / `AGENT` / `CI` / `TERM=dumb` force json + no-color + no-TUI + no-prompts; captured once in `EnvSnapshot::capture` |
239+
| CLISTD-17 | `[✓]` | §11.1: integration test matrix in `zamak-cli/tests/cli_standard_conformance.rs` — exit codes, TTY/non-TTY, `AI_AGENT=1`, `--dry-run`, control-char rejection, UTF-8 encoding, ANSI suppression, JSON Schema shape, describe enumeration |
240240

241241
**Out of scope / explicitly skipped:**
242242

@@ -312,7 +312,7 @@ SPDX-FileCopyrightText: 2026 Mohamed Hammad
312312
| M5 Feature Parity | 9 | 0 | 0 |
313313
| M6 LoongArch64 | 2 | 2 | 0 |
314314
| Host CLI | 6 | 0 | 0 |
315-
| SFRS Dual-Mode CLI | 17 | 0 | 0 |
315+
| CLI Standard Dual-Mode CLI | 17 | 0 | 0 |
316316
| Testing | 7 | 0 | 0 |
317317
| CI/CD | 12 | 0 | 0 |
318318
| Release Artifacts | 10 | 0 | 0 |

zamak-cli/src/args.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
//! Global CLI flag parser.
55
//!
6-
//! Shared flags across every Spacecraft Software CLI (SFRS §3.7):
6+
//! Shared flags across every Spacecraft Software CLI (CLI Standard §3.7):
77
//! `--json`, `--format <fmt>`, `--fields a,b,c`, `--dry-run`,
88
//! `--verbose`, `--quiet`, `--color=<auto|always|never>`,
99
//! `--no-color`, `--yes`, `--force`, `--print0` / `-0`.

zamak-cli/src/commands/bench.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
//! TSC-based boot-phase instrumentation `zamak-uefi` emits to
66
//! COM1 (M6-3 part 1).
77
//!
8-
//! Reads a UEFI serial log (file path or stdin) and emits an
9-
//! SFRS-canonical JSON envelope whose `data` payload is:
8+
//! Reads a UEFI serial log (file path or stdin) and emits the
9+
//! CLI Standard's canonical JSON envelope whose `data` payload is:
1010
//!
1111
//! ```json
1212
//! {

0 commit comments

Comments
 (0)