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
{{ message }}
Repository navigation
Commit 2d8dba3
Browse filesBrowse the repository at this point in the historyBrowse files
feat(spec): sink the #7865 injected-column provenance derivation into @objectstack/spec/data and warn at lint time (#8342)
* feat(spec): sink the #7865 injected-column provenance derivation into @objectstack/spec/data and warn at lint time (#8116)
Move the injected-system-column definition tables (AUDIT_FIELD_DEFS and
siblings), injectedSystemColumnDefs, and the #7865 provenance trio
(platformProvisionsStorage / resolveInjectedColumnProvenance /
unprovisionedInjectedColumns) into packages/spec/src/data, per the
2026-08-12 maintainer ruling on #8116 (option 1 — the WHAT-half move
#3786 anticipated, scoped to the provenance predicate).
@objectstack/metadata-core re-exports every previously-public name, so
its surface and every downstream import are unchanged; the served-
document injection/strip pair (#6562) stays there, now consuming the
spec tables plus the newly exported isInjectedColumnDefinition.
@objectstack/lint (spec-only by contract) consumes the export:
validate-expressions warns on record.<anchor> / previous.<anchor> reads,
and validate-semantic-roles warns on stageField / highlightFields
pointers, when the anchor is an injected system column on an ADR-0015
external object — registered, addressable, and backed by no storage.
Warning severity per the #7219 criterion (no closed oracle over the
remote schema); an author-declared column of the same name is 'author'
provenance and never warned (#7859's security direction).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Euoy6wyfzgiWtgCg4s6JK2
* test(lint): excuse the #8116 AST-walk locals in the #5017 receiver-completeness guard
The new unprovisioned-anchor pass introduces five locals whose member
reads are Map/Set/AST plumbing, never metadata keys; the meta-guard's
completeness check requires them excused by name.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Euoy6wyfzgiWtgCg4s6JK2
* chore(spec): regenerate api-surface + export-origins for the #8116 data exports (10 added, 0 removed)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Euoy6wyfzgiWtgCg4s6JK2
* test(lint): type warningsOf over ExprIssue — clears the 9 test-layer tsc errors the TEST_DEBT ratchet caught (#8116)
The #8116 test block's helper took Array<{ severity?: string }>, so every
.message/.where read off its result was TS2339 under the lifted-exclusion
measurement (recorded 20 -> measured 29). Typed over the module's own
ExprIssue, the lifted-exclusion count is back to exactly the recorded 20;
the ledger entry is untouched.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Euoy6wyfzgiWtgCg4s6JK2
* chore(spec): regenerate api-surface + export-origins from the merged tree (#8116 x #8341/#8335)
Discharges the os-regen deferral from the preceding merge commit: the
data.json shards regenerate with both sides present — this PR's 10 new
provenance exports and main's landed entries (zodIssuesToFields intact
in the api.json shards).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Euoy6wyfzgiWtgCg4s6JK2
---------
Co-authored-by: Claude <noreply@anthropic.com>
Author-time warning for unprovisioned injected anchors on external objects (#8116). The injected-system-column definition tables and the #7865 provenance derivation (`platformProvisionsStorage`, `resolveInjectedColumnProvenance`, `unprovisionedInjectedColumns`, plus the newly exported identity predicate `isInjectedColumnDefinition`) moved from `@objectstack/metadata-core` into `@objectstack/spec/data`; `@objectstack/metadata-core` re-exports every previously-public name unchanged, so no downstream import changes. Built on the spec export, `@objectstack/lint` now warns when an expression, field conditional rule, formula, `stageField` or `highlightFields` entry references an injected system column (`owner_id`, `organization_id`, the audit family, `owning_business_unit_id`) on an ADR-0015 `external` object: the platform registers the anchor but provisions no storage behind it, so the reference silently degrades at query time (on SQLite: constant-false, HTTP 200, zero rows, no error). New advisory rule id `semantic-role-field-unprovisioned`; the expression finding is warning-severity and never fails the build. An author-declared column of the same name is treated as the author's real remote column and never warned.
0 commit comments