Skip to content
HomePagesHomePages template kit

bundle-incomplete

"A section folder is missing one of its contract files."

Venue: check — A section folder is missing one of its contract files.

A section folder must contain, as files, at the folder root, exactly these three:

File Declares
Renderer.tsx the markup
section.ts schema and Props, as named exports
fixtures.ts fixtures, as a named export

This is the folder’s only structural rule, and there is exactly one legal shape it can take — an empty folder is told all three missing files, and a folder short one file reports exactly that one.

Two near-misses do not satisfy it:

  • a directory named section.ts/ — the check wants a file;
  • a file at components/section.ts — the contract files are looked for at the folder root, not searched for down the tree.

Everything else in the folder is unconstrained. components/, hooks/, utils/, any nesting, any number of support modules, islands, stylesheets: the check has no opinion about them, and neither does the rest of the kit.

The contract files are the platform’s entire interface to a section. The publisher reads the schema to know what the section contains and how each slot is filled, preview reads the fixtures, and Renderer.tsx is the markup. A folder missing any of them cannot be loaded as a section.

That freedom has one non-obvious consequence, worth knowing before it surprises you: every file in the folder is part of the section’s identity. The content hash covers the whole folder, not just the contract files — so editing a helper, a util, or even a comment produces a new section version on the next publish, exactly as editing Renderer.tsx would.

Create the missing file at the folder root. A section that fills nothing still declares a schema — its slots simply carry no fill:; a section with no designed states still declares fixtures.

sections/hero/
Renderer.tsx
section.ts
components/
Headline.tsx

One violation: fixtures.ts is missing. components/ is not one of the contract files — it was never a problem.

sections/hero/
Renderer.tsx
section.ts
fixtures.ts ← added
components/
Headline.tsx
sections/hero/fixtures.ts
export const fixtures = defineFixtures(
schema,
(scenario) => ({
base: scenario("luxuryMultiUnit", {
headline: "A mansard Victorian in the heart of Jamaica Plain",
}),
}),
);
  • Sections and their declarations — the three contract files, what each declaration declares, and the types they satisfy.
  • missing-slot-marker — the check that runs once the contract files exist: every editable slot in the schema has a marker in the JSX.