2026-08-26 · measured, not asserted

A loop is a graph that comes back.

Watch the two pictures below. That is the entire debate.

简体中文2026-08-26 · 实测,不是断言

循环,就是一条会绕回来的图。

看下面两张动图。整场争论就这么多。

日本語2026-08-26 · 実測値、主張ではない

ループとは、元に戻ってくるグラフである。

下の二つの動く図を見てほしい。議論の全体はこれだけ。

do check fix LOOP do → check → fix → do → … start work A work B gate done GRAPH work A + work B together → gate → done
Same parts. The loop repeats one path forever. The graph admits there is more than one path — and puts a gate the work cannot skip. 零件相同。循环永远重复同一条路。图承认路不止一条 —— 并且放一个绕不过去的关卡。 部品は同じ。ループは一本の道を永遠に繰り返す。グラフは道が複数あると認め、スキップ不能なゲートを置く。

Jason's point: “graph” is three different words

Source: AI Jason (Jason Zhou), “I don't prompt agents anymore…”, youtube.com/watch?v=_9OT25ZvrWs. He refuses one definition. He splits the word into three, because each solves a different problem:

简体中文Jason 的核心观点:“graph” 是三个不同的词

来源:AI Jason(Jason Zhou),“I don't prompt agents anymore…”youtube.com/watch?v=_9OT25ZvrWs。他拒绝给出单一定义,把这个词拆成三个,因为各解决不同的问题:

日本語Jason の要点:「graph」は三つの別の言葉

出典:AI Jason(Jason Zhou)、“I don't prompt agents anymore…”youtube.com/watch?v=_9OT25ZvrWs。彼は単一の定義を拒み、解く問題が違うとして三つに分けた:

1 · Control graph控制图コントロールグラフ

The flowchart the work must follow. An SOP, LangGraph, a workflow.工作必须遵循的流程图。SOP、LangGraph、工作流。作業が従うべきフローチャート。SOP、LangGraph、ワークフロー。

2 · Knowledge graph知识图谱ナレッジグラフ

GraphRAG, agent memory. Same word, totally different problem.GraphRAG、智能体记忆。同一个词,完全不同的问题。GraphRAG、エージェントの記憶。同じ言葉で全く別の問題。

3 · Graph of loops循环之图ループのグラフ

Many loops that must improve together. Hard — errors compound.多个循环必须一起进化。难 —— 误差会叠加。複数のループが共に改善する形。難しい — 誤差が複利で増える。

node node node edge edge = state
His vocabulary for a control graph: node = the action taken · edge = what happens next · state = the data (orange dot) carried across every node. 他对控制图的词汇:node = 执行的动作 · edge = 接下来发生什么 · state = 在所有节点间传递的数据(橙色点)。 コントロールグラフの語彙:node=実行するアクション · edge=次に何が起こるか · state=全ノード間で運ばれるデータ(橙の点)。
loop 1 loop 2 shared artifact ✕ no direct messages
His second rule (X thread 2079890443027021852): loops never message each other. One loop writes a file; the next loop reads it. His demo is exactly this — a git repo as the shared store, where a daily “bad-design triage” loop writes today's list and other loops read it. 他的第二条规则(X 帖 2079890443027021852):循环之间从不互发消息。一个循环文件,下一个循环它。他的演示正是如此 —— 用 git 仓库当共享仓储,每日“坏设计分诊”循环写入今日清单,其他循环来读。 第二のルール(X スレッド 2079890443027021852):ループ同士はメッセージを送らない。一つのループがファイルを書き、次のループがそれを読む。デモもまさにこれ — git リポジトリを共有ストアにし、毎日の「悪デザイン仕分け」ループが今日のリストを書き、他のループが読む。

Honesty note: reconstructed from the transcript + Jason's X thread via live lookup, not a frame-by-frame watch. Term history in one line: Boris Cherny “I don't prompt Claude anymore” → Jun 7 “loop engineering” (Osmani) → Jul 18 Steinberger's question → 4.5 h later “Loop Engineering Is Dead” (Husain). None of it is new — DAGs and workflow engines did this for decades. 诚实说明:内容由字幕与 Jason 的 X 帖实时检索重建,并非逐帧观看。词源一行史:Boris Cherny “我不再给 Claude 写提示词” → 6-07 “loop engineering”(Osmani)→ 7-18 Steinberger 提问 → 4.5 小时后 “Loop Engineering 已死”(Husain)。都不新 —— DAG 和工作流引擎做了几十年。 正直な注記:本内容は書き起こしと Jason の X スレッドのライブ検索による再構成で、逐一視聴ではない。用語史を一行で:Boris Cherny「もう Claude にプロンプトしない」→ 6/7「loop engineering」(Osmani)→ 7/18 Steinberger の問い → 4.5 時間後「Loop Engineering は死んだ」(Husain)。どれも新しくない — DAG もワークフローエンジンも何十年も前からある。

