Skip to content

QA checklist: rewrite the Setup-designer items to the Studio door and add the .custom customization journey, with one live e2e through Studio #28579

Closed

Description

@objectstack-fleet

epic:#28130#1 · hotlong · session_040dfd80c4c9411b895c698e785a6848

Filing gate: ④ child of epic #28236 (P3, cut 2026-11-01 on the maintainer's 「四项提速措施全部按推荐执行」, schedule reviewed) · plan of record: ADR-0146 Rollout P3 "N-29 QA checklist and live e2e to the Studio door"; schedule review table: last, after N-28 and N-30. ⛔ Not a claim.

Blocked-by: #28578, #28577

Part of #28236 (P3, child N-29) · governs: ADR-0146 Consequences (checklist items and e2e specs that drive the Setup designer are "rewritten to the Studio door or marked transitional (N-29)"), the epic's two-minute check · lane: domain:devx (declared minor surface: one new spec in ui/e2e/live/) · size: L.

Why it waits. The checklist must describe what shipped. N-28 moves the last Setup → Metadata routes and Packaged automation, and N-30 settles the docs the items cite. Writing items earlier would pin URLs and copy that are about to change.

Business reason. The epic promises one behaviour a release tester can check in minutes:

  • "customize" a HotCRM view, and three reads show the same columns;
  • the export carries the declaration;
  • "Restore package original" undoes it;
  • a flow override runs only the new definition, and a waiting run finishes on the old one;
  • a field added to a HotCRM object lands in hotcrm.custom as xxx__c;
  • uninstalling HotCRM is refused, naming hotcrm.custom.

Today no checklist item and no live spec walks that journey.

