已关闭
[WEB-03] Implement the canonical Web API, upload intents and bounded refresh #32
urandon创建于  8月4日关闭于  8月19日
urandon
urandon成员
8月4日 创建

Parent

Outcome

Expose the authenticated, frontend-neutral application API required by the WebUI without adding ad-hoc persistence queries or a second conversation model.

Estimate

  • 8 SP / 5 engineering days
  • Risk: high

Scope

  • Implement bounded session list, session creation/selection, history-after-sequence, archive/unarchive, message submission and run-status routes.
  • Reuse canonical application services and ports from #20–#26; handlers must not perform raw table scans.
  • Implement ETag/sequence-cursor polling with bounded page sizes and backoff hints.
  • Implement tenant-bound short-lived upload intents through the IAM-authenticated Yandex Object Storage Presign API.
  • Generate object keys server-side under the resolved tenant prefix.
  • Validate upload ownership, expiry, content type, size, checksum/ETag and object existence before committing a canonical event.
  • Return short-lived tenant-authorized download links; never expose bucket listing or arbitrary object keys.
  • Add idempotency keys for mutations and canonical event/run creation.
  • Surface quota/compute connection state without exposing provider credentials.

Verification

  • Forged tenant, session, event, run, upload and object identifiers fail closed.
  • Duplicate mutation requests create one logical canonical event/run.
  • Pagination and polling remain bounded on large synthetic tenants.
  • Upload tests cover oversized, wrong type, expired, overwritten, cross-tenant and uncommitted objects.
  • No browser upload body is forced through the Serverless Container request limit.

Acceptance criteria

  • All Web API operations authorize the resolved user against the selected tenant and target session.
  • Text and attachments enter the same canonical event/run pipeline as other frontends.
  • API reads use documented point or bounded key-prefix access paths.
  • Provider/storage signing material never reaches the browser.

Non-goals

  • Web UI rendering.
  • Search/summarization.
  • Telegram delivery projection.
likedislike
urandon
urandon成员
8月19日 评论:

Начал WEB-03 на свежем main (65771142), ветка codex/web-03-canonical-api.

Порядок вертикальных срезов:

  1. participant-authorized message submission и point run status через существующий canonical ingress/run pipeline;
  2. tenant/session-bound upload intent, direct browser presign, authoritative HEAD/commit validation и single-use attachment consumption;
  3. bounded ETag/sequence polling, retry/backoff hints и short-lived authorized download capabilities;
  4. YDB/S3/HTTP tests для idempotency, forged selectors, expiry/type/size/digest/ETag/overwrite/cross-tenant/uncommitted cases.

Все handlers остаются поверх application ports/services; raw scans и browser-proxied upload bodies не добавляются. После MR запущу независимого сабагента-ревьювера, обработаю один feedback cycle и только после exact-SHA CI буду сливать.

likedislike
urandonurandon成员
8月19日 关联了pull request:[WEB-03] Implement canonical Web API and upload intents
urandon
urandon成员
8月19日 评论:

MR !36 merged to main as d40520a5259788e044a73f0bb31b744dc2d28c7a after one independent subagent review cycle and all review findings were addressed. Branch SHA b3b653234dc99943c2628ac43cf8cfa3778d00b2 passed all six GitHub mirror CI jobs. Local checks also passed: make test, make ci, make terraform-ci, make local-integration, make ydb-integration. Waiting only for the exact merge-SHA main CI run before closing this issue.

likedislike
urandon
urandon成员
8月19日 评论:

WEB-03 завершена и влита в main merge-коммитом d40520a5259788e044a73f0bb31b744dc2d28c7a (MR !36). Exact merge-SHA прошёл полный mirror gate: все 6 GitHub Actions jobs зелёные, включая Runtime images: https://github.com/urandon/sessionless/actions/runs/32177534439

likedislike
urandonurandon成员
8月19日 关闭了 issue
urandonurandon成员
23 天前 添加了label:mvpwebui
urandonurandon成员
23 天前 关联了里程碑:MVP — Authenticated WebUI (#29)