11. 受入条件うけいれじょうけん検証けんしょう

方針ほうしん

仕様しよう・データ・実装じっそう実行結果じっこうけっか区別くべつする。schemaの形式整合けいしきせいごうだけで言語げんご完成かんせいしたことにしない。正例せいれい誤例ごれい境界きょうかい変換前後へんかんぜんごことなる実装じっそう比較ひかく受入条件うけいれじょうけんとする。

1. 必須ひっす試験群しけんぐん

S06の失敗系しっぱいけいには、つぎ場合ばあいふくめる。

自動復旧回数じどうふっきゅうかいすう時間上限じかんじょうげん、lock保持ほじ失敗しっぱいrun/incident記録きろく現行げんこうLKGと前世代ぜんせだい保持ほじ検証けんしょうする。模擬失敗系もぎしっぱいけいだけでじつPages公開こうかい/復旧ふっきゅうのrunner要件ようけんたしたあつかいにしない。

必須群ひっすぐん必須ひっすtargetの正本せいほんdesign/acceptance.json本文ほんぶんのID、catalog、implementation-statusの群集合ぐんしゅうごう一致いっちさせ、T16はぜんrequiredぐん要求ようきゅうする。r3は55ぐんだが、このかずをcheckerの完了条件かんりょうじょうけん固定こていしない。nativeはLinux x86_64、Windows x86_64、macOS aarch64、WASIはwasm32-wasip2をWasmtimeで実行じっこう、browserはじつChromium/Firefox/WebKitを対象たいしょうとし、正確せいかくばんをlogへ記録きろくする。native process固有群こゆうぐんはnative targetで検査けんさする。WebKitの成功せいこうからじつSafari device QAを推定すいていしない。

2. propertyとfuzz

任意にんいのvalidな有限ゆうげんprefix treeからprint→parse→lowerの意味一致いみいっち任意にんいのUTF-8入力にゅうりょくでpanicしない。case分割ぶんかつした入力にゅうりょくstreamと一括入力いっかつにゅうりょくおな最終さいしゅうtokenれつ消費範囲しょうひはんい単調性たんちょうせいOrigin DAGの閉路へいろなし。可逆かぎゃくなSourceMapだけがrenameをゆるす。小幅回路こはばかいろ原式げんしきとNORの一致いっち

fuzz入力にゅうりょくでも上限じょうげん共有きょうゆうする。大量たいりょうdiagnosticを発生はっせいさせる入力にゅうりょく無制限むせいげんallocしない。OOMを完全かんぜん回避かいひできると虚偽きょぎ保証ほしょうをしない。

3. 不変条件ふへんじょうけんのCI

cargo fmt --check、clippyの対象たいしょうwarningのdeny、workspace tests、doc tests、package生成せいせい差分検査さぶんけんさ、dependency検査けんさ、targetべつcheck、conformance runner、fuzz smoke、license/asset/unsafe監査かんさ

ひとつのarchitecture boundaryごとにtestがあり、再設計時さいせっけいじ未更新みこうしん依存いぞん検出けんしゅつできる。あたらしいconstructorを追加ついかしたさいはparser、lower、check、print、render、wire、editorのcoverageひょうぎょうえる。None/unsupportedでだまって網羅扱もうらあつかいにしない。

4. 開発かいはつ段階だんかい

順序じゅんじょはtasksで管理かんりする。前段ぜんだんさき完成かんせいさせることは許可きょかするが、未完みかん後段こうだんをその時点じてんの「完成仕様かんせいしよう」とばない。最終受入さいしゅううけいれ全必須試験ぜんひっすしけんたいする実行証拠じっこうしょうこそろった時点じてん

