已关闭
[MVP-08] Deliver the deterministic local multi-user end-to-end slice #11
urandon创建于  7月28日关闭于  7月31日
urandon
urandon成员
7月28日 创建

Parent and architecture

  • Implementation epic: #6
  • Architecture: #1
  • Depends on: #8, #9, #10

Outcome

Prove the complete product/control-plane flow locally with two tenants and a deterministic worker before deploying cloud infrastructure or integrating a real subscription harness.

Estimate

  • 5 SP / 4 engineering days
  • Risk: medium

Required flow

Telegram fixture
  -> control-api
  -> YDB update/run/outbox
  -> local queue
  -> deterministic worker
  -> Object Storage artifact
  -> YDB result/delivery outbox
  -> Telegram API capture

Scenarios

  • Two private-chat users submit interleaved messages and files.
  • Duplicate/reordered Telegram update.
  • Duplicate queue delivery.
  • Worker failure before and after checkpoint.
  • Cancellation and explicit clean context.
  • Subscription quota ready, unknown, exhausted/reset and re-authentication states.
  • Dispatch publication gap repaired by reconciler.
  • Telegram delivery transient failure repaired without duplicate logical reply.
  • Cross-tenant object/key/credential access attempts are denied.

Deliverables

  • make e2e-local black-box test target.
  • Stable synthetic fixtures with no real user/provider data.
  • Structured trace/correlation IDs across ingress, run, worker and delivery.
  • Short local operator runbook for inspecting runs, leases, outboxes and captured replies.
  • Baseline timings for warm local flow, excluding provider inference.

Acceptance criteria

  • A fresh checkout can run the entire slice using documented commands and no cloud/provider credentials.
  • Every required scenario is automated and deterministic.
  • Assertions prove separate tenant state, paths, artifacts and quota rows.
  • Worker restart/retry does not lose canonical state or double-deliver/charge.
  • This issue is complete before real Codex integration becomes a release dependency.
likedislike
urandon
urandon成员
7月31日 评论:

Implementation started

Work has started on branch ai/mvp-08-local-e2e, based on merged main at ea5185f.

The first implementation pass is mapping the existing ingress, scheduler, worker, object-store and delivery boundaries into one black-box make e2e-local topology. The test remains deterministic and credential-free, with two tenants and explicit assertions for isolation, idempotency, retry/recovery, quota state and same-chat delivery.

likedislike
urandonurandon成员
7月31日 关联了pull request:MVP-08: deliver the deterministic local multi-user E2E slice
urandon
urandon成员
7月31日 评论:

Implementation update — deterministic local multi-user E2E

Implementation is published in MR !15, branch ai/mvp-08-local-e2e, commit 993de50.

Implemented

  • make e2e-local starts/migrates the pinned stand, builds the one-shot worker image, and runs a credential-free two-tenant black-box slice.
  • The exercised path is Telegram webhook → YDB ingress/outbox → reconciler admission → ElasticMQ → isolated worker container → MinIO artifacts → YDB delivery outbox → Telegram fake capture.
  • Scenarios cover interleaved/out-of-order users, duplicate update, document ingestion, disconnected and provider-quota blocking/recovery, dispatch publication repair after a queue outage, retry before the first checkpoint and resume after checkpoint one, durable cancellation, Telegram 429 retry, terminal queue replay, tenant-scoped artifact access, and explicit /new context advancement.
  • Structured boundary logs correlate update/message/tenant/run/delivery identifiers without logging message bodies, credentials, or artifact contents.
  • The topology, timing boundary, fault matrix and operator queries are documented in docs/local-e2e.md and linked from the public README/development guide.
  • The mirrored GitHub Actions Local multi-service stand job now makes make e2e-local a mandatory gate.

Verified locally

  • make ci passed, including formatting, vet, race tests, all binaries, and foundation integration tests.
  • Tagged E2E package compilation and vet passed.
  • git diff --check and shell syntax validation passed.

Docker is not installed on the development workstation, so no local Compose execution is claimed. This issue remains open until the GitCode branch reaches the GitHub mirror and the mandatory local-stand job executes the actual containers successfully.

likedislike
urandon
urandon成员
7月31日 评论:

Completion report — deterministic local multi-user E2E slice

MVP-08 is complete and merged through MR !15 as merge commit f61f9ec.

Delivered:

  • make e2e-local starts the complete local stand and executes the tagged black-box suite.
  • Two isolated Telegram tenants exercise interleaved text/file ingress, duplicate and reordered updates, deterministic worker execution, S3-compatible artifacts, durable delivery, and captured Telegram replies.
  • Automated recovery coverage includes provider quota blocking and reset, queue publication gaps, retry before and after checkpoints, cancellation, Telegram 429 retry, duplicate terminal queue delivery, and explicit clean context.
  • Cross-tenant blob access is rejected and tenant-scoped keys, state, usage observations, outboxes, and artifact manifests are asserted.
  • Correlation logging covers update, tenant, run, queue message, delivery, and Telegram message identifiers.
  • The local operator procedure and warm non-inference timing boundary are documented in docs/local-e2e.md.
  • CI now runs the local multi-service stand as a mandatory job before runtime-image completion.

Verification:

  • GitHub Actions run 30564080531 completed successfully for head be97135.
  • origin/main contains the implementation and both CI corrections through f61f9ec.
  • Local make ci, tagged E2E compilation, focused ingress tests, formatting, and diff checks passed before merge.

The next critical-path item is MVP-09 / #12: provision and validate the isolated Yandex Cloud development environment.

likedislike
urandonurandon成员
7月31日 关闭了 issue
urandonurandon成员
16 天前 添加了label:mvptest
urandonurandon成员
16 天前 关联了里程碑:MVP — Core platform (#6)