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
* fix(spec): stop gen:schema silently unpublishing transform-bearing schemas (#2978)
PageTabsProps vanished from json-schema/ when #2967 added an
ExpressionInputSchema (.transform) field — zod's toJSONSchema cannot
represent transforms in the default output mode, and build-schemas.ts
silently skipped it, so the next gen:docs run would have deleted the
published PageTabsProps reference section.
Two-part fix:
1. io:'input' fallback — when output-mode conversion fails on a
transform, retry with io:'input'. These JSON Schemas describe what
authors WRITE, and the input side of a transform pipe is plain data,
so it is representable (for PageTabsProps.visibleWhen it emits the
correct `anyOf: [string, expression envelope]` authoring shape).
Rescued schemas are marked `x-io: "input"`. This restores
PageTabsProps and 149 other transform-blocked public contracts
(ObjectSchema, FieldSchema, FlowSchema, PageSchema, ActionSchema, …);
only 18 truly unrepresentable schemas (function/Date/BigInt/custom)
remain skipped.
2. Disappearance ratchet — json-schema/ is gitignored, so the committed
json-schema.manifest.json records every schema key ever emitted.
A key present in the manifest but absent from a build now fails
gen:schema loudly with remediation steps; deliberate retirements must
remove the key in the same PR. Silent skip remains only for types
that have never been representable.
Also escape literal `|` in the description cell of generated property
tables (build-docs.ts) — rescued schemas surfaced descriptions with
pipes that split GFM table rows.
Closes#2978
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fn6qMKtJeVbs2KzouWDHhB
* docs(references): regen from restored JSON Schemas (#2978)
gen:docs over the post-fix json-schema/ output. PageTabsProps keeps its
section (now including the visibleWhen items shape from #2967), and the
149 schemas rescued by the io:'input' fallback gain reference sections —
previously delivered-but-undeclared contracts (Prime Directive #10).
Existing table rows with literal pipes in descriptions are re-emitted
with GFM escaping.
Verified: `pnpm docs:build` compiles all regenerated MDX.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fn6qMKtJeVbs2KzouWDHhB
* fix(spec): address CodeQL alerts in gen:schema/gen:docs scripts (#3012)
- build-schemas.ts: read the ratchet manifest directly and treat ENOENT
as first-run bootstrap instead of existsSync-then-read (TOCTOU).
- build-docs.ts: escape backslashes before pipes in table-cell
descriptions — an existing `\|` would otherwise decay into an escaped
backslash followed by a live pipe, splitting the GFM cell.
No output changes: regenerated json-schema/ and references/ are
byte-identical.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Fn6qMKtJeVbs2KzouWDHhB
---------
Co-authored-by: Claude <noreply@anthropic.com>
|**active**|`boolean`| optional | Is active (Deprecated: use status) |
111
+
|**runAs**|`Enum<'system' \| 'user'>`| optional | Execution identity for the run: system = elevated (bypasses RLS), user = the triggering user (RLS-respecting). A schedule-triggered run has no trigger user, so under user it runs UNSCOPED (elevated) — declare system to make that explicit. |
0 commit comments