You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat(cli+spec): compile a project of N packages into one packages[] artifact, with the assembled package body declared (ADR-0130 D4 producer, #14242 B) (#14513)
* wip(spec): declare the assembled package body (ADR-0130 D4, #14242 B)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHvF5hyiZjnCyExFnfQB8m
* wip(cli+objectql): full-parse load gate, per-package lower and rules
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHvF5hyiZjnCyExFnfQB8m
* wip(examples+qa): app-multi-package fixture and its dogfood boot
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHvF5hyiZjnCyExFnfQB8m
* wip(tests): seam pins for the assembled package body
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHvF5hyiZjnCyExFnfQB8m
* docs+changeset: a project is a multi-package artifact
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHvF5hyiZjnCyExFnfQB8m
* test(qa): assert the server writable verdict on both artifact packages (#14430 landed)
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHvF5hyiZjnCyExFnfQB8m
* fix(tooling): follow the stack shape spread; baseline the new example
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHvF5hyiZjnCyExFnfQB8m
* fix(examples): type the multi-package fixture against spec SOURCE
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHvF5hyiZjnCyExFnfQB8m
* fix(spec): keep the assembled-body aliases key-precise but element-loose — the per-key mapped alias emitted the collections shape a second time and OOM'd the type-check-debt re-measure (#14439)
`AssembledPackageBody` / `AssembledPackageBodyParsed` referenced
`(typeof STACK_DEFINITION_COLLECTIONS_SHAPE)[K]` per collection key. Because
those aliases are exported, the declaration emit wrote the shape const into
`stack.zod-*.d.ts` a second time (21,443 lines beside the 42,449 the stack
schema already inlines), and every consumer program re-inferred all ~35
collection input/output types once more. `Type Check · debt ledger` on the
PR went red: the `qa/http-conformance` TEST_DEBT re-measure exceeded the
4096 MB ceiling the gate pins as CI's, while the merge-queue run on the base
passed the same step. Reproduced locally (exit 3) on b4b9732.
The aliases now keep the DERIVED key set (`AssembledPackageBodyKey`, still
read off `COMPOSE_KEY_DISPOSITIONS`) and type each collection as `unknown`.
Nothing exported references the shape const any more, so the second copy is
not emitted and the per-key inference does not run. `assembledPackageBodyShape()`
keeps its `Pick<typeof STACK_DEFINITION_COLLECTIONS_SHAPE, K>` return type
(internal, not emitted), so a disposition key missing from the collections
shape is still a compile error, and the RUNTIME schema still carries every
collection's full declaration — refusals are unchanged. One spec pin narrows
its element access at the point of use, as every reader of an assembled
body already does.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHvF5hyiZjnCyExFnfQB8m
* fix(spec): annotate the assembled package body with a STRUCTURAL type so the stack schema's printed declaration carries no named alias (#14439)
A named type alias inside `ObjectStackDefinitionSchema`'s printed type
(`manifest: z.ZodType<AssembledPackageBodyParsed, AssembledPackageBody>` on
the `packages` element) can only be IMPORTED by the declaration bundler, never
inlined. `system/environment-artifact.zod.ts` embeds the stack type, so the
bundler turned `stack.zod` into a shared chunk and gave the
`environment-artifact` chunk an import edge into it: every consumer of
`@objectstack/spec/system` started loading the entire stack schema
declaration it never loaded before.
Measured on the `qa/http-conformance` TEST_DEBT re-measure program, same
shape as the gate builds it, 8 GB cap so the peak is measured rather than
hit: base `53d36892` 691,580 lines of definitions / 4,473,321 K heap; PR
head `3878a582` 734,202 (+42,622 — the size of the stack schema's
declaration) / 4,875,249 K — over the 4096 MB ceiling
`scripts/check-type-check-coverage.mjs` pins as CI's, which is the red
`Type Check · debt ledger` lane on both earlier pushes.
`AssembledPackageBodySchema` is now annotated `z.ZodType<Record<string,
unknown>, Record<string, unknown>>` and the two ADR-0122 aliases are derived
FROM the schema (`z.input` / `z.infer`), so nothing named can re-enter the
stack schema's printed type. The runtime schema is unchanged: manifest fields
plus every collection, key set still derived from `COMPOSE_KEY_DISPOSITIONS`.
What consumers lose is static field typing inside an assembled body, which the
PR's readers (`compile.ts`, `artifact-packages.ts`) never relied on.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UHvF5hyiZjnCyExFnfQB8m
---------
Co-authored-by: Claude <noreply@anthropic.com>
0 commit comments