Skip to content

Week 25 / 2026 — the worktrees agree

15 Jun – 21 Jun 2026 · 39 commits · 0.54.3 → 0.55.1

Two refinements arcs and one workflow change. Sense 48 — The Stage continued shipping (env indicator pill, jin ship --env, jin promote for dev→prod, prod/dev terminology in the toolchain). Sense 13 — The Tile grew into V2: The Panel — composition of tiles. And the meta-story of the week: the sister-worktree workflow got standardized (m2m, m2s, l2n, l2m scripts; explicit dev-only ship; the claude/9th worktree as a working example).

The week’s working theme: the planes get their pillars, the worktrees agree on how to talk to each other.

W24 introduced The Stage as a concept and shipped the foundation (env resolution, dual Clerk keys, env-aware jin login / jin ship / invite / sync-principals / revoke). W25 turned the concept into a daily, visible workflow.

Phase 5 — the env indicator pill (6fc3678d) puts a DEV / LOCAL badge in the Explorer chrome so the user can never confuse which plane they’re looking at. Combined with Phase 7 — jin promote (3ef53aae), the dev→prod handoff becomes one named verb: build & test on dev, then jin promote to lift the validated image to the prod Fly app.

Around the pillars, the safety net tightened:

  • jin ship requires explicit --env for developers (8d2a977a) — no more accidentally shipping the laptop default to whatever the env-var happened to be that day.
  • just ship deploys to dev only; prod requires confirmation (5c9a7fe4). Friction in the right place.
  • fly-deploy-dev / fly-redeploy-dev recipes (1414bce5)
    • later renamed to prod-deploy / dev-deploy (3e9db6e8) — the recipe names now declare which plane they touch instead of which provider.
  • About page shows real engine version + env (prod/dev/local) (df121b85) — the runtime self-reports honestly to the reader.

Plus deploy-cloud retries on transient Fly registry errors (8ed088e6) — the kind of resilience small fix that the next deploy outage will silently prevent.

Sense 13 V2 — The Panel (composition of tiles)

Section titled “Sense 13 V2 — The Panel (composition of tiles)”

V1 in W24 named the tile as the substrate for visual assertions. V2 introduces the panel as the composition of tiles. Spec landed (3d37e358) followed by implementation (dbd7f84d) — Atelier surfaces can now bind a panel from a YAML declaration, the panel resolves its tile dependencies, and the resulting render composes cleanly.

A small but instructive late-week fix (cd3cbc28) moved parseTileProvenance out of a server-only module so client panels could build — the kind of “we need to be careful about import scopes when the substrate spans server + client” lesson that V2 brought to the surface.

The worktrees agree — m2m / m2s / l2n / l2m

Section titled “The worktrees agree — m2m / m2s / l2n / l2m”

The week’s meta-story: multiple Claude agents working on jinflow in parallel needed a clean way to hand work back and forth. The answer: shared .git/ worktrees + a small fleet of scripts named for what they do.

The convention crystallized this week:

  • m2m (9eaa2dfe) — main to main. Sync the active worktree back to the canonical main, with the commit-message hygiene the commit-msg hook needs (af3b127b).
  • m2smain to sister. Push changes from the canonical main out to a sister worktree.
  • l2nl2m (ef4b73e9, 3459c1aa) — local to main — the rename to match the naming symmetry that emerged. (And l2s for completeness — local to sister.)
  • The claude/9th worktree itself arrived this week as a working example. The owner’s jinflow/ clone is the canonical main; jinflow-9th/ is a worktree on claude/9th. Local handoffs are instant (shared .git/); pushes to origin become intentional rather than reflexive.

The cumulative effect: an evening rhythm where two Claudes can make progress in their own worktrees, sync via m2m / m2s, and nobody overwrites anybody else’s work.

A long-overdue cleanup landed (ebbffb06): 109 stale .md-extension links rewritten to clean Starlight URLs across the site. Three passes:

  1. Relative .md links to existing site pages → absolute Starlight URLs. The user-reported case in /operations/quick-start was the trigger: [Setup Guide](../guide/setup.md) was dropping readers on a 404. 68 links across 13 files.
  2. Sense cross-refs in the engine’s sense_NN_*.md filename convention → the site’s kebab-case sense-NN-* slugs. 43 links across 12 files.
  3. Engine-only design docs (extractor_discipline, the_kls_as_witness, etc.), letters, memory entries, and packs paths → GitHub source URLs so they at least resolve.

Picked up two pre-existing drift issues along the way: demo_ronnie_walkthroughdemo_viewer_walkthrough sync to site/public/presentations and the de/fr listings, plus the_senses.html getting its presentations.yaml entry.

The pitch deck ships + the old deck speaks current vocabulary

Section titled “The pitch deck ships + the old deck speaks current vocabulary”

The customer/investor pitch deck (drafted in collaboration last Sunday) landed on docs.jinflow.io (87e3cd05) — listed in presentations.yaml, mirrored to the site’s public/presentations/, surfaced in the EN/DE/FR presentations indexes.

In the same commit, the older introducing_jinflow_5min.html deck stopped speaking the pre-Sense-14 vocabulary: “Balance probes”“Balance signals”, “new probe types”“new signal types”, plus the internal CSS class rename for consistency. The legacy term that had survived the rename for months is finally out of every user-facing surface. (Plus the follow-up scrub in the evolve test ladder — 26b2dd06.)

Two related fixes (3f4b8087, 450b8c8f) closed the loop on the W24 “registry bakes don’t refresh between engine bumps” hole. The bakes now run on every make, not gated by the engine-version stamp, and the make output reports them honestly — so a make that did refresh the AFS-mirror tells the user that’s what happened. Previously they’d skip silently and the user would wonder why fresh AFS edits weren’t reaching the KLS.

The Explorer’s Atelier writer (e11cbc04) now stamps modified_at on every save and appends to a history field — so an Atelier-authored YAML carries an honest timestamp + a per-save record. Sense 21 Symptom C (modified_at semantics drift) gets one more surface honest.

A new doc (c1e6d40d) — docs/guide/evolve-test-ladder.md — enumerates the test coverage for jin evolve Phases 1, 2, and 3a. The kind of artifact that turns “the AI co-pilot mostly works” into “here are the cases we’ve verified, here are the cases still open.” Pairs naturally with the test re-centering work that landed earlier in the month.

  • jin afs pp accepts --all and multiple positional targets (4f156e18) — pretty-print across the whole live root, not one tenant at a time.
  • Garden chains sidebar hidden by default (cee2ade6) — less visual clutter on first load.
  • Garden outline is the only render mode now (50ed22b0) — the toggle is gone; the outline mode was always the better one and the alternative was vestigial.
  • pack_brand.display_name carries brand.name for invitation copy (dbf79cb5) — invitations now display the pack’s branded name.
  • bake_metadata pack-cascade resolves the pack manifest correctly (b3562d90) — small but load-bearing fix for the config cascade lookup.

4 releases: 0.54.3 → 0.54.4 → 0.55.0 → 0.55.1.

Forward hook: Sense 48’s pillars (DEV/LOCAL pill, env-aware ship + promote, prod/dev recipe naming) plus the worktree workflow plus the claude/9th working example mean that the next phase — multiple Claudes shipping in parallel without stepping on each other — is now a documented practice instead of a hopeful arrangement. With Sense 13 V2 (the Panel) live, the Atelier’s visual-assertion authoring also has its next composition primitive.

jazzisnow jinflow is a jazzisnow product
v0.64.7 · built 2026-09-20 19:48 UTC