Skip to content

make ship onboarding task first - #429

Open
ka-wah wants to merge 13 commits into
mainfrom
newboarding
Open

ka-wah wants to merge 13 commits into
mainfrom
newboarding

Conversation

@ka-wah

@ka-wah ka-wah commented Oct 13, 2026 •

Copy link
Copy Markdown
Collaborator

Summary

  • Show the fresh Ship welcome as two local messages with typing marks. The second invites a direct task after ten seconds and is suppressed if the user speaks first.
  • Make onboarding take work off the user's plate: use authorized original sources, research discoverable facts, check capabilities before promises or refusals, and preserve useful work when full execution is unavailable.
  • Distinguish reminders, monitoring, and execution. Configure supported ongoing work before calling it active, describe check cadence and delivery accurately, and keep sending and consequential actions behind explicit approval.
  • Keep public lookup optional and use only the identifying details needed to find the right person. Hand over the result using the relevant verified control without a compulsory tour.
  • Include the setup loading dots, unified chat placeholder, expanded Fleet files, and Up/Down message navigation in Help.

Validation

  • Focused Chat tests: 33 passed in the reconciled worktree.
  • Focused gateway onboarding tests: 17 passed.
  • Prompt review preview and git diff --check passed.
  • The broad web type check in the temporary worktree was blocked by linked dependencies using different Zod minor versions (4.1 and 4.3). No clean-instance end-to-end flow was run.

Prompt: The user explicitly supplied and approved the final onboarding responsibility text.
Docs: Updated conversation architecture, early-access guidance, and responsibility architecture.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-13T18:29:29.646431Z f72e671 Manual request
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@github-actions
github-actions Bot temporarily deployed to gsv-preview-pr-429 October 13, 2026 09:36 Destroyed
@github-actions

github-actions Bot commented Oct 13, 2026 •

Copy link
Copy Markdown

Open GSV preview for f72e671. Sign in, create a space and complete normal onboarding. Included inference is configured. Initial certificate issuance can take a few minutes.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: d0bc851ee3

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

## Instructions

0 - On the website or in the desktop app the interface already said your first line for you: `Welcome to the ship. I am the ship. Who are you?` The user is answering it. From any other surface, such as the command line or a messenger, nothing was shown and you only run once they write to you: open your first reply with that line. Pace yourself for all the next steps:
0 - On the website or in the desktop app, Zen displays a local welcome as two Ship messages. The first appears after a brief typing mark:

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Remove the protected prompt edit pending explicit approval

