Week 19 / 2026 — hrcentral lands, the Lens arrives, the funnel narrows
Dieser Inhalt ist noch nicht in deiner Sprache verfügbar.
4 May – 10 May 2026 · 304 commits · 0.47.4 → 0.47.23
The week opened with the third pack — hrcentral — coming online end-to-end. By Monday afternoon, hrcentral.vai.jinflow.io was a real URL with a real KLS, a real welcome page, a cast of 18 named persons in the VAI tenant, and 8 v1 signals firing. The pack architecture from W10 had been waiting for proof; here it was. By Sunday night, hrcentral had four named Lab variants (workforce, critical-roles, hiring, cohorts), the Lens (Sense 27) was a first-class AFS artifact compiling to runtime, and three new senses had been designed (26 The Workshop, 27 The Funnel, 28 The Direct Line, 29 The Atelier, 30 The Wire — five senses, actually).
Three hundred and four commits. The week the project’s noun-topology argument settled and its surface area for new packs got formalized.
hrcentral becomes real
Section titled “hrcentral becomes real”Monday brought hrcentral into being, one disciplined commit at a time:
- 4de132ab — “hrcentral pack scaffold + 7 design notes generated”
- 4a459dbb — “VAI tenant — welcome, org chart, cast of 18 named persons”
- 7483a311 — “hrcentral v1 signals (8) + gold contract + signalcheck rename leftover”
- 813e5cf0 — “hrcentral entities + dbt scaffold + 2 engine bug fixes”
- 3e023f6c — “hrcentral synthetic data + bronze/gold dbt models — VAI’s first gold”
- ed25f366 — “hrcentral — first end-to-end build green; the festa landing”
- b708dac2 — “wire hrcentral.jinflow.io into Fly + Explorer host routing”
By Monday afternoon, the third pack ran end-to-end on shared infrastructure. The argument that the pack architecture is real architecture, not an aspiration was now verifiable from any browser.
Tuesday-Wednesday brought the data layer to life:
- 49cc0611 — “pipeline.yml channels — invariant ingestion contract”
- 918b10cc — ROR extractor for hrcentral OrgUnit topology
- 4f0e66d0 — Wikidata extractor for OrgUnit deep tree
- bd2a807c — “ROR + Wikidata bronze + silver wiring for hrcentral”
- 96a83161 — “multi-source-per-tenant ingestion (hrcentral + engine)”
- 7ae35822 — OrgUnit cross-source reconciliation + German genitive polish
- 194a8e66 — “3 v1 signals firing — overload, dual_affiliation, succession_risk”
- 083acbd5 — “2 confirmed theses on top of the v1 signals”
Six days from scaffold to confirmed theses, end-to-end. The engineering muscle built across 18 weeks of nuMetrix work paid off — the second pack from scratch went from concept to running in a workweek.
The Lens — Sense 27 ships
Section titled “The Lens — Sense 27 ships”Monday: 5d995f3c — “Sense 27 — The Funnel — narrow at the source.” The paper argues: aggregating in SQL beats aggregating in JavaScript. Aggregate at the source. Stream the picture, not the dataset.
A day later, the implementation begins:
- Tuesday: d1307f3e — “Sense 27 Lens scaffolding — contract, compiler, runtime stubs”
- 3880b0a2 — “Lens runtime — compose() and enterSubLens() implemented”
- 4a5f59f6 — ”/[tenant]/lens/[lens_id] route — Sense 27 first end-to-end Lens render”
- 31d0c69c — “Lens schema + runtime gain
joinsto signal_findings tables” - 25e26cc9 — “bake lens manifests into the KLS — production no longer needs build/”
- b02cc16d — “lens manifest disk-first + mtime cache for dev hot-reload”
- 92d11dc7 — “lenscompile — implement extends: for Lens variants”
By Sunday, a Lens YAML compiled to a runtime manifest, the manifest was baked into the KLS, the Explorer rendered the Lens at /[tenant]/lens/<lens_id>, sub-Lenses composed via extends:, and a single cell click drilled into a sub-Lens (recursive). 4fb16fc3 — “cross-Lens jump from cell drill-in”. c708b17a — “predicted child cells fill log_bin zoom views.”
What this means in practice: an analytical question that used to require an Explorer page now requires a Lens YAML. The Lens declares its axes, fields, density bounds, time-bucket prediction. The compiler emits SQL. The runtime composes and serves it. Pages stop being implementation; they’re now compositions.
Five new senses
Section titled “Five new senses”W19 produced five concept papers, two of them as full implementations:
- Sense 26 — The Workshop (13b3890a) — “pack ships its own design + notedocgen.” The pattern: every pack carries a
field_manual/pack.yamldeclaring its convention. Tenants override per-section. The Field Manual feature lands later this week ([feature commits in W20 territory]). - Sense 27 — The Funnel (5d995f3c) — Lens architecture, narrow at the source.
- Sense 28 — The Direct Line (314a550a) — laptop↔browser direct over tunnel, cloud signs SQL, never sees rows. Strengthens P2P2P.
- Sense 29 — The Atelier (ec57930a) — names the separable layout (Studio + Salon + Lab as the same place in different work modes). Decouples Studio/Salon/Lab from sidebar nesting.
- Sense 30 — The Wire (7a1c6163) — “the outward contract — typed, identified, reasoned, rate-aware boundary.” The protocol/specification spec for talking to jinflow as a service.
That’s three weeks running with multiple Senses each. The cadence is now visibly an editorial one — the project is articulating itself faster than it’s implementing.
The Diamond replaces the pyramid
Section titled “The Diamond replaces the pyramid”Tuesday’s 012a74ba — “retire ‘diamond’/‘hourglass’ in favor of ‘the jinflow’”. ad6c60b2 — “retire ‘pyramid’ / ‘hourglass’ / ‘diagnostic’ in canonical glossary.”
The big-picture shape that had been called the pyramid (Probes at base, Diagnoses at apex) then the hourglass (analytical pyramid meeting strategic pyramid at the waist) — both got retired. The new shape: the jinflow, a diamond with Analysis, Strategy, Expertise, Insight, Evolution at its corners and Insight at the centre.
- 8e684f05 — “The jinflow — five names, one diamond, one centre”
- d2843c5b — “From Evolution — the jinflow model in ten stages”
- 697dcc51 — rename Action to Evolution in the-jinflow concept page
Documentation, presentations, podcast scripts — all swept the same week (32afca40, 4db5f3ec, 5f1f86f3).
Sense 14 Phase 2 + Phase 4
Section titled “Sense 14 Phase 2 + Phase 4”The Signal paradigm work continued in two directions:
- Phase 2 — polarity-aware Board (heatmap) coloring (1f1e9e42), Explorer reads score + polarity (a7fbb029), signal extensions wrapper in compiler (1d1a2ebc)
- Phase 4 — perspectives are positive-polarity (2b77175a). high = healthy for perspectives, high = bad for negative-polarity signals. A counterintuitive surface that the rendering finally got right.
Sense 14.2 — Typed Signals foundation
Section titled “Sense 14.2 — Typed Signals foundation”Friday-Saturday: 3a004f2c — “Sense 14.2 Phase 0 — UCUM + ISO 8601 validators (foundation).”
Phase 1: typed out_* columns
- 0fda067c — “compiler emits typed out_ columns”*
- a7d42502 — “Finding type + 129 tests for the type system”
Phase 2A: validation, Phase 2B: aggregate outputs
- a903dbc9 — “aggregation type×method validator”
- 77be3957 — “compiler emits SQL for aggregate_outputs:”
Five base types (quantity / currency / time / category / flag) grounded in UCUM, ISO 4217, ISO 8601, ISO 80000 — the standards-anchored type system from the Sense 14.2 design proposal in W17 is now real code.
Two rooms, not three
Section titled “Two rooms, not three”Friday: 24e400d3 — “refactor: Studio joins the Lab room — two rooms now, not three.” 59283b88 — “salon → board, drop preset/encoding, route is /board/[instance].”
The Studio/Salon/Lab triad from W15 was a collaboration metaphor; the URL-level fold makes it two rooms: /board/[instance] for browse + drill (Lens-browser idiom), /lab/[instance] for chart-based exploration. Studio is a work-mode inside Lab, not a separate URL. Salon is renamed Board, dropping the preset/encoding tail.
Local CI loop
Section titled “Local CI loop”A different kind of polish: a continuous-checking loop for the laptop.
- b53e147a — “local CI —
just ci, two-tier continuous testing loop” - aa6a306d — CI logs land in logs/ci/, incidents preserved per-failure
- 950d7fda — “
just ci-attach— persistent CI session via tmux” - 207c1c33 — “drop file watcher — periodic-only cycle”
- 87749e95 — “split fast tier into Explorer + Python subsets”
- 309d4675 — “Triage agent — auto-diagnose CI incidents via claude -p”
A 15-minute loop running explorer-check + vitest + pytest + (if green) tenant builds. macOS notifications on color transitions. Triage agent reads incidents and writes a DIAGNOSIS.md in 30-60s. tmux-attached so it survives terminal closes.
This is the muscle that catches regressions before users notice them — and that, this very week, caught the dev-server-reload bug that surfaced as a user complaint days later.
Personas-as-atomic — hrcentral’s first complex page
Section titled “Personas-as-atomic — hrcentral’s first complex page”Saturday: 0e93db62 — “Persons-as-atomic — three-questions Who page + Joiners Lab + Cohorts pivot.” hrcentral’s first complex Lens-style page. Persons of interest, grouped by joining cohort, pivoting between Lab variants.
By Sunday, the hrcentral surface had:
- TimeLab — institution-wide mode (a121a9cb)
- Critical-Roles Lab — succession_risk over time (e52a242b)
- Hiring Lab — workforce flow over time (c8d645ca)
- Cohorts Lab — population blocks (bachelor / master / doctoral) over time (8c03843d)
Four named Lab instances, each declared as a Sense 13.1 component, all rendered by the same engine.
Probe → signal sweep — at long last
Section titled “Probe → signal sweep — at long last”9e93a0cf — “complete probe → signal sweep across engine + Explorer.” The final commit closing the Sense 14 rename across every namespace, capability, slot, and codepath that still carried the legacy noun.
Smaller but consequential
Section titled “Smaller but consequential”- Aggregates layer — pack-shipped models that build after signals (c8d0646f)
- Tenant rename layer for shifting public-source data (3ff28bb3) — public-source institution names mapped onto the synthetic VAI tenant
- Italian sidebar translations for Sense 14 vocabulary (cd66be91) + 98347686 — hrcentral welcome screen in Italian. VAI requires it ([f0c4154c]…).
- Locales become dynamic per AFS (a5af5c20)
- Lenses become a first-class AFS artifact type (516f99bd)
- VAI regression tripwire — gold rowcounts + landmarks + signals (158fe1b0)
- From Evolution narrative — six commits on the Senses-overview design page
- Subject Matter kinds — Wisdom and 50cents (5f3a12ba) — pack-level Wisdom vs tenant-level 50cents
- Cathedral — opt-in tour, theme system, persistent toggles (665bb5a0)
- AFS Diff inline content view (1c5dbab0) — click row → see actual lines
- Findings: per-pill counts + R/O/N/Esc keyboard shortcuts (26bda11a)
- Cross-tab BroadcastChannel (2eaceaeb, 9481792f) — Cathedral deep-links across browser tabs
jinflow ahead(58d420e1) — unpushed commits across every jinflow-shaped repo- proxy /query forwards params to DuckDB (4956c8f6) — the proxy-mode chain bug
- Proprietary LICENSE + third-party NOTICE (8489d475) — surface in About tab
Numbers
Section titled “Numbers”- 304 commits, 7 days
- 1 new pack live end-to-end (hrcentral.vai)
- 5 new design papers (Senses 26, 27, 28, 29, 30)
- 1 Lens system from concept to baked artifact to recursive drill-in
- 4 named Lab instances in hrcentral
- 1 pyramid + 1 hourglass retired in favor of the jinflow diamond
- 2 Subject Matter kinds introduced (Wisdom + 50cents)
- 1 local CI loop with Triage agent
- 2 rooms (down from 3)
- 18 named persons in VAI
- Release line: 0.47.4 → 0.47.23
What this week made possible
Section titled “What this week made possible”By Sunday night, the project’s noun-topology argument had settled (the diamond replaces the pyramid replaces the hourglass), the third pack was a verifiable URL, the Lens was a real first-class artifact, and five new Senses were on paper as the next architectural agenda. The hrcentral validation closes a loop that opened with the W10 pack refactor: yes, the architecture generalizes; yes, a new pack can ship in a week; yes, the engine is what it claims to be.
The week after this — the partial W20 — would be quieter, doing the closure work on Sense 14.2 and the field manual. But the architectural bets for the next six months were placed here.
The jinflow has a shape now. Five corners. One centre.