---
title: Carry-A100 — VWR system.md t2i_context demonym redesign V8+ / V9 bump (Q1-Q7 outline, untracked)
date: 2026-05-19+
status: outline draft (Codex Q0-light NEEDS_REVISION_NARROW_N1 흡수 + 1st narrow re-review NEEDS_REVISION_MINOR IMPORTANT 1/2/3 + MINOR 1 revision 완료; Codex 2nd narrow re-review pending; spec v1 drafting deferred until APPROVED_FOR_SPEC_V1_DRAFT)
purpose: Carry-A100 v1 Q1-Q7 outline — Option B-prime (v9 prompt-pack bump, system.md + rules_schema.json description-only narrow edit, carrier shape preserve) + W0.1 inventory verified + Codex N-1 incorporated. Not committed (untracked). Outline iter 1 + W0.1 narrow re-review 후 spec v1 drafting 진입.
w0_1_inventory_ref: docs/superpowers/specs/2026-05-19-carry-a100-w0-1-inventory.md (untracked)
---

# Carry-A100 Q1-Q7 outline (Option B-prime v1)

## Q1. Problem / Purpose

### Problem (live evidence, W0.1 §1+§2)
VWR latest `system.md:98-114` `t2i_context` section + `rules_schema.json:40` description 안 5 strict residue (R1-R5, catalog in Q6) 존재. Source line 인용은 W0.1 §1+§2 의 HISTORICAL AUDIT TRAIL marker block 참조 (본 outline 안 literal 재방출 회피).

- **system.md:102 primary target** = literal angle-bracket placeholder (R1) + full example form (R2) + Korean lead phrase (R3) + Korean middle clause (R4).
  - R1: post-Carry-D7d-1 fix-up 1 + post-Carry-A099 N-5 TEMPLATE ONLY 위반 risk (literal angle-bracket form outside marker blocks 재방출 금지).
  - R2: default-coerce hard-prime pattern (모든 인물 default 동일 demonym 강제).
  - R3: nationality + race/ethnicity 이중 축 conflation Korean phrase.
  - R4: single-region 시나리오 가정 강요 Korean phrase.
