Skip to content

QA run · studio-authoring (20/20) · 3fcafcd3 · 2026-10-27 · 17 PASS / 1 PARTIAL / 1 FAIL / 1 BLOCKED / 0 NOT-RUN #26715

Closed

Description

@objectstack-fleet

Run record — the Studio full sweep the maintainer asked for: every Studio pillar in a real browser, plus every top-level property of Studio's 12 metadata types (per discriminator value), plus the whole studio-authoring area. Text only; screenshots were live oracles and are not linked.

Env fingerprint

  • Framework 3fcafcd3b8d93621e400ff2759551ae3930bb7bb. The console was built from ui/ in the same tree (pnpm console:build; the root pnpm build does not populate packages/console/dist).
  • App: examples/app-showcase, objectstack dev --seed-admin, OS_PORT exported. Each session had its own port and file DB (coordinator 41733; Data 47391; Automations 49109; Interfaces 47613/47614; Access 47631). Admin admin@objectos.ai; non-admin personas created per session.
  • Runner: coordinator session session_01J8VVAkZns5rNnK2rtszzbQ, plus four parallel QA sessions (Data, Automations, Interfaces, Access) and two gap-fill agents (view; object/field/hook/action).
  • Traps met:
    • stale-console-bundle: a console build was needed.
    • auth-state-leak: the language preference is stored server-side and a stale storage seed opened English; identity was re-proved per persona.
  • Not counted as defects: the server was reaped twice and restarted on the same DB.

Scope

  • Selector: area studio-authoring (20 items, 0 planned). All 20 judged.
  • Additional coverage, not in the title: the Studio UI clause list (pillar chrome, Data D1–D12, Automations E1–E6, Interfaces F1–F6, Access G1–G6); the property matrix (455 top-level properties across object, field, hook, action, view, app, page, dashboard, report, dataset, flow and permission); the 33 removed keys.

Per-item verdicts (revision · verdict · text evidence)

item rev verdict evidence
first-run-loop 7 PASS 6/6 clauses. New package → object → field → publish → record → app → Home tile, zero restarts (one boot banner)
object-designer-roundtrip 8 PASS option label rename persists; keyboard and drag reorder publish in order; label → API name; empty option row ignored
view-authoring-live 3 PASS draft receipt state:draft; invisible pre-publish; live after publish on a single boot
record-page-roundtrip 9 PASS Interfaces session
draft-publish-lifecycle 8 PARTIAL c0–c7 and c9–c11 pass. c8: /diff names the top-level widgets key, not widgets[0].title — a checklist-accuracy gap, not a product defect
authoring-validation-not-persisted 4 PASS 422 located refusals; nothing persisted; corrected shapes 200
org-override-registry-gate 5 PASS 5/5. Codes are served SCREAMING_SNAKE where the item spells them lowercase (accuracy note)
expression-editors 5 FAIL lint parity: RLS USING f_formula > 5 shows "Valid CEL" and autosaves; publish refuses rls-predicate-unenforceable → #26707
permission-matrix-editor-ux 5 PASS acc0–acc5 pass. acc3's wording assumes unruled fields are not editable; that is disputed and carried by a security card (detail withheld pending maintainer)
custom-page-render-and-blocks 1 PASS Interfaces session
page-variables-and-actions 1 PASS Interfaces session
custom-page-source-tiers 4 PASS Interfaces session (react gate checked on a second boot with OS_PAGE_REACT_ENABLED=false)
packaged-automation-studio-lock 4 PASS A1–A4. Forged draft PUT → 403 ITEM_LOCKED; package-less → 403 NOT_OVERRIDABLE; pin 10/10 when run from ui/ with --root .
packaged-display-class-direct-edit 3 PASS Interfaces session
metadata-diagnostics-sweep 9 PASS c0–c7. A planted malformed row is located; the outage pin passes 10/10
doc-on-app-menu 6 PASS Interfaces session. The Studio path is not usable (pickers hide gated docs) — accuracy note
picklist-bound-select 3 BLOCKED{fixture} the showcase ships no picklist (GET /meta/picklist items []); PUT picklist → 403 code-only
meta-save-preconditions-and-draft-rows 2 PASS If-Match / If-None-Match matrix; _drafts labels; history actors
multi-package-item-rows 2 PASS two-package dashboard; package-less save/delete 409; mismatch 422; revert semantics
save-door-runs-authoring-rules 3 PASS located 422s plus a "did you mean"; draft-then-publish refusal; pins pass

Pins (RUNNER rule 6), all green at 3fcafcd3:

  • meta-save-preconditions-and-draft-rows: 5 files.
  • multi-package-item-rows: 9 files.
  • save-door-runs-authoring-rules: 8 files.
  • The automation lock pin (10/10).
  • celAuthoring.test.ts (40/40).
  • 23 jsdom pins for four items.

