Skip to content

docs(project-state): the awcms-astro readiness analysis, and a sharper defect - #371

Merged
ahliweb merged 1 commit into
mainfrom
docs/project-state-astro-readiness
Aug 3, 2026
Merged

docs(project-state): the awcms-astro readiness analysis, and a sharper defect#371
ahliweb merged 1 commit into
mainfrom
docs/project-state-astro-readiness

Conversation

@ahliweb

@ahliweb ahliweb commented Aug 3, 2026

Copy link
Copy Markdown
Owner

Menutup permintaan "analisis kebutuhan awcms-astro yang memerlukan kesiapan awcms". Nol kode, nol migrasi.

Hasil analisis membalik asumsi yang wajar

ADR-0021 di awcms-astro menahan seluruh pengembangannya sampai "fondasi awcms selesai", 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-astro SUDAH LENGKAP.

Yang dipanggil Status
GET /api/v1/blog/posts (view=full + cursor + ?locale=) #317, #346
GET /api/v1/blog/posts/{id}
GET /api/v1/media/objects?ids= #318
GET /api/v1/auth/session ✅ ADR-0049
/api/v1/access/machine-credentials ✅ ADR-0049
session handoff BFF #347, ADR-0050

Jadi yang menahan repo itu bukan kontrak yang hilang.

Satu gap nyata — ditemukan dan sudah ditutup (#370)

publicUrl media dibangun dari NEWS_MEDIA_R2_PUBLIC_BASE_URL, env sisi server. Klien build tak punya cara menemukannya, padahal CSP-nya wajib menyebut host itu di img-src saat 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-src semuanya keputusan sisi awcms-astro.

Milik repo ini, dua, masing-masing butuh ADR sendiri:

  1. Rute konten host-based. Dan entri ini saya pertajam dari "follow-up" jadi apa yang kodenya tunjukkan: createBlogContentSeoFactsAdapter membangun 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).
  2. Business-scope resolver — masih NO-OP fail-closed; dibutuhkan BFF portal Jualanku, bukan situs statisnya.

newsletter/social-publishing/src/components/ui tetap belum ada (diverifikasi: 21 modul, direktori itu tidak ada) — dan tak satu pun memblokir awcms-astro.

Hitungan layar admin dikoreksi 29 → 31.

🤖 Generated with Claude Code

…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>

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 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".

Comment thread docs/PROJECT_STATE.md
Comment on lines +731 to +735
> `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

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge 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 👍 / 👎.

@ahliweb
ahliweb merged commit 3dad5ce into main Aug 3, 2026
10 checks passed
@ahliweb
ahliweb deleted the docs/project-state-astro-readiness branch August 3, 2026 10:59
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