Skip to content

feat(spec)!: remove the dead AuditConfig cluster from @objectstack/spec/system (#1878) - #3593

Merged
os-zhuang merged 1 commit into
mainfrom
chore/prune-dead-audit-config
Jul 27, 2026
Merged

feat(spec)!: remove the dead AuditConfig cluster from @objectstack/spec/system (#1878)#3593
os-zhuang merged 1 commit into
mainfrom
chore/prune-dead-audit-config

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

Closes loose-end #1 of the 2026-07 security-props recheck (#3503, umbrella #1878). Scope was verified larger than the recheck recorded: not just AuditRetentionPolicySchema — the entire system/audit.zod.ts module is dead.

The design question this answers

审计要不要元数据定义?要 —— 而且已经有了,分三层(与 Salesforce/Dynamics/ServiceNow 的两/三级模式同构):

关切 归属 现状
审计什么、History UI 应用作者 → 元数据 ✅ 活:object/field trackHistory(ADR-0052)+ feed/comment 开关
是否捕获(合规底线) 平台,故意不可配 ✅ 活:plugin-audit 引擎钩子无条件写 sys_audit_log("audit capture itself is always on for compliance")
保留/归档(组织策略) 元数据默认 + 管理员 settings 覆盖 ✅ 活:object lifecycle audit 类目 + retention_overrides(ADR-0057)

AuditConfigSchema 是与这三层平行的第四份从未接线的"配置文档",且 enabled: false 直接抵触 always-on 合规账本契约。同族先例:compliance.zod / masking.zod / RLSAuditConfig / PolicySchema 的 ADR-0056 D8 移除("compliance-grade config must never merely look live")。

What changed

  • Delete system/audit.zod.ts (696 lines: AuditConfig / AuditStorageConfig / AuditRetentionPolicy / AuditEventFilter / SuspiciousActivityRule / DEFAULT_SUSPICIOUS_ACTIVITY_RULES + the AuditEvent* shape schemas) and its test file. Zero consumers repo-wide — plugin-audit imports none of it; the sys_audit_log row shape is owned by plugin-audit's own object definition.
  • Drop the export from system/index.ts with a removal note (house pattern next to the compliance/masking note); fix the stale security-context.zod.ts module doc (3 of its 4 referenced subsystems are now removed).
  • Drop 11 manifest ratchet keys; regenerate JSON schemas, reference docs (references/system/audit.mdx removed by regen), API surface (21 exports, pure removal).
  • Drop the PROTOCOL_MAP.md row — the protocol-map gate caught the dangling link and its error message prescribed exactly this.
  • Annotate the 2026-07 recheck doc: loose-end Add metamodel interfaces for ObjectQL/ObjectUI contract #1 done (this PR), ✨ Set up Copilot instructions #2 done (feat(security)!: reconcile SharingRule authoring with the enforced runtime — group→team, +business_unit, prune guest + owner-type (#1878) #3557).
  • Changeset (minor per launch-window breaking-as-minor policy) carries the dead-knob → live-surface migration table, so an upgrading AI greps straight into the correct authoring path (trackHistory + lifecycle).

Verification

  • 6679 spec tests green (254 files); tsc --noEmit clean.
  • check:docs / check:api-surface / check:skill-refs / check:react-blocks all in sync.
  • downstream-contract typecheck clean — the frozen third-party gate pins none of the removed exports.
  • defineStack never accepted an audit key, so no stack/example changes needed (the sibling dead auditLogging boolean in the stack features block is deliberately out of scope — flagged for the aspirational-flags family follow-up).

Refs #1878, #3503.

🤖 Generated with Claude Code

…ec/system (#1878)

The entire system/audit.zod.ts module — AuditConfigSchema, AuditStorageConfig,
AuditRetentionPolicy, AuditEventFilter, SuspiciousActivityRule,
DEFAULT_SUSPICIOUS_ACTIVITY_RULES, and the AuditEvent* shape schemas — had
ZERO consumers repo-wide. The live audit path (plugin-audit) imports none of
it: capture is unconditional via engine hooks (compliance ledger), the row
shape is owned by plugin-audit's sys_audit_log object, retention rides the
object lifecycle `audit` category with per-org settings overrides, and the
authoring surface is object/field trackHistory. AuditConfigSchema.enabled
even advertised turning the compliance ledger OFF — a semantic the platform
deliberately rejects. Same ADR-0056 D8 family as the compliance.zod /
masking.zod / RLSAuditConfig / PolicySchema removals.

- Delete system/audit.zod.ts + audit.test.ts; drop the export from
  system/index.ts with a removal note (house pattern).
- Drop the 11 manifest ratchet keys; regenerate JSON schemas, reference docs
  (references/system/audit.mdx removed by regen), and the API surface
  (21 exports, pure removal).
- Fix the stale security-context.zod.ts module doc (audit joins the already
  removed compliance/masking bullets) and drop the PROTOCOL_MAP.md row
  (protocol-map gate caught the dangling link).
- Annotate the 2026-07 security recheck doc: loose-end #1 done (verified
  scope = whole module, not just AuditRetentionPolicy); #2 done via #3557.
- Changeset (minor per launch-window policy) carries the dead-knob → live-
  surface migration table.

Verified: 6679 spec tests green, tsc clean, check:docs/api-surface/skill-refs/
react-blocks in sync, downstream-contract typecheck clean (gate not pinning
any Audit export).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Jul 27, 2026

Copy link
Copy Markdown

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

1 Skipped Deployment
Project Deployment Actions Updated (UTC)
objectstack Ignored Ignored Jul 27, 2026 8:43am

Request Review

@github-actions github-actions Bot added documentation Improvements or additions to documentation protocol:system tests tooling size/xl 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.

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 protocol:system size/xl tests tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant