Phase — Public landing + console access UX (Thinking freeze)
Status: Reviewed → pass (LAC-r2). Thinking is spec-only; no landing HTML/CSS,
Path B chrome rewrite, README ship edits, or DNS changes land in this phase. The Landing +
access clarity Auto build ({step}b) is cleared to start mechanically against this frozen
contract. Do not reopen Q0 bind/auth casually. Do not claim the website executes tasks
or mints session/CSRF.
phase: LANDING-ACCESS-CLARITY
outputs:
- id: landing-access-clarity
path: docs/archive/phases/PHASE-LANDING-ACCESS-CLARITY.md
frozen: true
frozen_inputs:
- id: k12-landing
path: docs/archive/phases/PHASE-K12-TRACK-N-LANDING-CONTRACT.md
- id: landing-hosting
path: docs/landing/HOSTING.md
- id: q0-overseer-app
path: docs/archive/phases/PHASE-TRACK-Q-Q0-OVERSEER-APP.md
- id: q4a-ui-redesign
path: docs/archive/phases/PHASE-TRACK-Q-Q4A-UI-REDESIGN.md
- id: q3-release-installers
path: docs/archive/phases/PHASE-Q3-RELEASE-DESKTOP-INSTALLERS.md
- id: desktop-runbook
path: docs/TRACK-Q-DESKTOP-OPERATOR-RUNBOOK.md
- id: kit-spec-freeze
path: docs/OVERSEER-KIT-SPEC.md#6
- id: kit-boundary
path: AGENTS.md
- id: test-tiers
path: policy/test-tiers.yaml
- id: decision-tiers
path: policy/tiers.yaml
- id: roadmap
path: docs/ROADMAP.md
review_stamp:
reviewed_at: '2026-07-14T13:53:22Z'
verdict: pass
reviewer_mode: agent
reviewer_model: thinking-high
reviewer_provider: local
kit_version: 0.1.0
artifact_digest: sha256:c0ac8162b8d86959c6a01c2201f8e8aa32dfff8120335bbbee4c13882235068a
Downstream edge: the Landing + access clarity Auto build treats this document as ground
truth without re-deriving it (SPEC §6). K12 remains the historical Track N ship; this freeze
amends public IA / CTAs / HOSTING honesty for the pre-public gate. Q0 bind + Bearer/CSRF rules
stay closed except the narrow api/health additive in §LAC.6.3. Q4a/Q4b Structure diagrams
are the SVG source of truth for offline embeds.
Review record (§6.2): every freeze-review finding MUST cite file+line per SPEC §6; uncited
findings are invalid and are discarded. Fixes applied during the loop are Tier 1 (feature branch);
merge to main, DNS cutover, and live capability flips are Tier 3 and are never part of this loop.
| Round | Reviewer | Verdict | Resolution |
|---|---|---|---|
| LAC-r1 | Freeze-review (checklist + thinking, thinking-high) |
findings | R1-M1 Path 1 step underspecified: installed .dmg defaults repo_root to bundled kit unless OVERSEER_REPO_ROOT is set (no folder picker). R1-M2 Q0 api/health “liveness only” wording needs explicit amendment cite for repo_root. R1-M3 Primary CTA arch label must say Apple Silicon (aarch64) only. R1-C4 CLI blocked on releases/latest absolute-path false positive (leading slash). R1-N1 Auto must not invent GUI repo picker. No true escalation. |
| LAC-r1 fix | Author (cited items only) | — | R1-M1/N1 Path 1 + §LAC.7 bind honesty + rejection row. R1-M2 §LAC.6.3 Q0 health amendment. R1-M3 CTA labels. R1-C4 rephrased releases/latest. |
| LAC-r2 | Freeze-review (checklist + thinking, thinking-high) |
pass | CLI checklist gate clean (0 findings, dry-run). Semantic re-read confirmed R1 RESOLVED: IA §LAC.3 amends K12; offline SVG embed; Download href frozen to signed v0.1.0 .dmg; Paths 1–3 + Path B chrome; OVERSEER_REPO_ROOT honesty; narrow health repo_root only; domain apex static-only; pre-public DNS gate; rejection table; seven-tier §LAC.12; no security/irreversible/real_money/gates_tier3 escalation. Stamp written by ok review --freeze. |
§LAC.0 — Simple summary
Visitors need a professional front door that shows how Overseer Kit is structured at a glance,
and operators need an obvious way to open the local governance console. A signed Mac
installer now exists on GitHub Release v0.1.0; browser Path B still needs paste-from-terminal;
the public site must not pretend to be the live app.
This freeze locks: public landing information architecture + visual direction; offline
structure flowcharts on the main page; suite doors + Download / clone CTAs; a single
“Open the local console” playbook (README + landing + Path B Overview); Path B chrome clarity
(bound repo, collapse bootstrap, tab explainers, Status auto-refresh once); domain honesty for
overseerkit.com; seven-tier matrix + Definitions of Done for Auto and for “ready to point DNS.”
Technical summary: amend docs/landing/ contract beyond K12 §K12.2 section list; copy Q4b
SVGs under docs/landing/assets/diagrams/; wire primary CTA to the live signed .dmg; document
Python 3.11+; authorize one additive repo_root field on GET api/health for chrome honesty;
presentation-only Path B JS/HTML tweaks; extend landing validator + tests. Spec-only this phase.
§LAC.1 — Scope
In scope (freeze only — this phase writes no product code):
- Public site IA + visual direction (§LAC.3–§LAC.4).
- Structure flowchart embed rule (§LAC.5).
- Suite doors + CTA hierarchy (§LAC.6.1).
- Single console-access playbook Paths 1–3 (§LAC.6).
- Path B chrome UX clarity (§LAC.6.2–§LAC.6.4).
- Bound-repo honesty (§LAC.7).
- Domain / hosting map (§LAC.8).
- Pre-public DNS gate DoD (§LAC.9).
- Rejection table (§LAC.10).
- Auto deliverable file list (§LAC.11).
- Seven-tier test matrix (§LAC.12).
- Definitions of Done (§LAC.13–§LAC.14).
Out of scope (explicit non-goals):
- Reopening Q0 bind allowlist, CORS, peer check, Bearer + CSRF, cookie/
localStorageauth. - Public mint of
session_credential/csrf_token(website, API, or “magic link”). - Signup, OAuth, hosted task runner, chatbot runtime, website that “executes tasks.”
- Unsigned installer as primary Download CTA (smoke AppImages / unsigned builds).
- Claiming Windows/Linux signed installers exist until Release assets +
signing.status: signed. - Embedding Python in the installer (Q3-release Auto v1 honesty unchanged).
- Tier-3 DNS cutover, merge to
main, staging push, or live gate flips in Thinking. - Hosted governance dashboard redesign (
ok hosted-dashboardremains a different command). - LICENSE flip (Apache-2.0 stays; MIT needs separate K12 §K12.4 Thinking).
- Engine rewrite beyond the narrow
api/healthadditive in §LAC.6.3.
§LAC.2 — Verified baseline (do not invent)
| Fact | Evidence / rule |
|---|---|
| Mac signed installer published | GitHub Release v0.1.0 asset Overseer.Kit_0.1.0_aarch64.dmg; manifest signing method developer_id_notarized, signing.status: signed (operator-verified 2026-07-14) |
| Primary Download href (frozen for Auto v1) | https://github.com/aaronrene/overseer-kit/releases/download/v0.1.0/Overseer.Kit_0.1.0_aarch64.dmg |
| Releases index | https://github.com/aaronrene/overseer-kit/releases/tag/v0.1.0 (and GitHub releases/latest for “find current tag”) |
| Win/Linux | Unavailable as primary CTAs until secrets exist and a signed Release row ships |
| Host Python | Path C Auto v1 still requires Python 3.11+ on PATH |
| Path B today | ok app / ok app --open; paste credential + CSRF from that terminal; Q4b Overview/Structure shipped |
| Diagrams | tools/app/static/assets/diagrams/{lanes,regimes,layers,kit-consumer}.svg (Q4b) |
| Landing today | K12 static tree under docs/landing/ with DONE status table residue — Auto must strip public WIP/DONE/TODO chrome |
| Domain intent | overseerkit.com → static docs/landing/ only (HOSTING.md); not yet operator-wired |
§LAC.3 — Public site IA (frozen)
§LAC.3.1 — Section order (amends K12 §K12.2 for Auto)
Auto MUST update docs/landing/manifest.yaml + index.html so section ids match this order:
| # | Section id | Visitor job |
|---|---|---|
| 1 | hero |
Brand + one promise + primary/secondary CTAs |
| 2 | problem |
Why governance honesty matters (plain language) |
| 3 | structure |
Four offline structure flowcharts at a glance |
| 4 | layers |
L0→L3 stack in visitor language (no module jargon dump) |
| 5 | console-access |
Single “Open the local console” playbook (Paths 1–3) |
| 6 | suite-doors |
Suite doors (GitHub, MuseHub, Knowtation, Scooling, VideoFactory, Consumer pattern) |
| 7 | quickstart |
Clone / ok init secondary path |
| 8 | funnel |
GitHub → Kit layers → optional MuseHub |
| 9 | scenarios |
Link into scenario gallery (personas stay on /scenarios/) |
Removed from public main page (frozen): roadmap-public status table with DONE/TODO/WIP rows;
any “K9b DONE” style phase residue; links that imply the site is a live console.
Kept: scenario gallery A–E + badges (dogfood/reference/aspirational) on
scenarios/index.html (K12 §K12.3 unchanged). Footer may link SECURITY + LICENSE + HOSTING.
§LAC.3.2 — Hero copy (frozen intent)
| Element | Rule |
|---|---|
| Brand | 🆗 Overseer Kit — hero-level (not nav-only) |
| Promise | Governance + honesty for phased AI work — without amnesia, fake DONE, or silent drift |
| Subpromise | Portable patterns for any repo; product task runtimes live in sister projects |
| Primary CTA | Download Mac console (Apple Silicon) → frozen .dmg href (§LAC.2) |
| Secondary CTA | Clone / init on GitHub → https://github.com/aaronrene/overseer-kit |
| Tertiary | Scenarios · MuseHub · Knowtation (suite doors; not primary) |
Forbidden hero claims: “Run agents here”, “Sign up”, “Open live console on this domain”, “Windows/Linux download ready”, “No Python required”, “Pick any folder in the app” (no picker).
§LAC.3.3 — Visitor language (frozen)
Prefer: phases, living docs, checkpoints, independent review, local console.
Avoid on the main page: DONE/TODO/WIP status boards, freeze-contract digests, Tier jargon unless
a short glossary footnote is needed. Developer detail stays in linked docs.
§LAC.4 — Visual direction (frozen)
| Concern | Frozen choice |
|---|---|
| Medium | Static HTML + CSS only; no external script CDN; no analytics tags |
| Palette | Refine existing Track N tokens (docs/landing/assets/style.css): dark surface, green accent, clear hierarchy — professional explainer, not a neon “AI dashboard” |
| Type | System / UI stack OK; larger display scale for brand + H1; readable body ≥16px |
| Layout | One composition in the first viewport: brand, one headline, one short support line, CTA group — then diagrams |
| Diagrams | Offline SVG embeds; captions + text fallbacks (same accessibility rule as Q4a §Q4A.6.5) |
| Cards | Allowed only for suite-door / persona interaction blocks — not in the hero |
| Motion | Optional subtle CSS only; no JS animation framework |
| Residue strip | Auto MUST remove public DONE/TODO/WIP tables and “dev residue” from main landing |
§LAC.5 — Structure flowcharts (frozen)
§LAC.5.1 — Assets
Auto MUST copy (byte-stable or regenerated-from-same mermaid as Q4a §Q4A.6) into:
| Landing path | Source |
|---|---|
docs/landing/assets/diagrams/lanes.svg |
tools/app/static/assets/diagrams/lanes.svg |
docs/landing/assets/diagrams/regimes.svg |
tools/app/static/assets/diagrams/regimes.svg |
docs/landing/assets/diagrams/layers.svg |
tools/app/static/assets/diagrams/layers.svg |
docs/landing/assets/diagrams/kit-consumer.svg |
tools/app/static/assets/diagrams/kit-consumer.svg |
Offline rule: no runtime Mermaid CDN. Captions match Q4a §Q4A.6.1–§Q4A.6.4 intent (±10% wording).
§LAC.5.2 — Placement
All four diagrams appear in section structure on the main landing page (at-a-glance).
Scenario pages may keep ASCII/diagram snippets; they are not required to duplicate the SVG gallery.
§LAC.6 — Console access playbook (frozen)
Canonical title everywhere: Open the local console.
Map to existing Track Q Path letters (do not erase A/B/C runbook language):
| Playbook | Track Q letter | Who |
|---|---|---|
| Path 1 | Path C signed installer | Operators who want a native window (preferred when Mac Release exists) |
| Path 2 | Path B browser | Developers with Python + kit/consumer checkout |
| Path 3 | Path C build-from-source | Contributors developing the desktop shell |
§LAC.6.1 — Path steps (exact intent)
Path 1 — Download Mac console (preferred for operators on Apple Silicon)
- Confirm Python 3.11+ on the host (
python3 --version). - Download the signed Apple Silicon (
aarch64).dmgfrom the frozen Release asset href (§LAC.2). - Optionally verify
SHA256SUMS.txt+ manifestsigning.status: signed(runbook steps). - Bind a governed checkout before launch: set
OVERSEER_REPO_ROOTto the absolute path of the consumer (or kit) repo that already has.overseer/fromok init.
Default without that env var: the desktop launcher bindsrepo_rootto the bundled kit root inside the app resources (desktop/src-tauri/src/launcher.rsresolve_repo_root) — useful for dogfooding the kit itself, not an automatic “pick my project” folder dialog. - Open the app; desktop shell auto-fills session bootstrap (same as Path 3 auto-fill).
- Confirm the chrome shows the expected bound path (§LAC.6.3) before any write action.
Honesty line (must appear near CTA): Apple Silicon (aarch64) Mac · signed+notarized · requires
Python 3.11+. Set OVERSEER_REPO_ROOT to your governed repo. Windows/Linux signed installers are
not published yet. No in-app folder picker in Auto v1.
Rejected for this Auto: inventing a GUI repo-folder picker or changing launcher bind defaults without a dedicated Thinking freeze.
Path 2 — Browser (ok app)
- From a governed repo (
.overseer/present):ok app --open(orok appthen open the printed URL). - In the same terminal that started the server, copy
session_credentialandcsrf_token. - Paste into Session bootstrap → Connect.
- Credentials are process-lifetime only; never commit them; website never mints them.
Path 3 — Dev desktop
- From kit root:
./scripts/bundle-desktop-kit.shthencd desktop && npm install && npm run tauri dev. - Same auto-fill behavior as Path 1 install; still needs Python 3.11+ + Rust/Node for dev builds.
§LAC.6.2 — Surfaces that MUST carry the playbook
| Surface | Requirement |
|---|---|
README.md |
Dedicated short section “Open the local console” with Paths 1–3 + Python honesty |
docs/landing/index.html #console-access |
Same three paths; primary visual weight on Path 1 when Mac asset exists |
Path B Overview (tools/app/static/) |
Compact Paths 1–3 + bound-repo honesty; link to GitHub Releases for Download |
docs/TRACK-Q-DESKTOP-OPERATOR-RUNBOOK.md |
Align §Release vs dev with live Mac Release; keep Win/Linux honest |
docs/landing/HOSTING.md |
Domain map + “site does not mint CSRF / does not run console” |
Copy MUST be consistent across surfaces (same path names and order). Wording may tighten ±10%.
§LAC.6.3 — Path B chrome UX (frozen for Auto)
| Behavior | Rule |
|---|---|
| After Connect succeeds | Collapse or hide #auth-panel Session bootstrap (may keep a small “Reconnect / new session” control) |
| Bound repo | Show absolute bound checkout path in chrome (header or Overview) from GET api/health → result.repo_root |
| Overview tabs | Plain-language one-liner for each tab (Status, Roadmap, Handover, Gates, Actions, Ledger, Structure) |
| Status enter | Auto-refresh once when the Status tab is activated (manual Refresh remains) |
| Auth | Still in-memory only; no cookies/localStorage (Q0 §Q0.6) |
Narrow Q0 additive (authorized here only):
Amends Q0 §Q0.7 health result (docs/archive/phases/PHASE-TRACK-Q-Q0-OVERSEER-APP.md success result for
GET api/health) from { status, port, bind } to:
{ "status": "ok", "port": <int>, "bind": "<literal>", "repo_root": "<absolute path>" }
| Rule | Detail |
|---|---|
| Meaning | Absolute filesystem path of the bound checkout this process mutates (§LAC.7) |
| Auth | Still requires Bearer session credential (Q0 §Q0.6); not anonymous |
| Secrets | Path is local workspace location, not a credential; still must not appear in public HTML |
| Non-goals | Does not reopen bind allowlist, CORS, CSRF, cookies, or any other api/* schema |
| Server touch | Pass config.repo_root into handle_health only; no engine rewrite |
Q0’s phrase “process liveness only (no repo secrets)” remains: repo_root is not a secret and
does not expose living-doc contents. Living docs stay behind existing authenticated doc routes.
§LAC.6.4 — Overview tab explainers (frozen intent)
| Tab | Plain-language job |
|---|---|
| Overview | What this console is; suite doors; how to open it; bound repo |
| Status | Health of governance for the bound repo |
| Roadmap | Living phase board |
| Handover | Next-session relay / paste prompt |
| Gates | Pending honesty/governance reminders |
| Actions | Dry-run-first freeze review + governance-sync + honesty-status |
| Ledger | Append-only honesty ledger view/verify |
| Structure | Full flowchart gallery |
§LAC.7 — Bound-repo honesty (frozen)
| Mechanism | Surface | Meaning |
|---|---|---|
Process cwd + .overseer walk |
Path 2 (ok app) |
Default when --repo omitted (cli/paths.py resolve_repo_root) |
--repo PATH |
Path 2 | Explicit bind for ok app |
OVERSEER_REPO_ROOT |
Path 1 / Path 3 | Desktop launcher bind when set (desktop/.../launcher.rs) |
| Default without env | Path 1 / Path 3 | Bundled kit root (not a consumer project picker) |
Frozen statement (must appear in playbook + Overview):
This console is bound to one local checkout. Reads and writes (when confirmed) apply only to that
tree — not to overseerkit.com and not to arbitrary remote repos. Desktop Path 1/3: set
OVERSEER_REPO_ROOT to your governed repo; otherwise the shell binds the bundled kit.
Auto MUST NOT invent multi-repo switcher UI or a folder picker in this phase.
§LAC.8 — Domain map (frozen)
| Host | Content |
|---|---|
overseerkit.com (apex) |
Static landing ONLY (docs/landing/) |
Optional docs.overseerkit.com |
Static docs mirror (still not a live ok app) |
Any app.* / console.* subdomain |
Forbidden if it pretends to host live Path B/C without a separate Thinking freeze |
| Hosted dashboard | Different CLI: ok hosted-dashboard — must not be branded as the apex product console |
HOSTING.md Auto updates: replace outdated “signed installers optional later / developers clone” primary-path wording with Path 1 Mac Release honesty + Python 3.11+; keep “not a product runtime.”
§LAC.9 — Pre-public gate (ready to point DNS)
Operator may point DNS to the static host only when all are true:
- Landing + access clarity Auto seven-tier matrix green (§LAC.12) +
/build-verification-review→pass. - Access playbook present on README + landing
#console-access+ Path B Overview. - Primary Mac Download CTA
hrefresolves to a Release asset withsigning.status: signed(frozen v0.1.0.dmgor a later signed tag Auto retargets only via governance note — never unsigned). - No unsigned-as-primary marketing; Win/Linux not claimed ready.
- HOSTING.md matches §LAC.8; no subdomain marketed as live
ok app. - No public CSRF/session mint claims anywhere on the site.
DNS cutover itself remains Tier 3 (human operator). This freeze does not authorize it.
§LAC.10 — Rejection table + hard stops
| Proposal | Verdict |
|---|---|
| GUI folder picker / multi-repo switcher in Auto | Reject (needs dedicated Thinking) |
Website mints or proxies session_credential / CSRF |
Reject |
app.overseerkit.com as live Path B |
Reject (needs dedicated Thinking + security) |
Primary CTA = unsigned smoke AppImage / unsigned .dmg |
Reject |
| “No Python required” for Auto v1 Path C | Reject |
| Signup / OAuth / task runtime on landing | Reject |
| Reopen non-loopback bind or disable auth | Reject |
New api/* beyond health repo_root additive |
Reject (later freeze) |
| LICENSE → MIT in this phase | Reject |
| Tier-3 merge / DNS in Thinking session | Reject |
Escalate to human (security / gates_tier3) if Auto attempts any of the above.
§LAC.11 — Auto deliverables (file list)
| Path | Action |
|---|---|
docs/landing/index.html |
Rewrite IA per §LAC.3; embed diagrams; CTAs; console-access |
docs/landing/scenarios/index.html |
Nav/copy parity; keep persona badges |
docs/landing/assets/style.css |
Visual direction §LAC.4 |
docs/landing/assets/diagrams/*.svg |
Four offline SVGs (§LAC.5) |
docs/landing/manifest.yaml |
Section ids per §LAC.3.1 |
docs/landing/HOSTING.md |
Domain + Download honesty |
tools/landing/validate.py (+ schema if needed) |
Enforce new section ids, Download href allowlist, forbidden strings |
README.md |
“Open the local console” playbook |
docs/TRACK-Q-DESKTOP-OPERATOR-RUNBOOK.md |
Align with live Mac Release |
tools/app/engine.py + tools/app/server.py |
Narrow api/health repo_root additive only |
tools/app/static/index.html + assets/app.js (+ CSS as needed) |
Chrome UX §LAC.6.3–§LAC.6.4; Overview playbook |
tests/ |
Seven-tier harness §LAC.12 |
docs/ROADMAP.md + docs/OVERSEER-HANDOVER.md |
Governance sync after BV pass |
Must not modify for Auto DONE: Q0 freeze artifact text (except citing this additive),
LICENSE, desktop signing secrets, non-loopback bind defaults.
§LAC.12 — Seven-tier test matrix (Auto must satisfy)
| Tier | Proves |
|---|---|
| unit | Manifest section ids match §LAC.3.1; primary Download href equals frozen .dmg URL; forbidden strings absent (Sign up, Create account, executes tasks, mint+csrf/session_credential on landing); no DONE/TODO/WIP status table on main landing; four diagram paths referenced; health result schema documents repo_root. |
| integration | validate_landing green on kit tree; relative doc links exist; api/health returns repo_root with Bearer; Path B static still serves; unknown api/ still rejected. |
| e2e | Landing fixtures validate; start ok app → Connect → auth panel collapsed/hidden → Overview shows bound path + Paths 1–3 → Status auto-fetches once on tab enter → SIGINT 0. |
| stress | Concurrent static GETs of landing SVGs + api/health (≥20) do not crash or leak credentials into responses. |
| data-integrity | Landing SVG files non-empty well-formed <svg>; checksum-stable across two runs; Download href host is github.com releases path only. |
| performance | Landing validator completes within existing K12 performance bound class; health additive adds no full-repo walk. |
| security | No external script tags; no secret heuristics; CSRF/session never appear as minted values in HTML; repo_root only on authenticated health; bind/auth non-loopback rules unchanged; no auth-disable. |
§LAC.13 — Definition of Done (Thinking freeze)
- [x] This document reviewed →
passvia/freeze-review-loop+ok review --freeze - [x] Review-record table stamped;
review_stampfilled - [x]
docs/ROADMAP.mdrow → DONE (Thinking); Auto remains TODO gated on this contract - [x]
docs/OVERSEER-HANDOVER.mdNEXT regenerated for Landing + access clarity Auto - [x] No landing/UI/README product rewrite landed in Thinking itself (governance + this artifact only)
- [x] No Tier-3 DNS/merge performed
§LAC.14 — Definition of Done (Auto build)
- [x] Mechanical implementation matches §§LAC.3–LAC.8 and §LAC.11
- [x] Seven-tier matrix §LAC.12 green
- [x]
/build-verification-review→passbefore ROADMAP Auto → DONE (LAC-BV-r1) - [x] Closed Q0 bind/auth unchanged except §LAC.6.3 health additive (diff proof in BV)
- [x] Pre-public checklist §LAC.9 items 1–6 ready for operator DNS (DNS itself still Tier 3)
- [x] Governance sync (ROADMAP + HANDOVER) in the closing commit
- [ ] Feature-branch push / PR only; merge remains Tier 3
§LAC.15 — Boundary & capability table
| Concern | This phase (after Auto) | Not this phase |
|---|---|---|
| Explain kit + diagrams on overseerkit.com | Yes (static) | Live governance server on apex |
| Download signed Mac console | Yes (link to GitHub Release) | Embed installer binary in repo |
| Open local console Paths 1–3 | Document + chrome clarity | Public session mint |
| Mutate remote repos from website | Never | — |
| Merge / DNS / live flips | Never (Tier 3 human) | — |
| Capability | git-only |
muse+git-mirror / muse-only |
|---|---|---|
| Static landing | Full | Full |
| Path B/C console | Full (local) | Full (local) |
| Muse-only landing features | None | None (K7) |