Repository navigation
feat(@packages/crawl-admission,@packages/crawl-article): add host admission package - #1344
Conversation
…ission package Publisher restrictions produced 874 log lines in the week to 2026-11-07 (403s, challenges, 429s, auth responses), and the crawl ladder retries them with nested persona, transport and fixed ten-second 429 loops that no shared boundary bounds across the fleet. This adds the shared package the later wiring slices use, unwired and not enforcing (the plan rolls out report-only first): - An exact-hostname routing policy with a versioned default, the observed 429 hosts at ten-second start spacing (two seconds otherwise), and classifications for 429, 401, LinkedIn 999/403, AO3 418 and the sendibm 451 host. - Retry-After parsing (delta-seconds or HTTP-date against the response Date, five-second margin, 60s then 600s fallback, never shortened). - A DynamoDB host-admission provider on the existing rate-limits table: conditional lease acquisition behind both time gates, owner-checked release, monotonic cooldowns, and store failures kept distinct from contention. It also pins the CIA reading-room landing-page rejection, already in crawl-article, with tests for the exact URL that produced 145 image errors. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01QeLuXVVXVXRXWKTHbqhnPr
|
@claude Review this PR. Use your Read tool to read the local file Context
|
|
Claude finished @FagnerMartinsBrack's task in 1m 5s —— View job I'll analyze this and get back to you. |
High Priority Issues (Must Fix)None found Medium Priority Issues1.
|
|
@claude Fix the review issues. Use your Read tool to read the local file Context
Review to AddressSee the review comment above this one for the issues to fix. |
|
Claude finished @FagnerMartinsBrack's task in 48s —— View job Review issues fixed
Change: I widened the pattern instead of switching to New tests: real Not done: the five low-priority suggestions, which the auto-apply instructions leave out of scope. |
Accept every hostname a WHATWG URL returns in normalizeHostname, including underscore labels and bracketed IPv6 literals, so a link to such a host is paced by the default policy instead of throwing a ZodError. Co-authored-by: Fayner Brack <FagnerMartinsBrack@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
Fixed the medium-priority issue in 6c1f8aa: |
|
@claude Review this PR. Use your Read tool to read the local file Context
|
|
Claude finished @FagnerMartinsBrack's task in 56s —— View job Review of 6c1f8aa
I found no high or medium priority issues. The full review is posted separately by the review workflow. |
High Priority Issues (Must Fix)None found Medium Priority IssuesNone found The fix in 6c1f8aa solves the earlier medium issue. I also checked the DynamoDB provider against the infra and found no mismatch:
Low Priority Suggestions1.
|
|
@claude address all low prio issues |
|
Claude finished @FagnerMartinsBrack's task in 22m 34s —— View job Low-priority review notesPushed in 061fe2f. Of the seven notes, four are fixed and three are left with reasons.
|
…riority review notes Report a broken row or a failed admission invariant by throwing instead of as store-unavailable, pin that a lease holder's own second admission is turned away until it releases, drop the plan name from the evidence strings, and assert the legs that answered in the CIA ladder tests. Co-authored-by: Fayner Brack <FagnerMartinsBrack@users.noreply.github.com> Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
|
@claude Review this PR. Use your Read tool to read the local file Context
|
|
Claude finished @FagnerMartinsBrack's task in 24s —— View job I'll analyze this and get back to you. |
High Priority Issues (Must Fix)None found Medium Priority IssuesNone found I checked the changes in 061fe2f against the earlier review notes:
Low Priority Suggestions1. Commit 6c1f8aa has no Conventional Commits scope
2. Points left for the wiring stepThese are unchanged from the last round, and the reasons given for leaving them seem sound:
When the crawl starts calling |
|
@claude address all low prio issues |
|
Claude finished @FagnerMartinsBrack's task in 31s —— View job Low-priority review notes
The run for this comment already finished on 2026-11-09 and pushed 061fe2f. The review on 061fe2f found no high or medium issues and raised three low-priority notes. This run made no code changes, because none of the three can be handled on this branch without a decision from you:
|
Plan 24, step 1: the foundation package. Nothing imports it yet, so nothing is enforced.
What
@packages/crawl-admission:crawl-routing-2026-11-08) with 22 hosts at ten-second start spacing and two seconds for every other host;crawl-articlefor the landing-page rejection that is already on main. They cover the real URL, a valid PDF, the homepage requested on purpose, and every transport leg returning the homepage.The handoff's appendix patch was applied as written, plus one planned change: the last sentence of the
jest.config.jscomment is removed, because this package has noc8 ignoreannotations.Verification
pnpm nx run @packages/crawl-admission:check: 52 tests pass at 100% coverage, and lint and knip pass.pnpm nx run @packages/crawl-article:check: 1142 tests pass at 100% coverage.pnpm checkpassed in the pre-commit hook.Generated by Claude Code