Skip to content

Week 21 / 2026 — three threads cross the working line

18 May – 24 May 2026 · 176 commits · 0.50.14 → 0.51.2

For two months the engine has had three threads running quietly in parallel: how scenarios become first-class instruments, how the cloud recognises its owner without leaving the laptop, and how a signal can carry its unit of measurement around with it. This was the week all three crossed the line from sketch to working shape. Sense 19 (The Simulation) shipped Phases 1 through 5 end-to-end. Sense 25 (Identity & Passes) closed the cloud refresh loop and put Clerk inside the Explorer. Sense 14.2 (Typed Signals) moved from rendered output to compiler-enforced semantics. Around them, Sense 15 picked up the authoring surface the Atelier from W20 was waiting for — and the Field Manual quietly grew up.

A week ago, “scenarios” was a sketch. Five phases later, it works. Suggestion and Intervention are now first-class YAML instruments with their own contracts and validators (461fedcc). jin scenario create cuts an AFS branch and applies the requested interventions to a temp tree (9b21c6ff). jin scenario build runs the standard pipeline against that branch and produces a sibling KLS marked with scenario metadata (941e05db), and the Explorer’s Compare loupe gained a scenario mode so diffing a what-if against baseline reads in the same idiom as diffing two snapshots (8cb7c76a). Phase 5 closed the loop on the reader’s side: every Verdict detail now surfaces the Suggestions tied to that verdict, and the Scenario Builder is one click away (878b1ef9, 339f7672 covers it in Playworks). The whole architecture is on the docs site too (a3145a0d).

This isn’t a feature anymore — it’s an analytical move. A reader who sees a confirmed thesis can now ask “what if?” without leaving the verdict page.

Sense 25 — the cloud learns who’s home

Section titled “Sense 25 — the cloud learns who’s home”

For months the cloud has refused to refresh: the owner ships a new build, the deployed Explorer 403s on the new KLS because nothing on the cloud side knew it was the right owner. Phase 3a fixed it with a Deploy Pass — a per-instance owner token that jin ship presents on refresh, and that the cloud honours via a declarative redeploy hook (25d45f25, 9358351f, 89e19547). The token lives in the canonical secrets store, not a bespoke file (ef188ee4), and OWNER_TOKEN got renamed to DEPLOY_TOKEN along the way for the obvious reason (bb9d166d).

Phases 1 and 2 of Sense 25 also landed. Principals now carry an identity and extra_roles block (3dd26015), the validator cross-references identity + extra_roles (14eb5cc6), and the principal detail page renders a four-level access diagram with hover-highlight and a Sankey flow showing the principal’s reach across capabilities, packs, tenants, and signals (fc1f4104, 3a10d675, 55a7348f). Phase 2 binds a Clerk userId back to a principal so signing in actually means something to the engine (b835235d).

Phase 3b.1 was the harder one. Clerk’s Svelte SDK has SSR sharp edges — for a day the /admin page kept exploding because client-only components were running server-side (5b44f10b, 37959d5e, 6caea3b6, c7368fe9). The resolution was to drop the embedded widget for the hosted Account Portal redirect, then bring back ClerkProvider for the cross-domain session handshake (abb3e0f6, 9d071954). A SignedInBadge now lives top-right in the sidebar header with the resolved principal and a sign-out menu (c09edc08, 9e17befe). Phase 3b.2 closed the email loop: the Explorer now matches the Clerk user’s email back to a principal automatically, with a tenant gate via Clerk metadata (6cb32103). And anonymous identity ships behind a JINFLOW_ALLOW_ANONYMOUS=1 deploy knob for tenants that prefer to skip auth entirely (d62f9093).

Sense 14.2 — measurements that know their units

Section titled “Sense 14.2 — measurements that know their units”

The typed-signal work crossed from “renders” to “enforces” this week. Phase 1 was visible already: the Explorer now renders typed out_* columns from the new signal output contract (cdccb8ea), and a UCUM percent-convention fix plus a perspective union-by-name fix closed the regressions Phase 1 surfaced (189231bc).

Phase 2 was the structural move. The window: block went from a rendered hint to a real driver of SQL WHERE: the compiler now substitutes the window expression into balance / duplicate / ratio / mandatory_item signals (a7ce6cfd, 3cda9a9e, 6e2f30b9 covers it in integration tests). severity_from binds a typed output to a severity level (eac22933). And thesis evidence now type-checks: a thesis that references a signal output must match that output’s declared type (a604e95d).

The doc caught up to the code in three passes — the Phase plan reflected that Phase 0 was already shipped (48703f0a), a full rewrite settled the nine open questions (df991ae3), then Phase 1 was marked shipped and the window: plan rolled to Phase 2 (79f77ccf).

Sense 15 — Observation as a first-class authoring surface

