Skip to content

Add Algorithm Catalog Netlify URL to README; correct the base-dir gotcha - #227

Merged
kyle-lesinger merged 3 commits into
mainfrom
docs/algorithm-catalog-url
Aug 14, 2026
Merged

Add Algorithm Catalog Netlify URL to README; correct the base-dir gotcha#227
kyle-lesinger merged 3 commits into
mainfrom
docs/algorithm-catalog-url

Conversation

@kyle-lesinger

Copy link
Copy Markdown
Member

The Algorithm Catalog is live — https://veda-algorithm-catalog.netlify.app

README

Replaces the _(Netlify site pending — base dir algorithm-catalog)_ placeholder with the real link, so it matches the other five dashboards in the APPS !!! block.

docs/ALGORITHM_CATALOG.md — corrects a wrong gotcha

The Netlify note predicted the first deploy would fail with "base directory not found" if run before algorithm-catalog/ existed on the built branch. That is not what happens when the base directory is left blank — and we hit the real failure setting this site up.

It deploys green and serves a 404. Netlify looks for netlify.toml at the repo root, finds none (deliberately — a root config's base would hijack all six sites), and logs:

Detected 0 framework(s)
No build steps found, continuing to publishing
Starting to deploy site from '/'

…then uploads ~192 raw repo files, none of which is an index.html at the root. The deploy is marked successful, so nothing signals a problem except the 404.

The updated note documents:

  • base directory is the only UI field to set — build command and publish directory stay EMPTY so algorithm-catalog/netlify.toml is the single source of truth
  • the tell in the deploy logfrom '/' + ~192 files (broken) vs from 'algorithm-catalog/dist' + ~13 files (correct)
  • the second route to the same 404 — filling in the publish directory too. publish in netlify.toml is relative to the base dir (dist), but the UI field is relative to the repo root, so setting both resolves algorithm-catalog/algorithm-catalog/dist
  • Netlify auto-installs Node 24 for this site, matching CI — no NODE_VERSION variable needed

Verification

The 16-check Playwright suite was re-run against the live Netlify deploy (not localhost) and passes 16/16: tab order, 8 algorithm cards, all 8 thumbnails loading, search narrowing 8 → 2, all 3 seed events, and the five negative event-name cases that must each block submission. Plus / → 200, a deep link → 200 (SPA redirect working), and /thumbs/sentinel2.png → 200 image/png.

This PR is also the first one to exercise the new site's deploy preview.

The site is live at veda-algorithm-catalog.netlify.app, so replace the
"Netlify site pending" placeholder with the real link, matching the other
five dashboards.

Also correct the Netlify note in docs/ALGORITHM_CATALOG.md. It predicted the
first deploy would fail with "base directory not found" if run too early.
That is not what happens when the base directory is left blank — the deploy
goes GREEN and serves a 404. Netlify looks for netlify.toml at the repo root,
finds none (deliberately — a root config's `base` would hijack all six sites),
logs "Detected 0 framework(s) / No build steps found / Starting to deploy site
from '/'", and uploads ~192 raw repo files with no index.html among them.

Documents the tell to look for in the deploy log (`from '/'` vs
`from 'algorithm-catalog/dist'`, ~192 files vs ~13), and the second way to get
the same 404: filling in the publish directory as well, since `publish` in
netlify.toml is relative to the base dir while the UI field is relative to the
repo root, so setting both resolves algorithm-catalog/algorithm-catalog/dist.

Notes that Netlify auto-installs Node 24 for this site, matching CI, so no
NODE_VERSION variable is needed.
@netlify

netlify Bot commented Aug 14, 2026

Copy link
Copy Markdown

Deploy Preview for veda-pr-dashboard canceled.

Name Link
🔨 Latest commit 61ee323
🔍 Latest deploy log https://app.netlify.com/projects/veda-pr-dashboard/deploys/6a7f010c519bbe00083962dc

@netlify

netlify Bot commented Aug 14, 2026

Copy link
Copy Markdown

Deploy Preview for veda-dse-hub canceled.

Name Link
🔨 Latest commit 61ee323
🔍 Latest deploy log https://app.netlify.com/projects/veda-dse-hub/deploys/6a7f010cc3a9ea000849596b

@netlify

netlify Bot commented Aug 14, 2026

Copy link
Copy Markdown

Deploy Preview for veda-github-actions canceled.

Name Link
🔨 Latest commit 61ee323
🔍 Latest deploy log https://app.netlify.com/projects/veda-github-actions/deploys/6a7f010c30f17a00075c5068

@netlify

netlify Bot commented Aug 14, 2026

Copy link
Copy Markdown

Deploy Preview for veda-leave-dashboard canceled.

Name Link
🔨 Latest commit 61ee323
🔍 Latest deploy log https://app.netlify.com/projects/veda-leave-dashboard/deploys/6a7f010cdc91db0008c09f0a

@netlify

netlify Bot commented Aug 14, 2026

Copy link
Copy Markdown

Deploy Preview for veda-algorithm-catalog canceled.

Name Link
🔨 Latest commit 61ee323
🔍 Latest deploy log https://app.netlify.com/projects/veda-algorithm-catalog/deploys/6a7f010c51160b0008eb7d65

@netlify

netlify Bot commented Aug 14, 2026

Copy link
Copy Markdown

Deploy Preview for veda-aws-dashboard canceled.

Name Link
🔨 Latest commit 61ee323
🔍 Latest deploy log https://app.netlify.com/projects/veda-aws-dashboard/deploys/6a7f010cce0e360008b83d12

…s builds

The comment claimed that omitting an `ignore` filter means the site always
builds on every push. That is wrong. Because the site has a BASE DIRECTORY
set, Netlify applies its own implicit check and skips the build when nothing
under algorithm-catalog/ changed — with or without an `ignore` filter.

Confirmed against two PRs: #220 touched aws-pricing/ + cost-dashboard/ and
only veda-aws-dashboard produced a preview (the other four canceled); #227
touched only README.md + docs/ and all six canceled.

So "Deploy Preview canceled" on a docs-only PR is correct behavior, not a
misconfiguration — a preview for this app requires the PR to change a file
inside algorithm-catalog/. Documented in docs/ALGORITHM_CATALOG.md so the next
person doesn't go hunting through Netlify settings, as we just did.

The rationale for not setting an `ignore` filter is unchanged and still
stands: the older dashboards' folder-scoped `git diff` ignore skipped
PRODUCTION builds when Netlify passed equal CACHED_COMMIT_REF/COMMIT_REF,
silently dropping merged code.
…ir traps

Records what this session established, split by audience so nothing is
duplicated three times.

.clinerules.md (must-follow rules + gotchas)
- algorithm-catalog is the 6th site, no generator, cart -> prefilled PR
- the standard lives in src/rules.ts and is MIRRORED in validate_data.py;
  rules_parity_test.py fails on drift, including a new exported constant
- STAC event name: exactly 2 underscores, CamelCase hazards AND locations,
  serialize hazard ids not labels
- products carry hazards (broad, discovery) + primaryHazards (sparse,
  auto-select); keep the subset relation and keep it sparse
- .gitignore negation exception, and how to actually test it
  (git check-ignore --no-index -v; the plain form lies about tracked files)
- the two Netlify traps below

docs/DECISIONS.md (rationale)
- why the catalog enforces a vocabulary upstream never did, and why the rule
  set is mirrored mechanically rather than merely documented as duplicated
- why exactly-2-underscores is deliberately stricter than upstream, and why
  that direction is the safe one (everything we accept, DPS accepts)
- why two hazard lists exist: discovery and defaults want opposite error
  tradeoffs, and auto-selecting from the broad list proposed 28 products
- why negations beat `git add -f` for new apps
- Netlify: base dir is load-bearing, and it earns free per-app build skipping

AGENTS.md
- Node 24 on CI and Netlify (auto-installed, no NODE_VERSION var)
- the catalog's stdlib-only quick checks
- rules.ts/validate_data.py mirror rule

CLAUDE.md
- the two Netlify traps, in the Gotchas section

Both Netlify traps cost real time this session and neither is discoverable
from the code: a blank base directory produces a GREEN deploy that 404s (no
"base directory not found" error), and "Deploy Preview canceled" on a
docs-only PR is correct behavior, not a misconfiguration.
@kyle-lesinger
kyle-lesinger merged commit c44bb6e into main Aug 14, 2026
26 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant