Review: rebuild Y Combinator mirror from PR #31 - #117
Conversation
Y Combinator mirror (startup directory, founders, people, blog, library, launches, SAFE documents and static sections) contributed by @myberry2026 in aiming-lab#31. Carried onto current main as site 25 / port 40024 by the reviewer. The original submission targeted the 15-site tree and claimed port 40015, which current main assigns to merriam_webster. Registry, port exposure and the site count in websyn_start.sh follow main's current form. Excluded from the original branch: the personal absolute-path fallback in site_runner.py, gitignored scraped_data/ and screenshots/ payloads, and unrelated top-level files (scratch/, venv_seed/, agent_demo/ data dumps, REQUEST.md, RESPONSE.md, PROGRESS.md, CHANGELOG.md, SKILL.md, extra_launches.json, .agents/skills copies, AGENTS.md additions).
…am capture The submitted mirror hot-linked every image, shipped fabricated section content, and reproduced about half of the landing page. This replaces the data and presentation layer with upstream-sourced material, keeping the site, routes and benchmark purpose contributed in aiming-lab#31. Data - source_data.json is the tracked input: 1,183 companies (batch, industry, stage, status, team size, location, group partner, news), 2,293 founders with their upstream bios, 106 staff across 14 teams, 279 library articles, 200 launches with dates and vote counts, 60 blog posts, 47 FAQ entries and the real SAFE document set. Every field is extracted from a captured ycombinator.com response; absent upstream values are omitted, not invented. - seed_data.py rebuilds instance_seed/y_combinator.db from it at image build time (Dockerfile step + .build-generated-seed), so the data is reviewable in the diff instead of shipping as an opaque blob. - Replaces content that was generated rather than sourced: the FAQ read "We invest 00,000"; blog titles carried their own body text; library, RFS, investors and people copy was written for the mirror; company websites held a founder's Twitter profile. Assets - 3,962 inventoried files (112 MB) under static/images and static/external_cache, each with its sha256 and source URL in asset_inventory.json and verified at build time by check_asset_inventory.py. Previously 0 of 999 companies had a local logo and every founder avatar was an expired S3 pre-signed URL, so /founders rendered 84 broken images. - Outfit and Source Serif 4 are self-hosted; the page no longer calls fonts.googleapis.com. The 0-byte yc-logo.png is replaced by the real mark. Presentation - Landing page carries all nine upstream sections in order, with type and spacing set from computed styles measured on ycombinator.com at 1440px: 84px italic serif hero, 48px italic section headings, 510px reading column, muted #8a8575 band, 12px media radius, 60px italic CTA, black footer. - Nav matches upstream: 64px bar, centred brand mark, About/Companies/ Resources menus, Apply action. - Directory and founder listings paginate, so /companies and /founders no longer render 999 and 1,079 rows in a single 1.2 MB response. - /founders/<slug> redirects to the founder's company profile and /documents to /safe, as upstream does; the invented Hacker News page is gone and unknown paths return 404 instead of silently redirecting to the homepage. - Library bookmarks, launch upvotes and newsletter sign-up are real persisted actions for the benchmark accounts. Reset stays byte-identical across boot, write, reset and restart.
…ifiers Replaces the 50 submitted rows. Those pointed at the wrong port, used bare integer ids, sent 26 of 50 upstream_url values back at the mirror, and several depended on content that was generated rather than sourced: launch descriptions and dates that did not exist, W24 and S23 batches absent from the data, a "Startup School" library entry with no such row, and a hand-written Hacker News page that is not part of ycombinator.com. The accepted set anchors on facts the directory listing does not show — team size, founding year, location, stage, group partner, library view counts — so a task cannot be answered from the result cards or from prior knowledge of YC. Three are stateful: a library bookmark, a launch upvote, and registration followed by a newsletter subscription. Filters narrow to small candidate sets with near-miss distractors, such as Oklo at 50 against Rigetti at 51. verify/verify_lib.py derives each expected answer from the frozen initial snapshot instead of hard-coding it, and requires every "largest"/"most" to be unambiguous there, so grading fails loudly rather than silently drifting if the seed changes. Checks cover run packaging, state isolation, the pages that actually carry the answer, and the requested facts in the final answer.
Found by opening the mirror next to ycombinator.com in a browser rather than only in the capture harness: - The mobile drawer was only hidden inside the 768px media query, so at desktop width every page rendered a stray bulleted link list under the masthead. - The hero forced "YC turns builders into" onto one line. Upstream breaks after "builders", with "into" leading the italic second line; the split now comes from the captured markup instead of a literal in the builder. - The two menu groups draw in toward the centred brand mark and the account actions sit at the far right, as upstream lays them out. Nav links are 14px Outfit and the Apply pill is a 40px black serif-italic button, both measured. - The Paul Graham footnote keeps its quotation marks and puts the attribution on its own right-aligned line.
Independent blind review — WHR-031 Y Combinator (first pass, frozen)Reviewer model: Claude Opus 5 ( Under review
Coverage and result: 18/18 tasks judged, 18 PASS, 0 FAIL. Each run was judged only from its task text and rubric, the full trajectory, the step screenshots, and the initial/after SQLite snapshots. Factual answers were cross-checked against the frozen
All 15 read-only runs left One packet observation, not a defect: Contamination disclosure. Before writing this verdict I read only Not executed / out of scope for this pass
Frozen artifacts
This blind result judges the frozen executions only. It does not certify source fidelity, visual fidelity, the verifier implementation, or merge readiness. Nothing here is a merge recommendation, and no PR was merged or marked ready. |
Blind-review reconciliationThe frozen first-pass blind verdict has been checked against the exact candidate and deterministic results:
One blind observation was independently confirmed and classified as non-blocking: Jessica Livingston's People bio displays literal Markdown link syntax around “Founders at Work.” It does not hide or alter any Task 13 fact, and both grading paths pass. It is disclosed as a presentation limitation rather than reopening the frozen candidate. Fresh pre-handoff checks also confirm PR #117 is Draft, CLEAN and MERGEABLE at |
|
Thanks for your contribution! @jackjin1997 @myberry2026 |
PR #31 supplied the initial Y Combinator contribution, but its asset pull request is empty, its remote media links have expired, and its branch now conflicts with current
main. This reviewer-owned candidate preserves the contributor's commit and rebuilds the mirror into a reproducible 29th site on port 40028.The resulting mirror uses tracked, upstream-sourced data for 1,179 companies, 2,282 founders, 106 staff profiles, 279 library items, 200 launches, 60 blog posts, 47 FAQs, 11 documents, and eight static pages. It serves all runtime media locally, restores the homepage's scroll/timed/hover motion with reduced-motion and no-JavaScript fallbacks, and provides 18 accepted tasks with snapshot-bound deterministic verifiers. Search ordering now has stable slug tie-breakers, including duplicate-name/title regressions.
Original contribution: #31 by @myberry2026
Candidate head:
386b467bf0f9a13065200589c93d3741f287a228onjackjin1997:review/pr-31-y-combinatorAsset candidate: HF dataset PR #83, immutable commit
4a9b9dd20cc3704e069bbd297d2b7522c3d14b38y_combinator.tar.gz: 121,085,653 bytes, SHA-25643c666bda84680f327ce64720b2baa2f9e427acb751fe81900967f267e9176f4Validation at the exact candidate head and asset commit:
149bb93c3fec656d761ab90b4cc259544e2d86b8896fda69183496c1b168dd9b.reset-allin five seconds, and a 4,852,535,309-byte image.The 18 runs are explicitly guided diagnostics: the operator had already read implementation and verifier facts. They establish reproducible UI/verifier compatibility but are not an independent blind judgment.
Review status:
claude-opus-5) verified all 234 allowlisted files and judged 18/18 tasks PASS (public verdict, verdict SHA-256cc06c24b139caa105de8b2ae94f924a3a7bba070a026a2b60319d7ed40d7452e).assets-revisionto the resulting dataset-main commit and recheck asset reachability before merging this PRKnown non-blocking presentation issue: Jessica Livingston's People bio renders the literal Markdown link syntax around “Founders at Work”; all Task 13 facts remain visible and both blind and deterministic grading pass. The blind review did not evaluate autonomous-agent success, and this PR makes no such claim.
This PR is Ready for maintainer review. It may be reviewed while HF #83 is open, but it must not merge until the HF asset is merged,
.assets-revisionpoints to the resulting immutable dataset-main commit, and the archive hash/reachability check passes.