Skip to content

docs: ADR-0013/0015 status corrections + ADR-0023/0024/0025/0026 drafts#330

Merged
Destynova2 merged 1 commit intomainfrom
docs/adr-hygiene-and-missing
Apr 28, 2026
Merged

docs: ADR-0013/0015 status corrections + ADR-0023/0024/0025/0026 drafts#330
Destynova2 merged 1 commit intomainfrom
docs/adr-hygiene-and-missing

Conversation

@Destynova2
Copy link
Copy Markdown
Contributor

Summary

Doc-only PR covering two ADR-status corrections and four new ADR drafts.

Part 1 — Status corrections (zombie statuses)

Audit found two ADRs marked done whose implementations are deferred. Both
flip back to accepted with inline status notes; designs remain final and
binding, only the implementation flag has been corrected.

  • ADR-0013 (storage refactor on atomic files + JSONL) — redb persistence
    remains active in v0.36.x (GrobStore in src/storage/mod.rs still in
    use; no ~/.grob/spend/*.jsonl files written). A-7 deferred to v0.37+.
  • ADR-0015 (indirect prompt injection coverage) — A-6 implementation
    deferred; framework design final but no production code merges yet.

Part 2 — Four new ADRs (status: proposed)

  • ADR-0023 — Preset Naming and Composition Strategy. Formalises the
    shipped catalogue: [meta] tier taxonomy (base,
    audience-specific, experimental), kebab-case naming convention,
    presets do not nest, and grob preset info validation gate before
    shipping built-in. Compliance overlays declared as separate
    [meta] kind = "overlay" concept.
  • ADR-0024 — Preset-as-Compliance-Template. Compliance presets are
    packaged decisions bundling routing topology, policies, ADR-0022
    [endpoints.compliance] metadata, and [meta] compliance_reviewed
    attestation. Customer overlays may tighten but never loosen the base
    posture. Update lifecycle covers routine review, certification
    renewal, and major posture change.
  • ADR-0025 — RPC Mutation Transactionality and In-Flight Visibility.
    Resolves the open question on issue Runtime config mutation for RPC namespaces (7 TODOs) #228. In-flight requests see
    pre-mutation snapshots (reusing ADR-0001's snapshot()); persistence
    is atomic with the in-memory swap (rollback on disk-write failure);
    per-namespace mutex permits parallel writes across namespaces; every
    mutation emits an AuditEvent::RpcMutation { namespace, action, before_hash, after_hash } to the Sokolsky pipeline.
  • ADR-0026 — Model Name Canonicalization Policy. Records the fixed
    rule set landed in PR feat(routing): canonicalize model names before [[models]] lookup #307 (lowercase, strip -latest, strip 8-digit
    date suffix, dot-to-dash version on a known-prefix gate, Anthropic
    family-version reorder), idempotence guarantee, operator escape
    hatches (per-endpoint actual_model mapping or table patch), and
    2-minor-release deprecation window for renamed model aliases.

CHANGELOG [Unreleased] records the additions under a Documentation
heading. No code changes.

Test plan

  • markdownlint passes on all six modified/added files
  • lychee resolves all internal cross-references ([ADR-NNNN](NNNN-*.md))
  • no-hardcoded-version CI guard passes (no vX.Y.Z literals in
    new ADRs; existing v0.34.0 reference in ADR-0015 already
    whitelisted by the guard)
  • All ADRs follow MADR 4.0 frontmatter + Context + Decision Drivers
    + Considered Options + Decision Outcome + Consequences structure
    matching ADR-0018's style

@Destynova2 Destynova2 enabled auto-merge April 28, 2026 21:22
ADR hygiene pass identified two zombie statuses where designs were marked
`done` but production code does not match the design yet. Reverts both to
`accepted` with inline status notes recording the correction:

- ADR-0013 — storage refactor on atomic files + JSONL: redb persistence
  (`GrobStore` in `src/storage/mod.rs`) is still the live code path;
  `~/.grob/spend/*.jsonl` has not yet been written. A-7 deferred.
- ADR-0015 — indirect prompt injection coverage: A-6 implementation
  deferred; framework design final but no production code merges yet.

Adds four new ADRs as `status: proposed`, formalising decisions that have
been operating informally:

- ADR-0023 — Preset Naming and Composition Strategy. Adds the `[meta] tier`
  taxonomy (base/audience-specific/experimental), kebab-case naming
  convention, the rule that presets do not nest, and the
  `grob preset info` shippability gate. Compliance overlays are a separate
  `kind = "overlay"` concept.
- ADR-0024 — Preset-as-Compliance-Template. Treats compliance presets as
  packaged decisions bundling topology + policies + ADR-0022
  `[endpoints.compliance]` metadata + `[meta] compliance_reviewed`
  attestation. Customer overlays may tighten but never loosen; documents
  the certification-renewal lifecycle.
- ADR-0025 — RPC Mutation Transactionality and In-Flight Visibility.
  Resolves issue #228: in-flight requests see pre-mutation snapshots,
  persistence is atomic with the in-memory swap (rollback on disk-write
  failure), per-namespace mutex permits parallel writes, every mutation
  emits an `AuditEvent::RpcMutation` with before/after hashes.
- ADR-0026 — Model Name Canonicalization Policy. Records the fixed rule
  set landed in PR #307 (lowercase, strip `-latest`, strip 8-digit date
  suffix, dot-to-dash version on a known-prefix gate, Anthropic
  family-version reorder), the idempotence guarantee, the operator
  escape hatches (per-endpoint `actual_model` mapping or table patch),
  and the 2-minor-release deprecation window for renamed models.

CHANGELOG `[Unreleased]` records the additions under a `Documentation`
heading. No code changes — doc only.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@Destynova2 Destynova2 force-pushed the docs/adr-hygiene-and-missing branch from e0aa275 to 5508c1d Compare April 28, 2026 21:28
@Destynova2 Destynova2 merged commit 99a4c41 into main Apr 28, 2026
31 of 32 checks passed
@Destynova2 Destynova2 deleted the docs/adr-hygiene-and-missing branch April 28, 2026 21:31
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