Skip to content

feat(reconcile): walk Proton once the last walk is a week old - #13

Merged
jshvn merged 1 commit into
mainfrom
josh/reconcile-by-age
Sep 23, 2026
Merged

jshvn merged 1 commit into
mainfrom
josh/reconcile-by-age

Conversation

@jshvn

@jshvn jshvn commented Sep 23, 2026

Copy link
Copy Markdown
Member

Why

The Proton walk ran on the first run of a configured UTC weekday, which ties it to when a run is dispatched. A walk left partial also waited for a later day's first run. lib v2.2.0 (katoptra/lib#12) moves the decision into the toolbox's due, keyed on the age of the last reconcile.

What

  • Taskfile
    • due runs after clock in pipeline and in plan-pipeline.
    • RECONCILE_HOURS: 168 keeps the walk weekly.
    • pull and push over the image's s3 are what due and reconciled keep .state/reconciled through, as plain text.
    • record-walk runs the toolbox's reconciled only when .run/walked exists. Its status gate lets render.txt show the write.
  • Python
    • The run row's reconcile is whether .run/reconcile exists.
    • p60, the walk phase, touches .run/walked after a complete walk, so a partial walk stays due and the next run resumes it.
    • clock clears a stale walked.
    • reconcile.weekday, the RECONCILE environment variable and is_reconcile_run are gone. A leftover [reconcile] table is now an unknown table, and the config refuses it.
  • Docs: README and CLAUDE.md.

This merges only after lib v2.2.0, which is already released: the pipeline calls due, and earlier releases do not have it.

Test plan

  • task test: 160 passed. New: state records the toolbox's flag; a complete walk leaves walked and a partial one does not; clock clears walked.
  • task lint
  • render.txt rendered against lib v2.2.0. The check job re-renders it.

The Proton walk ran on the first run of a configured UTC weekday, tying
it to when a run is dispatched, and a walk left partial waited for the
next such day. lib v2.2.0's toolbox now decides: `due` leaves
.run/reconcile once the last complete walk, at .state/reconciled, is
RECONCILE_HOURS old, and this mirror sets 168.

The run row takes the flag; a complete walk leaves .run/walked, and
record-walk then runs the toolbox's `reconciled`, so a partial walk
stays due and the next run resumes it. pull and push over the image's
s3 are what due and reconciled keep the key through. reconcile.weekday,
the RECONCILE environment variable and is_reconcile_run are gone.
@jshvn
jshvn merged commit 5a76a7d into main Sep 23, 2026
1 check passed
@jshvn
jshvn deleted the josh/reconcile-by-age branch September 23, 2026 23:37
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