Skip to content

design: 入出力の契約を、既存のコマンドの引数定義と呼び出し経路に突き合わせる対を足す #686

Description

@takemi-ohama

何が起きたか

devbasex/devbase#183(設計 PR、2026-09-15)はクロスレビューが収束するまで 7 ラウンドかかり、指摘は 31 件だった。そのうち少なくとも 9 件は、設計文書の契約が既存のコードの形と食い違っているという指摘で、どれも設計を書く時点でコードを読めば分かった。

指摘の中身 読めば分かった場所
env get には -p が無い / env list の -p は意味が違う cli.py の引数定義
案内したオプション名が --exclude-projects(実際は単数形) cli.py の引数定義
子プロセスの env init は cwd=$DEVBASE_ROOT で起動する _ensure_env_files
scale は _run_deploy_pipeline を通らない cmd_scale
cmd_up は _run_pre_up_checks → スナップショット → 起動の順で、検査の位置によって副作用が先に起きる cmd_up
dispatch 前の注入が実行時のディレクトリで行われ、切替元のグループへ要求が出る cli._load_secret_env
同期済みハッシュの控えが 1 ファイルでグループをまたぐ SourcesManager
ラッパーがプロジェクトの env を source するため、例に挙げた食い違いが起きない bin/devbase
export / import は既定で全プロジェクトを扱う cmd_env_export / import_bundle

design の「進む前に突き合わせる対」は同じ文書の中だけで確かめられるものに限っており、外部を要するものはレビューが拾う前提になっている。その結果、レビューのラウンドがコードの読み合わせに使われた。

提案

「呼び出される約束を変える」領域に当たるときは、入出力の契約の表を書いた後に、次の 2 つを突き合わせる手順を足す。

  1. 表に書いたコマンド・オプションを、引数を定義している場所と 1 行ずつ照合する(実在するか、名前と意味が同じか)
  2. 振る舞いを変える入口ごとに、そこへ至る呼び出し経路(別のコマンドからの経路、子プロセス、実行時のディレクトリ)を列挙し、処理の流れの図に現れているかを見る

関連

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area: ndf-skillNDF の Skill 本体enhancementNew feature or requestpriority: medium保守性・設計一貫性など、計画的に対応する

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions