Skip to content

Genesis 01 — Week 1: A domain learns itself

4 May – 11 May 2026 · 48 commits · From bootstrap to first 641-finding thesis

The hrcentral pack publishes its first repo-of-its-own commit on Monday May 4, eight months after nuMetrix did the same thing in February. The architecture has had time to grow up. Every pattern hrcentral reaches for in its first week — Senses, Lenses, named Lab components, the AFS shape, the Subject Matter system, multilingual config — already exists. The question is no longer “how do we build an analytics framework?” It is “how does a new domain inhabit the framework?”

Eight days later, the pack has 14 entities, 8 firing signals, 4 theses (one of them confirmed across 641 findings), 7 verdicts, multilingual support including Italian, three named Lab instances, a synthetic-data generator that walks career arcs, and one genuinely surprising domain learning. No SMEbits yet. No perspectives. No lineage. That comes later. This is the opening chapter, not the retrospective.

Monday May 4 opens with two commits an hour apart:

  • 647a376“chore: hrcentral pack — first publish from engine repo”. The pack’s first existence as a repository of its own. Before today it was a packs/hrcentral/ directory in the engine repo, prefigured but not separate.
  • a363ad0“feat: hrcentral — first end-to-end build green; mirror of engine commit”. The very first jin make that produces a KLS. The full Bronze → Silver → Gold pipeline runs, the Explorer renders something. Mirror of engine commit: the engine had been carrying the work as it took shape; today the packhub becomes authoritative.

The 14 entity YAMLs all carry created_at: "2026-05-04". They are the day-one anatomy of the pack:

affiliations, assignments, bookings, cohort, contracts,
events, grants, infrastructure, org_units, persons,
positions, projects, publications, qualifications

This is not the analytics surface yet — this is the vocabulary the analytics will sit on. A person belongs to an org_unit. An org_unit has positions. A position is held under a contract. An employment chain is a sequence of assignments. A cohort is a population block. The taxonomy isn’t read from a CSV; it is declared in entity YAMLs from the first commit.

Day 2-3 — The synthetic cast arrives, in six passes

Section titled “Day 2-3 — The synthetic cast arrives, in six passes”

On Wednesday-Thursday (May 6-7) the synth-v2 generator gets built. Six commits across 24 hours, each named Pass A.N:

  • 66b0aeePass A.1: lift the VAI cast to tenants/vai/synthetic.yaml. The 18 named persons of the worked-example tenant move out of code into a config file.
  • e492dc8Pass A.2: a career-arc walker. A synthetic person’s career isn’t an array of jobs; it’s a chain of emp_job rows with overlaps, transitions, role changes. The walker produces them.
  • 2241f03Pass A.3: career chains plus an Affiliations generator.
  • d3c918aPass A.4: population qualifications plus state-file coordination.
  • f90868aPass B: a SIS cohort generator (a different generator, lives in SIS not source).
  • 3e4042aPass A.5: orchestrator. generate_tenant.py wires all generators into a single command.

The pattern is recognisable. nuMetrix took two months of iteration to land its synthetic-data discipline (and the resulting defect manifest + calibrate.py from W08). hrcentral lands it in 24 hours. The patterns transfer; the work this week is finding which knobs are domain-specific.

Day 4 — The analytical surfaces are declared

Section titled “Day 4 — The analytical surfaces are declared”

Friday May 8 introduces the Lab and Taxonomy infrastructure:

  • 6168973 — Critical-Roles Lab (type: time_lab, succession-risk over time)
  • 9ae0cac — Hiring Lab (workforce flow over time)
  • 1cc61c9 — Cohorts Lab (population blocks: bachelor / master / doctoral)
  • 2555d6e — pack-level OrgUnit hierarchy as a first-class Taxonomy

These are Sense 13.1 named-instance declarations. The pack’s config.yml says “give me a Lab called critical-roles, with these axes and this entity”; the Explorer instantiates the surface, no Svelte file required. Three Lab variants in three commits.

The OrgUnit-as-Taxonomy choice is bigger than it looks. In nuMetrix, the OrgUnit hierarchy is a tenant-specific reference: each pack tenant rewrites the seed CSVs around its own departments and cost centres. In hrcentral, the hierarchy is pack-level — the taxonomy of academic-institution org structures is declared once at the pack level and overridden per tenant only when local idiom requires. The decision is conscious: HR analytics across institutions is more aligned than hospital material flow across hospitals. The taxonomy benefits from inheritance.

