CTS-KB
モダナイゼーション📚 シリーズ 7/7

再現装置としてのハーネス — 台帳・禁止・ゲート・停止条件

⏱ 約 6 分で読めます
#レガシー置換#モダナイゼーション#ハーネス#ステアリング駆動開発#品質ゲート#AI駆動開発

🎯 この記事の範囲

第 2 回から第 6 回までで、読み方・境界・テスト・出先 TDD・切替を書きました。優秀なモデルは、これを一回は実行できます。一回の成功は、組織の能力ではありません。

本記事は ハーネス の作り方を再掲しません。作り方は ステアリング駆動開発 と 応用編 にあります。ここでは、置換の現場でハーネスが無いと壊れる箇所だけを閉じます。

本記事隣接
本記事(第 7 回・終回)台帳を常時ロードする / 禁止を変換器とルーターに書く / テストをゲートにする / 実送信を停止条件にする / 次の案件へ持ち出す単位第 1 回、ハーネスのサービス化

🔁 一回の置換は、会話に残ると消える

CTS-EC で直した負債が CTS-POS で再発した、という記録は既にあります。置換でも同じ穴が開きます。

会話にしか無いもの次のセッションがやること
死んでいる分岐と休眠の一覧ソースにあるから全部移植する。休眠を捨てる
PDF に寄せない、という一文ラベルを HTML にして統一する
未知の式は止める近い式を Scriban に落とす
サンプル PDF は切替ではない件数 78 を完成率にする
確認が無い実送信はしない親切にプリンターへ送る

モデルの性能差ではありません。優先度が、次のコンテキストに載っていないだけです。ハーネスは、載せる装置です。

🔁 一回の置換は、会話に残ると消える

実送信・実紙

機能 ID 台帳

作業単位の指示

禁止・境界

決定論ゲート

マージ可否

AI の実装

人の確認が無い限り停止


1. 台帳を、常時ロードする

第 2 回の機能 ID 台帳は、記事の付録ではありません。エージェントが毎回読む原典です。

置き場はリポジトリです。機能 ID、正本の世代とファイル、判定(移植 / 廃止 / 欠陥 / 休眠 / 確認中)、受入テスト名、ハッシュ。変換台帳は、許可した式と、意図して変えた差分を持ちます。元 RDLX のハッシュが変わったら、変換を再実行して止まった箇所を見る。黙って上書きしない。

「対象確認中」の行がある機能を、完了レポートに書かせない。未確認を完了にするのは、ハーネスが止めるべき出力です。


2. 禁止を、散文ではなく実行経路に書く

禁止は README の箇条書きだけでは足りません。実行が拒否するのが禁止です。

禁止実行経路
未知の RDLX 式import が失敗する
任意テンプレートの実行埋め込みリソース以外を読まない
未マップ JSON / CLR 型名デシリアライズが失敗する
PDF 経路へ SBPL を流す方式ルーターが未登録として落とす
古い端末設定での印刷claim 前に設定版不一致で要確認
平文 HTTPキュー生成が失敗する
結果不明の自動再送submitted にせず ReviewRequired
確認の無い実送信実 IP 解決と本番ホストを既定オフ

AI が「フォールバックを足す」変更を出したら、ルーターのテストが赤くなる。赤にならない禁止は、まだ禁止ではありません。

品質ゲート は、この赤をマージ前に必須化する層です。置換固有の中身は、上の表です。


3. テストを、完成率ではなくゲートにする

第 4 回の一覧は、カバレッジの自慢ではありません。マージの条件です。テナント不一致、HTML 混入、改ページ、復号、超過、誤配線、二重送信。どれかが落ちたら、紙面のスクリーンショットが綺麗でも入れない。

ゲートに入れないものも明示します。実紙、実機スキャナ、送り状契約、ドライバー実送信。これらを「あとで手動」と口頭で残すと、完了報告が先に出ます。未実施の切替項目は、ステータスが open のままの行です。閉じたことにするレポートを、停止条件にします。

エラーには field ID だけを出す、もゲートです。顧客住所がテスト失敗メッセージに出たら、そのテストは不合格です。


4. 周回と実送信に、停止条件を付ける

同じ入力で同じ失敗を繰り返す実装ループは、予算と周回上限で止めます。応用編のループエンジニアリングが扱う層です。置換で足すのは、副作用のある操作の既定オフです。

  • 本番 API への書き込み
  • プリンターへの実送信
  • 顧客テナントへのアプリ配布
  • 旧自動印刷の停止

確認が無い限り進める、は実装の話です。確認が無い限り送る、ではない。ハーネスは、送信系ツールを deny するか、ステージング以外のホストを拒否します。

CTS-POS でオブザーバビリティが要求に無かったため欠落を検出できなかった、という失敗は、置換の切替にもそのまま効きます。要求されていない実紙確認は、AI もテストも欠落判定しません。切替リストを要求に含めます。


5. 次の案件へ持ち出す単位

持ち出せるのは、CTS-EC の出荷そのものではありません。次の単位です。

  1. 機能 ID 台帳の行の型
  2. 四分類(動いている / 死んでいる / 欠陥 / 休眠)
  3. 未知は止める変換器
  4. 経路を混ぜないルーター
  5. 機械受入と人の切替の二段リスト
  6. 実送信の停止条件

VB6 でも CentOS 6 上の PHP でも、この 6 つは同じです。紙面の mm と SBPL のコマンドは案件固有です。固有部分を先に学習させると、次の案件でまた会話から始まります。先に持ち出すのは 6 つです。

内製化とは、この 6 つを顧客のリポジトリへ移し、顧客のゲートで赤を出せるようにすることです。モデルの契約ではありません。


✅ シリーズの閉じ

  • レガシー置換の原典は、動いている実装である
  • 鍵は、その振る舞いを先にユニットと Moq / フェイクの接続テストへ落とす TDD である
  • 読むとは、地図が無い状態から四分類の台帳を作ることである
  • 寄せるのは契約、寄せないのは誤配線になる経路である
  • 受入は落ちるテストと、落ちないと書いた切替リストである
  • 切替は実紙・実機・契約・並行稼働と切戻しである
  • 同じことを次でもやる装置が、ハーネス である

簡単に移行できる、の中身は新しいモデルではありません。台帳と禁止とゲートと停止条件です。ZIP を渡して「新しくして」は、新規のつもりを高速化するだけです。

営業の数字と請負条件は、本シリーズの外です。技術側の完了条件は、ここに書いた行がリポジトリにあって、赤で止められることです。


📚 シリーズ記事

回タイトル主題
1レガシー置換とは旧実装を原典にし、先にテストへ落とす
2旧コードの読み方地図が無い状態から四分類
3寄せる境界・寄せない境界DTO、PDF と SBPL、店舗と別拠点
4受入の機械化ユニットと Moq・フェイクで先に落とす
5Linux から Mac / Windows へ出して TDD するSSH 先で閉じる不足分、キャプチャまで AI
6人が残る切替実機・実紙・契約・並行稼働
7再現装置としてのハーネス(本記事)台帳・禁止・ゲート・停止条件

🔗 関連リソース

ハーネスの作り方(本シリーズの外)

本シリーズの実例