概要
- 法律はソースコードで管理
- 裁判と法の解釈は処理系による判断
リポジトリ
法律リポジトリ
masterブランチ (天皇)
- 国家に1つ
- 実運用(デプロイ)されるリポジトリ
- 天皇しかpushできないリポジトリ
releaseブランチ (議会)
- 議会に1つ
- 国会議員以上でしかpushできないリポジトリ
devブランチ (議員個人)
- 議員につき1つ
- 国会議員以上でしかpushできないリポジトリ
- 議員が好きに弄れる
issueブランチ (国民)
- いくらでも建てられる
- 国民が作成可能で、devにマージするリクエストを送れる
憲法(憲法リポジトリ)の改正
- 憲法はそれ自身はテストの集合(spec)であり、他の法律をe2eテストするプログラム群
- 憲法改正は国会議員がissueを建て、国会議員の2/3以上の で発議
- 国民の過半数がレビューして賛成すると成立し、masterにマージされる
法律の立て方
issue
- 国会議員は、1人1つのdevブランチを所持
- 国民は、国会議員のdevブランチにプルリクエスト付きissueを送ることができる
- issueは と があるので投票としても効く
- プルリクエストは憲法に適合するか、既存法律と整合性が取れているかのユニットテストを行う
- 国会議員は送られたプルリクを承認できるし、自分で法律を書くことも可能
- 国会議員は release ブランチにマージできる
- マージ前にユニットテストが走る
releaseブランチで国会審議
- releaseブランチにマージされたプログラム(法案)をレビューし、 多数で可決
- もちろん憲法e2eテストも通す
- 可決すると、masterにマージリクエストを送る
天皇のマージ承認とデプロイ
- 天皇はmasterにマージする承認作業を行う。
- マージされると、デプロイされる
- git diffで法律の差分を読むことができる