Skip to content

Page audit B12 re-crawl, a malformed id is not-found (P-23), and a pause during a concierge apply stands (CONC-002) - #620

Merged
NewWorldVenture merged 5 commits into
mainfrom
claude/port-to-main-7q6vtf
Sep 27, 2026
Merged

NewWorldVenture merged 5 commits into
mainfrom
claude/port-to-main-7q6vtf

Conversation

@NewWorldVenture

Copy link
Copy Markdown
Owner

What this is

Three changes.

1. B12: every public page re-crawled on production after today's merges

  • 1,092 pages were crawled at 1280 and 390 px on production 1180c77d.
  • Every flag was one of three things:
    • an intended 404;
    • a sandbox egress 502, which is not the site;
    • one real defect: /f/no-such-page answered 500. This is P-23 below.
  • The B7 fixes are live. For example, /kid-login in German reads "PIN anzeigen".
  • finalaudit.md gets a "B12 — post-release production re-crawl" section, and the B12 row is marked done.

2. P-23: a malformed id is not-found, not a crash

/f/[id] passed any path segment straight to a uuid column. Postgres rejected the cast, and the page threw a 500 instead of a 404. Three signed-in pages had the same shape:

  • /dashboard/social/posts/[id]
  • /kids/submit/[assignmentId]
  • /marketplace/creators/[id]

Each page now checks isUuid (lib/utils/validation.ts) before its first read and answers not-found. tests/a-malformed-form-link-is-not-found.test.ts renders the public form page with a malformed id, and checks on all four pages that the guard comes before the first read.

3. CONC-002: a pause made while a concierge plan applies is not overwritten

This was found by the owner's review of #586. executeQueuedRunAction claims a run (status = 'approved', state = 'executing', approved_at), applies the plan, then either stamps the run executed or hands it back.

The bug:

  • The stamp matched status alone.
  • The hand-back did not match state.
  • pauseRun keeps status = 'approved' and changes only state. So a pause made during the apply was replaced by completed, or by awaiting_approval.
  • An older action also finalized a newer claim.

The fix: both writes now match status, state and this action's approved_at.

tests/a-paused-run-stays-paused-while-its-plan-applies.test.ts holds the materializer and applies every .eq to the row. It fails 4 of 7 on the previous code, which are the owner's four cases. The ai_tool_calls attempt predicate from the same review was already on main (lib/ai/tools/execute.ts).

Checks

  • The merge of origin/main at 1a63a8d3 (Next 16) had one conflict, in finalaudit.md's batch table. It keeps B12 as done and adds B13.
  • tsc is clean. Lint shows 15 warnings, all pre-existing (the budget is 15).
  • Full unit suite on the merged tree: 1,710 files, 21,448 tests passed.
  • After the concierge fix, the 14 test files that drive or read the action pass.
  • No migrations.

🤖 Generated with Claude Code

https://claude.ai/code/session_01DXw2nu25BjyRfA6Fg3YiMS


Generated by Claude Code

…12, P-23)

The production re-crawl (B12: 1,092 public pages at 1280 and 390 on
1180c77) found /f/no-such-page answering HTTP 500. A form id is a uuid,
and any other string makes Postgres refuse the query (22P02). The page
rethrows a read error on purpose, so that a transient failure never 404s a
live form, which is what turned a mistyped link into a crash.

Probing all 26 signed-in [id] routes with a malformed id found the same
crash on /dashboard/social/posts/[id], /kids/submit/[assignmentId] and
/marketplace/creators/[id]. isUuid (lib/utils/validation.ts) now answers
not-found for all four before any read. A real read failure still throws.

tests/a-malformed-form-link-is-not-found.test.ts renders /f/[id] against a
mocked database and holds each signed-in page's check ahead of its first
read. It fails 4 of 7 on the previous code. The German-money test's
kid-submit fixture now uses a uuid assignment id, as real ones are.

finalaudit.md: B12 is recorded as done, with its crawl table, P-23, and
the live check of the B7 fixes on production.

tsc clean. Lint: 0 errors, 15 warnings. 21,441 tests in 1,709 files pass.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DXw2nu25BjyRfA6Fg3YiMS
… branch; batch table keeps B12 done and B13

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DXw2nu25BjyRfA6Fg3YiMS
…002)

executeQueuedRunAction claims a queued run (status approved, state
executing, approved_at = the claim), applies the plan, then stamps it
executed or hands it back for a retry. The stamp matched status alone and
the hand-back did not match state, so a parent's pause during the apply
(pauseRun keeps status 'approved' and moves only state) was replaced by
'completed' or 'awaiting_approval', and an older action finalized a newer
claim. Both writes now match the whole claim.

Found by the owner's review of #586. The new test holds the materializer
and applies every .eq to the row; it fails 4 of 7 on the previous code.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DXw2nu25BjyRfA6Fg3YiMS
@vercel

vercel Bot commented Sep 27, 2026 •

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Actions Updated
bubaly Ignored Ignored Sep 27, 2026 10:44pm UTC

Request Review

…ex regenerated

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DXw2nu25BjyRfA6Fg3YiMS
…148 rows)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DXw2nu25BjyRfA6Fg3YiMS
@NewWorldVenture
NewWorldVenture merged commit f48dca7 into main Sep 27, 2026
7 checks passed
NewWorldVenture pushed a commit that referenced this pull request Sep 27, 2026
…t keeps both top entries and recounts Register B

Both sides added a dated entry at the top (the MAIN reconciliation, the
API sweep) and both edited the Session B counts. The rows merged
cleanly, so the header is recounted from them: 14,229 = 13,663 NOT
STARTED + 535 IN PROGRESS + 21 FIXED + PASS + 9 BLOCKED + 1 FAIL.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01DXw2nu25BjyRfA6Fg3YiMS
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