# Gates: gialai-ai-office advanced AI deck (tk-html-deck-design-01 mode A)

OWNS: gialai-ai-office/**

Scope: one self-contained Vietnamese HTML slide deck for a 1-hour advanced talk to a Gia Lai provincial government audience on AI in everyday office work and digital-office integration, plus speaker notes timing to 60 minutes, a sourced content contract, and machine + visual verification.

- [x] G1: Deck passes the paper-editorial oracle's static hygiene and canon census (zero em-dashes, zero banned filler, zero CJK, no deck link to a missing file, and every border/background/shadow/radius declaration inside the whitelist, no boxed-and-filled widget).
  CHECK: node /Users/thinhkhuat/in-PROD/MY-WORKBENCH/skills-dev/tk-html-deck-design-01/scripts/verify-deck.mjs --file /Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office/deck-102-ai-trong-cong-so.html static
  EXPECT: static hygiene passed
  CWD: /Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office/.oracle-deps
  EVIDENCE: automatic-evidence=v1; definition-sha256=a7efbdaa7d7dfee43ed6d0fe92d21f2dc0f118fd2c2e4b5dcafba9fb3e00925b; exit=0; EXPECT=matched; output-sha256=5e5e05d1e2bb34a8408dececbe297aa25c59bb9ff5ac4ea7eb39dcc379b2dbf6; output-bytes=54; shell=/bin/sh; cwd=/Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office/.oracle-deps; path=1a74d6c0d722/52 entries

- [x] G2: Deck passes the canon census as a separate oracle run so a static-only pass cannot mask a styling leak.
  CHECK: node /Users/thinhkhuat/in-PROD/MY-WORKBENCH/skills-dev/tk-html-deck-design-01/scripts/verify-deck.mjs --file /Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office/deck-102-ai-trong-cong-so.html census
  EXPECT: census passed
  CWD: /Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office/.oracle-deps
  EVIDENCE: automatic-evidence=v1; definition-sha256=a6002edc16b71ce50e7b25fac0d7ec52a87f9806d8cd470ac9fdb0569c8f9e9d; exit=0; EXPECT=matched; output-sha256=922df0e74ce39b1a062e249d9bc0a294055b03165e7f0bb36ff7737d54fbf0c3; output-bytes=72; shell=/bin/sh; cwd=/Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office/.oracle-deps; path=1a74d6c0d722/52 entries

- [x] G3: Deck runs clean in a real browser: zero page and zero console errors while keypress-traversing every slide at 1920x1080, 1080x1920 and 390x844, counter reaches the total, no horizontal scroll.
  CHECK: node /Users/thinhkhuat/in-PROD/MY-WORKBENCH/skills-dev/tk-html-deck-design-01/scripts/verify-deck.mjs --file /Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office/deck-102-ai-trong-cong-so.html runtime
  EXPECT: runtime integrity passed
  CWD: /Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office/.oracle-deps
  EVIDENCE: automatic-evidence=v1; definition-sha256=410e4f07ed3321faf67281b96283a47ddc7107317c0f5d84adc605efa58a133f; exit=0; EXPECT=matched; output-sha256=d52b6cc7a2d321809751c5655ed3f9a9db9e47b43abba72a7a1a5636bd191137; output-bytes=57; shell=/bin/sh; cwd=/Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office/.oracle-deps; path=1a74d6c0d722/52 entries

- [x] G4: Deck fits every device in the 9-size matrix with no cropped content and no page horizontal scroll, and nav controls never intersect the runfoot at 390x844 or 844x390. scrollWidth/scrollHeight within 1px of the client box is the only honest crop detector because overflow:hidden crops silently.
  CHECK: node /Users/thinhkhuat/in-PROD/MY-WORKBENCH/skills-dev/tk-html-deck-design-01/scripts/verify-deck.mjs --file /Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office/deck-102-ai-trong-cong-so.html overflow
  EXPECT: overflow verification passed
  CWD: /Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office/.oracle-deps
  EVIDENCE: automatic-evidence=v1; definition-sha256=ea7eb276e9278e83c8bb14197a7f7cc0788e8b21b2df9db59646514afc5f1d9e; exit=0; EXPECT=matched; output-sha256=7a1a098cb711830cdbb896a700ebafedf31f4d8c47aced61bc6efa86ddeebd91; output-bytes=212; shell=/bin/sh; cwd=/Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office/.oracle-deps; path=1a74d6c0d722/52 entries

- [x] G5: Navigation is safe: toc jumps land on the intended slide, prev/next work, the progress bar tracks position, and pressing Space while focus sits on an in-slide control activates that control instead of skipping the slide.
  CHECK: node /Users/thinhkhuat/in-PROD/MY-WORKBENCH/skills-dev/tk-html-deck-design-01/scripts/verify-deck.mjs --file /Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office/deck-102-ai-trong-cong-so.html navguard
  EXPECT: navguard passed
  CWD: /Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office/.oracle-deps
  EVIDENCE: automatic-evidence=v1; definition-sha256=c1561df89af10315ecf4a76fdb33ca26978f413fcae695c7fee2107f2738ca24; exit=0; EXPECT=matched; output-sha256=ea7cdd9848e1cc20207d02a79b8eacf85fba0bd70f85475ecc04b4c9c6961bbb; output-bytes=48; shell=/bin/sh; cwd=/Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office/.oracle-deps; path=1a74d6c0d722/52 entries

- [x] G6: Exactly two type tiers hold: body-tier elements compute one identical font size and caption-tier elements compute one identical font size at the 1440x900 stage, so no same-tier pair drifts by a clamp.
  CHECK: node /Users/thinhkhuat/in-PROD/MY-WORKBENCH/skills-dev/tk-html-deck-design-01/scripts/verify-deck.mjs --file /Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office/deck-102-ai-trong-cong-so.html typecheck
  EXPECT: type-tier verification passed
  CWD: /Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office/.oracle-deps
  EVIDENCE: automatic-evidence=v1; definition-sha256=61cb896c14d1d93a31e9cc278d3704580820fa9bc97f2b2873755f6c28d1a742; exit=0; EXPECT=matched; output-sha256=8d837f539a9c398c846279235d8a7fdaa31725e52f12030e4a22cd72e056745c; output-bytes=62; shell=/bin/sh; cwd=/Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office/.oracle-deps; path=1a74d6c0d722/52 entries

- [x] G7: The html-artifact-audit detectors are proven to bite before any clean report is trusted: every injected defect class is caught on the real artifact. The proof runs against audit.config.proof.json, whose root is body rather than the clipping slide frame, because prove-detectors.py injects its positive controls into cfg.root_selector and a deck frame is overflow:hidden, which clips the injected defect before any detector can see it. Diagnosis recorded in plans/reports/judgement-calls-261024-1132-gialai-ai-office-deck.md.
  CHECK: /Users/thinhkhuat/.claude/skills/.venv/bin/python3 /Users/thinhkhuat/.claude/skills/html-artifact-audit/scripts/prove-detectors.py audit.config.proof.json
  EXPECT: RESULT: every detector fires. A clean audit run is meaningful.
  CWD: /Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office
  EVIDENCE: automatic-evidence=v1; definition-sha256=dc88678f1fdf55ff93ff4d70ae69047cdb03be4110a5423da596c49e73e9e357; exit=0; EXPECT=matched; output-sha256=1b0a552c3eef6bfb76778c16d5964a2653d2123d88282602d894a730dcddd4cf; output-bytes=609; shell=/bin/sh; cwd=/Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office; path=1a74d6c0d722/52 entries

- [x] G8: Reader-visible line-break quality (exemptions only from audit-exemptions.json, each matched by formula at every occurrence): no line opens on a separator, no protected Vietnamese term is split across a break, no orphan final line, and no NBSP-bound run overruns its box.
  CHECK: /Users/thinhkhuat/.claude/skills/.venv/bin/python3 -I scripts/audit-gate.py linebreaks
  EXPECT: AUDIT LINEBREAKS PASSED: 0 unexempted problems
  CWD: /Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office
  EVIDENCE: automatic-evidence=v1; definition-sha256=446f8568b3c9ee33ea828b8e6cd96ed961d320794c9247635f3b8c5de416926f; exit=0; EXPECT=matched; output-sha256=76a1c0a2094617ce087e70478da2c08e8265fb8d8e0dfd3010d394a369d7822d; output-bytes=4638; shell=/bin/sh; cwd=/Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office; path=1a74d6c0d722/52 entries

- [x] G9: No reader-visible visual defect: nothing escapes its frame, no text overlaps text, every illustration loaded and is legibly sized, and no text sits within 40 luminance points of its own background.
  CHECK: /Users/thinhkhuat/.claude/skills/.venv/bin/python3 -I scripts/audit-gate.py visual
  EXPECT: AUDIT VISUAL PASSED: 0 unexempted problems
  CWD: /Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office
  EVIDENCE: automatic-evidence=v1; definition-sha256=3a8e584874e59969912c0926100f81b91d58d327df626deeb225ffa9f48fbc31; exit=0; EXPECT=matched; output-sha256=8799abda5d4ba366621bd29c7e13e382e76436a22b825065d066b9d8a18cfdc5; output-bytes=96; shell=/bin/sh; cwd=/Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office; path=1a74d6c0d722/52 entries

- [x] G10: Nothing scrolls or crops and no chrome drifts. Scroll is measured from the children's extent rather than scrollHeight, because scrollHeight clamps to the element box and can report a perfect fit for an overflowing one.
  CHECK: /Users/thinhkhuat/.claude/skills/.venv/bin/python3 -I scripts/audit-gate.py fit
  EXPECT: AUDIT FIT PASSED: 0 unexempted problems
  CWD: /Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office
  EVIDENCE: automatic-evidence=v1; definition-sha256=fcd65bea715e19dadf1c8eaa6e65593b1e338ffddb30c16bd840bf3b09a9b103; exit=0; EXPECT=matched; output-sha256=018320123309e0a062d9e7dac2307965bd6ba08da2ba871fc49cfab4c5844ba6; output-bytes=145; shell=/bin/sh; cwd=/Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office; path=1a74d6c0d722/52 entries

- [x] G11: The deck stays inside its own design system: the canon allow-list is non-vacuous (an embedded boxed-widget fixture must be rejected by it), and same-tier components compute equal font sizes per frame.
  CHECK: /Users/thinhkhuat/.claude/skills/.venv/bin/python3 -I scripts/audit-gate.py consistency
  EXPECT: AUDIT CONSISTENCY PASSED: 0 unexempted problems
  CWD: /Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office
  EVIDENCE: automatic-evidence=v1; definition-sha256=daea206d71a3955be6fb93f472fde3804dc378e471ca74fb8ad136c42484045d; exit=0; EXPECT=matched; output-sha256=66f0ca62a1628b23886d045bba1b502de31b7c60a06cdfaddeae033ee05abd67; output-bytes=102; shell=/bin/sh; cwd=/Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office; path=1a74d6c0d722/52 entries

- [x] G12: Every fact, figure and legal citation printed on a slide traces to a numbered entry in source/content-contract.md that carries its own source URL and retrieval date. No document number appears on a slide that the contract does not hold. The deck invents nothing.
  CHECK: node /Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office/scripts/check-deck.mjs contract
  EXPECT: CONTRACT GATE PASSED
  CWD: /Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office
  EVIDENCE: automatic-evidence=v1; definition-sha256=536e0cf5053122605a2cad2da85c5c9e2dd09a98f1d09ee3bc6f780a90b7eaf4; exit=0; EXPECT=matched; output-sha256=b24ac0f6d6ed3db6125321a2d2688ced01bbecd4c88255db617cb3dd091305bb; output-bytes=5915; shell=/bin/sh; cwd=/Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office; path=1a74d6c0d722/52 entries

- [x] G13: The talk runs to a 1-hour slot: the per-slide minute budget in speaker-notes.md sums to 60 within 3 minutes, every slide has a budget, the budgets are contiguous, and the row count equals the deck's slide count.
  CHECK: node /Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office/scripts/check-deck.mjs timing
  EXPECT: TIMING GATE PASSED
  CWD: /Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office
  EVIDENCE: automatic-evidence=v1; definition-sha256=1a6011cfd75ecb231d79157075ee81b8753b6604385f03e4c8fbaa1dd39dc4c3; exit=0; EXPECT=matched; output-sha256=b24f43e62f63b26694fac1b9b65bf55eda999fa5b24e5bf3bfedb057bb983da8; output-bytes=320; shell=/bin/sh; cwd=/Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office; path=1a74d6c0d722/52 entries

- [x] G14: Vietnamese orthography and type-setting hold: zero em-dash characters, every protected term is bound with U+00A0 wherever it appears in wrapable text, and every tracked headline declares a designed line count.
  CHECK: node /Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office/scripts/check-deck.mjs vietnamese
  EXPECT: VIETNAMESE GATE PASSED
  CWD: /Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office
  EVIDENCE: automatic-evidence=v1; definition-sha256=7b2f97f477f59c9754f70553a541a3d4abdc9544733219bfa7dceefe22f7a3b4; exit=0; EXPECT=matched; output-sha256=f81a333f1d2db2d2ed963cc173884e374e9d637691072ea80c3f6b74f46c520d; output-bytes=2478; shell=/bin/sh; cwd=/Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office; path=1a74d6c0d722/52 entries

- [x] G14b: Designed line breaks actually render as designed in a real browser at the 1600x900 stage: every data-lines headline renders exactly its declared line count, and none ends on a token under 4 characters. The declaration alone is not proof.
  CHECK: node /Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office/scripts/check-deck.mjs lines
  EXPECT: LINES GATE PASSED
  CWD: /Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office/.oracle-deps
  EVIDENCE: automatic-evidence=v1; definition-sha256=e09a05c2ade705e88404b35b66d4661989823c2b79fccb1af8b49ef3bdaca01b; exit=0; EXPECT=matched; output-sha256=ed77a1c6b3c71f275edcebd3e4d8fe74e806ed26efbd6a6110647d83f650136f; output-bytes=3637; shell=/bin/sh; cwd=/Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office/.oracle-deps; path=1a74d6c0d722/52 entries

- [x] G14c: No known Vietnamese word straddles a rendered line break at 1600x900, 390x844 or 844x390, and no token breaks inside itself. Known words = the Viet74K dictionary plus the hand list plus what the build welded; designed <br> breaks are exempt. A browser breaks Vietnamese at every space, so without this a compound like "hồ sơ" splits across lines.
  CHECK: node /Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office/scripts/check-deck.mjs splits
  EXPECT: SPLITS GATE PASSED
  CWD: /Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office
  EVIDENCE: automatic-evidence=v1; definition-sha256=ef90b7bb560937244a4e78a088e7910bc4ec5f53e04301fb5f49595536a3d5a3; exit=0; EXPECT=matched; output-sha256=206f5e9ff6fe6e52e1eab75e2b3692f8c8e57ef6c02961e067d9a222b355ed95; output-bytes=132; shell=/bin/sh; cwd=/Users/thinhkhuat/in-PROD/MY-WORKBENCH/MINE/training-materials/gialai-ai-office; path=1a74d6c0d722/52 entries

- [x] G15: Expert visual pass over the full screenshot set at every captured ratio: each shot inspected by eye, findings fixed and re-shot, no shot signed off unseen.
  EVIDENCE: 24/10/2026, by the builder. All 111 screenshots inspected (37 slides at 1600x900, 390x844, 844x390; contact sheets captures/sheet-*.png from scripts/capture.mjs). Defects found and fixed at the source, then re-shot: Vietnamese compounds split across lines (generator now welds pyvi + Viet74K words; gate G14c added), footnote under the centred nav (width rule), portrait letterbox at half scale (portrait reflow), slide 10 double highlight, small cover-ring labels, five set phrases missing from every word list, wrapping kickers on slides 12 and 13, slide 36 lead break. Final sheets show none of these.

- [ ] G16: Independent blind validation: a fresh agent that did not build this deck and was told nothing of what to expect reviews the artifact on its own terms and returns a verdict.
  EVIDENCE: pending

ABANDON: G16 Independent validator returned VERDICT: FAIL (plans/reports/validator-261024-gialai-ai-office-deck.md): 5 blocking issues (red line 1 overstated on slides 12/36, figures misattributed to the National Assembly on slides 6/7/21/37, false "trong tháng này" on slide 20, land-AI framed as separate from commercial ChatGPT on slide 21, three compound splits). Thinh ended the session to present; fixes not applied. Handoff carries them.
