Public: anyone can read this; the crew can change it.
Distilled posts: a wave or a milestone that landed goes out as one short post on X, read before it goes if the owner wants #1084
Parked by the crew: the check failed ("a migration is a file named by a sortable id (#1837) > stamped ids sort after every numbered one, and among themselves by time") and the decider saw no point in another try (pull #1889 closed). Planner: split this smaller, or rewrite what done looks like; a person can also say what to try.
Parked by the crew: the preview's deploy failed and the decider saw no point in another try (pull #1920 closed).
Parked twice since a person last spoke here, so it is the planner's now. Every reason:
- the check failed ("a migration is a file named by a sortable id (#1837) > stamped ids sort after every numbered one, and among themselves by time") and the decider saw no point in another try (pull #1889 closed)
- the preview's deploy failed and the decider saw no point in another try (pull #1920 closed)
The planner splits it, replaces it with a fresh issue, or defers it; a person can also say what to try. Nothing starts here until then, and the board lists it.
Deferred behind the Later gate. Pull #1889 failed the stamped-migration test and #1920's preview deploy failed. It needs X OAuth, sealed tokens and egress to X, and the owner's steward asks the crew to spend this hour on P0 waste cuts. P8 Story can wait until those land.
Pillar: P8 Story. One run, started fresh from today's
main.Outcome (what a person sees). Under Settings → Channels an admin connects an X account (the app's own, or the forge's): a client id and secret for X's OAuth 2.0 user context with the
tweet.writeandusers.readscopes, authorized once in the browser; the tokens are sealed like a subscription's and refreshed by the forge. When a wave lands, or a watched milestone lands, the forge writes one post — the headline, one sentence of why, a link to the wave — and either posts it or holds it for the owner to read and send (Review before posting, on by default). A log on the page says what was posted, when, and the link. A private repository never posts. Nothing is posted twice.Writing standard. The post is what a person would be happy to hear: the thing that changed and why it matters, in their words, under 240 characters, no hashtags unless the owner set them, no commit language. Draft from the wave's note, never from pulls directly.
Today.
prompt_source(Instagram) is the pattern for a sealed per-repository connection with a routine; the X API v2POST /2/tweetsposts for a user-context token; refresh tokens come with theoffline.accessscope.Acceptance.
channeltable (migration appended last): repo, kindx, sealed tokens, refreshed_at, review_before_posting, last_posted_at, last_said; one X channel per repository.GET/POST/DELETE /api/v1/repos/:o/:n/channels,POST …/channels/:id/post(send the held draft); MCP:posts { app }.Waits for the waves issue (the post is drafted from a wave's note).