Parent
PRD: #441
ADR: #442
What to build
Extend the type-spec fixture suite from slice 2 to cover every resource kind in the schema, both positive and negative cases. This is the slice that proves the Luau Config type actually catches what the PRD says it catches.
Required fixtures (each in packages/bedrock/tests/luau-types/fixtures/):
accepts-full-config.spec.luau — every resource kind populated with valid entries (game-passes, places, products, universe, environments)
rejects-wrong-typed-price.spec.luau — @expect-error on a price assigned as a string
rejects-missing-required-field.spec.luau — @expect-error on a game-pass entry lacking name
expect-game-pass-shape.spec.luau — type _ = Expect<GamePassEntry, { ... }> asserting structural equality
expect-developer-product-shape.spec.luau — same for DeveloperProductEntry
expect-place-shape.spec.luau — same for PlaceEntry
expect-universe-shape.spec.luau — same for UniverseEntry
expect-env-overlay-partial.spec.luau — Expect<> on the env overlay shape demonstrating partial-of-root semantics
accepts-redaction-overrides.spec.luau — covers the RedactedGamePassOverride / RedactedPlaceOverride / RedactedDeveloperProductOverride shapes
rejects-unknown-resource-kind.spec.luau — @expect-error on a top-level key that isn't a known resource collection
If the Luau Config type as it stands in slice 1 is missing any field or entry type that a fixture above needs, this slice also adds those to src/luau/config.luau. The schema-scope decision (no XOR variants, no singleton directives) still holds — the additions are structural mirrors of schema.ts, not the deferred features.
Acceptance criteria
Blocked by
- #442 — ADR must be Accepted first
- #444 — slice 2 establishes the harness and fixture conventions
Parent
PRD: #441
ADR: #442
What to build
Extend the type-spec fixture suite from slice 2 to cover every resource kind in the schema, both positive and negative cases. This is the slice that proves the Luau
Configtype actually catches what the PRD says it catches.Required fixtures (each in
packages/bedrock/tests/luau-types/fixtures/):accepts-full-config.spec.luau— every resource kind populated with valid entries (game-passes, places, products, universe, environments)rejects-wrong-typed-price.spec.luau—@expect-erroron a price assigned as a stringrejects-missing-required-field.spec.luau—@expect-erroron a game-pass entry lackingnameexpect-game-pass-shape.spec.luau—type _ = Expect<GamePassEntry, { ... }>asserting structural equalityexpect-developer-product-shape.spec.luau— same forDeveloperProductEntryexpect-place-shape.spec.luau— same forPlaceEntryexpect-universe-shape.spec.luau— same forUniverseEntryexpect-env-overlay-partial.spec.luau—Expect<>on the env overlay shape demonstrating partial-of-root semanticsaccepts-redaction-overrides.spec.luau— covers theRedactedGamePassOverride/RedactedPlaceOverride/RedactedDeveloperProductOverrideshapesrejects-unknown-resource-kind.spec.luau—@expect-erroron a top-level key that isn't a known resource collectionIf the Luau
Configtype as it stands in slice 1 is missing any field or entry type that a fixture above needs, this slice also adds those tosrc/luau/config.luau. The schema-scope decision (no XOR variants, no singleton directives) still holds — the additions are structural mirrors ofschema.ts, not the deferred features.Acceptance criteria
packages/bedrock/src/core/schema.tsis covered by at least one positive and one negative fixturesrc/luau/config.luauto support the fixtures are pure mirrors of the TS schema (no XOR encoding, no singleton directives)Blocked by