Repository navigation
docs(quest): plan per-project forks and the decision paper trail - #150
Conversation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 01e42b6367
ℹ️ 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".
…pts in the paper trail Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 44a8b19d6d
ℹ️ 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".
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Merging via
(Written by Claude Opus 5.5) |
#150 added paper-trail.md requiring /quest/m0/kix/prompts.md, which this PR deletes. That was its only blocker, so the Required section goes away. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore(quest): claim quest/m0/kix/prompts Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * feat(worker): make the decision inbox the signed-in home Add /inbox: one active decision thread across a maintainer's enrolled projects, coalesced per job target, with agent questions, account-limit choices, failed jobs, new pull requests, new issues, and ready quests. Define the agent prompt contract (choices, recommendation, free text, permission vs decision) and validate prompts and answers. Job routes accept inbox form posts, bind decisions to the revision on screen, and refuse stale or repeated answers. Per-maintainer read state marks changed items unread and keeps skips until an item changes. Sign-in now lands on the inbox. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(worker): keep the decision thread in one column on wide screens The PR meta line reused .entry-meta, whose grid-column: 2 split the thread into two columns once there was room. Also show GitHub's check and review enums as plain words. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * chore(quest): drop the deleted inbox quest from paper-trail #150 added paper-trail.md requiring /quest/m0/kix/prompts.md, which this PR deletes. That was its only blocker, so the Required section goes away. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(worker): answer publication decisions and keep older jobs in the inbox Codex review findings on #144: - A publication decision from bot publication (#145) fell through to "could not be read" with no way to answer. The inbox now lists the refused paths or why the branch is blocked and takes a text reply, which the answer route accepts from the form. - A failed PR job whose pull request is no longer observed crashed the inbox: the retry action dereferenced missing activity before the refresh reason was checked. The action is built only when unblocked. - The inbox read only the 50 newest jobs, so an older waiting job vanished. It now also reads every queued, running, and waiting job. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(worker): retry failures only where the retry can work Codex review findings on #144, round 2: - Retrying a failed planning interview started an unrelated one under a new plans/<id>. The retry now keeps the target, which the jobs route accepts, so the new job replaces the failure. - A failed quest job offered "Try again" after the quest stopped being ready, which the route then refused. The inbox explains instead. - An older failure beyond the 50-job history showed as fresh work or vanished. The inbox also reads each target's latest failure. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(worker): read each target's latest job and encode quest links Codex review findings on #144, round 3: - A finished job beyond the 50-job window let its still-open issue, PR, or quest show as fresh work. The inbox now reads each target's latest job however old: every one awaiting a decision, plus any other whose target is still observed. An index on (repository, target, createdAt) backs the lookup, replacing the 50-job window. - Quest links interpolated raw paths, so a `#` or `?` in a filename broke the board link. They now reuse the board's path encoding. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(worker): limit publication replies by characters, not JSON length The inbox's reply box allows 1,000 characters, but the answer route checked the JSON-serialized length against 1024, so quotes, backslashes, and line breaks could get a valid reply refused as too large. The route now checks the text itself against the same 1,000-character limit the form uses, after normalizing the CRLF line breaks forms submit. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(quest): plan batched inbox reads for m1 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * docs(quest): plan retries that continue from the published branch Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Summary
This plans two follow-ups from the bot publication PR (#145):
quest/m0/kix/forks.md: record each project's service fork by its GitHub repository ID instead ofGITHUB_FORK_OWNER/<upstream name>, so two upstreams with the same name (alice/app,bob/app) can't collide. The operator keeps creating forks by hand, now under any name, and kix records a fork once it confirms the fork's parent is that project's upstream. It ranks after operator setup and lands in m0 before launch.quest/m0/kix/paper-trail.md: the service writes a planning PR's decision section from the job's recorded questions and answers, with ✅ on each choice, so the agent no longer writes its own. It ranks after the answer flow quest.paper-trail.mdrequiresquest/m0/kix/prompts.md, which #144 deletes. Whichever of the two PRs merges second must drop thatRequiredentry.The other three suggestions from #145 were left unplanned: a live test of contributor-fork pushes, a
publishedjob event, and continuing an iteration after its PR head moved.Planning decisions
Who creates each project's fork, given that kix then records it by GitHub ID so names can't collide?
When does the per-project fork land?
Interview answers in planning PRs: how should the service record them?
Checks
quest check,just checkandjust testpass.🤖 Generated with Claude Code
(Written by Claude Opus 5.5)