# E2E 认证前置统一 — 执行与批准清单 ## 当前状态 - in_progress / inline。创建轮使用 task.py create --no-start;用户随后明确批准阶段 0,已 task start 切换到本任务,不授予阶段 1 批量修改权限。 - 门禁任务获准 21 文件逐字节未动;HEAD=66f25b1,本地 origin/main=492920c。新任务独立、非子任务,未转移合同阶段 B 的业务验收责任。 - 创建轮只读已有 single trace;随后在阶段 0 授权内实际执行一次原合同用例的观测实验,结果 timedOut,未改真实源码。新现场条件与旧 trace 严格分开,见 design.md §1/§3.1。 - 两个 manifest 保持为空,符合 inline 合同;受影响规约按步骤读取指定章节,不将超出注入上限的大文件登记成可完整自动注入的上下文。未来若切 sub-agent,必须另行准备真实、适量的上下文,空清单不兼容该模式。 ## 规划检查 - [x] 记录独立立项、认证状态合同及 24/23/80 的口径边界。 - [x] 核实请求、fulfill 与 /me 顺序,不预设 cookie 污染。 - [x] PRD、设计、执行清单分开;PRD 按最终结构收敛,无 TBD 或重复开放的已答事实。 - [x] 运行上下文、治理、敏感内容及新增文件 whitespace 检查,核对旧 21 文件摘要未变。 - [x] 用户批准阶段 0,已 task start;仅执行该阶段。 ## 阶段 0(已批准,2026-09-07) - [x] 读取任务及受影响规约,冻结候选、原回执及原件摘要。 - [x] 按 design.md §3 核验或重建独占本地前提,留资源归属,不接生产、live 或真实身份。 - [x] 一次单条、1 worker、零重试、trace=on,保持原断言;观测副本差异和实际命令单列,真实候选不动。 - [x] 记录 cookie、online、离线快照和调用入口及缺项;不倒填历史、不自动追加实验。 - [x] 静态追踪 helper/TEST_IDS/route,交场景分类及拟写入清单,不开始迁移。 - [x] 准备 AC1/AC2、清理结果及阶段 1 方案交审;不是独立复核通过。文件外 80 条不逐项展开独立问题。 ## 后续阶段(尚未批准) - [ ] 清单和 helper 接口获批后,补状态合同回归并最小迁移。 - [ ] 保留业务断言及正确样本,记录是否越过认证前置;不修旧“更多”或产品权限缺口。 - [ ] 按固定矩阵验证,完整/中断/未运行状态及候选绑定分列,不重试至绿或冒充整套。 - [ ] 对剩余失败单独归类;新增红项不自动修。 - [ ] 主会话检查后提交独立复核,不自行签独立通过。 - [ ] 提交、push、归档、部署和 R1 启用均等待各自授权。 ## 规划验证记录 以下是创建轮历史记录,当轮不运行产品测试、构建、数据库或浏览器;不用于描述随后已获批的阶段 0 实验。 - python3 .trellis/scripts/task.py validate .trellis/tasks/09-07-e2e-auth-preconditions:两个 inline manifest 均 0 entries,通过。 - node scripts/qa/check-trellis-governance.mjs --json:PASS,0 errors / 0 warnings。 - node scripts/qa/check-sensitive-content.mjs --json:PASS,0 findings。 - git diff --check 及六个新增任务文件分别执行 git diff --no-index --check:均通过;旧获准 21 文件逐项 SHA-256 一致。 - 首轮规划校验的 Scope/Test Plan 缺项已补齐;超出注入上限的整份模块文档没有继续登记在 inline 清单中。首轮日志保留于 artifacts/qa-flow/e2e-auth-preconditions/planning-20260907-01/,复验位于 validated/,最终交审快照与回执位于 final/;不覆盖旧门禁回执。 - 以上仅主会话文档验证,不是阶段 0 已执行、实施获批或独立复核通过。 ## 阶段 0 运行记录 已收到阶段 0 的明确批准。仅在独占实验副本内为 AuthContext 添加安全观测,真实测试及应用源码保持不变;使用本地隔离库和无外网命名空间,不运行全套,不实施迁移。 | 证据目录后缀 | 实际浏览器用例 | 结果与限制 | | --- | --- | --- | | phase0-20260907-01 | 0 | 缺 QA_DIAGNOSTIC_PWA_ROOT,Playwright 前准备失败;观测副本构建及 AST 校验保留 | | phase0-20260907-02 | 0 | 锚定标题没有匹配 qualified title,No tests found;原始错误保留,不算浏览器重试 | | phase0-20260907-03 | 1 | 先 --list 确认一条原用例,再 workers=1 / retries=0 / trace=on;1 timedOut,仍在登录前置 | - 源码绑定:HEAD=66f25b1、local origin/main=492920c,观测前 sourceDigest=b7c8edbe8c3c4005e8dead6cc57aa50a8722bf515f6663e4be8a013aa728cd5a。两次后续准备核对源摘要及构建文件摘要后复用观测构建,不重做产品构建、不覆盖 client/dist。 - 观测结果:首次 sessionHint=false / online=false / offlineSnapshotAvailable=false,入口 bootstrap-primary-refresh → runRefresh;实际网络 refresh 一次,login 零次。没有将本轮浏览器状态倒填旧 trace,也没有把重复函数日志算作网络重试。 - 原始用例耗时 216617ms、retry 0,错误仍为 login-identifier 的 locator.fill;该耗时不是普通 full-local 成本、不是通过证据。 - 依赖盘点:65 个非 manual spec,33 文件有直接 refresh 路由;30 个表单矛盾文件 + 1 访客提示矛盾文件。31 个现有 spec + 2 个新增 helper/合同 spec 是阶段 1 提案,不是写入授权。另两项恢复建模缺口分开延后,原 80 条文件外失败不重新计数。 - 回执位于 artifacts/qa-flow/e2e-auth-preconditions/phase0-20260907-03/。原始报告、trace、observation-result.json、static-census.json 各自保留;收尾 source/resource 核验见 closeout-receipt-v2.json。首版核验因误设“每次都有独立剩余库计数文件”失败,保留 closeout-receipt.json,不补造 02 的计数。 - 清理边界:3 个本轮容器及 3 个临时副本已定点确认不存在;01/03 的原计数为 0,02 原 cleanupExit=0 而无单独计数文件。检查没有修改资源或触碰生产。 ## 阶段 0 交审检查 - [x] 再核对原 21 文件、1052 份运行来源文件及 HEAD/origin 引用未变;closeout-receipt-v2.json 的 valid=true。 - [x] 上下文(两个 inline manifest 均 0 entries)、治理(0 errors / 0 warnings)、敏感内容(0 findings)、tracked/new-task whitespace 检查完成。仅主会话检查,不代替独立复核。 - [x] 用户独立复核并批准阶段 0;不等于批准阶段 1 的 31+2 清单和接口。 阶段 0 已独立复核通过,阶段 1 暂缓;后续在线对照另行交审。没有提交、push、归档或部署。场景 8、经理缺口和 R1 均继续挂起。 文档检查原件位于 phase0-20260907-03/review/。首轮 whitespace shell 把 git diff --no-index 的“存在文件差异”退出 1 当作格式失败,实际诊断为空;whitespace-v2.json 保留逐文件退出码及空诊断,未为消除该状态改动内容。最终交审使用相对 planning-20260907-01/final/ 六文件快照的增量;回执不得把旧门禁 21 文件或临时观测副本算作本次新增实现。 ## 在线对照(已批准,2026-09-07) - [x] 冻结阶段 0 回执、原 21 文件和来源快照;在独占命名空间内准备原生 online=true 前提,记录外层包装差异。 - [x] 完成空白页在线与 context 隔离前置检查;实际均符合预期,不伪改 navigator。 - [x] 一次原合同单条、零重试、trace=on:认证及合同前置通过;旧“更多”点击超时,整条非 PASS。 - [x] 校验实际 trace 的 online、hint、调用入口及请求顺序,核验资源清理及来源不变,准备交审。 - [x] 用户认可本次在线结果,下一步先审环境启动合同;原 31+2 迁移不作为默认建议,不自动执行。 仅此在线实验获批;阶段 1 暂缓,场景 8、经理缺口和 R1 不变,无生产、提交、push、归档或部署授权。 ## 在线运行回执 最新后续状态:环境合同规划归 release-gate-integrity 的 R2/R6、设计 §10;本轮仅修改两个任务的规划/事实文档和追加撤销资格侧记,不实现、不重跑、不修合同、不改产品或测试源。207 原浏览器清单从真实红项、工作量和 R1 等决策输入中撤销,raw JSON/trace/包装脚本不删除、不覆盖,其他原始证据按自己的范围保留。认证任务保持 in_progress,仅等待后续任务处置,不自行提交、归档或宣称阶段 1 完成。 - 实际命令沿用原选择器:npm run test:e2e:full -- tests/e2e/payment-reviewer-permissions.spec.ts --grep '合同只读人员看不到新增编辑续约和归档动作' --workers=1 --trace=on --retries=0 --reporter=list,json,html。先 --list 确认一条,没有额外业务重跑。 - 实际首个 bootstrap:online=true / sessionHint=false / offlineSnapshotAvailable=false,命中 guest-ready;登录前 refresh=0、login=1。登录后 full navigation 的 refresh 成功是保留的正常恢复路径。 - 387/388/389/390/396 的合同前置断言通过;397“更多”超时。1 timedOut / retry 0 / 214570ms;下游续约和归档未覆盖,不冒充整条通过或 R1 成本。 - 来源、观测构建和原 21 文件逐项未变;本轮容器及临时目录均确认已清理,原独占库剩余计数 0。详见 online-20260907-01/closeout-receipt.json,valid=true。 - 运行脚本、原始报告、trace、前置探针与派生结果各自保存,未覆盖阶段 0 原件。原 static-census.json 的“矛盾”标签保留为历史静态分类,不再当作已证明需修改的缺陷。 - 本次只更新当前任务事实和忽略目录证据,不改受冻结规约或任何产品/测试源码;执行端撤回默认迁移 31 文件的建议,等待用户决定环境合同优先的后续范围。