# 🤖 Review brief: the platform changelog, code

You are the independent reviewer of a finished build. The author is
Claude. Do not edit any file.

## What to read

1. The spec, rev 2: `docs/superpowers/specs/2026-10-06-platform-changelog-design.md`,
   and the earlier findings `CODEX-FINDINGS-CHANGELOG-1.md` (all four were
   taken; check the fixes hold).
2. The platform branch: `git diff origin/main...platform-changelog` in
   `/home/paulca/amadan.net/carlos/platform-changelog`, excluding the
   generated `docs/site/changelog.json` (read it as output, not code).
   Code is `internal/changelog/`, `cmd/changelog/`, the `Line` and
   `Parse` additions in `internal/docsite/docsite.go`, `docs/site/people.json`,
   `docs/site/changelog-links.json`, and README step 10.
3. The website: commit `59b9cf9` on branch `platform-changelog` in
   `/home/paulca/github.com/carlosframework/website-changelog`
   (`git show 59b9cf9 -- . ':!src/_data/docschangelog.json' ':!src/docs/cli.md'`).
   `src/changelog.njk` renders the page; `hack/sync-docs.mjs` vendors
   the data; `hack/check-docs.mjs` gates the build.

## Fixed: do not reopen

The spec's four rulings; that change lines are verbatim records; that the
copy is in a separate human review (do not review wording).

## What to look for

1. **Wrong output on real history.** The generator has been run over all
   28 tags. Pick changes in `docs/site/changelog.json` and check them
   against `git log` and `git for-each-ref refs/amadan/closed` (fetch
   with `git fetch origin '+refs/amadan/closed/*:refs/amadan/closed/*'`
   if missing): the range a release claims, the own commits a change
   counts, credit, discussions, docs links. Name the commit.
2. **Public safety.** Anything that could put an email address, a
   private repo link or unescaped markup on the public page: the
   generator, `CheckPublic`/`Redact`, the gate, and the template
   (Nunjucks autoescape, the `notesMd` filters, `| safe`).
3. **Gate holes.** A committed file that is wrong and still passes
   `go test ./internal/changelog/` and `npm run check`.
4. **Robustness at release time.** What breaks when the next release is
   cut and step 10 is followed: a new tag, a new contributor, a bullet
   with no bold lead, a release with no first-parent commits, gh or
   amadan failing.
5. **Code quality** where it would mislead the next person: dead code,
   names that say the wrong thing, tests that pass for the wrong reason.

Run `go test ./internal/changelog/ ./internal/docsite/` (set
`GOCACHE` to a writable directory) if you can; say if you could not.

## Output

A numbered list, each with severity (P1 publishes something wrong or
breaks the page or gate; P2 misleading or fragile; P3 nit), file:line,
evidence, and a proposed fix. Then one line: accept, accept with fixes,
or reject.
