Skip to content

Support optional explicit X announcement handles - #116

Merged
bradvin merged 1 commit into
mainfrom
feat/optional-x-announcement
Oct 19, 2026
Merged

bradvin merged 1 commit into
mainfrom
feat/optional-x-announcement

Conversation

@foo-bender

@foo-bender foo-bender commented Oct 19, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • Support optional explicit announcementXHandle listing frontmatter, independent of GitHub contributor attribution.
  • Trim outer whitespace and one optional leading @; preserve case; strict 1–15 ASCII letters/digits/underscores. Reject all URLs and non-string values. Omitted/blank means no announcement tag.
  • Preserve through source parsing, validation, SQL insert/update/clear/change detection and announcement-facing source. Add nullable announcement_x_handle migration and contribution/review documentation. No listing backfill or inferred handles.

Coordination / approval boundary

Companion website PR: bradvin/agentfirst.directory-site#45.
Recommended order after explicit production approval: site migration/deploy first, then content publisher PR. Both repos carry the byte-identical named 0007_add_announcement_x_handle.sql; content has no site-only stats migration 0006. Migration history avoids duplicate ALTER; publishing also applies migrations before sync. Do not merge or trigger production publishing without Brad's approval.

The existing website contribution path copies an agent prompt that preserves this exact field into a content PR. No issue/backend submission path or announcement poster exists in these repos. Downstream announcement integration must explicitly consume this field, prepend @ only when present, and never fall back to GitHub/product social URLs.

Verification

Tests-first RED -> GREEN. Node 24.22.0, Bash 5.3: npm ci; npm test (140 pass locally, including companion-site migration test); npm run validate:content; npm run validate:content -- --require-submitters. Generated all SQL/batches; executed 9 batches against both content and website SQLite schemas with real existing content (64 tools, 16 categories), attribution preserved, repeat sync idempotent. Explicit field accepted/rejected/cleared round trips, no inference, asset enrichment and trusted GitHub metadata generators retain supplied handle. Parent reran 58 focused tests. Independent fresh-context read-only Codex review of exact HEAD 7eb2297 and companion commit: no blocking/high/medium findings.

No production remote D1/cache/IndexNow operation, live submission, actual X post or contributor comment performed. Privileged Publish D1 path is not exercised premerge. Unchanged dependencies report 9 audit findings; no dependency scope expansion.

@bradvin
bradvin merged commit c8b6e8d into main Oct 19, 2026
1 check passed
@bradvin
bradvin deleted the feat/optional-x-announcement branch October 19, 2026 12:16
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.

2 participants