Skip to content

chore(spec): govern ai (Agent/Tool/Skill) + allowlist mode in the liveness gate#1932

Merged
os-zhuang merged 1 commit into
mainfrom
chore/spec-liveness-ai
Jun 16, 2026
Merged

chore(spec): govern ai (Agent/Tool/Skill) + allowlist mode in the liveness gate#1932
os-zhuang merged 1 commit into
mainfrom
chore/spec-liveness-ai

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

Third category for the spec-liveness gate, plus the refactor needed to make noisy categories tractable.

Stacked on #1924 (identity). Diff includes that commit until it merges; review after #1924.

Why the refactor

The json-schema categories don't map to "authorable metadata types"ai is mostly embedder/knowledge/model/runtime DTOs, with only Agent/Tool/Skill author-written. Blanket "classify every object schema" doesn't scale. Two additions:

  • allowlist mode"mode":"allowlist" + "governed":["Agent","Tool","Skill"]; only those are checked, the rest of the category is out of scope. A governed name that no longer resolves is reported (catches renames silently dropping coverage).
  • framework-field auto-classification — the ADR-0010 provenance/lock overlay fields (_lock*, _provenance, _packageId/Version, protection) appear on every type and are system-stamped; the gate auto-classifies them live so ledgers don't repeat them.

ai findings (seeded from the agent/tool/skill audits)

63 props: 46 live / 5 experimental / 12 dead, 0 unclassified.

  • Agent — core (name/role/instructions/model/skills/tools/active/planning) live; access/permissions/visibility/tenantId DEAD — "who can chat with this agent" is a no-op (the chat route hardcodes ['ai:chat','ai:agents'], agent-routes.ts:109; ADR-0049 [P0][security] Agent access control is a no-op (permissions/visibility/access) #1884). knowledge dead (shape drift). lifecycle/memory/guardrails/structuredOutput experimental (aspirational autonomy). model.provider/topP dead within a live model.
  • Toolwrite-only metadata (projected one-way for Studio; runtime uses a parallel AIToolDefinition). name/description/parameters/objectName live; category/requiresConfirmation/active/builtIn/permissions dead; outputSchema experimental.
  • Skill — name/label/description/instructions/tools/triggerConditions/active live; triggerPhrases dead (no intent matcher exists); permissions dead (+ requiredPermissions naming drift).

Gate result

security: 93 (26 live / 1 exp / 66 dead)
identity:  4 (3 live / 1 dead)
ai:       63 (46 live / 5 exp / 12 dead)
all 0 unclassified

🤖 Generated with Claude Code

@vercel

vercel Bot commented Jun 16, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
spec Ready Ready Preview, Comment Jun 16, 2026 2:42am

Request Review

…iveness gate

Third category for the spec-liveness gate. Two gate capabilities make noisy
categories tractable:

- allowlist mode (`"mode":"allowlist"` + `"governed":[...]`) — only the named
  authorable schemas are checked; the rest of the category is out of scope. The
  json-schema categories don't map to authorable types (ai is mostly embedder/
  knowledge/model DTOs), so blanket per-category classification doesn't scale. A
  governed name that no longer resolves is reported (catches renames).
- auto-classify ADR-0010 framework provenance/lock fields (_lock*, _provenance,
  _packageId/Version, _lockDocsUrl, protection) as `live`, so every type's ledger
  doesn't repeat them.