Day 5 — When a person is both student and staff

Section titled “Day 5 — When a person is both student and staff”

Saturday May 9 brings the week’s most distinctive domain learning:

  • ff15967“Persons-as-atomic — SIS generator + bronze/silver/gold for student Persons”
  • eca6f56“PhD-on-contract reconciliation + role flags on gold_person_view”

In hospital pack vocabulary, a person is unambiguous: a patient, an employee, or a clinician. The categories don’t overlap. In academic-institution vocabulary, a single person can simultaneously be:

  • a doctoral student in one department
  • a teaching assistant in another department
  • a researcher on a third-party grant
  • a contracted lecturer for an evening course

All four roles, same human, same week. The data sources confirm this — the SAP HR system has a userid, the procedural population system has a canonical_id, the orgunit system has a third identifier, and these don’t always agree. “PhD-on-contract reconciliation” is the engineering name for the operational fact: persons in academia are atomic, their roles are not.

By Saturday evening, gold_person_view carries role flags rather than role categories — is_student, is_employee, is_external, is_grant_holder — each set independently, each measured against a different source. The architectural choice is small. The domain insight is the kind that will probably become Wisdom #1 in the hrcentral pack’s SMEbits directory in a few weeks.

Day 6-7 — Dormant signals come alive, the first 641 findings

Section titled “Day 6-7 — Dormant signals come alive, the first 641 findings”

Sunday-Monday (May 10-11) is the week’s tail and its peak:

  • 7d6a8d8“activate 4 dormant signals — real SQL replacing where-false stubs”. Four signals that had been declared with stubs (so the registry would carry them) now fire real SQL. Three of the four return zero findings; one of them returns 641.
  • fbd5afc“feat: thesis_affiliation_drift — wires signal_affiliation_drift (641 findings)”. The thesis confirms. A pack that didn’t exist a week ago has a confirmed thesis backed by 641 evidence rows.
  • fa1becf“grants — first monetary entity in hrcentral”. The pack gets its first euro/franc/dollar field. Monetary entities require their own discipline (signed amounts, currency, period bounds); the pack now has one.
  • dbdb8ac“lifecycle events — point-in-time HR moments”. Hire, promote, transfer, separate. The temporal layer that HR analytics rest on.
  • 5f04e91“hrcentral — first join-based Lens + 2 verdicts for new theses”. The first verdict pair lands.

The arc is complete: bootstrap → entities → synthetic cast → analytical surfaces → reconciliation insight → firing signals → confirmed thesis. Eight days, 48 commits, one pack alive in its own repo with the analytical pyramid’s first verdicts standing on it.

The Lessons pattern that nuMetrix supports — fifteen multilingual SMEbits with provider attribution — does not exist yet in hrcentral. The pack ships its first commit with zero Wisdom entries and the smebit + bitbundle contracts come in only on May 9 as plumbing (faf60c3). The Subject Matter layer is plumbed, not populated. This is the right shape for week 1.

What’s also absent: perspectives, lineage definitions, anything calibration-related. Each of these is a layer that grows once enough analytical questions have been asked to need it. “How would I check this?” is the question that turns into a perspective. “What did this finding actually descend from?” is the question that turns into a lineage entry. Week 1 is too early.

What’s present is the day-one anatomy and the first round of “oh, this domain is shaped differently than the last one.” The PhD-on-contract reconciliation is the keepsake of the week. Six months from now, when hrcentral has its own fifteen Wisdoms, that reconciliation will probably be the first one.

  • Pack repo: jinflow-pack-hrcentral (first commit 2026-05-04)
  • The worked-example tenant: VAI (Valdoria Academic Institutions) — a fully synthetic tenant designed to exercise multi-source ingestion (ROR, Wikidata) and cross-source reconciliation
  • First end-to-end build: 2026-05-04, “first end-to-end build green; the festa landing” (a363ad0)
  • First confirmed thesis: thesis_affiliation_drift, 641 findings, 2026-05-11

This is Genesis 01 in the hrcentral series. Genesis posts are time-stamped and document a pack’s early life — the first weeks where domain choices get made and architectural patterns get exercised on new content. When the pack accumulates enough Wisdom to retrospect on, Genesis closes and Lessons begin. Six months from now, this post will read as the pack’s origin chapter.

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