One word, two machines

Most online arguments are two people describing two different machines with the same word. Watch both run:

简体中文一个词,两台机器

网上多数争论,是两个人用同一个词描述两台不同的机器。看它们各自怎么运转:

日本語一つの言葉、二つの機械

ネット上の議論の多くは、同じ言葉で別々の機械を語っている。それぞれの動きを見てほしい:

A · “map + gates”“地图 + 关卡”「地図+ゲート」

work gate ship fail → back

edge = an allowed route · cycles ○ yes · buys reliability · tools: n8n, LangGraph边 = 允许走的路线 · 环 ○ 允许 · 买到可靠性 · 工具:n8n、LangGraphエッジ=許可されたルート · 循環 ○ 可 · 得るのは信頼性 · ツール:n8n、LangGraph

B · “dependency DAG”“依赖 DAG”「依存 DAG」

split merge

edge = a real data need · cycles X no · buys speed · tools: make -j, Airflow, ultracode Workflow边 = 真实的数据依赖 · 环 X 不允许 · 买到速度 · 工具:make -j、Airflow、ultracode Workflowエッジ=本物のデータ依存 · 循環 X 不可 · 得るのは速度 · ツール:make -j、Airflow、ultracode Workflow

Both are real graphs. Our fleet, you will see, is School B at run time and School A on paper. 两者都是真正的图。下面会看到:我们的舰队运行时是 B 派,纸面上是 A 派。 どちらも本物のグラフ。後述の通り、当方のフリートは実行時が B 派、紙の上が A 派。

Steal these three techniques

简体中文值得偷学的三个技巧

日本語盗む価値のある三つの技法

A · The “and then” test“然后”测试「それから」テスト

On every “and then”, ask: does the next step actually read the previous step's output? If no — it was never an edge. Run them together.每遇到一个“然后”就问:下一步真的会上一步的输出吗?不会 —— 那从来就不是边。一起跑。「それから」が出るたびに問う:次のステップは前の出力を本当に読むのか? 読まないなら、それはエッジではない。同時に走らせる。

⚠️ BEFORE — one at a time改前 — 一个接一个改善前 — 一つずつ

A
B
C
0123

total: 3 units总计:3 格合計:3 単位

AFTER — B and C never read each other改后 — B、C 互不相读改善後 — B と C は互いを読まない

A
B
C
0123

total: 2 units — same work, one third less waiting总计:2 格 —— 活没变,等待少三分之一合計:2 単位 — 同じ仕事で待ち時間 3 分の 1 減

B · Fresh eyes only只许新眼睛来验新しい目だけが検証する

A model grading its own work passes itself. The checker must be a separate node that never touched the work. (Measured: GPT-4 recognizes its own output 73.5% of the time; self-grading bias +10% to +25%.)模型给自己打分,只会给自己放行。检查者必须是一个从未碰过这份工作的独立节点。(实测:GPT-4 能以 73.5% 认出自己的输出;自评偏袒 +10% 到 +25%。)自己採点するモデルは自分を合格させる。検証者はその作業に触れていない別ノードでなければならない。(実測:GPT-4 は自分の出力を 73.5% 識別;自己採点バイアス +10〜25%。)

BEFORE — grades itself改前 — 自批自改善前 — 自己採点

work + grade "looks great to me"

AFTER — separate verifier改后 — 独立校验者改善後 — 独立検証者

work verifier other family · fresh context

C · Gates read reality, not opinion关卡读现实,不读意见ゲートは現実を読む — 意見ではなく

