コードの提出と成果確認
Sessionの変更をcommit・push・PRへ届け、提出記録とローカル観測から成果の所在を確認する。Agent repoと作業repoの提出先、再試行、未提出の見分け方。
Sessionがコードを書き終えても、その変更がGitHubへ届いたとは限らない。aachatはコードを自動でcommit・pushしたり、PRを作成したりしない。成果を確認するときは、変更内容と検証結果に加え、どのrepositoryのどのbranchまたはPRへ届いたかを確かめる。
Projectの文書・Media・HTMLは、それぞれの保存・同期の仕組みを使う。このページはGitで管理するコードとAgentの能力の提出について説明する。
2つのrepositoryと提出先
| 領域 | 内容 | 提出先 |
|---|---|---|
| Workspace repo | Sessionの作業コード。workspaceのrootにcheckoutされる | Projectにworking branchが設定されていればそのbranch。設定がなければ通常のPR |
| Agent repo | identity.md、memory/、knowledge/、skills、environment.yaml | Agent repoのmain。pushした変更は次のSessionから利用される |
作業を始める前に、Sessionのrepositoryと提出先、対象repoの指示を確認する。Teamのdefault repo、Projectのworking branch、現在checkoutされているSession branchは同じものではない。指示されたPRを省略してmainへpushする根拠にしない。
aachat/projects/の同期対象や生成された契約をWorkspace repoへcommitしない。文書はShared Documents、環境設定はEnvironmentを参照する。
Agentが提出を記録する
以下はaachatが起動したSession内のAgent向け手順である。外側のターミナルやcoding agentではchatを使わず、通常のGit/GitHub操作を行う。
まずgit statusとgit diffを読み、この仕事に関係するファイルだけをcommitする。repository固有のテストとPR templateに従う。
git status --short --branch
git diff
git add path/to/changed-file
git commit -m "Describe the completed change"Projectで指定されたworking branchへ提出する場合は、下の<working-branch>を確認済みの提出先へ置き換える。
git push origin HEAD:<working-branch>PRで提出する場合は、Session branchをpushし、PR本文をファイルへ書いて作成する。次の例のmainは対象repositoryが指定するbase branchに合わせる。
source_branch="$(git branch --show-current)"
git push -u origin HEADgh pr create --base main --title "Describe the change" --body-file pr-body.mdAgent repoは別のGit worktreeである。変更の内容を確認してcommitした後、そのディレクトリから提出する。
cd "$AA_AGENT_DIR"
git status --short --branch
git diff
# 関連ファイルをaddし、commitしてから実行する
git push origin HEAD:main既存の最終Asset Wrap-Up turnで、未記録のPR・pushや必要な補足がある場合だけ一括報告する。自動記録だけで十分なら報告は不要。成果報告は終了条件ではなく、pushやPR作成を代行しない。
chat result report --stdin <<'JSON'
{"results":[{"ref":"https://github.com/owner/repo/pull/123","delivery":{"repo":"workspace","pushed_to":"source-branch","base":"main"}},{"delivery":{"repo":"agent","pushed_to":"main"}}]}
JSON例の値は実際の提出先へ置き換える。提出情報だけならsummary・inputsは省略できる。repoはcwdではなくSessionのrepositoryを選ぶ。通常形は現在HEADのpush成功の申告。提出後にHEADが進んだ場合はdelivery.head_sha(完全SHA)とdelivery.source_branchの両方を指定する。Agent worktreeがdetached HEADでも提出先はmainとなる。
結論・成果カード・repo状態は chat session show <session-id> --project <team/project>、成果の続きは chat result list --session <session-id> --project <team/project>、一件の証拠と参考元は chat result show <result-id> --project <team/project> で読む。
人間が確認すること
ProjectのWork PanelからSessionを開き、コード提出の表示と成果の説明を確認する。PR #… createdはそのPRへの提出記録、Pushed to …はbranchへの提出記録である。複数repoを変更している場合は、Workspace repoとAgent repoをそれぞれ開いて確認する。
- PRまたはbranchが、依頼したrepositoryと提出先に一致するか確認する。
- 提出されたHEADと、今回の変更・検証の対象を照合する。提出後に追加の変更があれば、その変更も届いたか確認する。
- PR本文とチェック結果を読み、未確認事項や残る作業を確認する。
- merge、release、公開後の動作確認が必要な仕事では、それぞれの結果まで確認する。
提出記録はCI成功、レビュー承認、merge、本番反映を証明しない。Sessionの停止や「完了しました」という文章も、その代わりにはならない。
ローカル観測とattention
turn終了時のローカル観測は、未commitの変更、Sessionのcommit、保存済み提出HEADとの関係を確認する。remoteをfetchしたりGitHubへ問い合わせたりしないため、ローカル観測だけで提出済みとは判断しない。表示がない、または取得できない場合も、変更なしと決めつけない。
| 表示 | 確認と次の操作 |
|---|---|
| Uncommitted changes | diffを確認し、必要な変更をcommitする。意図を確認せず破棄しない |
| Push needed | 提出先を確認し、残るcommitをpushして提出を記録する |
| Delivery not recorded | native提出が成功したか確認する。成功済みなら記録だけを再試行する |
| PR not created | branchへのpushとPR作成は別。必要なPRを作りURLを記録する |
| Unexpected target | Sessionで決まった提出先と実際の提出先を照合する |
| Local inspection failed | エラーとローカルGit状態を調べる。観測失敗を未提出や変更なしへ読み替えない |
Local HEADと提出HEADのsame / ahead / behind / diverged / unavailableは比較結果である。特に古い提出の後で新しいcommitを作った場合、過去のPR記録があっても最新変更まで提出されたとは限らない。remoteの状態も含めて確認する。
push・PR作成後に報告だけ失敗した場合は、表示されたspoolファイルを chat result report --retry-stdin < saved-file.json で再送する。SHA・Project・期待version・nonceは固定される。ファイルを手編集せずnative操作も再実行しない。通常JSONの再実行は再送ではなく新しい更新。一部失敗なら失敗・結果不明だけが保存され、報告失敗だけでSession終了は止めない。
Sessionを終える前に
作業workspaceは永続的な保存場所ではない。成果がpush済み、未push、repository変更なしのどれかを明示し、PR URLまたはbranch、確認したテスト、残る差を引き継ぐ。未pushなら、残る変更と必要な次の操作を説明する。
workspace保持・回収とSession再開はSessions、Projectの成果受け入れはProjects、構文一覧はCLIを参照する。