Commons: add post@1, the broadcast utterance - #211
Merged
Conversation
Completes the fourth cell of the artifact/speech × bounded/unbounded 2×2 that text-types.md already names: `post` as the speech/unbounded contract, alongside note (kept), message (sent), and article (published). - docs/commons/post.md: new type file — schema (`text` required, `format`, `url`), the no-date-field rationale (uttering is creating, same reasoning as message@1), conventions (parentId threading, embed/location/syndicated-to cross-type labels, entityId authorship), and the scheduled-posts open question. - docs/commons/README.md: post moves from "deliberately absent" into the namespace list and type table as Draft. - docs/commons/text-types.md: the two "not yet in the commons" worked-example rows and the fourth-contract section now point at post.md. - docs/commons/message.md: cross-references post.md from its "Deliberately excluded" section. - packages/commons: POST export, added to defineCommonsTypes' test coverage and read-compat core checks. No core changes needed — the ATProto RFCs (#15, #16) the issue discusses as a would-be blocker are already closed, and the type itself doesn't depend on #203 (settable createdAt), which only affects importing an existing archive into this type. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011bz5a8shrGQsz5tdFB3z4i
🦋 Changeset detectedLatest commit: 024e924 The changes in this PR will be included in the next version bump. This PR includes changesets to release 1 package
Not sure what this means? Click here to learn what changesets are. Click here if you're a maintainer who wants to add another changeset to this PR |
The two new post rows used markdown links ([`post`](./post.md)) instead of the plain backtick code spans every other row in the table uses. The doc already links to post.md from the fourth-contract section above the table, so the link wasn't needed here either. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_011bz5a8shrGQsz5tdFB3z4i
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Closes #204. Adds
org.haverstack/post@1— the broadcast-speech contract that completes the fourth cell of the artifact/speech × bounded/unbounded 2×2text-types.mdalready names, alongsidenote(kept),message(sent), andarticle(published).docs/commons/post.md(new) — the type file: schema (textrequired,format,url), the no-date-field rationale (uttering is creating — same reasoning asmessage@1's missing date field), conventions (parentIdthreading in-stack,embed/location/syndicated-tocross-type labels,entityIdauthorship), and the scheduled-posts open question, resolved as "scheduling is the scheduler's state, not the utterance's."docs/commons/README.md—postmoves out of "deliberately absent from the initial set" into the namespace list and type table asDraft(it now has a concrete intended writer: cuibonobo.com's ephemera stream).docs/commons/text-types.md— the two "not yet in the commons" worked-example rows (Foursquare-style check-in, social media post) and the fourth-contract section now point atpost.md.docs/commons/message.md— cross-referencespost.mdfrom its "Deliberately excluded" section.packages/commons— newPOSTexport, added todefineCommonsTypes's drift/read-compat test coverage..changeset/post-type.md— minor bump for@haverstack/commons.No
@haverstack/corechanges needed. The ATProto RFCs (#15, #16) the issue discusses as a would-be blocker are already closed. #203 (settablecreatedAtfor owner-side imports) stays open, but it only blocks migrating an existing dated archive intopost@1— the type itself is fully expressible today, since a post's only meaningful clock is nativecreatedAt.Spec
No
@haverstack/corebehavior change — this is a Schema Commons docs +@haverstack/commonspackage addition, governed bydocs/commons/README.md § Governance.Verification
All green. One
packages/coretest (deleteAttachment > ... beyond the first page) failed on the first run withIdGenerationOverflowError— a pre-existing, timing-dependent flake unrelated to this change (confirmed by rerunning it in isolation, and by the factpackages/coreisn't touched in this PR); it passed on rerun and the full suite is green.Notes for reviewers
text-types.md's intro ("Three commons types carry free-form text...") and title unchanged — the doc's own structure treats note/message/article as "the three contracts" and introducespostas an addition via its own "fourth contract" section, so I kept that narrative shape rather than renumbering.message.md's changelog got a new "Proposed, amended" entry notingpost@1discharges the broadcast-shape forward-reference it previously carried;message@1itself staysProposed(no concrete writer yet) — unrelated topost's status.Co-Authored-By: Claude Sonnet 5 noreply@anthropic.com
Generated by Claude Code