Skip to content

docs(contract): document consent event + reconcile cask auto-routing (bootstrap follow-ups)#127

Merged
Artexis10 merged 1 commit into
mainfrom
chore/bootstrap-followups
Jun 6, 2026
Merged

docs(contract): document consent event + reconcile cask auto-routing (bootstrap follow-ups)#127
Artexis10 merged 1 commit into
mainfrom
chore/bootstrap-followups

Conversation

@Artexis10

Copy link
Copy Markdown
Owner

Two post-merge reconciliations of the engine-backend-bootstrap arc (#125). No engine code changes.

1. Document the consent event (docs/contracts/event-contract.md)

The bootstrap pre-step emits a consent event (combined absent-backend set + product-neutral message + inspectable installer-command details). It shipped in #125 but wasn't yet recorded in the contract. Adds it to the event-type table + a new Consent Event section (fields, guarantees — one event per run / apply-only / never-install-without-consent, and consumer notes). Contract-sanctioned non-breaking addition (new event type, no version bump).

2. Reconcile cask auto-routing (openspec/changes/macos-brew-driver)

PR3 of the arc made a cask: darwin ref auto-route to the brew lane by default (no driver: "brew" needed). The macos-brew-driver design still said such a manifest is rejected at load. Updates the "Per-app driver selection" requirement + flips the "A Cask reference without the brew driver is rejected" scenario to "auto-routes to brew". The auto-routing default is owned by engine-backend-bootstrap-impl; this requirement now composes with it instead of contradicting it.

Verification

openspec validate --all --strict74/74. No Go changed; affected packages (events/manifest/commands) still pass. No conformance test parses the contract doc.

🤖 Generated with Claude Code

…ing (bootstrap follow-ups)

Two post-merge reconciliations of the engine-backend-bootstrap arc (#125):

1. docs/contracts/event-contract.md — document the `consent` event type (added to
   the event-type table + a new "Consent Event" section with fields, the combined-set
   /one-event-per-run guarantees, apply-only emission, and consumer notes). It is a
   contract-sanctioned non-breaking addition (new event type, no version bump); the
   engine already emits it, this records it in the contract.

2. openspec/changes/macos-brew-driver — reconcile the "Per-app driver selection"
   requirement with the shipped Cask auto-routing: a `cask:` darwin ref now routes to
   brew by DEFAULT (no driver:"brew" needed), so the old "A Cask reference without the
   brew driver is rejected" scenario becomes "auto-routes to brew". The auto-routing
   default is owned by engine-backend-bootstrap-impl; this requirement composes with it.

No engine code changes. openspec validate --all --strict 74/74; affected Go packages
(events/manifest/commands) still pass.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@Artexis10 Artexis10 merged commit 5e76c59 into main Jun 6, 2026
3 checks passed
@Artexis10 Artexis10 deleted the chore/bootstrap-followups branch June 6, 2026 13:31
Artexis10 added a commit that referenced this pull request Jun 11, 2026
…ve 6 changes) (#128)

The engine work shipped across #95-#127; this closes the spec ledger:

- Archive nix-realizer-backend -> new main spec nix-package-backend (realizer
  selection, atomic generation apply, event fan-out, pinned refs, error codes)
- Archive platform-backend-foundation -> new main spec platform-backend-selection
- Archive macos-brew-driver (design-only): duplicated requirements drop out;
  its closing delta reconciles macos-brew-apply-wiring - cask auto-route replaces
  the stale reject-at-load requirement (per #125/#127), verify gains the
  no-downgrade-on-advisory-pin clause
- Archive engine-backend-bootstrap (design-only, --skip-specs; superseded by impl)
- Archive engine-backend-bootstrap-impl -> new main spec engine-backend-bootstrap
  (cask auto-routing rehomed to macos-brew-apply-wiring; read-only sentence
  tightened to shipped behavior)
- Archive nix-home-manager-secrets-scope: boundary tier already specced; the
  implemented capture-side redaction graduates into nix-home-manager-secrets-boundary;
  managed tier (agenix/sops-nix) recorded as deferred
- Reconcile tasks.md in all six (decisions RATIFIED-by-implementation, spec
  hardening graduated, non-goals annotated); fill Purpose lines on touched specs
- docs: platform support matrix in COMPATIBILITY.md, index pointer, roadmap S6
  marks the arc complete and records the deferred scope durably

Verification: openspec validate --all --strict 71/71; go test ./... green;
real-Nix smoke green locally; CI green on main incl. scheduled Nix smoke.

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
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