Skip to content

feat: add local Recipe Oven - #84

Merged
nicksong-z merged 1 commit into
masterfrom
feat/local-oven
Aug 12, 2026
Merged

feat: add local Recipe Oven#84
nicksong-z merged 1 commit into
masterfrom
feat/local-oven

Conversation

@nicksong-z

Copy link
Copy Markdown
Collaborator

Summary

Implements #78 with an additive, opt-in local Oven for Recipe workspaces.

  • adds gw oven bake, reconcile, status, and clean
  • adds gw create NAME --recipe FILE --oven
  • claims ready slots without fetching and preserves cold Recipe creation as the fallback for clean misses
  • keeps prepared dependencies at immutable physical paths and exposes claimed workspaces through named symlinks
  • uses a private atomic inventory with bounded bake/claim/cleanup lifecycle recovery
  • enforces reciprocal workspace/slot ownership, source-repository allowlisting, branch compare-delete, and fail-closed tamper checks
  • keeps scheduling external: cron, launchd, or systemd may invoke idempotent reconciliation

Safety behavior

  • incomplete bakes are never visible as ready
  • quarantined or mismatched slots block claiming rather than falling back cold
  • claims write workspace state last
  • interrupted and partial claims are conservatively rolled back or quarantined
  • partial deletion persists progress and is retryable
  • normal status, sync, run, go, delete, and doctor paths verify Oven ownership
  • rename/add/remove remain unsupported for Oven-backed workspaces
  • credentials are not persisted in inventory; common residue files block readiness

Verification

  • PATH="$(go env GOPATH)/bin:$PATH" just check
  • PATH="$(go env GOPATH)/bin:$PATH" staticcheck ./...
  • focused Oven race tests
  • just e2e — 135/135 passed
  • independent correctness and security review with all blocking findings addressed

Notes

This intentionally does not add a daemon, scheduler, generic artifact cache, CI framework, or hosted Oven. Performance and caching decisions remain in #79.

Closes #78

@nicksong-z
nicksong-z merged commit 9d7d2c1 into master Aug 12, 2026
2 checks passed
@nicksong-z
nicksong-z deleted the feat/local-oven branch August 12, 2026 07:37
nicksong-z added a commit that referenced this pull request Aug 14, 2026
* Revert "feat: make prepared Oven slots reusable (#86)"

This reverts commit 12708d0.

* Revert "feat: add source toggles and Oven schedule examples (#85)"

This reverts commit 0e5003f.

* Revert "feat: add local Recipe Oven (#84)"

This reverts commit 9d7d2c1.
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.

Add an opt-in local Oven

1 participant