QA-source: objectstack-ai/objectstack#21784 · integration-system.external-schema-browser-ui · acceptance[1]
Also: also acceptance[3], acceptance[4], negative[0], negative[4]
A clause of integration-system.external-schema-browser-ui fails in the ObjectStack 17.7 pre-release checklist run objectstack-ai/objectstack#21784 (framework subject 316be321e, console pin 2e818d0b51ec). An independent verifier (VF3, RUNNER rule 7) confirmed it: P2. It predates the 17.6.0 console pin 31971ff1e; no open duplicate was found. Owner: objectui.
Reproduction
- Stock showcase boot (it ships datasource
showcase_external), admin form sign-in.
- Open
/_console/apps/setup/metadata/datasource/showcase_external (also under /apps/studio/metadata/datasource/…).
- Network:
GET …/external/tables → {"success":true,"data":{"tables":[{"name":"customers","columnCount":7},{"name":"orders","columnCount":7}]}}. Panel: "No remote tables found (check the datasource's allowedSchemas)." Expected two rows.
- "Refresh catalog" → 200 with
data.catalog.snapshotAt. Expected a timestamp; none renders.
- Validation tab → "Run validation" → 200
{success,data:{ok:true,results:[2 rows]}}. Panel replaced by "Preview failed to render — Cannot read properties of undefined (reading 'length')". Expected verdict rows.
- The import dialog (A3) reads
data.draft through the same code and is unreachable while the list is empty. Seen twice by the runner and twice by the verifier.
Mechanism
packages/app-shell/src/views/metadata-admin/external/api.ts:133 jsonOrThrow returns the raw body; callers read data.tables (:146-147), data.draft (:164-165), data.catalog (:174-175), and validate returns the body as {ok,results} (:186).
- Every framework route answers through
sendOk {success:true,data:{…}} (packages/rest/src/external-datasource-routes.ts:420 etc.).
- Consumers:
SchemaBrowser.tsx:53, ExternalDatasourcePanel.tsx:72/119, ValidationPanel.tsx:135-159 (results.length on undefined).
- objectui's
api.test.ts mocks the bare {tables} shape, so the unit test hides it. api.ts last changed at 31971ff1e; the server envelope is present at 617f25f8a. No duplicate found.
Done when
The client unwraps the envelope for tables / draft / catalog / validate, the test fixture uses the real wire shape, and the panel lists, refreshes and validates.
Related: the server-side import twin defect is objectstack-ai/objectstack#21788 (separate card).
Generated by Claude Code
QA-source: objectstack-ai/objectstack#21784 · integration-system.external-schema-browser-ui · acceptance[1]
Also: also acceptance[3], acceptance[4], negative[0], negative[4]
A clause of
integration-system.external-schema-browser-uifails in the ObjectStack 17.7 pre-release checklist run objectstack-ai/objectstack#21784 (framework subject316be321e, console pin2e818d0b51ec). An independent verifier (VF3, RUNNER rule 7) confirmed it: P2. It predates the 17.6.0 console pin31971ff1e; no open duplicate was found. Owner: objectui.Reproduction
showcase_external), admin form sign-in./_console/apps/setup/metadata/datasource/showcase_external(also under/apps/studio/metadata/datasource/…).GET …/external/tables→{"success":true,"data":{"tables":[{"name":"customers","columnCount":7},{"name":"orders","columnCount":7}]}}. Panel: "No remote tables found (check the datasource's allowedSchemas)." Expected two rows.data.catalog.snapshotAt. Expected a timestamp; none renders.{success,data:{ok:true,results:[2 rows]}}. Panel replaced by "Preview failed to render — Cannot read properties of undefined (reading 'length')". Expected verdict rows.data.draftthrough the same code and is unreachable while the list is empty. Seen twice by the runner and twice by the verifier.Mechanism
packages/app-shell/src/views/metadata-admin/external/api.ts:133jsonOrThrowreturns the raw body; callers readdata.tables(:146-147),data.draft(:164-165),data.catalog(:174-175), and validate returns the body as{ok,results}(:186).sendOk{success:true,data:{…}}(packages/rest/src/external-datasource-routes.ts:420etc.).SchemaBrowser.tsx:53,ExternalDatasourcePanel.tsx:72/119,ValidationPanel.tsx:135-159(results.lengthon undefined).api.test.tsmocks the bare{tables}shape, so the unit test hides it.api.tslast changed at31971ff1e; the server envelope is present at617f25f8a. No duplicate found.Done when
The client unwraps the envelope for tables / draft / catalog / validate, the test fixture uses the real wire shape, and the panel lists, refreshes and validates.
Related: the server-side import twin defect is
objectstack-ai/objectstack#21788(separate card).Generated by Claude Code