|
1 | 1 | { |
2 | 2 | "type": "datasource", |
3 | | - "_note": "DatasourceSchema. Consumers: @objectstack/service-datasource (DatasourceConnectionService.toSpec → DatasourceConnectionSpec → createDefaultDatasourceDriverFactory), @objectstack/objectql (engine.ts federation write gate), @objectstack/runtime (external-validation-plugin). Seeded 2026-08-01 (#4487) after #4465/#4481 found six inert keys BY HAND on a type no gate governed. Method: the authoritative boundary is what crosses into `ConnectableDatasource` (datasource-connection-service.ts:45-74) and `DatasourceConnectionSpec` (contracts/datasource-driver-factory.ts:25-59) — a block on neither reaches no driver. objectui's DatasourcePreview renders `pool`/`ssl`/`retryPolicy`/`healthCheck` as SideBlocks and is NOT counted as evidence for any entry (see README, 'An authoring/preview renderer is NOT a runtime consumer' — the #4481 precedent was exactly this). Framework provenance/lock fields auto-live. RETIREMENT 2026-08-02 (#4583): the whole `capabilities` block (11 flags, every one dead and authorWarn'd) was REMOVED from the schema rather than bridged — pushdown is decided by the runtime driver's own `supports.*`, a different mechanism, so there was nothing to connect it to. Its rows are deleted rather than flipped, per the strict-removal route (the keys left the walked shape, so a kept row would read as an ORPHAN). `readOnly` is called out separately in the tombstone: deleting it does NOT hand the author a working alternative, because `external.allowWrites` only gates FEDERATED datasources — a managed datasource has no read-only gate at all, which is #4584 rather than something this removal invented. BATCHES B/C/D CLOSED 2026-08-02 (#4583): `retryPolicy` (4) and `healthCheck` (3) were removed as whole blocks and `external.label` / `external.requirePermission` as individual keys — all nine dead, all authorWarn'd, none bridgeable because each already had a DIFFERENT live mechanism: connection failure is the boot policy (degraded boot / bootCritical), liveness is the driver handle's on-demand ping()/checkHealth(), the federation label is the top-level `label`, and federated access is governed by ordinary permission sets + RLS. Rows deleted rather than flipped (strict-removal route). The retryPolicy rejection deliberately does NOT offer a rename: hook/job retryPolicy ARE enforced but spell the delay `backoffMs`, and that very inconsistency is the evidence nothing read the datasource one. datasource now carries ZERO dead properties.", |
| 3 | + "_note": "DatasourceSchema. Consumers: @objectstack/service-datasource (DatasourceConnectionService.toSpec → DatasourceConnectionSpec → createDefaultDatasourceDriverFactory), @objectstack/objectql (engine.ts federation write gate), @objectstack/runtime (external-validation-plugin). Seeded 2026-08-01 (#4487) after #4465/#4481 found six inert keys BY HAND on a type no gate governed. Method: the authoritative boundary is what crosses into `ConnectableDatasource` (datasource-connection-service.ts:45-74) and `DatasourceConnectionSpec` (contracts/datasource-driver-factory.ts:25-59) — a block on neither reaches no driver. PREVIEW CLAUSE RE-MEASURED 2026-08-10 (#7427) at objectui @e9ab52f9, replacing the 2026-08-01 sentence 'objectui's DatasourcePreview renders pool/ssl/retryPolicy/healthCheck as SideBlocks and is NOT counted as evidence for any entry'. That sentence was stale on BOTH halves, independently. (a) ITS GROUND MOVED. The maintainer ruling of 2026-08-10 (#7131) makes a designer preview that renders a key to a human a runtime consumer for DISPLAY keys — see README, 'Designer previews count as consumers' — so a blanket 'not counted for ANY entry' is no longer the rule here. The split is by what the property CLAIMS, not by what the surface is: `label` and `description` are display and now cite that preview as evidence in their own rows below; `pool` and `ssl` are BEHAVIOURAL connection material, so a SideBlock echoing them settles nothing and their verdicts still rest on the ConnectableDatasource boundary above — the #4481 precedent is untouched, which is the whole point of the two-section division. (b) ITS FACTS MOVED, in the opposite direction to the one the #7427 card expected. The preview still reads and renders all four SideBlocks (DatasourcePreview.tsx:105-108 read, :211-218 render) AND a capabilities chip strip (:116 read, :222 render) — nothing was deleted objectui-side. What #4583 removed was the SCHEMA half: `retryPolicy`, `healthCheck` and the whole `capabilities` block are gone from DatasourceSchema, which is `.strict()` and now REJECTS all three. So three of those five renders acknowledge keys no draft can carry — the objectui#3275 shape the preview's own header warns about, filed as objectui#4131 (a ledger row cannot fix a renderer). Framework provenance/lock fields auto-live. RETIREMENT 2026-08-02 (#4583): the whole `capabilities` block (11 flags, every one dead and authorWarn'd) was REMOVED from the schema rather than bridged — pushdown is decided by the runtime driver's own `supports.*`, a different mechanism, so there was nothing to connect it to. Its rows are deleted rather than flipped, per the strict-removal route (the keys left the walked shape, so a kept row would read as an ORPHAN). `readOnly` is called out separately in the tombstone: deleting it does NOT hand the author a working alternative, because `external.allowWrites` only gates FEDERATED datasources — a managed datasource has no read-only gate at all, which is #4584 rather than something this removal invented. BATCHES B/C/D CLOSED 2026-08-02 (#4583): `retryPolicy` (4) and `healthCheck` (3) were removed as whole blocks and `external.label` / `external.requirePermission` as individual keys — all nine dead, all authorWarn'd, none bridgeable because each already had a DIFFERENT live mechanism: connection failure is the boot policy (degraded boot / bootCritical), liveness is the driver handle's on-demand ping()/checkHealth(), the federation label is the top-level `label`, and federated access is governed by ordinary permission sets + RLS. Rows deleted rather than flipped (strict-removal route). The retryPolicy rejection deliberately does NOT offer a rename: hook/job retryPolicy ARE enforced but spell the delay `backoffMs`, and that very inconsistency is the evidence nothing read the datasource one. datasource now carries ZERO dead properties.", |
4 | 4 | "props": { |
5 | 5 | "name": { |
6 | 6 | "status": "live", |
|
9 | 9 | }, |
10 | 10 | "label": { |
11 | 11 | "status": "live", |
12 | | - "note": "display metadata (Setup → Datasources list). No runtime consumer by design — ADR-0033 docs-shaped, deliberately kept, not authorWarn'd." |
| 12 | + "verifiedAt": "2026-08-10", |
| 13 | + "evidenceScope": "cross-repo", |
| 14 | + "evidence": "objectui @e9ab52f9: packages/app-shell/src/views/metadata-admin/previews/DatasourcePreview.tsx:96 takes `label` off the datasource draft with the datasource's own `name` as fallback, and packages/app-shell/src/views/metadata-admin/previews/DatasourcePreview.tsx:146 renders it as the preview card's title", |
| 15 | + "producer": "objectui @e9ab52f9: packages/app-shell/src/views/metadata-admin/previews/index.ts:44 registers DatasourcePreview against the `datasource` metadata type, and packages/app-shell/src/views/metadata-admin/ResourceEditPage.tsx:949 resolves that registration and hands the component the draft being edited — the read point is reachable, not merely present", |
| 16 | + "note": "display metadata (Setup → Datasources list). ADR-0033 docs-shaped, deliberately kept, not authorWarn'd. PROSE RECONCILED 2026-08-10 (#7427): the old clause 'No runtime consumer by design' is superseded as a whole-system claim — a designer preview rendering a key to a human IS a runtime consumer (maintainer ruling 2026-08-10, #7131; README, 'Designer previews count as consumers'), and the metadata-admin datasource preview has been showing this value as the card title the whole time. What the old clause got right, and what is preserved: NO CONNECTION-PATH CONSUMER reads it — nothing in `ConnectableDatasource` / `DatasourceConnectionSpec` / the driver factory takes `label`, and `live` here does not mean a driver acquired a use for it. UNCHANGED by the reconciliation: still ADR-0033 docs-shaped, still deliberately KEPT, still not authorWarn'd. Status did not move (this row was already `live`); what it gained is a falsifiable pointer, which is the thing a `live` verdict is supposed to be. Reachability checked rather than assumed: `datasource` IS a registered metadata kind (packages/spec/src/kernel/metadata-type-schemas.ts:119), so the metadata-admin route that resolves this preview is a live authoring path — contrast `validation.label`, whose preview renders the same way into a kind ADR-0088 retired." |
13 | 17 | }, |
14 | 18 | "driver": { |
15 | 19 | "status": "live", |
|
74 | 78 | }, |
75 | 79 | "description": { |
76 | 80 | "status": "live", |
77 | | - "note": "internal documentation. No runtime consumer by design — ADR-0033 docs-shaped, deliberately kept, not authorWarn'd." |
| 81 | + "verifiedAt": "2026-08-10", |
| 82 | + "evidenceScope": "cross-repo", |
| 83 | + "evidence": "objectui @e9ab52f9: packages/app-shell/src/views/metadata-admin/previews/DatasourcePreview.tsx:97 takes `description` off the datasource draft, and packages/app-shell/src/views/metadata-admin/previews/DatasourcePreview.tsx:150 renders it beneath the title whenever it is non-empty", |
| 84 | + "producer": "objectui @e9ab52f9: packages/app-shell/src/views/metadata-admin/previews/index.ts:44 registers DatasourcePreview against the `datasource` metadata type, and packages/app-shell/src/views/metadata-admin/ResourceEditPage.tsx:949 resolves that registration and hands the component the draft being edited", |
| 85 | + "note": "internal documentation. ADR-0033 docs-shaped, deliberately kept, not authorWarn'd — and displayed under the title in the same preview card as `label`. Prose reconciled with `label` on 2026-08-10 (#7427), same ruling, same preserved caveat: no connection-path consumer reads it, and `live` does not mean one acquired a use for it." |
78 | 86 | }, |
79 | 87 | "active": { |
80 | 88 | "status": "live", |
|
0 commit comments