The tier axis goes quiet — one version, everything free, Pro deferred to the sync era

User-ruled 2026-08-08, after the git excision: the base/Pro split is mooted for now. The charter's anchors collapse to a single version (monetization workstream parked, the generosity tension resolved by construction), 12-editions.md carries the pivot note naming what the companion excision removes (Kanban/Tier/, TierTests, Configuration.storekit and its wiring; the network-client entitlement stays for the future sync service), and the README's tiers bullet becomes the one-version statement. Pro returns with the iPhone + ops-based sync capability as a fresh design pass — a reintroduction, not a resurrection. The code excision itself is handed off.

Claude-Session: https://claude.ai/code/session_014PtZdPwqZuqEDLc6wZMtEy
This commit is contained in:
2026-08-08 13:00:44 -04:00
parent 4e1cbd1da9
commit 53be63bb03
5 changed files with 6 additions and 4 deletions
+3 -1
View File
@@ -4,7 +4,9 @@ Lanework ships as **one Mac App Store app** — `dev.rzen.indie.Kanban`, free, 2
**PIVOT 2026-08-07 — git leaves the paywall.** Git integration — detection, adoption, auto-commit, git-backed undo/history, branches (06-history-undo.md), and remotes/auth when they ship (07-sync-collab.md) — is **tier-independent**: every tier composes the git stack on git-mode boards exactly as Pro did. The base/Pro feature split is being re-decided, and git isn't going to be it. Until the new split is ruled: the subscription **machinery stays built and tested but dormant** — the entitlement's mechanics (local read, composition-time, offline grace, the recorded session tier) are unchanged and correct for whatever the next split gates, but the Settings Pro section is not rendered and no surface names or sells Pro. The free-only git postures are **retired**: the inert-`.git` stance and the popover's Pro pointer describe a gate that no longer exists — a `.git` at a board root is live in every tier, detection runs at every board open, and every board carries the popover's Git tab (the mode-driven postures: no-repository door, repo-nested, unverifiable, branch). What the pivot does **not** change: git stays **opt-in per board** (06 — creating a local repository is the user's deliberate choice, never auto-initialized), and a board without app-managed git binds conventional native undo/redo (13) exactly as before — the provider still follows the board. The sections below describing the git gate (the tier matrix's git rows, the inert posture, no-grandfathering) stand as record of the pre-pivot design and are not restated; read them through this note. **PIVOT 2026-08-07 — git leaves the paywall.** Git integration — detection, adoption, auto-commit, git-backed undo/history, branches (06-history-undo.md), and remotes/auth when they ship (07-sync-collab.md) — is **tier-independent**: every tier composes the git stack on git-mode boards exactly as Pro did. The base/Pro feature split is being re-decided, and git isn't going to be it. Until the new split is ruled: the subscription **machinery stays built and tested but dormant** — the entitlement's mechanics (local read, composition-time, offline grace, the recorded session tier) are unchanged and correct for whatever the next split gates, but the Settings Pro section is not rendered and no surface names or sells Pro. The free-only git postures are **retired**: the inert-`.git` stance and the popover's Pro pointer describe a gate that no longer exists — a `.git` at a board root is live in every tier, detection runs at every board open, and every board carries the popover's Git tab (the mode-driven postures: no-repository door, repo-nested, unverifiable, branch). What the pivot does **not** change: git stays **opt-in per board** (06 — creating a local repository is the user's deliberate choice, never auto-initialized), and a board without app-managed git binds conventional native undo/redo (13) exactly as before — the provider still follows the board. The sections below describing the git gate (the tier matrix's git rows, the inert posture, no-grandfathering) stand as record of the pre-pivot design and are not restated; read them through this note.
**PIVOT 2026-08-08 — git excised entirely** (strategy/01-git-excision.md, the second step past the note above): the git stack the first pivot made tier-independent is now removed from the app — engine, UI surfaces, seam bindings, SwiftGitX/libgit2 — with the message engine harvested to `Kanban/Changes/` as the future activity-feed narrator and the pre-excision state tagged `pre-git-excision`. The format's git-friendliness (per-card files, stable UUIDs, byte-fidelity, the seeded `.gitignore`) is the surviving promise, free forever; boards inside user repositories stay first-class and untouched. The tier machinery stays dormant exactly as the first pivot left it; the next split is expected to be "your board beyond your Mac" — the iPhone companion plus the ops-based sync service (the strategy workstream's charter) — and is not ruled by this note. 06 and 14 are retired, 07 is retired as written (06's Undo routing migrated to 13, now the sole substrate's doc); read this doc's git rows, modes, and matrix as record. **PIVOT 2026-08-08 (second, same day) — the tier axis is mooted; one version.** User-ruled after the excision below: the base/Pro split leaves the product for now — Lanework ships as a single version, everything free, and the subscription machinery this doc engineered goes from dormant to **excised** (`Kanban/Tier/` — Tier, ProEntitlement, ProProducts, ProStorefront, the unrendered ProSettingsSection — with TierTests, `Configuration.storekit`, and its project.yml/scheme wiring; the network-client entitlement stays, the future sync service needs it regardless). Pro returns later, alongside the iPhone companion and the ops-based sync capability, as a **fresh design pass with its own doc** — a reintroduction, not a resurrection of this doc's matrix; the entitlement mechanics recorded below (local read, composition-time, offline grace) remain the reference for that pass. The provider-seam rationale survives independently (13-native-undo.md carries it now). Everything below stands as record.
**PIVOT 2026-08-08 — git excised entirely** (strategy/01-git-excision.md, the second step past the 2026-08-07 pivot): the git stack the first pivot made tier-independent is now removed from the app — engine, UI surfaces, seam bindings, SwiftGitX/libgit2 — with the message engine harvested to `Kanban/Changes/` as the future activity-feed narrator and the pre-excision state tagged `pre-git-excision`. The format's git-friendliness (per-card files, stable UUIDs, byte-fidelity, the seeded `.gitignore`) is the surviving promise, free forever; boards inside user repositories stay first-class and untouched. The tier machinery stays dormant exactly as the first pivot left it; the next split is expected to be "your board beyond your Mac" — the iPhone companion plus the ops-based sync service (the strategy workstream's charter) — and is not ruled by this note. 06 and 14 are retired, 07 is retired as written (06's Undo routing migrated to 13, now the sole substrate's doc); read this doc's git rows, modes, and matrix as record.
**Re-ruled 2026-07-30 — the one-app collapse.** This supersedes the 2026-07-27 two-app split (separate base and Pro targets) and the 2026-07-29 App Group ruling that served it. The split's compile-time purity (base never links libgit2, no network entitlement) dragged permanent coexistence machinery behind it: a shared App Group, per-edition grant slots (security-scoped bookmarks never cross sandboxes), registry freshness stamping between two live processes, UTI-ownership twins, a both-apps-installed rulebook — a tax on every layer that generated a steady stream of design findings, all serving a state (two sandboxed apps sharing app-side state) that existed only because the packaging created it. One app makes that state unrepresentable. Costs accepted with eyes open: libgit2 rides dormant in the free download, and the one app declares the network-client entitlement (exercised only under Pro) — the "free app provably has no network access" story is traded for "no network use until you subscribe," which is honest but weaker. **Re-ruled 2026-07-30 — the one-app collapse.** This supersedes the 2026-07-27 two-app split (separate base and Pro targets) and the 2026-07-29 App Group ruling that served it. The split's compile-time purity (base never links libgit2, no network entitlement) dragged permanent coexistence machinery behind it: a shared App Group, per-edition grant slots (security-scoped bookmarks never cross sandboxes), registry freshness stamping between two live processes, UTI-ownership twins, a both-apps-installed rulebook — a tax on every layer that generated a steady stream of design findings, all serving a state (two sandboxed apps sharing app-side state) that existed only because the packaging created it. One app makes that state unrepresentable. Costs accepted with eyes open: libgit2 rides dormant in the free download, and the one app declares the network-client entitlement (exercised only under Pro) — the "free app provably has no network access" story is traded for "no network use until you subscribe," which is honest but weaker.
+1 -1
View File
@@ -24,7 +24,7 @@ Each document covers one aspect of the design. Within each:
| [09-templates.md](09-templates.md) | Board templates: inventory and definition format | | [09-templates.md](09-templates.md) | Board templates: inventory and definition format |
| [10-accessibility.md](10-accessibility.md) | VoiceOver, text scaling, visual accommodations | | [10-accessibility.md](10-accessibility.md) | VoiceOver, text scaling, visual accommodations |
| [11-command-nexus.md](11-command-nexus.md) | The command Nexus — every command and action: bindings, contexts, customizability | | [11-command-nexus.md](11-command-nexus.md) | The command Nexus — every command and action: bindings, contexts, customizability |
| [12-editions.md](12-editions.md) | The tiers: one-app distribution, entitlement, provider seam — the git rows are record (pivot 2026-08-07, excision 2026-08-08) | | [12-editions.md](12-editions.md) | The tiers**mooted 2026-08-08**: one version, everything free, tier machinery excised; Pro returns with the iPhone/sync era as a fresh pass (the doc is record: entitlement mechanics, distribution, the git rows) |
| [13-native-undo.md](13-native-undo.md) | macOS-native undo/redo — the history substrate (sole since 2026-08-08); owns Undo routing | | [13-native-undo.md](13-native-undo.md) | macOS-native undo/redo — the history substrate (sole since 2026-08-08); owns Undo routing |
| [14-git-operations.md](14-git-operations.md) | Extracted pathfinder git-operations conclusions — **retired 2026-08-08** (superseded record) | | [14-git-operations.md](14-git-operations.md) | Extracted pathfinder git-operations conclusions — **retired 2026-08-08** (superseded record) |
+1 -1
View File
@@ -59,7 +59,7 @@ Lanework is in early development. This list tracks what has actually shipped and
- **App identity — icon, versioning, About** — the app carries its three-lane glyph icon and a real About window: icon, copyright, version and build stamped at build time from git (`CFBundleVersion` = commit count, plus `BuildDate` and `BuildHash` in the Info.plist — never a hardcoded string), the version line opening the bundled end-user changelog, and the ISC license one link away. - **App identity — icon, versioning, About** — the app carries its three-lane glyph icon and a real About window: icon, copyright, version and build stamped at build time from git (`CFBundleVersion` = commit count, plus `BuildDate` and `BuildHash` in the Info.plist — never a hardcoded string), the version line opening the bundled end-user changelog, and the ISC license one link away.
- **Tiers** — one app, one download, one on-disk format, and **the complete Mac experience is free**: nothing on the board, in the format, or in agent legibility is gated. What Pro will eventually mean is the board beyond the Mac — the iPhone companion and the ops-based sync service, its own workstream — never a Mac feature. The subscription machinery built ahead of that split — the entitlement (a **local read, never a network call**: StoreKit's own signed on-device transaction store, reduced to two cached facts and resolved by a pure function at board-session composition, with offline grace resolving toward the paying user), the provider seam, and the storefront — stays built and tested but **dormant**: Settings carries no Pro section, and no surface in the app names or sells Lanework Pro. - **One version** — one app, one download, one on-disk format, everything free: nothing on the board, in the format, or in agent legibility is gated, and no surface in the app names or sells a paid tier. A Pro tier returns later — alongside the iPhone companion and the ops-based sync service, as its own design pass — and it will mean the board beyond the Mac, never a Mac feature. (The subscription machinery once built ahead of that split was excised 2026-08-08 rather than left dormant; DESIGN/12-editions.md records its mechanics for the reintroduction.)
- **Git-friendly by construction** — the app never runs git, and the format never needs it to be versionable: one folder per item and one file per card, stable UUID folder names as permanent identity, byte-faithful rewrites that never churn what you didn't change, and a seeded one-line `.gitignore` keeping Finder droppings out of diffs — so a board versions cleanly under any tooling you already use (`git init` it, clone it, review board changes in pull requests) while the app reads along live and stays strictly out of `.git`. The app-managed git stack that once shipped here — auto-commit, undo as forward commits, branches, a card's History — was built and then excised before launch (strategy/01-git-excision.md, ruled 2026-08-08; the pre-excision state is tagged `pre-git-excision`). - **Git-friendly by construction** — the app never runs git, and the format never needs it to be versionable: one folder per item and one file per card, stable UUID folder names as permanent identity, byte-faithful rewrites that never churn what you didn't change, and a seeded one-line `.gitignore` keeping Finder droppings out of diffs — so a board versions cleanly under any tooling you already use (`git init` it, clone it, review board changes in pull requests) while the app reads along live and stays strictly out of `.git`. The app-managed git stack that once shipped here — auto-commit, undo as forward commits, branches, a card's History — was built and then excised before launch (strategy/01-git-excision.md, ruled 2026-08-08; the pre-excision state is tagged `pre-git-excision`).
+1 -1
View File
@@ -4,7 +4,7 @@ Scope: the framing document for the strategy effort. It records the strategic go
Drafted: 2026-08-01 Drafted: 2026-08-01
**Note 2026-08-08:** app-managed git is excised (ruled — `01-git-excision.md`, executed the same day), which moots this charter's git-premised lines: the pro-m1 launch coupling (there is no git milestone to couple to) and any framing of Pro as selling git history. The 2026-08-07 tier-strategy discussion points toward re-anchoring on free = the complete Mac experience, Pro = the board beyond the Mac (iPhone + ops-based sync service); that re-ruling of the anchors is the user's to make and has not been folded in — read the anchors and tensions below through this note until it is. **Note 2026-08-08 (two rulings, same day):** app-managed git is excised (ruled — `01-git-excision.md`, executed the same day), which moots this charter's git-premised lines: the pro-m1 launch coupling and any framing of Pro as selling git history. **And the base/Pro split itself is mooted for now (user-ruled):** Lanework ships as a single version, everything free, with the tier machinery excised from the codebase rather than left dormant; Pro returns later, alongside the iPhone companion and the ops-based sync capability, as a fresh design pass of its own. Read the anchors below accordingly — anchor 1's base/Pro pair collapses to "the app" until that era; the monetization-architecture workstream (knob 2) is parked with it, and the free-tier-generosity tension is resolved by construction (everything is the free tier). The openness pledge, the Teams second act, and the rest of the decision surface stand unchanged.
## The strategic goal ## The strategic goal