Skip to content

feat: gate bootstrap configure on setup receipt - #48

Merged
github-actions[bot] merged 4 commits into
mainfrom
feat/c5-receipt-executor-resume
Oct 30, 2026
Merged

github-actions[bot] merged 4 commits into
mainfrom
feat/c5-receipt-executor-resume

Conversation

@znerol2

@znerol2 znerol2 commented Oct 27, 2026

Copy link
Copy Markdown
Contributor

Summary

  • Pause the bootstrap after post-seed for workstation trust, the first passkey, and an authenticated setup receipt before configure runs playbook 694.
  • Pass only DMF_SETUP_REQUEST_ID in the configure process environment; keep the id out of argv, events, journal state, and recovery bundles.
  • Require the same fresh gates when configure is retried after failure or checkpoint-2 restore; preserve the existing post-configure passkey gate.

Dependencies

  • Coordinates with umbrella plan PR #798, dmf-cms PR #178, and dmf-infra PR #119 (stacked on prerequisite #118).
  • A retry or restore needs a newly issued receipt; no request id is restored or persisted.

Verification

  • Full dmf-init suite: 125 passed, 2 skipped.
  • Ruff on changed Python files and git diff --check passed.
  • Frontend TypeScript/Vite build passed.

Refs dmfdeploy/dmfdeploy#11
Refs dmfdeploy/dmfdeploy#396

Signed-off-by: znerol2 <6800371+znerol2@users.noreply.github.com>
Signed-off-by: znerol2 <6800371+znerol2@users.noreply.github.com>
Signed-off-by: znerol2 <6800371+znerol2@users.noreply.github.com>
@znerol2
znerol2 requested a review from lkirc October 27, 2026 15:28
@znerol2
znerol2 marked this pull request as ready for review October 27, 2026 15:36
@znerol2
znerol2 requested a review from a team as a code owner October 27, 2026 15:36
@github-actions
github-actions Bot enabled auto-merge (rebase) October 27, 2026 15:36

@lkirc lkirc left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Request changes: two blocking issues remain.

  • src/dmf_init/orchestrate.py:205: The receipt is put in the configure environment but never added with run.add_secret(). Configure stdout/stderr is streamed through run.emit() and retained in error hints, so any task that echoes the receipt exposes it in bootstrap events, contrary to the stated requirement. Register it for redaction before invoking the executor and cover echoed success/failure output.
  • src/dmf_init/bootstrap_steps.py:692: The new initial-passkey gate is enforced only by the browser. An authenticated caller can POST /api/bootstrap/resume for initial-passkey (even before the worker reaches it); BootstrapRun.resume() accepts any registered pause without a passkey-status check. Revalidate the passkey count and the active gate server-side before resuming, so configure cannot run without the required first passkey.

…ey on the server

Register the setup request id for redaction before configure runs, so output that echoes it stays out of events and error hints.

Check the live passkey count in the resume route for initial-passkey, and resume initial-passkey and setup-request only while the worker waits on them. A direct call can no longer run configure early or without the first passkey.

Claude-Session: https://claude.ai/code/session_01Rq1iSvhmEwbNUF43rtXVY4
Signed-off-by: znerol2 <6800371+znerol2@users.noreply.github.com>
@znerol2
znerol2 requested a review from lkirc October 30, 2026 08:27

@lkirc lkirc left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Reviewed current head a14d8a5. The earlier receipt-redaction and server-side initial-passkey-gate findings are resolved; all required checks pass. No blocking findings.

@github-actions
github-actions Bot merged commit fd5aec1 into main Oct 30, 2026
10 checks passed
@znerol2
znerol2 deleted the feat/c5-receipt-executor-resume branch November 5, 2026 08:19
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.

2 participants