Skip to content

Commit 978fd7d

Browse files
os-zhuangclaude
andauthored
docs(releases): record the #4212-family plugin-API retirements in the v17 notes and status matrix (#4279)
* docs(releases): record the #4212-family plugin-API retirements in the v17 notes and status matrix The v17 release notes already carried the #4212 row (lifecycle-hook family) but not its two follow-ups that also ship in the 17.0.0 train: - "Dead spec clusters removed" gains the #4241 row: the never-built typed-event cluster (ten payload schemas, the 21-name enum wrong in both directions, ITypedEventEmitter), and what replaced it — the enforced IPluginLifecycleEvents registry of the 14 events with a real emitter plus the LifecycleEventName soft union on hook/trigger. - "Smaller breaking changes" gains the #4242 entry: ObjectQLEngine.use() / ObjectQLHostContext removal, with the FROM → TO migration (registerApp / kernel plugin) and the explicit note that the app-bundle onEnable module export is a different, live contract. implementation-status.mdx stops claiming "lifecycle hooks" as a plugin-system capability (that family never ran and is now retired) and states the real init/start/destroy contract and the #4241 event registry instead. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HrRNgrWaRtggzmrHpbomyh * chore: empty changeset for the docs-only release-notes update Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01HrRNgrWaRtggzmrHpbomyh --------- Co-authored-by: Claude <noreply@anthropic.com>
1 parent a1a4140 commit 978fd7d

3 files changed

Lines changed: 21 additions & 3 deletions

File tree

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
---
2+
---
3+
4+
docs-only: record the #4212-family plugin-API retirements (#4241/#4242) in the
5+
v17 release notes and the implementation-status matrix. Releases nothing.

content/docs/releases/implementation-status.mdx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ description: Detailed status of protocol implementations across ObjectStack pack
88
This document provides a comprehensive overview of which protocols from `@objectstack/spec` have been implemented in the ObjectStack packages.
99

1010
<Callout type="info">
11-
**Last Updated**: June 2026
11+
**Last Updated**: July 2026
1212

1313
This matrix is generated from actual codebase analysis and represents the current implementation status.
1414
</Callout>
@@ -42,8 +42,8 @@ This matrix is generated from actual codebase analysis and represents the curren
4242

4343
**Notes:**
4444
- Core package provides complete microkernel implementation
45-
- Plugin system supports lifecycle hooks, dependency resolution, and service injection
46-
- Event bus enables inter-plugin communication
45+
- Plugin system supports the `init`/`start`/`destroy` lifecycle, dependency resolution, and service injection — the `onInstall`/`onEnable`-style hook family was retired in v17 as never-implemented (#4212)
46+
- Event bus enables inter-plugin communication; `IPluginLifecycleEvents` registers the 14 lifecycle events that actually fire, and `LifecycleEventName` soft-types `hook`/`trigger` (#4241)
4747
- ObjectQL serves as the **example kernel** — a reference implementation that will be modularized into plugins
4848

4949
### Data Infrastructure

content/docs/releases/v17.mdx

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -904,6 +904,7 @@ import or the authored key.
904904
| `dashboard.aria` / `.performance` / widget `performance` (+ `PerformanceConfigSchema`) | no renderer applied them; virtual scrolling is the live top-level `virtualScroll` (#3896 close-out) |
905905
| `agent.knowledge` (+ `AIKnowledgeSchema`) | declaring sources/indexes never scoped retrieval`search_knowledge` takes `sourceIds` from the LLM's tool-call arguments (#3896 close-out) |
906906
| `PluginLifecycleSchema` (`onInstall`/`onEnable`/`onDisable`/`onUninstall`/`onUpgrade`) + `UpgradeContextSchema` + the `ObjectStackPlugin` interface family (`@objectstack/spec/system`) | a plugin lifecycle the kernel never implemented — the real contract is `init`/`start`/`destroy`; code written against the hooks silently never ran (#4212) |
907+
| The typed-event cluster (`kernel` plugin-lifecycle-events.zod — ten payload schemas (`PluginRegisteredEvent`, `HookTriggeredEvent`, `KernelReadyEvent`, …), the 21-name `PluginLifecycleEventType` enum, `ITypedEventEmitter`) | a typed-event system that was never built: zero consumers, and the enum was wrong in both directions — 17 names nothing fires, 10 real events missing. `IPluginLifecycleEvents` is now the registry of the 14 events with a real emitter, and the new `LifecycleEventName` union soft-types `PluginContext.hook`/`trigger` (#4212 follow-up, #4241) |
907908
| `skill.triggerPhrases` | phrases were never matched; activation is `triggerConditions` + the agent's `skills[]` allowlist (#3896 close-out) |
908909
| `DEFAULT_DISPATCHER_ROUTES` | dead route table |
909910
| Aspirational config on Theme / Translation / Webhook | still-dead after #3494 |
@@ -941,6 +942,18 @@ from `@objectstack/spec` directly.
941942
Fix: write `{ strategy: 'retry', maxRetries: 3 }`, or `strategy: 'fail'` if no
942943
retry was intended. `maxRetries: 0` stays legal under `'fail'` / `'continue'`,
943944
which never read it.
945+
- **`ObjectQLEngine.use()` and `ObjectQLHostContext` are removed** (#4212
946+
follow-up, #4242). The engine's own plugin loader — register a manifest
947+
part, then dispatch the runtime part's `onEnable` over an
948+
`ObjectQLHostContext` — had zero callers repo-wide, and its `onEnable` was
949+
the engine-level twin of the #4212 disease: a lifecycle entry point that
950+
reads as a contract and never runs. Fix: `engine.use(manifest)`
951+
`engine.registerApp(manifest)`; `engine.use(_, { onEnable })` → a kernel
952+
plugin (`kernel.use({ name, init(ctx) { … } })`, engine via
953+
`ctx.getService('objectql')`, drivers via `engine.registerDriver()`).
954+
`new ObjectQL({ logger })` and `ObjectQLPlugin`'s `hostContext` option keep
955+
working, and the *app-bundle* `onEnable` module export (dispatched by
956+
AppPlugin at boot) is a different, real contract — unchanged.
944957

945958
## New capabilities in 17.0.0
946959

0 commit comments

Comments
 (0)