Compare commits
merge into: tudor/school_compare:feat/similar-schools-nearby
tudor/school_compare:main
tudor/school_compare:fix/school-page-selective-flag
tudor/school_compare:feat/header-facts-and-flags
tudor/school_compare:fix/la-average-cached-failure
tudor/school_compare:fix/search-row-facts
tudor/school_compare:fix/header-nursery-and-gender
tudor/school_compare:feat/phase-order-child-path
tudor/school_compare:fix/desktop-clear-keeps-search
tudor/school_compare:fix/modal-close-tap-target
tudor/school_compare:feat/single-state-school-group
tudor/school_compare:feat/school-type-groups-faith
tudor/school_compare:fix/filter-options-not-from-results
tudor/school_compare:feat/mobile-filter-sheet
tudor/school_compare:fix/e2e-after-half-mile-default
tudor/school_compare:fix/map-popup-view-button
tudor/school_compare:fix/default-radius-half-mile
tudor/school_compare:fix/toolbar-one-line
tudor/school_compare:fix/phase-filter-exact-match
tudor/school_compare:fix/phase-filter-global
tudor/school_compare:fix/map-pane-header
tudor/school_compare:feat/map-list-rows
tudor/school_compare:fix/phone-toolbar-width
tudor/school_compare:feat/results-map-view
tudor/school_compare:feat/results-toolbar
tudor/school_compare:feat/compare-limit-per-phase
tudor/school_compare:copy/remove-em-dashes
tudor/school_compare:fix/jump-sheet-under-bottom-bar
tudor/school_compare:fix/nearby-journey-waits-for-smooth-scroll
tudor/school_compare:fix/nearby-scroll-journey-clicks-offscreen-card
tudor/school_compare:fix/nearby-schools-order-by-distance
tudor/school_compare:feat/similar-schools-nearby
tudor/school_compare:fix/release-check-diagnostics
tudor/school_compare:feat/release-identity-and-reliability-gate
tudor/school_compare:docs/current-truth-and-legacy-inventory
tudor/school_compare:fix/og-image-route-group
tudor/school_compare:feat/school-page-place-links
tudor/school_compare:feat/about-blog-flags
tudor/school_compare:fix/payload-import-map
tudor/school_compare:fix/payload-initial-migration
tudor/school_compare:feat/about-and-blog
tudor/school_compare:fix/destinations-national-grain
tudor/school_compare:fix/airflow-fixed-admin-password
tudor/school_compare:feat/ks4-destinations
tudor/school_compare:fix/dark-mode-map-popup-contrast
tudor/school_compare:fix/distance-flag-off-absence-copy
tudor/school_compare:fix/navigation-source-soft-nav
tudor/school_compare:feat/place-school-attributes
tudor/school_compare:feat/place-analytics
tudor/school_compare:fix/mobile-hero-search
tudor/school_compare:fix/suggest-reopens-over-results
tudor/school_compare:fix/dark-map-fade
tudor/school_compare:fix/hero-dropdown-clipping
tudor/school_compare:feat/school-autosuggest
tudor/school_compare:fix/flags-runbook
tudor/school_compare:feat/feature-flags
tudor/school_compare:fix/place-phase-links
tudor/school_compare:feat/place-alphabetical-sort
tudor/school_compare:fix/e2e-canonical-and-robots
tudor/school_compare:feat/place-multiple-authorities
tudor/school_compare:fix/place-table-alignment
tudor/school_compare:fix/place-presentation-to-main
tudor/school_compare:fix/place-title-brand-doubling
tudor/school_compare:fix/place-page-presentation
tudor/school_compare:fix/place-phase-variants
tudor/school_compare:fix/locality-collision-skip
tudor/school_compare:feat/w2-location-layer
tudor/school_compare:feat/seo-metadata-c1
tudor/school_compare:fix/sitemap-any-year-data
tudor/school_compare:fix/staging-noindex
tudor/school_compare:feat/seo-crawl-hygiene-main
tudor/school_compare:feat/hero-artwork
tudor/school_compare:fix/homepage-truth-and-rhythm-main
tudor/school_compare:feat/brand-logo-artwork
tudor/school_compare:fix/homepage-truth-and-rhythm
tudor/school_compare:feat/schoolcompare-brand
tudor/school_compare:feat/detail-gias-fields-remove-unwired
tudor/school_compare:fix/special-schools-not-failing
tudor/school_compare:fix/detail-allthrough-admissions-phase
tudor/school_compare:fix/expert-signoff-shouldfixes
tudor/school_compare:fix/gias-blank-name-codes
tudor/school_compare:feat/compare-api-enrichment
tudor/school_compare:feat/gias-code-dictionaries
tudor/school_compare:feat/compare-chart-mobile-readability
tudor/school_compare:feat/pr-comment-agent
..
pull from: tudor/school_compare:fix/nearby-schools-order-by-distance
tudor/school_compare:main
tudor/school_compare:fix/school-page-selective-flag
tudor/school_compare:feat/header-facts-and-flags
tudor/school_compare:fix/la-average-cached-failure
tudor/school_compare:fix/search-row-facts
tudor/school_compare:fix/header-nursery-and-gender
tudor/school_compare:feat/phase-order-child-path
tudor/school_compare:fix/desktop-clear-keeps-search
tudor/school_compare:fix/modal-close-tap-target
tudor/school_compare:feat/single-state-school-group
tudor/school_compare:feat/school-type-groups-faith
tudor/school_compare:fix/filter-options-not-from-results
tudor/school_compare:feat/mobile-filter-sheet
tudor/school_compare:fix/e2e-after-half-mile-default
tudor/school_compare:fix/map-popup-view-button
tudor/school_compare:fix/default-radius-half-mile
tudor/school_compare:fix/toolbar-one-line
tudor/school_compare:fix/phase-filter-exact-match
tudor/school_compare:fix/phase-filter-global
tudor/school_compare:fix/map-pane-header
tudor/school_compare:feat/map-list-rows
tudor/school_compare:fix/phone-toolbar-width
tudor/school_compare:feat/results-map-view
tudor/school_compare:feat/results-toolbar
tudor/school_compare:feat/compare-limit-per-phase
tudor/school_compare:copy/remove-em-dashes
tudor/school_compare:fix/jump-sheet-under-bottom-bar
tudor/school_compare:fix/nearby-journey-waits-for-smooth-scroll
tudor/school_compare:fix/nearby-scroll-journey-clicks-offscreen-card
tudor/school_compare:fix/nearby-schools-order-by-distance
tudor/school_compare:feat/similar-schools-nearby
tudor/school_compare:fix/release-check-diagnostics
tudor/school_compare:feat/release-identity-and-reliability-gate
tudor/school_compare:docs/current-truth-and-legacy-inventory
tudor/school_compare:fix/og-image-route-group
tudor/school_compare:feat/school-page-place-links
tudor/school_compare:feat/about-blog-flags
tudor/school_compare:fix/payload-import-map
tudor/school_compare:fix/payload-initial-migration
tudor/school_compare:feat/about-and-blog
tudor/school_compare:fix/destinations-national-grain
tudor/school_compare:fix/airflow-fixed-admin-password
tudor/school_compare:feat/ks4-destinations
tudor/school_compare:fix/dark-mode-map-popup-contrast
tudor/school_compare:fix/distance-flag-off-absence-copy
tudor/school_compare:fix/navigation-source-soft-nav
tudor/school_compare:feat/place-school-attributes
tudor/school_compare:feat/place-analytics
tudor/school_compare:fix/mobile-hero-search
tudor/school_compare:fix/suggest-reopens-over-results
tudor/school_compare:fix/dark-map-fade
tudor/school_compare:fix/hero-dropdown-clipping
tudor/school_compare:feat/school-autosuggest
tudor/school_compare:fix/flags-runbook
tudor/school_compare:feat/feature-flags
tudor/school_compare:fix/place-phase-links
tudor/school_compare:feat/place-alphabetical-sort
tudor/school_compare:fix/e2e-canonical-and-robots
tudor/school_compare:feat/place-multiple-authorities
tudor/school_compare:fix/place-table-alignment
tudor/school_compare:fix/place-presentation-to-main
tudor/school_compare:fix/place-title-brand-doubling
tudor/school_compare:fix/place-page-presentation
tudor/school_compare:fix/place-phase-variants
tudor/school_compare:fix/locality-collision-skip
tudor/school_compare:feat/w2-location-layer
tudor/school_compare:feat/seo-metadata-c1
tudor/school_compare:fix/sitemap-any-year-data
tudor/school_compare:fix/staging-noindex
tudor/school_compare:feat/seo-crawl-hygiene-main
tudor/school_compare:feat/hero-artwork
tudor/school_compare:fix/homepage-truth-and-rhythm-main
tudor/school_compare:feat/brand-logo-artwork
tudor/school_compare:fix/homepage-truth-and-rhythm
tudor/school_compare:feat/schoolcompare-brand
tudor/school_compare:feat/detail-gias-fields-remove-unwired
tudor/school_compare:fix/special-schools-not-failing
tudor/school_compare:fix/detail-allthrough-admissions-phase
tudor/school_compare:fix/expert-signoff-shouldfixes
tudor/school_compare:fix/gias-blank-name-codes
tudor/school_compare:feat/compare-api-enrichment
tudor/school_compare:feat/gias-code-dictionaries
tudor/school_compare:feat/compare-chart-mobile-readability
tudor/school_compare:feat/pr-comment-agent
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
cd1c5d1e1a |
docs: revise the spec to the design that survived staging
PR Checks / Frontend Typecheck + Tests (pull_request) Successful in 1m15s
PR Checks / Backend Smoke (pull_request) Successful in 9s
PR Checks / Build Backend (no push) (pull_request) Successful in 19s
PR Checks / Build Frontend (no push) (pull_request) Successful in 1m18s
PR Checks / Build Pipeline (no push) (pull_request) Successful in 11s
PR Checks / AI Code Review (Claude) (pull_request) Successful in 57s
The spec described the tier system as the design of record. It is gone, so the document was describing something the code deliberately does not do. The revision note and the "why not, having built it the other way first" passage are kept rather than overwritten. The mistake is the instructive part: treating a preference as a constraint inverted the ranking, and the stopping rule added to prevent weak distant matches is what guaranteed six Catholic schools and no community school down the road. A spec that quietly presents the second design as the plan teaches nobody why the first one failed. The mockup link is annotated as one revision behind rather than silently left to look current. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
|
|
cd6a45bf7d |
refactor: rename similar → nearby, so the code says what the section does
The section ranks on distance and is headed "Other schools nearby", but every identifier still called it "similar" — the exact drift that leaves a later reader trusting a name over the behaviour. Mechanical: files, the module, the payload key, the type, the components, the prop. No behaviour change; the suites are unchanged in count and still green. Free to do now because #150 has not merged, so the payload key rename needs no lockstep deploy. Uses of "similar" that are ordinary English — progress measures compared to similar pupils, and unrelated comments — are untouched. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
|
|
5c0ccc693d |
fix: order nearby schools by distance, not by how alike they are
Reported from staging: a Catholic primary showed six Catholic primaries, none of them close enough to be a real option, and omitted the community school down the road. Three causes, compounding. Ranking put tier before distance, so a faith match at 2.9 miles outranked a community school at 0.3. The ENOUGH=3 stopping rule — added so a cap of six would not drag in weak distant matches — filled the row from the best tier before it ever widened, which is what made every card Catholic. And a 3-mile tier-1 radius is sane for a secondary and most of a city for a primary, whose catchments are routinely under a mile. The premise was backwards. For a parent, distance is a constraint and intake is a preference; a school beyond a primary catchment is not a weaker option, it is not an option. So distance now decides the order and nothing else does. The hard filters are untouched — they were always where the defensibility lived. Similarity survives as chips on the card: reported, so a reader applies their own weighting, rather than ranked, so we apply ours for them. Reach is capped per phase (primary 2, secondary 6, post-16 10) as a sanity bound, not a target: ordering already handles density, so the cap only decides what happens where an area is sparse. A primary with nothing inside two miles now renders no section, which is the honest answer. Deleted: the tier system, the stopping rule, the tier-dependent lede, the `tier` field, the tier-3 fallback chip and its style. select_similar also stops taking is_secondary — it reads the phase from the subject's own row, so no caller can hand it one that disagrees with the data. The heading is now "Other schools nearby". The hard filters still guarantee a comparable set, but nothing ranks on likeness, so the heading no longer says it does. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> |
||
|
|
151cf4bc80 |
Merge pull request 'feat: similar schools nearby on the detail page' (#150) from feat/similar-schools-nearby into main
Stage (build -> staging -> E2E gate) / prepare (push) Successful in 1s
Stage (build -> staging -> E2E gate) / Build Backend (FastAPI) (push) Successful in 44s
Stage (build -> staging -> E2E gate) / Build Frontend (Next.js) (push) Successful in 1m25s
Stage (build -> staging -> E2E gate) / Build Pipeline (Meltano + dbt + Airflow) (push) Successful in 2m14s
Stage (build -> staging -> E2E gate) / Deploy to Staging (push) Successful in 6s
Stage (build -> staging -> E2E gate) / E2E Journeys against Staging (push) Failing after 42s
Reviewed-on: #150 |