Skip to content

docs(plans): land epic #3150 batch 1 — generic chat attachment intake, ownership and on-demand reading design - #3523

Merged
schlessera merged 6 commits into
mainfrom
epic/3150-attachments
Nov 4, 2026
Merged

schlessera merged 6 commits into
mainfrom
epic/3150-attachments

Conversation

@schlessera

@schlessera schlessera commented Nov 3, 2026 •

Copy link
Copy Markdown
Owner

Closes #3151
Refs #3150

What changed

This PR lands batch 1 of epic #3150 (epic/3150-attachments) on main:

Sub-PR Issue Squash on epic
#3301 #3151 4cd19855219c8bcdfafb8a1104161a90093c5796

This PR adds nothing beyond it, apart from merge commit b741ae0ad, which brings origin/main (90aebd916) into the epic. One conflict, in docs/plans/README.md: main had retired shipped plans and added an Open work column. The resolution keeps main's table and adds the chat-attachments.md row, owned by #3150.

Why this shape

This follows the maintainer ruling of 2026-11-02 for the 0.45.0 epic run, under which each batch lands on main as one PR with a merge commit, so every sub-PR's squash stays bisectable on main. Under the maintainer's later ruling, it lands only after the full ready-candidate proof, under the integration lease.

Proof

On b741ae0ad, with a private TMPDIR:

bun install --frozen-lockfile        # clean
bun run typecheck                    # clean
bun run build                        # clean
bun run lint                         # all gates clean
bun run check:pr --base origin/main  # Local preflight passed: 1180 pass, 0 fail

check:pr receipt

{"version":1,"kind":"brain-check-pr-receipt","head":"7e1a23ef87c55e30215080ea57bce442a077cd2e","base":"origin/main","mode":"focused","startedAt":"2026-11-04T03:38:31.732Z","finishedAt":"2026-11-04T03:40:13.397Z","checks":[{"name":"all lint and leakage gates","categories":["changeset"],"outcome":"passed","elapsedMs":10890.156235},{"name":"environment documentation","categories":["changeset"],"outcome":"passed","elapsedMs":129.10731400000077},{"name":"pending changeset package names","categories":["changeset"],"outcome":"passed","elapsedMs":111.09675699999934},{"name":"contribution changeset","categories":["changeset"],"outcome":"passed","elapsedMs":20.813367999999173},{"name":"affected fast invariants","categories":["verify","unit"],"outcome":"passed","elapsedMs":90492.828612}]}

Checklist

Anything left open

Open sub-PR #3342 (generic chat file admission) is not part of this batch.

🤖 Generated with Claude Code

schlessera and others added 2 commits November 2, 2026 18:44
…demand reading (#3301)

Deliver the #3151 design spike for epic #3150 on its integration branch:

- docs/plans/chat-attachments.md: source inventory from picker to provider,
  a capability matrix from installed source and a keyless pdfjs-dist probe,
  byte-first routing precedence, the outcome vocabulary, the neutral
  composer-upload route, reference/draft/outgoing/message ownership,
  pool accounting and race-safe cleanup, the bounded read_attachment tool,
  320px/desktop mocks with state/copy, compatibility, proposed contract
  changes and per-child proof briefs. Recommendations are listed apart
  from rulings.
- docs/decisions/chat-attachments.md: the maintainer rulings of
  2026-10-29 and 2026-11-02 with links, and rejected alternatives.
- D52: record the approved generic-original lifetime and limit amendment.
- scripts/sync-project.ts: put epic #3150 on the Answer quality track.

No runtime behaviour changes.

Refs #3151

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
@schlessera schlessera added this to the 0.45.0 milestone Nov 3, 2026
@schlessera schlessera added type: spike Time-boxed investigation. The deliverable is a written decision, not code. area: ui-server Hono app factory: turn coordinator, auth, session catalog, routes, cron. area: ui-react React chat/files/voice components, stores, WebSocket transport. area: backends AgentBackend implementations and the seam they share. labels Nov 3, 2026
@schlessera
schlessera marked this pull request as ready for review November 3, 2026 23:30
@schlessera
schlessera marked this pull request as draft November 4, 2026 03:40
@schlessera
schlessera marked this pull request as ready for review November 4, 2026 03:40
@schlessera
schlessera merged commit 0760f78 into main Nov 4, 2026
43 of 55 checks passed
@schlessera

Copy link
Copy Markdown
Owner Author

Landed as merge commit 0760f7832f3d81f897f7925b417e2a53dd2465b8. Its parents are main 54e47ae55 and head 7e1a23ef8, and its tree 7e22de832 equals the tested head tree. The final refresh, 7e1a23ef8, merged main 54e47ae55 into the epic without conflicts, picking up #3517 and #3533. check:pr passed on it (1196 pass, 0 fail), and the receipt is in the body. The full ready-candidate proof ran under the integration lease: CI run 41768602996 passed all 17 selected jobs, with none skipped or cancelled. epic/3150-attachments is fast-forwarded to the merge commit. #3151 is closed on 0.45.0, and epic #3150 stays open.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: backends AgentBackend implementations and the seam they share. area: ui-react React chat/files/voice components, stores, WebSocket transport. area: ui-server Hono app factory: turn coordinator, auth, session catalog, routes, cron. type: spike Time-boxed investigation. The deliverable is a written decision, not code.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

ui-server: design generic attachment intake, routing and content access

1 participant