已关闭
[MVP-04] Build the local YDB, S3, queue and Telegram development stand #7
urandon创建于  7月28日关闭于  7月29日
urandon
urandon成员
7月28日 创建

Parent and architecture

  • Implementation epic: #6
  • Architecture: #1
  • Depends on: #3, #4

Outcome

Provide a reproducible Docker Compose development stand and concrete local adapters for YDB, blob storage, queue transport and Telegram capture.

Estimate

  • 5 SP / 4 engineering days
  • Risk: medium

Scope

  • Add pinned YDB Local with persistent volume, healthcheck and /local database.
  • Add MinIO for the S3-compatible blob contract.
  • Add ElasticMQ or LocalStack for the SQS-shaped queue contract with explicit endpoint injection.
  • Add a Telegram Bot API fake/capture service or test server.
  • Implement local configuration for state store, queue and blob adapters without cloud credentials.
  • Apply the same Goose migrations used by cloud through make migrate-local.
  • Add deterministic seed/fixture loading without real user data.
  • Implement safe dev-up, dev-down and explicitly destructive dev-reset behavior.

Constraints

  • Local queue compatibility does not claim full YMQ equivalence; cloud-dev owns the final trigger/DLQ contract.
  • No production Telegram bot or subscription auth home is mounted by default.
  • Committed env/config files contain no secrets.
  • Apple Silicon setup and any required container emulation are documented.

Acceptance criteria

  • A fresh checkout starts the stand and reaches healthy YDB/MinIO/queue/Telegram-fake services.
  • Migrations run from zero and are idempotent when rechecked.
  • Adapter contract tests pass against the stand.
  • Volumes persist across normal stop/start and reset only through the guarded local reset target.
  • Two test tenants cannot access each other's object keys through the application adapter.
likedislike
urandonurandon成员
7月29日 关联了pull request:MVP-04: build the local multi-service development stand
urandon
urandon成员
7月29日 评论:

Implementation update — local multi-service stand

Implementation is published in MR !6, branch ai/mvp-04-local-development-stand, commit b3cebf8.

Implemented

  • Disk-backed pinned YDB Local with named data/certificate volumes and the existing cloud-equivalent embedded migration set.
  • Pinned MinIO plus idempotent bucket initialization for the S3-compatible blob contract.
  • Pinned ElasticMQ with explicit dispatch, delivery, and dead-letter queues for the SQS-shaped transport contract.
  • A deterministic Go telegram-fake service with health, update injection, idempotent fixture loading, Bot API method captures, and reset endpoints.
  • A Go S3 adapter using the official AWS SDK, SHA-256/size references, normalized tenant prefixes, traversal rejection, and caller-tenant checks on read/delete.
  • A Go SQS adapter using the official AWS SDK with at-least-once receive, explicit acknowledgement, visibility retry, and controlled dead-letter transfer.
  • make dev-up now starts, waits for, initializes, migrates, seeds, and verifies the whole stand. Normal dev-down preserves YDB/Object Storage volumes; deletion remains guarded by CONFIRM_LOCAL_RESET=sessionless-dev.
  • A tagged local integration suite for YDB connectivity, S3 isolation, SQS retry/DLQ behavior, and Telegram update/capture behavior.
  • A mandatory GitHub Actions job that runs the suite, performs a normal stop/restart, reruns the suite, and then executes guarded cleanup.
  • Updated English README and developer documentation with the harness-neutral/serverless project view, topology diagram, endpoint table, lifecycle, adapter contracts, and Apple Silicon behavior.

Verified locally

  • make ci passed: generation, formatting/static checks, race tests, six binaries, and foundation integration tests.
  • The localintegration package compiles with its build tag.
  • Go module read-only resolution, shell syntax validation, YAML parse validation, and git diff --check passed.

Docker is not installed on the development workstation, so no emulator execution is claimed here. Issue #7 remains open until the GitCode branch reaches the GitHub mirror and the mandatory local-stand job proves image availability, Compose initialization, adapter behavior, migration reuse, and persistence across normal stop/start.

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

Branch CI verification

The GitHub mirror reached commit b3cebf81e7f5f7cc7d2f7fe789f4f96c0dd86b9c, matching the GitCode MR !6 head.

GitHub Actions run #7 completed successfully:

The new mandatory stand job proved both passes:

  1. clean start, service readiness, MinIO bucket initialization, YDB migration, synthetic seed, and all YDB/S3/SQS/Telegram contract tests;
  2. normal stop/start without volume deletion, repeated migration/seed, and the same contract suite;
  3. guarded volume cleanup with the fixed sessionless-dev confirmation.

This supplies the Docker/Compose evidence that was unavailable on the development workstation. Issue #7 remains open until MR !6 is merged and the same workflow is green on the merged main SHA.

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

Completion report — local development stand

MVP-04 is complete and verified on merged main.

Delivery

  • MR !6 merged as b0a087b.
  • The merged revision contains pinned YDB Local, MinIO, ElasticMQ, the deterministic Telegram fake, concrete S3/SQS adapters, safe lifecycle scripts, fixtures, documentation, and mandatory CI coverage.
  • make dev-up now starts, waits for, migrates, seeds, and probes the complete stand; make dev-down preserves durable volumes and make dev-reset remains confirmation-gated.

Post-merge verification

The GitHub mirror ran CI against the exact merge SHA b0a087b: workflow run #8.

All mandatory jobs passed:

The local-stand job proves clean startup, repeatable migrations, adapter contracts, tenant-separated object keys, persistence across stop/start, deterministic seed loading, and the guarded reset path. No production Telegram or cloud credential is required.

All acceptance criteria are satisfied; closing #7. The next implementation gate is #16.

likedislike
urandonurandon成员
7月29日 关闭了 issue
urandonurandon成员
8月26日 添加了label:devxmvp
urandonurandon成员
8月26日 关联了里程碑:MVP — Core platform (#6)
urandonurandon成员
15 天前 关联了pull request:[DEVX] Share Go caches across worktrees