@elevasis/sdk 1.16.0 → 1.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elevasis/sdk",
3
- "version": "1.16.0",
3
+ "version": "1.18.0",
4
4
  "description": "SDK for building Elevasis organization resources",
5
5
  "type": "module",
6
6
  "bin": {
@@ -57,7 +57,7 @@
57
57
  "tsup": "^8.0.0",
58
58
  "typescript": "5.9.2",
59
59
  "zod": "^4.1.0",
60
- "@repo/core": "0.16.0",
60
+ "@repo/core": "0.19.0",
61
61
  "@repo/eslint-config": "0.0.0",
62
62
  "@repo/typescript-config": "0.0.0"
63
63
  },
@@ -0,0 +1,33 @@
1
+ # Package Taxonomy (Consumer View)
2
+
3
+ External projects consume the **published `@elevasis/*` surface only**. The Elevasis monorepo also has workspace-internal `@repo/elevasis-*` packages — those are NOT installable here and should never appear in your imports or `package.json`.
4
+
5
+ ## What You Can Import
6
+
7
+ | Package | Subpaths | Where it lives in `node_modules` |
8
+ | ---------------- | -------------------------------------------- | -------------------------------- |
9
+ | `@elevasis/sdk` | default, `/worker`, `/node`, `/test-utils` | `node_modules/@elevasis/sdk/` |
10
+ | `@elevasis/ui` | default, `/auth`, `/initialization`, etc. | `node_modules/@elevasis/ui/` |
11
+ | `@elevasis/core` | `/organization-model`, `/entities`, `/utils` | `node_modules/@elevasis/core/` |
12
+
13
+ ## What You Will See in Monorepo Docs (and should NOT import)
14
+
15
+ Monorepo source and docs reference `@repo/elevasis-core` and `@repo/elevasis-operations`. These are workspace-internal packages used by Elevasis as a tenant of its own platform. They are `private: true` and never published. If you see them mentioned:
16
+
17
+ - Do NOT add them to this project's `package.json`
18
+ - Do NOT try to import from them — they are not in your `node_modules`
19
+ - They are not a substitute for `@elevasis/core` even though the name overlaps
20
+
21
+ ## Confused About Where Something Lives?
22
+
23
+ Check the import path:
24
+
25
+ - `@elevasis/...` → published, consumable here
26
+ - `@repo/...` → monorepo-internal, not consumable
27
+
28
+ This project's own org-model and workflows live in `core/config/organization-model.ts` and `operations/src/**` — those are project-owned, not part of either family above.
29
+
30
+ ## References
31
+
32
+ - `node_modules/@elevasis/sdk/reference/scaffold/index.mdx` — full SDK scaffold reference
33
+ - Monorepo source rule: `.claude/rules/package-taxonomy.md` in the elevasis-monorepo (when working across both)
@@ -66,6 +66,17 @@ The user wants the agent to explain something -- a scope, an entity, a concept w
66
66
 
67
67
  **Agent action:** read the relevant org-model label, entity, or scope. Narrate in plain language using label fields from the model -- never invent vocabulary not present in the model. Phase-1 scope covers Model, Features, and Foundations layers only.
68
68
 
69
+ **Stage/state/catalog sub-routing:** when the noun being described is a stage, state, status
70
+ bucket, catalog entry, progress step, pipeline column, or similarly closed business vocabulary,
71
+ also show the cross-system impact before the normal description:
72
+
73
+ 1. Read `node_modules/@elevasis/sdk/reference/spine/spine-primer.md` for the layering pattern.
74
+ 2. Read the relevant domain in `foundations/config/organization-model.ts`.
75
+ 3. Explain the impact in vibe-coder language only: the business profile entry, the saved progress
76
+ on each record, the automations that produce updates, and the dashboard or reports that read it.
77
+ 4. Route follow-up changes through `/knowledge <domain>`. Do not mention the technical pattern name
78
+ unless the user explicitly asks for internals.
79
+
69
80
  ### 4. Transition
70
81
 
71
82
  The user wants to change the status of a task or entity.
@@ -114,6 +125,18 @@ The user describes organizational reality that is not yet expressed in the model
114
125
 
