Daily Git Summary

# Standup summary for Monday, May 18, 2026

Git history for May 18 shows four commits. One feature commit introduced an Alpaca-backed news wire across ingest, storage, API, and web surfaces; the other three commits updated workflow docs, beads state, and the previous standup summary.

Commits
4
Files Touched
35
Insertions
1963
Deletions
52

## Summary

Primary Delivery

Commit `906fe411` added a new `services/ingest-news` service, news persistence in `packages/storage`, API endpoints in `services/api`, and a live news view in `apps/web/app/terminal.tsx` plus `apps/web/app/news/page.tsx`.

Docs And Workflow

Commits `62aae708`, `687a2170`, and `04baeceb` updated the previous standup report, beads state, `deployment/docker/workspace-root/package.json`, and the repo-level `AGENTS.md` instructions.

Standup Framing

Yesterday’s visible product work centered on making live Alpaca news available end to end. The remaining activity was project hygiene and documentation.

## Changes Made

update beads 687a2170 2026-05-18 03:15 -0400 1 file

Added one line to `deployment/docker/workspace-root/package.json`. The local git history does not show more context beyond the file touch and commit subject.

docs(general): add 2026-05-17 standup summary 62aae708 2026-05-18 09:05 -0400 2 files

Added the prior day’s report at `docs/general/2026-05-18-standup-summary-2026-05-17.html` and updated `.beads/issues.jsonl`.

docs/general/2026-05-18-standup-summary-2026-05-17.html .beads/issues.jsonl
add alpaca news wire across ingest api and web 906fe411 2026-05-18 16:55 -0400 31 files +1407 / -50

- Added a new ingest service in `services/ingest-news/src/index.ts` that backfills Alpaca news, subscribes to the Alpaca news websocket, resolves symbols, and publishes `NewsStory` payloads to NATS.
- Extended shared contracts in `packages/types/src/events.ts` and `packages/types/src/live.ts`, plus new storage support in `packages/storage/src/news.ts` and `packages/storage/src/clickhouse.ts`.
- Wired the API to store, fan out, and expose news via `/news` and `/history/news` in `services/api/src/index.ts` and live-session updates in `services/api/src/live.ts`.
- Added a web route in `apps/web/app/news/page.tsx`, a news pane and drawer in `apps/web/app/terminal.tsx`, and related styling in `apps/web/app/globals.css`.
- Updated runtime packaging and local/dev deployment surfaces, including `deployment/docker/docker-compose.yml`, Dockerfiles, `scripts/dev.ts`, and `scripts/deploy.ts`.
- Added tests in `packages/storage/tests/news.test.ts`, `services/ingest-news/tests/symbols.test.ts`, and adjusted `apps/web/app/terminal.test.ts` plus `packages/types/tests/live.test.ts`.

services/ingest-news/src/index.ts packages/storage/src/news.ts services/api/src/index.ts apps/web/app/terminal.tsx apps/web/app/news/page.tsx apps/web/app/globals.css
update turn docs and beads workflow 04baeceb 2026-05-18 21:32 -0400 1 file

Edited `AGENTS.md` to update turn-document and beads workflow guidance.

## Context

This summary is based on local git history between `2026-05-18 00:00 -0400` and `2026-05-19 00:00 -0400`. The repository uses Bun, TypeScript, NATS/JetStream, ClickHouse, and a Next.js web app, so the main feature commit spans service ingestion, shared types, persistence, API delivery, and the UI.

## Important Implementation Details

### News ingestion was introduced as a first-class service

`services/ingest-news/src/index.ts` authenticates against Alpaca, backfills recent news, subscribes to live updates, resolves symbols, validates payloads with `NewsStorySchema`, and publishes them onto the repo’s bus layer.

    const backfill = await fetchBackfill();
    for (const item of backfill.reverse()) {
      await publishStory(item);
    }

    if (msg === "authenticated") {
      ws.send(JSON.stringify({ action: "subscribe", news: ["*"] }));
    }

### API and live session support were expanded for news

`services/api/src/index.ts` now ensures the news table exists, subscribes to a news consumer, fans out live updates, and exposes both recent and paginated history endpoints.

    if (req.method === "GET" && url.pathname === "/news") {
      const limit = parseLimit(url.searchParams.get("limit") ?? "100");
      const data = await fetchRecentNews(clickhouse, limit);
      return jsonResponse({ data });
    }

### The web terminal gained a dedicated news surface

`apps/web/app/terminal.tsx` added a live-only news pane, a per-story drawer, history loading, and a new `/news` route entry point via `apps/web/app/news/page.tsx`.

    if (features.news) {
      subscriptions.push({ channel: "news", snapshot_limit: LIVE_OPTIONS_HEAD_LIMIT });
    }

    export function NewsRoute() {
      const state = useTerminal();
      return (
        <PageFrame title="News">
          <div className="page-grid page-grid-news">
            <NewsPane state={state} className="news-pane-full" />
          </div>
        </PageFrame>
      );
    }

## Expected Impact for End-Users

Live Terminal

Users now have a dedicated news wire surface in the web terminal, including summary rows, story details, and a direct link to the source article.

Coverage

News is now available alongside the repo’s existing live feeds, with shared symbol resolution and storage that make the data retrievable through API history endpoints.

Current Boundary

The UI copy in the news pane explicitly marks news as live-only in v1, so replay users should not expect the same behavior there yet.

## Validation

- Reviewed local git history with `git log --since='2026-05-18 00:00' --until='2026-05-19 00:00'`.
- Used `git log --stat`, `git show`, and file-level history to anchor each summary item to specific commits and files.
- No builds or tests were run for this reporting task because the work product is a git summary document, not a behavior change.

## Issues, Limitations, and Mitigations

- This report is grounded in local commit metadata only. No pull request identifiers were present in the inspected git history, so the summary references commits and files instead of PR numbers.
- The `update beads` commit touched only `deployment/docker/workspace-root/package.json` in visible git output, so this report does not infer intent beyond that recorded file change.
- Counts here describe May 18 commits only and exclude any uncommitted work present after that date.

## Follow-up Work

- No new product follow-up items were derived from this reporting pass. The only beads item created for this task is `islandflow-2df`, which tracks publication of this summary document.