diff --git a/.planning/STATE.md b/.planning/STATE.md
index 0603ab9..f12d7dc 100644
--- a/.planning/STATE.md
+++ b/.planning/STATE.md
@@ -4,7 +4,7 @@ milestone: v1.1
milestone_name: Usability and Templates
status: planning
stopped_at: Completed 06-template-frontend-and-workflow-replacement-02-PLAN.md
-last_updated: "2026-03-12T12:10:58.020Z"
+last_updated: "2026-03-12T12:13:58.556Z"
last_activity: 2026-03-12 — v1.1 roadmap created, Phases 5-8 defined
progress:
total_phases: 8
diff --git a/.planning/phases/06-template-frontend-and-workflow-replacement/06-VERIFICATION.md b/.planning/phases/06-template-frontend-and-workflow-replacement/06-VERIFICATION.md
new file mode 100644
index 0000000..f24a0de
--- /dev/null
+++ b/.planning/phases/06-template-frontend-and-workflow-replacement/06-VERIFICATION.md
@@ -0,0 +1,126 @@
+---
+phase: 06-template-frontend-and-workflow-replacement
+verified: 2026-03-12T12:30:00Z
+status: human_needed
+score: 13/13 must-haves verified
+re_verification: false
+human_verification:
+ - test: "Navigate to /template in a running app and verify the page loads with the add form and items table"
+ expected: "Template page shows category select (fixed/variable only), conditional amount input, empty state or sorted items table with up/down reorder buttons"
+ why_human: "Visual rendering and interactive behavior (add form, reorder, delete) cannot be verified programmatically"
+ - test: "On the Dashboard, click 'Create Budget' and verify the old manual form is gone"
+ expected: "A compact card appears with only a month input (), a currency input, and a 'Generate from Template' button — no name field, no date range, no carryover, no copy-from dropdown"
+ why_human: "Visual confirmation of removed fields and new form layout"
+ - test: "Select a month and click 'Generate from Template'; then try the same month again"
+ expected: "First attempt creates a budget and closes the form. Second attempt (409) silently refreshes the budget list and makes the existing budget selectable — no error thrown"
+ why_human: "End-to-end budget generation via live API and 409 conflict-handling UX"
+ - test: "Open any existing budget on the Dashboard and inspect Bills Tracker, Variable Expenses, and Debt Tracker rows"
+ expected: "Each item row shows a small outline badge with the tier label: Fixed, Variable, or One-off"
+ why_human: "Badge visibility depends on actual budget data with item_tier values returned by the backend"
+---
+
+# Phase 6: Template Frontend and Workflow Replacement — Verification Report
+
+**Phase Goal:** Users can manage their template on a dedicated page, navigate to any month and get a budget auto-generated from their template, and the old "copy from previous month" flow is gone
+**Verified:** 2026-03-12T12:30:00Z
+**Status:** human_needed
+**Re-verification:** No — initial verification
+
+## Goal Achievement
+
+### Observable Truths
+
+| # | Truth | Status | Evidence |
+|---|-------|--------|----------|
+| 1 | User can navigate to a Template page from the sidebar | VERIFIED | `AppLayout.tsx` L33: `{ path: '/template', label: t('nav.template'), icon: FileText }` in navItems array |
+| 2 | Template page shows current template items grouped by tier | VERIFIED | `TemplatePage.tsx` L154–218: table renders `sortedItems` with tier Badge per row; empty state shown when none |
+| 3 | User can add a new item (category + tier, one_off excluded) | VERIFIED | `TemplatePage.tsx` L121–124: tier Select only exposes `fixed` and `variable` SelectItems; `handleAdd` calls `addItem` |
+| 4 | User can remove an item from the template | VERIFIED | `TemplatePage.tsx` L206–212: Trash2 delete button calls `removeItem(item.id)` |
+| 5 | User can reorder template items via move-up/move-down | VERIFIED | `TemplatePage.tsx` L168–187: ArrowUp/ArrowDown buttons call `moveItem(item.id, 'up'/'down')`; first/last item disabled |
+| 6 | Clicking 'Create Budget' shows month picker, not old manual form | VERIFIED | `BudgetSetup.tsx` L16–60: only `month` (type="month") and `currency` inputs; no name/dates/carryover/copyFrom fields |
+| 7 | Budget auto-generated via POST /api/budgets/generate | VERIFIED | `BudgetSetup.tsx` L24: `await budgetsApi.generate({ month, currency })`; key link confirmed |
+| 8 | 409 conflict handled gracefully | VERIFIED | `BudgetSetup.tsx` L27–29: catches `ApiError` with `status === 409` and calls `onCreated()` |
+| 9 | Copy-from-previous is gone everywhere | VERIFIED | `grep copyFrom src/` returns zero matches; `budgets` object in `api.ts` has no `copyFrom` method |
+| 10 | Item tier badge in BillsTracker | VERIFIED | `BillsTracker.tsx` L82–84: Badge renders `t('template.{tier}')` from `item.item_tier` |
+| 11 | Item tier badge in VariableExpenses | VERIFIED | `VariableExpenses.tsx` L92–94: same Badge pattern as BillsTracker |
+| 12 | Item tier badge in DebtTracker | VERIFIED | `DebtTracker.tsx` L82–84: same Badge pattern as BillsTracker |
+| 13 | All UI text is i18n-translated (EN + DE) | VERIFIED | `en.json` and `de.json` both contain complete `template.*` and `budget.generate/month/generating` keys; `budget.copyFrom` and `budget.setup` absent from both files |
+
+**Score:** 13/13 truths verified
+
+### Required Artifacts
+
+| Artifact | Expected | Status | Details |
+|----------|----------|--------|---------|
+| `frontend/src/lib/api.ts` | Template API functions, `generate`, `ItemTier`, `item_tier` on BudgetItem | VERIFIED | `ItemTier` (L79), `BudgetItem.item_tier` (L87), `template` object (L153–165), `budgets.generate` (L138–139); no `copyFrom` |
+| `frontend/src/hooks/useTemplate.ts` | `useTemplate` hook with CRUD + reorder | VERIFIED | Exports `useTemplate`, all five operations (`addItem`, `removeItem`, `moveItem`, `updateItem`, `refetch`), correct reorder-swap logic |
+| `frontend/src/pages/TemplatePage.tsx` | Template management page | VERIFIED | Exports `TemplatePage`, substantive implementation with add form, items table, empty state, loading skeleton |
+| `frontend/src/components/AppLayout.tsx` | Sidebar nav item for `/template` | VERIFIED | L33 adds Template between Categories and Settings |
+| `frontend/src/App.tsx` | Route `/template` → `TemplatePage` | VERIFIED | L10 imports, L39 `} />` |
+| `frontend/src/components/BudgetSetup.tsx` | Month-picker budget creation | VERIFIED | Rewritten to month+currency+Generate only; calls `budgets.generate`; 409 handled |
+| `frontend/src/pages/DashboardPage.tsx` | Dashboard wired to BudgetSetup | VERIFIED | L6 imports `BudgetSetup`; L104 and L68 render it when `showCreate` is true |
+| `frontend/src/components/BillsTracker.tsx` | Badge with `item_tier` | VERIFIED | L10 imports `Badge`, L82–84 renders tier badge |
+| `frontend/src/components/VariableExpenses.tsx` | Badge with `item_tier` | VERIFIED | L11 imports `Badge`, L92–94 renders tier badge |
+| `frontend/src/components/DebtTracker.tsx` | Badge with `item_tier` | VERIFIED | L10 imports `Badge`, L82–84 renders tier badge |
+
+### Key Link Verification
+
+| From | To | Via | Status | Details |
+|------|----|-----|--------|---------|
+| `TemplatePage.tsx` | `/api/template` | `useTemplate` hook | WIRED | L12 imports `useTemplate`; L22 destructures and uses it |
+| `AppLayout.tsx` | `/template` | Link component in nav | WIRED | L33 navItem `path: '/template'`; Link rendered at L68 |
+| `App.tsx` | `TemplatePage` | Route element | WIRED | L10 import; L39 Route |
+| `BudgetSetup.tsx` | `/api/budgets/generate` | `budgets.generate` API call | WIRED | L7 imports `budgets as budgetsApi`; L24 calls `budgetsApi.generate(...)` |
+| `DashboardPage.tsx` | `BudgetSetup` | component import | WIRED | L6 import; L68 and L104 render `` |
+| `BillsTracker.tsx` | `Badge` | Badge rendering `item_tier` | WIRED | L10 import; L82 `` with `item.item_tier` |
+| `VariableExpenses.tsx` | `Badge` | Badge rendering `item_tier` | WIRED | L11 import; L92 `` with `item.item_tier` |
+| `DebtTracker.tsx` | `Badge` | Badge rendering `item_tier` | WIRED | L10 import; L82 `` with `item.item_tier` |
+
+### Requirements Coverage
+
+| Requirement | Source Plan | Description | Status | Evidence |
+|-------------|------------|-------------|--------|----------|
+| TMPL-05 | 06-01 | User can manage their template on a dedicated page — add, remove, reorder fixed and variable items | SATISFIED | `TemplatePage.tsx` with full CRUD; `useTemplate.ts` hook; sidebar nav; `/template` route all verified |
+| TMPL-03 | 06-02 | Navigating to a month with no budget auto-generates one from the user's template | SATISFIED | `BudgetSetup.tsx` calls `budgets.generate`; 409 handled; month picker replaces manual form |
+| TMPL-06 | 06-02 | The "copy from previous month" feature is replaced by template-based generation | SATISFIED | Zero `copyFrom` references in `src/`; `budgets.copyFrom` absent from `api.ts`; `budget.copyFrom` absent from both i18n files |
+
+No orphaned requirements — all three IDs declared in plan frontmatter are accounted for and match REQUIREMENTS.md entries.
+
+### Anti-Patterns Found
+
+| File | Line | Pattern | Severity | Impact |
+|------|------|---------|----------|--------|
+| `TemplatePage.tsx` | 97, 118, 131 | `placeholder=` attribute | Info | Legitimate HTML input placeholder text, not a code stub |
+
+No blockers. No warnings.
+
+### Human Verification Required
+
+#### 1. Template Page UI and Interactions
+
+**Test:** Start the app, navigate to `/template` via the sidebar, observe the page
+**Expected:** Page shows a violet/indigo gradient header titled "Monthly Template", an add form row with category select, tier select (Fixed/Variable only — no One-off option visible), and empty state or items table. Reorder arrows and delete buttons function correctly.
+**Why human:** Visual rendering and interactive state (form reset after add, disabled buttons, sort updates) cannot be confirmed from static analysis.
+
+#### 2. Budget Creation Flow Replacement
+
+**Test:** Go to Dashboard, click "Create Budget"
+**Expected:** A compact card appears showing only Month input (type="month"), Currency input, and a "Generate from Template" button. No name field, no start/end date inputs, no carryover input, no "Copy from previous" dropdown anywhere on the page.
+**Why human:** Confirming the absence of old form fields requires visual inspection.
+
+#### 3. Template-Based Budget Generation End-to-End
+
+**Test:** With template items added, select a new month and click "Generate from Template". Then click "Create Budget" again and select the same month.
+**Expected:** First click creates a budget and closes the form; the new budget appears in the selector. Second click (409) silently refreshes the list — no error thrown, existing budget becomes selectable.
+**Why human:** Requires live backend (Phase 5 generate endpoint) and real 409 response.
+
+#### 4. Item Tier Badges in Tracker Tables
+
+**Test:** Open a budget that has items, inspect Bills Tracker, Variable Expenses Summary, and Debt Tracker rows.
+**Expected:** Every item row shows a small outline badge (e.g., "Fixed", "Variable", "One-off") beside the category name, rendered in a subtle outline style that does not distract from amounts.
+**Why human:** Requires actual budget data with populated `item_tier` values returned by the backend.
+
+---
+
+_Verified: 2026-03-12T12:30:00Z_
+_Verifier: Claude (gsd-verifier)_