Measured (35b178bd0a).

  • 352 items over 16 areas (docs/qa/platform-checklist/areas/*.json). None covers the ADR-0146 .custom journey: a grep for .custom, __c, ensure-customization or ADR-0146 hits only two unrelated custom-page items.
  • 10 items name a Setup → Metadata route or Packaged automation:
    • api-backend: packaged-action-disabled-dispatch;
    • automation: flow-node-type-matrix, packaged-flow-disable-durable, setup-packaged-automation-board;
    • integration-system: external-datasource-federated-read, external-schema-browser-ui;
    • platform-core: home-admin-cluster-links;
    • studio-authoring: object-designer-roundtrip, authoring-validation-not-persisted;
    • ux-conventions: write-feedback.
  • Overlay- or extension-shaped items to re-read: studio-authoring.packaged-display-class-direct-edit, studio-authoring.org-override-registry-gate, studio-authoring.packaged-automation-studio-lock, platform-core.packaged-object-extend-only.
  • studio-authoring.object-designer-roundtrip already flags that its e2e (F2–F4) drives the Setup designer route, "a sibling door onto the same save".
  • Validation is pnpm check:platform-checklist (README :11). The authoring procedure is the checklist-author skill.
  • Live e2e: 21 specs in ui/e2e/live/ (8 on the CI allowlist, studio-object-designer and studio-editor among them), CI allowlist test:e2e:live:ci (ui/package.json:113). Which showcase package serves as the read-only base for a journey: not verified.

Wanted.

  1. Each of the 10 items, and each overlay- or extension-shaped item above, is re-measured against main after N-28. It is either rewritten to the Studio door (URL, steps, automated.ref) or marked transitional with the reason. Each change gets a revisions entry.
  2. New items, one per promise, in their natural areas, citing the card that shipped each:
    • view, dashboard and report customize, export and restore (N-17);
    • flow override and "new similar" (N-11, N-18, N-22);
    • add field __c and the label patch (N-23c);
    • permission-set "new similar" (N-20b);
    • the ensure door and the pair uninstall refusal (N-13, N-14);
    • the os migrate ceremony (N-16a) and the closed package-less write (N-16b);
    • landing counts and directory marks (N-24, N-26b);
    • Setup → Metadata redirects, with datasource kept (N-28).
  3. One live spec walks the journey through the Studio door on a read-only base: customize a view, check the served columns, restore it, add region__c and see it in the pair, try to uninstall the base and read the refusal. It joins the CI allowlist only if its runtime fits the job's budget. Otherwise it goes to nightly, and the PR says which.
  4. pnpm check:platform-checklist is green, and coverage.json and FOLLOW-UPS.md are updated where the procedure requires.

Tests. pnpm check:platform-checklist exit 0. The new spec passes locally against showcase, with a failing-variant run attached: it must fail when one assertion is broken. One checklist-test run over the new items, recorded under runs/.

Release safety. Docs and tests only. No product code changes, so a release right after it ships the same product with a truthful checklist.

Not here. Moving routes (N-28). Skills and docs (N-30). Fixing a defect the run finds: each one gets its own card.

Dedupe. Searched checklist custom package override and e2e studio customize view restore. They return only #28236, #28509 (skills docs, N-30's first slice) and QA run records. #27377 is the release sweep, not this work.

Links back: #28236, #28241, ADR-0146 Consequences, Rollout P3.


Generated by Claude Code

Activity

  1. objectstack-fleet commented on Nov 1, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#1 · zhuangjianguo · session_01QsR2jUJ19MstFvFhjgiYTu

    Note for N-29 · from #28578 (PR #28785) · 2026-11-01T19:43Z

    ⛔ Not a claim. Recorded here because this card owns the QA checklist half of the epic, per #28578's "Not here".


    Generated by Claude Code

  2. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#1 · os-warren · session_01JQwxbX9avDwM2goWd7zimE

    Note for N-29 · from QA run #29002 (W4-C3b1, subject 7fa9873f). ⛔ Not a claim.

    Three more items fail today as stale spec against ADR-0146, for this card's re-measure list (item 1 of "Wanted"). The product follows the rulings; the clauses predate them. No card was filed for them, because this card owns the rewrite.

    Reproduction rules: R-1, R-2 and R-3 in #29002.

  3. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#1 · os-warren · session_01JQwxbWBtYWqaV8NhvUrShB

    Posted 2026-11-02T07:09Z by the dispatching PM seat session for the W4-C3b2 runner session_01JQwxbWJDYbbtH6dhJNoboN, whose own comment here was refused by its session permissions. Text below the rule is the runner's, verbatim.

    Measured input for two of the items this card lists, from 18.3.0 wave-4 run #28981 at 7fa9873f (after #28818 landed). No new card: the rewrite is this card's work.

    • platform-core.home-admin-cluster-links r5 now FAILs acceptance[2] as a stale spec. /_console/apps/setup/system/roles, /positions and /permissions land in one hop on /_console/studio/~all/metadata/position?scope=environment and /_console/studio/~all/metadata/permission?scope=environment, not the Setup catalog the clause names; the routing pins at this SHA (AppContent.systemHubRoutes, legacyRedirects, 38 passed) assert the Studio landing. The title, steps[0], acceptance[0] and knownGaps[1] still count 9 Administration targets; the shell has 8 (sys-objects removed). source[1]/[2] still describe SystemCatalogRedirect as landing on the Setup catalog.
    • ux-conventions.write-feedback r9: variants[10]'s /_console/apps/setup/metadata/object/OBJ now redirects to /_console/studio/~all/metadata/object/OBJ, where "Discard draft" lives; /_console/studio/PKG/metadata/object/OBJ goes to the Data pillar, which has no discard.

    Released by Warren in the project thread "Plan the release checklist run" (2026-11-02T07:06Z): 「待定全部同意」.

    QA-source: #28981 · platform-core.home-admin-cluster-links · A2


    Generated by Claude Code

  4. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#1 · os-warren · session_01JQwxbZx1yZXiTrFXKbSdFZ

    Run evidence for the automation.setup-packaged-automation-board re-point (QA run record #29124, W4-L1 live legs at 7fa9873). The item r10 failed on A0, A1, A2, A3, A5 and A6 as a stale spec after #28785; A4 and A7 passed. Measured on the live replacements, so the rewrite can re-point most clauses rather than retire them:

    • A0: GET /api/v1/meta/app?id=setup serves nav_packaged_actions (automation:packaged-actions); nav_packaged_automation occurs 0 times. The old URL /component/automation/packaged redirects to Studio › All metadata › Flow, so steps[2]'s typed-URL fallback no longer lands on any Setup page.
    • A1: the Studio rail and GET /api/v1/automation/_status both list 32 flows.
    • A2: Studio's auto-ledger-switch toggles a flow; the state persists across a reload and in the activation row.
    • A3: the actions half holds on the Packaged actions page (no clone on actions).
    • A5: the admin's 409 shows verbatim in Studio's studio-refusal strip, which has no role=alert (the retired page announced it). That gap is filed as Studio Automations: a refused flow switch (409) shows in StudioRefusalStrip, which has no role=alert or aria-live, so the refusal is no longer announced to assistive tech — the retired Setup page announced it #29139; the re-pointed clause needs that card's outcome. The member's 403 sentence is exact over the API.
    • A6: Studio's auto-new-similar-* opens the New similar dialog, validates name and label, and shows the 400 sentence in role=alert.
    • A7 now reads: a member is refused at both Setup and Studio, the activation read answers 403, and _status and /meta/action stay open.

    Generated by Claude Code

  5. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    epic:#28130#1 · hotlong · session_040dfd80c4c9411b895c698e785a6848
    2026-11-02T12:48Z

    Unblocked · p1 · pm:queue (epic stall patrol)

    ⛔ Not a claim.

  6. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#2 · marchtian · session_017ihL2gLghEqeDKTbDTC7Zd

    Claim: PM loop round 3
    Session: session_017ihL2gLghEqeDKTbDTC7Zd
    Account: marchtian
    Branch: claude/issue-28579-checklist-studio-door (slice 1; later slices take -s2 / -s3)
    Worktree: objectstack-issue-28579
    Domain: domain:devx
    Seat: domain:devx#2
    File surface: docs/qa/platform-checklist/areas/*.json (api-backend, automation, integration-system, platform-core, studio-authoring, ux-conventions), plus coverage.json / FOLLOW-UPS.md where the checklist procedure requires; in slice 3, one new spec in ui/e2e/live/ and the test:e2e:live:ci allowlist only if its runtime fits
    Container & model: L, sliced, mode:subagent, model: default tier, effort: high
    Clause-②: no
    Metadata-protocol: none
    Responsibility: the checklist still drives the Setup designer and has no item for the ADR-0146 .custom journey
    Thread-read: 6577543900
    Premise: holds
    Serial constraints cleared: none (no open PR touches platform-checklist/areas/ or ui/e2e/live/ at claim time)

    The card is size L, so it lands in three slices. Each slice gets its own PR, and only the last one carries Fixes #28579.

    1. Re-measure and re-point every existing item the card lists, plus the five named in the notes here: automation.packaged-flow-clone-contract, studio-authoring.packaged-automation-studio-lock, studio-authoring.access-permission-set-lifecycle, platform-core.home-admin-cluster-links and ux-conventions.write-feedback. Each item is rewritten to the Studio door or marked transitional.
    2. New items, one per promise (Wanted 2).
    3. The live journey spec and one checklist-test run over the new items (Wanted 3 and Tests).

    The measured inputs in 6562940204, 6570476620, 6571282495 and 6572222369 are binding inputs for slice 1. The A5 clause of automation.setup-packaged-automation-board waits on #29139's outcome and is marked transitional until then.

  7. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#2 · marchtian · session_017ihL2gLghEqeDKTbDTC7Zd
    os-dev-report

    {
      "pr": 29438,
      "head_sha": "9e8f8521316ef09654a0200ac594b25c68c744c6",
      "branch": "claude/issue-28579-checklist-studio-door",
      "slice": "1 of 3 (Wanted 1 only)",
      "gates": {
        "check:platform-checklist": "exit 0 — 352 items, symbol anchors 1096/1106 resolved (10 on the #16898 residual)",
        "dispatch-gates --commands": "16 derived, all exit 0 at head; --ran reconciliation: 16 derived, 16 run, 0 NOT-MEASURED",
        "unit pins": "ui 9 files/174 tests pass (vitest --maxWorkers=1); platform-objects 2 files/14 tests pass; runtime 2 files/36 tests pass",
        "not_measured_locally": [
          "Plan Test Core shards",
          "type-check lanes"
        ],
        "changeset": "skip-changeset (docs only)"
      },
      "line_budget": "6 files, +276/-134 = 410 lines vs merge base, under the 3000 threshold",
      "deviations": [
        "The first dispatch-gates runs exited 3 (PREREQUISITE NOT MET: no node_modules, then @objectstack/formula and lint not built). After pnpm install --frozen-lockfile and a locked turbo build (concurrency 2), all 16 exit 0.",
        "The first --ran call was combined with --commands and exited 2. It was rerun alone and reconciled 16/16.",
        "The ui pins first failed to resolve @objectstack/client. After a locked turbo build of the client, sdui-parser and spec closures, all pass.",
        "After the single main merge, StudioRefusalStrip had moved to StudioRefusalStrip.tsx (#29380). The board's A5 citation follows it, noted in its own r11 history row."
      ],
      "files_changed": [
        "docs/qa/platform-checklist/areas/automation.json",
        "docs/qa/platform-checklist/areas/api-backend.json",
        "docs/qa/platform-checklist/areas/studio-authoring.json",
        "docs/qa/platform-checklist/areas/platform-core.json",
        "docs/qa/platform-checklist/areas/ux-conventions.json",
        "docs/qa/platform-checklist/FOLLOW-UPS.md"
      ],
      "items": [
        {
          "id": "automation.setup-packaged-automation-board",
          "revision": "10->11",
          "why": "Re-pointed to Setup > Packaged actions plus the Studio ledger switch and New similar; per ruling 2, A5 scores the role=alert studio-refusal-message from #29224 instead of being marked transitional"
        },
        {
          "id": "automation.packaged-flow-clone-contract",
          "revision": "10->11",
          "why": "The clone now lands in the .custom pair with status obsolete (ADR-0146 D4). A2 is inverted to no double-fire, and the new A7 covers the package refusal arms"
        },
        {
          "id": "automation.packaged-flow-disable-durable",
          "revision": "8->9",
          "why": "Transitional: the served FLOW_DISABLED sentence still names the retired Setup > Packaged automation. Clauses are unchanged"
        },
        {
          "id": "automation.flow-node-type-matrix",
          "revision": "12->13",
          "why": "The writable copy now comes from Studio New similar into the .custom pair"
        },
        {
          "id": "api-backend.packaged-action-disabled-dispatch",
          "revision": "11->12",
          "why": "Transitional for the remedy half of A0/A6: describeTurnedOffPackagedItem('action') still names Setup > Packaged automation"
        },
        {
          "id": "studio-authoring.packaged-automation-studio-lock",
          "revision": "6->7",
          "why": "New lands in the pair, the ledger switch toggles with no metadata write, and Customize is not pressed"
        },
        {
          "id": "studio-authoring.access-permission-set-lifecycle",
          "revision": "4->5",
          "why": "New on a read-only package goes through ensure-customization into the pair"
        },
        {
          "id": "studio-authoring.object-designer-roundtrip",
          "revision": "11->12",
          "why": "F2-F4 open /studio/PKG/metadata/object/new?package=PKG (setupMetadataStudioPath, #28818)"
        },
        {
          "id": "studio-authoring.authoring-validation-not-persisted",
          "revision": "5->6",
          "why": "The Source tab moved to /_console/studio/~all/metadata/object/NAME"
        },
        {
          "id": "studio-authoring.packaged-display-class-direct-edit",
          "revision": "5->6",
          "why": "Transitional, blocked by dependency on slice 2: the package-less overlay this item proves was closed by #28850"
        },
        {
          "id": "studio-authoring.org-override-registry-gate",
          "revision": "7->8",
          "why": "Transitional: the package-less overlay steps and variants are scored blocked(dependency), and a 403 is expected"
        },
        {
          "id": "platform-core.home-admin-cluster-links",
          "revision": "5->6",
          "why": "Per ruling 3, 8 Administration targets read from source (sys-objects removed). Legacy role/permission catalog URLs land in Studio"
        },
        {
          "id": "ux-conventions.write-feedback",
          "revision": "9->10",
          "why": "The discard variant moved to the All metadata item page; the per-package URL opens the Data pillar, which has no discard"
        },
        {
          "id": "integration-system.external-datasource-federated-read",
          "revision": "unchanged",
          "why": "The datasource stays in Setup (ADR-0146 D1); setupMetadataStudioPath returns null for datasource"
        },
        {
          "id": "integration-system.external-schema-browser-ui",
          "revision": "unchanged",
          "why": "Same as above: the datasource door is not retired"
        },
        {
          "id": "platform-core.packaged-object-extend-only",
          "revision": "unchanged",
          "why": "API-only; its NOT_OVERRIDABLE/ITEM_LOCKED doors are unchanged; #28850 did not cover object"
        }
      ],
      "claims": [
        {
          "claim": "Ledger switch auto-ledger-switch, aria-checked/data-reading",
          "backing": "ui/packages/app-shell/src/views/studio-design/AutomationsPillar.ledgerSwitch-28148.test.tsx (passes)"
        },
        {
          "claim": "New similar dialog and refusal (auto-new-similar-refusal / -strip / -notice)",
          "backing": "ui/packages/app-shell/src/views/studio-design/AutomationsPillar.newSimilar-28567.test.tsx (passes)"
        },
        {
          "claim": "studio-refusal-message announced with role=alert",
          "backing": "ui/packages/app-shell/src/views/studio-design/StudioRefusalStrip.tsx#StudioRefusalStrip; StudioDesignSurface.refusalAnnounced-29139.test.tsx (passes)"
        },
        {
          "claim": "nav_packaged_actions replaces automation:packaged",
          "backing": "packages/platform-objects setup-packaged-actions-nav.test.ts and setup-nav-dead-key-tombstone (pass)"
        },
        {
          "claim": "Setup metadata URLs redirect to /studio/~all/metadata/TYPE",
          "backing": "ui/packages/app-shell/src/views/studio-design/setupMetadataRedirect.ts#setupMetadataStudioPath; AppContent.setupMetadataStudio-28578.test, systemHubRoutes, legacyRedirects (pass)"
        },
        {
          "claim": "New similar package refusal arms 400/422/422/409",
          "backing": "packages/runtime/src/domains/new-similar-target.ts#newSimilarTargetRefusal; runtime automation-flow-clone-custom-package test (pass)"
        },
        {
          "claim": "New on a read-only package goes through ensure-customization",
          "backing": "ui/packages/app-shell/src/views/studio-design/packages-io.ts#ensureCustomizationPackage"
        }
      ],
      "mcp_calls": 0,
      "api_writes": [
        "pr_create via the fleet-write relay (request fw-20261102T145615Z-50a432, run 41466691905 success, read-back identical, 5796 bytes) — PR #29438, draft, label skip-changeset, no assignees or reviewers",
        "this comment via post-stamped.mjs"
      ],
      "out_of_scope_findings": [
        {
          "finding": "describeTurnedOffPackagedItem in packages/types/src/packaged-item-turned-off.ts still names the retired 'Setup > Packaged automation' as the remedy in both the action and flow sentences. It reaches users in the served 409 body (ACTION_DISABLED / FLOW_DISABLED).",
          "dedupe_words": [
            "switched-off sentence",
            "Packaged automation remedy",
            "ACTION_DISABLED",
            "FLOW_DISABLED"
          ],
          "recorded": "FOLLOW-UPS.md §13b"
        },
        {
          "finding": "Four items outside the slice-1 list still name retired Setup doors in a step: platform-core.metadata-authoring-roundtrip steps[7], studio-authoring.record-page-roundtrip steps[0]/[3], studio-authoring.permission-matrix-editor-ux steps[0], automation.packaged-flow-subflow-disable-refusal steps[7]",
          "carrier": "#28579",
          "recorded": "FOLLOW-UPS.md §13c"
        }
      ],
      "security_findings": "none",
      "seat_decisions": [
        "Should slice 2 rewrite studio-authoring.packaged-display-class-direct-edit in place, or retire it with supersededBy pointing to the new customize/restore item?",
        "Who opens the card for the switched-off sentence defect (product code, out of this card's scope)?",
        "Should the four out-of-list items (FOLLOW-UPS §13c) join slice 2 or a later slice?"
      ]
    }
  8. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#2 · marchtian · session_017ihL2gLghEqeDKTbDTC7Zd

    Slice 1 of 3 landed · 2026-11-02T15:29Z · PR #29438 merged as eb123b7ccc (reviewed head 9e8f852131, seat record ACCEPT on the PR). Of the 16 items:

    • 9 are rewritten to the Studio door.
    • 4 are marked transitional, each with its reason in a revision row.
    • 3 are unchanged, for reasons recorded in the PR.

    Slice 2 is next. It takes the new items, one per promise (Wanted 2). It also takes the four items in FOLLOW-UPS.md §13c, and settles packaged-display-class-direct-edit: supersededBy if a new item covers every clause, otherwise a rewrite in place. The served turned-off sentence that keeps two items transitional is #29374's (N-31). The card stays pm:dispatched.

  9. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#2 · marchtian · session_017ihL2gLghEqeDKTbDTC7Zd
    os-dev-report

    {
     "card": 28579,
     "slice": "2 of 3",
     "pr": 29487,
     "head_sha": "73e71abc93d399dd3e4a3f05bbf8740a1198a43d",
     "base": "eb123b7ccc",
     "merged_main": "04e0c2c0c7",
     "gates": {
      "check:platform-checklist": "exit 0 (359 items; symbol anchors 1134/1144 vs base 1096/1106: 38 new anchors all resolve; #16898 residual unchanged at 10)",
      "dispatch-gates --commands": "16 commands, each exit 0; --ran: 16 derived / 16 run / 0 NOT-MEASURED / 0 UNRUN (first pass had check:doc-formula-expressions exit 3, lint not built; re-run after build)",
      "ui_pins": "exit 0: 14 files / 242 tests (cd ui && pnpm exec vitest run --maxWorkers=1)",
      "server_pins": "exit 0 each, 0 skipped: objectql 3 files/42, service-automation 1/16, runtime 4/97, metadata-protocol 2/41, cli integration 1/3",
      "merge_origin_main": "once, clean; checklist gate re-run exit 0 after it",
      "changeset": "skip-changeset (docs only)"
     },
     "line_budget": "+807 / -39 across 6 files (within 600-1000)",
     "deviations": [
      "studio-authoring.packaged-display-class-direct-edit retired with supersededBy although the successor does not carry every clause verbatim: [4] (packaged flow stays locked) is held by studio-authoring.packaged-automation-studio-lock plus automation.package-flow-override; the dashboard specimen moves from plugin-auth's system_overview to showcase_ops_dashboard (whether a platform-shipped dashboard is customizable is unverified). Seat ruling needed.",
      "platform-core.metadata-authoring-roundtrip acceptance[4] clause text corrected (it said view/dashboard accept a package-less overlay); verify unchanged. Accuracy fix beyond the steps[7] re-point.",
      "studio-authoring.access-permission-set-lifecycle has no automated block; left unset (the N-20b pins StudioDesignSurface.accessNewSimilar-28573 and runtime permission-set-clone were run as corroboration and cited in source).",
      "N-16a+N-16b share one cli item; N-13+N-14 share one platform-core item."
     ],
     "files_changed": [
      "docs/qa/platform-checklist/areas/studio-authoring.json",
      "docs/qa/platform-checklist/areas/platform-core.json",
      "docs/qa/platform-checklist/areas/automation.json",
      "docs/qa/platform-checklist/areas/cli.json",
      "docs/qa/platform-checklist/coverage.json",
      "docs/qa/platform-checklist/FOLLOW-UPS.md"
     ],
     "items": {
      "studio-authoring.package-customize-restore-display": "new r1 - N-17 customize/five reads/end user/export/restore, view+dashboard+report variants",
      "automation.package-flow-override": "new r1 - N-11/N-18/N-22 flow override, base-suspended run, ledger switch, restore, new similar",
      "studio-authoring.package-extension-field-c": "new r1 - N-23c __c extension field, label-only fieldPatches, __c refusals",
      "platform-core.customization-pair-ensure-door": "new r1 - N-13/N-14 ensure door 201/200/refusals; pair uninstall 409 on a writable base, 422 on the showcase",
      "cli.packageless-overlay-ceremony-and-close": "new r1 - N-16a os migrate packageless-overlays + N-16b 403 NOT_OVERRIDABLE close",
      "studio-authoring.package-customization-counts-and-marks": "new r1 - N-24/N-26b landing counts, directory marks and filter",
      "platform-core.setup-metadata-redirects-to-studio": "new r1 - N-28 one-hop redirects, datasource kept in Setup",
      "studio-authoring.access-permission-set-lifecycle": "rewritten r5->r6 - N-20b New similar extended in (steps[6], acceptance[5]) instead of a twin",
      "studio-authoring.packaged-display-class-direct-edit": "superseded r6->r7 - retired, supersededBy package-customize-restore-display; capability removed by ADR-0146 D2/D11",
      "studio-authoring.org-override-registry-gate": "rewritten r8->r9 - open side is the declared override from the pair; transitional knownGap cleared",
      "studio-authoring.record-page-roundtrip": "rewritten r12->r13 - steps[0]/[3] name the Studio All metadata URL (13c)",
      "studio-authoring.permission-matrix-editor-ux": "rewritten r8->r9 - steps[0] second door re-pointed (13c)",
      "platform-core.metadata-authoring-roundtrip": "rewritten r8->r9 - steps[7] re-pointed (13c); acceptance[4] wording corrected",
      "automation.packaged-flow-subflow-disable-refusal": "rewritten r11->r12 - steps[7] UI half is Studio's refusal strip (13c)",
      "api-backend.packaged-action-disabled-dispatch": "unchanged - knownGap waits on #29374 (order)",
      "automation.packaged-flow-disable-durable": "unchanged - knownGap waits on #29374 (order)"
     },
     "claims": "none (card not claimed, labelled or assigned)",
     "mcp_calls": "none",
     "api_writes": [
      "relay pr_create -> #29487 (read back: 8625 bytes identical, draft, skip-changeset, no reviewers/assignees)",
      "this comment via post-stamped"
     ],
     "out_of_scope_findings": [
      "FOLLOW-UPS 14b, measured from source: DELETE /api/v1/packages/:id runs requireWritablePackage before assertPackageUninstallable, so uninstalling a read-only base (showcase) answers 422 WRITABLE_PACKAGE_REQUIRED and the pair-naming 409 is unreachable there. Slice 3's live spec should expect 422 on the showcase, or use a writable base with an exported pair. Reach: source-read, not measured live.",
      "FOLLOW-UPS 14c: Studio landing copy engine.studio.landing.description / readonlyHint (ui/packages/i18n/src/namespaces/studio/en.ts) still says 'customize them with an environment overlay', pinned by BuilderLanding.environmentOverlayCopy-12171.test.ts; misleading after D11. Reach: source-read only. No card filed.",
      "Ceremony fixture: no door on main writes a package-less row, so the cli item stages one by direct sys_metadata insert (as the integration test does); recorded in its knownGaps."
     ],
     "security_findings": "none"
    }
  10. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#2 · marchtian · session_017ihL2gLghEqeDKTbDTC7Zd

    Slice 2 of 3 landed · 2026-11-02T16:55Z · PR #29487 merged as 128681f49f (reviewed head 73e71abc93, seat record ACCEPT on the PR). The PR adds seven new items, one per ADR-0146 promise. N-20b extends access-permission-set-lifecycle. The four §13c items and org-override-registry-gate now use the Studio door, and packaged-display-class-direct-edit is retired supersededBy package-customize-restore-display. The Studio landing copy is filed as #29489. Slice 3 is next: the live journey spec, plus one checklist-test run over the new items. That run also measures whether the platform's own system_overview dashboard can be customized. Slice 3 carries Fixes #28579.

  11. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#2 · marchtian · session_017ihL2gLghEqeDKTbDTC7Zd

    Claim: PM loop round 3 · slice 3 of 3
    Session: session_017ihL2gLghEqeDKTbDTC7Zd
    Account: marchtian
    Branch: claude/issue-28579-studio-journey-e2e-s3
    Worktree: objectstack-issue-28579
    Domain: domain:devx
    Seat: domain:devx#2
    File surface: one new spec in ui/e2e/live/, the test:e2e:live:ci allowlist in ui/package.json, docs/qa/platform-checklist/areas/*.json and FOLLOW-UPS.md
    Container & model: L, sliced, mode:subagent, model: default tier, effort: high
    Clause-②: no
    Metadata-protocol: none

    This is the same claim as 6579039207, restated for slice 3's branch, which carries Fixes #28579 in PR #29559. The claim from 6579039207 already said later slices would take -s3. No other session holds this card.

  12. objectstack-fleet commented on Nov 2, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#2 · marchtian · session_017ihL2gLghEqeDKTbDTC7Zd

    Landed · domain:devx#2 · 2026-11-02T19:32Z

    Slice 3 of 3 merged as dbca3ef034 (PR #29559), and the card closed on its Fixes. Slices 1 and 2 landed earlier as Part of.

    The seat releases the card: pm:dispatched comes off, and the worktree and branch are removed.

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

Metadata

Metadata

Assignees

Labels

area:studioChanging a running app without code — authoring, publish, docs and the portaldomain:devxenhancementNew feature or requestpriority:p1High: required for production / M2

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions