返回 CodeWhale
v091-public-surface-readiness.md
根目录 / docs / evidence / v091-public-surface-readiness.md
1 # v0.9.1 public-surface readiness receipt
2
3 This packet finishes the v0.9.1 public-surface pass for one exact frozen
4 runtime without claiming that the candidate has been published or deployed.
5
6 ## Repository state
7
8 - Protected base at source freeze: `a7c00a1a8e48021daf2a9c78cfc1dbda8269e074`
9 (`origin/main`, refreshed 2026-07-22)
10 - Runtime source: `4d197626d72b4bd27e1abf4eed92e86e914414a8`
11 - Product truth: `508726960`
12 - Product-first homepage: `e37df06ca`
13 - Credential-free deploy preflight: `74862148a`
14 - No Cloudflare deployment, tag, GitHub Release, package publication, or
15 artifact publication occurred while producing this packet.
16
17 Open PRs were refreshed immediately before sign-off. Draft #4675's remote head
18 `e2208815e51cdc42830cec8c78d4db1fff00d490`, #4679's head
19 `7684cbec32a355f72f0a5bd7ef996bdeddf798e0`, and #4680's head
20 `ccf4c218f619dd9772dd1079f49607faa3504a8e` are unchanged ancestors of the
21 frozen source, alongside merged PRs #4673 and #4678. No contributor history
22 was flattened or rewritten. Draft #4508 supplied recovered screenshot intent;
23 it was not merged wholesale.
24
25 The credited fixes for #4681, #4682, the verified strict-DeepSeek boundary in
26 #4683, and Wenhao Hu's Full Access/global-skill boundary report in #4684 are
27 also ancestors of the frozen source. The broader intermittent network symptom
28 reported in #4683 was not reproduced and is not claimed fixed.
29
30 ## Scope decisions
31
32 - Keep the existing Blue Stage visual direction instead of introducing a new
33 design system.
34 - Describe a bounded path from task to verified change, not a perpetual loop.
35 - Use the existing whale component with a small CSS sun in the community
36 section; no generated illustration is shipped.
37 - Use the real TUI PTY capture from commit
38 `4d197626d72b4bd27e1abf4eed92e86e914414a8` as the homepage and README image.
39 The two public copies share SHA-256
40 `8ffd0c36699930a9af7bcca3e93d3f9bc8a11df5a691e88335fc8b1f0442a754`.
41
42 ## Visual QA
43
44 The production build was inspected in the Codex in-app browser in English and
45 Chinese at 1280x720 and 390x844, plus the 1012px README content width. Both
46 mobile pages reported a 390px layout viewport and 390px document width, with
47 no horizontal overflow; the 1012px review likewise reported a 1012px document
48 width. The authored locale switch reached `/zh` with `lang=zh`, the mobile menu
49 opened as a dialog, locked body scrolling, moved focus to its Close control,
50 and restored the underlying page when closed. The install copy control changed
51 to `Copied ✓` and rendered its two-pixel focus-visible outline.
52
53 The browser context reported `prefers-reduced-motion: false`; it did not expose
54 a media-emulation capability, so this packet does not mislabel that default
55 context as a native reduced-motion capture. No running CSS animation was
56 present in any accepted homepage frame. The source contract separately checks
57 that the only web animation classes are disabled in the reduced-motion media
58 query and that the terminal trace stays fully rendered instead of rewinding
59 when that query matches. The locked real-PTY matrix remains the native proof
60 for Codewhale's Full, Reduced, and Still motion states. The Open Graph route
61 returned HTTP 200 as a 1200x630 `image/png` with SHA-256
62 `a2a03a2fbe32b0e307f159e54d4c94d8b7b83e4cfef1d669b218421e8f8acb11`.
63
64 Artifacts:
65
66 - `docs/evidence/v091-home-desktop.png`
67 - `docs/evidence/v091-home-mobile.png`
68 - `docs/evidence/v091-home-zh-desktop.png`
69 - `docs/evidence/v091-home-zh-mobile.png`
70
71 The four accepted captures have SHA-256 values, in the order above,
72 `1e6ca263dcae66be0851760ee06675ac825c013c7e93a57f90a7f67abcb63122`,
73 `af46a2274810d6a6a0bd6c1e2ed74e335678313f1119f513873680764de4cc26`,
74 `4ae745fa9b93195e7d43a9be36300cb9ec22f5ff6194e05a383732ffce7c8a20`,
75 and `a00d0e350cf2e2ba7f1eb34f3ba5b94eead20ad09b83b8afddce9e4d8cff5dc5`.
76
77 ## Verification
78
79 ```text
80 npm run lint
81 npm test -- --run
82 17 files passed; 119 tests passed
83 npm run check:facts
84 npm run check:docs
85 npm run check:deploy-env -- --preflight
86 CODEWHALE_SOURCE_REVISION=4d197626d72b4bd27e1abf4eed92e86e914414a8 \
87 npm run compare:deployed-facts
88 npx tsc --noEmit
89 CODEWHALE_SOURCE_REVISION=4d197626d72b4bd27e1abf4eed92e86e914414a8 \
90 npm run build
91 CODEWHALE_SOURCE_REVISION=4d197626d72b4bd27e1abf4eed92e86e914414a8 \
92 npx opennextjs-cloudflare build
93 bash scripts/release/check-versions.sh
94 git diff --check
95 ```
96
97 The credential-free deployed-facts report identified the current live gap as
98 `unavailable` (`/api/facts` returned HTTP 404), while recording the exact
99 expected source revision, `0.9.1`, 35 providers, 66 tools, and published
100 release `v0.9.0`; its receipt says `deploymentAttempted: false`. The OpenNext
101 Cloudflare worker bundle completed successfully. Production deployment was
102 intentionally not attempted: the local environment does not contain the
103 protected Cloudflare account ID or API token, and this task does not authorize
104 a push or deploy.
105
105 lines MARKDOWN