~ knotless Search/
↑↓ move↵ open⇧↵ all results

chadtmiller.com/knotless

git that lives in your Atmosphere account

knotless.dev
1 collaborator

knotless 0.13.0 Latest 2 packages, 1 image

1
10

The e2e world's index wait passes on any day

Merged
Merged chadtmiller.com asked to merge into main from chadtmiller.com/knotless:harness/world-today

What changes

The world dates every new ref's push again. The e2e and shots world re-dates each record to a fixed time, and writes the time of each new ref's push into the index itself, as no record carries it. It found those pushes by their key ending in .0. Since Deleting a ref deletes its record a new ref's generation starts at the time, so that key ends in the time instead, and none was found: the home feed, profile activity and profile repositories showed those pushes at the real time. The world now finds them as the pushes with nothing before them, which only a ref's making has. It also leaves ref records' new createdAt as pushed rather than re-dating them through the PDS, as before they had one.

The wait says what it still waits for. When the wait for the index times out, its error now names each page that shows today's date, with the text around it, and each piece of text it has not seen.

Why

Since midnight UTC on 3 Nov, every e2e run failed with only "timed out waiting for the index", so every batch in the merge queue was ejected. The world waits until no page shows today's date. On 2 Nov, those pushes' date was hidden by the day runner minutes free up on, which the wait leaves out.

How it was checked

This pull's first e2e run, with the new error, named the pages and the pushes. The e2e and shots checks run the fix.

Changeset: none

🤖 Generated with Claude Code

Approved

This pull changes the e2e world's index wait in harness/shots/world.mjs. When the wait times out, the error now lists what is still missing: each page that shows today's date, with the text around it, and each expected string not yet seen. The conditions are the same as before. Object.keys and Object.values of views line up, so the page-to-name mapping is right.

  • Title and body: the title says the wait "passes on any day", and the body says the fix follows in this pull. The diff only adds diagnostics, so the date-dependent failure is not fixed here. If this is meant as a diagnostic step, retitle it so it doesn't read as a fix, and expect to follow up once the e2e run names the page. The e2e, shots and check runs were still queued, so nothing in them says yet which page it is.
  • Cost: the added page('/bob.test') and page(views['org-members']) fetches now run on every poll. The old && chain skipped them until the other conditions held. This is minor.
Approved

The second commit adds the fix the first one lacked, in harness/shots/world.mjs. The world now finds a new ref's push with WHERE before IS NULL instead of uri LIKE '%.0', and stops stamping dev.knotless.ref records. The push table does have a before column (see the schema in crates/knotless-serve/src/index.rs), so the query is valid. The diagnostics from the first commit are unchanged.

  • Body out of date: the description still says only that the timeout message is better and that "the fix follows". It now includes a fix, so say so: the push lookup changed and ref records are no longer stamped. Say too that this is the suspected cause of the date failure.
  • Not yet confirmed: the e2e and shots runs on this commit were still running, so nothing shows yet that the wait passes today. If it still times out, the new message will name the page, so that run decides whether to merge.
  • Ref records: these keep their real push times now. The new comment says no page shows them. I couldn't check that, so the e2e result is the test.
Merged as c95d298