Skip to content

[ui] promote the nightly Studio live specs (object designer, page editor) into Live E2E UI under the promotion rule, so a Studio save path regression blocks merge #27554

Closed

Description

@objectstack-fleet

domain:devx#2 · os-justin · session_01QSeKYmTYfaPbLQD4BJfomW

Filing gate ③ (maintainer-directed). Maintainer, this session's chat, 2026-10-29, verbatim: 「同意,立卡」, answering the seat's Live E2E UI assessment (B: widen the gate to the server packages the Console depends on; C: the scenarios below), after the seat measured that neither adds CI wall-clock time. This is C, scenario 3.

Business reason. Studio is where customers and AI authors write metadata, and its save path breaks often after merge: #27459 (an empty autosaved item is refused 422, and every later edit is lost), #27461 (an unconfigured rollup is autosaved), #26917 (a blank draft over a published flow). studio-object-designer.spec.ts (F1–F4) and studio-editor.spec.ts already drive the real editor against the real stack, but only in test:e2e:live:nightly, where a red blocks nothing.

Task.

  1. Measure both specs' stability: the last ≥ 10 nightly readings, or ≥ 10 local runs on the workspace backend (ui/e2e/live/ci/start-backend.sh).
  2. Promote what passes the rule into test:e2e:live:ci: 3/3 consecutive green, plus a 5/5 run of the enlarged allowlist. Leave a test that does not pass in nightly, with the reason in its header.
  3. Add one assertion each spec lacks, if it is cheap: after a save, re-read the item through /meta and assert what was stored (the save round trip, not only the UI state).
  4. Stay inside [devx] Live E2E UI skips every server-only PR: widen its gate to the server packages the Console runs against, and pin the spec-time budget #27550's 2-minute budget. If both do not fit, promote the higher-yield one (designer F4 / F1) and record the choice.

Reader who acts. The domain:ui seat.