design/tasks.jsonかくtask.acceptanceは、そのタスクが寄与きよする試験群しけんぐんのcoverage参照さんしょうである。試験群しけんぐんには後続こうぞくタスクの責務せきむふくむため、参照さんしょうした群全体ぐんぜんたいのpassedを前段ぜんだんタスクの完了条件かんりょうじょうけんにしない。T16以外いがいのタスクのcompleteには、当該とうがいdeliverableの実装じっそう、scopeを限定げんていした検証証拠けんしょうしょうこ依存いぞんタスクのcomplete、および関連かんれんする未解消みかいしょう設計せっけいblockerがないことを要求ようきゅうする。証拠しょうこconformance/results/ 以下いかのJSONとし、task_idchecksからでない文字列もじれつ非空ひくうlist)、commandsどう)、targetsどう)、result(passed)、excluded_acceptance_portions未検証範囲みけんしょうはんい文字列もじれつlist、明示的めいじてきからlistを許可きょか)をつ。implementation-statusの当該とうがいタスクからファイルを参照さんしょうする。かたちだけの証拠しょうこファイルではなく、記載きさいしたコマンドの実行結果じっこうけっかをレビューする。

たとえばT01のsource契約試験けいやくしけん実行じっこうしてT01をcompleteにしても、E03/E04のエディタ操作そうさ実装じっそう検査けんさしていなければ当該群とうがいぐんはnot-runのままとする。群全体ぐんぜんたいのpassedは全要件ぜんようけん実行証拠じっこうしょうこがそろってから記録きろくする。T16のcompleteには依存いぞんタスクの完了かんりょうくわえて、task.acceptanceに記載きさいした一部いちぶぐんだけでなく登録とうろくされた全必須群ぜんひっすぐんのpassedとその証拠しょうこ必須ひっすとする。

5. 群全体ぐんぜんたい型付かたつ証拠しょうこ

scopeきTaskEvidenceと群全体ぐんぜんたいのAcceptanceEvidenceをける。ぐん証拠しょうこschemaは interfaces/acceptance-evidence.schema.json配置はいちconformance/results/schemaacceptance_iddesign_revisionidentityresultruns必須ひっすとする。identityはprofile nepl3.repository-inputs/1 とsource_sha256/spec_sha256をち、現在げんざい検査入力けんさにゅうりょく照合しょうごうする。source identityの収集しゅうしゅう除外規則じょがいきそく開発かいはつtoolsのidentity操作そうさ開発手順かいはつてじゅん固定こていする。

runはcatalogのtarget.kindに一致いっちするtagがたとする。kind: command はcommand、target、result、exit_code、非空ひくうchecks、environment(runnerのname/versionとtoolsのname/version一覧いちらん)、log、log_sha256をつ。kind: review はtarget、reviewer識別子しきべつし、independent=true、decision(approved/rejected)、非空ひくうscope、log、log_sha256をつ。意味同等性いみどうとうせいレビューのために架空かくうのshell commandや終了しゅうりょうコードをつくらない。

logは conformance/results/ ない非空ひくう.txtまたは.logファイルとし、証拠しょうこJSON自身じしん実行じっこうlogにしない。実在じつざいlogとdigestを検査けんさし、べつID、ふるいsource/spec/design、未登録みとうろくtarget、target種別不一致しゅべつふいっち改変かいへんlogを拒否きょひする。passedにはぜんcommand runがpassedかつexit_code=0、ぜんreviewがapproved、ぜんrequired targetの実行じっこう・レビューを要求ようきゅうする。failedはすくなくともひとつのzero終了しゅうりょう失敗しっぱいrunまたはrejected reviewをふくみ、早期停止そうきていしによる未実行みじっこうtargetをゆるすがpassedへ変更へんこうできない。未実行みじっこうからlogやbuild成功せいこうえない。

証拠しょうこ形式けいしき・hash検査けんさ記述きじゅつされた挙動きょどうただしさそのものを証明しょうめいしない。期待値きたいち根拠こんきょ実行じっこうコマンドとlog、対象たいしょうsource、coverageを独立どくりつレビューする。source/doc仕様しよう変更へんこうしたあとふる証拠しょうこでcurrent passedを維持いじせず再実行さいじっこうする。T16はぜんregistered requiredぐん型付かたつ証拠しょうこ動的どうてき確認かくにんする。

この設計せっけいパッケージの検査けんさ別扱べつあつかい。doc/history/design-validation.json に、構文例こうぶんれい構造検査こうぞうけんさ依存いぞんDAG、task ID、JSON、れい独立算術どくりつさんじゅつ/回路検算かいろけんざんなどの実施範囲じっしはんい記録きろくする。Rust compiler/editor/browserが完成かんせいしているという証拠しょうこ使つかわない。