---
description: "Stream AW6: the launch plan (mosiah to live with times and expected output, the two environments after it, the environment line that hides the development surfaces on live, the launch marker that stops a second --replace-db, and the proposal double-check)"
---

You are running **Stream AW6** of the Duty Free Professor away run of 19 Sep 2026, as an autonomous
session. The design is in your brief; do not redesign it. Where the brief is silent, choose the
option that keeps live showing less and staging working as it does, and write the choice into the
plan document and your handoff.

**Start by checking your ground.** `pwd` must be
`/srv/apps/dutyfreeprofessor/.claude/worktrees/collectors-live-page-plan-8951e2` and `git branch
--show-current` must print `claude/collectors-live-page-plan-8951e2`; `git log --oneline -20` must
include `05941b4` or later. If any of these fails, stop and say so. `.venv-dev` and
`main/web/node_modules` are symlinks in this worktree; `main/check.sh` runs from it.

Read first, in this order: your brief `.logs/planning/streams/AW6-launch-plan.md`, the away plan
`.logs/planning/streams/AWAY-2026-09-19.md` (sections 1, 2 and 7 bind you; section 6 is what AW6.3
corrects), `.logs/planning/streams/OVERNIGHT-RULES.md`, `agents.md`, `brief.md`, then the docs the
tasks need: `main/docs/RUNBOOK.md` (Deploy, Production, Launch checklist, Backups and restore,
Staging refresh, Accounts), `main/docs/ACCOUNTS.md` (the route policy), `main/docs/CLIENT-SURFACES.md`,
`main/docs/ARCHITECTURE.md` (the request path), `main/docs/VOCABULARY.md` (the opening), the K7 brief
`.logs/planning/streams/K7-launch.md` and its handoff entry of 17 Sep, `deploy/production.sh`,
`deploy/launch-dump.sh`, `main/scripts/staging-refresh.py`, `main/app/services/access.py`,
`main/app/config.py`, `.logs/runs/window-2026-09-19b-sweep.md` and the last three entries of
`.logs/handoff.md` (AW5's hand-back names the sample-article command the plan cites).

**Then the loop.** Register the four tasks on `/plan` first, one line each:

```
python3 main/scripts/plan-set.py AW6.1 todo "Stream AW6" --add --stream AW6 --stream-title "AW6 · The launch plan" --session /stream-aw6 --title "The plan document: mosiah to live with times, and the two environments after it"
python3 main/scripts/plan-set.py AW6.2 todo "Stream AW6" --add --stream AW6 --title "The environment line: SITE_ROLE hides the development surfaces on live"
python3 main/scripts/plan-set.py AW6.3 todo "Stream AW6" --add --stream AW6 --title "The proposal double-check: every accepted quote line against what is built"
python3 main/scripts/plan-set.py AW6.4 todo "Stream AW6" --add --stream AW6 --title "The launch marker: --replace-db refuses after the launch unless forced"
```

Work AW6.1 to AW6.4 in order, one at a time. Mark each `doing` when you start
(`python3 main/scripts/plan-set.py AW6.1 doing "Stream AW6"`) and `done` with a note saying what
proves it when it is verified. `main/check.sh` must print "checks passed" before every commit; one
task, one commit, subject prefixed `AW6:`, a body saying what it prevents or what it cost. A bug you
find on the way becomes a test in `main/tests/` written as the real record that failed. Add a line
under `## Unreleased` in `main/CHANGELOG.md` for AW6.2 and AW6.4 (a person would notice both); do not
bump the version. Never write present state or a project name into `main/docs`; dated facts go in
the plan document under `.logs/planning`.

**Hard boundaries.** Nothing on production: you never run `deploy/production.sh` against `bwlive`,
never ssh there, never touch its Caddy or the zone; every production line is written for rian with
its expected output. You never deploy staging: the orchestrator deploys at D4 if AW6.2 lands in time.
You never edit `.env`, `.app.env` or `.bw-auth.env`, never print a secret, never run a collection or
a review pass, never write to staging's database. You never edit `tests/fixtures/open_routes.json`
(no storefront route moves), `docker-compose.yml`, `docker-compose.production.yml`,
`deploy/launch-dump.sh`, `staging-refresh.py`, `cli_refresh.py`, the collectors or identity code;
if a task needs one of those, write the exact change into the plan as rian's task and carry on.
Only the files your brief lists under Owns; another stream's file gets an issue on the running list
(`python3 main/scripts/items.py add --kind issue --owner <X> --by "Stream AW6" ...`), never an edit.

When you are blocked on something only rian can decide, do not stop: add it to the running list
(`python3 main/scripts/items.py add --kind decide --by "Stream AW6" --blocks AW6.<n> --weight
blocking|costly --title ... --detail ... --option ... --assumption ...`) with the assumption you are
proceeding under and what you would redo, then carry on with everything that does not depend on it.
Return each question in your hand-back marked critical or not critical.

Tell rian as you go with `srv-gw notify --from "AW6" "<one line>"`: on start (`AW6 starting: 4
tasks, the launch plan`), on each task done with the count (`AW6.2 done (2/4): SITE_ROLE hides the
development surfaces on live`), on blocked, and at hand-back. Never a secret, never a URL with a
token. If the command fails, note it in the handoff and carry on.

If a task turns out to need more than about three hours, split it, record the split with a note on
`/plan`, and keep the part that lands; for AW6.2 the brief says what to do instead (the exact change
written into the plan as rian's task). When the brief is done, prepend a handoff entry to
`.logs/handoff.md` (25 lines at most, state not summary): the plan document's path, whether AW6.2
and AW6.4 landed (so the orchestrator knows whether D4 carries them and that live needs
`SITE_ROLE=live` in its `.app.env`), the corrections made to the away plan's section 6, the
questions for rian with your assumptions, and "AW6 green and ready" or what remains. Then stop.

```
/goal Stream AW6 is complete: AW6.1 to AW6.4 are done on /plan, or blocked with a note saying why; .logs/planning/launch-plan-2026-09-19.md exists with the launch in rian's order with times and expected output, the two environments after it, the pages-by-environment table and the proposal double-check at its end; AWAY-2026-09-19.md section 6 is corrected where it was wrong; main/check.sh has printed "checks passed" on the final tree; every finished task has its own commit prefixed "AW6:"; the handoff entry is written; nothing was deployed, production was never contacted, no env file was edited, no collection and no pass was run. Or stop after 100 turns.
```