- **rules_schema.json:40 description** = schema description phrase (R5, residue class identical to R3 — Codex N-1 incorporation).
- prose+schema 양쪽 = LLM-attached producer surface, single-region demonym coercion + ethnicity-nationality conflation 강제 (audit 02 §11.1 A100 row + Area #7a v1 spec §1.4 line 73).

### Purpose
literal angle-bracket placeholder + 예시 form + single-region demonym coercion + ethnicity-nationality conflation Korean phrase 추상화하여 outlook/evidence-first scenario-agnostic policy wording 으로 lift; **`t2i_context: string` required carrier contract preserve + STEP_MANIFEST `schema_version=1` preserve**. v1 claim = partial (prose + schema description-only abstraction), structured SOT completion / field-shape migration claim X.

### v1 claim boundary
- ✅ Allowed: `t2i_context section examples and lead clauses were abstracted to remove single-region demonym coercion and literal angle-bracket placeholder, replaced with outlook/evidence-first scenario-agnostic policy wording; rules_schema.json description aligned with same concept; t2i_context carrier shape (type:string, required, additionalProperties false) and STEP_MANIFEST schema_version preserved.` (W0.1 §11)
- ❌ Forbidden: `t2i_context structured SOT complete` / `multi-cultural ethnic routing fixed end-to-end` / `field-shape migration complete` / `all VWR downstream demonym pollution fixed` (W0.1 §11 4 항목).

## Q2. Scope / Non-Scope

### In-scope (v1, Codex N-1 incorporation 정합)
- **Surface**: VWR prompt pack `prompts/_base/visual_world_rules/9.UTC_TIMESTAMP/` (new dir, Area #7c/#7d/Carry-A099 패턴 정합):
  - `system.md` — copied from v8 first, t2i_context section (line 98-114) narrow edit:
    - line 102 안 residue R1+R2 (Q6 catalog 참조) 완전 제거 (Codex Q0-light Q2 (a) verdict — underscore-escape variant도 live prompt 안 X)
    - line 102 안 residue R3+R4 (Q6 catalog 참조) abstract lift
    - 새 wording = outlook/evidence-first scenario-agnostic policy (Codex 권고 wording direction, References 참조)
    - director_notes prose section (line 57-84, Carry-A099 W1 anchor) 변경 0 preserve
    - 기타 line 98/100/101/103/104/106-110/112/114 변경 0 preserve
  - `rules_schema.json` — copied from v8 first, line 40 description-only narrow edit:
    - residue R5 (Q6 catalog 참조) abstract lift
    - Carrier shape preserve: `type: string`, required list (line 42), additionalProperties false (line 43)
    - 다른 field (rules / director_notes / era / region / source_language) description + shape 변경 0
- **Prompt-pack activation + STEP_MANIFEST verify** (Area #7a/#7c/Carry-A099 패턴 정합 — Codex IMPORTANT 3, scene_detail-style 4-point version sync 아님):
  - `STEP_MANIFEST['visual_world_rules']['schema_version']` = 1 preserve (shape unchanged, description-only edit).
  - active prompt-pack resolution via `get_effective_source("visual_world_rules", "system", db=None)` + `get_active_version("visual_world_rules", "rules_schema", db=None)` + `load_prompt` / `load_schema` (Carry-A099 N-3/N-5 lesson 정합: 모듈 active-version sanity check + 스키마 stem-specific file 존재성 분리).
  - `prompts/_base/visual_world_rules/9.UTC_TIMESTAMP/` = active source-path proof site (version starts with `"9."` + path contains `"/visual_world_rules/9."`).
- **A099 test compat narrow modification** (Codex IMPORTANT 1 의무, W0.1 §4.3 + §7 정합):
  - `backend/tests/integration/test_carry_a099_director_notes_abstraction.py` 안 `_v8_dir()` helper active resolution → historical explicit `prompts/_base/visual_world_rules/8.202605191102/` pin.
  - Docstring + class/test name rewording: "active v8 source-path proof" → "historical v8 closure anchor proof".
  - Gate 2 (rules_schema sha256 from v7) + Gate 6 (path starts with `"8."`) = historical preserve (active resolution 폐기). v9 active pack proof = 신규 Carry-A100 W2 test 가 소유.
- **Test cascade** (Area #7a inherited impact 0 + Carry-A099 narrow modification + Carry-A100 신규):
  - `test_visual_world_rules.py` preserve (rule_type enum strict 7 PASS, **A100 impact 0**).
  - `test_area_7a_no_drift.py` preserve (canary, **A100 impact 0**).
  - `test_area_7a_residue_gate.py` preserve (4 strict residue A047/A096/A097/A098, **A100 impact 0**).
  - `test_carry_a099_director_notes_abstraction.py` = **Carry-A100 v1 안 narrow modification 의무** (Codex IMPORTANT 1, W0.1 §4.3 정합 — active resolution → historical v8 pin).
- **Closure docs**: spec/plan/Area #7a/#7b/Carry-A099 refs + audit 02 line 311 A100 row + roadmap §5.7 + audit 02 §11.3/§13/§14.

### Out-of-scope (explicit non-claim)
- **`t2i_context` field carrier shape change**: `string required additionalProperties false` preserve (Codex N-1 명시).
- **Direct consumer rewrite** (8 file): `visual_context_helper.py` / `entity_steps.py` / `beat_shot_steps.py` / `detail_steps.py` / `outlook_steps.py` / `t2i_review.py` / `shot_staging.py` + test fixtures 변경 0 (prompt + schema description-only abstraction; W1 시 break 발견 시 narrow fix).
- **STEP_MANIFEST schema_version bump**: schema shape unchanged → version=1 preserve.
- **Carry-A099 v1 closure boundary** (director_notes prose redesign V8): t2i_context section out-of-scope preserve, director_notes section (line 57-84) 변경 0.
- **Area #7a v1 closure boundary** (A047/A096/A097/A098 처리 완료).
- **Area #7b v1 closure boundary** (VWR downstream prompt cascade 11-site).
- **Area #7c v1 closure boundary** (t2i_review v6→v7 placeholder example abstraction; `Asian/Korean` t2i_review downstream cleanup = cross-cut X).
- **Area #7d v1 closure boundary** (cinematography closed-list SOT dual-site).
- **Carry-D7d-1 v1 closure boundary** (scene_detail v28).
- **Carry-P021** (scene_consistency 7 enumeration broad) — 별도 carry.
- **Field-shape migration** (structured `t2i_context: {default_demographic_policy, tone, genre}` etc.) = major carry (Carry-A100-structured 또는 future area).
- **`Asian/Korean` downstream prompt cleanup**: Area #7c 안 처리 완료 (cross-cut X, W0.1 §2 Area #7a spec line 418 정합).
- **VLM / live LLM / semantic regex / standalone-token residue gates** — 모두 ban.
- **Standalone global ban**: `demonym` / `nationality` / `ethnicity` / `국적` / `인종` single token global ban X (Codex 명시 Gate 2 refined full-phrase only).

## Q3. Design Decision

### Option B-prime (v9 prompt-pack bump, system.md + rules_schema.json description-only narrow edit) — v1 채택 (Codex N-1 incorporated)
- VWR `system.md:98-114` t2i_context section 안 line 102 추상화 (literal placeholder 완전 제거 + 예시 form 제거 + Korean phrase abstract lift + outlook/evidence-first wording).
- VWR `rules_schema.json:40` description-only narrow edit (Korean residue phrase abstract lift, carrier shape preserve).
- 추상화 후 prose+schema = scenario-agnostic policy wording only (단일 region 강제 X; outlook/character evidence 명시 case 만 반영 doctrine).
- LLM 에게 "t2i_context 작성 정책" 가이드는 유지하되, "예시 자체"는 abstract category description 으로 lift (literal angle-bracket placeholder + 예시 form 완전 제거; underscore escape도 live prompt 안 X).

### Option A reject (Codex Q0-light verdict 정합)
- v8 in-place edit = Carry-A099 closure anchor pushed evidence 흐림 + `test_carry_a099_director_notes_abstraction.py` 6 Gate retroactive risk. v1 외.

### Option B reject (Codex N-1 incorporation 정합)
- v9 prompt-pack 안 `rules_schema.json` byte-identical preserve = schema description residue (R5, line 40) 잔존 → Carry-A100 active producer-surface pollution claim 부정. N-1 reject.

### Option C reject (Codex Q0-light verdict 정합)
- Field-shape migration (`string` → `object {default_demographic_policy, tone, genre}` etc.) = schema shape change + STEP_MANIFEST schema_version bump + cp invalidation cascade + 8 direct reader rewrite + test cascade. = major carry / 별도 area follow-up (Future Carry-A100-structured). v1 외.
- Production consumer rewrite v1 = scope creep (W0.1 finds no direct break from description-only abstraction → consumer 변경 0).

### Schema description edit specificity
- **Anchor**: line 40 single-line description, exact wording change required.
- **Carrier preservation**: `type: string` (line 40 안 그대로) + required list membership (line 42) + additionalProperties false (line 43) — 3-point shape preserve.
- **Schema sha256**: byte change 인정 (description edit). Schema_version=1 preserve (shape unchanged 조건 정합, `_check_cp_mismatch` cp invalidation behavior 확인 — schema_version 변경 0 → cp_mismatch 처리 동작 변경 0, but sha256 변경 → 새 cp generation 시점 자동 새 schema 적용).

## Q4. Consumer Contract

### 8 direct t2i_context readers (W0.1 §3, v1 변경 0)
1. `visual_context_helper.py:90, 168` — `("T2I style context", vwr.get("t2i_context"))` + iter over `("era", "region", "t2i_context")`. bullet block formatter. v1 변경 0 (key/value 자체 preserve).
2. `entity_steps.py:723` — `t2i_ctx = vwr_data.get("t2i_context", "")`. entity step context preserve. v1 변경 0.
3. `beat_shot_steps.py:330-339` — shot_extract path inject (`_ctx = rules_cp["data"].get("t2i_context", "")` → Korean-labeled prefix). v1 변경 0 (mechanism preserve).
4. `detail_steps.py:1209-1210` — scene_detail reference (no direct format injection). v1 변경 0.
5. `outlook_steps.py:91` — outlook Phase 1/2 reference. v1 변경 0.
6. `t2i_review.py:68, 83, 88, 172, 179, 280, 295` — `{t2i_context}` format placeholder in Area #7c v7 scene_system.md / entity_system.md. v1 변경 0.
7. `shot_staging.py:84, 87` — `{t2i_context}` literal replace. v1 변경 0.
8. Test fixtures (`test_shot_staging_*.py` + `test_t2i_review_apply_scene_fixes.py`) — format mechanism 검증 (no semantic content). v1 변경 0.

### Broad VWR dependents (NOT direct t2i_context readers)
`scene_director` / `scene_verify` / `entity_relation` / `entity_all` / `entity_extractor_v2` / `shot_validator` / `shot_selection` / `shot_dependency` — `depends_on visual_world_rules` STEP_MANIFEST edge 또는 Area #7b canonical VWR clause reference 만. t2i_context field 직접 read X (W0.1 verified). Carry-A100 v1 변경 0.

### Important finding (Carry over)
- `t2i_context` 값 자체가 LLM-emit string → 본 v1 = upstream producer prompt + schema description abstraction 만. Downstream consumer 8 module 안 format placeholder / replace / inject mechanism 변경 0.
- Downstream consumer 안 `{t2i_context}` literal placeholder (`t2i_review.py:179/295` + `shot_staging.py:87`) = template variable substitution syntax, A100 literal angle-bracket placeholder doctrine 와 무관 (template variable = closed-world braces, 본 carry literal angle-bracket = open-world placeholder).

## Q5. Gate / Doctrine Contract

- **Gate 1 Semantic Regex Ban** ([[feedback_llm_based_judgment]]): no regex semantic classification / token-stripping in Carry-A100 v1 W1-W3. Residue verify = fixed-string `str.__contains__` 또는 `rg -F` membership only.
- **Gate 2 Prompt Closed-List Ban refined full-phrase only**: residue contract = exact 5-item full-phrase from `system.md:102` + `rules_schema.json:40` only. Standalone token global ban X (`demonym` / `nationality` / `ethnicity` / `국적` / `인종` 등 single token 사용 보존 — abstract category descriptor 안 자연 사용 OK, full-phrase residue 제거만; Codex 명시).
- **Gate 3 Structured SOT Required**: v1 = abstraction of existing free-text carrier + schema description (partial remediation). Structured SOT completion claim X (Future Carry-A100-structured).
- **Gate 4 No Silent Fallback**: `t2i_context` field shape `string required` preserve. `additionalProperties: false` preserve. 8 direct reader 안 empty `t2i_context` → omit / skip / empty-string pass-through 패턴 preserve.
- **NO VLM hard constraint** ([[feedback_no_vlm_dependency]]): VLM 의존 0, structured SOT + 5-item closed-world residue catalog 만.
- **No live LLM**: W2 test 안 live LLM 호출 X (no_drift/residue_gate pattern 정합).
- **TEMPLATE ONLY + post-Carry-D7d-1 fix-up 1 강화 + post-Carry-A099 N-5 narrow** (`never re-emit literal angle-bracketed forms outside marker blocks`): literal angle-bracket placeholder (R1 in Q6) 재방출 금지 outside formal marker blocks. underscore-escape variant도 live prompt 안 X (Codex Q0-light Q2 (a) verdict). Inventory/outline/spec/plan/audit/closure docs 안 historical 인용 시 explicit `<!-- HISTORICAL AUDIT TRAIL — BEGIN/END -->` marker block delimiter 의무 (backtick alone ≠ formal marker block per Codex). Spec/plan/test code 안 strict residue constant = marker-wrapped section 안에서만.
- **closed-world exact phrase membership only** (open-world semantic 판단 ban).

## Q6. Residue / Test Contract

### Strict residue list (Codex 명시 5-item, exact full-phrase from `system.md:102` + `rules_schema.json:40`)

W2 integrated test 안 v9 active prompt-pack producer surface (`system.md` + `rules_schema.json`) verify 의무 — historical v7/v8 packs / closure docs / audit memo / TEMPLATE ONLY marker-block site 검사 X.

<!-- HISTORICAL AUDIT TRAIL — BEGIN (5-item strict residue catalog; literal phrases below are historical residue exact strings for test-constant use only, not live prompt content) -->

| # | strict residue phrase | source line (v8 evidence anchor) | site to verify in v9 |
|---|---|---|---|
| R1 | ``<region-derived demonym>`` | v8 system.md:102 inside example | v9 system.md t2i_context section 안 hit 0 |
| R2 | ``All human characters are <region-derived demonym> unless stated otherwise.`` | v8 system.md:102 full example | v9 system.md t2i_context section 안 hit 0 |
| R3 | ``인물의 기본 국적/인종`` | v8 system.md:102 Korean lead | v9 system.md t2i_context section 안 hit 0 |
| R4 | ``시나리오의 region 에서 도출된 demonym`` | v8 system.md:102 Korean middle clause | v9 system.md t2i_context section 안 hit 0 |
| R5 | ``기본 국적/인종 + 색감/조명/질감 톤 + 장르 무드`` | v8 rules_schema.json:40 description phrase | v9 rules_schema.json description 안 hit 0 |

<!-- HISTORICAL AUDIT TRAIL — END -->

**Residue scope clarification**: 5 R-id 모두 full-phrase membership check (closed-world). Standalone word (`demonym` / `nationality` / `ethnicity` / `국적` / `인종` / `region`) global ban X — abstract category descriptor 안 자연 사용 보존 (Codex Gate 2 refined 정합).

### Expected test/gate (W2/W3 integrated test scope)
- **G1 Active prompt pack resolution**: VWR latest active version starts with `"9."` + path contains `"/visual_world_rules/9."` via `get_effective_source("visual_world_rules", "system", db=None)` + `get_active_version("visual_world_rules", "rules_schema", db=None)` (Carry-A099 N-3/N-5 lesson 정합).
- **G2 New v9 file count**: `prompts/_base/visual_world_rules/9.UTC_TIMESTAMP/` 안 file count = 2 (system.md + rules_schema.json).
- **G3 R1-R5 residue absence**: 5 R-id full-phrase membership hit 0 in v9 `system.md` (R1-R4) + `rules_schema.json` (R5).
- **G4 New abstract wording presence**: outline/spec 안 정해진 새 outlook/evidence-first wording hit ≥ 1 in v9 `system.md` + 새 schema description hit ≥ 1 in v9 `rules_schema.json` (spec drafting 시 정확 wording 정의).
- **G5 Carrier shape preserve**: `rules_schema.json` `t2i_context.type == "string"` + `additionalProperties: false` + `required` list 안 `t2i_context` 포함 (3-point shape check).
- **G6 STEP_MANIFEST schema_version preserve**: `STEP_MANIFEST['visual_world_rules']['schema_version'] == 1`.
- **G7 director_notes section preserve (Carry-A099 boundary canary)**: v9 `system.md` 안 line 57-84 director_notes section content = v8 director_notes section content (byte-equal substring check).

### Test anchor scope (W0.1 §4 정합 + Codex MINOR 1 분리)
- `backend/tests/test_visual_world_rules.py` (Area #7a W3a residue, 7 PASS preserve; t2i_context content 검증 X — **A100 impact 0**).
- `backend/tests/integration/test_area_7a_no_drift.py` (W3b canary 8 PASS preserve; t2i_context 검증 X — **A100 impact 0**).
- `backend/tests/integration/test_area_7a_residue_gate.py` (W3a 7 PASS preserve; t2i_context 검증 X — **A100 impact 0**).
- `backend/tests/integration/test_carry_a099_director_notes_abstraction.py` (Carry-A099 W2 6 Gate; director_notes section 검증 preserve) — **A100 v1 안 narrow modification 의무** (Codex IMPORTANT 1, W0.1 §4.3 정합: `_v8_dir()` active resolution → historical explicit v8 path pin, docstring rewording).
- `backend/tests/integration/test_carry_a100_t2i_context_demonym_abstraction.py` (신규 — wave plan 안 owner 결정).

## Q7. Wave / Closure Plan

### Wave split — Option α 4-wave (Codex IMPORTANT 1 preferred, "every committed state keeps known targeted tests green")

- **W1 A099 test-compat atomic** (1 commit):
  - Site: `backend/tests/integration/test_carry_a099_director_notes_abstraction.py` narrow modification.
    - `_v8_dir()` helper (line 39-44): `get_effective_source` active resolution → historical explicit `prompts/_base/visual_world_rules/8.202605191102/` pin.
    - Class/test docstring rewording: "active v8 source-path proof" → "historical v8 closure anchor proof" (test_gate_6 docstring 안 명시).
    - Gate 2 + Gate 6 안 active resolution 참조 → historical pin reference 로 sync.
  - Pre-commit gate: 6 PASS preserve (Carry-A099 W2 6 Gate 통과 유지).
  - Targeted pytest: `test_carry_a099_director_notes_abstraction.py` + Area #7a 3-test (impact 0 verify).
- **W2 v9 producer prompt-pack atomic** (1 commit):
  - Site: `prompts/_base/visual_world_rules/9.UTC_TIMESTAMP/` 신설.
    - `system.md`: copied from v8 first, t2i_context section (line 98-114) narrow edit per Q3.
    - `rules_schema.json`: copied from v8 first, line 40 description-only narrow edit per Q3.
  - Prompt-pack activation + STEP_MANIFEST verify (STEP_MANIFEST schema_version 1 preserve, active resolution via `get_effective_source` / `get_active_version`, latest VWR pack version starts with `"9."`).
  - Pre-commit gate: G1-G7 (active prompt-pack resolution + file count + residue + abstract wording + carrier shape + STEP_MANIFEST + director_notes section preserve) + 8 direct reader smoke (file load + parse + format/replace mechanism preserve).
  - Targeted pytest: A099 test (W1 historical pin 정합 후 6 PASS preserve) + Area #7a 3-test (impact 0 verify).
- **W3 A100 integrated test atomic** (1 commit):
  - 신규 test file `backend/tests/integration/test_carry_a100_t2i_context_demonym_abstraction.py`:
    - Gate 1 G1 active prompt pack resolution (version `"9."` proof)
    - Gate 2 G2 new v9 file count = 2
    - Gate 3 G3 R1-R5 residue absence (5 strict full-phrase)
    - Gate 4 G4 new abstract wording presence (system.md + schema description 양쪽)
    - Gate 5 G5 carrier shape preserve (3-point: type/required/additionalProperties)
    - Gate 6 G6 STEP_MANIFEST schema_version preserve
    - Gate 7 G7 director_notes section preserve (Carry-A099 boundary canary, v9 line 57-84 ≡ v8 line 57-84 byte-equal substring)
  - no live LLM + NO VLM + no regex semantic + no standalone token ban.
  - test count 목표 = 7 PASS (1 per Gate). Marker-wrapped strict residue constants only.
- **W4 closure docs atomic** (1 commit, range review + push gate):
  - Carry-A100 spec frontmatter status closed + §10/§11 closure section.
  - Carry-A100 plan first commit (drafting closure).
  - Roadmap §5.7 narrow append `Carry-A100 resolved by W1-W4 (Option B-prime: v9 prompt-pack bump, system.md + rules_schema.json description-only abstraction; structured emit / field-shape migration follow-up deferred)`.
  - Audit 02 §11.3/§13/§14 + line 311 A100 row narrow update.
  - Area #7a v1 spec §1.4 + §6 + §11.4 + §12.1 line 73/109/414/418/434 Carry-A100 status update.
  - Area #7b v1 spec §1.3 + §6.2 + §11.6 line 31/110/130/571/716 Carry-A100 status update.
  - Carry-A099 v1 spec carry table line entries Carry-A100 status update (after-Carry-A099 carry priority context).
  - W0.1 inventory memo + Q1-Q7 outline = untracked / not committed unless plan explicitly says so (Codex 권고 정합).
- **Codex iter expected**: spec quality iter 1+ + plan quality iter 1+ + W1 entry sanity + W1 per-wave + W2 entry sanity + W2 per-wave + W3 per-wave + W4 entry sanity + W4 per-wave + W1-W4 range review + push gate.

### Wave split — Option β 3-wave (conditional alternative, weaker)

- W1 v9 producer prompt-pack atomic (`9.UTC_TIMESTAMP/` 신설). Inherited A099 test 실행 X / claim X (W1 per-wave commit time known regression 상태).
- W2 test atomic — A099 test historical pin modification + 신규 A100 integrated test (single commit).
- W3 closure docs atomic.

**Option α 권고** (Codex IMPORTANT 1 verbatim: "every committed state to keep known targeted tests green"). Final wave 선택 = spec drafting 안 pin.

### W0.1 memo + Q1-Q7 outline commit decision
- W0.1 inventory memo (`docs/superpowers/specs/2026-05-19-carry-a100-w0-1-inventory.md`, untracked) — not committed; spec drafting 시 reference only.
- 본 Q1-Q7 outline (`docs/superpowers/specs/2026-05-19-carry-a100-q1-q7-outline.md`, untracked) — not committed; spec v1 drafting 시 reference + outline iter 1 review 후 spec 안 content lift.

### Forbidden closure claim (Q1 + Codex Q0-light verdict 정합)
- ❌ `t2i_context structured SOT complete`
- ❌ `multi-cultural ethnic routing fixed end-to-end`
- ❌ `field-shape migration complete`
- ❌ `all VWR downstream demonym pollution fixed`

## References

- **Codex Q0-light verdict**: `NEEDS_REVISION_NARROW_N1_THEN_PROCEED_TO_W0_INVENTORY_AND_Q1_Q7_OUTLINE`.
- **Codex N-1 incorporation**: rules_schema.json:40 description-only narrow edit in-scope (residue class identity with system.md:102); carrier shape preserve; STEP_MANIFEST schema_version=1 preserve; field-shape migration defer (Future Carry-A100-structured).
- **Codex Q0-light Q2 verdict**: option (a) — literal angle-bracket placeholder (R1 in Q6 catalog) + 예시 form (R2 in Q6 catalog) 완전 제거. underscore-escape variant 도 live prompt 안 X.
- **Codex recommended wording direction** (W0.1 §10):
  - System policy: ``인물의 시각적 인구학 단서는 시나리오와 인물별 outlook/character evidence에 명시된 경우만 반영하고, 단일 region 값을 모든 인물의 기본 정체성으로 강제하지 않는다.``
  - Schema description: ``T2I 프롬프트용 시각 스타일 요약 (영어 2~3문장, 인물별 시각적 인구학 단서가 명시된 경우의 반영 원칙 + 색감/조명/질감 톤 + 장르 무드. 구체적 지명/장소/건축양식 열거 금지)``
  - Final exact wording = spec v1 drafting 안 pinned.
- **W0.1 inventory memo**: `docs/superpowers/specs/2026-05-19-carry-a100-w0-1-inventory.md` (untracked).
- **Active VWR pack**: `prompts/_base/visual_world_rules/8.202605191102/` (2 file: system.md + rules_schema.json).
- **t2i_context section in system.md**: line 98-114 (primary target line 102).
- **`rules_schema.json` t2i_context shape**: `string` required additionalProperties false at line 40 + line 42 + line 43.
- **8 direct readers**: `visual_context_helper.py:90,168` + `entity_steps.py:723` + `beat_shot_steps.py:330-339` + `detail_steps.py:1209-1210` + `outlook_steps.py:91` + `t2i_review.py:68,83,88,172,179,280,295` + `shot_staging.py:84,87` + test fixtures.
- **Test anchors**: `test_visual_world_rules.py` + `test_area_7a_no_drift.py` + `test_area_7a_residue_gate.py` + `test_carry_a099_director_notes_abstraction.py`.
- **Area #7a v1 spec**: `docs/superpowers/specs/2026-05-18-area-7a-visual-world-rules-sot-v1-design.md:73, 109, 414, 418, 434` (Carry-A100 source 정의 + cross-cut X with Area #7c).
- **Area #7b v1 spec**: `docs/superpowers/specs/2026-05-19-area-7b-vwr-cascade-downstream-v1-design.md:31, 110, 130, 571, 716` (Carry-A100 boundary preserve).
- **Carry-A099 v1 spec**: `docs/superpowers/specs/2026-05-19-carry-a099-vwr-system-md-director-notes-prose-redesign-v1-design.md` (line 57-84 v8 anchor preserve).
- **Roadmap**: `docs/superpowers/specs/2026-05-16-track-b-semantic-debt-roadmap-design.md:387-390` (Track B §5.7).
- **Audit 02**: `docs/visual-reliability-audit/2026-05-14-semantic-string-routing-debt-audit/02-prompt-side-hygiene-audit.md:311` A100 row + §11.3/§13/§14 carry follow-up.
- **Pre-Carry-A100 closure**: [[session_20260519_carry_a099_v1_closure]] (origin/main HEAD `146401c`).
- **Memory references**: [[feedback_llm_based_judgment]] + [[feedback_no_vlm_dependency]] + [[feedback_codex_mcp_discussion_workflow]] + [[feedback_codex_mcp_claude_mcp_response_trigger]] + [[feedback_subagent_model_opus]] + [[feedback_push_no_user_ask]] + [[feedback_session_50pct_codex_close_check]] + [[feedback_session_reset_clear_not_exit]] + [[session_20260519_area_7a_v1_closure]] + [[session_20260519_area_7b_v1_closure]] + [[session_20260519_area_7c_v1_closure]] + [[session_20260519_area_7d_v1_closure]] + [[session_20260519_carry_d7d_1_v1_closure]] + [[session_20260519_carry_a099_v1_closure]] + [[next_session_carry_a100_q0_light]].
