From f037aefff281c43d058914215aa3963c8f54b91e Mon Sep 17 00:00:00 2001 From: hoelee Date: Fri, 16 Oct 2026 12:47:35 +0800 Subject: [PATCH] =?UTF-8?q?docs(project-state):=20B2l=20+=20B2m=20?= =?UTF-8?q?=E2=80=94=20the=20drei=20posts=20held=20for=20review,=20and=20t?= =?UTF-8?q?he=20next-session=20topic=20queue?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/project-state.md | 42 +++++++++++++++++++++++++++++++++++++++++- 1 file changed, 41 insertions(+), 1 deletion(-) diff --git a/docs/project-state.md b/docs/project-state.md index 88dd1d8..eeb0652 100644 --- a/docs/project-state.md +++ b/docs/project-state.md @@ -156,7 +156,7 @@ should be edge-cached — lower TTFB and less origin traffic through the tunnel. **Step E8 — Small hygiene backlog.** ⬜ - [ ] `scraping-bot-walled-marketplace-warm-browser-session`: OG card exists, **banner 404s** (no `banner:` in frontmatter, no PNG). Generate it or accept it as the one exception. -- [ ] `authentik-css-greater-than-bug` (the `>` bug) is complete in EN + ZH but still `draft: true` since 2026-09-20 — the last item in the draft bank; publish it with images. +- [x] ✅ `authentik-css-greater-than-bug` (the `>` bug) — **published 2026-10-16 (`2295c0f`)**: `draft: true → false` in EN + ZH, `pubDate` kept at 2026-09-20 with **`updatedDate: 2026-10-16`** so `lastmod` stays honest, OG + banner generated (og `rows=1 overflow=0`; banner `delta=2 overflow=0`), and the CTA's displayed phone corrected (`011-797 2969` → `+60 12-797 2969`). Verified live: EN/ZH/og/banner all **200**, language switch both ways, `/posts/` order still monotonic. The draft bank is now empty. - [ ] `og-default.png` has **no face**; the homepage and category pages share it. Regenerate after Step A1 (same source asset). - **Done when:** no page references a 404 image, the draft bank is empty, and the default share card matches the A1 photo. @@ -538,6 +538,46 @@ from a normal Chrome UA — so "0 pageviews after a headless test" is not a bug. - ⚠ **Reminder for the next session:** the assertion method matters — hrefs must be checked against **raw** HTML, not the tag-stripped text (a first pass reported the CTA and cross-links "missing" because tag-stripping removes `href`). +**Step B2l — (unplanned) Three posts written from the 2026-10-09 → 10-16 sessions, held for the user's read.** 🔵 + +Per the user's instruction of 2026-10-16 ("先写出来,我看了过后,确认后再发"), these three are **written, built and +image-complete but deliberately not committed and not pushed** — they are untracked files in the working tree while +they wait for a read. **A parallel session's `git add -A` would sweep them in — never stage blindly in this tree.** + +| Slug | Category | Proposed `pubDate` | Source session (Hermes id) | What it argues | +|---|---|---|---|---| +| `calibrating-intel-quick-sync-hevc-quality` | `tutorials` | 2026-10-14 | `20261014_132458_102ffe` | The full QSV calibration: ICQ 18–22 inflate thin sources (size gate 176.8/141.8/107.6%), the usable range starts at 24, the quality cliff sits **between 28 and 30**, excerpts rank quality but **never** speed (fast == medium byte-for-byte, 168,435,266 B), the four traps (`/lib` mount, `rgb24` rate control, `SKIP already HEVC hvc1`, one QSV job at a time) | +| `docker-reported-exit-0-the-oom-killer-disagreed` | `devops` | 2026-10-16 | `20261016_034103_770729` | "Container stopped unexpectedly" while `docker inspect` reports `ExitCode 0` / `OOMKilled=false` — the truth was 6 cgroup OOM kills in dmesg (uptime stamps matching `FinishedAt`), driven by a crawler flood (25,976 IPs / 50k lines, 33,636×403 + 16,082×429); fix = 512M → 2g + `memswap_limit: 2g`, labelled a stopgap; plus the "my own bare curl got 403" verification trap | +| `the-dialog-opened-in-7-seconds-my-script-waited-5` | `ai` | 2026-10-15 | `20261014_203311_1682fa` | The LinkedIn cron's "composer dialog did not open" was a race: dialog +1.8 s, buttons +2.8 s, editor **+7.2 s**, script slept 5 s and looked once; the swallowed-click defect (identical click ignored 75 s, then accepted in 2 s); and the silent failure underneath — a 72 h approval TTL against a 12-day queue | + +- **State of each:** EN + ZH written; `rewrap_post.py` → `wrap_lists.py` applied to the EN files (ZH untouched, one + paragraph per line); OG + banner generated and **measured** (`measure_og_banner.py` → PASS on all four pairs); + `npm run build` clean (155 pages, no duplicate-id warning); all 8 `dist/` pages verified locally (language switch + both ways, content assertions from whitespace-normalised tag-stripped text, listing order monotonic on `/posts/`, + `/` and `/zh/`). +- ⚠ **The generators already carry all four `TERMINALS`/`BANNERS` entry sets** — the three for these posts rode into + `2295c0f` together with the authentik entry (git stages whole files). They are inert until a slug is actually + generated, so publishing each post needs only its two `.md` files plus its two PNGs. +- **To publish one:** confirm the real `pubDate` (`date`, and the newest `