Skip to content

feat(audit): declarative activity milestones (ADR-0052 §5b.2)#1952

Merged
os-zhuang merged 2 commits into
mainfrom
feat/adr-0052-activity-platform
Jun 16, 2026
Merged

feat(audit): declarative activity milestones (ADR-0052 §5b.2)#1952
os-zhuang merged 2 commits into
mainfrom
feat/adr-0052-activity-platform

Conversation

@os-zhuang

Copy link
Copy Markdown
Contributor

What

ADR-0052 §5b.2 — declarative semantic activity milestones, the second tier of "the platform generates activity, apps don't code it" (tier 1 = field-level trackHistory, shipped in #1948).

Object-level activityMilestones: when a watched field transitions INTO a configured value, the platform emits a templated, semantic activity row on the record timeline — "✅ Task completed: {title}", "Deal won: {name}" — with zero hook/flow code. Takes precedence over the raw "Field: old → new" summary for the same update.

// on the object
activityMilestones: [
  { field: 'status', value: 'done', summary: '✅ Task completed: {title}', type: 'completed' },
]
  • spec: activityMilestones on ObjectSchema (top-level) + liveness classification (live, consumer cited).
  • plugin-audit: matchMilestone() + getObjectDef(); summary precedence milestone → field-change (§5b.1) → generic; a milestone may set the activity type.
  • showcase: showcase_task fires "✅ Task completed: {title}" on status→done (+ trackHistory on status/priority).

Prior art

Same posture as Salesforce Flow / ServiceNow business rules for semantic events, layered on the declarative field-tracking (Salesforce Feed Tracking / ServiceNow audit / Dataverse column auditing) shipped in #1948.

Verification (in the showcase, via browser)

  • @objectstack/spec + @objectstack/plugin-audit build clean; liveness gate green (object 58 classified, field 52); plugin-audit 18/18 tests (+2 milestone: interpolated summary + precedence; no-fire without a transition).
  • Browser-verified in examples/app-showcase: walking a task to done rendered "✅ Task completed: Build homepage" on the timeline (above the trackHistory "Status: In Progress → In Review" rows) — screenshot in the session.

Builds on

#1948 (trackHistory, §5b.1). Remaining ADR-0052 tiers (P0b object-ownership moves; P2 event-bus + email/call/meeting; objectui feed surfacing) are separate, larger efforts — not in this PR.

🤖 Generated with Claude Code

os-zhuang and others added 2 commits June 16, 2026 15:38
Demonstrates declarative activity: status/priority changes auto-appear on the
record timeline ("Status: In Progress → In Review") with zero hook code.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Object-level `activityMilestones` — when a watched field transitions INTO a
configured value, the platform emits a templated, semantic activity row
("✅ Task completed: {title}", "Deal won: {name}") on the record timeline, with
zero hook/flow code. Complements field-level `trackHistory` (§5b.1) and takes
precedence over the raw "Field: old → new" summary for the same update. Same
declarative posture as Salesforce Flow / ServiceNow for milestone events.

- spec: `activityMilestones` on ObjectSchema (top-level) + liveness classification
- plugin-audit: matchMilestone() + getObjectDef(); summary precedence
  milestone → field-change → generic; milestone may set the activity `type`
- tests: 2 new (interpolated milestone + precedence; no-fire when no transition)
- showcase: showcase_task fires "✅ Task completed: {title}" on status→done

Verified in the showcase browser: status→done renders the milestone row.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@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 Building Building Preview, Comment Jun 16, 2026 8:02am

Request Review

@github-actions

Copy link
Copy Markdown
Contributor

📓 Docs Drift Check

This PR changes 2 package(s): @objectstack/plugin-audit, @objectstack/spec.

90 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/plugin-audit, @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/plugin-audit, @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/plugin-audit, @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/plugin-audit, @objectstack/spec)
  • content/docs/guides/plugin-development.mdx (via @objectstack/spec)
  • content/docs/guides/plugins.mdx (via @objectstack/spec)
  • content/docs/guides/production-readiness.mdx (via @objectstack/plugin-audit)
  • 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 7505274 into main Jun 16, 2026
13 of 14 checks passed
@os-zhuang
os-zhuang deleted the feat/adr-0052-activity-platform branch June 16, 2026 08:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant