Skip to content

First-run flow: small frictions a new deployment's first people meet #30125

Closed

Description

@objectstack-fleet

epic:#26676#1 · zhuangjianguo · session_cdb7a717def74e719988f089fbaa18ff

From a real-user walkthrough of the development flow, filed on the maintainer's word: 「第二组第三组也同意」 (2026-11-04). Measured on main 987ff33b88 unless a line says otherwise. Test project scaffolded with create-objectstack@18.3.0.

Items

# What a person meets Where measured Suggestion
1 Nothing asks the company name. Every invitee reads 「王总 邀请你加入 Default Organization」 main Ask at first sign-in, or let the first admin rename it from the home page
2 Joining by invitation takes three screens: register, then 「接受邀请」, then 「邀请已接受 … 继续」 Published 18.3.0 Registering from an invitation link accepts it; end on the app
3 The time zone dialog opened right after an unrelated action, on top of the toast saying what to do next (the invitation link). The toast expired behind it Published 18.3.0 production mode. Not reproduced under os dev on main Ask at a calm moment, or do not cover a toast
4 After a sign-out, the next person lands on the previous person's page. A new member first sees 「你没有访问此应用的权限」 for the Setup page the admin had open main: /login?redirect=%2Fapps%2Fcom.objectstack.setup%2F…. #29174 removed filter, search and sort from this redirect and kept the path An explicit sign-out goes to home
5 The scaffold's sample note object stays in the project and is listed by list_objects over MCP. A developer building a repair app may never notice it main: templates/blank/src/objects/note.object.ts Say in the generated docs that it is a sample to delete, or have os g object offer to remove it

Left out on purpose

Take these rows one by one. They do not depend on each other.

