# Codex 雙工作站 / Gitea 開發環境 Readback

> Last updated: 2026-06-24 13:33 Asia/Taipei
> Scope: Mac Mini、MacBook Pro、Gitea dev workspace、全產品專案收攏。

---

## 1. 目前判定

```text
Overall workstation / Gitea dev readiness: 38.6%, orange.
AWOOOI controlled dev: ready.
All-products Codex dev: not ready.
Raw Codex / ChatGPT conversation sync: forbidden.
Safe shared context: Gitea, docs, LOGBOOK, handoff snapshots, Start Here, runbooks.
Forbidden sync targets: auth.json, *.sqlite, sessions, raw conversations, .env, runtime volumes, raw .git directories.
```

目前不能把「所有專案直接推到 Gitea」當成一個單步操作。原因是多數專案本機工作樹不是乾淨狀態、部分 Gitea refs 讀不到或沒有 `dev` branch、部分是 internal repo，需要 owner export / authenticated inventory。直接推送會把半成品、未審核刪檔、local-only runtime artifact 或不該公開的檔案混進 source control。

## 2. Start Here / Dashboard Readback

| Source | Readback |
|--------|----------|
| `~/.codex/CODEX-START-HERE.md` | generated_at `2026-06-24T03:36:26+00:00`; overall `38.6%`; `can_start_awoooi_controlled_dev=True`; `can_start_all_products_dev=False`; `raw_history_sync=False` |
| `~/.codex/codex-workstation-sync-dashboard.snapshot.json` | products `11`; registry ready `1`; registry blocked `10`; latest dev on Gitea `1`; production on Gitea `4`; workstation ready projects `2`; workstation blocked projects `13` |
| `~/.codex/product-runtime-governance-completion-scorecard.snapshot.json` | overall `38.6%`; topic dual-mac Codex `84%`; Gitea / GitHub / CI-CD `35%`; portability cloud VM `15%` |

## 3. Gitea Product Registry Snapshot

| Product | Gitea repo | Registry | Main | Dev | Current blocker |
|---------|------------|----------|------|-----|-----------------|
| AWOOOI | `wooo/awoooi` | ready | yes | yes | none |
| 2026FIFA | `wooo/2026FIFAWorldCup` | blocked | yes | no | owner preflight / dev branch missing; local status is heavy and requires narrow drift review |
| Agent Bounty | `wooo/agent-bounty-protocol` | blocked | yes | no | dirty tree and owner preflight required |
| MOMO Pro | `wooo/ewoooc` | blocked | yes | no | local tree clean, but dev branch creation still needs owner / preflight gate |
| AwoooGo | `wooo/AwoooGo` | ready | yes | yes | Mac Mini and MacBook Pro dev workspaces ready |
| StockPlatform v2 | `wooo/stockplatform-v2` | blocked | yes | no | dirty tree, no dev branch |
| VibeWork | `wooo/vibework` | blocked | unknown from public registry | no | dirty tree, refs inventory gap |
| ClawBot / OpenClaw | `wooo/clawbot-v5` | blocked | unknown from public registry | no | dirty tree and refs inventory gap |
| Bitan | `internal:bitan-pharmacy` | blocked | no | no | internal repo requires owner export / authenticated inventory; dirty tree |
| Tsenyang Website | `internal:tsenyang-website` | blocked | no | no | internal repo requires owner export / authenticated inventory; dirty tree |
| VTuber | `wooo/vtuber` | blocked | no | no | local HEAD / revision readback abnormal; must repair inventory before any push |

## 4. Mac Mini Local Repo Readback