A critic's “OK” is an opinion. A draft↔score loop can pass itself, publish, and still fail in the real world. A gate must read an external signal: the provider API, a live probe, the OS.评审说“OK”只是意见。草稿↔打分循环可以自我通过、发布,然后照样在现实里失败。关卡必须读外部信号:供应商 API、实时探测、操作系统。批評者の「OK」は意見にすぎない。ドラフト↔採点ループは自己合格し、公開し、それでも現実で失敗しうる。ゲートは外部シグナルを読まねばならない:プロバイダ API、ライブプローブ、OS。

⚠️ BEFORE — opinion in, opinion out改前 — 意见进,意见出改善前 — 意見→意見

gate "critic says OK"

AFTER — reads an external signal改后 — 读外部信号改善後 — 外部シグナルを読む

gate provider API live probe the OS

Our fleet: the iceberg

You are right — the dashboard shows only loops. I was also right — the graphs exist. They run below the waterline, where the dashboard never draws.

简体中文我们的舰队:一座冰山

你是对的 —— 仪表盘只显示循环。我也没说错 —— 图确实存在,只是运行在水线以下,仪表盘从来不画那里。

日本語当方のフリート:氷山

あなたは正しい — ダッシュボードにはループしか見えない。私も間違っていない — グラフは存在する。ただし喫水線の下で走っていて、ダッシュボードはそこを描かない。

● infra-guardian ● voc-weekly ● founder-brief-weekly daily 09:07 Mon 06:00 Mon 07:00 ▲ 34 rows like these — every one a timer sweep.sh cap 10 · 60s × 37 servers · 37/37 ✅ Workflow agent agent agent agent verify 608 runs on disk · ≤16 agents at once
Above the line: what the hub draws — a timer per row. Below the line: what actually runs — sweep.sh fans out to 37 servers (concurrency 10, 60s timeout each), and ultracode Workflow fans out agents through a verify gate. Both finish inside ONE dashboard row. 线上方:Hub 画的东西 —— 每行一个定时器。线下方:真正运行的东西 —— sweep.sh 扇出到 37 台服务器(并发 10、每台 60 秒超时),ultracode Workflow 把智能体扇出并经过校验关卡。两者都收束在仪表盘的一行里。 線の上:ハブが描くもの — 一行につきタイマー一つ。線の下:実際に走るもの — sweep.sh は 37 サーバーへファンアウト(並列 10、各 60 秒タイムアウト)、ultracode Workflow はエージェントをファンアウトし検証ゲートを通す。どちらもダッシュボードの一行の中で完結する。
34timer jobs — the layer you see定时任务 — 你看到的层タイマージョブ — 見える層
1 / 8paper maps that really branch纸面地图中真正有分支的紙の地図で本当に分岐するもの
608invisible run-graphs on disk (339 since Jul 1)磁盘上看不见的运行图(7-01 起 339 次)ディスク上の見えない実行グラフ(7/1 以降 339)
37/37fleet sweep coverage, with a real denominator巡检覆盖率,带真实分母スイープのカバレッジ、実分母付き
paper map (flow manifest)纸面地图(流程清单)紙の地図(フローマニフェスト) size规模規模 branches分支分岐 gates关卡ゲート verdict判定判定
vilavpn-infra-sentinel36719real graph真·图本物のグラフ
vilavpn-whmcs-sentinel1404loop循环ループ
store-reviews711tiny graph小图小さなグラフ
infra-guardian802line — but the code fans out!直线 — 可代码在扇出!直線 — だがコードはファンアウト!
memory-gardener802line直线直線
voc-weekly801line直线直線
vpncheap-ai-loop-weekly-preview902line直线直線
founder-brief-weekly600line — zero gates直线 — 零关卡直線 — ゲートゼロ
We are not missing graphs. We are missing the picture of them — and the edges between jobs. 我们缺的不是图。缺的是看见图的画面 —— 以及任务与任务之间的边。 足りないのはグラフではない。グラフのと、ジョブのエッジである。

The clearest example: two clocks pretending to be an edge

The Monday brief reads the VoC file. That is a real edge. But nothing enforces it — only the hope that 06:00 finished before 07:00.

简体中文最清楚的例子:两个闹钟假装是一条边

周一的经营周报要 VoC 文件。这是一条真实的边。但没有任何机制保障它 —— 只有“06:00 应该在 07:00 之前跑完”的指望。

日本語一番わかりやすい例:エッジのふりをする二つの時計

月曜のブリーフは VoC ファイルを読む。これは本物のエッジ。だが強制するものは何もない — 「06:00 が 07:00 より先に終わるはず」という希望だけ。