ai ledger seeded from docs/audits/2026-06-{agent,tool,skill}schema-*.md:
- 63 props: 46 live / 5 experimental / 12 dead, 0 unclassified.
- Agent: core + model/skills/tools/active/planning live; access/permissions/
  visibility/tenantId/knowledge DEAD (access-control is a no-op — chat route
  hardcodes ['ai:chat','ai:agents'], ADR-0049 #1884); lifecycle/memory/guardrails/
  structuredOutput experimental (aspirational autonomy).
- Tool: write-only metadata — name/description/parameters/objectName live (via the
  parallel AIToolDefinition); category/requiresConfirmation/active/builtIn/
  permissions dead; outputSchema experimental.
- Skill: name/label/description/instructions/tools/triggerConditions/active live;
  triggerPhrases dead (no matcher), permissions dead (+ requiredPermissions drift).

Stacked on #1924 (identity). GOVERNED = security, identity, ai.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@os-zhuang
os-zhuang force-pushed the chore/spec-liveness-ai branch from 37c1d01 to e40e7b6 Compare June 16, 2026 02:35
@github-actions github-actions Bot added documentation Improvements or additions to documentation tooling size/m labels Jun 16, 2026
@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

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

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

  • content/docs/concepts/architecture.mdx (via @objectstack/spec)
  • content/docs/concepts/cloud-artifact-api.mdx (via packages/spec)
  • content/docs/concepts/cluster-semantics.mdx (via @objectstack/spec)
  • content/docs/concepts/design-principles.mdx (via packages/spec)
  • content/docs/concepts/implementation-status.mdx (via @objectstack/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/concepts/packages.mdx (via @objectstack/spec)
  • content/docs/concepts/setup-app.mdx (via @objectstack/spec)
  • content/docs/concepts/skills.mdx (via @objectstack/spec)
  • content/docs/concepts/webhook-delivery.mdx (via @objectstack/spec)
  • content/docs/getting-started/architecture.mdx (via @objectstack/spec)
  • content/docs/getting-started/cli.mdx (via @objectstack/spec)
  • content/docs/getting-started/core-concepts.mdx (via @objectstack/spec)
  • content/docs/getting-started/examples.mdx (via @objectstack/spec)
  • content/docs/getting-started/quick-start.mdx (via @objectstack/spec)
  • content/docs/guides/adding-a-metadata-type.mdx (via @objectstack/spec)
  • content/docs/guides/ai-capabilities.mdx (via @objectstack/spec)
  • content/docs/guides/airtable-dashboard-analysis.mdx (via @objectstack/spec)
  • content/docs/guides/analytics-datasets.mdx (via @objectstack/spec)
  • content/docs/guides/api-reference.mdx (via @objectstack/spec)
  • content/docs/guides/business-logic.mdx (via @objectstack/spec)
  • content/docs/guides/cheatsheets/backward-compatibility.mdx (via @objectstack/spec)
  • content/docs/guides/cheatsheets/error-catalog.mdx (via @objectstack/spec)
  • content/docs/guides/cheatsheets/field-type-gallery.mdx (via @objectstack/spec)
  • content/docs/guides/cheatsheets/field-validation-rules.mdx (via @objectstack/spec)
  • content/docs/guides/cheatsheets/permissions-matrix.mdx (via @objectstack/spec)
  • content/docs/guides/cheatsheets/protocol-diagram.mdx (via packages/spec)
  • content/docs/guides/cheatsheets/query-cheat-sheet.mdx (via @objectstack/spec)
  • content/docs/guides/cheatsheets/quick-reference.mdx (via @objectstack/spec)
  • content/docs/guides/client-sdk.mdx (via @objectstack/spec)
  • content/docs/guides/common-patterns.mdx (via @objectstack/spec)
  • content/docs/guides/contracts/auth-service.mdx (via packages/spec)
  • content/docs/guides/contracts/cache-service.mdx (via packages/spec)
  • content/docs/guides/contracts/data-engine.mdx (via @objectstack/spec)
  • content/docs/guides/contracts/index.mdx (via @objectstack/spec)
  • content/docs/guides/contracts/metadata-service.mdx (via packages/spec)
  • content/docs/guides/contracts/storage-service.mdx (via packages/spec)
  • content/docs/guides/data-modeling.mdx (via @objectstack/spec)
  • content/docs/guides/deployment-vercel.mdx (via @objectstack/spec)
  • content/docs/guides/driver-configuration.mdx (via @objectstack/spec)
  • content/docs/guides/error-handling-client.mdx (via @objectstack/spec)
  • content/docs/guides/error-handling-server.mdx (via @objectstack/spec)
  • content/docs/guides/formula.mdx (via @objectstack/spec)
  • content/docs/guides/hook-bodies.mdx (via packages/spec)
  • content/docs/guides/kernel-services.mdx (via @objectstack/spec)
  • content/docs/guides/metadata/dashboard.mdx (via @objectstack/spec)
  • content/docs/guides/metadata/field.mdx (via @objectstack/spec)
  • content/docs/guides/metadata/flow.mdx (via @objectstack/spec)
  • content/docs/guides/metadata/index.mdx (via @objectstack/spec)
  • content/docs/guides/metadata/object.mdx (via @objectstack/spec)
  • content/docs/guides/metadata/validation.mdx (via @objectstack/spec)
  • content/docs/guides/metadata/workflow.mdx (via @objectstack/spec)
  • content/docs/guides/packages.mdx (via @objectstack/spec)
  • content/docs/guides/plugin-development.mdx (via @objectstack/spec)
  • content/docs/guides/plugins.mdx (via @objectstack/spec)
  • content/docs/guides/project-scoping.mdx (via @objectstack/spec)
  • content/docs/guides/public-forms.mdx (via @objectstack/spec)
  • content/docs/guides/runtime-services/email-service.mdx (via packages/spec)
  • content/docs/guides/runtime-services/index.mdx (via packages/spec)
  • content/docs/guides/runtime-services/queue-service.mdx (via packages/spec)
  • content/docs/guides/runtime-services/sharing-service.mdx (via packages/spec)
  • content/docs/guides/runtime-services/storage-service.mdx (via packages/spec)
  • content/docs/guides/security.mdx (via @objectstack/spec)
  • content/docs/guides/seed-data.mdx (via @objectstack/spec)
  • content/docs/guides/skills.mdx (via @objectstack/spec)
  • content/docs/guides/standards.mdx (via @objectstack/spec)
  • content/docs/guides/troubleshooting.mdx (via @objectstack/spec)
  • content/docs/protocol/knowledge.mdx (via @objectstack/spec)
  • content/docs/protocol/objectos/config-resolution.mdx (via @objectstack/spec)
  • content/docs/protocol/objectos/i18n-standard.mdx (via @objectstack/spec)
  • content/docs/protocol/objectos/lifecycle.mdx (via @objectstack/spec)
  • content/docs/protocol/objectos/plugin-spec.mdx (via @objectstack/spec)
  • content/docs/protocol/objectos/runtime-capabilities.mdx (via @objectstack/spec)
  • content/docs/protocol/objectql/index.mdx (via packages/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 packages/spec)
  • content/docs/protocol/objectui/record-alert.mdx (via @objectstack/spec)
  • content/docs/protocol/objectui/widget-contract.mdx (via @objectstack/spec)
  • content/docs/releases/index.mdx (via @objectstack/spec)
  • content/docs/releases/v9.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.

@os-zhuang
os-zhuang merged commit 61f730e into main Jun 16, 2026
13 of 14 checks passed
@os-zhuang
os-zhuang deleted the chore/spec-liveness-ai branch June 16, 2026 02:36
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

documentation Improvements or additions to documentation size/m tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant