Skip to content

Commit 59ca58e

Browse files
committed
docs(skills): correct six false claims in objectstack-platform
Published-skills factual sweep, flight 4 of program #13658. Every correction is settled against the implementing code, not against another document, and each is byte-neutral-or-shrinking under the token ratchet. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EnE7G31tqbxN1rqpQmzurT
1 parent 787d757 commit 59ca58e

3 files changed

Lines changed: 24 additions & 24 deletions

File tree

‎skills/objectstack-platform/SKILL.md‎

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -174,14 +174,14 @@ export default defineStack({
174174
### Full Configuration Reference
175175

176176
`defineStack()` accepts an `ObjectStackDefinitionInput`. Each top-level key
177-
holds a collection of one metadata kind — `manifest`, `objects`,
178-
`objectExtensions`, `views`, `apps`, `pages`, `dashboards`,
179-
`reports`, `datasets`, `actions`, `flows`, `jobs`,
180-
`emailTemplates`, `docs`, `books`, `positions`, `permissions`,
181-
`capabilities`, `sharingRules`, `apis`, `webhooks`, `api`, `agents`,
182-
`tools`, `skills`, `hooks`, `functions`, `mappings`, `analyticsCubes`,
183-
`connectors`, `data` (seed), `datasources`, `datasourceMapping`,
184-
`translations`, `i18n`, `plugins`, `devPlugins`, `requires`, `tiers`.
177+
holds one metadata kind — `manifest`, `objects`, `objectExtensions`,
178+
`views`, `apps`, `pages`, `dashboards`, `reports`, `datasets`,
179+
`actions`, `flows`, `jobs`, `emailTemplates`, `docs`, `books`,
180+
`positions`, `permissions`, `capabilities`, `sharingRules`, `apis`,
181+
`webhooks`, `api`, `server`, `agents`, `tools`, `skills`, `hooks`,
182+
`functions`, `mappings`, `analyticsCubes`, `connectors`, `data` (seed),
183+
`datasources`, `datasourceMapping`, `translations`, `i18n`, `plugins`,
184+
`devPlugins`, `requires`, `tiers`.
185185

186186
There is deliberately **no** top-level `workflows` or `approvals` collection:
187187
an approval is authored as a flow with Approval nodes (ADR-0019), and record
@@ -315,7 +315,7 @@ manifest: {
315315
}
316316
```
317317

318-
**Object naming:** The object `name` is the canonical identifier and equals the physical table name. Embed any domain prefix directly in the name (e.g. `name: 'crm_account'`); the object-level `namespace` *field* is deprecated and ignored by the runtime.
318+
**Object naming:** The object `name` is the canonical identifier and equals the physical table name. Embed any domain prefix directly in the name (e.g. `name: 'crm_account'`); the object-level `namespace` *field* is retired (ADR-0129 D3) and refused at load.
319319

320320
**`manifest.namespace` (ADR-0048):** Optional, but **enforced once set**. When a package declares `manifest.namespace: 'crm'`, every `object.name` must start with `crm_` or `defineStack` errors (`validateNamespacePrefix` in `@objectstack/spec`); the legacy `<ns>__<short>` double-underscore form is rejected, and `sys_`-prefixed names are platform-reserved and exempt. The namespace is also a package-ownership key — installing two packages that both claim `crm` fails with `NamespaceConflictError` (downgrade to a warning with `OS_METADATA_COLLISION=warn`). `os lint` additionally emits a non-fatal `naming/namespace-prefix` warning for bare-named UI/automation items (app, page, dashboard, flow, action, report, dataset) when a namespace is set.
321321

@@ -576,7 +576,7 @@ PORT=8080 os start # production — pin the port explicitly (see Ports & netwo
576576

577577
A minimal but complete project from scratch:
578578

579-
**`package.json`** (mirrors the `blank` template):
579+
**`package.json`**:
580580
```json
581581
{
582582
"name": "my-todo-app",
@@ -588,13 +588,13 @@ A minimal but complete project from scratch:
588588
"validate": "objectstack validate"
589589
},
590590
"dependencies": {
591-
"@objectstack/spec": "^16.0.0-rc.1",
592-
"@objectstack/runtime": "^16.0.0-rc.1",
593-
"@objectstack/driver-memory": "^16.0.0-rc.1",
594-
"@objectstack/plugin-hono-server": "^16.0.0-rc.1"
591+
"@objectstack/spec": "^17.0.0",
592+
"@objectstack/runtime": "^17.0.0",
593+
"@objectstack/driver-memory": "^17.0.0",
594+
"@objectstack/plugin-hono-server": "^17.0.0"
595595
},
596596
"devDependencies": {
597-
"@objectstack/cli": "^16.0.0-rc.1",
597+
"@objectstack/cli": "^17.0.0",
598598
"typescript": "^6.0.0"
599599
}
600600
}
@@ -741,7 +741,7 @@ import { ObjectKernel } from '@objectstack/core';
741741

742742
const kernel = new ObjectKernel({
743743
logger: {
744-
level: 'info', // 'debug' | 'info' | 'warn' | 'error' | 'fatal'
744+
level: 'info', // debug|info|warn|error|fatal|silent
745745
format: 'json', // 'json' | 'text' | 'pretty'
746746
},
747747
defaultStartupTimeout: 30000, // Per plugin (ms)
@@ -772,7 +772,7 @@ import type { Plugin, PluginContext } from '@objectstack/core';
772772
export interface Plugin {
773773
name: string; // Unique identifier (reverse domain recommended)
774774
version?: string; // Semantic version
775-
type?: string; // 'standard' | 'ui' | 'driver' | 'server' | 'app'
775+
type?: string; // standard|ui|driver|server|app|theme|agent|objectql
776776
dependencies?: string[]; // Plugins that must init before this one
777777

778778
// Phase 1: Register services

‎skills/objectstack-platform/rules/plugin-lifecycle.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ export interface Plugin {
4545
version?: string;
4646

4747
/** Plugin type */
48-
type?: string; // 'standard' | 'ui' | 'driver' | 'server' | 'app' | 'theme' | 'agent'
48+
type?: string; // standard|ui|driver|server|app|theme|agent|objectql
4949

5050
/** Plugins that must init before this one */
5151
dependencies?: string[];

‎skills/objectstack-platform/rules/service-registry.md‎

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -158,34 +158,34 @@ The REST plugin (`com.objectstack.rest.api`, `@objectstack/rest`) registers
158158

159159
## Core Fallback Injection
160160

161-
ObjectKernel auto-injects in-memory fallbacks for `core`-criticality services not registered by any plugin during Phase 1.
161+
ObjectKernel auto-injects an in-memory fallback for each `core` service that has one and no plugin registered in Phase 1.
162162

163163
```
164164
Phase 1: init() completes for all plugins
165165
↓
166166
Kernel checks ServiceRequirementDef (@objectstack/spec/system):
167-
'data' → required → ERROR if missing (no fallback; ObjectQLPlugin registers it)
167+
'data' → required → ERROR if missing (ObjectQLPlugin registers it)
168168
'metadata' → core → auto-inject createMemoryMetadata() if missing
169169
'cache' → core → auto-inject createMemoryCache() if missing
170170
'queue' → core → auto-inject createMemoryQueue() if missing
171-
'job' → core → auto-inject createMemoryJob() if missing
171+
'job' → core → NO fallback — warns; getService throws (#10746)
172172
'i18n' → core → auto-inject createMemoryI18n() if missing
173-
'auth' → core → no fallback factory — degraded-capability warning if missing
173+
'auth' → core → NO fallback — warns; getService throws if missing
174174
'realtime' → optional → skip, plugins should check availability
175175
↓
176176
Phase 2: start() begins — all core services available
177177
```
178178

179179
The fallbacks are **factories** exported from `@objectstack/core`
180180
(`createMemoryCache`, `createMemoryMetadata`, `createMemoryQueue`,
181-
`createMemoryJob`, `createMemoryI18n`) — not classes.
181+
`createMemoryI18n`) — not classes; `job`/`auth` have none.
182182

183183
### Service Criticality Levels
184184

185185
| Level | Behavior |
186186
|:------|:---------|
187187
| `required` | Kernel throws if missing — system cannot start |
188-
| `core` | Auto-injected in-memory fallback if no plugin provides it |
188+
| `core` | In-memory fallback auto-injected where one exists, else warn |
189189
| `optional` | Silently skipped — plugins must check before use |
190190

191191
## Incorrect vs Correct

0 commit comments

Comments
 (0)