Reproduction rules for FAIL

Product defects extracted (each its own card; this record holds the evidence index)

Security (detail withheld pending maintainer; dispatched directly on the maintainer's instruction): #26596, #26597, #26698, #26706.

Defect cards (39, Batch-of: studio-qa-2026-10-27; each carries its own reproduction):

Property-matrix totals (L1 Studio control · L2 round-trip · L3 runtime effect, for live properties)

  • object, field, hook, action (Data session + gap-fill):
    • Every no-entry property was written through the draft/publish API and its runtime effect measured.
    • object 18: 3 controls; L2 18/18; L3 15 pass, 3 hit by defects.
    • field 28: 4 controls; L2 28/28; L3 21 pass, 1 inconclusive (dimensions), 1 not exercised (mailAssociation), 1 not observable.
    • hook 6/6/6.
    • action: L3 24 pass, 4 fail, 2 not exercised.
  • view (61 properties, gap-fill): 3 Studio controls / 58 no-entry. L2 59 pass, 2 refused by design. L3 48 pass, 5 partial, 4 fail.
  • flow: 11 Studio gaps (description, successMessage, errorMessage, version, type, variables, runAs, requiredPermissions, errorHandling, nodes[].inputSchema, nodes[].boundaryConfig), all API-verified. 0 fail. Connector, wait, boundaryConfig and edge-type L3 not run.
  • app / page / dashboard / report / dataset (Interfaces):
    • app: 11 gaps, 1 fail.
    • page: 2 gaps.
    • dashboard: 1 gap; 9 widget types have no Studio entry.
    • report: 13/13.
    • dataset: no Studio editor by design; all API L3 pass.
  • permission (36): 24 controls / 12 no-entry; the API-verified ones work at runtime. Round-trip failures are carried by cards.
  • Removed keys: 33/33 refused at their real location with a retirement prescription.

Fixture gaps / checklist accuracy

These go to the checklist through the coverage PR that follows this run; they are not extracted as cards.

  • picklist-bound-select needs a picklist fixture.
  • packaged-automation-studio-lock's pin must run from ui/ with --root ..
  • org-override-registry-gate spells codes in lowercase.
  • draft-publish-lifecycle c8 expects key-level diff granularity.
  • permission-matrix-editor-ux acc3 and acc5 wording; step-1 path.
  • doc-on-app-menu: the Studio path is impossible; create-user needs mustChangePassword:false.
  • object-designer-roundtrip step 1 routes through Setup.

Off-clause probe

  • Duration: the four parallel sessions ran about 06:58–08:22 UTC and the two gap-fill agents until about 09:30 UTC, with coordinator probes before and between them.
  • Doors: every Studio pillar in the browser (desktop, 900px and 390px widths; light and dark; en and zh-CN); /api/v1/meta/* save/publish/discard/history/diff/rollback/audit/diagnostics; /api/v1/packages/*; /api/v1/data/*; /api/v1/security/explain.
  • Boundary classes: phantom and read-only packages; draft-only items; a held edit vs departure; unknown keys; retired keys; foreign references; non-admin personas; runtime changes to metadata already in use.
  • Findings: the cards above. Observations not filed (by design or open ledger questions):
    • multiselect/checkboxes save options:[] (spec-derived);
    • the publish-drafts 200 + success:false envelope;
    • plain DELETE of a draft-only item answers "nothing to delete" (folded into UX feedback);
    • defaultRowScope hides rows from the platform admin (needs a ruling);
    • systemFields.audit:false rows still carry timestamps;
    • a one-character option value is refused (too_small).

Activity

  1. objectstack-fleet commented on Oct 28, 2026

    @objectstack-fleet
    ContributorAuthor

    devx seat 2 · pointer · 2026-10-28T03:28Z

    This run's checklist-author pass, PR #26848, is taken over by devx seat 2 on the maintainer's word (「这个你也接手 26848」). Claim: PR comment 6459900913. Cloud session session_01QSeKYkS7Zv7Z3r6tzUFzSf merges main, resolves the studio-authoring.json conflict, re-verifies every item against current main, and checks that each knownGaps card it cites is still open.


    Generated by Claude Code

  2. objectstack-fleet commented on Oct 29, 2026

    @objectstack-fleet
    ContributorAuthor

    Close-out (checklist-test §5) · 2026-10-29T02:13Z

    Extracted: #26707 · studio-authoring.expression-editors · lint parity (the FAIL)
    

    Every verdict has a disposition, so the record closes completed. Closed by the PM seat session_012YjcDon6BvR9MN93ZsFq3U in a close-out sweep the maintainer approved (「同意」).


    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions