Stage 1 Homepage
The Homepage introduces VyDex, features the Entry with the latest material activity, shows four additional recent Entries, and summarizes the Domains represented in the selected release. This page is for maintainers and coding agents changing Homepage selection, presentation, or responsive behavior.
Purpose and ownership
The Homepage owns:
- Selection of one featured Entry and four distinct recent Entries.
- The wide Hero, Entries grid, full-width Premise band, and populated Domain overview.
- Automatic Domain membership counts and the approved Homepage descriptor mapping.
- Homepage composition of Frontier Atlas and Entry Preview.
- The private-preview message shown only when a non-production preview has no Entries.
It does not own canonical records, material-activity calculation, release loading, Entry projection, canonical URLs, the shared site shell, search, filters, donations, or backend behavior.
Inputs and outputs
createHomepagePresentationModel receives the selected release's validated current_entries. It returns a presentation model with two parts:
selection.latest_updatecontains the first Entry after deterministic latest-material-activity ordering.selection.recent_entriescontains the next four Entries and excludes the featured Entry.populated_domainscontains each represented controlled Domain, its public label, its approved descriptor, and its automatic Entry count.
Each Entry contributes once to every distinct Domain in its authored membership. Domains with no Entries are omitted. Rows sort by descending count, with canonical Domain order breaking ties. The selectors copy their inputs and never mutate Entries or release arrays.
Normal flow
- Release Construction supplies the ordered current public Entries and their resolved relationships.
- The Homepage selector copies and sorts the Entries with the shared latest-material-activity comparator.
- The selector assigns the first Entry to the Hero and the next four to the Entries grid.
- The Domain overview counts distinct Domain membership, removes zero-count rows, and applies the approved descriptors.
Homepage.astrorenders the model through the Stage 1 Site Shell. All content is present in the generated HTML.
User-facing behavior
The Hero uses one H1 with the deliberate sequence Every breakthrough comes with an *, muted asterisk., and We are the asterisk. The supporting copy explains the evidence-ledger purpose without limiting coverage to a fixed set of technologies. Read Recent Entries links to /#latest, while Why VyDex links to /about/.
The featured Entry uses Homepage Entry Preview presentation with an H2 title. The Entries section shows four equal-weight H3 cards in a regular two-column grid. The second recent card uses the approved navy tone; the featured card and the other recent cards use paper. Each card shows its display-priority Domain, linked title, complete canonical Claim, exact update date, and Claim Status. There are no filters or placeholder controls.
The full-width Premise band explains that VyDex keeps claims, evidence, caveats, and update history together. It also states that VyDex does not rank hype or predict winners. A large low-opacity asterisk sits behind the text as decoration and is hidden from assistive technology.
The Domain overview uses the heading What we cover, and why. and a non-interactive semantic list. Each numbered row shows the Domain label, its approved descriptor, and a release-derived count pill. Rows do not look or behave like links.
Responsive behavior
The Homepage opts out of the shared contained Main width so each section can control its own width and padding. Its content aligns to the project-owned 1400px boundary used by the Header.
At 1024px and wider, the Hero uses two columns with an 80px gap and the Entries section uses a regular 2×2 grid. Below that breakpoint, both sections become single-column without changing reading order. Domain rows rearrange on narrow screens, but descriptors remain complete and stay on one line. The supported 375px, 768px, 1024px, 1440px, and approximately 1920px viewports must not scroll horizontally.
Domain descriptor governance
HOMEPAGE_DOMAIN_DESCRIPTORS maps every controlled Domain. Each descriptor requires maintainer approval, uses Title Case, and must fit on one line at every supported width. A new Domain cannot change the schema, Methodology, documentation, tests, or Homepage mapping until its descriptor is approved. If a descriptor no longer fits, shorten the approved wording instead of wrapping, clamping, or truncating it.
Failure behavior
Production rendering stops when release loading or validation fails. Homepage selection also rejects an empty production Entry collection. Only the separate private-preview state may render No entries have been added yet. That message cannot enter release data or production output.
Internal edge cases
- The featured Entry must not reappear in the recent collection, even when several Entries share the same activity date.
- Domain membership may contain the same controlled value through copied or malformed input. Counting still treats each Entry once per Domain.
- Equal Domain counts follow canonical Domain order rather than alphabetical order or object-key order.
- Non-material title corrections may change visible text but cannot change Homepage ordering.
Cross-system edge cases
- Publication Revisions owns material activity. The Homepage must not derive freshness from editable records or Date Updated alone.
- Entry Preview owns the complete Claim, controlled labels, safe Markdown, and same-site Entry navigation. The Homepage only selects presentation and tone.
- Frontier Atlas owns the wide-layout, color, type, spacing, radius, shadow, focus, and reduced-motion contracts.
- Stage 1 Site Shell owns the sticky Header, Footer, document order, and mobile navigation. The Homepage only requests its wide Main layout mode.
- Repeatable Release Publication verifies generated links, routes, and public bytes; the Homepage does not create or synchronize release identity.
Invariants
- Latest means latest material activity, not importance, popularity, or title order.
- The featured Entry is excluded from recent Entries.
- Exactly four recent Entries appear when at least five current Entries exist.
- Homepage cards expose title-only Entry navigation and Claim Status only.
- Topic Trail previews retain the standard full-status treatment.
- Complete Claims and navigation remain in static HTML with no runtime fetch.
- Domain rows remain informational and non-interactive.
- The page adds no search, filter, score, ranking, prediction, subscription, or donation control.
- Ordinary builds and tests never create release state.
Implementation landmarks
src/features/homepage/— Homepage selection, Domain counting, rendering, and responsive composition.src/components/entry-preview/— Shared Entry projection and Homepage card presentation.src/styles/— Project-owned wide-layout and presentation tokens.tests/features/— Selection, counting, ordering, and immutability checks.tests/browser/— Homepage geometry, overflow, keyboard, and accessibility checks.
Before changing the Homepage
Check that release resolution remains the only source of Entry truth; selection and Domain counting do not mutate inputs; Domain mapping remains exhaustive; featured exclusion and the four-card limit remain explicit; Entry Preview responsibilities stay shared; and browser checks cover every supported breakpoint.