115
126
  **Agent action:** delegate immediately to `/knowledge`. Do not attempt the ceremony yourself. Invoke with the relevant domain: `/knowledge crm` for deal/contact changes, `/knowledge projects` for project types, `/knowledge features` for feature toggles. Plain-language summary of what was detected is acceptable before delegating, but the actual draft-confirm-write ceremony belongs to `/knowledge`.
116
127
 
128
+ **Stage/state/catalog impact preview:** if the Codify intent adds, renames, removes, reorders, or
129
+ re-scopes a stage, state, status bucket, catalog member, pipeline step, or progress vocabulary,
130
+ preview the cross-system impact before delegating:
131
+
132
+ - Which business-profile entry changes.
133
+ - Which saved record progress keys may already exist.
134
+ - Which automations or templates reference the key.
135
+ - Which dashboard, report, queue, or API reads may display or filter by it.
136
+
137
+ Then delegate to `/knowledge <domain>` with that preview as context. Vibe does not write the
138
+ change and does not expose monorepo-only commands.
139
+
117
140
  This routing applies to both codify levels (decision #21 -- Codify ceremony delegated to `/knowledge`):
118
141
 
119
142
  - **Level A** (config-only edits to `organization-model.ts`, feature toggles, label renames): delegate to `/knowledge <domain>` immediately.
@@ -92,11 +92,38 @@ cannot bypass the write gate.
92
92
  | Read | "what playbooks govern sales.crm?", "show me all reference docs", "list my roles" | Run CLI read commands (monorepo or external); format result |
93
93
  | Navigate | "what governs this feature?", "where does outreach-cadence apply?" | Same CLI; pick mount axis from intent; default to `by-feature` for orientation queries |
94
94
  | Describe | "what is our identity set to?", "what's our timezone?" | Read current values from OM source; narrate |
95
- | Codify | "we're an e-commerce company", "add a customer segment", "our outreach goal is..." | Run codify ceremony: snapshot -> propose -> confirm -> write -> typecheck -> Zod parse -> rollback on failure |
95
+ | Codify | "we're an e-commerce company", "add a customer segment", "our outreach goal is..." | Run codify ceremony with shared-layer impact preview: snapshot -> propose -> confirm -> write -> typecheck -> Zod parse -> rollback on failure |
96
96
  | Toggle | "enable the lead-gen feature", "turn off SEO" | Codify ceremony scoped to `features` domain; flip the boolean; same validation/rollback |
97
97
 
98
98
  ---
99
99
 
100
+ ## Shared Layering Preview
101
+
102
+ When opening a domain that uses a closed stage, status, or catalog vocabulary -- especially
103
+ prospecting, CRM, outreach, or another pipeline-like domain -- read the scaffold-shipped primer:
104
+
105
+ ```bash
106
+ node_modules/@elevasis/sdk/reference/spine/spine-primer.md
107
+ ```
108
+
109
+ Use it to emit a short domain layering preview before the normal read, describe, or codify flow:
110
+
111
+ 1. **Catalog:** which `organizationModel.<domain>` catalog owns the keys, labels, descriptions,
112
+ ordering, and entity ownership.
113
+ 2. **Runtime state:** where record progress is stored as sparse state keyed by those catalog
114
+ members.
115
+ 3. **Producers:** which templates, automations, or factories write entity-tagged results for those
116
+ keys.
117
+ 4. **Consumers:** which dashboards, queues, reports, filters, or API reads render or aggregate the
118
+ same keys.
119
+
120
+ For vibe-coder sessions, translate this into plain language: "business profile", "saved progress",
121
+ "automations", and "dashboard or reports". For technical sessions, it is acceptable to name the
122
+ catalog, state map, producer, and consumer surfaces directly. External tenants route all follow-ups
123
+ through `/knowledge`; do not point them at monorepo-only commands.
124
+
125
+ ---
126
+
100
127
  ## Read Patterns
101
128
 
102
129
  ### Monorepo (platform defaults)
@@ -156,6 +183,12 @@ Read `foundations/config/organization-model.ts` (external) or the appropriate pl
156
183
  Show the diff in chat. Identify which domain and field changes. Present the proposed new value
157
184
  in context alongside the current value.
158
185
 
186
+ For stage, status, or catalog vocabulary edits, include the shared-layer impact preview before
187
+ asking for confirmation. Name the affected catalog key, whether existing sparse runtime state may
188
+ contain the old key, which producers/templates reference it, and which consumers render or filter by
189
+ it. If the impact cannot be determined from the local project, say which surface is unknown and keep
190
+ the write gated.
191
+
159
192
  ### Step 3: Confirm
160
193
 
161
194
  Pause for explicit user confirmation. Do not proceed without a clear yes. Permission prompts
@@ -240,13 +273,12 @@ Cross-link: `.claude/skills/knowledge/SKILL.md` (monorepo pointer)
240
273
 
241
274
  ## Cross-Links
242
275
 
243
- - `/org-os` -- Organization OS architecture overview, seven layers, propagation pipeline,
244
- feature/surface management. Use `/org-os` when the question is about the architecture or
245
- propagation system rather than reading or editing org-model values. Cross-link:
246
- `.claude/skills/org-os/SKILL.md`
247
276
  - `/configure` -- Legacy org-model editor (pre-absorption). Absorbed into this skill; all
248
277
  Codify and Toggle intents now route here. `/configure` vocabulary still works as a domain
249
278
  hint (e.g., "configure identity" is parsed as domain=identity, intent=Describe-or-Codify).
279
+ - `node_modules/@elevasis/sdk/reference/spine/spine-primer.md` -- Scaffold-shipped layering
280
+ primer for stage/status/catalog vocabularies that coordinate business-profile entries, runtime
281
+ progress, producers, and consumers in tenant projects.
250
282
 
251
283
  ---
252
284
 
@@ -399,6 +399,27 @@ Recent Notes
399
399
  2026-04-01 [call_note] Kickoff — confirmed scope and timeline
400
400
  ```
401
401
 
402
+ #### Tenant Skill Bindings Footer
403
+
404
+ After the normal status output, append a short footer when the project kind, tags, name,
405
+ description, milestones, or active tasks map to a known tenant domain such as `prospecting`,
406
+ `crm`, `outreach`, `finance`, or `support`.
407
+
408
+ Resolve the best domain from explicit metadata first (`tags`, `kind`, domain fields), then from
409
+ project/task text. If no clear domain maps, omit the footer.
410
+
411
+ Footer shape:
412
+
413
+ ```text
414
+ Related skill bindings
415
+ - Domain: <domain>
416
+ - Read or change business profile: /knowledge <domain>
417
+ - Layering primer: node_modules/@elevasis/sdk/reference/spine/spine-primer.md
418
+ ```
419
+
420
+ External projects do not expose monorepo-only architecture commands. Never suggest `/org-os`,
421
+ `/om-spine`, or monorepo paths in this footer.
422
+
402
423
  ### `create` — Guided Project Creation (QnA Flow)
403
424
 
404
425
  Interactive walkthrough that collects project details step by step using `AskUserQuestion`,
@@ -29,6 +29,15 @@ This router does not enforce that tone -- it only writes profile.md and loads th
29
29
  file. The project-wide tone effect is handled by the rules layer reading profile.md on each
30
30
  session start.
31
31
 
32
+ Track separation is explicit:
33
+
34
+ - The vibe-coder track teaches the underlying coordination idea through business language only:
35
+ business profile, saved progress, automations, dashboard, and reports. Do not name the technical
36
+ pattern in vibe-coder menus, lessons, prompts, or progress labels.
37
+ - The technical track may name OM spine vocabulary and can point developers at
38
+ `node_modules/@elevasis/sdk/reference/spine/spine-primer.md` when lessons discuss shared stage,
39
+ status, or catalog vocabularies.
40
+
32
41
  ---
33
42
 
34
43
  ## Step 1: Parse the Argument
@@ -111,8 +120,9 @@ In this project, always:
111
120
 
112
121
  ## Tone Implications
113
122
 
114
- Code-first communication. Use current command names and SDK terminology without hand-holding.
115
- No vocabulary substitutions. Slash commands may be surfaced directly. Full technical depth.
123
+ Code-first communication. Use current command names, SDK terminology, and OM spine vocabulary
124
+ without hand-holding. No vocabulary substitutions. Slash commands may be surfaced directly. Full
125
+ technical depth.
116
126
  ```
117
127
 
118
128
  ### Initialize Progress File
@@ -156,7 +166,7 @@ Read `.claude/memory/tutorial-progress.md`.
156
166
  - [ ] 15 Error handling
157
167
  - [ ] 16 LLM and agents
158
168
  - [ ] 17 Composition
159
- - [ ] 18 Rules, memory, scaffold registry
169
+ - [ ] 18 Rules, memory, scaffold registry, OM spine
160
170
  - [ ] 19 Template lifecycle and /git-sync
161
171
  ```
162
172
 
@@ -0,0 +1,83 @@
1
+ # Knowledge Bundle Ship-Train
2
+
3
+ ## Why this note exists
4
+
5
+ The Knowledge Map (Browser, CLI, skill, icons, external parity) is being shipped as a coordinated bundle. The Organization Model now treats `knowledge` as a first-class graph domain with `kind`-discriminated nodes (`playbook` / `strategy` / `reference`) connected to features and capabilities through `governs` edges. A new `/knowledge` skill absorbs the prior `/configure` skill as a unified intent-inferring surface (read + describe + codify + toggle); `/configure` is tombstoned via `sync-delete-manifest.json`. A new `knowledge:*` CLI subcommand suite ships on both `elevasis` and `elevasis-sdk` over a shared `@repo/core/knowledge/queries` data layer. The Knowledge Browser is wired into `@elevasis/ui` with reusable primitives (`KnowledgeBrowser`, `KnowledgeTree`, `DescribeNodeView`, `KindChip`, `NodeHeader`, `NodeDescribeShell`, etc.) and a build-time MDX codegen pipeline at `@elevasis/sdk/node`. A unified semantic icon-token catalog lives at `@elevasis/core/organization-model` and is shared across core, SDK, UI, Command Center, and external projects. External-parity work makes the bundle zero-config for tenant projects: a dual-mode Vite plugin walks up to `.elevasis`, runs the two-codegen pipeline in-process, and writes artifacts the published Browser already imports -- no flags, no paths, no recipe steps.
6
+
7
+ ## Applies to
8
+
9
+ All template-derived projects that consume `@elevasis/sdk`, `@elevasis/core`, or `@elevasis/ui`. Specifically:
10
+
11
+ - `nirvana-marketing`
12
+ - `ZentaraHQ`
13
+ - Any future external SDK consumer derived from the `_template` baseline
14
+
15
+ ## Required actions
16
+
17
+ 1. Pull template changes with `/git-sync` after this train publishes so the refreshed knowledge wiring (template OM defaults, starter `welcome.mdx`, vite plugin pre-wiring, `/knowledge` skill, `/configure` tombstone, scaffold recipe) reaches the project.
18
+
19
+ 2. **`/configure` is gone.** The skill was absorbed into `/knowledge`. `/git-sync` removes `external/_template/.claude/skills/configure/` (and its 10 operations files) via `sync-delete-manifest.json` (wave: `knowledge-skill`). Update any tenant-side automation, prompts, or docs that still reference `/configure` -- replace with `/knowledge`. The skill is intent-inferring: classify by natural language (read / describe / codify / toggle), not by verb namespace.
20
+
21
+ 3. **`/knowledge` ceremony is unchanged.** The codify ceremony (snapshot -> propose -> confirm -> write -> validate -> rollback) and the two-level model (Level A config-only edits vs. Level B new Zod extension files) are preserved bit-for-bit. The skill body lives at `.claude/skills/knowledge/SKILL.md` (~245 lines) with 10 operations files: `codify-level-a.md`, `codify-level-b.md`, plus 8 domain references (`identity`, `customers`, `offerings`, `roles`, `goals`, `techStack`, `features`, `labels`).
22
+
23
+ 4. **Vite plugin is pre-wired.** `external/_template/ui/vite.config.ts` imports and spreads `elevasisVite()` from `@elevasis/ui/vite`. After `/git-sync`, the plugin auto-discovers the project via `.elevasis` walk-up, runs both knowledge codegens in-process, and writes:
24
+ - `core/config/knowledge/_generated/nodes.ts`
25
+ - `core/config/knowledge/_generated/knowledge-bodies.tsx`
26
+ - `core/config/knowledge/_generated/knowledge-search-index.json`
27
+
28
+ Same behavior in `vite dev` and `vite build`. No flags, no manual codegen step required for the bundle to work.
29
+
30
+ 5. **Starter knowledge node lands.** `core/config/knowledge/nodes/welcome.mdx` ships in the template so a fresh clone has a non-empty Browser on first `pnpm -C ui dev`. Replace with tenant-authored MDX nodes as the project codifies real organizational knowledge. Tenant nodes go under `core/config/knowledge/nodes/**/*.mdx` with frontmatter declaring `id`, `kind`, `title`, optional `icon` (semantic token), and an MDX body. Default fallback icons by `kind` apply when `icon` is omitted.
31
+
32
+ 6. **Knowledge baseline propagates to the OM.** `core/config/organization-model.ts` now includes baseline knowledge defaults imported from `@elevasis/core/organization-model`. The merge-aware Tier 2 sync preserves tenant overrides while picking up the baseline. After `/git-sync`, verify `resolveOrganizationModel()` still parses (Zod) and `pnpm -C ui exec tsc --noEmit` passes.
33
+
34
+ 7. **`knowledge:*` CLI subcommands are available.** From inside the project (any subdirectory):
35
+
36
+ ```bash
37
+ pnpm exec elevasis-sdk knowledge:ls /by-feature/sales/crm
38
+ pnpm exec elevasis-sdk knowledge:ls /by-kind/playbook
39
+ pnpm exec elevasis-sdk knowledge:cat <node-id>
40
+ pnpm exec elevasis-sdk knowledge:graph <node-id>
41
+ ```
42
+
43
+ These walk up to `.elevasis`, load the project's OM (with tenant nodes), and print results. Output flags: default text, `--json` envelope, `--ids-only` for piping. The Knowledge Browser sidebar copy buttons emit matching skill-resolvable commands (`/knowledge read <node-id>`, `/knowledge read-folder feature:<id>`, `/knowledge read-folder kind:<kind>`).
44
+
45
+ 8. **Semantic icon tokens replace ad-hoc strings.** When authoring or editing nodes (OM or MDX frontmatter), use semantic tokens from the catalog: `nav.*`, `knowledge.*`, `feature.*`, `resource.*`, `integration.*`, plus `custom.*` namespace for tenant extensions. `IconNameSchema` validates them. The UI renders via Tabler mappings in `@elevasis/ui/icons`; library names (`IconBook`, etc.) stay out of the OM/MDX surface.
46
+
47
+ 9. **Rebuild and type-check:**
48
+
49
+ ```bash
50
+ pnpm install
51
+ pnpm -C ui build
52
+ pnpm -C ui exec tsc --noEmit
53
+ pnpm -C operations exec tsc --noEmit
54
+ ```
55
+
56
+ The first `vite dev` or `vite build` after sync triggers the in-process codegen automatically. To regenerate codegen artifacts manually (one-shot, not normally required):
57
+
58
+ ```bash
59
+ pnpm exec elevasis-sdk knowledge:generate
60
+ ```
61
+
62
+ ## Verification
63
+
64
+ After applying all actions above:
65
+
66
+ - `/configure` skill directory is absent: `external/<project>/.claude/skills/configure/` does not exist after sync.
67
+ - `/knowledge` skill is present at `.claude/skills/knowledge/SKILL.md` with the 10 operations files under `.claude/skills/knowledge/operations/`.
68
+ - `core/config/knowledge/nodes/welcome.mdx` exists; `core/config/knowledge/_generated/` has been populated by the vite plugin (3 files).
69
+ - `pnpm -C ui dev` boots; navigating to `/knowledge` renders the Browser with the welcome node visible in the tree.
70
+ - The 5 mount axes resolve: `/knowledge`, `/knowledge/by-feature/$path`, `/knowledge/by-kind/$kind`, `/knowledge/by-owner/$id`, `/knowledge/graph/$nodeId/governs|governed-by`.
71
+ - `pnpm exec elevasis-sdk knowledge:ls /by-kind/playbook` returns text output without error.
72
+ - `pnpm install` completes cleanly with no unresolved peer warnings.
73
+ - `pnpm -C ui exec tsc --noEmit` passes; `pnpm -C operations exec tsc --noEmit` passes.
74
+
75
+ ## Not handled by /git-sync
76
+
77
+ `/git-sync` propagates template-authored files (package baselines, `welcome.mdx` starter node, generated `_generated/` files, `/knowledge` skill, `/configure` tombstones, vite.config.ts wiring, scaffold recipe doc) but does NOT:
78
+
79
+ - Author tenant-specific knowledge MDX nodes. The starter `welcome.mdx` is illustrative; real organizational playbooks, strategies, and reference docs need to be hand-authored under `core/config/knowledge/nodes/**/*.mdx`. Use `/knowledge` for ceremony when codifying.
80
+ - Regenerate `_generated/` artifacts on its own. The vite plugin runs the codegens automatically on next `vite dev` / `vite build`. To regenerate manually before booting, run `pnpm exec elevasis-sdk knowledge:generate`.
81
+ - Migrate references in tenant code from `/configure` to `/knowledge`. Search the project for `/configure` mentions in `.claude/`, `docs/`, `README.md`, prompts, and CI scripts; rewrite to `/knowledge`. The tombstone deletes the skill files but does not edit downstream references.
82
+ - Replace tenant-authored icon strings with semantic tokens. Existing nodes that carried library-specific icon names (`IconBook`, etc.) will continue to render via fallback, but the canonical surface is semantic tokens. Migrate at-touched nodes to `knowledge.*` / `feature.*` / `nav.*` / `custom.*` over time.
83
+ - Clear the Vite module-graph cache (`ui/node_modules/.vite`). After upgrading the bundle, clear this directory manually and restart the dev server before verifying the Browser renders -- stale cache can mask a successful generation.
@@ -0,0 +1,42 @@
1
+ # 2026-05-05 — List Builder UX + Schema-Driven Step Config
2
+
3
+ ## Why this note exists
4
+
5
+ The list-builder ship train publishes a coordinated `@elevasis/core` + `@elevasis/ui` release that:
6
+
7
+ - Replaces every per-integration bespoke step-config component (and the `SerializedExecutionFormSchema` middle tier) with one generic `<StepConfigForm>` driven by the workflow's `contract.inputSchema` (Zod) plus a small `StepConfigLayout` hints object per integration.
8
+ - Standardizes the BuildTab step-detail right column on a `Configuration | Advanced | Runs` tab shell (`StepDetailRightColumn`).
9
+ - Makes `schema + layout` REQUIRED on `ListBuilderWorkflow`. The legacy `configSchema?` / `ConfigurationFields?` / `AdvancedFields?` / `inputForm?` fields are gone.
10
+ - Removes several `@elevasis/core` execution-form types (`SerializedFormField`, `SerializedFormSchema`, `SerializedExecutionFormSchema`, `SerializedExecutionInterface`, `ExecutionRunnerCatalogItem`, `ExecutionRunnerCatalogResponse`, plus `interface?` from definition types), the `ResourceExecuteForm` / `ResourceExecuteDialog` / `ExecutionRunner` surfaces from `@elevasis/ui`, and the API `execution/runner/` runtime.
11
+
12
+ If a derived project authors its own list-builder step actions or imported any of the deleted types, it will not compile against the new `@elevasis/ui` / `@elevasis/core` baselines without the migration below.
13
+
14
+ ## Applies to
15
+
16
+ - All template-derived projects whose `ui/` consumes `@elevasis/ui` and registers list-builder actions.
17
+ - Any project whose `core/` or `operations/` imports the removed execution-form types from `@elevasis/core`.
18
+ - Any project rendering the list-builder Build tab via `LeadGenListDetailPage` or its `RunWorkflowModal`.
19
+
20
+ ## Required actions
21
+
22
+ 1. Bump `@elevasis/core` and `@elevasis/ui` to the versions published by this train (see `external/_template/{core,ui}/package.json` baselines).
23
+ 2. For every `ListBuilderWorkflow` registry entry the project authors locally, swap to the `schema + layout` contract:
24
+ - Add a browser-safe sibling schema export (split-file pattern: keep Node-only deps out of `ui/`).
25
+ - Provide a `StepConfigLayout<T>` describing field hints (no React, no validation logic).
26
+ - Drop any `ConfigurationFields` / `AdvancedFields` / `configSchema` / `inputForm` references.
27
+ 3. Delete any imports of the removed core types: `SerializedFormField`, `SerializedFormSchema`, `SerializedExecutionFormSchema`, `SerializedExecutionInterface`, `ExecutionRunnerCatalogItem`, `ExecutionRunnerCatalogResponse`, and the `interface?` field on workflow definitions.
28
+ 4. If the project rendered the deleted `ResourceExecuteForm` / `ResourceExecuteDialog` / `ExecutionRunner` surfaces, replace with `<StepConfigForm>` (curated UX) or `<ZodFormRenderer>` (auto-derived from Zod) as appropriate. `renderExecuteDialog` is now REQUIRED on `ResourceDetailPage`.
29
+ 5. Re-run `pnpm -C ui check-types` and `pnpm -C operations check-types` to confirm the schema sibling files resolve and no removed types remain referenced.
30
+
31
+ ## Verification
32
+
33
+ - `pnpm -C ui check-types` — no references to `SerializedFormField`, `SerializedExecutionFormSchema`, `ResourceExecuteForm`, etc.
34
+ - `pnpm -C ui build` — clean build with the new `@elevasis/ui` baseline.
35
+ - `pnpm -C operations check` and `check-types` — clean.
36
+ - BuildTab smoke (manual): open a list under `/lead-gen/lists/{listId}`, select a step, confirm the right column renders the `Configuration | Advanced | Runs` tabs and the schema-driven form (defaults populate, validation Alert fires + clears on edit, conditional `when:` predicates toggle, `recentRuns[0]` auto-load works).
37
+
38
+ ## Not handled by /git-sync
39
+
40
+ - Project-authored `ListBuilderWorkflow` registrations are project-owned code; `/git-sync` does not migrate them. Each project must port its action entries to `schema + layout` by hand following the `apolloImportLayout` pattern in the template's `apps/command-center/src/main.tsx`.
41
+ - Browser dev-smoke for each migrated step type is operator-driven; not automatable through sync.
42
+ - Any local re-implementations or extensions of the deleted `ResourceExecuteForm` / `ExecutionRunner` surfaces must be removed manually before this baseline can be adopted.
@@ -0,0 +1,37 @@
1
+ # 2026-05-06 -- SDK Changes Release Train
2
+
3
+ ## Why this note exists
4
+
5
+ This train coordinates the Google Calendar integration, list-builder OM Spine cleanup, and OM Spine documentation/skill surfaces into one package and external-sync release. It publishes updated `@elevasis/core`, `@elevasis/ui`, and `@elevasis/sdk` baselines, then syncs template Claude guidance and package versions to derived projects.
6
+
7
+ ## Applies to
8
+
9
+ - Template-derived projects consuming `@elevasis/core`, `@elevasis/ui`, or `@elevasis/sdk`.
10
+ - Projects using the list-builder workflow factory or custom lead-gen build-state UI.
11
+ - Projects relying on tenant Claude guidance for `/knowledge`, `/project`, `/tutorial`, or ambient `vibe` behavior.
12
+
13
+ ## Required actions
14
+
15
+ 1. Pull the synced template changes through `/git-sync`.
16
+ 2. Accept the package baseline bumps published by this train:
17
+ - `core/package.json`: `@elevasis/core`
18
+ - `ui/package.json`: `@elevasis/ui`
19
+ - `operations/package.json`: `@elevasis/core` and `@elevasis/sdk`
20
+ 3. Review local list-builder customizations against the OM-owned stage vocabulary and SDK `listBuilderWorkflow(...)` factory.
21
+ 4. Review any local tenant guidance overrides before accepting the synced `.claude/rules/vibe.md` and `.claude/skills/{knowledge,project,tutorial}/SKILL.md` changes.
22
+
23
+ ## Verification
24
+
25
+ - `pnpm -C ui check-types`
26
+ - `pnpm -C ui build`
27
+ - `pnpm -C ui test`
28
+ - `pnpm -C operations check`
29
+ - `pnpm -C operations check-types`
30
+ - `pnpm -C operations test`
31
+ - `pnpm -C core test`
32
+
33
+ ## Not handled by /git-sync
34
+
35
+ - Project-authored list-builder workflow registrations remain project-owned code.
36
+ - Google Calendar OAuth configuration remains an Elevasis platform/admin responsibility, not a tenant scaffold migration.
37
+ - Manual browser smoke for authenticated calendar views is not automated by template sync.