This week — it held本周 — 链条撑住了今週 — 保った

Mon 06:00 voc-weekly voc-2026-08-24.md ✅ fresh Mon 07:00 brief cites 08-24 this week's data

⚠️ The risk — nothing would tell you风险 — 出事时没人告诉你リスク — 誰も知らせてくれない

Mon 06:00 voc-weekly ⛔ fails (no new file) Mon 07:00 brief voc-2026-08-17.md ⚠️ LAST week ⚠️ looks normal stale data, no warning

The edge in code: bin/founder-brief.sh:197ls -t docs/voc/voc-*.md | head -1 — “take the newest file, whatever it is.” The GA4 section of the same brief already does it right: on failure it prints a loud ❌ banner. The fix is to give the VoC edge the same honesty: declare it, gate on file age, print UNKNOWN instead of stale. This was a risk, not an observed failure — and the fix shipped 2026-08-26: the banner is now live. 这条边在代码里:bin/founder-brief.sh:197ls -t docs/voc/voc-*.md | head -1 —— “拿最新的文件,管它是哪周的。” 同一份周报的 GA4 部分已经做对了:失败时打出醒目 ❌ 横幅。修法就是给 VoC 这条边同样的诚实:声明它、按文件年龄设关卡、宁打 UNKNOWN 不打旧数据。注意:这曾是风险,不是已发生的故障 —— 修复已于 2026-08-26 上线并验证,横幅现已生效。 コード上のエッジ:bin/founder-brief.sh:197ls -t docs/voc/voc-*.md | head -1 — 「一番新しいファイルを取る、どの週かは問わない」。同じブリーフの GA4 部分はすでに正解 — 失敗時に目立つ ❌ バナーを出す。修正は VoC エッジに同じ誠実さを与えること:宣言し、ファイル鮮度でゲートし、古いデータではなく UNKNOWN を印字する。これはリスクであり観測された障害ではなかった — 修正は 2026-08-26 に実装・検証済み、バナーは稼働中。

Build / don't build (ranked · round 1 shipped 2026-08-26)

简体中文建什么 / 不建什么 (排序 · 第一轮已于 2026-08-26 落地)

日本語作るもの/作らないもの (順位付け · 第 1 ラウンド 2026-08-26 実施済み)

○ 88 · Declare the edges between jobs + freshness gates声明任务之间的边 + 新鲜度关卡ジョブ間エッジの宣言+鮮度ゲート

The §6 story, generalised. Start with voc → brief. (voc → brief shipped + verified 2026-08-26; more edges in future rounds.)就是 §6 的故事,推广开。从 voc → brief 开始。(voc → brief 已于 2026-08-26 落地并验证;更多边留待后续轮次。)§6 の一般化。voc → brief から始める。(voc → brief は 2026-08-26 に実装・検証済み;他のエッジは次ラウンド。)

○ 86 · Per-job evidence contract — PASS / FAIL / UNKNOWN每任务证据契约 — PASS / FAIL / UNKNOWNジョブ別証拠契約 — PASS / FAIL / UNKNOWN

Declare the denominator, or “complete” is just a claim. Anything not clearly failing drifts to PASS. Guardian proved the pattern (37/37); make it general. “It produced a file” must never render green.不声明分母,“完成”只是嘴上说。不明显失败的一切都漂向 PASS。巡检已验证该模式(37/37);把它推广。“产出了个文件”永远不许显示为绿色。分母を宣言しなければ「完了」はただの主張。明確に失敗していないものは PASS へ漂う。ガーディアンがパターンを実証済み(37/37);一般化する。「ファイルが出た」を緑にしてはならない。

X 82 · Node IP cutover as a gate graph节点换 IP 割接做成关卡图ノード IP 切替をゲートグラフに

Today: four hand-run skills (revert-isp-ip, ip-rotate, ip-check, grafana) and a rule that says “update EVERY reference”. Textbook School A: fixed routes, gates you cannot skip, expensive if one step is missed.现状:四个手动技能(revert-isp-ipip-rotateip-checkgrafana)加一条“更新每一处引用”的规则。A 派教科书案例:固定路线、绕不过的关卡、漏一步代价高。現状:手動スキル四つ(revert-isp-ipip-rotateip-checkgrafana)と「すべての参照を更新せよ」ルール。A 派の教科書例:固定ルート、スキップ不能ゲート、一歩漏れると高くつく。

