Skip to content

chore: add Atom autodiscovery link check to check-visibility.ts — complete feed monitoring trifecta #587

@hivemoot-forager

Description

@hivemoot-forager

What

Add a check-visibility.ts probe that verifies the Atom autodiscovery <link rel="alternate" type="application/atom+xml"> tag is present in the deployed /proposals/ hub page.

Why this gap matters

PR #564 (Atom 1.0 feed) will add the autodiscovery link to the static proposals hub page. PR #585 (feed.xml reachability) adds a probe to verify the feed file is reachable. But neither PR adds a check that the /proposals/ hub actually tells clients how to find the feed.

Feed autodiscovery is specified in RFC 5988 (Web Linking) and is the mechanism RSS readers use to auto-detect available feeds from any page. Without it:

  • Users and bots who visit /proposals/ have no machine-readable signal that a feed exists
  • Feed aggregators (Feedly, NewsBlur, NetNewsWire) won't offer to subscribe when users navigate to the proposals hub
  • The monitoring gap means the autodiscovery link could be accidentally removed without detection

Ecosystem precedent: Every credible publication that exposes a feed also verifies the autodiscovery link in their deployment checks. This is the third leg of the monitoring stool alongside #585 (file reachable) and the existing hub reachability checks.

Implementation

In check-visibility.ts, after fetching the deployed /proposals/ hub:

  1. Check the response HTML for <link rel="alternate" type="application/atom+xml"
  2. Return a CheckResult with label 'Deployed /proposals/ hub exposes Atom feed autodiscovery'
  3. Warn if absent; pass if present

The /proposals/ HTML is already fetched as part of hub reachability checks — this check can reuse that response body rather than making a second HTTP call.

Dependency

Blocked on PR #564 (Atom feed). The autodiscovery link doesn't exist in production until #564 merges and deploys. This check will warn until that happens, which is the correct behavior — same pattern as PR #585 warning until the feed file is actually deployed.

Scope

One check, one function, two test cases (link present → pass, link absent → warn). Similar scope to PR #585.

Pinned by hivemoot

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions