# 项目进度 ## 2026-08-02 - 已提交并推送 `2af504f feat: expose gateway outcome metrics`:Gateway 请求路径使用 领域 Metrics Observer,将固定阶段的成功/失败聚合到 `proxy_pool_gateway_outcomes_total{stage,result}`,并暴露本地 Outcome 队列满时的 `proxy_pool_gateway_outcome_queue_dropped_total`。指标不包含 Proxy、路由、目标、客户端或凭据。 - 新增队列、Prometheus 注册复用和 Gateway 启动装配测试;`go test ./...` 与 `scripts/verify.ps1` 全部通过,后者按环境跳过 `CGO_ENABLED` 未启用的 race 测试。 - 已完成持续 `UNHEALTHY` 后的安全淘汰:首次异常时间写入 Redis TTL 活动池, `check.unhealthyRemoveAfter` 按 Upstream 生效;Controller 通过公用、有界的 Reaper 仅回收未分配代理。仍持有 Worker ownership 的候选会延后,待既有 Drain/ACK 清空 ownership 后再删除,避免影响仍在 Gateway Snapshot 中使用的代理。 - Redis 集成标签测试在未设置 `PROXY_POOL_TEST_REDIS_URL` 时现能正确跳过所有契约 子测试;`go test ./...`、`go test -tags=integration ./internal/adapters/redisactivity` 与 `scripts/verify.ps1` 已通过,race 仍由 Linux CI 执行。 ## 2026-07-30 - Gateway `Capacity` 新增一次打包原子读取,`snapshot.Store` 可生成完整稀疏 Active/Reserved 运行态报告;当前快照已移除但仍有连接的 Proxy 会持续以 draining 上报,归零后从后续报告消失。 - 新增公用 `workerruntime` session/report/read seam 与并发安全 MemoryStore; 完整替换、空报告清零、session fencing、单调 sequence、同内容幂等重放、 冲突/倒序拒绝和 TTL fail-closed 均已有单测。 - 生产 `redisactivity` Adapter 新增 Worker session/运行态 Lua 和权威 `pool.InventoryReader`;Managed/Available Slots 原子计入状态、TTL safety、 MaxConcurrency、ownership 及 Active/Reserved,未知或过期运行态贡献零容量。 - 真实 Redis 8.2 已覆盖 ACK snapshot/epoch、旧 session、空报告、超前 epoch、 报告过期、扫描预算耗尽及容量聚合。Managed 使用已有权威计数,Available Slots 只扫描目标 Upstream 的未分配/已分配可用索引;Gateway 报告扫描当前 Snapshot,并用分片索引补充已移除但仍非零的 runtime,历史注册表设置硬上限。 WorkerControlPlane 接收端、Provider Fleet/bootstrap、全局 `fetch.maxTotal` 和健康执行链仍待完成,总验收计数保持 51/73。 - Gateway 当前 Proxy 禁用活跃索引回调,只有移出 Snapshot 后才开启分片追踪; 本机 100k Proxy `Acquire` 三轮 1 秒基准为 893.9-1047 ns/op、256 B/op、 2 allocs/op。该数据只证明本地调度微基准,不代表 100k QPS 集群验收。 - 新增公用 Provider `Coordinator.RunLeader` / `LeaderSession` 深 seam 和独立 `redisprovider` Adapter;Redis Lua 原子维护 generation、epoch、Leader 租约、 全局 requestInterval 与带 TTL 的 maxInFlight Permit,异常时 fail-closed。 - 真实 Redis 8.2 已验证两个 Controller 同 Upstream 只有一个 Leader、取消后 epoch 单调接管、跨实例请求限速/在途上限、Permit 幂等释放,以及 Redis 协调 状态丢失后使用新 generation 自动重建。 - 新增显式 `refill.reconcileInterval/minimumAvailableSlots/targetAvailableSlots` 与 `fetch.estimatedIPsPerCall`;20 份示例、主配置、Compose/Kubernetes 配置均通过 严格解析和理论容量边界校验。 - Pool Reconciler 已按并发槽位实现 minimum/target 迟滞并计入 pending 预估; FetchBudget 只在没有 pending 请求时接受 Redis Managed 同步,消除 Upsert 与 Permit Complete 短窗口中的重复计数风险。 - Provider Fleet、Worker Active/Reserved 容量汇总和 Controller bootstrap 接线 尚未完成,本轮不增加 51/73 的总验收计数。 - 新增公用 `platform/metrics.NewHandler`,固定提供 `/livez`、`/readyz` 与 `/metrics`;Readiness 失败只返回脱敏状态,不泄露底层存储错误。 - Metrics 地址进入严格配置校验;Controller Runtime 支持 Metrics-only 和 Distribution/Admin/Metrics 三监听器隔离、首错联动及统一优雅停机。 - Controller bootstrap 使用同一根生命周期装配 Prometheus 默认 Gatherer, Metrics Readiness 按启用能力低成本检查 PostgreSQL/Redis,不触发 Provider 或 扫描 Proxy 明细。 - `go test` 定向包和 `.\scripts\test-controller.ps1` 通过;真实 PostgreSQL 18 + Redis 8.2 fixture 已验证 `/readyz` 与 Prometheus 输出,临时容器和网络已清理。 - 新增 `cmd/proxy-controller` 与公用 `controller/bootstrap.Run`;配置只加载一次, 同一快照用于存储连接、PostgreSQL 管理态提交和 HTTP Runtime 构造,避免启动 期间二次读取产生配置撕裂。 - Bootstrap 已封装 PostgreSQL Ping/迁移/pgx Adapter、Redis Ping/活动池、 Distribution/Admin 服务构造、运行错误与关闭错误合并;`main` 仅处理 `-config`、`PROXY_POOL_CONFIG`、信号上下文和退出码。 - 活动池新增公用 `StateInventoryReader`;Memory/Redis 使用同一契约,Redis 通过低基数 Hash 和五个原子 Lua 维护七类状态计数,不扫描 Proxy 明细。 - 新增 `controller/operations.Reader`,把当前配置中的 Upstream 与活动状态映射到 Admin Status;Worker/Snapshot 与 Provider 统计尚无来源时保持空/零,不用 `Managed` 冒充 `Available`。 - Redis 状态读取在有界过期清理仍有积压或检测到负计数时 fail-closed,避免 Admin 返回包含失效代理或损坏计数的成功响应。 - 本轮全仓 `go test -count=1 -timeout 60s ./...`、`go vet ./...`、 `go build ./cmd/proxy-controller` 与 `git diff --check` 通过;新加的 Redis backlog/负计数场景也已通过真实 Redis 8.2 fixture。 - 新增 `test-controller.ps1` 双存储 fixture;真实 PostgreSQL 18 + Redis 8.2 已 通过迁移、启动配置提交、Redis Readiness 与 Admin Status 组合验证。 - 固定 `github.com/jackc/pgx/v5 v5.6.0`,实现封装在 `adminstate.Store` 后的 PostgreSQL 深适配器;配置、Upstream、Routing mutation 在同一事务中提交 revision、管理状态、审计与 Outbox,数据库错误不泄漏 DSN、SQL 或参数。 - 实现只读 Repeatable Read Snapshot、审计分页、`FOR UPDATE SKIP LOCKED` Outbox 领取和整批 ACK;具体 Adapter、SQL、pgx 类型及 codec 不向业务层暴露。 - 新增同一物理连接迁移执行器和 PostgreSQL 18 隔离 fixture;每个测试使用唯一 Schema,回环端口和 tmpfs 不保留数据,CI 已加入 Redis/PostgreSQL 集成任务。 - 真实 PostgreSQL 18 已通过完整公用契约:配置事务、Upstream 幂等、100 并发 Routing CAS、Routing no-op、审计分页、Outbox 租约/重领、原子 ACK 和 Context。 - 审计与 Outbox 触发器故障注入证明状态、revision、审计和事件完整回滚;迁移 重复执行及 `information_schema` 检查确认仅有六张管理表,无 Proxy、凭据、 逐次提取、Worker ownership 或幂等明细。 - Docker Hub 直连因 Docker Desktop 未配置 HTTPS 代理超时,改从 Google 官方 Docker Hub 公共缓存拉取相同 `postgres:18-alpine` 镜像并本地重标记;未修改 Docker Desktop 全局镜像配置。 - `implementation-plan.md` 中 PostgreSQL 两项验收已完成,总进度由 49/73 更新为 51/73(69.9%);生产命令装配、分布式协调、Checker 和 100,000 QPS 集群压测 仍未完成。 ## 2026-07-29 - 新增公用 `verify-proto.ps1`:自动发现 Google well-known types include,固定 编译控制面 Proto 的 imports/source-info descriptor,并拒绝空输出;本机生成 30,972 字节 descriptor。`verify.ps1` 在存在 protoc 时执行,CI 强制安装待补。 - 新增 Distribution/Admin OpenAPI 公用 CI 结构门禁,递归验证本地 `$ref`、 operationId 唯一性、HTTP operation 响应和 security scheme 引用;完整 OAS 工具验证与 Protobuf descriptor CI 编译仍保持未完成。 - 一次 OpenAPI 检索在 PowerShell 双引号中误触发 `$ref` 变量解析;已改用单引号 模式继续审计,未重复原命令。 - 新增 PostgreSQL 18 隔离测试服务的静态契约:回环端口、正确 PG18 tmpfs 数据 根目录、零持久卷;Redis 测试改用独立 Compose 项目和显式服务启动,避免两个 fixture 相互影响。未拉取或启动容器,pgx Adapter/真实契约仍待依赖确认。 - 扩展 `adminstate/contracttest` 公用契约:审计完整字段和 AfterID 分页、Routing no-op 审计且不写 Outbox、批量 ACK 零部分提交,以及六个 Store 方法的 Context 取消;MemoryStore 全部通过,后续 PostgreSQL Adapter 必须运行同一套契约。 - `adminstate` 六类命令/查询已封装公用 `Validate()`,MemoryStore 改为统一复用; 后续 pgx Adapter 不再重复实现名称、引用、分页和 Outbox 租约输入校验。 - 一次命令装配审计误用了不存在的 `controller/distribution/service.go`;实际领域 服务位于 `controller/extraction`,Distribution 包当前只负责 HTTP Handler。 - 根据对话最终定稿统一 Sequential:至少两个 Upstream,省略 `endBehavior` 时 默认 `stop`;新增领域和严格配置回归测试。disabled candidate、跨实例游标和 `onUnavailable` 请求链仍未提前标记完成。 - 一次并行读取误用了不存在的 `routing/sequential_test.go`,另一次误用了旧 ADR 文件名;已改用 `routing_test.go` 和 `006-postgresql-admin-state.md`,未重复命令。 - 新增文档契约测试,递归验证 README、docs、deploy、diagrams 的相对链接,并 拒绝公开指南引用不存在的具体 Go 命令目标;修正配置参考中尚未实现的 `cmd/proxy-controller` 启动命令,改为当前真实可执行的严格配置校验工具。 - 已复核 `implementation-plan.md` 的验收项:机器契约、OpenAPI/Protobuf 验证、 完整文档导航、20 份配置示例和 35 张 Mermaid 图已有仓库及验证证据,修正 滞后勾选;进一步核对发现 descriptor 编译尚未进入 CI,同时验证脚本和双平台 CI 已完成,最终校正为 49/73,约 67%。 - 正在并行审计 Routing/Sequential 与 Proxy Capacity 的剩余边界;本轮只收敛 已确认公共接口和既有需求,不把 Checker、pgx 或 100,000 QPS 目标提前记为完成。 - Routing 审计确认五种策略尚未进入真实请求链、`onUnavailable` 只有配置校验、 Sequential 仅有进程内 CAS;Capacity 审计确认固定 Max 不超卖,但动态降容、 Reservation 完整生命周期观测和短 TTL 运行态回收待完成。追踪矩阵已降级为 准确的“已完成证据 + 待办”描述。 - 定向执行 Proxy、Routing、Config、Gateway Dispatch/Server 测试,全部通过; 该结果只证明现有行为基线,不替代上述缺失运行链的验收。 - 一次组合检索因包含不存在的 `config` 路径返回退出码 1;有效输出已保留, 后续检索改用实际目录 `internal/config`,未重复原命令。 - Routing Runtime 设计核对确认采用 Controller 权威状态 + Gateway 不可变本地 快照的混合模型;已定位 Extract direct、默认值、disabled 推进和单 Upstream Sequential 四项需确认语义,尚未在未批准设计上开始实现。 - 一次读取误用了不存在的 `controller/runtime/bootstrap.go` 路径;实际文件为 `runtime.go`,Gateway 构建辅助位于 `gateway/server/bootstrap.go`,已改用真实 文件继续核对,未重复失败命令。 - 架构证据审计确认 Provider 分布式 Leader、Health Reducer/Checker、Prometheus 指标模块和四个生产命令仍缺实现;追踪矩阵已把这些条目的配置/领域基础与 完整运行时证据拆开描述。 - 新增独立 Capacity 生命周期测试,覆盖 Cancel 后复用、重复 Commit/Cancel/ Release、Release-before-Commit、1,000 轮并发 Commit/Cancel 及 100 并发 Release;Proxy、Dispatch、Snapshot、Gateway Server 定向测试全部通过。 - 一次 `rg` 同时包含不存在的 `cmd` 路径,以及两次使用 PowerShell 不展开的 通配路径,分别返回退出码 2/123;后续改用实际目录和 `-g` 过滤,不重复原命令。 - 已实现共享 `httpapi`、`httpsecurity` 与 `httpserver`,统一严格 JSON、Problem、 Request ID、认证、可信代理、Client ID、准入、多监听器生命周期和优雅停机。 - Distribution/Admin Handler 已装配到独立监听器;Gateway 配置认证统一复用 `httpsecurity`,API 401 与代理 407 语义保持分离。 - 部署配置已使用 `${VAR}` 真实环境变量解析,ConfigMap 与本地配置通过 `LoadResolved` 回归测试。 - 已新增公用 `activitypool` 契约和并发安全内存参考实现;Provider 按各供应商 TTL 与安全余量写入,独占提取、短期幂等和 Worker 所有权在同一原子边界内。 - 已实现生产 Redis Activity Adapter:Upsert、健康更新、原子提取、所有权、 Drain/ACK、库存读取与有界过期清理均封装为窄领域端口和 Lua 原子操作。 - MemoryPool 与 Redis Adapter 运行同一套公用契约;真实 Redis 8.2 fixture 已覆盖 100 轮并发提取和 100 轮所有权竞争,本地 Compose 不持久化短效代理数据。 - Proxy 明细不写 PostgreSQL;PostgreSQL 仅保存配置版本、管理状态、Admin 审计、管理 outbox 和可选聚合指标。 - `usableUntil` 已进入 Worker Snapshot 契约,Gateway 在供应商硬过期前按安全 余量停止新分配。 - PostgreSQL 管理面 Adapter、Provider Leader/分布式限流与心跳装配、生产命令 入口、Redis 故障转移验证和代表性 100,000 QPS 集群压测仍待实现。 - 已新增 ADR-006 与公用 `adminstate` 事务 seam;MemoryStore 在同一锁内提交管理 状态、Admin 审计与 Outbox,覆盖配置冲突、Upstream 幂等、100 并发 Routing CAS、Outbox claim/ack 租约、上下文取消和不可变快照。 - PostgreSQL 管理 Schema 已限制为六张配置/状态/审计/Outbox 表,并由静态测试 拒绝 Proxy、凭据、逐次提取、ownership 和短期幂等明细;pgx Adapter 和真实 PostgreSQL 18 契约仍待实现。 - Admin Handler 现在复用 `httpsecurity.Identity`,把 Actor ID 与可信 SourceIP 传给 enable/disable/switch/reload mutation,供持久化审计直接使用。 - 已实现 Admin `ApplicationService`:mutation 统一映射到 `adminstate`;Status 合并 一个权威管理快照和低基数运行态聚合;配置重载严格执行解析/校验、脱敏摘要、 持久化、原子发布顺序,任何持久化失败都不会替换旧运行配置。 - 已新增公用原子 `config.Store` 与标准 `FileConfigurationLoader`;覆盖 100 组 并发读写、typed-nil、未知字段、主配置/Secret 文件 I/O、取消、Secret 轮换和 Admin 禁止依赖 Redis Extract/Proxy 明细的架构边界。 - 本轮 `.\scripts\verify.ps1`、`.\scripts\test-redis.ps1`、Compose 静态展开和 Compose 非持久化策略测试通过;Windows `CGO_ENABLED=0`,race 继续由 Linux CI 执行。 - 本地 PostgreSQL 管理面基础已提交为 `7951c29`;推送 `build/proxy-pool-architecture` 时远端返回 `Authentication failed`,未重复执行 相同推送。当前本地提交保持完整,等待可用 Git 凭据后同步。 ## 2026-07-28 - 用户删除了先前基于不完整网页内容生成的设计文件。 - 已重新读取当前 `对话内容.md` 全部 9,404 行。 - 已按主题定位配置定稿、实施方案、Distribution API、认证、安全、并发、 故障语义和最终 Exclusive Extraction 修订。 - 已建立新的任务计划与事实记录,旧网页摘要不再作为需求证据。 - 已建立需求追踪矩阵、统一领域语言、产品设计、总体架构、项目结构、ADR、 开发、配置、API、安全、测试与运维文档。 - 已提供 20 个严格校验的配置示例、Distribution/Admin OpenAPI、Controller/ Worker/Checker Protobuf 契约和 35 张 Mermaid 图。 - 已实现并测试 Proxy 状态/TTL/唯一键、打包原子容量、首条路由、Sequential 并发切换、Fetch 分类、一次性独占提取、严格配置、Snapshot 与本地 Dispatch。 - `go test ./...`、`go vet ./...`、`go build ./...` 通过。 - Protobuf 描述符编译、Compose 静态展开、Kustomize 渲染、Grafana JSON 与 配置示例校验通过。 - Windows 当前 `CGO_ENABLED=0` 且无 C 编译器,race 测试由 Linux CI 承担。 - 100,000 QPS 仍是未验证设计目标;运行进程、存储适配器、完整网络转发与 代表性集群压测尚未实施,已在完成审计中明确列出。 - 历史文档压缩包已由用户删除,当前交付以仓库内可追踪文档为准。 - 已实现 random、roundRobin、weighted、leastConnections,并将 Sequential 拆成共享 Upstream 空结果状态与每 Routing 版本化游标。 - 已实现 Provider 合并通知、完整 attempt 超时、永久错误契约、指数退避、 Retry-After、原子 FetchBudget 以及 Pool Reconciler。 - 已强制 Worker 所有权与 Exclusive Extraction 注入同一权威 Repository, 覆盖 100 轮并发竞争、续期、Drain ACK 和 Worker 过期回收。 - 已实现提取服务层策略映射、Redis 短期幂等语义、来源身份准入和公共 FixedWindow 全局/Client 限流器;不保存逐代理提取审计记录。 - 已为 100k Proxy 快照建立 scheme/upstream/tag 索引;本机持续基准中 `Acquire` 为 640 ns/op、256 B/op、2 allocs/op。该数据仅证明本地选择热路径, 不代表 100k QPS 集群端到端容量。 - 本轮 `go test -count=1 ./...`、`go vet ./...`、`go build ./...` 和 `git diff --check` 通过;Windows `CGO_ENABLED=0`,race 仍由 Linux CI 验证。