Skip to content

devbase: env sync の AWS の経路・env list・env keygen など 7 つの関数が長く、起動の後の処理の段は引数が 7 個あり、sync の関数の受け方が 1 か所だけ違い、--group の検証とテストの補助が 2 か所に重なる → 13 件すべてを振る舞いを変えずに分け、どの関数も 50 行以下・認知的複雑度 15 以下に収まり、重なりは 1 か所にまとまる(#444) - #445

Merged
takemi-ohama merged 2 commits into
mainfrom
design/issue-444
Oct 8, 2026

Conversation

@takemi-ohama

@takemi-ohama takemi-ohama commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

#444 の要求と受け入れ条件の写し、およびスプリント m10b に向けた設計文書を issues/ に追加しました。文書だけの変更で、コードは変えていません。

利用者向けの変化

  • 無し

移行の手順

  • 無し

変更の要点

テスト

supervise.py の run のステップの結果は次のとおりです。

ステップ exit 結果
glossary 0 ok:宣言と用語集が揃っている
requirements-check 2 → 0 1 回目は要求の写しを書く前の判定で、ファイルがまだ無かった(exit 2 は「写しが無い」の意味で、失敗ではない)。写しを書いた後に打ち直して ok:issues/issue-444-requirements.md は #444 の本文と一致する

requirements-check の 1 回目の exit 2 は、要求の写し(issues/issue-444-requirements.md)を書く前に打ったためです。写しを書いた後、2026-10-08 に設計ブランチの先端で打ち直して一致を確かめました(exit 0)。

モード: standard / 通した工程: 設計 → 要求と受け入れ条件 → ドキュメントレビュー

🤖 Generated with Claude Code

決めたこと

issues/issue-444-design.md

  • 決定 1: 13 件を片付けるため、R1〜R13 をすべて「直す」に分け、「直さない」の件を作らない
  • 決定 2: 要求の基準をそのまま使い、数値と定義の場所を設計で変えない
  • 決定 3: _aws_sync_plan を _SyncContext に揃えるため、改修計画の I-001 の 4 段の分け方をそのまま採る
  • 決定 4: --group の検証を 1 か所にするため、check_group_option に account_rule の引数を持たせて TUI の前段も中へ入れる
  • 決定 5: environment の形ごとの分岐を消すため、形をキーにした対応表と形ごとの関数を使う
  • 決定 6: _run_post_start の引数を 4 個にするため、起動した構成の 4 つの値を凍結した _ComposeDeployment にまとめる
  • 決定 7: env list の重なりを消すため、節の 1 つ分を出す関数を作り、チーム共通とプロジェクトの節の選び方を別の関数に分ける
  • 決定 8: R6・R7・R10 は段を抜き出すだけにし、env keygen の理由の注記は抜き出した関数へ一緒に移す
  • 決定 9: tests/volume/ の補助を 1 か所にするため、tests/volume/conftest.py に _ を外した名前で置いて取り込む
  • 決定 10: 偽の OpenBao の do_POST は、経路ごとの関数に分ける(経路をキーにした対応表にしない)
  • 決定 11: 振る舞いを丸ごと縛るテストが無い経路だけ、構造の変更の前に現状固定のテストを足す

takemi-ohama and others added 2 commits October 8, 2026 01:36
PR #442 の構造改善で見送った 13 件を R1〜R13 に数え直し、兆候ごとに
消えたと見なす基準(行数・認知的複雑度・C901・引数の数・定義の場所)を決めた。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
PR #442 の構造改善で見送った R1〜R13 をすべて直す設計にした。
_aws_sync_plan は改修計画 I-001 の分け方で _SyncContext を受け、
--group の検証は check_group_option にまとめて CLI と TUI の文を保ち、
_run_post_start は起動した構成を _ComposeDeployment にまとめて引数を 4 個にする。
偽の OpenBao の do_POST は経路ごとの関数に分ける(要求の未決への答え)。

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 1 | codex | APPROVE

ドメインモデル節と用語集の照合範囲で、指定の指摘基準に該当する修正指摘はありません。判断の根拠: Vision・Value 2・Value 3(既存の振る舞い、設定の保持、グループの境界を維持する条件を現行実装と照合)。

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 1 | kiro | APPROVE

設計 PR(ドメインモデルの節と用語集の差分)をレビューした。コンテキストマップ・集約の持ち主・不変条件・ドメインイベント・用語の整合を確認したが、critical / major の指摘は見つからなかった。確認済み: (1) 集約 5 つはそれぞれ持ち主が 1 つに決まる。(2) ドメインイベント E1〜E5 は要求の番号を引き継ぎ、各イベントに受け手がある。(3) 用語表の 3 語(起動の後の処理の段・対象のグループ・同期済みハッシュの控え)は docs/glossary/glossary.json の既存エントリと意味まで一致し、「用語集への反映: 無し」の宣言は正しい(glossary.json は本 PR で変更されていない)。(4) R2 は secret と TUI の 2 コンテキストにまたがるが、決定 4 で TUI→commands/env.py の取り込みが既存である旨が宣言され、新しい関係は結ばれない。(5) I2 の CLI/TUI のメッセージ差(CLI は「グループ名:」接頭、TUI は validate_account_group で接頭なし)と、storage_group が BackendConfigError のみを送るという前提は、実コード(lib/devbase/commands/env.py, lib/devbase/tui/actions_env_keys.py, lib/devbase/env/backend_config.py)と一致する。

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 2 | claude | APPROVE

設計(R1〜R13 の分け方・決定 1〜11・不変条件 I1〜I10)を現行コード(commands/env.py の _aws_sync_plan・_target_group・cmd_env_list・cmd_env_keygen、tui/actions_env_keys.py の group_attrs、volume/compose.py の _mask_secret_environment、commands/container.py の _run_post_start と 3 つの呼び出し元、snapshot/manager.py の restore、tests/conftest.py の do_POST、tests/volume の重複した補助)と照合した。critical / major に当たる食い違いは無い。根拠: Vision・Value 3。

@takemi-ohama takemi-ohama left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 cross-review | round 2 | kiro | APPROVE

設計 PR(issue-444 の要求と設計)を kiro の観点でレビューした。設計の技術的に効く主張を実装(commit 87037c0)と突き合わせ、R1(_aws_sync_plan / _sync_credential_sources の受け方)・R2(_target_group / group_attrs / storage_group の例外とメッセージ接頭)・R3/R4(_mask_secret_environment / _env_shape の 4 形)・R5(_run_post_start と 3 つの呼び出し元の引数の束)・R13(do_POST のログイン / KV 書き込みの経路)を確認した。いずれも実コードと一致し、13 件はコンテキストの中で閉じ、不変条件 I1〜I9 は既存テストに固定され、I10 は測定で確かめる形になっている。critical / major の指摘は見つからなかった。

@takemi-ohama

Copy link
Copy Markdown
Contributor Author

🔧 /ndf:fix サマリ | commit (なし)

対応件数: critical=0 / major=0 / minor=0(合計 0 件)
決着: 0 件 / 見送り: 0 件 / 却下: 0 件
CI: NONE

@takemi-ohama
takemi-ohama marked this pull request as ready for review October 8, 2026 08:00
@takemi-ohama
takemi-ohama merged commit a97abe6 into main Oct 8, 2026
10 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant