Skip to content

v0.6.16

Choose a tag to compare

@Driedsandwich Driedsandwich released this 14 Aug 14:53
· 77 commits to main since this release

v0.6.16 — v0.6.15 は NOT_READY です。toolVersion を 19 へ上げます

⚠ 先に読むところ

1. v0.6.15 が配ったテスト証拠は、v0.6.14 のものでした

v0.6.15 は releaseReadinessStatus: READY を名乗って公開されましたが、
その根拠は前の版の実行です。

v0.6.15 が配った test_counts.json    total 1236 / 2026-08-12
                                     generatedFromCommit 1c79e059…(v0.6.14 第2段)
v0.6.15 が配った validation-results  testEvidence.total 1236 / READY
v0.6.15 の tag 時点の CI             1304 件 / 32 ファイル / 失敗 0
v0.6.15 の release notes             1304 件

公開済みの asset は上書きしません。
docs/ERRATA.md §13 で
NOT_READY へ再分類しました。

受け手への影響は限定されます。 v0.6.15 の profile の数値・区間・event・profileId
変わりません。使えないのは test_counts.jsonvalidation-results.testEvidence だけです。
tag v0.6.15 の CI が 1304 件で通っていることが、実際の状態です。

なぜ 3 つの門が全部通したかも実測しました。

check:vacuity      byFile を「これ以上減ってはいけない下限」として使う
                   → 1304 ≥ 1236 なので通る(空振り検査としては正しい)
check:doc-numbers  docs/TEST_RESULTS.md と test_counts.json を突き合わせる
                   → **どちらも古いので一致する**
release:evidence   allPassed / failed / exitCode しか見ない
                   → 古いかどうかは一度も見ていない

一致は現在性の証拠になりません。古いもの同士は仲良く一致します。

v0.6.16 で門を 2 つ置きました。役割が違います。

release:stage     実測して total / byFile / skipped / failed / failedSuites /
                  exitCode / allPassed を**完全一致**で突き合わせる(byFile も下限にしない)
release:evidence  由来を見る——その証拠を取ってから、テストに効くファイルが
                  commit 間で動いていないか/未コミットで触っていないか

変異対照(v0.6.15 が実際に配った 1236 件の証拠を戻して実測):

                             v0.6.15 の門    v0.6.16 の門
check:vacuity                   exit 0          exit 0(下限のまま。これは正しい)
check:test-evidence-current     (無い)        **exit 1**
release:evidence                READY           **NOT_READY**
release:stage                   exit 0          **exit 1**

2. toolVersion が 18 → 19 になります。受け手の分岐が変わります

v0.6.15 の道具は、自分で配った schema に反する出力を出していました。

実測(公開した道具そのもの)
  --source も --tag も渡さない   SOURCE_UNAVAILABLE / SOURCE_UNAVAILABLE_OTHER
  GitHub 取得中に fetch が失敗    同じ

どちらも同梱 schema の 80 種類の enum に無い値です。
v0.6.15 で enum へ狭めたときに、名前を付け忘れた経路が受け皿へ落ち続けていました。

                              v0.6.15                     v0.6.16
引数不足                  SOURCE_UNAVAILABLE_OTHER  →  CLI_ARGUMENTS_MISSING
GitHub へ繋がらない        同じ                      →  SOURCE_FETCH_FAILED
応答が時間内に来ない       同じ                      →  SOURCE_FETCH_TIMEOUT

止め方の名前は 80 → 82 種類。一覧は同梱の
source-verifier-cli-result.v1.schema.jsonstableReasonCode.enum にあります。

*_OTHER で分岐している自動処理があれば、そこは直す必要があります。

3. 終了コード 3 が増えます。これは「道具が壊れている」だけです

出口に関門を置き、契約を破る出力はそもそも出しません

JSON を出さず、終了コード 3 で止まる
  status が CLI_STATUS_META に無い/exitCode が表と食い違う/
  OK なのに理由が付いている/非 OK なのに catalog の名前が無い/
  catalog の status と実際の status が違う

3 はどの status の終了コードとも重なりません。
例外のまま落とすと Node は 1 で終わり、MISMATCH と見分けが付かないためです
——stdout が空なのに終了コードだけ「不一致」に見えるのが、いちばん悪い読まれ方です。


「到達しない」と宣言した 8 件のうち、4 件は実経路でした

SOURCE_GIT_ARCHIVE_FAILED   PATH の先頭に偽 git を置き、rev-parse は通して archive だけ失敗させる
SOURCE_FETCH_FAILED         fetch の reject(v0.6.15 では未配線でもあった)
SOURCE_HTTP_ERROR           HTTP 503
SOURCE_BODY_UNREADABLE      応答本文の reader が失敗

**v0.6.15 の両方向照合がこれを通した理由。**route の母集団を試験が手で持っていたので、
**書かなかった経路は当然「出なかった」**のです。
「この run で出なかった」は「出ない」の証拠になりません。

route の表を 1 つにし、契約の検査と到達性の照合が同じ表を使うようにしました。
注入は globalThis.fetch の差し替えで、道具は 1 バイトも変えません。

catalog 82 種類 = corpus 45 / cli-route 33 / defensive-invariant 4
この run で実際に出た 78 種類
到達しないと宣言した 4 種類(出ていないことも実測)

文言の検査そのものが、同じ形の欠陥でした

v0.6.15 で新設した検査は「全面へ当てる」と説明しながら、手書きの一覧を使っていました。

実測: 新しい文書を作り、古い言い方と実在しないパスを両方書いて全試験を回すと
      **14 件すべて緑**

追跡ファイルの探索へ変えたところ、旧版が見ていなかった実在しない参照を 1 件見つけました。


互換性には向きが 2 つあります

producer-forward     新しい出力が古い schema を通るか       → 通る
historical-instance  保存した古い結果が新しい schema を通るか → **通らない**

保存した検算結果は、その版と一緒に配った schema で検証してください。
$id から最新の v1 を引くと、後の版で狭めた分だけ過去の結果が落ちます。
索引の notes が、突合先の schema と信頼の起点(道具の sha256)を名指ししています。

policySha256 を信頼の起点にしないでください。
同じ道具が policy と digest の両方を書くので、両方書き換えれば一致します。


profileId が変わりました。lock を作り直してください

v0.6.15  trs-jack-3d:TRS|JACK-TRS:1ee9fcdb2c88
v0.6.16  trs-jack-3d:TRS|JACK-TRS:8347dcf33002

v0.6.15  trs-jack-3d:TRS|JACK-TRRS:2eb28f2d173e
v0.6.16  trs-jack-3d:TRS|JACK-TRRS:e460e8cc0c6b

この文書から転記せず、同梱の trs-jack-3d-release-index.v1.json から引いてください。

動いた原因は版数上げ(package-lock.json)です。モデルの数値は変わっていません。


まだやっていないこと

  • **実測が 1 件も来ていません。**ジャック内部の接点位置は全部仮定のままで、
    導通測定も音響測定もしていません(verifiedPhysicalfalse)。
  • **core と CLI の分離をしていません。**外部監査 P2 の指摘です。
    P0 の訂正版と混ぜないという判断は監査からも支持されました。次の版で着手します。
  • BusyBox を oracle に足すこと。開発機にも CI にもありません。
    監査が BusyBox 1.37.0 で外部再現しており、その結果は採っていますが、
    こちらでは走らせていません。
  • annotated tag への署名。
  • 検算ツールの強化は試験した範囲までです。すべての細工に耐えることは示していません。

数えたもの

v0.6.15 v0.6.16
単体テスト 1304(配った証拠は 1236 1320(skip 0 / 失敗 0)
壊れた tar の材料 190 個 20 種類 変わらず
うち実際に通る材料 72 72
止め方の名前(catalog) 80 種類 82 種類
うちこの run で実際に出た 78 78
到達しないと宣言 8 種類 4 種類
検証対象(validate:profiles 14 14
schema 23 23(BUMP 0)
記録された入力 32 32
検算ツール toolVersion 18 19
区間 / event TRS 23/32・TRRS 30/36 変わらず

変わっていないもの

  • **モデルの数値。**接点位置も走査結果も同じです。
  • verifiedPhysicalfalse。実測記録は依然 0 件です。
  • 過去 release の asset。v0.1.0 以降の 634 件すべて byte 一致であることを、
    再生成の段ごとに対照つきで実測しています。