Section titled “Sense 15 — Observation as a first-class authoring surface”

The Atelier from W20 needed somewhere to write Observations into. Phase 1a landed the schema, writer, list, and new-Observation wizard (028b33d7), Phase 1b the editor with an edit-button on detail (84e32597), and Phase 1c the Contributing Factor surface that closes the Strategy loop (8eb93a5a). The schema itself moved on: broader Validation, no origin field, Contributing Factors as first-class objects (f4ba6f4c), with the Sense doc carrying the new “walking toward each other” framing (93d7a5d1).

Around it, a small constellation of UI work made authoring feel native. PrincipalLink turned every principal reference into a clickable + tooltipped link (36189811, 398626a1). Notebook list rows surface co-authors as “by <author> (with Claude)” (690df932). UnsavedChangesGuard swept across all eight editors so a sidebar click doesn’t silently eat in-progress work (a5923878, 9a2bbc24, 3e7ef320); ac704610 caught three real bugs in the same authoring pass. A form-normalisation infinite loop that had been quietly heating the CPU got killed in all 8 editors (c715a6d0). And Markdown rendering finally arrived on dossiers + verdicts (46f60426).

The Field Manual makeover (and a Tenant tab to land on)

Section titled “The Field Manual makeover (and a Tenant tab to land on)”

The Field Manual entered the week as a wall of dense prose with TODO markers showing and “55+ signals” hardcoded into the body. By Saturday it had a section-type taxonomy + grouped nav (65c5ba03), typography breathing room (d047d660), TODOs surfaced as deliberate “Author this section” cards instead of leaked draft prose (b8eed302, f84bcdd6), live counts pulled from the KLS via {{signal_count}}-style tokens (28e85afc), Examples-as-cards plus per-section Further Reading panels linking to docs.jinflow.io (de61ed80), a “Customize for <tenant>” disclosure offering a paste-ready YAML stub on every pack section (50f8d726), and three engine-provided footer sections — Architecture, Glossary, Recent Releases — that now ship with every manual (471f6e4b).

The Sunday move was structural. The /what-is-this page got a Tenant tab — a soft landing card pulling identity from tenant.yml, live KLS counts, and an optional briefing.yaml carrying people, cadence, local quirks, and local glossary; plus a House Log surface for any note tagged house-log to capture organisational events the system can’t derive (17996f28). A Pack tab was added, then immediately folded into the existing pack-branded Domain tab — one branded tab, one story — and the tab order shifted concentric: About → Tenant → nuMetrix (or hr/central) → Convictions → Mental Model → … so the most-local view loads first (d52ca4c3).

Releases, gates, and one almost-silent bug

Section titled “Releases, gates, and one almost-silent bug”

Two release-notes problems got caught and fixed. The drift gate introduced last week was flapping red on every push between releases: an “Unreleased” section grew on each commit. A --no-unreleased flag now stabilises the comparison (7be4b412). Underneath that, a deeper bug — get_commits(since=None, until=tag) was returning every commit in HEAD instead of just the commits reachable from tag, which had grown W11.md to 3700 lines of misattributed entries (b235dd9f). The fix was four lines; the regen dropped 2,800 ghost lines.

A new internal-link drift gate walks every /... link in the docs and verifies it resolves to a real Starlight slug or static asset — 23 stale links got fixed in the same commit (a7cda178). The YAML reference slugs got renamed end-to-end — yaml-probe/hypothesis/diagnosisyaml-signal/thesis/verdict in EN/DE/FR — schema-in-prose updated, 9 redirects added (445177e8). A months→weeks split tree replaced the 11k-line releases.md (3dd933d7). And six new Sense pages landed on the site — 39 The Governance, 40 The Metamodel, 41 The Relevance, 42 The Pipes, 43 The Cascade, 44 The Forge — plus a “Three Vocabularies” concept page (f27f5624, 1b2f712c, f9f8babb, 351a0e27, 5e73087f, 940f000f, 009cdf3c). The Cascade foundation also landed in code: an analytical_defaults resolver baked into the KLS so config inheritance has somewhere to live (6f19e059).

176 commits across eight releases — 0.50.15 through 0.51.2. The prefix histogram tells a building story: 66 feat: against 49 fix:, with 29 docs: carrying the conceptual scaffolding for Senses 39–44 and the Sense 14.2 / 15 / 25 design rewrites. Three arcs in the same week that each closed a loop the engine had been keeping open for months. And underneath them, the Atelier from W20 picked up the language to author into (Observations, Contributing Factors), the cloud picked up the auth handshake to welcome an owner back, the signal type system started enforcing what it had been describing, and the front door picked up a coat of paint.

After Week 21, the engine knows who’s asking, can answer “what if”, measures with named units, and welcomes the tenant home.

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