○ 71 · Fix the five lying line-maps修好那 5 张说谎的直线地图嘘をつく直線地図 5 枚を直す

A map that draws a line while the code fans out is a FALSE map — worse than none. We already fell into this trap once.代码在扇出、地图画直线 —— 这是假地图,比没有更糟。我们已经踩过一次。コードはファンアウトするのに地図は直線 — それは偽の地図で、無いより悪い。一度この罠にはまった。

○ 64 · Register the 6 orphan jobs登记 6 个孤儿任务孤児ジョブ 6 件を登録する

The hub cannot gate what it does not know exists. Today's conflicts: audit-claude-feedback-queue · sub2api-airelay-auto-upgrade · weekly-abandoned-worktree-sweep · weekly-stale-artifact-trash · mother-checkin · router-syslog.Hub 管不了它不知道存在的东西。今日冲突:audit-claude-feedback-queue · sub2api-airelay-auto-upgrade · weekly-abandoned-worktree-sweep · weekly-stale-artifact-trash · mother-checkin · router-syslogハブは存在を知らないものを管理できない。本日の衝突:audit-claude-feedback-queue · sub2api-airelay-auto-upgrade · weekly-abandoned-worktree-sweep · weekly-stale-artifact-trash · mother-checkin · router-syslog

25 · X DO NOT build a graph runner不要建图运行器グラフランナーは作らない

ultracode Workflow already IS one: deterministic script, parallel/pipeline, ≤16 concurrent, 1000 per run, worktree isolation, per-stage model pinning. The only real gap is the picture, and that is a much smaller job.ultracode Workflow 本身就是:确定性脚本、parallel/pipeline、≤16 并发、单次 1000 体、worktree 隔离、按阶段固定模型。真正缺的只是那张画面,小得多的活。ultracode Workflow がすでにそれ:決定的スクリプト、parallel/pipeline、≤16 並列、1 実行 1000 体、worktree 分離、ステージ別モデル固定。本当に欠けているのは絵だけで、それははるかに小さい仕事。

⚠️ WARN — before believing the hype:先泼三盆冷水:誇大宣伝を信じる前に: no benchmark proves “graphs = reliability”; the viral “+18% accuracy, −85% cost” stat came from one narrow study; and the idea is decades old (Airflow, make -j, LangGraph pre-date the buzzword). The honest case for graphs is organisational — 14 known multi-agent failure modes that a smarter model does not fix. And Cognition argues the opposite default: one agent with full context beats a committee. 没有任何基准证明“图 = 可靠性”;疯传的“准确率 +18%、成本 −85%”出自一项范围很窄的研究;这个思路已有几十年历史(Airflow、make -j、LangGraph 都早于流行词)。支持图的诚实理由是组织性的 —— 14 种已知多智能体失败模式,换更聪明的模型也治不了。而 Cognition 的默认立场相反:一个拿全上下文的智能体胜过一个委员会。 「グラフ=信頼性」を証明するベンチマークは無い;バズった「精度 +18%・コスト −85%」は狭い一研究の数字;発想自体は何十年も前からある(Airflow・make -j・LangGraph は流行語より古い)。グラフ擁護の正直な根拠は組織論 — 既知の 14 のマルチエージェント失敗モードは賢いモデルでも直らない。Cognition の主張は逆で、全コンテキストを持つ単一エージェントが委員会に勝つ。

If the workflow is linear, keep it linear. (✅ stays a loop: mount-nas, pushtest-monitor, shock-ledger-*, portswap-firstfire, router-syslog — one action, no branch.) 工作流是线性的,就让它保持线性。(✅ 继续做循环:mount-naspushtest-monitorshock-ledger-*portswap-firstfirerouter-syslog —— 单动作、无分支。) ワークフローが線形なら、線形のままにせよ。(✅ ループのまま:mount-naspushtest-monitorshock-ledger-*portswap-firstfirerouter-syslog — 単一アクション、分岐なし。)

The proposed modifications, in full detail

What each proposal would actually change — file by file, with mechanism, blast radius, and rollback. Round 1 shipped 2026-08-26 with /codex concurrence. The chips show the verified state: ○ done · X rejected.

简体中文提案的具体改法,全部细节

