コードの提出と成果確認

Sessionの変更をcommit・push・PRへ届け、提出記録とローカル観測から成果の所在を確認する。Agent repoと作業repoの提出先、再試行、未提出の見分け方。

Sessionがコードを書き終えても、その変更がGitHubへ届いたとは限らない。aachatはコードを自動でcommit・pushしたり、PRを作成したりしない。成果を確認するときは、変更内容と検証結果に加え、どのrepositoryのどのbranchまたはPRへ届いたかを確かめる。

Projectの文書・Media・HTMLは、それぞれの保存・同期の仕組みを使う。このページはGitで管理するコードとAgentの能力の提出について説明する。

2つのrepositoryと提出先

領域内容提出先
Workspace repoSessionの作業コード。workspaceのrootにcheckoutされるProjectにworking branchが設定されていればそのbranch。設定がなければ通常のPR
Agent repoidentity.mdmemory/knowledge/、skills、environment.yamlAgent 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 statusgit diffを読み、この仕事に関係するファイルだけをcommitする。repository固有のテストとPR templateに従う。

bash
git status --short --branch
git diff
git add path/to/changed-file
git commit -m "Describe the completed change"

Projectで指定されたworking branchへ提出する場合は、下の<working-branch>を確認済みの提出先へ置き換える。

bash
git push origin HEAD:<working-branch> &&
chat delivery record-push --target <working-branch>

PRで提出する場合は、Session branchをpushし、PR本文をファイルへ書いて作成する。次の例のmainは対象repositoryが指定するbase branchに合わせる。

bash
source_branch="$(git branch --show-current)"
git push -u origin HEAD &&
chat delivery record-push --target "$source_branch"
bash
pr_url="$(gh pr create --base main --title "Describe the change" --body-file pr-body.md)" &&
chat delivery record-pr --url "$pr_url" --base main

Agent repoは別のGit worktreeである。変更の内容を確認してcommitした後、そのディレクトリから提出する。

bash
cd "$AA_AGENT_DIR"
git status --short --branch
git diff
# 関連ファイルをaddし、commitしてから実行する
git push origin HEAD:main &&
chat delivery record-push --target main

record-pushrecord-prは、直前に成功した提出の記録を保存する。GitHubへpushする機能でもPRを作る機能でもない。成功したnative操作の後だけ実行するため、例では&&で接続している。Agent repoがdetached HEADでも、提出先はmainである。

人間が確認すること

ProjectのWork PanelからSessionを開き、コード提出の表示と成果の説明を確認する。PR #… createdはそのPRへの提出記録、Pushed to …はbranchへの提出記録である。複数repoを変更している場合は、Workspace repoとAgent repoをそれぞれ開いて確認する。

  1. PRまたはbranchが、依頼したrepositoryと提出先に一致するか確認する。
  2. 提出されたHEADと、今回の変更・検証の対象を照合する。提出後に追加の変更があれば、その変更も届いたか確認する。
  3. PR本文とチェック結果を読み、未確認事項や残る作業を確認する。
  4. merge、release、公開後の動作確認が必要な仕事では、それぞれの結果まで確認する。

提出記録はCI成功、レビュー承認、merge、本番反映を証明しない。Sessionの停止や「完了しました」という文章も、その代わりにはならない。

ローカル観測とattention

turn終了時のローカル観測は、未commitの変更、Sessionのcommit、保存済み提出HEADとの関係を確認する。remoteをfetchしたりGitHubへ問い合わせたりしないため、ローカル観測だけで提出済みとは判断しない。表示がない、または取得できない場合も、変更なしと決めつけない。

表示確認と次の操作
Uncommitted changesdiffを確認し、必要な変更をcommitする。意図を確認せず破棄しない
Push needed提出先を確認し、残るcommitをpushして提出を記録する
Delivery not recordednative提出が成功したか確認する。成功済みなら記録だけを再試行する
PR not createdbranchへのpushとPR作成は別。必要なPRを作りURLを記録する
Unexpected targetSessionで決まった提出先と実際の提出先を照合する
Local inspection failedエラーとローカルGit状態を調べる。観測失敗を未提出や変更なしへ読み替えない

Local HEADと提出HEADのsame / ahead / behind / diverged / unavailableは比較結果である。特に古い提出の後で新しいcommitを作った場合、過去のPR記録があっても最新変更まで提出されたとは限らない。remoteの状態も含めて確認する。

pushやPR作成は成功したがreceipt保存だけ失敗した場合、外部操作を重複実行しない。同じrepository・branch・HEADを保ったままchat deliveryだけを再試行し、記録未完了を報告する。作業境界が不明、履歴が分岐、Git objectが不足といった場合は、データを保存し、エラーの案内に従って復旧する。attentionを消すために架空の提出を記録しない。

Sessionを終える前に

作業workspaceは永続的な保存場所ではない。成果がpush済み、未push、repository変更なしのどれかを明示し、PR URLまたはbranch、確認したテスト、残る差を引き継ぐ。未pushなら、残る変更と必要な次の操作を説明する。

workspace保持・回収とSession再開はSessions、Projectの成果受け入れはProjects、構文一覧はCLIを参照する。