You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Full platform-checklist run (selector: all) executed against a live multi-node ObjectOS EE deployment — the specific ask was "run the whole checklist in Traefik cluster deployment mode". This is a deployed EE runtime, not the stock showcase dev app, which is why the blocked count is high and honest: a large slice of the checklist is authored against showcase fixtures / objectui browser pins that a deployed EE runtime does not carry.
Environment fingerprint
Subject: ObjectOS EE (com.objectstack.objectos-ee 4.1.1, runtime 17.2.0), framework pinned at 502ff8b5, objectui console vendored at 2a23000f.
Checklist source:docs/qa/platform-checklist/ at 277948f7; each verdict is stamped with its item revision in the in-session JSON scratch.
Runner: 15 area-runners + 2 verify-passes (RUNNER rule 7), each an independent agent driving server-truth oracles; browser only where a clause's oracle demanded it. Metadata writes pinned per-replica to sidestep the known cross-node invalidation gap (objectstack#13331).
Scope & coverage
215 runnable checklist items across 15 areas (6 blocked items hidden by the selector, excluded). 214 judged, 1 not-run (platform-core.shell-nav-personalization, P2 objectui-persistence, browser budget).
area
items
pass
partial
fail
blocked
not-run
access-security
22
1
14
0
7
0
ai
7
2
5
0
0
0
api-backend
16
6
4
0
6
0
approvals
12
1
0
0
11
0
attachments-storage
9
6
2
0
1
0
automation
16
0
3
0
13
0
cli
16
4
12
0
0
0
dashboards
10
1
5
0
4
0
i18n
5
2
3
0
0
0
identity-auth
16
3
9
0
4
0
integration-system
16
2
9
1
4
0
platform-core
18
3
8
0
6
1
records-forms
32
5
8
1
18
0
search
6
2
4
0
0
0
studio-authoring
14
1
2
3
8
0
total
215
39
88
5
82
1
The per-clause verdict detail (every acceptance/negative clause, its oracle, and the text evidence) is the in-session JSON scratch per RUNNER; this record carries the per-area rollup, every FAIL in full, and the accuracy/fixture findings.
FAILs (5) → extraction
Each FAIL was reproduced ×2 and, for the release-relevant ones, independently re-derived by a second agent from the captured evidence alone (RUNNER rule 7).
integration-system.datasource-credential-refusal-matrix (P0, security). CONFIRMED by verify-pass. A credential exposure on the datasource read path. Per RUNNER rule 2's carve-out (auth/authz/secrets), detail withheld pending maintainer — no reproduction is published here or on any extracted card. Extracted as an existence-only card (below).
records-forms.concurrent-edit-conflict (P1). Optimistic-concurrency token mismatch against the Postgres driver — CONFIRMED by verify-pass. This is already tracked as objectstack#13382 (same mechanism and source line); not re-filed — a QA-source pointer is added there.
studio-authoring.draft-publish-lifecycle (P1) and studio-authoring.view-authoring-live (P1) and studio-authoring.packaged-display-class-direct-edit (P2) — three FAILs that resolve to two distinct root causes under isolated multi-org, both CONFIRMED by verify-pass:
(a) org-scoped metadata READ routes drop the session org → history / diff / single-item dashboard overlay read env-wide (caller's own org data under-served; no cross-org leak). Extracted card below.
[availability] a datasource whose driver fails to start keeps /api/v1/ready at 503 cluster-wide and is not evicted on delete → all Traefik upstreams drain; only a restart clears it — see card. Related: /ready 探针看不见数据库:driver 运行期掉线,k8s 不摘流量也不重启,而每个请求 500 #3756. (Observed and handled during this run.)
Checklist-accuracy notes (for the checklist owner; not extracted as bugs)
records-forms.bulk-write-contract — updateMany/deleteMany are id-based ({records:[{id,data}]} / {ids:[]}) and createMany takes a raw array; the item's where-clause steps don't match this build.
api-backend.date-range-preset-matrix — DATE_RANGE_PRESETS are not wired to the data-API filter door at this sha.
ADR-0126 items (automation.packaged-flow-*, automation.setup-packaged-automation-board, platform-core.activation-ledger-*, access-security.activation-write-operator-gate, api-backend.packaged-action-disabled-dispatch, action-activation-door-contract) test machinery (sys_metadata_activation, kill-switch) that postdates framework 502ff8b5 — blocked(dependency) with grep-absence evidence.
Two client-error-shape observations matching items' own knownGaps: manifest protocol-incompat and namespace-conflict return 500 where a 4xx would be the client-error shape (platform-core.manifest-install-contract); FileConstraintError exits /api/v1/data as a sanitized 500 (records-forms.field-accept-maxsize-server-enforced).
Fixture / environment gaps (inherent to testing a deployed EE runtime)
No showcase corpus on the EE deployment (objects, seed data, apps, flows, dashboards, permission sets, business-unit tree, public forms, packaged flows) — the dominant blocker; ~half the browser/mixed clauses are blocked(fixture) because their steps name showcase fixtures.
Subsystems not mounted on this EE image:plugin-approvals (approvals area 11/12 blocked — decision routes 501), reports service (501), analytics cubes (none registered), webhook subsystem (sys_webhook 404), authorable connector/job/email_template/datasource metadata types.
objectui-only automated.ref pins (documented RUNNER environment fact) — 23+ browser items' pins live entirely in the objectui repo and are not runnable/pin-evidenced from a framework checkout.
No restart permitted on the shared live cluster mid-run → 2FA arming, env-lock, migration scratch-boot clauses blocked(environment).
objectstack#13331 (cross-node metadata invalidation disabled on this boot path) attributed throughout — runtime-authored metadata registers only on the writing replica; all such traffic was pinned per-replica.
Cluster resilience observed during the run
The deployment stayed healthy across the sweep except for one self-inflicted outage: a test datasource with an unstartable driver drove /ready to 503 on every replica (drivers list qa_integration_ds1/qa_integration_dsbad), draining all Traefik upstreams; delete did not evict the engine driver registry, so only a restart cleared it (extracted as the availability card above). Redis cluster coordination (os:lock:* / os:fence:*), leader-elected cron single-execution, session-across-replicas, org isolation, and readiness-drained rolling restarts all held (see the deployment verification record in objectstack-ai/cloud, branch claude/enterprise-cluster-deployment-qxiexe).
Full platform-checklist run (
selector: all) executed against a live multi-node ObjectOS EE deployment — the specific ask was "run the whole checklist in Traefik cluster deployment mode". This is a deployed EE runtime, not the stock showcase dev app, which is why the blocked count is high and honest: a large slice of the checklist is authored against showcase fixtures / objectui browser pins that a deployed EE runtime does not carry.Environment fingerprint
com.objectstack.objectos-ee4.1.1, runtime 17.2.0), framework pinned at502ff8b5, objectui console vendored at2a23000f./api/v1/readyhealth-checked upstreams), Postgres 16 + Redis 7 (OS_CLUSTER_DRIVER=redis), one-shot migrate. Single-DB multi-org,OS_TENANCY_POSTURE=isolated, membership invite-only,OS_AI_STUDIO_AGENTS=ask(AI Builder withheld),OS_CLOUD_URL=off.docs/qa/platform-checklist/at277948f7; each verdict is stamped with its itemrevisionin the in-session JSON scratch.Scope & coverage
215 runnable checklist items across 15 areas (6 blocked items hidden by the selector, excluded). 214 judged, 1 not-run (
platform-core.shell-nav-personalization, P2 objectui-persistence, browser budget).The per-clause verdict detail (every acceptance/negative clause, its oracle, and the text evidence) is the in-session JSON scratch per RUNNER; this record carries the per-area rollup, every FAIL in full, and the accuracy/fixture findings.
FAILs (5) → extraction
Each FAIL was reproduced ×2 and, for the release-relevant ones, independently re-derived by a second agent from the captured evidence alone (RUNNER rule 7).
integration-system.datasource-credential-refusal-matrix(P0, security). CONFIRMED by verify-pass. A credential exposure on the datasource read path. Per RUNNER rule 2's carve-out (auth/authz/secrets), detail withheld pending maintainer — no reproduction is published here or on any extracted card. Extracted as an existence-only card (below).records-forms.concurrent-edit-conflict(P1). Optimistic-concurrency token mismatch against the Postgres driver — CONFIRMED by verify-pass. This is already tracked as objectstack#13382 (same mechanism and source line); not re-filed — a QA-source pointer is added there.studio-authoring.draft-publish-lifecycle(P1) andstudio-authoring.view-authoring-live(P1) andstudio-authoring.packaged-display-class-direct-edit(P2) — three FAILs that resolve to two distinct root causes under isolated multi-org, both CONFIRMED by verify-pass:history/diff/ single-itemdashboardoverlay read env-wide (caller's own org data under-served; no cross-org leak). Extracted card below.getViewsByObject/GET /meta/view?object=omits a runtime-authored view container (container-not-expanded; org-independent — the door IS org-aware). A live recurrence of the closed [finding] the nested-plugin seam does not expand an aggregatedviewscontainer — a nested plugin's per-view items never reach the registry, sogetViewsByObject()/GET /meta/view?object=answer with the container alone #7163 / view-authoring-live: the documented view-container authoring path is inert at runtime — the container is stored but never served #7736 family. Extracted card below.Product defects extracted (RUNNER extraction obligation)
config.options.auth.passwordis a fourth spelling of an inline credential — authorable, persisted cleartext, unredacted, and read by the client #9040 / [security]sys_metadata.metadatais a general cleartext sink: any authored artefact whose schema permits an inline credential lands it there (datasourceconfig.password, connectorauthentication) #7990./meta/:type/:name/history,/diff, single-itemdashboardoverlay) read env-wide underisolated— see card. Family:/metaorg scope is decided from the RAW url spelling:translations/email_templatesread and write env-wide where their singular twin is org-scoped #10340 / The dispatcher/metadatatransport decides org scope from the RAW path segment — the #10340 defect on the second transport #10503 / An org-scoped metadata DELETE evicts the ENV-WIDE registry entry for every org —restoreArtifactRegistryViewis(type, name)-addressed and org-blind #6780.getViewsByObjectomits runtime-authored org-scoped view containers ([finding] the nested-plugin seam does not expand an aggregatedviewscontainer — a nested plugin's per-view items never reach the registry, sogetViewsByObject()/GET /meta/view?object=answer with the container alone #7163/view-authoring-live: the documented view-container authoring path is inert at runtime — the container is stored but never served #7736 fix incomplete for this path) — see card./api/v1/readyat 503 cluster-wide and is not evicted on delete → all Traefik upstreams drain; only a restart clears it — see card. Related: /ready 探针看不见数据库:driver 运行期掉线,k8s 不摘流量也不重启,而每个请求 500 #3756. (Observed and handled during this run.)Checklist-accuracy notes (for the checklist owner; not extracted as bugs)
records-forms.bulk-write-contract—updateMany/deleteManyare id-based ({records:[{id,data}]}/{ids:[]}) andcreateManytakes a raw array; the item's where-clause steps don't match this build.api-backend.date-range-preset-matrix—DATE_RANGE_PRESETSare not wired to the data-API filter door at this sha.automation.packaged-flow-*,automation.setup-packaged-automation-board,platform-core.activation-ledger-*,access-security.activation-write-operator-gate,api-backend.packaged-action-disabled-dispatch,action-activation-door-contract) test machinery (sys_metadata_activation, kill-switch) that postdates framework502ff8b5—blocked(dependency)with grep-absence evidence.500where a4xxwould be the client-error shape (platform-core.manifest-install-contract);FileConstraintErrorexits/api/v1/dataas a sanitized500(records-forms.field-accept-maxsize-server-enforced).Fixture / environment gaps (inherent to testing a deployed EE runtime)
blocked(fixture)because their steps name showcase fixtures.plugin-approvals(approvals area 11/12 blocked — decision routes 501), reports service (501), analytics cubes (none registered), webhook subsystem (sys_webhook404), authorable connector/job/email_template/datasource metadata types.automated.refpins (documented RUNNER environment fact) — 23+ browser items' pins live entirely in the objectui repo and are not runnable/pin-evidenced from a framework checkout.blocked(environment).Cluster resilience observed during the run
The deployment stayed healthy across the sweep except for one self-inflicted outage: a test datasource with an unstartable driver drove
/readyto 503 on every replica (drivers listqa_integration_ds1/qa_integration_dsbad), draining all Traefik upstreams; delete did not evict the engine driver registry, so only a restart cleared it (extracted as the availability card above). Redis cluster coordination (os:lock:*/os:fence:*), leader-elected cron single-execution, session-across-replicas, org isolation, and readiness-drained rolling restarts all held (see the deployment verification record inobjectstack-ai/cloud, branchclaude/enterprise-cluster-deployment-qxiexe).