remove-categories-sectionrun.md00_intake/stub.mdThe onboarding blueprint drafts a categories section, but there is no Category model anywhere on the
platform — its commit step has no target and is silently ignored. It generates confusing,
uncommittable datapoints and pollutes the review panel. This is a core case of the "useless datapoints
that don't make sense" the user hit in testing.
Remove categories as a first-class blueprint section end-to-end: drop it from the section vocabulary
(ONBOARDING_SECTION_KEYS), the extraction contract (DraftBlueprintSchema), the system prompt's
section list and interview flow, the commit switch, and the review-panel section metadata / editable
fields. Ensure blueprints that already carry a stored categories section degrade gracefully (ignored
/ hidden, not a hard error).
categories is gone from the blueprint section vocabulary and the extraction contract.analyse_source and draft_section can no longer produce a categories section.categories section in a stored blueprint still loads and commits
without error.categories from historical blueprint documents (safe to leave; ignored).packages/services/src/db/models/onboarding-blueprint.ts (ONBOARDING_SECTION_KEYS),
packages/services/src/ai/onboarding/{contract.ts,prompt.ts,analyse-source.ts,blueprint-tools.ts},
packages/services/src/db/services/onboarding-blueprint/commit.ts (the categories no-op branch,
documented at its top), apps/web/components/onboarding/types.ts (SECTION_META, COLLECTION_LABELS).01_define/output/spec.mdThe onboarding blueprint drafts a categories section, but no Category model exists anywhere on the
platform — its commit step has no target and is silently ignored. It generates confusing,
uncommittable datapoints and pollutes the review panel, a core case of the "useless datapoints that
don't make sense" surfaced in testing. This is the foundation stub for the onboarding-blueprint-alignment
epic under Build the Bridge / Q2-2026 O1 — Establish Product-Market Fit with Vendor Partners: every
other section-alignment stub builds on the corrected section vocabulary, so the blueprint must stop
offering a section it cannot commit before the rest of the epic proceeds.
Remove categories as a first-class blueprint section end-to-end:
ONBOARDING_SECTION_KEYS).DraftBlueprintSchema in contract.ts).prompt.ts), the
source-analysis section list (analyse-source.ts), and the completion-tool section list
(blueprint-tools.ts, which currently names "all seven sections").categories no-op branch from the commit switch (commit.ts).SECTION_META,
COLLECTION_LABELS in apps/web/components/onboarding/types.ts).Blueprints that already carry a stored categories section must degrade gracefully — ignored / hidden,
not a hard error — so existing tenants keep loading and committing.
categories is removed from ONBOARDING_SECTION_KEYS and from the DraftBlueprintSchema
extraction contract; the blueprint section vocabulary now lists six sections.prompt.ts), source analysis (analyse-source.ts), and the
completion tool description (blueprint-tools.ts) no longer reference categories as a section to
draft, and reference six sections rather than seven.analyse_source and draft_section can no longer produce a categories section.categories branch.categories section in a stored blueprint still loads in the review
panel and commits without error (the stored section is ignored / hidden, not a hard failure).categories from historical blueprint documents — safe to leave; stored
categories sections are ignored rather than removed.02_build/output/notes.mdfeat: remove-categories-section — drop categories from blueprint vocabulary end-to-endpackages/services/src/db/models/onboarding-blueprint.ts: dropped "categories" from
ONBOARDING_SECTION_KEYS (now six sections). Reworked the doc comment to explain the removal and the
ignore-legacy-section behaviour. This narrows OnboardingSectionKey and the schema enum for both
the section and commit-item key.packages/services/src/ai/onboarding/contract.ts: removed the categories field from
DraftBlueprintSchema — the satisfies Record<OnboardingSectionKey, …> keeps it in lockstep with
the model, so extraction can no longer produce a categories section.packages/services/src/ai/onboarding/prompt.ts: concierge prompt now lists six sections in order,
categories removed, and the "seven sections" phrasing updated to six.packages/services/src/ai/onboarding/analyse-source.ts: source-analysis system prompt drops the
categories bullet and says six sections.packages/services/src/ai/onboarding/blueprint-tools.ts: mark_blueprint_complete description lists
the six sections (categories removed). draft_section/analyse_source already key off
ONBOARDING_SECTION_KEYS, so they now reject/omit categories automatically.packages/services/src/db/services/onboarding-blueprint/commit.ts: doc comment updated — the commit
reads only known section keys, so a stored legacy categories section is never looked up and is
ignored (there was no runtime categories branch to remove).apps/web/components/onboarding/types.ts: dropped "categories" from the client
ONBOARDING_SECTION_KEYS, removed the SECTION_META.categories entry, and dropped the now-unused
FolderTree import. The review panel iterates SECTION_ORDER/SECTION_META, so no categories
section or editable fields render.apps/web/lib/onboarding/serialize.ts: serializeBlueprint now filters out sections whose key is
no longer in the vocabulary, so a legacy categories section on an older blueprint is dropped at the
serialize boundary — it neither renders nor counts toward the panel's review-progress totals.categories removed from ONBOARDING_SECTION_KEYS and DraftBlueprintSchema — vocabulary is now
six sections (model + contract).analyse_source and draft_section can no longer produce a categories section — both derive from
ONBOARDING_SECTION_KEYS / DraftBlueprintSchema, which no longer include it.categories section still loads (filtered out at
serialization → hidden) and commits (unknown key never looked up; the status/commit-record
$set does not re-validate the sections array) without error.categories sections are ignored at three points — extraction can't create them, the commit only
reads known keys, and serialization filters them before the client sees them.key enums lose categories. This is safe for existing documents:
enum validation runs on write, not read, and the only writes to a stored categories section's array
would come through upsertSection (targeted $ update, validators scoped to the touched path) — the
commit's status advance is a $set on status/commitRecord that never touches sections.apps/demo keeps its own separate mock onboarding vocabulary (out of scope for this run).03_release/output/changelog.mdPublished as apps/help/app/changelog/2026-07-08-remove-categories-section/page.mdx.
When you set up a new workspace, the setup assistant no longer drafts a "categories" section — a step that never connected to anything and only added items you couldn't actually use.
03_release/output/investor-update.mdWho it's for: Admins and vendors setting up a new workspace What shipped: The onboarding assistant no longer drafts a categories section that could never be committed. Why it matters: A cleaner, less confusing first-run setup — advancing product-market fit with vendor partners.
It removes the kind of useless datapoints first flagged in vendor testing.
Dig deeper: <merged-PR URL> · <changelog entry URL>
03_release/output/release.md/code-review medium was run inline instead.apps/docs/app/technical/packages/services/page.mdx — "seven blueprint
sections" → "six".platform-overview already summarises the blueprint as
"(profile, catalogue, skills, SLAs, settings)" and never listed categories; no other business page
names the section vocabulary.apps/help/app/changelog/2026-07-08-remove-categories-section/)/code-review medium on the branch diff — findings summarised against the acceptance criteria; no
correctness issues. Graceful-degradation path (stored legacy categories section) verified at three
points: extraction can't recreate it, the commit reads only known keys, and serialization filters it
before the client renders. No cleanup/dead code surfaced.categories removed from ONBOARDING_SECTION_KEYS + DraftBlueprintSchema — model + contract,
six sections.analyse_source / draft_section can't produce a categories section — both derive from the
trimmed vocabulary / schema.categories section still loads (filtered at serialization) and commits (never
looked up; status $set doesn't re-validate sections) without error.