Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion docs/adr/0038-build-verification-loop.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

> **🔶 Cloud-owned — superseded in part by cloud ADR-0025 (2026-06-25).** The in-UI AI runtime and the `ask` / `build` agents described here moved to the **cloud / Enterprise** distribution (`@objectstack/service-ai` → `cloud/packages/service-ai`, closed); the open framework exposes AI only via `@objectstack/mcp` (BYO-AI) and ships no in-product `ask` / `build` chat. Retained as historical design context, now **cloud-owned** — see [`cloud/docs/adr/0025-service-ai-to-cloud-open-mcp-only`](https://github.com/objectstack-ai/cloud/blob/main/docs/adr/0025-service-ai-to-cloud-open-mcp-only.md).

**Status**: Accepted — 2026-10-28 (ruled on objectstack#26553, ADR batch 2; proposed 2026-06-11). cloud-owned; implemented: L1 graph lint and L4 `verify_build` self-correction in cloud `service-ai-studio` (`verify/graph-lint.ts`), L3 runtime probes in the framework (`metadata-protocol/src/build-probes.ts`, `RuntimeBuildIssue` contract, post-publish probe report in `protocol.zod.ts`), L5 golden-prompt evals (cloud `eval-golden-prompts.yml` on `ai_eval_cases` / `ai_eval_runs`); pending: L2 renderability contract (dataset compile only today).
**Status**: Accepted — 2026-10-28 (ruled on objectstack#26553, ADR batch 2; proposed 2026-06-11). cloud-owned; implemented: L1 graph lint and L4 `verify_build` self-correction in cloud `service-ai-studio` (`verify/graph-lint.ts`), L3 runtime probes in the framework (`metadata-protocol/src/build-probes.ts`, `RuntimeBuildIssue` contract, post-publish probe report in `protocol.zod.ts`), L5 golden-prompt harness built (cloud `eval-golden-prompts.yml`, `scripts/eval/golden-prompts.mjs` on `ai_eval_cases` / `ai_eval_runs`) but unarmed — nightly schedule off since 2026-08-04 and no eval environment (cloud#1119); pending: L2 renderability contract (dataset compile only today), L5 arming.
**Deciders**: ObjectStack Protocol Architects
**Builds on**: [ADR-0033](./0033-ai-assisted-metadata-authoring.md) (drafts as the staging layer — this ADR **replaces its human-approval assumption for AI builds** with a machine gate; HITL stays for destructive actions), [ADR-0021](./0021-analytics-dataset-semantic-layer.md) (datasets — what most verification probes exercise), ADR-0037 / [framework#1694](https://github.com/objectstack-ai/objectstack/pull/1694) (Live Canvas — the *human-visibility* complement to this ADR's *machine-verification*)
**Consumers**: `@objectstack/service-analytics` + `@objectstack/objectql` (verification probes), `../cloud/service-ai-studio` (graph lint, `verify_build` tool, self-correction protocol, eval intelligence), `../objectui` (build health card in chat), `ai_eval_cases`/`ai_eval_runs` (existing, currently-unused storage)
Expand Down
2 changes: 1 addition & 1 deletion docs/adr/0046-package-docs-as-metadata.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# ADR-0046: Package documentation as metadata — flat `src/docs/*.md` compiled into the manifest

**Status**: Accepted — 2026-10-28 (ruled on objectstack#26553, ADR batch 2; proposed 2026-06-12, revised — simplified from the original directory/docSet design). implemented: P1 (`DocSchema`, `os build` collection of flat `src/docs/*.md`, publish lint, kernel `doc`), P2 (console documentation portal and help menu, Studio doc editor), P3a/P3b (`book` spine, `GET /meta/book/:name/tree`, §6.7 audience gating in the REST read gate); pending: P3c (Studio drag-edit of `doc.order` / groups, anonymous library via `apps/docs`) and P3d (portal taxonomy, book-level search, §5 tags).
**Status**: Accepted — 2026-10-28 (ruled on objectstack#26553, ADR batch 2; proposed 2026-06-12, revised — simplified from the original directory/docSet design). implemented: P1 (`DocSchema`, `os build` collection of flat `src/docs/*.md`, publish lint, kernel `doc`), P2 (console documentation portal and help menu, Studio doc editor), P3a/P3b (`book` spine, `GET /meta/book/:name/tree`, §6.7 audience gating in the REST read gate); pending: P3c (Studio drag-edit of `doc.order` / groups, anonymous library via `apps/docs`) and P3d (portal taxonomy, book-level search, §5 tag-based discovery — `DocSchema.tags` exists today only as the book-include operand).
· **Superseded in part (2026-06-13, ADR-0048)** — the bare-name overwrite premise; note at §3.2.
**Deciders**: ObjectStack Protocol Architects
**Builds on**: [ADR-0003](./0003-package-as-first-class-citizen.md) (package + versioned releases), [ADR-0016](./0016-studio-package-authoring-and-publish.md) (publish pipeline, `manifest_json` snapshot), [ADR-0025](./0025-plugin-package-distribution.md) (artifact distribution, trust boundary), [ADR-0033](./0033-ai-assisted-metadata-authoring.md) (AI as primary author)
Expand Down
13 changes: 6 additions & 7 deletions docs/adr/0052-audit-is-not-the-activity-feed.md
Original file line number Diff line number Diff line change
Expand Up @@ -323,13 +323,12 @@ rather than written twice.
ships P0a.**
- **P0b — ownership, no behavior change.** ✅ `sys_attachment` registration moved
`plugin-audit` → `service-storage` (both always-on, so it stays available; the
definition stays in `platform-objects`). `sys_notification` is **deferred** —
originally because it was mid-migration to an event model (ADR-0030) and moving it
would have collided with that in-flight work. That migration is **retired**
(#16194) and the file this line used to name
(`metadata/.../migrate-sys-notification-to-event.ts`) is deleted, so the collision
reason no longer holds; ⚠️ whether the move now proceeds is a call for this
record's owner, not a consequence of the retirement. Still TODO:
definition stays in `platform-objects`). ✅ `sys_notification` registration moved
`plugin-audit` → `service-messaging` (`messaging-service-plugin.ts` registers
`SysNotification`; `audit-plugin.ts` registers only `sys_audit_log`, `sys_activity`,
`sys_comment`, `sys_comment_reaction`). It had been deferred while a migration to an
event model (ADR-0030) was in flight; that migration was retired (#16194) and the
move then went ahead. Still TODO:
make "collaboration/activity is a platform primitive" an explicit capability
rather than an audit side-effect; keep it default-available so no UI regresses.
- **P1 — kill the split-brain + milestone templates (§5b.2).** Choose the
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

> **🔶 Cloud-owned — superseded in part by cloud ADR-0025 (2026-06-25).** The in-UI AI runtime and the `ask` / `build` agents described here moved to the **cloud / Enterprise** distribution (`@objectstack/service-ai` → `cloud/packages/service-ai`, closed); the open framework exposes AI only via `@objectstack/mcp` (BYO-AI) and ships no in-product `ask` / `build` chat. Retained as historical design context, now **cloud-owned** — see [`cloud/docs/adr/0025-service-ai-to-cloud-open-mcp-only`](https://github.com/objectstack-ai/cloud/blob/main/docs/adr/0025-service-ai-to-cloud-open-mcp-only.md).

**Status**: Proposed (2026-06-22) — cloud-owned (2026-07-16 audit): the framework spec dependencies shipped (`skill.surface` + `agent.surface` enums, `spec/ai/{skill,agent}.zod.ts`); the runtime two-agent split, shim removal, ask-rename and tenant-agent withdrawal live in cloud `service-ai` / objectui and are not verifiable in this repo.
**Status**: Accepted — 2026-10-28 (ruled on objectstack#26553, ADR batch 3; proposed 2026-06-22). cloud-owned; implemented: framework `skill.surface` (`ask` | `build` | `both`, `packages/spec/src/ai/skill.zod.ts`) and the `agent` metadata type closed to runtime creation (`metadata-plugin.zod.ts`, tenant agents withdrawn); cloud `service-ai` resolves `ask` as canonical with `data_chat` and `metadata_assistant → build` as aliases (`agents/agent-aliases.ts`), the runtime catalog lists platform-owned agents only (`agent-runtime.ts`, §2), a build-shaped request on the `ask` surface is declined and redirected to the Builder (§1), and objectui binds the agent to the surface. Nothing pending.
**Deciders**: ObjectStack Protocol Architects
**Supersedes**: [ADR-0040](./0040-unified-assistant-and-agent-binding.md) — its core decision (a *single* unified assistant selected by *per-turn intent classification*) is **reversed**. ADR-0040's UX win ("the end user never picks from a roster") is **kept** but re-grounded: the *surface* binds the agent, not a classifier and not a dropdown. §3 (custom tenant agents) is withdrawn; §4 (tool-scoping) is handed to [ADR-0064](./0064-tool-scoping-to-agent.md).
**Builds on**: [ADR-0033](./0033-ai-assisted-metadata-authoring.md) (draft → verify → publish), [ADR-0038](./0038-build-verification-loop.md) (verify-fix-reverify discipline carried by skills)
Expand Down
2 changes: 1 addition & 1 deletion docs/adr/0064-tool-scoping-to-agent.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@

> **🔶 Cloud-owned — superseded in part by cloud ADR-0025 (2026-06-25).** The in-UI AI runtime and the `ask` / `build` agents described here moved to the **cloud / Enterprise** distribution (`@objectstack/service-ai` → `cloud/packages/service-ai`, closed); the open framework exposes AI only via `@objectstack/mcp` (BYO-AI) and ships no in-product `ask` / `build` chat. Retained as historical design context, now **cloud-owned** — see [`cloud/docs/adr/0025-service-ai-to-cloud-open-mcp-only`](https://github.com/objectstack-ai/cloud/blob/main/docs/adr/0025-service-ai-to-cloud-open-mcp-only.md).

**Status**: Proposed (2026-06-22) — cloud-owned (2026-07-16 audit): the only framework dependency (`skill.surface`) exists; the tool-resolution scoping, global fall-through removal, and bind-time affinity error live in cloud `service-ai` and are not verifiable in this repo.
**Status**: Accepted — 2026-10-28 (ruled on objectstack#26553, ADR batch 3; proposed 2026-06-22). cloud-owned; implemented in cloud `service-ai` `agent-runtime.ts`: an agent's tools are the union of its surface-compatible skills' tools with the global fall-through removed (§1), the registry stays global with `schema_reader` as the `surface:'both'` read-only skill (§2), an incompatible skill ↔ agent affinity is a load error (§3), no new schema (§4). Nothing pending.
**Deciders**: ObjectStack Protocol Architects
**Builds on**: [ADR-0063](./0063-two-kernel-agents-skills-are-the-extension-primitive.md) (two agents bound by surface; skill ↔ agent affinity), [ADR-0033](./0033-ai-assisted-metadata-authoring.md) (draft-gated authoring tools)
**Resolves**: [ADR-0040 §4](./0040-unified-assistant-and-agent-binding.md) ("tools are registry-global; a custom agent can change persona but not constrain capability") — the named follow-up contract.
Expand Down
2 changes: 1 addition & 1 deletion docs/adr/0071-dataset-semantic-layer-depth.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# ADR-0071: Dataset semantic-layer depth — multi-hop joins

**Status**: Proposed. (Refocused — see **Correction** below. The first merged draft also proposed matrix/across pivoting; a code check found that already implemented, so this ADR now covers only the remaining gap: multi-hop joins.) **Multi-hop to-one joins (≤3 hops / 4 objects) have since been implemented & are live — header pending formal update.**
**Status**: Accepted — 2026-10-28 (ruled on objectstack#26553, ADR batch 3; proposed 2026-06-24, refocused — see **Correction** below; the first merged draft also proposed matrix/across pivoting, which a code check found already implemented, so this record covers only multi-hop joins). implemented: P1 multi-hop to-one joins behind the 3-hop cap (`packages/spec/src/ui/dataset.zod.ts` `include` path validation, `service-analytics` `dataset-compiler.ts` and the ObjectQL / native-SQL strategies) and P2 the Studio include-path editor (`DatasetDefaultInspector.tsx`, `useDatasetFields.ts`). Nothing pending.

## Correction (2026-06-24)

Expand Down
2 changes: 1 addition & 1 deletion docs/adr/0072-reference-scope-and-resolvability.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# ADR-0072: Reference Scope & Resolvability — the authored-expression data-picker model (#1934)

**Status**: Proposed (2026-06-25)
**Status**: Accepted — 2026-10-28 (ruled on objectstack#26553, ADR batch 3; proposed 2026-06-25). implemented: Slice 0/1 (flow scope resolution, the `{x}` picker, scope-aware unknown-reference validation inline and in the Problems panel — objectui `FlowReferenceField.tsx`, `flow-node-refs.ts`, `flow-expr-problems.ts`) and Slice 2 object-output drilling (`resolveObjectName` from the producing node's `config.objectName`); pending: Slice 3 lazy reference tree, Slice 4 guided fetch (D4), Slice 5 the D2 resolver on formula / validation / visibility / sharing surfaces, and D6 `outputSchema.objectName`; the Open questions stand.
**Deciders**: ObjectStack Protocol Architects
**Builds on**: [ADR-0032](./0032-unified-expression-layer.md) (one authoring language: CEL), [ADR-0058](./0058-expression-and-predicate-surface.md) (the expression & predicate surface — interpret vs compile, fail-policy matrix), [ADR-0036 field conditional rules](https://github.com/objectstack-ai/objectui/blob/main/docs/adr/0036-field-conditional-rules.md) (objectui repo)
**Consumers**: `@objectstack/spec` (`FlowNode.outputSchema`), `@objectstack/service-automation`, `@objectstack/formula`; `@object-ui/app-shell` (the metadata-admin authoring surface — implementation lives in the objectui repo)
Expand Down
2 changes: 1 addition & 1 deletion docs/adr/0073-automation-execution-identity.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# ADR-0073: Automation execution identity — a built-in non-human principal for user-less runs, `runAs` as authorization posture, attribution always concrete

**Status**: Proposed (2026-06-25)
**Status**: Accepted — 2026-10-28 (ruled on objectstack#26553, ADR batch 3; proposed 2026-06-25). implemented as the record scopes v1: the decision record (D1–D4), the D5 author-time guardrail (`packages/lint` `flow-runas-unscoped` on every user-less trigger), and the two amendments above (#3760: a user-less `runAs:'user'` data operation is refused, `UnscopedRunDataAccessError`; #25251: a `runAs:'system'` run writes no identity assignment); pending: M2 — the per-environment `automation` principal and `runAs:'automation'` (`execution.zod.ts` still `['system','user']`), gated on the first real consumer, not a date.
**Deciders**: ObjectStack Protocol Architects
**Builds on**: [ADR-0002](./0002-environment-database-isolation.md) (**environment-per-database** isolation; Control-Plane / Data-Plane split), [ADR-0004](./0004-cloud-multi-kernel.md) (`ObjectKernel` per environment), [ADR-0049](./0049-no-unenforced-security-properties.md) (enforce-or-mark gate; stage by whether the feature exists), [ADR-0057](./0057-erp-authorization-core-business-units-and-scope-depth.md) (`sys_role` is platform-native; `ExecutionContext.roles`; scheduled/lifecycle jobs), [ADR-0066](./0066-unified-authorization-model.md) (capability / assignment / requirement separation — resources declare a capability, never "who"), [ADR-0068](./0068-unified-user-context-and-built-in-identity-roles.md) (`EvalUser` / `current_user`; **identities are roles, not booleans**)
**Consumers**: `@objectstack/spec` (the identity contract + `runAs` semantics), `@objectstack/cli` (author-time validation), `@objectstack/plugin-security` (`resolve-execution-context`, RLS, seeded roles — M2), `@objectstack/service-automation` (the engine's `runAs` resolution — M2), `@objectstack/trigger-schedule` + `@objectstack/trigger-api` (user-less trigger surfaces), `@objectstack/plugin-reports` (the report scheduler — today hand-rolls `SYSTEM_CTX`), `@objectstack/runtime` (audit actor), and the ADR-0057 lifecycle/retention jobs.
Expand Down
Loading
Loading