Genesis Blueprint と Program
Blueprint と Program は、証明、所有権、または網羅的な意味モデルではなく、維持される説明です。
Blueprint
genesis/blueprint.md は、製品が何をすべきかについての短く、まとまりのある、非技術的な説明です。明示的なユーザーの意図を優先します。フレームワーク、パッケージ、ルートのスペル、スキーマ、ソースファイル、実装計画、テスト、プライベートなアーキテクチャについては言及しないでください。
Blueprint は、変更が観察可能な製品の動作を意図的に追加、削除、または変更する場合にのみ、実装後に更新します。偶然、バグ、プライベートな設計上の選択、あいまいさを製品の意図に変えないでください。
Program
Program は読み取り可能なディレクトリに整理します。メンバーシップはディレクトリ名とは独立して、genesis/subsystems.md でのみ宣言します。
genesis/program/billing/invoices.md
genesis/program/authentication/sessions.md
サブシステムが提供する意味のある公開操作ごとに、言語やソースレイアウトに関係なく、1つのモジュールを作成します。公開操作には、エクスポートされた関数やメソッド、APIアクション、コマンド、UI操作、その他の観察可能なエントリポイントが含まれます。ソースファイルをそのまま反映したり、すべてのヘルパーを文書化したりしないでください。
各モジュールには以下が含まれます。
# 人間が読める境界名
境界が存在する理由の短い説明。
## ソース
- Main: `exact/authored/main/source/path`
- `exact/authored/supporting/source/path`
## 公開契約
意味のある入力、出力、影響、障害、および保証。
すべてのモジュールには、正確に1つの - Main: ソース箇条書きが必要です。メインソースは、実装を読み始める場所として明示的に選択します。実行可能なエントリポイントである必要はありません。それはモジュールの所有サブシステムに属し、より具体的なネストされたディレクトリ所有者を尊重する必要があります。その他のソースは、他のサブシステムの共有ライブラリを引用してもかまいません。ソースリストの順序、インポート、ファイル名からメインファイルを推測しないでください。古いモジュールを調整するときは、ソースを検査し、アンカーを明示的にマークしてください。インデックスは自動的に割り当てません。
オプションの ## 実装マップ セクションでは、将来のエージェントが操作の変更、トレース、デバッグに実質的に役立つプライベートヘルパーやシームのみを名前付けできます。これは情報提供であり、公開保証ではありません。テストは証拠であり、実装ソースではありません。
より少なく、より明確なモジュールを優先します。古く重複した説明は削除します。1つのソースが複数の操作をサポートする場合があります。ヘルパーやグルーコードファイルは、どのProgramモジュールにも現れないことがあります。
タスクの境界
呼び出し元が、これが初期説明なのか、完全なProgramリフレッシュなのか、フォーカスされた変更後調整なのか、Blueprintのみの作業なのか、読み取り専用レビューなのかを決定します。呼び出し元の編集境界を尊重します。意図をでっち上げるのではなく、あいまいさを報告します。
サブシステム
genesis/subsystems.md をProgramとともに、説明およびリフレッシュ作業で維持します。Blueprintのみの作業ではマップを変更しません。レビューは読み取り専用のままです。マップは作成された関連付けの権限ですが、責任とテーブル参照は、アプリケーションソースとスキーマの誤りやすい説明のままです。
以下の正確なバージョンゼロの文法を使用します。
# サブシステム
## `forms` フォーム
再利用可能なフォームのレンダリング、検証、送信キャプチャを所有します。
### ソース
- ディレクトリ `packages/forms`
### Program
- `genesis/program/forms/render.md`
### 所有データ
- テーブル `database` `default` `form_definitions`
### 使用データ
- なし。
サブシステムごとに、1つの安定した小文字ハイフン区切りのIDと人間向けのタイトルを使用します。各エントリには、責任の説明文と、Program、所有データ、使用データのセクションが必要です。責任の説明文は、マップのキャプションではなく、サブシステムの完全な説明です。その目的、範囲、重要な部分、他の所有者との連携を説明します。実質的な既存の説明を保持し、可視化のために一言ラベルに置き換えないでください。コンシューマーは表示プレビューを短縮できます。単純なサポートディレクトリには短い説明のみで十分な場合があります。
必須のソースセクションには、バックティックで囲まれたパスを伴う - ディレクトリ エントリが正確に1つ含まれます。これはプロジェクト相対の正規ディレクトリであり、プロジェクトルートには . を使用できます。すべてのサブシステムは1つのディレクトリルートを持ちます。分散または複数のルートを宣言しないでください。親ディレクトリルールをスタックしてデフォルトのサブシステムルートを発見しますが、これは網羅的ではありません。エージェントは、実際の責任とソースの証拠から、別の場所にある別のルートを認識して宣言できます。作成された宣言は、通常のインデックス作成を通じて存続します。作成されたマップは、準備ができたら正規の所有者リストです。スタックルートは導入時のヒントであり、追加の所有者を作成したり、作成された境界を分割したりすることはありません。すべてのインデックス化されたソースをカバーし、必要に応じて残りのサポートファイルにはプロジェクトルートの所有者を使用します。UIコンポーネントとエンジンコードは1つのルートを共有できます。UIの投影は所有権を変更しません。空のセクションは - なし。 と記述します。新しい空のマップには # サブシステム と - なし。 のみが含まれます。すべてのProgramモジュールは正確に1つのサブシステムに属します。Programディレクトリ名は所有権を割り当てません。ソースは、操作や実装に2つの所有者を与えることなく、別のサブシステムのライブラリを引用できます。グロブ、重複操作、または重複テーブル所有者を使用しないでください。
マップを再生成したり、意図的に分割する場合は、説明を新しいディレクトリ所有者と調整します。該当する責任説明文と明示的なProgram割り当てを一緒に移行し、境界が変更されていない場合は安定したIDを保持します。すべてのProgramに必要なメインソースを、ネストされた所有者を含む現在の所有者に対して再確認します。ライブラリ参照は独自の所有権を保持します。以前のコンシューマーのハードコードされた名前、ディレクトリレイアウト、キャッシュリストではなく、現在の宣言を使用します。サブシステムとProgramを検査し、欠落/重複メンバーシップと無効なメインアンカーを解決してから、完了を主張します。
テーブルIDは、宣言されたスタックリソースID、スキーマ、テーブルの3つの別個の正確なバックティック値です。default はリソースのデフォルトスキーマを意味します。該当する場合は明示的なスキーマを使用します。ホストデータベース名、資格情報、SQL式、または環境値を決して記録しないでください。使用データは、別の宣言されたサブシステムが所有するテーブルを参照します。サブシステムは、Program操作なしでデータを所有したり、データなしで操作を所有したりできます。所有権を割り当てる前に、実際のスキーマ/マイグレーションを読みます。関連付けをでっち上げるのではなく、不確かさを報告します。
変更によってサブシステムの責任、Programメンバーシップ、またはデータの所有権/使用が追加、削除、または変更された場合は、同じ実装ターンで genesis/subsystems.md を維持します。関連コードを変更する前にマップを読みます。明確な責任が証明されない限り、既存のサブシステムを再利用します。各Programモジュールを正確に1回宣言します。フォルダはメンバーシップを決定しません。テーブル参照をスキーマ/マイグレーションに基づいて維持します。Genesisはデータベースを検査しません。これらの関連付けが変更されない場合、プライベートヘルパーの変更にマップ編集は必要ありません。
既存の説明済みアプリケーションで genesis/subsystems.md が欠落しているか空の場合、実装前に実際のソース、スキーマ、既存のProgramから作成します。これは通常の説明的導入であり、ブロッカーや再度許可を求める理由ではありません。既存のProgramとソースを保持し、関連する責任を検査し、最小の真実のマップを完成させます。初期化で空のファイルを作成できますが、その意味を作成するのはエージェントのみです。