Target Version
3.0-dev。当前开发线为唯一承载 3.0 正式版准备工作的版本线;证据复核于提交 a75fc8721b99e5c0b4421d0c58b5618bbe71ff31。
Evidence
.github/workflows/ci.yml:115-124,148-157,181-190,247-256 的全栈 jobs 都调用 ./scripts/wait_for_services.sh,但仓库不存在该文件。
docker-compose.yml:21,129 依赖 MYSQL_ROOT_PASSWORD 与 RABBITMQ_DEFAULT_PASS,workflow 没有注入这些变量,仓库也没有可供 CI 使用的无敏感值环境契约。
根 docker-compose.yml 启动 media_server,但不包含 MinIO;conf/media.json 的 endpoint 是 http://127.0.0.1:9000,在 Media 容器内会指向自身。
docker/docker-compose.yml 的 MinIO 位于独立默认网络,并把宿主机 9000/9001 暴露给 MinIO,与 Gateway/Push 冲突。
根 Compose 没有声明 MYSQL_DATABASE=chatnow;sql/ 只有媒体三表参考 DDL,缺少完整数据库 cold-start 初始化入口。
entrypoint.sh 只轮询 TCP 端口,不验证数据库、Redis Cluster、RabbitMQ、ES、MinIO 或业务服务 readiness。
当前 Go static checks 与各标签测试可编译,但本提交没有从空数据卷启动完整栈并执行 BVT/Functional/Reliability 的可重复证据。
Problem or Goal
提供一个从空机器和空数据卷可重复启动的完整开发/CI Compose profile,使 CI 能等待真实业务 readiness,并实际进入 BVT、Functional、Reliability 与 Performance 测试,而不是在缺失脚本、凭据、数据库或对象存储阶段中断。
Scope
统一根应用栈与 MinIO 的网络、endpoint、依赖和无冲突端口。
提供完整、版本化、幂等的 MySQL cold-start schema 初始化入口。
定义无敏感值的本地/CI secret 注入契约,并与 Remove tracked runtime secrets and standardize secret injection #62 保持一致。
实现并测试 CI 引用的 readiness helper;检查 Redis Cluster、MySQL schema、RabbitMQ、ES、MinIO、etcd 注册和 Gateway/Push 业务可服务状态。
修复 workflow,使每个全栈 job 从空 volume 启动、运行目标测试并可靠清理。
增加静态 contract,禁止 workflow 引用不存在的脚本、缺失 Compose service 或未声明的必需变量。
Non-goals
Acceptance Criteria
Test-first Plan
先运行现有 BVT cold-start 路径:
docker compose down -v && docker compose up -d --build && make -C tests test-bvt
预期 RED 是当前栈无法形成完整 readiness,且 BVT-001 或 Media BVT 在缺失 Gateway health/MinIO 时失败。先增加 tests/pkg/contracts 的 workflow/Compose contract 并观察缺失 helper、MinIO、DB bootstrap 与端口冲突的 RED,再实现最小 GREEN。随后依次运行 BVT、Functional、Scenario、Reliability 和 CI workflow。
Risk and Security
该改动触及数据库初始化、对象存储、网络与 secret。测试必须拒绝非本地/非 CI endpoint,不得删除共享数据;迁移必须前滚幂等并有回滚/恢复说明。日志、workflow output 和 artifact 不得包含口令、JWT key、SMTP 或对象存储凭据。所有容器初始化使用最小权限账户,并与 #62 的轮换计划协调。
Architecture Impact
Yes。应用 Compose 与 MinIO 网络拓扑、数据库初始化所有权、readiness 边界和 CI 运行拓扑都会变化。
Core-flow Impact
No。Identity、消息、ACK、媒体元数据和对象上传的业务协议及状态所有权不变;本 Issue 让现有流程在 cold-start 环境可执行并可验证。
Required Skill Updates
.agents/skills/chatnow-orienting/references/technology-stack.md
.agents/skills/chatnow-orienting/references/repository-map.md
.agents/skills/chatnow-testing/references/framework.md
受影响的 canonical deployment/operations 文档
Target Version
3.0-dev。当前开发线为唯一承载 3.0 正式版准备工作的版本线;证据复核于提交
a75fc8721b99e5c0b4421d0c58b5618bbe71ff31。Evidence
.github/workflows/ci.yml:115-124,148-157,181-190,247-256的全栈 jobs 都调用./scripts/wait_for_services.sh,但仓库不存在该文件。docker-compose.yml:21,129依赖MYSQL_ROOT_PASSWORD与RABBITMQ_DEFAULT_PASS,workflow 没有注入这些变量,仓库也没有可供 CI 使用的无敏感值环境契约。docker-compose.yml启动media_server,但不包含 MinIO;conf/media.json的 endpoint 是http://127.0.0.1:9000,在 Media 容器内会指向自身。docker/docker-compose.yml的 MinIO 位于独立默认网络,并把宿主机9000/9001暴露给 MinIO,与 Gateway/Push 冲突。MYSQL_DATABASE=chatnow;sql/只有媒体三表参考 DDL,缺少完整数据库 cold-start 初始化入口。entrypoint.sh只轮询 TCP 端口,不验证数据库、Redis Cluster、RabbitMQ、ES、MinIO 或业务服务 readiness。Problem or Goal
提供一个从空机器和空数据卷可重复启动的完整开发/CI Compose profile,使 CI 能等待真实业务 readiness,并实际进入 BVT、Functional、Reliability 与 Performance 测试,而不是在缺失脚本、凭据、数据库或对象存储阶段中断。
Scope
Non-goals
Acceptance Criteria
chatnow数据库及全部当前 ODB schema 通过版本化、幂等迁移创建;重复启动不会破坏已有数据。GET /healthreadiness endpoint,BVT-001 返回 200;依赖未就绪时不得报告可服务。make test-*命令。docker compose down -v后再次 cold-start 仍可重复通过。Test-first Plan
先运行现有 BVT cold-start 路径:
docker compose down -v && docker compose up -d --build && make -C tests test-bvt预期 RED 是当前栈无法形成完整 readiness,且 BVT-001 或 Media BVT 在缺失 Gateway health/MinIO 时失败。先增加
tests/pkg/contracts的 workflow/Compose contract 并观察缺失 helper、MinIO、DB bootstrap 与端口冲突的 RED,再实现最小 GREEN。随后依次运行 BVT、Functional、Scenario、Reliability 和 CI workflow。Risk and Security
该改动触及数据库初始化、对象存储、网络与 secret。测试必须拒绝非本地/非 CI endpoint,不得删除共享数据;迁移必须前滚幂等并有回滚/恢复说明。日志、workflow output 和 artifact 不得包含口令、JWT key、SMTP 或对象存储凭据。所有容器初始化使用最小权限账户,并与 #62 的轮换计划协调。
Architecture Impact
Yes。应用 Compose 与 MinIO 网络拓扑、数据库初始化所有权、readiness 边界和 CI 运行拓扑都会变化。
Core-flow Impact
No。Identity、消息、ACK、媒体元数据和对象上传的业务协议及状态所有权不变;本 Issue 让现有流程在 cold-start 环境可执行并可验证。
Required Skill Updates
.agents/skills/chatnow-orienting/references/technology-stack.md.agents/skills/chatnow-orienting/references/repository-map.md.agents/skills/chatnow-testing/references/framework.md