Activity

  1. objectstack-fleet commented on Nov 4, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: first-touch audit · p3 · domain:ui · pm:queue · 2026-11-04T16:33Z

    ⛔ Not a claim.


    Generated by Claude Code

  2. added
    domain:uiDomain lane — seat card indexed by label:pm:seat
    pm:queueReady for the PM dispatch loop
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    pm:queueReady for the PM dispatch loop
    on Nov 4, 2026
  3. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#5 · os-sales · session_01L6bhgVwQZbHRRM9CaXeKif

    Claim: PM loop round 3
    Session: session_01L6bhgVwQZbHRRM9CaXeKif
    Account: os-sales
    Branch: claude/project-thread-guv7bd (card thread of this project; a thread can push only its designated branch — measured platform exception to claude/issue-<n>-<slug>)
    Worktree: objectstack-issue-30125
    Domain: domain:ui
    Seat: domain:ui#5
    File surface: items 3 and 4 only — ui/apps/console/src/pages/settings/WorkspaceTimezonePrompt.tsx + workspaceTimezonePromptLogic.ts (item 3), ui/apps/console/src/components/ProtectedRoute.tsx and ui/packages/auth/src/AuthProvider.tsx sign-out (item 4), their tests, one root .changeset/. ⛔ packages/**, ⛔ ui/apps/console/src/pages/auth/** (held by #30157, PR #30243), ⛔ AppHeader.tsx (PR #30443).
    Container & model: M, mode:thread, model: default — dispatch-gates --tier: no path-derived mandate, effort: high
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card
    Thread-read: 6636150216
    Premise: holds for item 4 on origin/main; item 3 was seen only on published 18.3.0 production mode — the dev measures a production build of main first and reports premise_still_valid: false for item 3 if it does not reproduce.
    Serial constraints cleared: #30157 (PR #30243) holds the auth pages, out of this surface; PR #30443 (this seat) edits AppHeader.tsx, fenced out. Items 1, 2 and 5 are out of this claim (server and product call / held by #30157 and plugin-auth / devx template) and stay on the card.

    Scope: Part of #30125. Clause-② no; it becomes yes (widening) only if a new i18n key lands, and the seat then owes a TIER_DEFAULT review. Dispatch order lives in the card thread's opening message.

  4. 15 remaining items

  5. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:ui#4 · os-sales · session_01L6bhgVfPeFZkN1FP93imKU

    Landing record (item 2) · 2026-11-05T16:36Z

    PR #30556 merged 2026-11-05T16:30Z as 27b0bc7989 (seat ACCEPT 6662698500 on head 3fc04671, TIER_DEFAULT review in it). The PR said Part of #30125, so the card stays open.

    probe reading
    git grep -n useInvitationSignUpJoin origin/main -- ui/apps/console/src/pages/auth/RegisterPage.tsx ui/packages/app-shell/src/console/auth/RegisterPage.tsx :176 in the console page and :59 in app-shell's (both register pages join the invitation the link names)
    card state open (Part of)

    Release: session session_01L6bhgVfPeFZkN1FP93imKU · because item 2 has landed · back to pm:queue, assignee cleared.
    Remainder: item 5 only (the scaffold's sample note object, templates/blank, devx). Item 4 landed with PR #30490; items 1 and 3 close against #30206 (release 6660788692). Signing in to an EXISTING account from an invitation link still takes the accept page: item 2 names registration only, recorded in PR #30556's Acceptance notes, not a row of this card.


    Generated by Claude Code

  6. added
    pm:queueReady for the PM dispatch loop
    and removed
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    on Nov 5, 2026
  7. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    triage#1 · os-zhuang · session_01AavokzJ5DndAwitDXvKy4U

    Path: none

    Triage: retriage answered · domain:ui → domain:devx · 2026-11-05T17:36Z

    ⛔ Not a claim.


    Generated by Claude Code

  8. added
    domain:devxDomain lane — seat card indexed by label:pm:seat
    pm:dispatchedDispatched to a dev agent by /pm-dispatch
    and removed
    domain:uiDomain lane — seat card indexed by label:pm:seat
    pm:queueReady for the PM dispatch loop
    on Nov 5, 2026
  9. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#1 · os-elon-musk · session_016WV4cymvo9YoyLwKCXXBNw

    Claim: PM loop round 1
    Session: session_016WV4cymvo9YoyLwKCXXBNw
    Account: os-elon-musk
    Branch: claude/project-thread-qjnxn4 (the card thread's platform-assigned branch; a measured platform exception to claude/issue-<n>-<slug>) · card thread session session_016WV4cz8vMayjbrsVxur2KN
    Worktree: objectstack-issue-30125
    Domain: domain:devx
    Seat: domain:devx#1
    File surface: item 5 only (the remainder named by release 6663500314 and triage 6664861246): packages/create-objectstack/src/templates/blank/README.md and, if the template ships a sample header comment, packages/create-objectstack/src/templates/blank/src/objects/note.object.ts (a comment only), their template tests, and one root .changeset/ file (create-objectstack: patch). Route: the card's first suggestion (say in the generated project that note is a sample to delete). ⛔ No os g object change, no removal of the sample object.
    Container & model: S, mode:thread, model: default tier (no path-derived mandate), effort: medium
    Clause-②: no
    Metadata-protocol: none
    Responsibility: n/a — not a defect card
    Thread-read: 6664861246
    Premise: holds — packages/create-objectstack/src/templates/blank/src/objects/note.object.ts is on origin/main b3d2f4bd; whether the README already says it is a sample is for the dev to measure first.
    Serial constraints cleared: no open PR touches packages/create-objectstack/src/templates/blank/**; items 1–4 are landed or moved to #30206 (domain:ui), which does not touch the template.

  10. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#1 · os-elon-musk · session_016WV4cz8vMayjbrsVxur2KN
    os-dev-report

    {
      "issue": 30125,
      "status": "done",
      "branch": "claude/project-thread-qjnxn4",
      "pr": "https://github.com/objectstack-ai/objectstack/pull/30671",
      "session": "session_016WV4cz8vMayjbrsVxur2KN",
      "premise_still_valid": true,
      "summary": "Item 5. Measured on origin/main f4d568ba: neither templates/blank/README.md nor src/objects/note.object.ts said note is a sample (the object's description only called it the starter object). The generated README gains a section, The sample note object, saying it ships in every build, is served over REST and is listed to MCP clients until removed, with three steps to delete or replace it (file + export line in src/objects/index.ts; point note.test.ts at your own object; pnpm validate + pnpm test); the Layout bullet links to it. note.object.ts opens with a header comment saying the same. No os g object change, sample kept. Items 1-4 landed or moved to #30206, so the PR says Fixes #30125.",
      "tests": "pnpm --filter create-objectstack exec vitest run --maxWorkers=2 under the verify lock on 7eea2807: Test Files 24 passed (24), Tests 369 passed (369), VERDICT command-exit 0 (covers starter-comments-self-contained, blank-template-console-disclosure, blank-readme-validate-disclosure). No ablation: documentation and a comment only, no tested behaviour changed.",
      "gates": "dispatch-gates --commands --repo objectstack-ai/objectstack derived 52 families on 7eea2807, identical list on merge head 22f58ae4. 48 :: exit 0; 4 :: exit 3 PREREQUISITE NOT MET (check:dts-closure, check:dual-build-cjs-loads, check:lean-entry-closure, check:sourcemap-no-sources-content: they read built dist trees; no package source in the diff, declared to CI). --ran: 52 accounted, 48 run, 4 NOT-MEASURED (derived). check:commit-card-trailers --range origin/main..HEAD exit 0. PR check-runs: in_progress at report time.",
      "line_budget": "3 files, +34 / -1 (README +16/-1, note.object.ts +10, changeset +8)",
      "files_changed": [
        ".changeset/30125-blank-sample-note.md",
        "packages/create-objectstack/src/templates/blank/README.md",
        "packages/create-objectstack/src/templates/blank/src/objects/note.object.ts"
      ],
      "deviations": [
        "Harness-assigned branch claude/project-thread-qjnxn4, not claude/issue-30125-*.",
        "Changeset and PR body carry the claim's Clause-② no / Metadata-protocol none lines.",
        "Merged origin/main b77c160a before opening (head 22f58ae4); derived gate list unchanged, gates not re-run on the merge head."
      ],
      "dogfood_battery": "n/a, no ! in the PR title and no (narrowing) arm",
      "mcp_calls": "2 reads: issue_read x2 (get, get_comments on 30125). 0 writes.",
      "api_writes": "2: fleet-write relay pr_create (run 42116817936, PR 30671, 6181 bytes read back identical) and this os-dev-report via post-stamped. Plus git push (not REST).",
      "open_questions": [],
      "security_findings": "none",
      "out_of_scope_findings": []
    }
  11. objectstack-fleet commented on Nov 5, 2026

    @objectstack-fleet
    ContributorAuthor

    domain:devx#1 · os-elon-musk · session_016WV4cymvo9YoyLwKCXXBNw

    Landed (item 5) · PR #30671 merged as a98e5cd1c6 · 2026-11-05T22:59Z. The card closed through Fixes: items 2 and 4 landed earlier (PRs #30556, #30490), and items 1 and 3 are carried by #30206. This stroke removes pm:dispatched.

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

Metadata

Metadata

Assignees

Labels

domain:devxDomain lane — seat card indexed by label:pm:seatenhancementNew feature or requestpriority:p3

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions