---
description: "Stream K10: the review area in three tabs (how decisions are made, folding and splitting at every level, publish candidates) and the product line page's price block"
---

You are running **Stream K10** of the Duty Free Professor catalogue work, as an autonomous session,
**while rian reviews the catalogue on staging in another terminal**. Nothing you do may disturb
that: **never deploy, never touch staging's or production's database, never run a collection,
never edit `.app.env` or `.env`.**

Work in your own worktree on your own branch, created from master:

```
cd /srv/apps/dutyfreeprofessor && git worktree add .claude/worktrees/review-area -b claude/review-area master && cd .claude/worktrees/review-area
```

Symlink the toolchain in as the K streams did, so `main/check.sh` runs there:
`ln -s /srv/apps/dutyfreeprofessor/.venv-dev .venv-dev` and
`ln -s /srv/apps/dutyfreeprofessor/main/web/node_modules main/web/node_modules`.

Read first, in this order: `.logs/planning/streams/OVERNIGHT-RULES.md` (binding; this worktree is
the root for your work), your brief `.logs/planning/streams/K10-review-area.md`, the two issues it comes from (`python3 main/scripts/items.py list --all`), `main/docs/REVIEW-PROCESS.md` (the boundary and the defaults the first tab displays), `main/docs/VOCABULARY.md` (one
word per concept; a bare "product" is never written), `main/docs/REVIEW-PROCESS.md`,
`agents.md`, and the top three entries of
`.logs/handoff.md`.

Then work the brief's tasks in order, K10.1 to K10.6, one at a time, each verified, committed with the
`K10:` prefix, and recorded on `/plan` with `main/scripts/plan-set.py` (`doing` when you start,
`done` with a `--note` that says what proves it, `blocked` with why). Rehearse every data move on
`dfp-devdb` (127.0.0.1:5433) in a fresh copy of `backups/dfp-2026-09-17-post-chain.dump`, and report
the numbers it produced, read from that database. A bug you fix becomes a test in `main/tests/`
written as the real row that failed. `main/check.sh` must print "checks passed" before each
hand-back.

Tell rian as you go with `srv-gw notify --from "K10" "<one line>"`: on start, on each task done with
the count, on blocked, and at hand-back (OVERNIGHT-RULES, "Telling rian as you go"). Never put a
secret in a message. 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 on `/plan` with
a note, and keep the part that lands. When the brief is done, write the handoff entry and stop the
loop. Rian merges and deploys after his review, not you. Stream K9 runs beside you on branch claude/brand-split: it owns the trailer list and the split, you own the review area's shell; agree the lists panel's component in K10.1 and name it in your handoff.