Dedupe. The same search as #27550. New.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Oct 29, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#3 · os-bill · session_01Utp6CaJoinvGQSbHeDaWBe

    Claim: PM loop round 1
    Session: session_01Utp6CaJoinvGQSbHeDaWBe
    Account: os-bill
    Branch: claude/project-thread-urez9i (the card thread's designated push branch, the recorded platform exception to claude/issue-<n>-<slug>)
    Worktree: objectstack-issue-27554
    Domain: domain:ui
    Seat: domain:ui#3
    File surface: ui/e2e/live/studio-object-designer.spec.ts, ui/e2e/live/studio-editor.spec.ts, the test:e2e:live:ci / test:e2e:live:nightly lists where they are declared under ui/ (stop on breach; explain in the report)
    Container & model: M, mode:thread, model: TIER_DEFAULT (dispatch-gates --tier on 178b5238: no path-derived mandate), effort: high
    Clause-②: no
    Metadata-protocol: none
    Responsibility: ui code produces the defect | no platform path covers it | every Studio / console author reaches it today
    Thread-read: none
    Premise: holds
    Serial constraints cleared: seat-3 siblings #27551 and #27552 touch ui/e2e/live/ and the live lists: coordinate through the seat thread, merge origin/main before the PR

    Filing gate ③ (maintainer 「同意,立卡」 on the card). Promotion rule and #27550 budget bind; ui/.github/** and root ci.yml out of bounds.

    Dispatched 2026-10-29T22:00Z to a card thread of the seat's project; the order lives in the project. ⛔ The thread posts no claim and writes no assignee.


    Generated by Claude Code

  2. objectstack-fleet commented on Oct 29, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#3 · os-bill · session_01Utp6CaYrosoxy8gyWwRM83
    os-dev-report

    Posted 2026-10-29T22:45Z.

    {
      "issue": 27554,
      "status": "done",
      "branch": "claude/project-thread-urez9i",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/27770",
      "head": "75f8060cd334d2bb4bf823dec7dc860a0dc37523",
      "session": "session_01Utp6CaYrosoxy8gyWwRM83 (card thread; seat session_01Utp6Ca91qzUJokpqNjhJeu)",
      "premise_still_valid": true,
      "summary": "studio-object-designer.spec.ts and studio-editor.spec.ts move from test:e2e:live:nightly to test:e2e:live:ci (ui/package.json); both passed the promotion rule. F4 now authors a writable package (the showcase is code-provided: save answers 422 WRITABLE_PACKAGE_REQUIRED), saves the new object's draft and re-reads GET /meta/object/NAME?state=draft: exactly one select field, options equal [{value:open,label:Open}], the empty row not stored. The page editor's Add block test now picks Card, waits for the autosave PUT ?mode=draft (2xx) and re-reads ?state=draft: first region holds one more block, the last is page:card. Both fit #27550's 2-minute budget, so no higher-yield-only choice was needed.",
      "readings": "Workspace backend (start-backend.sh, port 4010) + Console vite build served by vite preview (5190), --retries 0, one long-lived backend. Baseline unchanged specs: 10/10 green, 60/60 tests, 16.4-17.9 s. Changed specs: 10/10 green (3/3 consecutive included), 19.1-20.0 s. Enlarged allowlist pnpm run test:e2e:live:ci: 5/5 green, 55/55 tests, 33.9-37.2 s (wall 35.3-38.7 s). Incumbent four alone: 3/3, wall 18.0-19.3 s. Nightly: at most 2 scheduled runs since the live tier was wired, both failed on other shards; job logs not downloadable through the proxy, so the readings are local.",
      "tests": "Test-only diff (two live specs + one private script list). No ablation: no product behaviour changed. Runs as in readings, at the pre-rebase tree; the rebase onto 6d8372a8 touched no file in ui/e2e/live or ui/package.json.",
      "gates": "head 75f8060c: dispatch-gates --commands derived 31 families; all 31 ran locally exit 0, plus node scripts/check-sdui-manifest.mjs exit 0 (32 lines, listed in the PR body). --ran: 31 derived, 31 run, 0 NOT-MEASURED, 0 UNRUN. PR check-runs: in_progress at report time (Live E2E UI is the first CI reading of the enlarged step).",
      "line_budget": "3 files, +89 / -26 (115 changed lines), under the 3000 human-merge threshold",
      "files_changed": [
        "ui/e2e/live/studio-object-designer.spec.ts",
        "ui/e2e/live/studio-editor.spec.ts",
        "ui/package.json"
      ],
      "deviations": [
        "F4 now targets an environment-authored package (created and deleted per run through /api/v1/packages) instead of com.example.showcase, because a save into the code-provided showcase is refused; its banner assertions are unchanged.",
        "The harness's after-PR assignee/review-request step skipped, per the dispatch order (no assignees, no review request).",
        "Commit trailers are the AGENTS.md model-free pair, not the harness's model-named Co-Authored-By."
      ],
      "dogfood_battery": "n/a: no ! in the PR title and no (narrowing) arm",
      "mcp_calls": "0",
      "api_writes": "2: fleet-write relay pr_create (POST /repos/objectstack-ai/objectstack/pulls, labels skip-changeset; via workflow_dispatch of the relay), this report comment (POST /repos/objectstack-ai/objectstack/issues/27554/comments)",
      "open_questions": [],
      "out_of_scope_findings": [
        "carrier: seat · noted, not filed: .github/workflows/ci.yml live-e2e-ui comment says the four allowlisted live specs (now six); examples/app-showcase/test/console-live-specs.live.test.ts header says Four of its specs; docs/qa/platform-checklist/areas/studio-authoring.json says F4 never reads the stored options (it now reads the stored draft). All three are prose, read by no gate, outside this card's file surface."
      ]
    }

    Generated by Claude Code

  3. objectstack-fleet commented on Oct 29, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#3 · os-bill · session_01Utp6CaJoinvGQSbHeDaWBe

    ACCEPT → PR #27770 comment 6510524064 · 2026-10-29T23:00Z

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

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions