Skip to content

feat(spec)!: remove the dead static capabilities-descriptor cluster - #3605

Merged
os-zhuang merged 2 commits into
mainfrom
chore/prune-dead-capabilities-descriptor
Jul 27, 2026
Merged

feat(spec)!: remove the dead static capabilities-descriptor cluster#3605
os-zhuang merged 2 commits into
mainfrom
chore/prune-dead-capabilities-descriptor

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

Same ADR-0056 D8 family as the AuditConfig prune (#3593), surfaced by its flagged follow-up (the auditLogging dead boolean led here). Umbrella #1878.

What this is

The "RUNTIME CAPABILITIES PROTOCOL" tail of stack.zod.ts (214 lines): ObjectQLCapabilitiesSchema / ObjectUICapabilitiesSchema / KernelCapabilitiesSchema / ObjectStackCapabilitiesSchema / deprecated ObjectOSCapabilitiesSchema alias + all five types — a static fixed-boolean self-portrait of the platform.

Verified zero consumers (framework source, objectui apart from bare re-exports, cloud, downstream-contract): never authorable (defineStack has no such key), never registered, never fed any endpoint.

Worse than dead — it lied.fieldLevelSecurity / rowLevelSecurity / auditLogging / backgroundJobs all default(false) while every one is live and enforced; odataApi advertised an API that has never existed. An AI reading this schema builds a systematically wrong model of the platform — the exact failure mode the metadata protocol exists to prevent.

The live surfaces (declared === enforced): GET /api/v1/discovery builds its capabilities record dynamically — #3298 advertises transactionalBatch only when the route is mounted AND the engine supports transactions; /.well-known has WellKnownCapabilitiesSchema (spec/api); drivers have Driver/DatasourceCapabilities (spec/data). The changeset carries the full dead-boolean → live-discovery migration table.

Changes

  • Delete the cluster + four dead stack.test.ts describe blocks + src/index.ts explicit re-exports + two now-orphan imports (ClusterCapabilityConfigSchema / FeatureFlagSchema — both modules untouched; ApiEndpointSchema stays, consumed by the stack apis key).
  • api-surface: 10 exports, pure removal. No manifest keys existed; no doc page was generated for them.
  • Companion objectui PR drops the @object-ui/types re-exports (must land before objectui's next spec bump): objectstack-ai/objectui#chore/drop-capabilities-reexports.

Verification

6716 spec tests green (incl. protocol-map link gate) · tsc --noEmit clean · check:docs / check:api-surface / check:skill-refs / check:react-blocks in sync · downstream-contract typecheck clean.

Refs #1878, #3593.

🤖 Generated with Claude Code

…1878 family)
The "RUNTIME CAPABILITIES PROTOCOL" tail of stack.zod.ts (ObjectQL/ObjectUI/
Kernel/ObjectStack CapabilitiesSchema + the deprecated ObjectOS alias + all
five types, 214 lines) had zero consumers repo-wide: never authorable
(defineStack has no such key), never registered, never fed any endpoint.
Worse, the fixed-boolean self-portrait lied — fieldLevelSecurity/
rowLevelSecurity/auditLogging/backgroundJobs all default(false) while live
and enforced, and odataApi never existed. Real capability discovery is
dynamic: GET /api/v1/discovery (declared===enforced, #3298) + the
/.well-known WellKnownCapabilitiesSchema contract + driver-level
Driver/DatasourceCapabilities.
- Delete the cluster + the four dead stack.test.ts describe blocks + the
src/index.ts explicit re-exports + two now-orphan imports
(ClusterCapabilityConfigSchema/FeatureFlagSchema — both modules stay,
ApiEndpointSchema remains consumed by the stack `apis` key).
- api-surface: 10 exports, pure removal. No manifest keys existed; no doc
page was generated for them.
- Changeset (minor) carries the dead-boolean → live-discovery migration
table. objectui re-exports dropped in the companion PR.
Verified: 6716 spec tests green, tsc clean, check:docs/api-surface/
skill-refs/react-blocks in sync, downstream-contract typecheck clean.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@vercel

vercelBot commented Jul 27, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
ProjectDeploymentActionsUpdated (UTC)
objectstackIgnoredIgnoredJul 27, 2026 9:28am

Request Review

@github-actionsgithub-actionsBot added documentation Improvements or additions to documentation tests tooling size/l labels Jul 27, 2026
@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

This PR changes 1 package(s): @objectstack/spec.

104 hand-written doc(s) reference the affected code and may need an implementation-accuracy re-verification:

  • content/docs/ai/agents.mdx(via @objectstack/spec)
  • content/docs/ai/skills-reference.mdx(via @objectstack/spec)
  • content/docs/ai/skills.mdx(via @objectstack/spec)
  • content/docs/api/client-sdk.mdx(via @objectstack/spec)
  • content/docs/api/environment-routing.mdx(via @objectstack/spec)
  • content/docs/api/error-catalog.mdx(via @objectstack/spec)
  • content/docs/api/error-handling-client.mdx(via @objectstack/spec)
  • content/docs/api/error-handling-server.mdx(via @objectstack/spec)
  • content/docs/api/index.mdx(via @objectstack/spec)
  • content/docs/automation/approvals.mdx(via packages/spec)
  • content/docs/automation/flows.mdx(via @objectstack/spec)
  • content/docs/automation/hook-bodies.mdx(via packages/spec)
  • content/docs/automation/hooks.mdx(via @objectstack/spec)
  • content/docs/automation/index.mdx(via @objectstack/spec)
  • content/docs/automation/webhooks.mdx(via @objectstack/spec)
  • content/docs/automation/workflows.mdx(via @objectstack/spec)
  • content/docs/concepts/architecture.mdx(via @objectstack/spec)
  • content/docs/concepts/design-principles.mdx(via packages/spec)
  • content/docs/concepts/index.mdx(via @objectstack/spec)
  • content/docs/concepts/metadata-driven.mdx(via @objectstack/spec)
  • content/docs/concepts/metadata-lifecycle.mdx(via packages/spec)
  • content/docs/concepts/north-star.mdx(via packages/spec)
  • content/docs/data-modeling/analytics.mdx(via @objectstack/spec)
  • content/docs/data-modeling/drivers.mdx(via @objectstack/spec)
  • content/docs/data-modeling/external-datasources.mdx(via @objectstack/spec)
  • content/docs/data-modeling/field-types.mdx(via @objectstack/spec)
  • content/docs/data-modeling/fields.mdx(via @objectstack/spec)
  • content/docs/data-modeling/formulas.mdx(via @objectstack/spec)
  • content/docs/data-modeling/index.mdx(via @objectstack/spec)
  • content/docs/data-modeling/objects.mdx(via @objectstack/spec)
  • content/docs/data-modeling/queries.mdx(via @objectstack/spec)
  • content/docs/data-modeling/schema-design.mdx(via @objectstack/spec)
  • content/docs/data-modeling/seed-data.mdx(via @objectstack/spec)
  • content/docs/data-modeling/validation-rules.mdx(via @objectstack/spec)
  • content/docs/data-modeling/validation.mdx(via @objectstack/spec)
  • content/docs/deployment/cli.mdx(via @objectstack/spec)
  • content/docs/deployment/troubleshooting.mdx(via @objectstack/spec)
  • content/docs/deployment/validating-metadata.mdx(via @objectstack/spec)
  • content/docs/getting-started/build-with-claude-code.mdx(via @objectstack/spec)
  • content/docs/getting-started/common-patterns.mdx(via @objectstack/spec)
  • content/docs/getting-started/examples.mdx(via @objectstack/spec)
  • content/docs/getting-started/quick-reference.mdx(via @objectstack/spec)
  • content/docs/getting-started/quick-start.mdx(via @objectstack/spec)
  • content/docs/getting-started/your-first-project.mdx(via @objectstack/spec)
  • content/docs/kernel/cluster.mdx(via @objectstack/spec)
  • content/docs/kernel/contracts/auth-service.mdx(via packages/spec)
  • content/docs/kernel/contracts/cache-service.mdx(via packages/spec)
  • content/docs/kernel/contracts/data-engine.mdx(via @objectstack/spec)
  • content/docs/kernel/contracts/index.mdx(via @objectstack/spec)
  • content/docs/kernel/contracts/metadata-service.mdx(via packages/spec)
  • content/docs/kernel/contracts/storage-service.mdx(via packages/spec)
  • content/docs/kernel/index.mdx(via packages/spec)
  • content/docs/kernel/runtime-services/email-service.mdx(via packages/spec)
  • content/docs/kernel/runtime-services/index.mdx(via packages/spec)
  • content/docs/kernel/runtime-services/queue-service.mdx(via packages/spec)
  • content/docs/kernel/runtime-services/sharing-service.mdx(via packages/spec)
  • content/docs/kernel/runtime-services/sms-service.mdx(via packages/spec)
  • content/docs/kernel/runtime-services/storage-service.mdx(via packages/spec)
  • content/docs/kernel/services-checklist.mdx(via @objectstack/spec)
  • content/docs/permissions/authorization.mdx(via @objectstack/spec)
  • content/docs/permissions/permission-sets.mdx(via @objectstack/spec)
  • content/docs/permissions/permissions-matrix.mdx(via @objectstack/spec)
  • content/docs/permissions/positions.mdx(via @objectstack/spec)
  • content/docs/permissions/rls.mdx(via @objectstack/spec)
  • content/docs/permissions/sharing-rules.mdx(via @objectstack/spec)
  • content/docs/plugins/adding-a-metadata-type.mdx(via @objectstack/spec)
  • content/docs/plugins/development.mdx(via @objectstack/spec)
  • content/docs/plugins/index.mdx(via @objectstack/spec)
  • content/docs/plugins/packages.mdx(via @objectstack/spec)
  • content/docs/protocol/backward-compatibility.mdx(via @objectstack/spec)
  • content/docs/protocol/diagram.mdx(via packages/spec)
  • content/docs/protocol/kernel/config-resolution.mdx(via @objectstack/spec)
  • content/docs/protocol/kernel/i18n-standard.mdx(via @objectstack/spec)
  • content/docs/protocol/kernel/index.mdx(via @objectstack/spec)
  • content/docs/protocol/kernel/lifecycle.mdx(via @objectstack/spec)
  • content/docs/protocol/kernel/plugin-spec.mdx(via @objectstack/spec)
  • content/docs/protocol/kernel/runtime-capabilities.mdx(via @objectstack/spec)
  • content/docs/protocol/knowledge.mdx(via @objectstack/spec)
  • content/docs/protocol/objectql/index.mdx(via @objectstack/spec)
  • content/docs/protocol/objectql/query-syntax.mdx(via @objectstack/spec)
  • content/docs/protocol/objectql/schema.mdx(via @objectstack/spec)
  • content/docs/protocol/objectql/security.mdx(via packages/spec)
  • content/docs/protocol/objectql/state-machine.mdx(via @objectstack/spec)
  • content/docs/protocol/objectui/actions.mdx(via @objectstack/spec)
  • content/docs/protocol/objectui/concept.mdx(via @objectstack/spec)
  • content/docs/protocol/objectui/index.mdx(via @objectstack/spec)
  • content/docs/protocol/objectui/layout-dsl.mdx(via @objectstack/spec)
  • content/docs/protocol/objectui/record-alert.mdx(via @objectstack/spec)
  • content/docs/protocol/objectui/widget-contract.mdx(via @objectstack/spec)
  • content/docs/releases/implementation-status.mdx(via @objectstack/spec)
  • content/docs/releases/index.mdx(via @objectstack/spec)
  • content/docs/releases/v12.mdx(via @objectstack/spec)
  • content/docs/releases/v13.mdx(via @objectstack/spec)
  • content/docs/releases/v16.mdx(via @objectstack/spec)
  • content/docs/releases/v9.mdx(via @objectstack/spec)
  • content/docs/ui/actions.mdx(via @objectstack/spec)
  • content/docs/ui/create-vs-edit-form.mdx(via @objectstack/spec)
  • content/docs/ui/dashboards.mdx(via @objectstack/spec)
  • content/docs/ui/forms.mdx(via @objectstack/spec)
  • content/docs/ui/index.mdx(via @objectstack/spec)
  • content/docs/ui/public-data-collection.mdx(via @objectstack/spec)
  • content/docs/ui/setup-app.mdx(via @objectstack/spec)
  • content/docs/ui/translations.mdx(via @objectstack/spec)
  • content/docs/ui/views.mdx(via @objectstack/spec)

Advisory only. To re-verify, run the docs-accuracy-audit workflow scoped to these files:
node scripts/docs-audit/affected-docs.mjs origin/main → pass the list as args.docs.

… the feature-flags example
The platform skill's os:check example imported ObjectStackCapabilities to
type a system.features array — the descriptor this PR removes (and which no
endpoint ever served). The example now shows only the live part
(FeatureFlag.create compile-checked values) and the prose points capability
discovery at GET /api/v1/discovery. Caught by check:skill-examples — my
repo-wide grep excluded *.md and missed TS blocks inside skill docs.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@os-zhuang
os-zhuang merged commit b0e78a8 into mainJul 27, 2026
17 checks passed
@os-zhuang
os-zhuang deleted the chore/prune-dead-capabilities-descriptor branch July 27, 2026 09:42
os-zhuang added a commit that referenced this pull request Jul 27, 2026
…ture.zod) (#3630)
* feat(spec)!: remove the orphaned FeatureFlagSchema module (kernel/feature.zod)
Follow-through of #3605: kernel/feature.zod.ts (FeatureStrategy,
FeatureFlagSchema, the FeatureFlag factory + types) had zero runtime
consumers, and its only protocol home — the static
ObjectStackCapabilities.system.features descriptor — was itself removed as
dead in #3605. Not authorable (defineStack has no features key), not
registered, not read by any engine. Live toggles are the feature_flags
settings manifest (ADR-0007, OS_FEATURE_FLAGS_*) and the
PUBLIC_AUTH_FEATURES registry for auth gates.
- Delete feature.zod.ts + feature.test.ts; kernel/index export dropped with
a removal note; manifest keys kernel/FeatureFlag + kernel/FeatureStrategy
dropped; PROTOCOL_MAP row dropped; SKILL_MAP entry dropped (skill refs
regenerated).
- Docs: references/kernel/feature.mdx removed by regen; the hand-written
quick-reference row removed; the platform skill's Feature Flags section
rewritten to point at the settings surface; public-auth-features.ts
"not to be confused" comment updated.
- api-surface: 4 exports, pure removal. Changeset (minor) carries the
removed-shape → settings-manifest migration table.
Verified: 6663 spec tests green, tsc clean, check:docs/api-surface/
skill-refs/skill-docs/react-blocks/skill-examples all in sync,
downstream-contract typecheck clean.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* test(dogfood): drop the removed feature.zod expression surface from the ADR-0058 ledger
The expression-conformance ledger's cel-formula entry covered
kernel/feature.zod.ts:expression — the surface vanished with the orphaned
FeatureFlagSchema module, so the ADR-0060 checkLedger STALE-covers gate
correctly failed Dogfood shard 2/2. Caught by the ledger, not by symbol
grep: the entry references the file PATH, not the FeatureFlag symbol.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: Jack Zhuang <277994282+os-zhuang@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
akarma-synetal pushed a commit to akarma-synetal/framework that referenced this pull request Aug 4, 2026
…ved ObjectStackCapabilities schema (objectstack-ai#4781) (objectstack-ai#4816)
`content/docs/protocol/kernel/runtime-capabilities.mdx` documented
`ObjectStackCapabilities` (data/ui/system subsystem descriptors) end to end,
including two full `const capabilities: ObjectStackCapabilities = {...}`
examples and a `hasCapability()` helper. That schema was removed in objectstack-ai#3605:
`import type { ObjectStackCapabilities } from '@objectstack/spec'` is TS2305,
and none of the tabled keys (`queryDistinct`, `queryHaving`, `queryJoins`,
`geoSpatial`, …) exist in any live schema. The page named "AI Agents:
Understanding platform constraints for code generation" as an audience, so it
was teaching a non-existent capability-negotiation surface to code generators.
Delete the page. The live mechanisms are the REST discovery endpoint and the
driver-side `DriverCapabilities` (post-objectstack-ai#4634).
The page's trailing "Discovery Endpoint" section was NOT accurate either and is
deliberately not moved verbatim. Checked against the implementation:
- `ObjectStackProtocolImplementation.getDiscovery()`
(packages/metadata-protocol/src/protocol.ts) returns
`{ version, apiName, routes, services, capabilities }` — no `name`, no
`environment`, no `locale`. The page showed all three on
`GET /api/v1/discovery`; those fields belong to the *dispatcher*-served
`/.well-known/objectstack` payload (packages/runtime/src/http-dispatcher.ts
`getDiscoveryInfo`), which `content/docs/api/index.mdx` already documents
correctly and separately.
- The page's sample carried `routes.graphql: "/graphql"`. `ApiRoutesSchema`
(packages/spec/src/api/discovery.zod.ts) has no `graphql` key and
`serviceToRouteKey` never maps one — flatly wrong.
- `version: "1.0.0"` — the REST handler overrides it with
`config.api.version` (`v1`).
Folded into content/docs/api/index.mdx only the parts that verify:
- `GET /api/v1` and `GET /api/v1/discovery` are one handler registered at two
paths (`registerDiscoveryEndpoints`, packages/rest/src/rest-server.ts), and
the dispatcher cedes `<basePath>/discovery` to REST when mounted
(ADR-0076 D11) — it owns the route only in REST-less compositions.
- The `capabilities` map and `transactionalBatch` (objectstack-ai#3298 / ADR-0034): true
iff `POST {basePath}/batch` is mounted AND the engine can honour a
transaction (protocol derives it from `engine.transaction`, rest-server
ANDs it with `api.enableBatch`).
Also: meta.json nav entry removed; the two inbound links (automation/index.mdx,
kernel/index.mdx) repointed; scripts/role-word-baseline.json ratcheted down for
the removed file (check-role-word fails on a vanished baselined file).
Docs-only, releases nothing — empty changeset.
Claude-Session: https://claude.ai/code/session_018iARDqtrhQgz6fVHDeDkbQ
Co-authored-by: Claude <noreply@anthropic.com>
qq9340100 pushed a commit that referenced this pull request Aug 7, 2026
1. packages/spec/variant-docs.json:孤儿条目 "sync mapping transform"
(key type:cast|constant|javascript|lookup|map) —— 该判别联合已随
FieldMapping.transform 一并退役,按 check:variant-docs 自身处方删除条目。
门读数:19 unions / 9 governed / exempt 11 → 10。
2. packages/qa/dogfood/test/expression-conformance.ledger.ts:cel-formula 行的
cover 'shared/mapping.zod.ts:expression' —— 该 expression 面由被退役的
javascript 成员携带,源码里已不存在,故删除该 cover(沿用同一行 #3605
kernel/feature.zod.ts 的处理先例并留注释);summary 同步去掉
"+ mapping expressions",因该侧已无可解释的东西。
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011M7UwH25Unfi73UHim7ajY
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentationImprovements or additions to documentationsize/lteststooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@os-zhuang