Skip to content

systemspec-credential: Plan

Approach

Build the library first, then the reports, then the command line over them, so a host tool can use each layer on its own. Each phase ends with a usable release.

Phase Delivers Release
1. Registry Types, validation, event log, state, JSON, schemas v0.1.0 with phase 2
2. Reports and command line HTML, Markdown and JSON reports; the mountable commands; the standalone command v0.1.0
3. Observed state An observer interface and checks for missing, unlisted and expired credentials; observers for a cloud parameter store and CI secrets v0.2.0
4. Lifecycle automation Random values generated into a store; rotation reminders; findings as OCSF events; an MCP server v0.3.0

Design Decisions

  • No values, ever. Keeping values out of the model keeps the registry safe to version and review, and leaves storage to the tools built for it.
  • One entry per secret, place and environment. Flat entries are simple to filter and to assess. Go code removes the repetition.
  • Events, not dates in the registry. Definitions change when intent changes; events change when an operator acts. Keeping them apart keeps the registry reviewable and the history auditable.
  • Open sets for kinds, issuers and stores. New services appear all the time; a slug is enough to filter on. Closed sets are kept for the values the code acts on.
  • The Markdown reference is independent of time, so a committed copy can be tested for currency; the HTML report includes state and is generated on demand.

Risks

Risk Mitigation
The registry drifts from the stores Phase 3 compares them; until then the event log and verified events
Operators forget to record events unrecorded is a state of its own, shown first
The report leaks an inventory It holds no values; it is kept beside the registry, never published