Skip to content

docs(specs): post-cutover-blog audit sync#111

Merged
themightychris merged 1 commit into
mainfrom
fix/cutover-audit-fixes
May 30, 2026
Merged

docs(specs): post-cutover-blog audit sync#111
themightychris merged 1 commit into
mainfrom
fix/cutover-audit-fixes

Conversation

@themightychris
Copy link
Copy Markdown
Member

Summary

Spec hygiene from a spec-drift audit run after the cutover-blog + screen-gaps work. No behavior changes — just bringing the specs in line with what the code already does.

File Change
`specs/data-model.md` TagAssignment.taggableType section adds `blog_post` (the entity overview + Zod schema both already include it; only the section body lagged)
`specs/screens/person-detail.md` Drops the "(deferred field)" qualifier on slackHandle; notes Contact also shows email for self+staff
`specs/api/blog.md` BlogPost shape documents `featuredImageUrl` (derived from `featuredImageKey`)
`specs/api/people.md` Endpoints table adds `PATCH /api/people/:slug/newsletter`
`specs/behaviors/app-shell.md` Typeahead cap 8 → 12 (matches the hook's 4-per-category × 3); adds Blog to footer Column 1
`specs/architecture.md` Adds 5 env vars (`SLACK_TEAM_HOST`, `RESEND_API_KEY`, `CFP_NOTIFICATION_FROM`, `CFP_SITE_HOST`, `CFP_DATA_RELOAD_SECRET`) + a health-endpoints note for the `/api/health/ready` readiness probe

Audit false-positives flagged

For the record — the auditor reported three "cutover-blocking" findings that turned out to be already-implemented:

  • `/project-buzz/` legacy redirect (legacy-redirect.ts:134)
  • `Person.bio` schema max-length (person.ts:10)
  • `/api/auth/*` rate-limit cap (rate-limit.ts:79)

Real functional gaps (sign-out-all-devices endpoint+UI, #33 account-level write) stay as separate issues — not part of this PR.

Test plan

  • Spec edits only; no code touched. No tests apply.
  • CI's lint/type-check will pass since nothing in `apps/` or `packages/` changed.

🤖 Generated with Claude Code

Spec hygiene from a spec-drift audit run after the cutover-blog +
screen-gaps work. No behavior changes — just bringing the specs in line
with what the code already does:

  data-model.md TagAssignment.taggableType  — adds `blog_post` (the
    entity-overview diagram and the Zod schema both include it; only
    the section body lagged behind).

  screens/person-detail.md sidebar         — drops the "(deferred
    field)" qualifier on slackHandle (the field is now public and
    rendered) and notes that the Contact section also shows email
    for self+staff per the screen's existing Authorization table.

  api/blog.md BlogPost shape               — documents the
    featuredImageUrl response field the serializer derives from
    featuredImageKey.

  api/people.md endpoints table            — adds
    PATCH /api/people/:slug/newsletter (already implemented).

  behaviors/app-shell.md                   — corrects the typeahead
    cap from 8 → 12 (4 per category × 3) to match what the SPA hook
    actually returns, and adds the Blog link to footer Column 1.

  architecture.md                          — adds five env vars
    already wired in env.ts (SLACK_TEAM_HOST, RESEND_API_KEY,
    CFP_NOTIFICATION_FROM, CFP_SITE_HOST, CFP_DATA_RELOAD_SECRET) plus
    a Health-endpoints note documenting /api/health/ready's role as
    the readiness probe.

The audit also flagged three "cutover-blocking" items that turned out
to be false positives — the auditor hallucinated against the code:

  - legacy-redirect.ts /project-buzz/<slug> case: already implemented
    at legacy-redirect.ts:134
  - Person.bio Zod max(10000): already at person.ts:10
  - /api/auth/* rate-limit cap 10/min: already at rate-limit.ts:79

Real functional gaps (sign-out-all-devices endpoint+UI exposing the
existing revocation sentinel; #33 account-level write endpoint) stay
as separate issues.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@themightychris themightychris merged commit 9f953d6 into main May 30, 2026
1 check passed
@themightychris themightychris deleted the fix/cutover-audit-fixes branch May 30, 2026 20:46
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