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(spec): declare the viewItems channel — a portable home for non-container view artifacts in runtime-assembled manifests (#8564)
* feat(spec): declare the viewItems channel for non-container view artifacts in assembled manifests (#5320)
Option B of the 2026-08-12 fork ruling on #5320: runtime-assembled manifests
(package export, environment artifacts) get a DECLARED home for the view
artifacts the authored stack vocabulary refuses — expanded viewKind items,
tenant-authored standalone ViewItems, flattened overlays.
- AssembledViewArtifactSchema: the non-container branches of the view metadata
vocabulary, built from VIEW_METADATA_MEMBERS minus container (no drift).
- partitionAssembledViewArtifacts: producer-side re-aggregation (A's mechanical
half) — containers travel in views:, exactly-derivable expanded items fold
away, everything else travels in viewItems:.
- ObjectStackDefinition.viewItems: declared always-refusing (machine-assembled
only) so a hand-authored viewItems fails tsc and parse with the prescription
instead of being silently stripped.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012MNV7ZSCjNfA38eDCjsXQL
* feat(spec): export the shared container classifier, ADR-0122 Parsed alias, root re-exports, INVALID_METADATA provenance row (#5320)
- isViewContainerShaped: ONE classifier for producers (partition) and the
consumer (the registration loop's views: tighten) — two classifiers would let
an assembler emit an entry the importer refuses.
- AssembledViewArtifactParsed (ADR-0122 alias convention).
- Root index re-exports the assembled-views vocabulary (the engine imports
from the package root).
- ERROR_CODE_LEDGER: INVALID_METADATA provenance row under @objectstack/objectql
(third emitter — the views: tighten and the viewItems: channel refuse 422).
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012MNV7ZSCjNfA38eDCjsXQL
* merge origin/main (os-regen artifacts taken from main; regeneration follows)
* chore(spec): regenerate api-surface/export-origins after merging origin/main (#5320)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_012MNV7ZSCjNfA38eDCjsXQL
---------
Co-authored-by: Claude <noreply@anthropic.com>
// [#5320] Third EMITTER of the code (metadata-protocol and plugin-security
348
+
// already register it) — the registration loop's `views:` tighten refuses a
349
+
// non-container entry, and the `viewItems:` channel refuses an entry the
350
+
// assembled vocabulary rejects, both 422/INVALID_METADATA. Provenance, not
351
+
// identity, per this file's header.
352
+
'INVALID_METADATA',
347
353
'ERR_READONLY_FIELD_REJECTED',// strictReadonlyWrites: the write would strip caller-supplied fields, so it was refused (#5126; since #6437 that covers the primary_key strip too — one code, `drops` carries the per-reason breakdown)
0 commit comments