01-projects/printables-product/reviews

Charter-hardening check 2026-09-13

2026-09-13·review·status: reviewed

What was reviewed

Charter, rebaseline draft, synthesis, rounds.md, escalations.md, repo ebfcb25, GitHub/CF APIs.

Findings

Counters 09-07→09-13 (rounds.md): breaker trips 0, signal 1: 0 consecutive no-pass rounds (:221, :255, :279, :343, :353, :383); gate-failure streak 1 (#159, :343; CI-red waived, :279); rounds skipped/reduced 3/7 (:214, :290, :350); games-majority 1/7 (:235, :267, :372); new games clean 5 (:245, :251, :337, :382), failed 2 (:338, :382); infra failures 5 (:247, :273, :277, :281); cap ruling open (escalations.md:194). Signal 2 (uninstrumented): escalations.md:130-236 = 13 unclosed ask blocks + 2 merged-but-unclosed (escalations.md:202/:205; rounds.md:291). Signal 3: 2 trips 09-02 (synthesis L81, L92); 0 clear since, 2 ambiguous (:216; escalations.md:239). Kill criteria dormant (L19); "launched" absent (rounds.md/escalations.md).

§8d: 110 PRs merged to main since 09-02, cap 10 (L466); no hardening round since (rounds.md:92-96); no counter.

Stale vs ratified: §4 (L122) metered since 09-01 (draft L37), amendment decided (synthesis L79), unwritten; L468 Wed slot targets queue.md, dispatch-only (L481); rebaseline draft: 11 days (#36).

Practice violates charter: L66 site-page gate unenforced (merge=deploy): L50's "full CI + critic gates" is false (ci.yml:31, :174 = gate, smoke); docs/PRE-PR-CHECKLIST.md: no critic line; 9/9 site PRs since 09-10 name none; rounds.md neither (L59). §8c infra carve-out applied (rounds.md:208, 273, 279) unratified (#34); #35 pending.

Hardening, verified: protection (gate+smoke), 0-reviewer environments (L481), sweeper cron, migrations_dir split (PR #99, 09-06 P0). Gaps: PR #188's ugc/0010 unacknowledged; fail-closed ledger (migrations.mjs:18, website.mjs:223) blocks later releases; GitHub secret scanning off; CI scans tree, never history (ci.yml:59-61).

Proposed queue.md changes

@@ -10,2 +10,7 @@
 
+## 2026-09-13 charter review
+R7. [engineering, S] §8d counter, each round close: `gh pr list --state merged --limit 300 --base main --search "merged:>=2026-09-02" --json number --jq length`.
+R8. [engineering, S] docs/PRE-PR-CHECKLIST.md: require "critic: <name> PASS <date>" in PR bodies touching src/pages, src/layouts, src/components (L66).
+R9. [engineering, S] scan-secrets.mjs: add `--history` (git rev-list --all); run once.
+
 ## NEW from 2026-09-11 unit-economics review (growth, review-and-plan slot; full note reviews/2026-09-11-unit-economics-cost-basis.md)

Decisions needed

  1. Two-week review (L438, L462) due 09-14, signal 3 at L416 threshold: tomorrow?
  2. L66 gate: enforce (R8) or strike.
  3. §8d: hardening round now, or amend L466 (studio-only).
  4. #34: ratify carve-out; CI-red still counts.
  5. PR #188 (ugc/0010 production migration; irreversible, outside L50): attest first, or accept blocked releases.
  6. Confirm §4 amendment text.
  7. Retire/re-issue rebaseline draft (#36); re-point Wed slot.