Skip to content

Fix the retention deploy, and make legal/ edits deploy - #70

Merged
robbyrob42 merged 1 commit into
primaryfrom
rob/retention-deploy-fix
Sep 3, 2026
Merged

Fix the retention deploy, and make legal/ edits deploy#70
robbyrob42 merged 1 commit into
primaryfrom
rob/retention-deploy-fix

Conversation

@robbyrob42

Copy link
Copy Markdown
Collaborator

Two faults from #69, both mine.

The retention Worker never deployed

The deploy-retention job was missing the Install the 1Password CLI step that the site job has. fnox resolves every secret through op; with no binary it warns once per secret and returns nothing, and wrangler then fails on a missing CLOUDFLARE_API_TOKEN — naming the symptom, not the cause.

WARN fnox_core::providers::onepassword: op inject failed, falling back to individual calls: 1Password: CLI tool 'op' not found
✘ [ERROR] In a non-interactive environment, it's necessary to set a CLOUDFLARE_API_TOKEN...

Consequence: the cron was never registered. Nothing would have fired at 09:17 UTC, and the policy's deletions would have gone unperformed with no sign of it beyond a red run.

CI could not have caught this. A pull request runs deploy --dry-run, which never authenticates, so the credential path was exercised for the first time on primary. The fix is the missing step, not a louder dry run — a dry run that authenticated would be a deploy.

legal/** deployed nothing

Both sites render legal/privacy-policy.ts, and it was in neither path filter. An edit touching only that directory would rebuild nothing and leave the published policy stale while the repository said otherwise. It hasn't bitten because every policy change so far arrived alongside a file that did match — the clause edit rode in on sites/** and package.json.

After merge

The Worker deploys and the cron registers. Worth confirming retention_runs has rows the morning after; migration 0004 is already applied to remote D1.

🤖 Generated with Claude Code

https://claude.ai/code/session_01J53xszP5CdZLXfhRJWsSyv

…ed nothing

Two faults, both mine, both from the same PR.

The retention job was missing the `Install the 1Password CLI` step the
site job has. fnox resolves every secret through `op`; without the binary
the resolver warns once per secret and returns nothing, and wrangler then
fails on a missing CLOUDFLARE_API_TOKEN -- an error that names the
symptom and not the cause. The Worker did not deploy on the merge to
primary, so the cron was never registered.

CI could not have caught it. A pull request runs `deploy --dry-run`,
which never authenticates, so the credential path was only exercised for
the first time on primary. That is a real gap in the check and the reason
it merged green; the fix is the missing step rather than a louder dry
run, because a dry run that authenticated would be a deploy.

Second: `legal/**` was in neither site's path filter. Both sites render
the shared privacy policy, so an edit touching only that directory would
have rebuilt nothing and left the published policy stale while the
repository said otherwise. It has not bitten yet only because every
policy change so far arrived alongside a file that did match.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J53xszP5CdZLXfhRJWsSyv
@robbyrob42
robbyrob42 merged commit 081eaf0 into primary Sep 3, 2026
4 checks passed
@robbyrob42
robbyrob42 deleted the rob/retention-deploy-fix branch September 3, 2026 22:45
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