Genesis 藍圖與程式
藍圖與程式是一種持續維護的解釋,而非證明、所有權或詳盡的語意模型。
藍圖
genesis/blueprint.md 是一份簡短、凝聚、非技術性的產品應做事項描述。偏好明確的使用者意圖。請勿提及框架、套件、路由拼寫、資料結構、原始檔案、實作計畫、測試或私有架構。
僅在變更有意新增、移除或改變可觀察的產品行為時,才更新實作後的藍圖。切勿將意外、錯誤、私有設計選擇或模糊性轉變為產品意圖。
程式
以可讀的目錄組織程式;成員資格僅在 genesis/subsystems.md 中宣告,與目錄名稱無關:
genesis/program/billing/invoices.md
genesis/program/authentication/sessions.md
為每個子系統提供的有意義公開操作建立一個模組,無論語言或原始碼佈局為何。公開操作包括匯出的函式或方法、API 動作、命令、UI 操作及其他可觀察的進入點。請勿鏡像原始檔案或記錄每個輔助函式。
每個模組包含:
# 人類可讀的邊界名稱
關於此邊界為何存在的簡短解釋。
## 來源
- 主要:`exact/authored/main/source/path`
- `exact/authored/supporting/source/path`
## 公開合約
有意義的輸入、輸出、效果、失敗與保證。
每個模組必須有且僅有一個 - 主要: 來源項目。明確地選擇主要來源作為開始閱讀實作的位置;它不必是一個可執行的進入點。它必須屬於該模組所屬子系統的所有權範圍,並尊重更具體的巢狀目錄擁有者。其他來源可以引用其他子系統中的共享函式庫。切勿從來源列表順序、匯入或檔案命名推斷主要檔案。在協調較舊的模組時,檢查原始碼並明確標記錨點;索引不會為您指派一個。
可選的 ## 實作對應 區段可以僅命名那些對未來代理變更、追蹤或除錯操作有實質幫助的私有輔助函式或接縫。它僅供參考,並非公開保證。測試是證據,絕非實作來源。
偏好較少但更清晰的模組。移除過時與重複的解釋。一個原始碼可能支援多個操作;輔助與膠水檔案可能不出現在任何程式模組中。
任務邊界
呼叫端決定此任務是初始描述、完整程式重新整理、聚焦於變更後的協調、僅藍圖工作,還是唯讀檢視。尊重呼叫端的編輯邊界。遇到模糊性時應報告,而非自行發明意圖。
子系統
在描述與重新整理工作中,與程式一同維護 genesis/subsystems.md。僅藍圖工作不會變更對應;檢視保持唯讀。對應是經授權的關聯權威,但其責任與表格參考仍然是應用程式原始碼與資料結構的可錯解釋。
使用此精確的版本零語法:
# 子系統
## `forms` 表單
擁有可重複使用的表單渲染、驗證與提交流程。
### 來源
- 目錄 `packages/forms`
### 程式
- `genesis/program/forms/render.md`
### 擁有的資料
- 資料表 `database` `default` `form_definitions`
### 使用的資料
- 無。
每個子系統使用一個穩定的、小寫連字號 id 與一個人類可讀的標題。每個條目需要責任說明文字,以及程式、擁有的資料與使用的資料區段。責任說明文字是該子系統的完整解釋,而非對應的標題。解釋其目的、範圍、重要部分以及與其他擁有者的協作。保留實質性的現有描述;不要為了符合視覺化而將其替換為一行標籤。消費者可以縮短顯示的預覽。簡單的支援目錄可能僅需簡短說明。
必要的來源區段包含一個 - 目錄 條目,後接反引號路徑:一個標準的、相對於專案的目錄,允許使用 . 表示專案根目錄。每個子系統有一個目錄根;永遠不要宣告分散或多個根。堆疊父目錄規則會發現預設的子系統根目錄,但並非詳盡。代理可以根據實際的責任與原始碼證據,辨識並宣告其他位置的根目錄。經授權的宣告在一般索引中持續存在。經授權的對應在準備就緒時是權威的擁有者列表;堆疊根目錄是採用的提示,永遠不會建立額外的擁有者或分割經授權的邊界。涵蓋每個已索引的原始碼,如有需要,為其餘的支援檔案使用專案根目錄擁有者。UI 元件與引擎程式碼可以共用一個根目錄;UI 投影不會改變所有權。空的區段寫 - 無。;一個新的空對應僅包含 # 子系統 與 - 無。。每個程式模組僅屬於一個子系統。程式目錄名稱不指派所有權。來源可以引用另一個子系統的函式庫,而不會使該操作或實作有兩個擁有者。不要使用 glob、重複操作或重複的資料表擁有者。
在重新產生或有意識地分割對應時,將解釋與新的目錄擁有者進行協調。一起轉移適用的責任說明文字與明確的程式指派,在邊界未變更的情況下保留穩定的 id。重新檢查每個程式所需的主要來源是否對應其目前擁有者,包括巢狀擁有者;函式庫參考保留其自身的所有權。使用目前的宣告,而非較早消費者硬編碼的名稱、目錄佈局或快取列表。在聲明完成之前,檢查子系統與程式並解決缺少/重複的成員資格與無效的主要錨點。
一個資料表身份是三個精確、用反引號包圍的值:已宣告的堆疊資源 id、結構描述與資料表。default 表示資源的預設結構描述;在適用的情況下使用明確的結構描述。絕不記錄主機資料庫名稱、憑證、SQL 表達式或環境值。使用的資料引用另一個已宣告子系統所擁有的資料表。一個子系統可以在沒有程式操作的情況下擁有資料,或是在沒有資料的情況下擁有操作。在指派所有權之前,閱讀實際的資料結構/遷移腳本;遇到不確定性時應報告,而非自行發明關聯。
當一個變更新增、移除或改變子系統的責任、程式成員資格或資料所有權/使用時,在同一個實作回合中維護 genesis/subsystems.md。在變更相關程式碼之前閱讀對應。除非有明確的責任證據,否則重複使用現有的子系統。每個程式模組僅宣告一次;資料夾不決定成員資格。保持資料表參考植基於資料結構/遷移腳本;Genesis 不會檢查資料庫。當這些關聯保持不變時,私有輔助函式的變更不需要編輯對應。
如果 genesis/subsystems.md 遺失,或在現有的已解釋應用程式中為空,請在實作之前根據實際的原始碼、資料結構與現有程式建立它。這是一般性的解釋性採用,不是阻礙或再次請求許可的原因。保留現有的程式與原始碼;檢查相關的責任並完成最小真實性的對應。初始化可以建立空白檔案,但只有代理能賦予其意義。