| Local path | Branch | Commit | Dirty count | Remote readback | Safe next action |
|------------|--------|--------|------------:|-----------------|------------------|
| `/Users/ogt/codex-workspaces/awoooi-dev` | `dev` | `25889d4` in Start Here | `0` in Start Here | external HTTPS Gitea | controlled AWOOOI dev work can start from `dev` |
| `/Users/ogt/awoooi` | active ops worktree | not used for dev baseline | dirty by design | Gitea main active | do not use for cross-device dev bootstrap |
| `/Users/ogt/momo-pro-system` | `main` | `76a89a7` | `0` | `https://gitea.wooo.work/wooo/ewoooc.git` | candidate for owner-reviewed `dev` branch bootstrap |
| `/Users/ogt/Documents/AwoooGo` | `main` | `86c96a2` | `0` | `http://192.168.0.110:3001/wooo/AwoooGo.git` | candidate after registry / remote URL normalization |
| `/Users/ogt/clawbot-v5` | `main` | `f4b84d7` | `2` | Gitea + GitHub | needs dirty review before dev bootstrap |
| `/Users/ogt/Documents/agent-bounty-protocol` | `main` | `0601df8` | `40` | Gitea | needs dirty review / owner pick |
| `/Users/ogt/Documents/VibeWork` | `main` | `48275cc` | `180` | Gitea SSH | needs dirty review / owner pick |
| `/Users/ogt/stockplatform-v2` | `main` | `1ef097e` | `117` | Gitea | needs dirty review / owner pick |
| `/Users/ogt/tsenyang-website` | `main` | `b369ed8` | `7` | SSH internal repo | needs internal repo export / dirty review |
| `/Users/ogt/bitan-pharmacy` | `main` | `e122c8c` | `279` | SSH internal repo | needs internal repo export / dirty review |
| `/Users/ogt/Documents/2026FIFAWorldCup` | `main` | `118954e` | status heavy | Gitea + GitHub | requires narrow drift tool; do not run broad status in routine gate |
| `/Users/ogt/VTuber` | abnormal | no valid `HEAD` | `32` observed before HEAD failure | not reasserted | repair repository state / inventory only |

## 5. Priority Order

| Priority | Goal | Current completion | Gate |
|----------|------|-------------------:|------|
| P0 | Keep AWOOOI controlled dev usable on both Macs | 84% topic-level, AWOOOI ready | verify MacBook Pro artifact sync when reachable |
| P0 | Create safe all-product Gitea dev baseline | 38.6% overall | product-by-product owner/preflight, no raw `.git` sync |
| P1 | MOMO Pro dev baseline | candidate | tree clean; needs explicit owner-approved `dev` branch policy |
| P1 | AwoooGo dev baseline | ready | Mac Mini and MacBook Pro workspaces both branch from Gitea `dev` |
| P1 | Dirty product drift review | blocked | VibeWork, StockPlatform, Bitan, Agent Bounty, Tsenyang, ClawBot need local change triage |
| P2 | External MacBook Pro Codex operation | partial | use Gitea + docs + Start Here; never raw conversation/session sync |
| P3 | Raw work-window sync | forbidden | replace with summaries, handoff docs, LOGBOOK, snapshots |

## 6. Hard Gates

- Do not copy `~/.codex/auth.json`, SQLite DB, sessions, raw Codex / ChatGPT conversations, `.env`, runtime volumes, or raw `.git` directories.
- Do not create remote `dev` branches for products whose owner preflight is blocked.
- Do not push dirty worktrees as "latest" without a drift review and owner-selected include/exclude list.
- Do not treat MacBook Pro being reachable as proof that all project state is synchronized.
- Do not treat Gitea `main` existing as proof that production runtime is latest.
- Use Gitea as source of truth for code; use backup / DB / route / runtime readback as source of truth for service state.

## 7. Next Safe Actions

1. Refresh MacBook Pro reachability and artifact sync readback without copying raw sessions.
2. For MOMO Pro and AwoooGo, use the existing Gitea `dev` workspaces and branch into `codex/*`; do not edit `dev` directly.
3. For VibeWork / StockPlatform / Agent Bounty / Bitan / Tsenyang / ClawBot, run narrow dirty-tree summaries and prepare owner pick lists.
4. For 2026FIFA, build a narrow drift command that avoids full untracked scan.
5. For VTuber, repair local repository HEAD / inventory before any Gitea action.
6. Update Start Here / dashboard snapshots only after readback, not by assumption.

## 8. 2026-06-24 12:03 dev bootstrap readback

Machine-readable snapshot:

```text
docs/operations/codex-gitea-dev-bootstrap-preflight.snapshot.json
```

| Product | Local state | Remote state | Workspace | Readback result |
|---------|-------------|--------------|-----------|------------------|
| MOMO Pro | `/Users/ogt/momo-pro-system`, `main`, `76a89a70986b`, dirty `0` | `wooo/ewoooc` main/dev both at `76a89a70986b`; external HTTPS readback works | `/Users/ogt/codex-workspaces/momo-pro-dev`, branch `dev`, dirty `0` | Mac Mini dev workspace ready |
| AwoooGo | `/Users/ogt/Documents/AwoooGo`, `main`, `8471b376d97c`, dirty `0` | `wooo/AwoooGo` dev `8471b376d97c`, main `18be716e8578`; MacBook SSH readback verified | `/Users/ogt/codex-workspaces/awooogo-dev`, branch `dev`, dirty `0`; `/Users/ooo/codex-workspaces/awooogo-dev`, branch `dev`, dirty `0` | Mac Mini and MacBook Pro dev workspaces ready |

Completed:

```text
1. Remote dev branches were created from verified main commits.
2. Clean Mac Mini Codex workspaces were cloned from Gitea, not copied from raw local .git directories.
3. Both workspaces read back branch=dev and dirty=0.
4. No runtime .env / runtime volumes / raw conversations were copied.
```

Still blocked / remaining:

```text
remote_dev_branch_create=2
remote_write_performed=true
raw_git_sync_allowed=false
raw_conversation_sync_allowed=false
env_or_runtime_volume_sync=false
Superseded by 2026-06-24 13:33 readback: AwoooGo MacBook Pro SSH access and local dev workspace are now verified. Continue to use `dev` only as the clean base; task work must branch into `codex/*`.
```

## 9. 2026-06-24 12:41 remaining products readback

Machine-readable snapshot:

```text
docs/operations/codex-gitea-remaining-products-readback.snapshot.json
```

Updated internal Gitea registry probe:

```text
products=11
gitea_dev_ready=3
remaining_blocked=8
remote_write_performed=false
raw_git_sync_allowed=false
raw_conversation_sync_allowed=false
```

Ready for Gitea dev workflow:

| Product | State | Next gate |
|---------|-------|-----------|
| AWOOOI | existing `dev` on Gitea; controlled dev workspace already recorded in Start Here | branch from `dev` into `codex/*` per task |
| MOMO Pro | `main` and `dev` both at `76a89a70986b`; Mac Mini workspace ready | verify MacBook Pro clone / fetch from Gitea |
| AwoooGo | `dev` at `8471b376d97c`; `main` at `18be716e8578`; Mac Mini and MacBook workspaces ready | branch from `dev` into `codex/*` per task |

Still blocked:

| Product | Blocker | Decision |
|---------|---------|----------|
| 2026FIFA | local HEAD `118954e...` differs from Gitea main `f26def5...`; narrow diff readback timed out | build narrow drift review; do not create `dev` |
| Agent Bounty | local HEAD `0601df8...` differs from Gitea main `b7a733f...`; full status dirty count `40` | owner pick list for A2A / traffic / propose changes |
| StockPlatform v2 | local HEAD equals Gitea main, but full status dirty count `117` | owner pick list before any `dev` branch |
| VibeWork | local HEAD `48275cc...` differs from Gitea main `76a4ee1...`; full status dirty count `180` | owner pick list for growth / admin / runtime changes |
| ClawBot / OpenClaw | local HEAD `f4b84d7...` differs from Gitea main `22074fb...`; full status dirty count `2` | review `docker-compose.yml` and `main.py` drift |
| Bitan | internal inventory and dirty review required | owner export or authenticated inventory |
| Tsenyang Website | internal inventory and dirty review required | owner export or authenticated inventory |
| VTuber | repository / HEAD inventory abnormal | repair inventory before any Gitea action |

Automation gaps found:

```text
candidate_readback_default_roots_incomplete=patched_locally_pending_repo_tooling_capture
dashboard_generator_drops_latest_artifact_sync=patched_locally_and_shared_artifacts_refreshed
```

The candidate readback root mapping was patched locally and re-run with `candidates=5 ready=0 drift=5 missing=0`. The dashboard generator was also patched locally to preserve `latest_artifact_sync`; shared `~/.codex` registry / dashboard / Start Here were regenerated and now read back `registry_ready=3`, `registry_blocked=8`, `latest_dev_on_gitea=3`, `artifact_sync_blocked=1`.

## 10. 2026-06-24 12:49 shared Start Here refresh

Updated shared artifacts:

```text
~/.codex/codex-gitea-workspace-registry.snapshot.json
~/.codex/codex-workstation-sync-dashboard.snapshot.json
~/.codex/codex-start-here.snapshot.json
~/.codex/CODEX-START-HERE.md
```

Readback:

| Metric | Value |
|--------|------:|
| `registry_ready` | `3` |
| `registry_blocked` | `8` |
| `latest_dev_on_gitea` | `3` |
| `production_on_gitea` | `8` |
| `owner_preflight_ready` | `0` |
| `owner_preflight_blocked` | `2` |
| `artifact_sync_synced` | `1` |
| `artifact_sync_blocked` | `1` |

`can_start_awoooi_controlled_dev=True` and `can_start_all_products_dev=False` remain correct. Raw history sync remains `False`.

## 11. 2026-06-24 12:55 MacBook Pro MOMO Pro workspace readback

MacBook Pro host `192.168.0.111` is reachable over SSH as `ooo`.

| Product | MacBook Pro workspace | Branch | Commit | Dirty | Result |
|---------|-----------------------|--------|--------|------:|--------|
| MOMO Pro | `/Users/ooo/codex-workspaces/momo-pro-dev` | `dev` | `76a89a70986b7428704a12ffbb7180f159db151f` | `0` | ready |
| AwoooGo | `/Users/ooo/codex-workspaces/awooogo-dev` | `dev` | `8471b376d97c1436d4612ece17f51ba0950f114d` | `0` | ready |

MOMO Pro workspace was cloned from Gitea `dev` on the MacBook Pro. Readback found only `.env.example`; no `.env` or runtime volume was copied.

MacBook Pro can now open Codex against MOMO Pro via:

```bash
cd /Users/ooo/codex-workspaces/momo-pro-dev
git checkout -b codex/<task-slug>
```

Do not edit `dev` directly. AwoooGo is now verified on MacBook Pro via Gitea SSH; new Codex work must start from `/Users/ooo/codex-workspaces/awooogo-dev` and branch into `codex/*`.

## 12. 2026-06-24 13:33 MacBook Pro AwoooGo workspace closeout

Machine-readable snapshot:

```text
docs/operations/codex-macbook-awooogo-access-readback.snapshot.json
```

Readback:

| Gate | Result |
|------|--------|
| MacBook Gitea SSH auth | key name `MacBook Pro Codex 20260624` accepted by Gitea |
| AwoooGo `dev` ref | `8471b376d97c1436d4612ece17f51ba0950f114d` |
| AwoooGo `main` ref | `18be716e8578eaeefb1e31f9a2a2f467ca33b12a` |
| MacBook workspace | `/Users/ooo/codex-workspaces/awooogo-dev` |
| Branch / upstream / dirty | `dev` / `gitea/dev` / `0` |
| Safe handoff artifact hash match | `9/9` |

MacBook project-window sync now has `projects=6`, `ready=3`, `blocked=3`. Ready projects are AWOOOI, MOMO Pro, and AwoooGo. Blocked projects are still 2026FIFA main-review, Agent Bounty main-review, and AWOOOI main. This closes the AwoooGo MacBook auth blocker but does not change all-product readiness: registry remains `ready=3`, `blocked=8`.