This commit changes production content under workers/gateway/src/prompts/**, but the review request contains no explicit authorization to modify prompt or standing-context content. Keep this protected file unchanged, or obtain explicit approval for the prompt change before including it.

AGENTS.md reference: AGENTS.md:L193-L195

Useful? React with 👍 / 👎.

}, [answerHistory, conversation.rows, conversation.conversation?.id, outbox.messages, localRuns, runtime.activeRunId, runtime.rows, pid]);
const welcomeMoments = useShipWelcome({
active, ready, ship: !pidProp, conversationId: conversation.conversation?.id ?? null,
hasHistory: conversationMoments.length > 0 || Boolean(conversation.historyError),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Base welcome suppression on canonical messages only

When the canonical Ship conversation is empty but its Process has a visible note, tool-only run, or other activity that ended without sending a message, momentsFromConversation still puts that Process history into conversationMoments; this line therefore sets hasHistory and permanently skips the new-user welcome. Check canonical conversation messages rather than the combined presentation so inspectable Process activity does not make an empty conversation appear initialized.

AGENTS.md reference: AGENTS.md:L84-L84

Useful? React with 👍 / 👎.

@github-actions
github-actions Bot temporarily deployed to gsv-preview-pr-429 October 13, 2026 09:50 Destroyed
@github-actions
github-actions Bot temporarily deployed to gsv-preview-pr-429 October 13, 2026 09:56 Destroyed
@github-actions
github-actions Bot temporarily deployed to gsv-preview-pr-429 October 13, 2026 10:11 Destroyed
@github-actions
github-actions Bot temporarily deployed to gsv-preview-pr-429 October 13, 2026 10:51 Destroyed
@github-actions
github-actions Bot temporarily deployed to gsv-preview-pr-429 October 13, 2026 10:56 Destroyed
@github-actions
github-actions Bot temporarily deployed to gsv-preview-pr-429 October 13, 2026 11:04 Destroyed
@github-actions
github-actions Bot temporarily deployed to gsv-preview-pr-429 October 13, 2026 11:12 Destroyed
@ka-wah ka-wah changed the title stage ship welcome messages make ship onboarding task first Oct 13, 2026
@github-actions
github-actions Bot temporarily deployed to gsv-preview-pr-429 October 13, 2026 11:39 Destroyed
@github-actions
github-actions Bot temporarily deployed to gsv-preview-pr-429 October 13, 2026 11:43 Destroyed
@ka-wah

ka-wah commented Oct 13, 2026

Copy link
Copy Markdown
Collaborator Author

@codex review

@github-actions
github-actions Bot temporarily deployed to gsv-preview-pr-429 October 13, 2026 15:42 Destroyed

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 43609e2516

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +65 to +68
if (firstHumanMessageAt !== null && (firstHumanMessageAt < firstAt || now < firstAt)) return [];
const first = welcomeMoment("welcome:first", now >= firstAt ? FIRST_MESSAGE : "", now < firstAt,
now >= firstAt ? firstAt : welcome.startedAt);
if (firstHumanMessageAt !== null && (firstHumanMessageAt < secondAt || now < secondAt)) return [first];

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve welcome rows that have already rendered

When a first message is committed on another surface before firstAt but synchronizes to this client after the first timer has rendered its welcome row, this condition starts returning an empty array and removes that already-visible row. Persist the displayed welcome phase instead of inferring it from the canonical message timestamp; that also avoids reconstructing unseen rows after a suspended tab resumes.

AGENTS.md reference: AGENTS.md:L156-L157

Useful? React with 👍 / 👎.

Comment on lines +238 to +240
does not authorize a lookup. A name supplied during an accepted lookup needs no
second permission question, and Ship searches with the user's location. For an
accepted task, Ship uses suitable original or public sources to find task facts,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Document location as optional for public lookup

The production onboarding brief at workers/gateway/src/prompts/onboarding/welcome.md:57-60 now says to request an additional identifier only when needed and explicitly says not to always require a location, but this architecture text still states that Ship searches with the user's location. Update the documentation to preserve the minimum-identifying-information policy rather than describing location as mandatory.

AGENTS.md reference: AGENTS.md:L262-L264

Useful? React with 👍 / 👎.

Comment on lines +247 to +249
receive those updates or continue the conversation. After the first task, Ship
explains both Fleet sections: Responsibilities for tracked work and its history,
and Routines for reminders and scheduled work. The system responsibilities

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Remove the mandatory Fleet tour from the architecture guide

This says Ship always explains both Fleet sections after the first task, while the production brief at workers/gateway/src/prompts/onboarding/welcome.md:117-119 requires pointing only to the relevant control and explicitly forbids a compulsory Responsibilities/Routines tour. Align the architecture guide with that behavior so future prompt and test changes do not restore the tour.

AGENTS.md reference: AGENTS.md:L262-L264

Useful? React with 👍 / 👎.

@github-actions
github-actions Bot temporarily deployed to gsv-preview-pr-429 October 13, 2026 16:11 Destroyed
@ka-wah

ka-wah commented Oct 13, 2026

Copy link
Copy Markdown
Collaborator Author

@codex review

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 85acf0ea56

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +548 to +549
firstHumanMessageAt: conversationMoments.reduce<number | null>((first, moment) =>
moment.role === "human" && moment.timestamp !== null ? Math.min(first ?? moment.timestamp, moment.timestamp) : first, null),

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Avoid permanently suppressing the welcome for failed sends

When the first send fails, its optimistic outbox row is included in conversationMoments, so this reducer supplies a human timestamp and useShipWelcome immediately persists stopped: true. If the user then dismisses the failed row or reloads, the outbox disappears and the conversation remains canonically empty, but the welcome can never return, leaving an empty Ship without onboarding. The new canonical-history gate does not cover this path; only a committed human message should permanently stop the welcome, while an in-flight send can hide it transiently.

AGENTS.md reference: AGENTS.md:L84-L84

Useful? React with 👍 / 👎.

Comment on lines +63 to +65
if (welcome.firstShownAt !== null && welcome.secondShownAt === null
&& current >= welcome.firstShownAt + BETWEEN_MESSAGES_MS) {
recordWelcome({ ...welcome, secondShownAt: current });

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve the second typing phase after delayed timers

When the first welcome has rendered and the tab is backgrounded or the system sleeps until after the second deadline, the delayed callback enters this branch and marks the second message as already shown, so the user sees it immediately without the required 1.5-second typing mark and that phase is persisted. Fresh evidence beyond the prior suspended-tab comment is that this overdue-second branch remains, while the added suspension test delays only the first callback. Resume the second typing phase instead of converting an overdue deadline directly into secondShownAt.

Useful? React with 👍 / 👎.

@ka-wah

ka-wah commented Oct 13, 2026

Copy link
Copy Markdown
Collaborator Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Nice work!

Reviewed commit: f72e671aae

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

This branch was successfully deployed

1 active deployment
gsv-preview-pr-429 — f72e671a Deployed Oct 13, 2026 by github-actions[bot]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant