---
title: "コードの提出と成果確認"
description: "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](/ja/docs/shared-documents)、環境設定は[Environment](/ja/docs/environment)を参照する。

## Agentが提出を記録する

以下はaachatが起動したSession内のAgent向け手順である。外側のターミナルやcoding agentでは`chat`を使わず、通常のGit/GitHub操作を行う。

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

## Sessionを終える前に

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

workspace保持・回収とSession再開は[Sessions](/ja/docs/sessions)、Projectの成果受け入れは[Projects](/ja/docs/projects)、構文一覧は[CLI](/ja/docs/cli)を参照する。
