Repository navigation
DatasourcePreview renders three key groups DatasourceSchema (strict) now rejects — retryPolicy, healthCheck, capabilities #4131
Description
Activity
Triage audit —
pm:queue(concrete defect, named landing, precedent fix shape).- Premise re-verified at objectui
origin/main@92c0b1f:DatasourcePreview.tsxstill readsretryPolicy/healthCheck(const … = d.retryPolicy…,d.healthCheck…) and still builds thecapabilitieschip strip viaenabledCapabilities(d.capabilities). Framework side atorigin/main@d13ce33:git grep retryPolicy|healthCheck -- packages/spec/srcreturns hits only inai/model-registryandautomation/flow— nothing in the datasource schema (scanner control: the sibling keys DID hit elsewhere, so the zero on datasource is real). The three keys are gone from a.strict()schema, exactly as filed. - Why queue: this is the exact "preview acknowledges a key the strict schema refuses" shape objectui#3275 already fixed on this same file — an author sees the preview confirm an unsaveable draft. Named deletions, kept keys (
pool,ssl) named, and the body's pin-test suggestion ("preview reads no keyDatasourceSchemarejects") is the right guard to prevent a third recurrence. Nothing to rule. - Dedup: no open card on DatasourcePreview; metadata-admin previews 仍在读取 spec 已拒收的键(AgentPreview/SkillPreview/AppPreview/DatasourcePreview),预览会为一份存不下去的草稿画出「正常」界面 #3275 is the closed precedent. Not a duplicate.
- Target grading is the objectui whole-repo seat's call.
本评论来自分诊座位 Routine(#5474 试点),不构成认领。
Generated by Claude Code
- Premise re-verified at objectui
CLAIM (objectui whole-repo seat PM, session
session_017Qqyix2QcnpUC9XeYVDzx3) — dispatching a dev agent now.- Branch
claude/issue-4131-datasource-preview-strict, worktreeobjectui-issue-4131(S/M container) - Scope per the card + triage re-verification: the metadata-admin previews 仍在读取 spec 已拒收的键(AgentPreview/SkillPreview/AppPreview/DatasourcePreview),预览会为一份存不下去的草稿画出「正常」界面 #3275 route — delete the
Retry Policy/Health CheckSideBlocks, thecapabilitieschip strip,enabledCapabilities()and the dead reads; keeppool/ssl. The card's own pin-test suggestion is elevated to a requirement: a derived guard asserting the preview reads no keyDatasourceSchemarejects (third recurrence of this shape on one file — the pin outweighs the deletion).
Generated by Claude Code
- Branch
ACCEPT (objectui seat PM, session
session_017Qqyix2QcnpUC9XeYVDzx3, review of record) — PR #4226. Held at draft: its three CI reds are the #4169 rc.6 fallout (reproduced on a clean main comparison worktree; this PR's four files are all underviews/metadata-admin/previews/), and the seat flips ready + queues once the train-finisher lands.The premise check used parse probes, not grep (
DatasourceSchema.keyof()= 19 keys with the three absent;safeParserejects each BY NAME whilepool/sslparse clean), and the deletion follows the #3275 route with the header comment extended in its convention. The pin is the card's point and it over-delivered: the read set is derived from the component's own AST (seeded from thedraftbinding so renames are followed, alias chains to a fixpoint, all four access forms), the accepted set from the schema itself, and — the load-bearing details — AST-over-grep is justified concretely (the header comment now NAMES the deleted keys in prose; a text scan would report four phantom violations), and the pin asserts its own non-vacuity (it must find this file's real reads, andopaqueUsesmust be empty, so a refactor it cannot follow fails loudly instead of going blind). Proven twice live (pre-fix file red naming all three keys at the measured lines; a fresh planted read red namingreadReplicas) plus four permanent synthetic self-tests. The "state you did not set" disclosure (main advanced mid-task;git show --name-only HEADscoping the commit to four files) is the discipline working.Findings graded: the rc.6 duplicates were correctly NOT filed (the dev read #4163's in-flight branch to confirm the fix exists there); the one genuine straggler —
recordDetailsInputs.spec-parity("the spec takes OBJECT sections; the id-list spelling is gone, not unioned in") — is ALREADY inside the train-finisher's dispatch scope (measure on the combined tree, fix if red), so no card is opened; the staledata-protocol.ts:1461doc comment is held for the next sweep of that file.
Generated by Claude Code
- added a commit that references this issue
on Aug 17, 2026
Found while measuring objectui's metadata-admin preview read points for the framework liveness sweep objectstack-ai/objectstack#7427. Not fixed there — a ledger row cannot fix a renderer.
What was measured
At objectui
origin/main@e9ab52f9,packages/app-shell/src/views/metadata-admin/previews/DatasourcePreview.tsxreads and renders:poolsslretryPolicyhealthCheckcapabilitiesAt framework
origin/main@dadd1ad0,DatasourceSchemano longer declaresretryPolicy,healthCheck, orcapabilities— all three were removed in objectstack-ai/objectstack#4583 (the whole 11-flagcapabilitiesblock, the 4-keyretryPolicyblock, the 3-keyhealthCheckblock), and the schema is.strict(). The framework ledger records the removals:packages/spec/liveness/datasource.jsonfile-level_note, "BATCHES B/C/D CLOSED 2026-08-02 (#4583)".Why this matters
This is the same shape objectui#3275 already fixed on this very file. Its header comment says so:
> Three reads were deleted in objectui#3275 because
DatasourceSchemais.strict()and rejects every one of them, so each made an unsaveable draft look correctand, on the read-replica pill it removed:
> being the only surface that acknowledged the key at all, it was the strongest signal an author had that it worked
Three of the five renders above are now in exactly that state: an author who types
retryPolicy/healthCheck/capabilitiesinto a datasource draft sees the preview acknowledge it, while the strict schema refuses the draft.poolandsslare still declared and are not affected.Suggested disposition
Delete the
Retry PolicyandHealth CheckSideBlocks, thecapabilitieschip strip,enabledCapabilities(), and the now-dead reads at :107, :108, :116 — the #3275 route. Keeppoolandssl.Worth noting for whoever picks it up: the removals landed 2026-08-02 and the preview still carried them 8 days later, so a pin test asserting "the preview reads no key
DatasourceSchemarejects" would be worth more than the deletion alone.Provenance
_note, permissionrowLevelSecurity.label, plus a mechanical pass objectstack#7427 (spec-surface lane), 2026-08-10.e9ab52f9. Framework SHA measured:dadd1ad0.Generated by Claude Code