From 8897a765923e464d331fc8bb9715a691ff97770f Mon Sep 17 00:00:00 2001 From: ogt Date: Wed, 15 Jul 2026 01:56:05 +0800 Subject: [PATCH] docs(governance): record V10.795 sales SLA closure --- docs/AI_INTELLIGENCE_MODULE_SOT.md | 12 ++++++------ docs/guides/ai_automation_mainline_work_items.md | 12 ++++++------ 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/docs/AI_INTELLIGENCE_MODULE_SOT.md b/docs/AI_INTELLIGENCE_MODULE_SOT.md index df6024e..fc338f1 100644 --- a/docs/AI_INTELLIGENCE_MODULE_SOT.md +++ b/docs/AI_INTELLIGENCE_MODULE_SOT.md @@ -1,19 +1,19 @@ # PChome 業績成長自動化作戰系統 — AI 競價情報模組 Single Source of Truth -> **最後更新**: 2026-07-14 (台北時間) -> **狀態**: 🟠 Partial。V10.794 已把 PChome TOP50 比價主指標改為業績加權覆蓋、建立 MOMO 同商品 controlled apply 與 durable receipt/post-verifier,並完成 production 桌機/手機可見驗證;目前業績覆蓋為 40%,但仍有 45/50 商品未形成正式同商品證據、外部平台 runtime 僅 1/15。SEC-P0-001 已完成 production closure,SEC-P0-002 維持 production hybrid canary-ready;full asset reconciliation、software supply chain、統一 controlled-apply envelope、restore drill、internal RAG canary 與 MCP/RAG runtime closure 尚未全部完成。任何局部 receipt 不得代表整體閉環完成。 -> **適用版本**: V10.794 +> **最後更新**: 2026-07-15 (台北時間) +> **狀態**: 🟠 Partial。V10.795 已把 PChome TOP50 比價主指標改為業績加權覆蓋、建立 MOMO 同商品 controlled apply 與 durable receipt/post-verifier,並以報表到檔 SLA 取代午夜切日造成的誤判;production 桌機/手機可見驗證已通過。目前業績覆蓋為 40%,但仍有 45/50 商品未形成正式同商品證據、外部平台 runtime 僅 1/15。SEC-P0-001 已完成 production closure,SEC-P0-002 維持 production hybrid canary-ready;full asset reconciliation、software supply chain、統一 controlled-apply envelope、restore drill、internal RAG canary 與 MCP/RAG runtime closure 尚未全部完成。任何局部 receipt 不得代表整體閉環完成。 +> **適用版本**: V10.795 --- -## 零之負二、PChome 比價可信度與同商品自動閉環(V10.794) +## 零之負二、PChome 比價可信度與同商品自動閉環(V10.795) - 儀表板主要 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 改善標示完成。 - `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 failed,post-verifier terminal 為 `no_write_verified`,scheduler 依 1 小時 cooldown 自動重試。 -- 最新業績日為 `2026-07-13`,資料延遲 1 天、decision-ready;receipt `3f46ee5cee7e4f249f6405440acde05f` 為 `completed_no_write`,證明在資料新鮮且無新候選時安全不寫。即時 source readiness probe 為 `0/4`,上一筆 source reconciliation 為 `1/4`,此 continuity drift 必須持續自動 reconciliation,不得把單次新鮮度等同來源冗餘完成。 -- Dashboard 的 mapping backlog 與 AI automation evidence 已改為結構化 grid 與 progressive disclosure,desktop/mobile 均無水平溢位;這只代表該頁可見 UX closure,完整全站 UI/UX 仍依 `UX-P1-001` 推進。 +- 最新業績日為 `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 runtime,source continuity 仍是 partial。 +- Dashboard 的 mapping backlog 與 AI automation evidence 已改為結構化 grid 與 progressive disclosure;V10.795 首屏可見 `業績日 2026-07-13 · 到檔 SLA 內`。Desktop `1512px` 與 mobile `390px` DOM 驗證均無水平溢位,`430px` mobile screenshot 亦完整顯示標題、SLA 與 40% 業績覆蓋。這只代表該頁可見 UX closure,完整全站 UI/UX 仍依 `UX-P1-001` 推進。 ## 零之負一、資訊安全與治理自動化基準(2026-07-10) diff --git a/docs/guides/ai_automation_mainline_work_items.md b/docs/guides/ai_automation_mainline_work_items.md index 337c011..04d7c22 100644 --- a/docs/guides/ai_automation_mainline_work_items.md +++ b/docs/guides/ai_automation_mainline_work_items.md @@ -1,6 +1,6 @@ # AI Automation Mainline Work Items -> Updated: 2026-07-14 21:40 Asia/Taipei +> Updated: 2026-07-15 01:54 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.794 is live. Sales freshness is decision-ready at `2026-07-13` (1-day lag), but source continuity has a live drift: current readiness probe `0/4` versus latest reconciliation receipt `1/4`. 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 A -> B -> C until continuity and the remaining `45/50` evidence gap close. | +| 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. | | 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 | MCP/RAG production runtime closure | Registry and smoke wiring exist, but runtime flags/ports must be live. Exit: MCP servers healthy, router enabled, RAG enabled, approved caller/tool boundary and production query canary pass. | | 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 `4c0472a461e83d32cfd1dcab55b85ce0899c7b0c`; dev carries the same runtime changes through `2022e27`. Actions #1126 is waiting because no matching `ewoooc-host` runner is online, not because tests or source failed. A bounded exact-Git-object fallback deployed V10.794 with staging/target SHA-256 verification and rollback backup `/home/ollama/momo-deploy-backups/ewoooc-20260714T133003Z-4c0472a`. Production `/health` is healthy at V10.794; 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 40% revenue KPI and structured evidence panels without 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 `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. | ### GROWTH-P0-001 Fixed Execution Lanes @@ -34,7 +34,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 (`freshness_closed_continuity_drift`) | Latest sales date `2026-07-13`, age 1 day; freshness is decision-ready and receipt `3f46ee5cee7e4f249f6405440acde05f` closed as `completed_no_write` with no manual review. The current live readiness probe reports `0/4`, while the persisted source reconciliation reports Google Drive ready at `1/4`; HTTPS, IMAP and local remain disabled. | Keep decisions released while freshness is <=1 day; automatically reconcile the current `0/4` versus `1/4` readiness drift, continue bounded probes, and require the next-day snapshot plus independent receipt before considering source continuity stable. | +| 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. | | 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. | @@ -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.794 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 desktop/mobile visual smoke shows no horizontal overflow. 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.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. | | 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.794 full local baseline is 2,073 passed / 9 skipped / 0 failed; post-verifier and UI hotfix regression scope is 97 passed. Security governance strict gate passes with zero blocking failures. 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.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. | ## P2