- generic [active] [ref=e1]:
  - checkbox "Toggle sidebar ⌘B" [checked=mixed] [ref=e2]
  - navigation [ref=e3]:
    - list [ref=e4]:
      - generic "Toggle sidebar ⌘B" [ref=e5]
      - listitem [ref=e6]:
        - link "Roomfit v2 — Spec Map" [ref=e7] [cursor=pointer]:
          - /url: ./
    - generic [ref=e8]:
      - searchbox "Search" [ref=e9]
      - text: ⌘K
    - list [ref=e11]:
      - listitem [ref=e12]:
        - link "개요" [ref=e13] [cursor=pointer]:
          - /url: ./
      - listitem [ref=e14]:
        - link "화면" [ref=e15] [cursor=pointer]:
          - /url: ./screens
      - listitem [ref=e16]:
        - link "흐름" [ref=e17] [cursor=pointer]:
          - /url: ./flow
      - listitem [ref=e18]:
        - link "Use case" [ref=e19] [cursor=pointer]:
          - /url: ./use-cases
      - listitem [ref=e20]:
        - link "시나리오" [ref=e21] [cursor=pointer]:
          - /url: ./scenarios
      - listitem [ref=e22]:
        - link "데이터 흐름" [ref=e23] [cursor=pointer]:
          - /url: ./data-flow
  - generic [ref=e24]:
    - banner [ref=e25]: Roomfit v2 Spec — 자동 추출 + 수동 보강
    - complementary [ref=e26]:
      - navigation [ref=e27]:
        - generic [ref=e28]: Contents
        - list [ref=e29]:
          - listitem [ref=e30]:
            - link "화면 그래프" [ref=e31] [cursor=pointer]:
              - /url: "#-1"
          - listitem [ref=e32]:
            - link "미커버 transition (회귀 위험)" [ref=e33] [cursor=pointer]:
              - /url: "#transition"
          - listitem [ref=e34]:
            - link "트레이너 시나리오 reconstruct" [ref=e35] [cursor=pointer]:
              - /url: "#reconstruct"
          - listitem [ref=e36]:
            - link "모든 transition 표" [ref=e37] [cursor=pointer]:
              - /url: "#transition-1"
    - main [ref=e39]:
      - heading "흐름" [level=1] [ref=e40]:
        - link "흐름" [ref=e41] [cursor=pointer]:
          - /url: "#"
      - paragraph [ref=e42]:
        - text: 화면 → 화면 transition (Navigator.push 추출). 각 엣지 색이
        - strong [ref=e43]: 테스트 커버 여부
        - text: ":"
      - list [ref=e44]:
        - listitem [ref=e45]:
          - text: 🟢
          - strong [ref=e46]: 초록 실선
          - text: — 같은 시나리오에서 from·to 둘 다 등장 = 테스트가 이 흐름을 거침
        - listitem [ref=e47]:
          - text: 🔴
          - strong [ref=e48]: 빨강 점선
          - text: — production code 에 있지만 어떤 시나리오도 안 거침 = 회귀 위험 / spec 갭
      - generic [ref=e49]:
        - generic [ref=e50]:
          - generic [ref=e51]: App
          - generic [ref=e52]:
            - generic [ref=e53]:
              - radio "b2c" [ref=e54]
              - text: b2c
            - generic [ref=e55]:
              - radio "b2b" [checked] [ref=e56]
              - text: b2b
        - generic [ref=e57]:
          - generic [ref=e58]: dev 진입점 포함
          - checkbox "dev 진입점 포함" [checked] [ref=e59]
      - heading "화면 그래프" [level=2] [ref=e60]:
        - link "화면 그래프" [ref=e61] [cursor=pointer]:
          - /url: "#-1"
      - document [ref=e86]:
        - generic [ref=e88]:
          - generic [ref=e99]:
            - paragraph [ref=e105]: ⚠ 0
            - paragraph [ref=e111]: ⚠ 0
            - paragraph [ref=e117]: ⚠ 0
            - paragraph [ref=e123]: ⚠ 0
            - paragraph [ref=e129]: ⚠ 0
            - paragraph [ref=e135]: ⚠ 0
            - paragraph [ref=e141]: ⚠ 0
            - paragraph [ref=e147]: ⚠ 0
            - paragraph [ref=e153]: ⚠ 0
            - paragraph [ref=e159]: ⚠ 0
            - paragraph [ref=e165]: ⚠ 0
          - generic [ref=e166]:
            - paragraph [ref=e173]: ScanScreen
            - paragraph [ref=e180]: LogViewerScreen
            - paragraph [ref=e187]: DevHomeScreen
            - paragraph [ref=e194]: MainShellScreen
            - paragraph [ref=e201]: MemberDetailScreen
            - paragraph [ref=e208]: SupervisedWorkoutScreen
            - paragraph [ref=e215]: LiveWorkoutFlowScreen
            - paragraph [ref=e222]: ExerciseSelectScreen
            - paragraph [ref=e229]: SessionSummaryScreen
            - paragraph [ref=e236]: LiveWorkoutScreen
      - heading "미커버 transition (회귀 위험)" [level=2] [ref=e62]:
        - link "미커버 transition (회귀 위험)" [ref=e63] [cursor=pointer]:
          - /url: "#transition"
      - paragraph [ref=e64]: 테스트가 거치지 않는 production 흐름. 우선순위 1.
      - table [ref=e239]:
        - rowgroup [ref=e240]:
          - row "from to from_is_dev to_is_dev" [ref=e241]:
            - columnheader [ref=e242]:
              - checkbox [ref=e243]
            - columnheader "from" [ref=e244]: from
            - columnheader "to" [ref=e245]: to
            - columnheader "from_is_dev" [ref=e246]: from_is_dev
            - columnheader "to_is_dev" [ref=e247]: to_is_dev
        - rowgroup [ref=e248]:
          - row "ScanScreen LogViewerScreen false true" [ref=e249]:
            - cell [ref=e250]:
              - checkbox [ref=e251]
            - cell "ScanScreen" [ref=e252]
            - cell "LogViewerScreen" [ref=e253]
            - cell "false" [ref=e254]
            - cell "true" [ref=e255]
          - row "DevHomeScreen MainShellScreen true false" [ref=e256]:
            - cell [ref=e257]:
              - checkbox [ref=e258]
            - cell "DevHomeScreen" [ref=e259]
            - cell "MainShellScreen" [ref=e260]
            - cell "true" [ref=e261]
            - cell "false" [ref=e262]
          - row "MemberDetailScreen ScanScreen false false" [ref=e263]:
            - cell [ref=e264]:
              - checkbox [ref=e265]
            - cell "MemberDetailScreen" [ref=e266]
            - cell "ScanScreen" [ref=e267]
            - cell "false" [ref=e268]
            - cell "false" [ref=e269]
          - row "MemberDetailScreen SupervisedWorkoutScreen false false" [ref=e270]:
            - cell [ref=e271]:
              - checkbox [ref=e272]
            - cell "MemberDetailScreen" [ref=e273]
            - cell "SupervisedWorkoutScreen" [ref=e274]
            - cell "false" [ref=e275]
            - cell "false" [ref=e276]
          - row "LiveWorkoutFlowScreen ExerciseSelectScreen false false" [ref=e277]:
            - cell [ref=e278]:
              - checkbox [ref=e279]
            - cell "LiveWorkoutFlowScreen" [ref=e280]
            - cell "ExerciseSelectScreen" [ref=e281]
            - cell "false" [ref=e282]
            - cell "false" [ref=e283]
          - row "LiveWorkoutFlowScreen SessionSummaryScreen false false" [ref=e284]:
            - cell [ref=e285]:
              - checkbox [ref=e286]
            - cell "LiveWorkoutFlowScreen" [ref=e287]
            - cell "SessionSummaryScreen" [ref=e288]
            - cell "false" [ref=e289]
            - cell "false" [ref=e290]
          - row "LiveWorkoutFlowScreen LiveWorkoutScreen false false" [ref=e291]:
            - cell [ref=e292]:
              - checkbox [ref=e293]
            - cell "LiveWorkoutFlowScreen" [ref=e294]
            - cell "LiveWorkoutScreen" [ref=e295]
            - cell "false" [ref=e296]
            - cell "false" [ref=e297]
          - row "DevHomeScreen LiveWorkoutFlowScreen true false" [ref=e298]:
            - cell [ref=e299]:
              - checkbox [ref=e300]
            - cell "DevHomeScreen" [ref=e301]
            - cell "LiveWorkoutFlowScreen" [ref=e302]
            - cell "true" [ref=e303]
            - cell "false" [ref=e304]
          - row "DevHomeScreen ScanScreen true false" [ref=e305]:
            - cell [ref=e306]:
              - checkbox [ref=e307]
            - cell "DevHomeScreen" [ref=e308]
            - cell "ScanScreen" [ref=e309]
            - cell "true" [ref=e310]
            - cell "false" [ref=e311]
          - row "DevHomeScreen ExerciseSelectScreen true false" [ref=e312]:
            - cell [ref=e313]:
              - checkbox [ref=e314]
            - cell "DevHomeScreen" [ref=e315]
            - cell "ExerciseSelectScreen" [ref=e316]
            - cell "true" [ref=e317]
            - cell "false" [ref=e318]
          - row "MemberDetailScreen LiveWorkoutFlowScreen false false" [ref=e319]:
            - cell [ref=e320]:
              - checkbox [ref=e321]
            - cell "MemberDetailScreen" [ref=e322]
            - cell "LiveWorkoutFlowScreen" [ref=e323]
            - cell "false" [ref=e324]
            - cell "false" [ref=e325]
      - heading "트레이너 시나리오 reconstruct" [level=2] [ref=e65]:
        - link "트레이너 시나리오 reconstruct" [ref=e66] [cursor=pointer]:
          - /url: "#reconstruct"
      - paragraph [ref=e67]:
        - code [ref=e68]: MemberDetailScreen
        - text: 부터 시작하는 production path 두 갈래 (단일 testWidgets 가 아니라 코드 trace 로 합성).
      - document [ref=e328]:
        - generic [ref=e330]:
          - generic [ref=e337]:
            - paragraph [ref=e343]: 매뉴얼 기록
            - paragraph [ref=e349]: 운동 완료
            - paragraph [ref=e355]: BLE-live
            - paragraph [ref=e361]: 페어링 후 pushReplacement
            - paragraph [ref=e367]: Set N 시작
            - paragraph [ref=e373]: 세트 완료
            - paragraph [ref=e379]: 수업 종료
          - generic [ref=e380]:
            - paragraph [ref=e387]: LoginScreen
            - paragraph [ref=e394]: MainShellScreen
            - paragraph [ref=e401]: "[멤버 리스트]"
            - paragraph [ref=e408]: MemberDetailScreen
            - paragraph [ref=e415]: SupervisedWorkoutScreen
            - paragraph [ref=e422]: SessionSummaryScreen
            - paragraph [ref=e429]: ScanScreen
            - paragraph [ref=e436]: LiveWorkoutFlowScreen
            - paragraph [ref=e443]: ExerciseSelectScreen
            - paragraph [ref=e450]: SessionConsoleScreen
            - paragraph [ref=e457]: LiveWorkoutScreen
            - paragraph [ref=e464]: SessionSummaryScreen
      - blockquote [ref=e69]:
        - paragraph [ref=e70]:
          - strong [ref=e71]: 🟢 초록
          - text: =
          - code [ref=e72]: Supervised BLE-live flow
          - text: group의 testWidgets 가 커버. dev 진입점부터.
          - strong [ref=e73]: 🔴 빨강
          - text: = production path 인데 testWidgets 0건. 멤버 선택 단계 전체 + Stage1 매뉴얼 path.
      - heading "모든 transition 표" [level=2] [ref=e74]:
        - link "모든 transition 표" [ref=e75] [cursor=pointer]:
          - /url: "#transition-1"
      - table [ref=e467]:
        - rowgroup [ref=e468]:
          - row "from to covered is_dev_path" [ref=e469]:
            - columnheader [ref=e470]:
              - checkbox [ref=e471]
            - columnheader "from" [ref=e472]: from
            - columnheader "to" [ref=e473]: to
            - columnheader "covered" [ref=e474]: covered
            - columnheader "is_dev_path" [ref=e475]: is_dev_path
        - rowgroup [ref=e476]:
          - row "ScanScreen LogViewerScreen — dev" [ref=e477]:
            - cell [ref=e478]:
              - checkbox [ref=e479]
            - cell "ScanScreen" [ref=e480]
            - cell "LogViewerScreen" [ref=e481]
            - cell "—" [ref=e482]
            - cell "dev" [ref=e483]
          - row "DevHomeScreen MainShellScreen — dev" [ref=e484]:
            - cell [ref=e485]:
              - checkbox [ref=e486]
            - cell "DevHomeScreen" [ref=e487]
            - cell "MainShellScreen" [ref=e488]
            - cell "—" [ref=e489]
            - cell "dev" [ref=e490]
          - row "MemberDetailScreen ScanScreen —" [ref=e491]:
            - cell [ref=e492]:
              - checkbox [ref=e493]
            - cell "MemberDetailScreen" [ref=e494]
            - cell "ScanScreen" [ref=e495]
            - cell "—" [ref=e496]
            - cell [ref=e497]
          - row "MemberDetailScreen SupervisedWorkoutScreen —" [ref=e498]:
            - cell [ref=e499]:
              - checkbox [ref=e500]
            - cell "MemberDetailScreen" [ref=e501]
            - cell "SupervisedWorkoutScreen" [ref=e502]
            - cell "—" [ref=e503]
            - cell [ref=e504]
          - row "LiveWorkoutFlowScreen ExerciseSelectScreen —" [ref=e505]:
            - cell [ref=e506]:
              - checkbox [ref=e507]
            - cell "LiveWorkoutFlowScreen" [ref=e508]
            - cell "ExerciseSelectScreen" [ref=e509]
            - cell "—" [ref=e510]
            - cell [ref=e511]
          - row "LiveWorkoutFlowScreen SessionSummaryScreen —" [ref=e512]:
            - cell [ref=e513]:
              - checkbox [ref=e514]
            - cell "LiveWorkoutFlowScreen" [ref=e515]
            - cell "SessionSummaryScreen" [ref=e516]
            - cell "—" [ref=e517]
            - cell [ref=e518]
          - row "LiveWorkoutFlowScreen LiveWorkoutScreen —" [ref=e519]:
            - cell [ref=e520]:
              - checkbox [ref=e521]
            - cell "LiveWorkoutFlowScreen" [ref=e522]
            - cell "LiveWorkoutScreen" [ref=e523]
            - cell "—" [ref=e524]
            - cell [ref=e525]
          - row "DevHomeScreen LiveWorkoutFlowScreen — dev" [ref=e526]:
            - cell [ref=e527]:
              - checkbox [ref=e528]
            - cell "DevHomeScreen" [ref=e529]
            - cell "LiveWorkoutFlowScreen" [ref=e530]
            - cell "—" [ref=e531]
            - cell "dev" [ref=e532]
          - row "DevHomeScreen ScanScreen — dev" [ref=e533]:
            - cell [ref=e534]:
              - checkbox [ref=e535]
            - cell "DevHomeScreen" [ref=e536]
            - cell "ScanScreen" [ref=e537]
            - cell "—" [ref=e538]
            - cell "dev" [ref=e539]
          - row "DevHomeScreen ExerciseSelectScreen — dev" [ref=e540]:
            - cell [ref=e541]:
              - checkbox [ref=e542]
            - cell "DevHomeScreen" [ref=e543]
            - cell "ExerciseSelectScreen" [ref=e544]
            - cell "—" [ref=e545]
            - cell "dev" [ref=e546]
          - row "MemberDetailScreen LiveWorkoutFlowScreen —" [ref=e547]:
            - cell [ref=e548]:
              - checkbox [ref=e549]
            - cell "MemberDetailScreen" [ref=e550]
            - cell "LiveWorkoutFlowScreen" [ref=e551]
            - cell "—" [ref=e552]
            - cell [ref=e553]
    - contentinfo [ref=e76]:
      - navigation [ref=e77]:
        - link "Previous page 화면" [ref=e78] [cursor=pointer]:
          - /url: ./screens
          - text: Previous page
          - generic [ref=e79]: 화면
        - link "Next page Use case" [ref=e80] [cursor=pointer]:
          - /url: ./use-cases
          - text: Next page
          - generic [ref=e81]: Use case
      - generic [ref=e82]:
        - text: "Source: /Volumes/WorkSSD/Projects/RoomfitV2 · build via"
        - code [ref=e83]: make extract && npm run build