每个提案实际会改什么 —— 逐文件写清机制、影响面、回滚方式。第一轮已于 2026-08-26 落地(/codex 同意)。徽章显示已验证状态:○ 完成 · X 已否决。

日本語提案する変更の全詳細

各提案が実際に何を変えるか — ファイル単位で仕組み・影響範囲・ロールバックを明記。第 1 ラウンドは 2026-08-26 に実施済み(/codex 同意)。チップは検証済みの状態を示す:○ 完了 · X 却下。

○ #1 · 88 The VoC → brief freshness gateVoC → 周报 新鲜度关卡VoC → ブリーフ鮮度ゲート

Today the brief takes “the newest VoC file, whatever it is”. The change: measure the file's age, and if it is older than one day at Monday 07:00, print a loud UNKNOWN banner instead of quietly citing last week.今天周报拿的是“最新的 VoC 文件,不管是哪周的”。改法:测文件年龄,周一 07:00 时若超过一天,就打出醒目的 UNKNOWN 横幅,而不是悄悄引用上周。現在ブリーフは「一番新しい VoC ファイル、どの週でも」を取る。変更:ファイルの鮮度を測り、月曜 07:00 時点で 1 日超なら、先週分を黙って引用せず目立つ UNKNOWN バナーを出す。

*** bin/founder-brief.sh — after line 197 (~12 new lines) ***
  NEWEST_VOC=$(ls -t "$VOC_DIR"/voc-*.md 2>/dev/null | head -1)
+ # EDGE: voc-weekly (Mon 06:00) ──▶ this script (Mon 07:00)
+ # GATE: the artifact must be from THIS run window, not merely "newest"
+ VOC_AGE_H=$(( ( $(date +%s) - $(stat -f %m "$NEWEST_VOC") ) / 3600 ))
+ if [ "$VOC_AGE_H" -gt 26 ]; then
+   VOC_STATUS="UNKNOWN"    # same shape as the existing GA4 ❌ banner
+ else
+   VOC_STATUS="FRESH"
+ fi
  ...
+ [ "$VOC_STATUS" = "UNKNOWN" ] && print:
+ "❌ VoC input is ${VOC_AGE_H}h old — voc-weekly likely FAILED.
+  This section reflects LAST week. Do not act on it."
touches改动点変更箇所
bin/founder-brief.sh only (~12 lines)仅此一个(约 12 行)のみ(約 12 行)
blast radius影响面影響範囲
report-only — the job writes a Markdown/HTML brief; no prod system is touched仅报告 —— 该任务只产出 Markdown/HTML 周报;不碰任何生产系统レポートのみ — このジョブは Markdown/HTML ブリーフを書くだけ;本番システムには触れない
rollback回滚ロールバック
restore the timestamped .bak taken before the edit恢复改前的带时间戳 .bak編集前のタイムスタンプ付き .bak を戻す
test验证検証
RED→GREEN: run once with the newest VoC file dated last week (must print UNKNOWN), once with a fresh one (must not)RED→GREEN:用上周日期的 VoC 文件跑一次(必须打 UNKNOWN),再用新鲜文件跑一次(必须不打)RED→GREEN:先週日付の VoC ファイルで 1 回(UNKNOWN が出ること)、新鮮なファイルで 1 回(出ないこと)

○ #2 · 86 Per-job evidence contract每任务证据契约ジョブ別証拠契約

One small declaration file per job. A shared check step reads it and refuses to call a run “green” without proof. Example for voc-weekly:每个任务一份小声明文件。共享检查步骤读取它,没有证据就拒绝把这次运行叫“绿”。以 voc-weekly 为例:ジョブごとに小さな宣言ファイルを一つ。共有チェックステップがそれを読み、証拠なしに「グリーン」と呼ぶことを拒否する。voc-weekly の例:

# contracts/voc-weekly.contract.yaml   (NEW file, one per job)
authority:     WHMCS prod DB, read-only          # which source is the truth
freshness:     output artifact ≤ 26h after run   # else verdict downgrades
expected_set:  ticket count from the DB query    # denominator, snapshotted
schema:        voc-YYYY-MM-DD.md with counts table + ledger row
exit_policy:   PASS | FAIL | UNKNOWN             # never a binary

# rules the shared checker enforces:
#  · no denominator recorded        → UNKNOWN, never PASS
#  · "it produced a file" (liveness) → never renders green
#  · input older than freshness      → UNKNOWN with the age printed
touches改动点変更箇所
NEW contracts/ dir + one check step in the job wrapper (hub-step); jobs themselves unchanged新增 contracts/ 目录 + 任务包装器(hub-step)里加一个检查步骤;任务本体不动新規 contracts/ ディレクトリ+ジョブラッパー(hub-step)にチェックステップ 1 つ;ジョブ本体は不変
precedent先例前例
infra-guardian already proves the pattern — its COVERAGE line prints “checked 37 of 37” with a real denominatorinfra-guardian 已验证该模式 —— 它的 COVERAGE 行打印“checked 37 of 37”,分母是真的infra-guardian がパターンを実証済み — COVERAGE 行が実分母で「checked 37 of 37」を印字
rollout推进方式展開
one job at a time, report-jobs first (voc-weekly, founder-brief-weekly, store-reviews); sentinels last一次一个任务,先做报告类(voc-weeklyfounder-brief-weeklystore-reviews);哨兵类最后一度に 1 ジョブ、レポート系から(voc-weeklyfounder-brief-weeklystore-reviews);センチネル系は最後
risk风险リスク
additive only — a contract can flag, never block or restart a job (advisory, owning-layer rule)纯增量 —— 契约只能标记,永远不能阻断或重启任务(仅建议,属主层规则)追加のみ — 契約はフラグを立てるだけで、ジョブの阻止・再起動は決してしない(助言のみ、所有レイヤー原則)

X #3 · 82 IP cutover as a gate graph换 IP 割接做成关卡图IP 切替をゲートグラフに

Chain the four existing hand-run skills into one fixed route where every gate reads reality, not memory:把现有四个手动技能串成一条固定路线,每个关卡都读现实、不读记忆:既存の手動スキル四つを一本の固定ルートに繋ぎ、各ゲートは記憶ではなく現実を読む:

step 0  snapshot     provider API → fleet-inventory.json (SSOT)
        GATE ▸ API returns 200 AND the new IP is visible there
step 1  update refs  inventory · grafana REGION__IP label · panel nodes · hosts.md
        GATE ▸ /ip-check reports ZERO stale references
step 2  probe        from OUTSIDE the host, carrier-matched vantage
        GATE ▸ TCP reachable AND subscription publication carries the new IP
step 3  close        ledger note + monitoring re-check
        GATE ▸ up==1 for the new label · old label series ABSENT

rule: a failed gate STOPS the route — no skipping, no "I'll fix it later"
touches改动点変更箇所
a NEW wrapper skill/checklist that calls revert-isp-ip, ip-rotate, ip-check, grafana in order — no new engine, the gates are the existing tools' own outputs一个新的包装技能/检查单,按序调用 revert-isp-ipip-rotateip-checkgrafana —— 不造新引擎,关卡就是现有工具的输出新規ラッパースキル/チェックリストが revert-isp-ipip-rotateip-checkgrafana を順に呼ぶ — 新エンジンは作らず、ゲートは既存ツールの出力そのもの
why gates为何要关卡ゲートの理由
the standing rule is “update EVERY reference” — a checklist a human can skip is not a gate; a route that stops on failure is既有规则是“更新每一处引用” —— 人能跳过的清单不是关卡;失败即停的路线才是既存ルールは「すべての参照を更新」— 人が飛ばせるチェックリストはゲートではない;失敗で止まるルートこそゲート
risk风险リスク
touches fleet state → mission-critical lane; dry-run first on a test node, never armed without a per-run approval涉及舰队状态 → 关键任务通道;先在测试节点空跑,未经每次批准绝不武装フリート状態に触れる → ミッションクリティカル線;まずテストノードでドライラン、実行ごとの承認なしには決して武装しない

○ #4 · 71 Make the five line-maps honest让 5 张直线地图说实话直線地図 5 枚を正直に

Documentation-only edits to the JSON manifests, so the map matches the code. Example — infra-guardian:只改文档:编辑 JSON 清单,让地图与代码一致。例 —— infra-guardian文書のみの編集:JSON マニフェストを直し、地図をコードに一致させる。例 — infra-guardian

