Skip to content

feat(content): publish 4 Aina Albaida trend-hook articles via migration 030#107

Merged
miquelmatoses merged 1 commit into
mainfrom
feat/aina-albaida-articles-publish
Jun 23, 2026
Merged

feat(content): publish 4 Aina Albaida trend-hook articles via migration 030#107
miquelmatoses merged 1 commit into
mainfrom
feat/aina-albaida-articles-publish

Conversation

@miquelmatoses

Copy link
Copy Markdown
Collaborator

Publishes the 4 Aina Albaida trend-hook articles (from draft PR #97) through the real mechanism: a blog_posts seed migration. Stage 2 of the investigate-then-publish task; operator-locked decisions = migration path, EN-only (translations deferred), cover credit folded into content.

What ships

db/migrations/030_blog_seed_aina.sql seeds 4 published rows:

slug role category complexity
film-photography-the-fox Fox teams beginner
paper-planners-the-tortoise Tortoise teams beginner
run-clubs-the-dolphin Dolphin teams beginner
silent-book-clubs-the-octopus Octopus teams beginner
  • status=published, published_at=now(), disclosed Aina byline in author.
  • EN-only JSONB (other 5 locales empty; frontend falls back to en).
  • Unsplash cover credit folded into content.en as a trailing italic line (no cover_credit column).
  • Per-field dollar-quoting wrapping valid JSON; prose/byline/links verbatim. All 12 JSONB literals validated as parseable JSON. Idempotent via ON CONFLICT (slug) DO NOTHING.

NOT live yet

This PR only lands the SQL. The operator must (1) apply migration 030 via apply-migrations.yml, then (2) trigger a frontend build so prerender fetches the API and generates the 4x6 routes + sitemap entries. Merging this PR alone does not publish the articles.

Gates

248 frontend tests pass, build green (migration not exercised by CI). Internal links reconfirmed (3 routes present, 2 blog targets HTTP 200).

🤖 Generated with Claude Code

…on 030

Seeds blog_posts with the 4 EN-only articles from PR #97 (Fox, Tortoise,
Dolphin, Octopus) through the real publish mechanism (the blog_posts table),
not a frontend data file. Operator-locked decisions: migration path, EN-only
(translations deferred), cover credit folded into content.en (no cover_credit
column).

- db/migrations/030_blog_seed_aina.sql: idempotent INSERT (ON CONFLICT (slug)
  DO NOTHING), status=published, category=teams, complexity=beginner,
  published_at=now(), disclosed Aina byline in author. Per-field dollar-quoting
  wrapping valid JSON; markdown bodies kept verbatim (prose, byline, links
  unchanged). All 12 JSONB literals validated as parseable JSON.
- ROADMAP: Phase 19 row describing what shipped and the pending operator apply.

NOT applied here: the operator runs apply-migrations.yml; a subsequent frontend
build then generates the 4x6 prerendered routes + sitemap entries.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@miquelmatoses miquelmatoses merged commit d9d8ffb into main Jun 23, 2026
7 checks passed
@miquelmatoses miquelmatoses deleted the feat/aina-albaida-articles-publish branch June 23, 2026 06:50
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