docs(growth): record stable production coverage [skip ci]

This commit is contained in:
ogt
2026-07-15 10:52:08 +08:00
parent 4bc5be6d2f
commit 671c39c54a
2 changed files with 16 additions and 14 deletions

View File

@@ -1,8 +1,8 @@
# PChome 業績成長自動化作戰系統 — AI 競價情報模組 Single Source of Truth
> **最後更新**: 2026-07-15 (台北時間)
> **狀態**: 🟠 Partial。V10.796 source 新增 EwoooC / MOMO 兩個 canonical product 的公開唯讀 MCP/RAG aggregate receipt但 production 部署與 AWOOOI durable federation readback 尚待同一 release 驗證;目前 production 仍以 V10.795 runtime truth 為準。V10.795 已把 PChome TOP50 比價主指標改為業績加權覆蓋、建立 MOMO 同商品 controlled apply 與 durable receipt/post-verifier並以報表到檔 SLA 取代午夜切日造成的誤判production 桌機/手機可見驗證已通過。目前業績覆蓋為 40%,但仍有 45/50 商品未形成正式同商品證據、外部平台 runtime 僅 1/15。SEC-P0-001 已完成 production closureSEC-P0-002 維持 production hybrid canary-readyfull asset reconciliation、software supply chain、統一 controlled-apply envelope、restore drill、internal RAG canary 與 MCP/RAG runtime closure 尚未全部完成。任何局部 receipt 不得代表整體閉環完成。
> **適用版本**: V10.796 sourceproduction runtime 需由 `/health` 與 federation post-verifier 另行確認
> **狀態**: 🟠 Partial。V10.799 已在 production 以 exact Gitea object `01329c7048ffb54d7f323e84d8c9de086eb1cd68` 運行。`pchome_comparison_coverage_v3` 把 TOP50 固定為 action-priority scoring 前的營收排名母體mapping 狀態不再把已完成商品擠出分母production 最終 readback 為 `21/50 = 42%` 商品覆蓋與 `NT$180,667 / NT$354,062 = 51.0%` 業績覆蓋,母體 fingerprint `7b74504fcc1e1801c2ca2b42` 在三輪 bounded run 前後不變。仍有 `1` 件候選驗證、`28` 件未對應,外部平台 runtime `1/15`。SEC-P0-001 已完成 production closureSEC-P0-002 維持 production hybrid canary-readyfull asset reconciliation、software supply chain、統一 controlled-apply envelope、restore drill、internal RAG canary 與 MCP/RAG runtime closure 尚未全部完成。任何局部 receipt 不得代表整體閉環完成。
> **適用版本**: V10.799 source + production runtimeGitea Action #1131 仍因 `ewoooc-host` runner 離線而未提供 CD 執行證據
---
@@ -15,14 +15,16 @@
---
## 零之負二、PChome 比價可信度與同商品自動閉環V10.795
## 零之負二、PChome 比價可信度與同商品自動閉環V10.799
- 儀表板主要 KPI 使用 TOP50 近 7 天業績加權覆蓋,不再把原始商品筆數 `5/50 = 10%` 當成唯一或主要成效。Production readback 為可比價業績 `NT$40,201 / NT$100,507 = 40%`10% 仍保留為商品覆蓋透明度,不得隱藏或改寫
- TOP50 production partition 為 `5` 件正式可比價、`4` 件候選驗證、`41` 件未對應;剩餘 `45/50` 是 current P0 的真實 coverage gap不得因 UI 改善標示完成
- V10.799 的 `pchome_comparison_coverage_v3` 先依 `max(current_7d, previous_7d) revenue DESC -> qty DESC -> product_id ASC` 固定 TOP50再於母體內做 action-priority 排序。`scope_membership.mapping_status_can_change_membership=false`,並以 ordered product IDs 產生 24 字元 SHA-256 fingerprint自動補齊成功不得再把商品移出分母。這修正了舊版「補好一筆、該商品優先分數下降、另一筆未對應商品進入 TOP50」造成覆蓋率長期停在十幾的 cohort drift
- V10.797 曾把 `42張入*4包``15張入*3包` 外層多包裝誤判為單包 exact total price錯誤結果未被採信兩筆 row 已在同一交易改為 `needs_review`durable quarantine receipts 為 `sameitem-quarantine-9572ee88063541d3ba2c``sameitem-quarantine-4c355c9455cb49f6bded`沒有刪除資料。V10.798 將巢狀件數正規化為 `42 x 4 = 168張``15 x 3 = 45張`,外層包裝只能走 unit-comparable後續 bounded run 找到真正單包 exact MOMO 商品並通過獨立 verifier
- V10.799 部署後的獨立初始 readback 為 `16/50 = 32%` 商品覆蓋與 `NT$105,015 / NT$354,062 = 29.7%` 業績覆蓋。Run `58bb702057284cd382c82314b418d713` 自動掃描 8 件、取得 17 筆候選、獨立驗證並回讀 3 筆,提升至 `19/50 = 38%``46.2%`run `cb40a5dcdaa045c69bf9611ebb13bba2` 再回讀 2 筆,提升至 `21/50 = 42%``51.0%`。兩輪皆為 `verified_with_coverage_gain`durable per-target receipts 均 `persisted_and_verified`
- 第三輪 run `14d4aac64d434e34bfbd0f0edb7ef1eb` 找到 9 筆候選但 0 筆通過正式同款門檻terminal 為 `degraded_no_safe_candidate`、post-verifier 為 `no_write_verified`8/8 target receipts 已持久化。此輪證明自動化會在證據不足時停止正式價格寫入,不為提高 KPI 放寬 matcher。最終 partition 為 `21` 件正式可比價、`1` 件候選驗證、`28` 件未對應,固定 fingerprint 為 `7b74504fcc1e1801c2ca2b42`
- 儀表板第一層 KPI 使用同一 TOP50 的近 7 天業績加權覆蓋商品筆數覆蓋保留為次要透明度。Production template 顯示「業績比價覆蓋」,目前應呈現 `51.0%``NT$180,667 / NT$354,062``21/50 商品`不得退回無分母的「比價可用率」。Dashboard memory cache 為 120 秒bounded write 後需失效或 reload避免使用者看到回填前舊值。
- `pchome_same_item_reconciliation_v1` 以同一 `trace_id/run_id/work_item_id` 串接來源、正規化、SOT diff、AI candidate、風險政策、check-mode、bounded execution、exact DB post-verifier 與 durable per-target receipt。只有獨立同商品與規格驗證通過者可寫 `external_offers`;候選、阻擋頁與無安全候選 run 一律 no-write。
- 第一輪 production canary 寫入 2 件獨立驗證 MOMO 同商品;修正動態 TOP50 導致的 verifier 漂移後exact DB identity/fingerprint replay 為 `2/2`。第二輪 run `d3db6b69a5fc46e4ad59424299d549cb` 無安全候選4/4 durable receipts 為 `no_write`、0 failedpost-verifier terminal 為 `no_write_verified`scheduler 依 1 小時 cooldown 自動重試。
- 最新業績日為 `2026-07-13`。V10.795 使用 `pchome_sales_freshness_sla_v1`:台北時間每日 `20:00` 前,上一日報表仍在等待到檔視窗,`2026-07-15 01:44` 的 raw calendar lag 為 2 天、SLA lag 為 0、狀態為 `grace``decision_ready=true`20:00 後若仍未收到 `2026-07-14` 才會依政策阻斷決策。scheduler receipt `0f24219e0bbb4740b7ad6645e7952296` 與 explicit canary receipt `6e2df008f65544fe8e557c11ff0dbb93` 均為 `completed_no_write`durable decision 為 `no_candidate_fresh_no_write`證明無新檔時安全不寫且不再於午夜誤停業務。live 與 persisted source readiness 均為 `1/4`Google Drive 可用HTTPS、IMAP、local 仍未形成冗餘,因此 Lane A 只關閉 freshness runtimesource continuity 仍是 partial。
- Dashboard 的 mapping backlog 與 AI automation evidence 已改為結構化 grid 與 progressive disclosureV10.795 首屏可見 `業績日 2026-07-13 · 到檔 SLA 內`。Desktop `1512px` 與 mobile `390px` DOM 驗證均無水平溢位,`430px` mobile screenshot 亦完整顯示標題、SLA 與 40% 業績覆蓋。這只代表該頁可見 UX closure,完整全站 UI/UX 仍依 `UX-P1-001` 推進。
- Dashboard 的 mapping backlog 與 AI automation evidence 已改為結構化 grid 與 progressive disclosureV10.799 首屏資料契約為 `業績日 2026-07-13 · 到檔 SLA 內``51.0%` 業績覆蓋與 `21/50` 商品。既有 V10.795 desktop/mobile layout smoke 仍通過;本輪正式站瀏覽器缺少登入 session因此不新增未驗證的 production screenshot claim,完整全站 UI/UX 仍依 `UX-P1-001` 推進。
## 零之負一、資訊安全與治理自動化基準2026-07-10
@@ -175,7 +177,7 @@
- V10.654 起全站側邊欄第一個主入口必須命名為「業績成長指揮台」;舊商品看板只能以「舊商品看板」保留在 `/dashboard`,比價工作台必須直連 `/dashboard?filter=pchome_review...`,不得再使用 `/` query 轉址,避免正式首頁與舊頁混淆。
- V10.655 起正式首頁 `/` 必須以 HTTP 200 原地渲染「業績成長指揮台」,不得 302 跳轉到 `/ai_intelligence`;側邊欄第一個主入口必須直連 `/``/ai_intelligence` 只作為相容入口保留,不得成為主導流路由。
- V10.656 起正式首頁首屏必須是「PChome 業績成長系統」專業儀表板,而非大段說明型頁首;第一屏需直接呈現近 7 天業績、同款比價證據、下滑商品、待補同款、正式資料平台、下滑商品 TOP 5、比價覆蓋圓環與處理狀態且全部使用 `/api/ai/pchome-growth/opportunities` 真資料渲染。
- V10.789 起首頁禁止用無分母的「比價可用率」代表全站資料品質。`comparison_metric_contract.version=pchome_comparison_coverage_v2` 必須分開公布 TOP 高優先商品、近七日活躍商品與正式 runtime 平台三個 scope 的分子、分母與比率`comparison_ready``candidate_validation``unmatched` 必須互斥且總和等於候選數。業績過期時 `operational_decision.ready=false`UI 顯示決策暫停但保留歷史證據,不得把 stale 數字包裝成今日建議。`momo-scheduler` 必須以獨立防重入 watchdog 依序執行授權業績取得與 bounded comparison backfill避免同步 `schedule.run_pending()` 被長任務阻塞後讓比價覆蓋永久停滯。
- V10.799 起首頁禁止用無分母的「比價可用率」代表全站資料品質。`comparison_metric_contract.version=pchome_comparison_coverage_v3` 必須固定 action-priority scoring 前的 TOP 營收商品母體,以 deterministic product-ID tie-breaker 與 fingerprint 證明 mapping 狀態不會改變 membership同時分開公布 TOP 商品數、業績、近七日活躍商品與正式 runtime 平台 scope 的分子、分母與比率`comparison_ready``candidate_validation``unmatched` 必須互斥且總和等於候選數。業績過期時 `operational_decision.ready=false`UI 顯示決策暫停但保留歷史證據,不得把 stale 數字包裝成今日建議。`momo-scheduler` 必須以獨立防重入 watchdog 依序執行授權業績取得與 bounded comparison backfill避免同步 `schedule.run_pending()` 被長任務阻塞後讓比價覆蓋永久停滯。
- V10.658 起全站頁面必須回到「提升 PChome 業績」同一產品主線;共用 shell 需提供短流程骨架評估、分析、建議、解法、治理。頁首、hero、任務卡與提示區不得依賴大段文字讓使用者理解狀況首屏應以短指標、狀態分流、下一步動作與可執行入口呈現專業評估、分析、建議與解決方案。
- V10.659 起主要入口頁的首屏文案必須改為流程職責語言而不是功能說明書。當日業績負責找出下滑與價差壓力匯入負責資料新鮮度AI 建議負責把證據轉成銷售建議,比價負責同款與價差決策,缺貨負責避免主推商品斷貨,月結分析負責判斷成長、毛利與品類結構。

