docs(project-state): the awcms-astro readiness analysis, and a sharper defect - #371
Conversation
…r defect `awcms-astro`'s ADR-0021 holds all of its development until "the awcms foundation is done", on two indicators. The first — every module has a screen — is already met. Verifying the second against code rather than against the list inverts the reasonable assumption: **Every content and session contract awcms-astro actually calls is complete.** It touches five surfaces (blog post traversal with view=full/cursor/locale, media object resolution, session introspection, machine credentials, single post) and all five landed in #317/#318/#346 and ADR-0049/0050. What holds the containment is not a missing contract. One real gap was found and is closed in the same wave (#370): the media public origin had no discovery path, so a build client had to copy a server env var by hand. What remains and belongs here is two items, each needing its own ADR: the host-based public content route, and the business-scope resolver (still NO-OP fail-closed) that the Jualanku BFF needs — not the static site. `newsletter`/`social-publishing`/`src/components/ui` remain absent and block none of it. The host-resolved route entry is sharpened from "follow-up" to what the code shows, because it is not a nicety: `createBlogContentSeoFactsAdapter` builds every canonical under `/blog/{slug}` while the only content route in this repo is `/blog/[tenantCode]/[slug]`. For a host-resolved tenant that means every URL in the sitemap and every feed link points at a 404, with no gate red — the same class as a page that could never publish (ADR-0057) and a Restore that could never work (#351). Screen count corrected 29 -> 31. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: b87f379fab
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| > `createBlogContentSeoFactsAdapter` memakai `DEFAULT_PUBLIC_BASE_PATH` | ||
| > `/blog`, jadi tiap canonical/`<loc>`/tautan feed yang dipancarkan | ||
| > `seo_distribution` menunjuk **`/blog/{slug}`** — sementara satu-satunya rute | ||
| > konten yang ADA di repo ini adalah `/blog/[tenantCode]/[slug]` (ADR-0009). | ||
| > Artinya untuk tenant host-resolved, **setiap URL di sitemap dan feed |
There was a problem hiding this comment.
Correct the SEO 404 diagnosis to follow runtime wiring
For host-resolved sitemap and feed requests, the default /blog base path is not used: resolveEnabledSeoProviders() in src/modules/seo-distribution/presentation/discovery-providers.ts explicitly constructs the adapter with /blog/${tenantCode}, and tests/integration/seo-distribution.integration.test.ts verifies emitted URLs such as /blog/tenant-a/public-post. Those URLs match the shipped route, so documenting every discovery URL as a 404 incorrectly promotes a nonexistent defect and ADR to the project backlog.
AGENTS.md reference: AGENTS.md:L149-L149
Useful? React with 👍 / 👎.
Menutup permintaan "analisis kebutuhan
awcms-astroyang memerlukan kesiapanawcms". Nol kode, nol migrasi.Hasil analisis membalik asumsi yang wajar
ADR-0021 di
awcms-astromenahan seluruh pengembangannya sampai "fondasiawcmsselesai", dengan dua indikator. Yang pertama — tiap modul punya layar — sudah terpenuhi. Memverifikasi yang kedua ke kode, bukan ke daftarnya, memberi jawaban yang tak saya duga:Seluruh kontrak konten dan sesi yang benar-benar dipanggil
awcms-astroSUDAH LENGKAP.GET /api/v1/blog/posts(view=full+ cursor +?locale=)GET /api/v1/blog/posts/{id}GET /api/v1/media/objects?ids=GET /api/v1/auth/session/api/v1/access/machine-credentialsJadi yang menahan repo itu bukan kontrak yang hilang.
Satu gap nyata — ditemukan dan sudah ditutup (#370)
publicUrlmedia dibangun dariNEWS_MEDIA_R2_PUBLIC_BASE_URL, env sisi server. Klien build tak punya cara menemukannya, padahal CSP-nya wajib menyebut host itu diimg-srcsaat build, sebelum satu objek pun ditarik. Satu-satunya alternatif: menyalin env var dengan tangan.Yang tersisa, dipisahkan dengan jujur
Bukan milik repo ini — resolusi gambar artikel, kartu share, dan pilihan bentuk
img-srcsemuanya keputusan sisiawcms-astro.Milik repo ini, dua, masing-masing butuh ADR sendiri:
createBlogContentSeoFactsAdaptermembangun tiap canonical di bawah/blog/{slug}, sementara satu-satunya rute konten di repo ini adalah/blog/[tenantCode]/[slug](ADR-0009). Untuk tenant host-resolved itu berarti setiap URL di sitemap dan setiap tautan feed menunjuk halaman 404, dan tak satu gerbang pun merah — kelas cacat yang sama dengan page-yang-tak-pernah-bisa-terbit (ADR-0057) dan Restore-yang-tak-pernah-bisa-bekerja (fix(blog-content): /admin/blog's Restore control could never work #351).newsletter/social-publishing/src/components/uitetap belum ada (diverifikasi: 21 modul, direktori itu tidak ada) — dan tak satu pun memblokirawcms-astro.Hitungan layar admin dikoreksi 29 → 31.
🤖 Generated with Claude Code