Every version, every change, every date. Format follows Keep a Changelog; SteelSpine adheres to Semantic Versioning.
Compliance-mode auto-notarization (RFC 3161 / eIDAS) and optional ML-DSA-65 post-quantum signing — for EU AI Act audits and long-archive use cases that must remain valid past the arrival of cryptographically-relevant quantum computers.
compliance_mode config flag — set "compliance_mode": true in ~/.prime/config.json to auto-enable RFC 3161 timestamping on every captured run, defaulting to an eIDAS-accredited Timestamp Authority (Sectigo) instead of the free dev TSA. EU AI Act / ISO 42001 audit defaults in one line.--no-notarize flag on steelspine run — disable notarization for a single run even when compliance_mode is on.--pq-sign flag on steelspine run — add a post-quantum signature (ML-DSA-65, NIST FIPS 204) to the run record, additive to Ed25519. Quantum-resistant. Stored as ml_dsa_65_signature in run_meta.json. Requires liboqs-python.steelspine verify-run automatically verifies the post-quantum signature when present.prime.pathshim: ss_ml_dsa_65_generate, ss_ml_dsa_65_sign, ss_ml_dsa_65_verify, ss_ml_dsa_65_pubkey_b64.--require-approval flag on steelspine run — EU AI Act Article 14 human-oversight mode. Prompts operator at TTY before the wrapped command executes. Approval/decline sealed into run_meta.json as article_14_approval. Declined runs do not execute and are saved with final_state: "declined_at_oversight" for the audit trail.--auto-approved-by NAME and --auto-approval-reason TEXT flags — preserve audit trail in non-interactive contexts (CI, cron). Without these in a non-TTY shell, --require-approval declines safely.steelspine verify-run Article 14 status — surfaces approval status with approver, method, and timestamp.SigningBackend base class in prime.pathshim with registry (register_signing_backend, unregister_signing_backend, get_signing_backend, list_signing_backends, list_available_signing_backends). Built-ins (HMAC, Ed25519, ML-DSA-65) auto-registered. Third parties can plug in custom backends (HSM, cloud KMS, future PQ algorithms) without modifying SteelSpine core.prime-run argument parser now correctly consumes optional flags (--notarize, --no-notarize, --pq-sign, --require-approval, --auto-approved-by, --auto-approval-reason, --tsa-url) before passing the rest as the wrapped command. Previously these fell through to the catch-all and were passed to the wrapped binary, causing "command not found" errors.tests/run_all.sh resolves PRIME_SRC robustly: prefers $PRIME_HOME only if it points to a valid install (has bin/), otherwise uses the script's own location. Stale $PRIME_HOME exports (e.g. pointing at long-deleted /tmp/ss_bundle_test_* paths) no longer cause silent cp -r failures and 293-test cascades. Test pass rate: 211/504 → 877/877.--no-notarize → off; --notarize → on; notarize key in config (if present) → that value; otherwise default per compliance_mode.canonical_signing_payload shared by both Ed25519 and ML-DSA-65 — both signatures cover identical fields.notarize: false (or no key) keep current behavior. The change is opt-in via the new compliance_mode flag.steelspine run --pq-sign python3 agent.py with compliance_mode: true produces a run with HMAC + Ed25519 + ML-DSA-65 + RFC 3161 TSA timestamp — quadruple-rooted integrity.Multi-tab session tagging and proactive storage-pressure warnings — quality-of-life improvements for long-running developer workflows.
--session NAME flag on steelspine run — tag a run as part of a logical session for grouping across multiple terminals. Also reads STEELSPINE_SESSION env var.steelspine run list --session NAME — filter listings to a specific session.steelspine run checks current storage usage after capture. Amber notice at 80% of budget; red warning at 90%+ with action paths. Configurable via storage_budget_mb in ~/.prime/config.json.steelspine help run, steelspine help storage) updated to document new flags and warning behavior.First public release. EU AI Act Article 12 compliance, tamper-evident observability, replay for any AI agent. One command. Zero code changes.
steelspine run <command> — wrap any binary, capture stdout + stderr + exit code with zero code changesrun_0001, …) and human labels (--label)steelspine run list / show / prune — manage captured runssteelspine compare — run-to-run diff with first-divergence detectionsteelspine compare --strict — exit code 2 on regression (CI gating)steelspine diagnose <run_id> — step-level root cause analysissteelspine baseline — pin a known-good run; detect drift from itsteelspine eval — score runs in CI (--min-pass-rate, --max-failures, --forbid)steelspine what — natural-language triage across all runssteelspine patterns — recurring failures across runssteelspine search — full-text search across run outputsteelspine stats — pass rate, failure trends, streak analysissteelspine tail [-f] — show / stream events from recent runssteelspine monitor — background daemon that alerts on real-time failuressteelspine start — memory proxy on OLLAMA_HOST=http://localhost:11435steelspine memory — view profile facts, session history; inject context into ChatGPT / Claude.aisteelspine verify-run — signed audit report with HMAC-SHA256 + Ed25519 chainsteelspine verify-run --compliance-html — EU AI Act Art.12 + ISO 42001 compliance receiptsteelspine replay-run — offline replay, no live system, no API callssteelspine policy — pre-execution guardrails (forbid patterns, cap failures)steelspine audit-quality — automated suspicion engine with 6 heuristicssteelspine label — human confirmation loop (confirmed / false-positive / false-negative)steelspine simulate — branch alternative futures from any captured statesetup.sh with auto-PATH, signing key generation, smoke teststeelspine doctor — 13-point self-diagnosis with --fixsteelspine init — guided first-time setupsteelspine status — live health checksteelspine ui [page] — browser dashboard with auto-portsteelspine project — workspace isolation per agentsteelspine storage — prune, archive, compress, USB exportsteelspine import — restore archived runssteelspine noise — suppress expected/noisy failuressteelspine otel-receiver — accept OpenTelemetry spans from LangChain, LlamaIndex, any OTel frameworksteelspine_langchain pip package, ships in packages/)steelspine_helpers.js for browser embedding~/.prime/.keys/signing.key (chmod 600)dist/macos/)dist/windows/)STEELSPINE_ORG_KEYsteelspine run <missing-command> records the failure but doesn't compute a verdict