View File

@@ -1,6 +1,6 @@
# AI Automation Mainline Work Items
> Updated: 2026-07-15 01:54 Asia/Taipei
> Updated: 2026-07-15 10:48 Asia/Taipei
> Governance: `global_product_governance_v2` + ADR-038
> Current P0: `GROWTH-P0-001 comparison coverage truth + autonomous refresh`
@@ -17,7 +17,7 @@
| Order | ID | Status | Work item | Exit evidence / next machine action |
|---:|---|---|---|---|
| 1 | `SEC-P0-001` | Completed | Deny-by-default route access control | `governance/evidence/SEC-P0-001-20260711T122758Z.json` plus the current runtime receipt prove anonymous matrix 8/8 denied, public `/metrics` 404, exact internal target up, EwoooC product markers present, Prometheus identity preserved and `momo-db` unchanged. |
| 2 | `GROWTH-P0-001` | In progress (`runtime_partial`) | Comparison coverage truth + autonomous refresh | V10.795 is live. `pchome_sales_freshness_sla_v1` keeps `2026-07-13` decision-ready before the `2026-07-15 20:00` report cutoff: raw lag `2`, SLA lag `0`, state `grace`; scheduler and explicit production canary both closed as durable `completed_no_write`. Live and persisted source readiness now agree at `1/4`, so midnight false-staleness is closed but source redundancy is not. TOP50 truth is `5 ready + 4 candidate validation + 41 unmatched`; count coverage remains `10%`, while the primary revenue-weighted KPI is `NT$40,201 / NT$100,507 = 40%`. Same-item controlled apply has independently verified and committed 2 MOMO offers; the latest no-safe-candidate run produced 4/4 durable no-write receipts and zero failures. Registered platform runtime remains `1/15`. Next: execute lanes B -> C while Lane A continuously verifies the next report arrival. |
| 2 | `GROWTH-P0-001` | In progress (`runtime_partial`) | Comparison coverage truth + autonomous refresh | V10.799 is live. `pchome_comparison_coverage_v3` fixes TOP50 membership before action-priority scoring; fingerprint `7b74504fcc1e1801c2ca2b42` stayed unchanged across all bounded runs. Final production truth is `21 ready + 1 candidate validation + 28 unmatched`, count coverage `42%`, and revenue coverage `NT$180,667 / NT$354,062 = 51.0%`. Two productive runs independently wrote/read back `3 + 2` verified MOMO offers; the next run found 9 candidates but safely closed `no_write_verified` with 8/8 durable target receipts. Sales date `2026-07-13` remains decision-ready inside the `2026-07-15 20:00` arrival SLA; source readiness remains `1/4` and registered platform runtime remains `1/15`. Next: retry the remaining 28 unmatched products only after fresh source evidence, while advancing Lane C structured platform adapters and continuously verifying Lane A report arrival. |
| 3 | `SEC-P0-002` | In progress (`canary_ready`) | Database identity + least-privilege RBAC | V10.789 is live and `governance/auth_identity_runtime_receipt.json` verifies required tables, two active admins, durable lockout, session revocation, trusted proxy policy and no-secret mutation audit readiness. Runtime is intentionally hybrid because zero database-admin success receipts have been captured; `auto` retires shared authority after two durable successes without a manual review gate. Next: capture database-admin login receipts and verify automatic database-only cutover. |
| 4 | `SEC-P0-003` | In progress | Webhook trust and replay protection | Telegram secret-token verification code exists; production secret activation remains unproven. Exit: secret provisioned outside source, required mode enabled, invalid-secret 401 and authorized callback canary pass. |
| 5 | `SUPPLY-P0-001` | In progress | Gitea-only secure software supply chain | Gitea-native checkout, secret-safe `.dockerignore`, commit-bound source receipt and governance gate are active. Exit: exact dependency lock, internal SAST/SCA/secret scan, SBOM, image digest/provenance, vulnerability SLA and production digest readback. |
@@ -26,7 +26,7 @@
| 8 | `RAG-P0-001` | Not started | Internal RAG candidate canary | V10.770 stops at candidate preview. Exit: bounded pgvector candidate canary, signature/readback/feedback receipt, no price write and no premature `ai_insights` promotion. Next: `run_internal_rag_candidate_canary`. |
| 9 | `MCP-P0-001` | In progress (`federation_source_ready`) | MCP/RAG production runtime closure | V10.796 source adds a strict public aggregate receipt for canonical `ewoooc` and `momo-pro-system` identities without opening authenticated internal APIs or exposing endpoint/tool payload data. Exit still requires V10.796 production `/health`, two fresh AWOOOI durable receipts with fingerprint recompute, live MCP servers/router/RAG, approved caller/tool boundary and production query canary. Current source readiness must not be reported as runtime closure. |
| 10 | `SEC-P0-004` | Not started | Security operations lifecycle and metrics | Add durable security incident state and publish MTTA, MTTR, recurrence, false positive, human intervention, verifier pass, rollback and freshness. Exit: detect-to-learn production receipt. |
| 11 | `REL-P0-001` | In progress | Formal deploy and visible proof discipline | Gitea runtime source is main `11d3865dfc15f8b52909ac853c7177a19fa7d5ee`; dev carries the same runtime changes through `fa94c31`. Action #1127 is waiting because no matching `ewoooc-host` runner is online, so it provides no execution evidence. A bounded exact-Git-object fallback deployed V10.795 after 10/10 staging and target SHA-256 checks; archive SHA-256 is `eb3f8618fb4a151e1e96671b0c16aefc35d561529cfc9e8a1fca4f14cca05217` and rollback backup is `/home/ollama/momo-deploy-backups/ewoooc-20260714T174327Z-11d3865`. Production `/health` is healthy at V10.795; all three application containers are healthy and retain their expected identities; `momo-db` remained running and unchanged at `cd092451cb5fd555d0ffff70642e109f3b742882c418beeab631793d1e9dc55d`. Desktop/mobile visible QA confirms the SLA label, 40% revenue KPI and no horizontal overflow. Next: restore the dedicated runner and require commit-bound automated CD/post-verifier proof for subsequent runtime changes. |
| 11 | `REL-P0-001` | In progress | Formal deploy and visible proof discipline | Gitea runtime source is main `01329c7048ffb54d7f323e84d8c9de086eb1cd68`. Action #1131 is waiting because no matching `ewoooc-host` runner is online, so it provides no CD execution evidence. A bounded exact-Git-object fallback deployed V10.799 from archive SHA-256 `b562f9eb929a75148825506bd381a74f58b87aab268b7120966bd80b3732059b`; check, deploy and independent post-verifier receipts are under `/home/ollama/momo-deploy-backups/ewoooc-20260715T023846Z-01329c7/`. Production `/health` is healthy at V10.799; all three runtime file hashes equal the source commit, three application containers are healthy, and `momo-db` remained unchanged at `cd092451cb5fd555d0ffff70642e109f3b742882c418beeab631793d1e9dc55d`. Production template and runtime data contract now yield the 51.0% revenue KPI and 21/50 product detail; no new authenticated browser screenshot is claimed because the available browser session was logged out. Next: restore the dedicated runner and require commit-bound automated CD/post-verifier plus authenticated desktop/mobile smoke for subsequent runtime changes. |
### GROWTH-P0-001 Fixed Execution Lanes
@@ -35,7 +35,7 @@ These lanes are one ordered current P0, not optional side work. They must advanc
| Lane | Status | Production baseline | Next machine action |
|---|---|---|---|
| A. Sales freshness | In progress (`sla_runtime_closed_source_redundancy_partial`) | Latest sales date `2026-07-13`; before the `2026-07-15 20:00` cutoff, raw lag is `2` but SLA lag is `0`, state is `grace` and decisions remain released. Scheduler receipt `0f24219e0bbb4740b7ad6645e7952296` and explicit canary receipt `6e2df008f65544fe8e557c11ff0dbb93` both persisted `completed_no_write`; durable decision is `no_candidate_fresh_no_write`. Live and persisted readiness now agree at Google Drive `1/4`; HTTPS, IMAP and local remain disabled. | Continue automatic report-arrival reconciliation. At/after 20:00 require `2026-07-14` or automatically block decision use, emit the bounded upstream action and verify the next arrival receipt; keep source redundancy partial until another approved source is live. |
| B. Verified same-item evidence | In progress | TOP50: `5` verified, `4` candidate/source validation, `41` unmatched. Count coverage is `10%`; revenue-weighted coverage is `NT$40,201 / NT$100,507 = 40%`. The first production canary independently verified and committed 2 exact MOMO offers; exact identity/fingerprint DB replay passed `2/2`. Latest run `d3db6b69a5fc46e4ad59424299d549cb` found no safe candidate and correctly persisted 4/4 `no_write` receipts, 0 failed, with a passing no-write post-verifier and 1-hour retry. | Continue revenue-prioritized bounded runs over the remaining 45 products, replay deterministic identity/unit/variant checks, promote only independent verifier passes, and publish both count and revenue coverage deltas per run. |
| B. Verified same-item evidence | In progress | TOP50 fixed cohort: `21` verified, `1` candidate/source validation, `28` unmatched. Count coverage is `42%`; revenue-weighted coverage is `NT$180,667 / NT$354,062 = 51.0%`. V10.797 outer-pack false exact candidates were quarantined without deletion; V10.798 normalizes nested quantity, and V10.799 prevents mapping status from changing cohort membership. Runs `58bb702057284cd382c82314b418d713` and `cb40a5dcdaa045c69bf9611ebb13bba2` wrote/read back five verified offers; run `14d4aac64d434e34bfbd0f0edb7ef1eb` closed no-write after zero safe candidates. | Wait for fresh source evidence before retrying the same unresolved subset, broaden approved structured platform adapters, preserve deterministic identity/unit/variant gates, and publish both count and revenue coverage deltas with the same scope fingerprint per run. |
| C. Platform runtime coverage | In progress | `1/15` registered external sources currently contributes formal runtime data (`6.7%`). PixelRAG remains evidence-only. | Activate approved structured adapters in source-contract order, use PixelRAG/OCR/VLM only to generate replayable candidates, classify anti-bot pages as blocked evidence, and require provenance/freshness/verifier receipts before formal price promotion. |
## P1
@@ -47,10 +47,10 @@ These lanes are one ordered current P0, not optional side work. They must advanc
| 14 | `APPSEC-P1-001` | In progress | CSP and DOM/XSS hardening | Security headers are present and CSP is report-only. Collect violations, remove high-risk `innerHTML`/inline sinks, then enforce CSP by canary. |
| 15 | `APPSEC-P1-002` | Not started | Unsafe shared-cache serialization removal | Replace writable pickle caches in dashboard/daily-sales/EDM/sales with constrained JSON or signed schema. |
| 16 | `ARCH-P1-001` | In progress | Split oversized policy/executor/verifier modules | Current top debts include 44k-line PChome mapping and 14k-line smoke service. Split by bounded family and independent tests. |
| 17 | `UX-P1-001` | In progress | Professional full-site UI/UX | V10.795 closes the PChome growth dashboard slice: primary KPI is 40% revenue coverage, raw 10% count coverage remains secondary truth, mapping/automation text walls are structured grids, and the first viewport now distinguishes raw calendar lag from report-arrival SLA. Desktop `1512px` and mobile `390px` DOM smoke show no horizontal overflow; the `430px` mobile screenshot shows the full title, SLA state and KPI cards. Continue the same first-viewport, progressive-disclosure, accessibility and state coverage across every remaining primary page. |
| 17 | `UX-P1-001` | In progress | Professional full-site UI/UX | V10.799 production template leads with `業績比價覆蓋`, now backed by 51.0% revenue coverage and 21/50 product transparency instead of the old unqualified 10% card. Mapping and automation evidence remain structured grids with progressive disclosure, and the first viewport distinguishes calendar lag from report-arrival SLA. Existing V10.795 desktop/mobile overflow smoke remains valid for layout; this release still needs a fresh authenticated production screenshot before visible closure is claimed. Continue the same first-viewport, progressive-disclosure, accessibility and state coverage across every remaining primary page. |
| 18 | `PIXELRAG-P1-001` | Not started | Ollama-first multimodal embedding benchmark | Verify approved visual embedding on GCP-A -> GCP-B -> 111 and design pgvector-compatible visual metadata; FAISS remains disallowed without ADR. |
| 19 | `MARKET-P1-001` | In progress | Marketplace source contracts | Finish stable, public-boundary, provenance and rate-limit contracts for Shopee, Coupang, Yahoo, ETMall, Friday and Rakuten; blocked pages remain non-product data. |
| 20 | `QA-P1-001` | In progress | Deterministic test and CI governance | V10.795 full local baseline is 2,081 passed / 9 skipped / 0 failed; focused SLA/runtime regression scope is 103 passed and the dev conflict-preservation scope is 73 passed. Security governance strict release gate passes with zero blocking failures. Action #1127 remains waiting without runner execution, so CI parity is not claimed. Next: reproduce the same terminal in Gitea CI after runner recovery, split deterministic release tests from nightly integration and production canaries, and prevent workstation disk pressure from invalidating evidence. |
| 20 | `QA-P1-001` | In progress | Deterministic test and CI governance | V10.799 final source baseline is `2,089 passed / 9 skipped / 0 failed`; focused cohort/reconciliation scope is `37 passed`, Ruff and diff checks are clean. Production exact-object hashes, external health, fixed cohort fingerprint, two positive bounded runs and one no-write run all have readback evidence. Action #1131 remains waiting without runner execution, so CI parity is not claimed. Next: reproduce the same terminal in Gitea CI after runner recovery, split deterministic release tests from nightly integration and production canaries, and prevent workstation disk pressure from invalidating evidence. |
## P2