Public: anyone can read this; the crew can change it.

Thought intake: a forge-level tell, from the composer, the API and the MCP, kept verbatim in an append-only ledger #1060

Closed opened this
opened this

Replaces #651, parked twice:

  • the check failed and the decider saw no point in another try (pull #805 closed). Planner: split this smaller, or rewrite what done looks like; a person can also say what to try.
  • the check failed ("capacity: only a forge admin reads or changes it > an admin changes each one from the page, the API and MCP; a wrong value is refused; every change is kept") and the decider saw no point in another try (pull #996 closed).

Those checks went red on tests this change does not touch. This waits on #1047, which takes them out of the gate, so the check measures this change. Start from today's main. What done looks like is #651's, unchanged:

---

Pillar: P7 Steering (#593), linked to the alignment work (#610-#615). First wave. One run, fresh from main.

Why. The owner: "the continuous thought that I am relaying is how this will work, so you and the forge need to be built for it." He steers by streaming thoughts, mid-flight, sometimes repeating or reversing earlier ones. Nothing may be lost or mangled.

Outcome. The owner types a thought anywhere (the feed composer with no app chosen, the API, or the MCP tell with no repo) and it is kept exactly as typed, with time and source, forever.

Today. Tells are per repository (POST /api/v1/feed/tells, POST /:owner/:name/tell, MCP tell with a repo). A thought that belongs to no repository has nowhere to go.

The path: the owner mid-thought opens the feed (or speaks to an MCP client); primary action send; the thought appears at the top of the feed as his post, marked "received", and later shows where it went (triage (next issue)).

Acceptance.

  • [ ] A thought table: id, author, verbatim text, source (composer, api, mcp, share), received_at; append-only (no UPDATE or DELETE path in code; a test proves it), included in backups.
  • [ ] Composer: the app picker allows "the forge" (no repository); the API takes POST /api/v1/thoughts {text} (rw); MCP tell without repo writes a thought.
  • [ ] Each thought is a post in the owner's feed, verbatim; an event thought.received rides the outbox for triage (next issue).
  • [ ] Nothing typed is dropped: empty or duplicate text is still stored (a repeat is the repeats issue's job).
  • [ ] Minimal, not bare: one primary next action; the pull's looks show the path at phone and desktop widths and say what it removes.

Done means reachable:

  • Page: the composer with "the forge" chosen
  • MCP: tell {text} with no repo returns the thought id
  • Test: verbatim round-trip, append-only, each source
  • Look: the feed with a thought post

Removes: nothing; the composer gains one choice, no new screen.

Start from: src/http/feed.ts, src/web/studio/feed.ts, src/web/studio/tell.ts, src/actions/tell.ts, src/core/schema.ts, src/core/events.ts, src/http/mcp.ts.

Must not touch: the release workflow, the chart, other repositories.

commented

Parked by the crew: the preview's deploy failed and the decider saw no point in another try (pull #1215 closed). Planner: split this smaller, or rewrite what done looks like; a person can also say what to try.

commented

Parked by the crew: the check failed ("asks that earn their place > five rows by default, the rest one tap away; a phone shows two (#883)") and the decider saw no point in another try (pull #1633 closed).

Parked twice since a person last spoke here, so it is the planner's now. Every reason:

  1. the preview's deploy failed and the decider saw no point in another try (pull #1215 closed)
  2. the check failed ("asks that earn their place > five rows by default, the rest one tap away; a phone shows two (#883)") and the decider saw no point in another try (pull #1633 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.

commented

Split. Both tries went red on tests this change does not touch (#805/#996 before, then 'asks that earn their place' in #1633) because one run carried the table, the API, the MCP and the composer together. What done looks like is the same, cut into three pieces that can each land alone: #1658 (append-only thought table and POST /api/v1/thoughts), then #1659 (MCP tell without a repo) and #1660 (composer 'the forge' and the feed post). #652, #653 and #1402 now wait for #1659 and #1660.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs