STEP 1650 — Archify CLI 実 render 検証 0 errors 712KB HTML 4 iteration

2026-09-01 · STEP 1648 Phase 3 emit の 実 render + validate 検証 · Archify CLI 2.16.0 (clone 経路 tt-a1i/archify) · 17 errors → 4 → 2 → 1 → 0 の 4 iteration で PASS · rendered HTML: harvest-lag-diagram.html (712KB)

Overview — Phase 3 の 真価が 出た iteration

chat-Claude 2026-08-31 忠告: 「幸いこのリポジトリは archify.zip を同梱していて、 CLI 単体でも動くので、 clone して 中身を 読んでから node bin/archify.mjs doctor を 直接叩く経路が取れます。 npx インストーラを 通す必要は ありません」

本 STEP 1650: chat-Claude 忠告通り 「clone + node bin/archify.mjs 直接」 で Archify CLI を scratchpad (session isolated) に install、 STEP 1648 生成 IR を validaterender の full path で 検証。 結果: JSON Schema PASS だが Archify layout validator は 17 error で reject → 4 iteration の 反復修正で 0 error 到達 → HTML 712KB 生成成功 → SRC evidence file:line pin 全て verified。

Phase 3 spike の 真価が ここで 出た: 「schema 適合 ≠ render 適合」 の 発見。 手 encode 段階で 見えなかった Archify 独自 constraint (grid layout / boundary label overlap / connection label 重なり) を 実 render で catch、 emitter に 3 corrigendum を 追加。 STEP 1625 陰性対照 「装置 赤 出せる」 原則 準拠 = 「実 render で reject される 装置が 実在する」 実測 evidence 確保。

1. Iteration 履歴 (17 → 0 errors)

IterError 数主要 error修正内容
117全 component に pos なし + 非有限 pos/size + boundary label overflowlayout: {mode:"grid", cols:4, cellW:160, cellH:70, gapX:60, gapY:80} + 各 component に row/col 追加 + boundary label 短縮 (Measurement pipeline → Pipeline / Oracle domain (external) → Oracle) + pad 24/20 追加
24sublabel 長すぎ (166px 必要 vs 112px) + label overlap 2 箇所 + report JSON overlapverdict-emitter sublabel を "5-verdict (v1.0-oracle-ok-nullable-scope-note)" → "5-verdict table"、 gaugeVersion は tag に 移設 + labelDy 追加 (gate-to-oracle=-22 / gate-to-verdict-skip=-18 / verdict-to-sink=-18)
32Oracle boundary label が connection label と overlap + report JSON まだ overlapgate-to-oracle labelDy を -22 → +32 (Oracle boundary から 遠ざける) + verdict-to-sink を -18 → -36 (verdict-emitter 上方向)
40report JSON まだ verdict-emitter に 重なり (label y=194 vs verdict y[190,250])verdict-to-sink labelDy を -36 → +60 (verdict-emitter の 下方向へ、 CLI の "labelDy +60 (below)" suggested fix そのまま採用)

最終 validate 出力:

ok architecture C:\Users\user\...\scratchpad\harvest-lag-latest.architecture.json
  (9 artifact checks; composition standard: 0 errors, 7 warnings)

7 warning は 非 blocking (aesthetic 系: viewBox 適正化 / brand refresh 推奨 等)、 render は 通過。

2. Render 結果 — 712 KB self-contained HTML

node bin/archify.mjs render architecture harvest-lag-latest.architecture.json \
     harvest-lag-latest.html --repo-root /c/Users/user/rei-aios

Output: harvest-lag-latest.html (729,632 bytes = 712 KB)
Format: <!DOCTYPE html> + data-theme="dark" data-preset="signal-flow"
Generator: archify 2.16.0
Title: "harvest_lag gauge pipeline — v1.0-oracle-ok-nullable-scope-note Diagram"
SVG elements: 81 (svg/g/rect/path)
Embedded content: 全 7 component ID + SRC label + scripts/comparator file path + 5-verdict table

3. 実 render HTML embedded (Archify 2.16.0 出力)

iframe 埋込 — 全画面表示は こちら。 dark theme + signal-flow preset で 描画、 中央 SVG が 4 cols × 3 rows grid layout の pipeline 構造 (feed → harvester → retention-gate → oracle / comparator → verdict → sink)。 SRC 印付き label = commit 535ee3f0 pin 済 evidence tag。

4. Emitter corrigendum 3 件 (src/archify-emit/ に 反映済)

  1. types.ts: ArchifyConnectionlabelDx / labelDy / labelAt / labelSegment 4 field 追加 (Archify schema 対応、 STEP 1648 では 未実装だった layout hint field)
  2. emit-harvest-lag.ts (layout): layout: {mode:'grid', cols:4, cellW:160, cellH:70, gapX:60, gapY:80, origin:[40,40]} 追加 + 各 component に row/col 明示 (feed=0,0 / harvester=0,1 / retention-gate=0,2 / oracle=0,3 / comparator=1,2 / verdict=1,3 / sink=2,3)
  3. emit-harvest-lag.ts (label overlap): 3 connection に labelDy/labelDx 追加 で 重なり回避 + boundary label 短縮 (Measurement pipeline → Pipeline / Oracle domain (external) → Oracle) + pad 24/20 追加 + verdict-emitter sublabel 短縮 (gaugeVersion を sublabel から tag に 移設)

5. STEP 1648 との 差分 (Phase 3 iteration record)

src/archify-emit/emit-harvest-lag.ts
  + layout: { mode: 'grid', cols: 4, cellW: 160, cellH: 70, gapX: 60, gapY: 80, origin: [40, 40] }
  + 各 7 component に row/col 追加
  ~ boundary labels: "Measurement pipeline" → "Pipeline" (pad 24) / "Oracle domain (external)" → "Oracle" (pad 20)
  ~ verdict-emitter sublabel: "5-verdict (v1.0-oracle-ok-nullable-scope-note)" → "5-verdict table"
  ~ verdict-emitter tag: gaugeVersion prefix 追加 (naCount + gaugeVersion.split('-')[0])
  ~ gate-to-oracle: label "oracle window (if retentionOk)" → "if retentionOk" + labelDy: 32
  ~ gate-to-verdict-skip: label "skip → N/A (if retention short)" → "skip → N/A" + labelDy: -18
  ~ oracle-to-comparator: + labelDx: 20
  ~ verdict-to-sink: + labelDy: 60

src/archify-emit/types.ts
  + ArchifyConnection に labelDx / labelDy / labelAt / labelSegment field 追加

test/step1648-archify-emit-test.ts
  → 変更なし (108/108 PASS 継続、 layout hint field は 非 required、 既存 assert 破らず)

6. Honest scope (STEP 1650 で 意図的に やっていないこと)

7. Phase 3 arc close — chat-Claude 提案 の 全 endpoint 完成

chat-Claude 2026-08-31 Archify arc の 実装 flow:

  1. STEP 1634 Phase 1 — pinout 実測 (Claude Code × Codex 6 pin、 4/6 pass + 2/6 fail = 「制約付き部分同型」)
  2. STEP 1639 Phase 2 library — src/agent-connector/ 3 tool + test 88/88
  3. STEP 1644 Phase 2 MCP register — 3 tool wire + execute 非公開 SafetyGate
  4. STEP 1648 Phase 3 emit — src/archify-emit/ 決定的 IR emitter + 108/108 test + SRC evidence mode
  5. STEP 1650 Phase 3 verify — Archify CLI 実 render 検証、 4 iteration corrigendum、 712KB HTML 生成 + SRC file:line pin verified

arc 完結条件: chat-Claude 「完全に ローカル・無料・LLM なしで 図が 出ます」 主張の 実測 evidence 確保。 rei-aios comparator harvest_lag report → 決定的 emitter → Archify CLI → 実 HTML の full path 走破、 判定経路 LLM ゼロ、 全 subprocess ローカル (git rev-parse + archify.mjs)、 費用 ゼロ (Archify CLI zero-dep + rei-aios 内 emitter)。

8. 次 STEP candidate

  1. 他 gauge emitter (freshness / feed-cadence) — emit-harvest-lag.ts の 共通化 抽出、 3 gauge 揃うと abstract layer 妥当性 判断可
  2. SRC evidence line 番号 drift auditor — file 編集で pin ずれ検知 CI (Archify 自体は render 時 chunk contents 照合するが、 pre-render 段階で catch する 相補装置)
  3. Phase 2.5 verify tool — 引き続き defer、 前提条件 (exit code + verdict vocabulary) 別 arc
  4. connector-inventory 経路 — chat-Claude 提案 もう 1 側、 dataflow or lifecycle diagram type で trial
  5. rei-aios MCP に archify_emit_harvest_lag tool 追加 — STEP 1644 pattern で emit を MCP surface 経由 呼出可 (execute 非公開 discipline 継承、 IR JSON return のみ、 render は library or 手動)