Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 12 additions & 0 deletions FOUNDER-TLDR.md
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,18 @@ coming next. Newest updates are at the top.

---

## 2026-06-14 — Plain English everywhere: the legal codes are gone from what you read

**What changed.** We stripped the law-and-statute jargon out of everything you actually *read* in a Switzerland plan. No more "Art. 30 para. 1 let. b FNIA" or "Arts. 42-44" tucked inside the sentences — the steps, titles, summaries and warnings now say it in plain English ("this is a decision the canton makes at its discretion — you have no automatic right" instead of an article number). The official law sources did **not** disappear: they're moved into a "Sources & legal notes" dropdown on each step, so "Verified against official sources" still holds. We kept the real legal meaning exactly — whether something is your *right* or the authorities' *discretion* — only the code-numbers are gone.

**Why it matters.** Article numbers make an anxious person feel they need a lawyer just to read the page. Plain language they can act on builds confidence — while the precise sources stay one tap away for anyone (including a lawyer) who wants to check.

**What you'd notice today.** Plan steps read like plain advice; the legal citations now live behind a "Sources & legal notes" dropdown. (Switzerland route for now; the other countries to follow. Review copy — **not live**.)

**What's next.** The same plain-language pass on the other 7 country guides.

---

## 2026-06-14 — Your move now reads as a visible journey, not a flat to-do list

**What changed.** The little "Your journey" list in the side panel is now a real **path you can see** — your steps strung along a line like stops on a route, grouped into clear stages ("Before you go", "Your permit", "After you arrive", "Settling in"). Each stop shows whether it's done (a tick), the one you're on (highlighted), open, or still locked. Locked stops now say *exactly* what unlocks them ("Unlocks after: register your address") instead of a blank padlock — and you can still read everything inside a locked step; you just can't tick it off until the step before it is done. Every step that needs documents shows a thin "gather-your-papers" bar that fills as you check them off (on the path and on the step itself). When you pick your reason for moving, we confirm in one line what that does to your plan. Returning visitors get a calm "Welcome back — you left off at…" note, and finishing a whole stage gives a quiet "you've finished Your permit" pat on the back. Crucially, **none of this is made up**: every tick, bar, and message just mirrors what you've actually done — no streaks, no countdowns, no points, and nothing that sounds like an official approval.
Expand Down
2 changes: 1 addition & 1 deletion ROADMAP.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@
>
> Legend: ✅ done · 🚧 in progress · ⏳ planned · 🔁 ongoing · 🗓️ backlog

Last updated: 2026-06-14 (Interactive "journey map" + pure-state gamification (design-research-led; builds on the calmer-UI branch; stacked on it): the flat "Your journey" sidebar list is now a connected, chapter-grouped VISUAL PATH (chapters from an authored category→chapter map in `src/utils/journeyChapters.ts`: Before you go / Your permit / After you arrive / Settling in), each node carrying its real state (done/available/current/locked) from `statusFor()` + a per-node document meter from `docProgress()`; available nodes are clickable, LOCKED nodes stay readable (only Mark-done gated) and show the SPECIFIC "Unlocks after: …" prerequisite from `dependsOn`. Plus a per-task document meter on the card, an instant motivation micro-confirmation, a non-punitive "Welcome back" continuity line, and per-chapter milestone notes extending the existing momentum toast. Everything is a pure projection of existing state — NO dark patterns (no streaks/countdowns/points/false-approval), enforced by a unit test (`tests/journeyChapters.test.ts`) that BANS outcome/approval words in chapter copy. Disclaimer modal gate + provenance + Impressum + Russia/route-not-covered notices untouched; prefers-reduced-motion respected; keyboard-accessible nodes. Verified: astro check 0 / build+gate (15 pages) / 281 tests; a11y PASS (WCAG 2.2 AA audited); trust/dark-pattern review PASS. Deferred: endowed head-start pre-credit, wizard auto-advance, interactive canton map (needs sourced boundary geometry). Calmer/encouraging UI overhaul (design-research-led; pending human-lawyer sign-off): removed the gold "not legal advice" banner everywhere; after the intake a REQUIRED disclaimer modal gate (role=dialog, focus-trapped, no bypass, compliance-owned wording single-sourced in `src/utils/disclaimer.ts`, acked in localStorage `rg-disclaimer-ack-v1`) must be confirmed before the plan renders — also gates shared-link opens; task cards re-sequenced action-first (tldr→steps→documents) with key facts/legal citations/detail behind one "Reference" fold and the caveats consolidated into one "Sources & legal notes" fold (a short "not legal advice" line stays always-visible per card per compliance); plain-language intake options (dropped L/B/C permit codes & "concubinage"); stable phase-based progress ("Your route→situation→details") with progressbar a11y; warm all-breakpoint intro; quiet per-step momentum + calmer document gate. Disclaimer still in the modal + footer (every page) + per-card + Impressum + no-JS guide. Compliance verdict: CONDITIONAL — the modal-acknowledgement posture (vs a persistent banner) needs human-lawyer sign-off before merge; astro check 0 / build+gate / 277 tests green; a11y reviewed (modal focus-trap OK). Cantonal fee/timeline transparency: 12 us-ch steps that have no single federal fee/processing-time figure (the employer-sponsored work permit, the family-reunification routes, the retirement permit, the study permits/sub-steps) now show a user-facing "Fees & processing time" note that these are set by the canton — or, for study admission, the institution — and to confirm locally; driven by a presentation-only `localCostTimeline` task hint (no invented numbers, no new sourced claims, ADR-0007/ADR-0021), plus a "varies by canton" caveat now always shown in the "Your canton" panel. Canton-aware plan-step links: the six "apply at / contact your cantonal authority of the canton where you live/study" steps (family reunification ×3, unmarried-partner concubinage, retirement, study) now deep-link the user's *selected* canton's own migration office (ZH Migrationsamt, GE OCPM, VD SPOP, ZG, BS) instead of the federal SEM directory of all 26 — falling back to that directory for not-yet-sourced cantons, so no dead ends. A `StepLinkSchema.cantonOffice` rendering hint (asserts no fact, no provenance) drives a frontend-only swap to the already-VERIFIED canton migrationOffice claim; static SSR full-guide stays federal (can't know the canton). Build/gate/`astro check`/277 tests green; fact-verifier (accurate, no overreach) + provenance-integrity verified; ADR-0021. Outbound links: the written-guide's 109 external source links now open in a new tab (target=_blank + rel=noopener noreferrer), matching the planner — readers don't lose their place. Plan UI: the desktop plan sidebar (progress / answers / journey) is now collapsible (Hide/Show), giving the task panel full width; mobile already had this. Canton dimension for Switzerland (ADR-0021): corridor-embedded `cantons` schema + provenance gate; CH-only "which canton?" intake step (searchable combobox over 26 cantons, optional) + `cn` share-param + "Your canton" plan panel with a verified SEM-directory fallback; per-canton sourced detail for ZH/GE/VD/ZG/BS in the two-agent pipeline. Earlier: Link audit: all 950 source links render-checked — 147 good, 23 Fedlex "under preparation" links flagged + the us-ch fix applied (79 occurrences → static-HTML, independently fact-verifier re-verified; re-audit now 0 suspect / 170 good). The weekly link-auditor now also checks anchor-reach — a `#article` link that loads but whose section never renders (SPA shell) goes RED on SPA domains (fedlex-class regressions); france-visas added to manual-check (403s the bot, fine for users). Live run: 0 errors / 142 URLs. Plan-personalisation correctness: "Who's joining you?" companion multi-select (partner/children/"It's just me") replaces the children yes/no; family/dependant steps gated to who is actually coming; full-guide route labels; cross-corridor plan-correctness regression suite — ADR-0020. UI/UX "Trust & Authority" design system adopted — audit fixes 1–10: AA-contrast CTAs, 44px touch targets, readable legal text, EB Garamond + Lato self-hosted fonts, brand tokens, consent-overlap fix, home/wizard trust framing, plus polish 11–13 (SVG icons, consistent focus rings, tighter line-length); ADR-0019. Earlier: 8 corridors published + intake availability dots, ADR-0018; source-snapshot cache, ADR-0017; corridor production via agent teams in two runs, ADR-0016; all-routes intake + launch waitlist, ADR-0015; launch-readiness drafts, og:image, dormant consent+analytics, ADR-0013; us-ch founder approval, ADR-0014; go-live blocked on domain + lawyer review)
Last updated: 2026-06-14 (Plain-language reading surface (founder mandate "no legal jargon"): all statute/act/article/SR-code citations (FNIA, ASEO, VZAE, OASA, "Art. 30 para. 1 let. b", "Arts. 42-44", SR 142.20, "concubinage") removed from us-ch's DEFAULT-VISIBLE prose (titles, summary/tldr, step text/tips, warnings, document descriptions) and rewritten in plain English — the entitlement-vs-discretion meaning preserved in substance; the law-named per-step source links moved into the collapsed "Sources & legal notes" fold (the actionable canton-office link stays inline); precise citations remain in keyFacts/detail/source links (the Reference/Sources folds), so provenance + "verified against official sources" hold. Two-agent: content-researcher rewrote → fact-verifier independently confirmed no jargon remains + meaning preserved + provenance untouched (VERIFICATION_LOG 2026-06-14); compliance PASS; astro check 0 / build+gate (15 pages) / 281 tests. Scope: us-ch; other 7 corridors' prose to follow. Interactive "journey map" + pure-state gamification (design-research-led; builds on the calmer-UI branch; stacked on it): the flat "Your journey" sidebar list is now a connected, chapter-grouped VISUAL PATH (chapters from an authored category→chapter map in `src/utils/journeyChapters.ts`: Before you go / Your permit / After you arrive / Settling in), each node carrying its real state (done/available/current/locked) from `statusFor()` + a per-node document meter from `docProgress()`; available nodes are clickable, LOCKED nodes stay readable (only Mark-done gated) and show the SPECIFIC "Unlocks after: …" prerequisite from `dependsOn`. Plus a per-task document meter on the card, an instant motivation micro-confirmation, a non-punitive "Welcome back" continuity line, and per-chapter milestone notes extending the existing momentum toast. Everything is a pure projection of existing state — NO dark patterns (no streaks/countdowns/points/false-approval), enforced by a unit test (`tests/journeyChapters.test.ts`) that BANS outcome/approval words in chapter copy. Disclaimer modal gate + provenance + Impressum + Russia/route-not-covered notices untouched; prefers-reduced-motion respected; keyboard-accessible nodes. Verified: astro check 0 / build+gate (15 pages) / 281 tests; a11y PASS (WCAG 2.2 AA audited); trust/dark-pattern review PASS. Deferred: endowed head-start pre-credit, wizard auto-advance, interactive canton map (needs sourced boundary geometry). Calmer/encouraging UI overhaul (design-research-led; pending human-lawyer sign-off): removed the gold "not legal advice" banner everywhere; after the intake a REQUIRED disclaimer modal gate (role=dialog, focus-trapped, no bypass, compliance-owned wording single-sourced in `src/utils/disclaimer.ts`, acked in localStorage `rg-disclaimer-ack-v1`) must be confirmed before the plan renders — also gates shared-link opens; task cards re-sequenced action-first (tldr→steps→documents) with key facts/legal citations/detail behind one "Reference" fold and the caveats consolidated into one "Sources & legal notes" fold (a short "not legal advice" line stays always-visible per card per compliance); plain-language intake options (dropped L/B/C permit codes & "concubinage"); stable phase-based progress ("Your route→situation→details") with progressbar a11y; warm all-breakpoint intro; quiet per-step momentum + calmer document gate. Disclaimer still in the modal + footer (every page) + per-card + Impressum + no-JS guide. Compliance verdict: CONDITIONAL — the modal-acknowledgement posture (vs a persistent banner) needs human-lawyer sign-off before merge; astro check 0 / build+gate / 277 tests green; a11y reviewed (modal focus-trap OK). Cantonal fee/timeline transparency: 12 us-ch steps that have no single federal fee/processing-time figure (the employer-sponsored work permit, the family-reunification routes, the retirement permit, the study permits/sub-steps) now show a user-facing "Fees & processing time" note that these are set by the canton — or, for study admission, the institution — and to confirm locally; driven by a presentation-only `localCostTimeline` task hint (no invented numbers, no new sourced claims, ADR-0007/ADR-0021), plus a "varies by canton" caveat now always shown in the "Your canton" panel. Canton-aware plan-step links: the six "apply at / contact your cantonal authority of the canton where you live/study" steps (family reunification ×3, unmarried-partner concubinage, retirement, study) now deep-link the user's *selected* canton's own migration office (ZH Migrationsamt, GE OCPM, VD SPOP, ZG, BS) instead of the federal SEM directory of all 26 — falling back to that directory for not-yet-sourced cantons, so no dead ends. A `StepLinkSchema.cantonOffice` rendering hint (asserts no fact, no provenance) drives a frontend-only swap to the already-VERIFIED canton migrationOffice claim; static SSR full-guide stays federal (can't know the canton). Build/gate/`astro check`/277 tests green; fact-verifier (accurate, no overreach) + provenance-integrity verified; ADR-0021. Outbound links: the written-guide's 109 external source links now open in a new tab (target=_blank + rel=noopener noreferrer), matching the planner — readers don't lose their place. Plan UI: the desktop plan sidebar (progress / answers / journey) is now collapsible (Hide/Show), giving the task panel full width; mobile already had this. Canton dimension for Switzerland (ADR-0021): corridor-embedded `cantons` schema + provenance gate; CH-only "which canton?" intake step (searchable combobox over 26 cantons, optional) + `cn` share-param + "Your canton" plan panel with a verified SEM-directory fallback; per-canton sourced detail for ZH/GE/VD/ZG/BS in the two-agent pipeline. Earlier: Link audit: all 950 source links render-checked — 147 good, 23 Fedlex "under preparation" links flagged + the us-ch fix applied (79 occurrences → static-HTML, independently fact-verifier re-verified; re-audit now 0 suspect / 170 good). The weekly link-auditor now also checks anchor-reach — a `#article` link that loads but whose section never renders (SPA shell) goes RED on SPA domains (fedlex-class regressions); france-visas added to manual-check (403s the bot, fine for users). Live run: 0 errors / 142 URLs. Plan-personalisation correctness: "Who's joining you?" companion multi-select (partner/children/"It's just me") replaces the children yes/no; family/dependant steps gated to who is actually coming; full-guide route labels; cross-corridor plan-correctness regression suite — ADR-0020. UI/UX "Trust & Authority" design system adopted — audit fixes 1–10: AA-contrast CTAs, 44px touch targets, readable legal text, EB Garamond + Lato self-hosted fonts, brand tokens, consent-overlap fix, home/wizard trust framing, plus polish 11–13 (SVG icons, consistent focus rings, tighter line-length); ADR-0019. Earlier: 8 corridors published + intake availability dots, ADR-0018; source-snapshot cache, ADR-0017; corridor production via agent teams in two runs, ADR-0016; all-routes intake + launch waitlist, ADR-0015; launch-readiness drafts, og:image, dormant consent+analytics, ADR-0013; us-ch founder approval, ADR-0014; go-live blocked on domain + lawyer review)

> **Current focus:** USA → Switzerland (`us-ch`) **only**, until it is perfected end-to-end.
> All other corridors are deferred (see DECISIONS.md **ADR-0006**). India → Germany (`in-de`)
Expand Down
12 changes: 12 additions & 0 deletions VERIFICATION_LOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -499,3 +499,15 @@ Scope: independent re-verification (two-agent rule; verifier did NOT draft these
| 2026-06-14 | us-ch | NOTE register at commune within 14 days (all 5 cantons) | fact-verifier (canton pipeline) | VERIFIED | https://www.ch.ch/en/housing/moving/notification-of-departure-and-registration/ | Server HTML (curl, HTTP 200) reads verbatim: "you are expected to register with your new commune of residence within 14 days of your move." WebFetch returned a soft-404 (caching artifact) — corroborated by prior 2026-06-09 run that read the same live content. Local register names (Einwohnerkontrolle / contrôle des habitants) are correct descriptive labels, not asserted by this federal source. |

**Run totals (us-ch canton pipeline, 2026-06-14):** 12 / 12 VERIFIED of 12 claim definitions (covering all 20 per-canton instances). 0 FLAGGED, 0 UNVERIFIED. No content drift; no sourceUrl correction needed (researcher's URL-resolution fixes all held). All claims general-fact → reviewBy 2026-09-12 (no fees/quotas/numeric rates asserted, so no 30-day window). Two caveats logged (FDFA does not name every canton; ch.ch label is the newer "change of address" title) — both non-blocking and carried in the discrepancy notes to the researcher.

---

### us-ch (USA → Switzerland) — plain-language rewrite 2026-06-14

Founder mandate "no legal jargon": the DEFAULT-VISIBLE prose of every us-ch task (title, summary/tldr, step text/tips, warnings, document descriptions) was rewritten by `content-researcher` to remove statute/act/article/code citations (FNIA, ASEO, VZAE, OASA, "Art. … para. … let. …", "Arts. 42-44", SR codes, "concubinage") while preserving the legal substance in plain English. No `sourceName`/`sourceUrl`/`status`/`lastVerified`/`verifiedBy`/`reviewBy`/`keyFacts`/`detail`/`cantons` were changed — the precise citations remain in the Reference/Sources folds and source links, so the prior source verifications stand and the build gate is unaffected.

Two-agent re-confirmation (writer ≠ verifier, separate sessions):

| date | corridor | claim | verifier | status | source | notes |
|---|---|---|---|---|---|---|
| 2026-06-14 | us-ch | Plain-language rewrite of all default-visible prose (15 tasks) — entitlement-vs-discretion register preserved | fact-verifier | VERIFIED | (no source change — re-confirmed against the unchanged 2026-06-12 verifications + each claim's own keyFacts/detail) | No statute jargon remains in the visible fields; meaning preserved with no overstatement (discretionary routes still read "may be granted / not a guaranteed right"; entitlement routes still read "a legal right"; the unmarried-partner "no automatic right" warning intact); provenance untouched. compliance-officer PASS (sources reachable in the fold; "verified against official sources" holds). |
Loading
Loading