The build log

One entry per shipped build prompt — what was built, what was deliberately left out, and the tests behind it. Generated from the product repository's own implementation notes rather than written for this page.

Why this is public

A logo wall is an argument from other people's confidence. This is an argument from evidence: every entry names a segment, a date and a decision, and the decisions include the ones that went the other way. It is also the only asset on this site a competitor with a marketing team cannot reproduce, because reproducing it would mean publishing their own gaps.

B-25

Import & migration engine [S11]

Import as a product surface, not a utility (S-04). Closes S11.

B-24

Search [S10]

Three engines, one permission model. Closes G-46, and lays the groundwork G-53 needs by putting the object revision on every embedding now rather than in the AI phase.

B-23S09

Component risk & supplier portal

"a supplier's session cannot fetch an unshared part by direct ID."

B-22S09

Suppliers, manufacturers & AML/AVL

A supplier already existed as a thin record. B-22 adds three more, and the separations are not bureaucratic:

B-21S08

Workflow engine, rules engine & approvals

"Durable: an instance survives restart and resumes correctly."

B-20S07

Impact analysis & mass change

The prompt opens with a constraint worth repeating: "No AI in this prompt — the agent in B-29 will call these services, not replace them." Everything here is a query and a rule, and the same question asked twice returns the same bytes. A test asserts that, bec

B-19S07

Change management

Problem Report, ECR, ECO, ECN, Deviation, Waiver and Stop Ship are one ObjectType discriminated by changeType, not seven types. They share every field, every relationship and every lifecycle state; what differs is which fields matter and who approves.

B-18S06

Compare, where-used and saved views

The prompt's rule — "Both sources go through B-15, so the diff always compares like with like" — is not an optimisation. A comparison with a resolution on one side and a stored bill on the other reports every effectivity and variant decision as a difference: a

B-17S06

Data grid and BOM workbench

The prompt says "treat performance and paste fidelity as requirements, not polish." Both are decided in src/lib/grid/model.ts, which has no DOM in it and is tested without a browser; src/components/grid/DataGrid.tsx renders over it.

B-16S05

Effectivity, variants and baselines

B-15 already had variant option sets, rules, selection validation and baselines, because the engine could not be built without something to consume. So this prompt is mostly one substantial replacement and one genuinely new construct.

B-15S05

Configuration resolution engine [GATE]

Closes G-02, the largest omission in the original inventory, plus the engine-side of G-16 (effectivity) and G-17 (variants). Segment S05 complete.

B-14S05

Structure model [GATE]

Along with B-06 and B-08, this is foundation. It also closes two limitations recorded earlier — B-09's workspaces do not stage relationships and B-10's the closure ignores workspaces — because both had the same root cause and this is where it lives.

B-13S04

Document management

Almost nothing here is new machinery. A document is an ObjectType with B-08's revision and lifecycle semantics, B-09's locking and B-12's bytes; this prompt is the seam where the three meet plus the things that are genuinely document-specific — markup, control

B-12S04

File vault

Infrastructure, not a feature — which mostly means the failure modes are storage failure modes and the tests are about them.

B-11S03

UOM, materials, specifications and localisation

Four subsystems that have nothing to do with each other except that everything else depends on all of them.

B-10S03

Item master and classification

Schema — ClassNode (environment-scoped, so in the config snapshot), StructurePath, RelationshipType.buildsStructure, and the part attribute set from §4: criticality, hazardous, regulatory flags, preferred status.

B-09S02

Workspaces, locking and deep copy

Every feature here is about the same situation: two people and one part. The assertions worth reading are the ones where the second person's work survives.

B-08S02

Revision, lifecycle and numbering [GATE]

This is the prompt the sequence flags as most likely to be wrong in a way that is expensive later. Everything here is identity, and identity is the one thing a customer cannot change after the first drawing is printed.

B-07S01

Tenant config lifecycle & sandbox

Schema — ConfigEnv discriminator (PRODUCTION / STAGING / SANDBOX) on ObjectType, RelationshipType and LifecycleDef; ConfigVersion for immutable snapshots.

B-06S01

Object engine

Definition layer — ObjectType, AttributeDef, RelationshipType, LifecycleDef, LifecycleState, LifecycleTransition.

B-05S00

Entitlement, branding & terminology

Plans and seats — Plan, TenantPlan, src/lib/billing/features.ts, src/lib/billing/seats.ts.

B-04S00

RBAC, audit trail & notifications

RBAC — src/lib/authz/: actions.ts (9 verbs, 16 resources), policy.ts (grants for all 10 roles), can.ts (the single entry point) with assertCan / ForbiddenError.

B-03S00

Application shell

Schema — Entitlement (shape adopted from crm-vb-co), NotificationAggregate, UserPreference, SavedView.

B-02S00

Tenancy, identity & isolation

Schema (prisma/schema.prisma) — Tenant, BusinessUnit, Plant, Department, Team, Membership, ExternalOrg, plus User/Account/Session/VerificationToken for Auth.js. Every tenant-scoped model carries tenantId with an index leading on it.

B-01S00

Scaffold

Config: package.json, tsconfig.json, tsconfig.scripts.json, next.config.ts, postcss.config.mjs, eslint.config.mjs, vitest.config.ts, components.json, Dockerfile, .env.example, .gitignore.