Repository navigation
Role page: holds and holders; no launch chrome on notes - #28
Merged
Merged
Conversation
A fiber outside the Desk's lifecycle (a note or a role) has no settings disclosure, History, composer or verdicts on its page, and no lifecycle glyph on its sidebar card. A role page (exactly roles/<slug>) lists, between its lede and body, the holder pages beneath it and the feed's constitutions whose roster names it, in Desk order, each opening in the reader. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01XEBcfWbydFqYZm6DhLvCqT
cailmdaley
force-pushed
the
design/ws-rolepage
branch
from
October 7, 2026 13:04
3b5c95b to
0513151
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A role's page now shows which constitutions name the role and who holds it. Notes and roles no longer show the controls for launching, configuring or reviewing a constitution.
Quiet chrome on fibers off the Desk
onDeskinfiberPageState.ts, the same one Offer no column or verdicts on a fiber outside the Desk's lifecycle #26 uses: a fiber with a shuttle block, or a cycle. Any other fiber (a role, a holder page, a plain note) now gets no control band fromWorkspace.controls(). That removes the settings disclosure (the "me" strip, the agent picker and Promote), History, the composer and the verdicts. Composer focus and Escape handling read the same band, so they do nothing on these pages.buildCardPapergives a fiber that isn't Shuttle-managed). The Desk's own cards are unchanged.POST /api/v1/lifecycle {action: install, disabled: true}.shuttle installon the command line still does this. The Dock still has the code path, but it can now only be reached on a cycle that has no shuttle block.Role page (a fiber whose id is exactly
roles/<slug>;roles/<slug>/<holder>is not a role page)roles/<slug>/<holder>from the fiber index the wikilinks already fetch. They show as quiet mono-caps links, resolved exactly, and each opens its holder page. The line stays hidden until the index arrives, and stays hidden if there are no holders.card.rolesinclude the slug, ordered by Desk column: awaiting review, in flight, drafts, then pinned, resting, tempered, discarded. Each row is a dot in the column's colour (awaiting review gold, in flight in the agent's blue, tempered verdigris, hollow otherwise), then the name, a short mono column label, and a one-line outcome. Clicking a row opens the constitution throughopenFiber. Rows in the first three columns always show; past five rows, the rest are folded behind "N more". If the role holds nothing, there is no heading.kanban_walks(--has-field shuttle) take every status. So the list shows the whole history, with live work first.Workspace.update()now re-checks the prose revision for fibers outside the feed. The revision includes the holds, so the role page follows roster changes as the feed polls.workspace/RolePage.ts. The styles infiber-prose.cssuse only reader tokens. The captions arerole=headingdivs rather thanh2, so a constitution theme's prose-heading styles don't apply to them.Look (harness, mocked daemon; the fixture role "surveyor" is held by opus and sonnet and named by three constitutions in three columns; "scribe" holds nothing and has no holders)
Phone (390 px): role page, role holding nothing, note, constitution

Gates
npm test: 126 files, 1535 tests pass (America/Los_Angeles). Under Europe/Paris, the only failure is the "runs under the pinned zone" guard, which is expected outsidenpm test.tsc --noEmitandnpm run buildpass.RolePage.test.tscovers the exact slug, Desk order, holders limited to direct children, row and holder clicks, the fold, a role holding nothing, and holder pages and notes getting no ledger.Workspace.integration.test.tschecks that a role page has no band, settings, history, composer or verdicts, that its holds follow feed polls, and that a row opens the constitution with its band.Reader.sidebar.test.tschecks the glyph. Two existing integration tests now open a Shuttle-managed card, because they assert on the band.🤖 Generated with Claude Code
https://claude.ai/code/session_01XEBcfWbydFqYZm6DhLvCqT