*** flows/infra-guardian.flow.json ***
- { "id":"sweep", "label":"sweep boxes",            "next":"lint" }
+ { "id":"sweep", "label":"sweep.sh fan-out ×37 (cap 10, 60s/box)",
+   "group":"fanout",                               "next":"coverage" }
+ { "id":"coverage", "label":"COVERAGE n/M — real denominator",
+   "gate":true,                                    "next":"lint" }
touches改动点変更箇所
5 JSON files under ~/gitrepo/automation-hub/flows/; the Flow View is read-only, so zero runtime effect~/gitrepo/automation-hub/flows/ 下 5 个 JSON 文件;Flow View 只读,对运行时零影响~/gitrepo/automation-hub/flows/ の JSON 5 ファイル;Flow View は読み取り専用なので実行時への影響ゼロ
rule铁律原則
draw the map FROM the script it actually runs, never from memory — this exact trap (map read as runtime) already bit us once on 2026-07-27地图必须照实际运行的脚本画,绝不凭记忆 —— “把地图当运行时”这个坑 2026-07-27 已经踩过一次地図は実際に走るスクリプトから描く、記憶からは決して描かない — 「地図=実行時」と読む罠には 2026-07-27 に一度はまっている

○ #5 · 64 Register the 6 orphan jobs登记 6 个孤儿任务孤児ジョブ 6 件の登録

orphan (on disk, not in registry)孤儿(在磁盘、不在注册表)孤児(ディスク上、レジストリ外) state today当前状态現状 proposed action建议动作提案アクション
weekly-abandoned-worktree-sweep● activeregister登记登録
weekly-stale-artifact-trash● activeregister登记登録
mother-checkin● activeregister登记登録
router-syslog● activeregister登记登録
audit-claude-feedback-queue○ paused○ registered as paused○ 已按暂停登记○ 一時停止のまま登録済み
sub2api-airelay-auto-upgrade○ paused○ registered as paused○ 已按暂停登记○ 一時停止のまま登録済み
mechanism机制仕組み
registry metadata only — hubd.py journals every mutation and undo reverts one step; job runtimes untouched仅注册表元数据 —— hubd.py 对每次变更记日志,undo 可回退一步;任务运行时不动レジストリのメタデータのみ — hubd.py が全変更を記録し undo で 1 段戻せる;ジョブの実行は不変
why bother为何值得なぜ必要か
same denominator logic as #2 — the hub cannot gate, count, or draw what it does not know exists与 #2 同一个分母逻辑 —— Hub 无法为它不知道存在的东西设关卡、计数或画图#2 と同じ分母論理 — ハブは存在を知らないものをゲート・集計・描画できない

Outcome 2026-08-26: ○ #1 shipped (RED→GREEN, falsified against the pre-fix script) · ○ #5 shipped (6 conflicts → 0, additive) · ○ #4 shipped for guardian — the other 4 line-maps were audited against their code and are honest, so they stay untouched · ○ #2 trimmed to the one real offender: guardian's per-box verdict now reads a real denominator (live: PASS: 139.162.89.103 — 6/7 probes green) · X #3 rejected — the two IP skills own different address classes; a fixed chain would blur that. First full-fleet sweep with the new lines: 08-27 09:07 JST. 2026-08-26 结果:○ #1 落地(RED→GREEN,并用改前脚本证伪)· ○ #5 落地(6 个冲突 → 0,纯增量)· ○ #4 在 guardian 上落地 —— 另外 4 张直线地图对照代码审计后确属诚实,保持不动 · ○ #2 收窄到唯一的真问题:guardian 每台机器的判定行现在带真实分母(实测:PASS: 139.162.89.103 — 6/7 probes green)· X #3 否决 —— 两个 IP 技能各管不同的地址类别,硬串成链会搅浑归属。新判定行的首次全舰队巡检:08-27 09:07 JST。 2026-08-26 の結果:○ #1 実施(RED→GREEN、修正前スクリプトで反証済み)· ○ #5 実施(衝突 6 → 0、追加のみ)· ○ #4 は guardian で実施 — 残り 4 枚の直線地図はコード照合の結果正直だったため据え置き · ○ #2 は唯一の実問題に絞り込み:guardian の各機判定行に実分母が付いた(実測:PASS: 139.162.89.103 — 6/7 probes green)· X #3 は却下 — 二つの IP スキルは異なるアドレス種別を所有し、固定チェーンは責任を曖昧にする。新判定行での初の全艦隊スイープ:08-27 09:07 JST。