From d2455e8fd412714579aff5806cdb425ce2efc01b Mon Sep 17 00:00:00 2001 From: iomgaa Date: Wed, 9 Sep 2026 14:02:15 -0400 Subject: [PATCH] docs: record 1.3.5 release completion and external verification Merge-time gates, registry artifacts and anonymous page checks for 1.3.5 recorded as a separate finding; the validation finding gains a status pointer so its historic 'not yet executed' section is not silently stale. Released main/tag and uploaded artifacts are untouched. --- ...09-09-135-call-observability-validation.md | 3 + .../2026-09-09-135-release-completion.md | 98 +++++++++++++++++++ research-wiki/index.md | 5 +- research-wiki/log.md | 1 + 4 files changed, 105 insertions(+), 2 deletions(-) create mode 100644 research-wiki/findings/2026-09-09-135-release-completion.md diff --git a/research-wiki/findings/2026-09-09-135-call-observability-validation.md b/research-wiki/findings/2026-09-09-135-call-observability-validation.md index 5d65e10..7ad1c5b 100644 --- a/research-wiki/findings/2026-09-09-135-call-observability-validation.md +++ b/research-wiki/findings/2026-09-09-135-call-observability-validation.md @@ -7,6 +7,9 @@ date: 2026-09-09 # 1.3.5 T2/T3 验收证据 +> 最新状态(2026-09-09):**1.3.5 已发布**,main 与 `v1.3.5` 同指 `ab00aa4`;§8.6 所列「尚未执行」已由 +> [发布完成与外部验收](2026-09-09-135-release-completion.md)逐项关闭。以下为分阶段历史,不追改当时结论。 +> > 范围:**仅 T2(遥测 10 列 / 诊断保真 / scope+operation / 装配闸)与 T3(终态行 / 取消 / 统一出口)**, > 外加计划 T4 中"签名与列数机械迁移"那一片(与 schema 同批完成,避免先提交 schema 却留写入缺键)。 > **不含** T4 的 PG 集成、变异矩阵与文档同步——另任务承接,缺口见 §5。 diff --git a/research-wiki/findings/2026-09-09-135-release-completion.md b/research-wiki/findings/2026-09-09-135-release-completion.md new file mode 100644 index 0000000..00bfbf6 --- /dev/null +++ b/research-wiki/findings/2026-09-09-135-release-completion.md @@ -0,0 +1,98 @@ +--- +type: finding +node_id: finding:2026-09-09-135-release-completion +title: "1.3.5 发布完成与外部验收:合并后门、registry 产物与页面亲查" +date: 2026-09-09 +--- + +# 1.3.5 发布完成与外部验收 + +> 状态:**1.3.5 已发布并完成外部验收,#19 / #23 已评论关闭**。main 与 `v1.3.5` 同指 +> `ab00aa44576bd4cd47d0680d107d5191679dc1ee`。发布准备阶段的证据见 +> [1.3.5 验收证据](2026-09-09-135-call-observability-validation.md)(其 §8.6 列的"尚未执行"由本文逐项关闭, +> 该文当时结论不追改)。本轮无生产/测试代码改动、未派子代理;原始日志在 +> `tests/outputs/135/publish-20260909/`(gitignore,不入库)。 + +## 1. 合并与合并后门 + +长跑全部在 tmux `pgw135-publish` 串行执行,`PYTHONUNBUFFERED=1`,命令末尾**不接管道**,每门独立 `.exit`。 + +| 步骤 | 结果与证据 | +| --- | --- | +| 远端占用复查(改动前) | `git ls-remote` 最高 `v1.3.4`;registry simple 索引按完整字面量 `polygateway-1.3.5` 无命中;Release API `/releases/tags/v1.3.5` 与包页面 1.3.5 均 **404**。origin/main = 本地 main = `af57f93`,无未审变更 | +| 合并 | `--no-ff` 得 `ab00aa4`;`git diff HEAD feature/1.3.5-call-observability` **空**,即合并树与父会话已审的 `433039b` 逐字一致;`merge.log/.exit` | +| CLAUDE.md 纯格式 diff | 合并前仅对该文件 `git stash push`(未 stash 全部),合并后 `stash pop` 回原样;全程未提交、未覆盖 | +| `make lint` | **exit 0**,ruff 无自动改动,import-linter **1 kept / 0 broken**;`lint.log/.exit` | +| `make test` | **1605 passed / 23 skipped / 108 deselected,95% 覆盖,282.48s,exit 0**;`daily.log/.exit`。skip 与 deselected **不计通过** | +| 真实网关 e2e 冒烟(显式 slow) | `pytest tests/e2e/test_smoke_gateway.py -m slow -v`:**4 passed,98.00s,exit 0**(流式/非流式/结构化 json/结构化模型阶梯);`smoke-gateway.log/.exit` | +| Redis 时间语义(显式 slow) | `pytest tests/contracts tests/integration -m slow -q`:**18 passed / 159 deselected,1138.67s,exit 0**;`redis-time.log/.exit` | + +未补全模型矩阵(用户已批准):本版对 `thinking.py`、能力表、wire 片段、缓存 key 公式、重试/限流/熔断语义一字未改, +故 1.3.4 的型号级结论在其**原有边界**内继续成立,连同其 FAIL/UNKNOWN/不可达/缺轮一并继承,不因本版升格。 +本版**已变更**的统计/SQL/PG 口径不复用旧统计,全部由 1.3.5 新测试承担(36 列契约、终态行、真实 PG 30 项)。 + +## 2. push / tag / 构建 / 上传 + +| 步骤 | 结果 | +| --- | --- | +| push main | `af57f93..ab00aa4`,exit 0;`push-main.log/.exit` | +| tag | `git tag -a v1.3.5`,注释 tag 对象 `ab780cf36a8c6b2de316c0b194dcaa9485e8172f`,解引用 = `ab00aa4`;push exit 0;`remote-refs-after.log` | +| 构建 | 确认 `dist` 是项目内真实目录(非符号链接)后清掉旧 1.3.3/1.3.4 产物;`python -m build` exit 0,wheel + sdist 各一份 | +| `twine check` | 两份均 **PASSED**,exit 0 | +| 上传 | exit 0。凭据只从 tea 配置读入 `TWINE_PASSWORD` 环境变量,不进 argv/日志;**未重传任何已存在版本的字节** | + +产物 SHA-256: +wheel `c017599ea6bef69a485e1d35eab2ca89154cd33180ebd6dc759647097221a6b4`; +sdist `87fd4151b77f55829b5d3206c5b75ac6c1c6bb8c94faa194955bf0db33ad0211`。 + +## 3. 独立下载、解包与安装后行为 + +全部在仓库外临时目录(`/tmp/pgw135-registry-*`)进行,不引入新依赖。 + +| 检查 | 结果 | +| --- | --- | +| registry 下载 | wheel exit 0;sdist 因私有索引不镜像 setuptools 需 `--no-build-isolation`(沿用 1.3.4 已记录的处置)exit 0 | +| 字节一致 | 下载的两份 SHA-256 与本地构建**逐字相同** | +| 包内源码 | `__init__.py` / `types.py` / `ports.py` / `telemetry/schema.py` / `middleware/telemetry.py` / `client.py` / `embedding.py` / `ocr.py` 八个文件 wheel、sdist 与已发布提交**散列全等**;sdist 内 README == 仓库 README | +| 元数据 | wheel METADATA `Version: 1.3.5`、`Description-Content-Type: text/markdown`、正文 30465 字符,含《1.3.5 逻辑调用统计与失败诊断》与安装下界 `>=1.3.5,<2`;Project-URL 三项齐全 | +| 安装后公共面(`pip install --target` + 仅从该目录导入) | `CallStats` 在 `__all__`、frozen、字段 `logical_call_id/attempts/total_latency_ms`;四类响应 `call_stats` 均为**末尾**字段且默认 `None`;`record_llm_call` 实测 **36 参**,10 个新参全为 keyword-only 且**无默认值**;`len(schema.COLUMNS) == 36` | +| 安装后终态行行为(离线,httpx MockTransport 固定 503,不发真实请求) | 3 条 `attempt` + **恰 1 条** `terminal_failure`;终态 `attempts=3`、`total_latency_ms` 非空、`cost IS NULL`、`usage_source='unavailable'`、`http_status_code` 为 NULL;尝试行三条均记真实 **503** 与 `error_body`,`error_type='TransientError'`;四行共享同一 `logical_call_id`;物理列 **37**(36 写入列 + `created_at`) | + +## 4. 外部产物亲查(匿名,看到什么算什么) + +| 目标 | 结果 | +| --- | --- | +| Release 创建 | POST **201**,id 22,正文 1898 字符逐字取自 CHANGELOG 1.3.5 段 | +| [包页面](https://gitea.iomgaa.online/iomgaa/-/packages/pypi/polygateway/1.3.5) | 匿名 **200**;可见正文含安装命令与《1.3.5 逻辑调用统计与失败诊断》;页面有指向 `iomgaa/PolyGateway` 的仓库锚点 | +| [v1.3.5 Release](https://gitea.iomgaa.online/iomgaa/PolyGateway/releases/tag/v1.3.5) | 匿名 **200**;可见文本含 `WHERE event_kind = 'terminal_failure'` 与「26 → 36」迁移说明 | +| [Releases 列表](https://gitea.iomgaa.online/iomgaa/PolyGateway/releases) | 匿名 **200**,含 v1.3.5 | +| simple 索引 | 匿名 **200**,1.3.5 的 wheel 与 sdist 均列出 | + +## 5. issue 收尾 + +仅动 **#19 / #23**:各评论一条后关闭,随后**以 GET 读到的 state 为准**复核(不拿 PATCH 返回码推断),两者均 `closed`。 +评论内容点名:自建 recorder 需补 10 参或改 `**fields`(**装配期报错**)、PG manual 档补列、 +计失败改 `WHERE event_kind = 'terminal_failure'`、`AVG(latency_ms)` 按 `event_kind` 分组; +并明确「新增失败统计列与终态行是**常规口径变更、不是异常字段**」,`http_status_code` 不可当成败判据; +同时声明**未做全模型矩阵、不宣称所有模型或渠道可用**。#22 / #24 未触碰(复核仍 `open`、评论数 0)。 + +## 6. 真实失败与处置(原件保留,不改写成功) + +| 失败 | 根因与处置 | +| --- | --- | +| 首次安装后终态验证 exit 1 | `sqlite3.OperationalError: no such column: id` —— 是**我的验证脚本**臆断了主键列名,实际第 37 个物理列是 `created_at`。改脚本 `ORDER BY rowid` 并把多出的物理列打印出来自证,**未改库代码**;失败日志保留 | +| 首次 Release 创建 exit 1 | `KeyError: 'TOKEN'` —— 变量未 export 到子进程,**未发出任何 API 请求**(不是服务端拒绝)。改为 export 后 201 | +| 包关联 POST **400** | 返回 `invalid argument`,与 1.3.4 同款。**不把 400 当成功、也不据此猜已关联**:另以认证 GET 包 API 读到 `repository.full_name = iomgaa/PolyGateway`,并匿名读到包页面上的仓库链接,两条实测证据才是关联成立的依据;既有正确关系不为重试而解绑 | + +## 7. 残余缺口(不自称已关) + +| 缺口 | 说明 | +| --- | --- | +| live 覆盖基线 | `metrics/call-telemetry-coverage.md` 的实际基线列仍待首次生产运行填入 | +| 下游自建 recorder | 装配闸只证形状可被接受,证不了函数体真的落这些列(已写进 README/CHANGELOG/issue 评论) | +| 模型矩阵 | 未重跑;1.3.4 的 FAIL/UNKNOWN/不可达/缺轮例外原样继承,不外推为「全模型可用」 | +| 其余 e2e | 本轮 slow 只跑了 `test_smoke_gateway.py` 与 contracts/integration 的 Redis 时间语义,`tests/e2e/` 其余文件未跑 | +| 用户文档站(Gitea Wiki) | 本轮未同步;`docs-convention.md` §2 清单待另行执行 | + +conda 启动器既有 `RequestsDependencyWarning` 保留,不宣称零告警。本记录落在独立 +`docs/1.3.5-release-evidence` 分支,**不改动已发布的 main/tag/registry 产物**。 diff --git a/research-wiki/index.md b/research-wiki/index.md index 7bf1519..ad47a16 100644 --- a/research-wiki/index.md +++ b/research-wiki/index.md @@ -1,6 +1,6 @@ # Research Wiki 索引 -> 自动生成,更新时间:2026-09-09 16:49 UTC +> 自动生成,更新时间:2026-09-09 18:01 UTC ## design (43) @@ -48,10 +48,11 @@ - [调用方自定义维度设计(issue #11)](designs/issue11-caller-dimensions.md) `design:issue11-caller-dimensions` - [采样参数透传设计(issue #4)](designs/sampling-params.md) `design:sampling-params` -## finding (16) +## finding (17) - [1.3.4 推理契约验证与发布准备](findings/2026-09-09-134-thinking-contracts-validation.md) `finding:2026-09-09-134-thinking-contracts-validation` - [1.3.5 T2/T3/T4 验收证据:36 列遥测、失败终态、PG 存储兼容与变异矩阵](findings/2026-09-09-135-call-observability-validation.md) `finding:2026-09-09-135-call-observability-validation` +- [1.3.5 发布完成与外部验收:合并后门、registry 产物与页面亲查](findings/2026-09-09-135-release-completion.md) `finding:2026-09-09-135-release-completion` - [2026-07-20-m2-soak-workload](findings/2026-07-20-m2-soak-workload.md) `finding:2026-07-20-m2-soak-workload` - [2026-07-21-m25-acceptance](findings/2026-07-21-m25-acceptance.md) `finding:2026-07-21-m25-acceptance` - [2026-07-21-p6-soak-baseline](findings/2026-07-21-p6-soak-baseline.md) `finding:2026-07-21-p6-soak-baseline` diff --git a/research-wiki/log.md b/research-wiki/log.md index 6abfff4..2aa5020 100644 --- a/research-wiki/log.md +++ b/research-wiki/log.md @@ -159,3 +159,4 @@ - [2026-09-09 13:42 UTC] 新增边: plan:2026-09-09-135-call-observability --implements--> design:2026-09-09-135-call-observability-design - [2026-09-09 13:42 UTC] 重建索引: 100 篇页面 - [2026-09-09 16:49 UTC] 重建索引: 101 篇页面 +- [2026-09-09 18:01 UTC] 重建索引: 102 篇页面