Skip to content

feat(web): Squadron picker conversion — every creation door through the carrier - #35

Merged
Jacksondr5 merged 5 commits into
j5/mainfrom
j5-e7-squadron-picker-conversion
Sep 1, 2026
Merged

Jacksondr5 merged 5 commits into
j5/mainfrom
j5-e7-squadron-picker-conversion

Conversation

@Jacksondr5

@Jacksondr5 Jacksondr5 commented Aug 31, 2026 •

Copy link
Copy Markdown
Owner

What changed

Every in-reach web new-thread door now chooses a Registrar Squadron rather than a project-derived folder identity. The Command Palette, Sidebar toolbar, chat.new, chat.newLocal, ChatHeader, index route, and Sidebar’s New thread on <branch> action share the SQ1 draft carrier.

The Sidebar branch action resolves its source thread’s immutable Registrar home, launches with that Squadron’s folder only as substrate, and stores the selected Squadron under the returned scoped thread key. Unknown/multi state opens the existing Squadron picker; a missing folder fails closed with a named error.

The orphaned useThreadActionMenu hook — stranded by an upstream rewrite with zero call sites — is deleted rather than retained as a second implementation, together with this lane’s earlier edit inside it. threadActionMenu.logic remains as the live Sidebar menu contract. The reachable Sidebar branch path was separately fixed and verified.

The ambient scope option is labeled All Squadrons, following measured sentence case while preserving the J5 proper noun. The send-time ambient copy-and-freeze accommodation is removed: first send requires an explicit draft carrier or a known durable Registrar home, otherwise it fails loudly with “Choose a Squadron before sending.” The index’s ambient-selected auto-launch remains intentional. Squadron picker rows retain search and launch mechanics but no longer render folder second lines.

Acceptance mapping

  • Alpha and Bravo remain separate choices when they share one folder.
  • Selecting Bravo never navigates to Alpha; new drafts carry the selected Squadron.
  • Keyboard, toolbar, ChatHeader, index, and Sidebar branch doors use the same carrier grammar.
  • The Sidebar branch door preserves the source Registrar home, never thread.projectId as identity.
  • Loading and ready-zero Sidebar states remain distinct; ready-zero reuses Create Squadron.
  • The null scope option reads All Squadrons; Squadron rows show names without folder captions.
  • Unselected first sends fail closed; durable-home drafts remain sendable without ambient persistence.

Inventory and dispositions

Converted: Command Palette search/new-thread menus; Sidebar toolbar, empty state, and branch-thread action; keyboard doors; ChatHeader; landing auto-launch; PR empty-state copy; Squadron creation folder copy; Squadron scope copy and picker row treatment.

Boarded with named returns (recorded on the lane’s working board; Jackson ruled queue admission — three enter the dogfood queue, two fold into the naming audit, one is parked for a product session): the scheduling-context selector, the pull-request Squadron query contract, LegacySidebar, settings/active-context substrate cleanup, the mobile Squadron directory/home carrier, and broader mobile/web noun cleanup.

Verification

At source head af0d55cf0750595d01a174f4e691be5ce02ab7d3: Reviewer’s independent final battery is clean, all findings are closed or correctly refuted, focused tests/lint/formatting/typecheck pass, and the PR is mergeable. The protected zones are unchanged, the entry-point trace is dispositioned, and mutation tests discriminate the derivation, shortcut, carrier-key, loading-state, sixth-door, and ambient-accommodation guards. SquadronScope.logic.ts and its test remain byte-identical to the reviewed parent where required. FORK records the reachability proof, deleted-hook recovery origin b2ee17d7c, and the measured copy decision.

CodeRabbit was run exactly once at 14689b5147aa34fdeb3b2a680152dea166fef6a6; its findings were disposition-verified at later heads and no rerun was made.

Live evidence

Final isolated evidence is published additively on j5/evidence at commit 62ce29f26edf37d3c72791b88a9dd74ad9b286ac, under pr-35/af0d55cf0750595d01a174f4e691be5ce02ab7d3/. The README and SHA256SUMS manifest cover ten true PNG captures plus the accessible-name DOM/text assertion; all 13 published artifacts return HTTP 200 and checksums pass. The accessible-name assertion is text evidence rather than a screenshot: the DOM read verifies the exact Choose folder accessible name.

The captures cover shared-folder Alpha/Bravo choices, Bravo thread isolation, both keyboard doors, divergent-folder ChatHeader and index cases, multi-Squadron explicit choice, Sidebar branch carrier, ready-zero Create Squadron, and the All Squadrons scope control.

Built by Codex (GPT-5.6-terra) under Traycer; independently reviewed by Claude (Opus). Jackson retains merge authority.

Reactivation triage

Jackson’s reported source-picker geometry was measured against the PR head and base before any edit. The Local folder / Git URL / GitHub source picker is approximately 576×420px on the direct first-run path and approximately 518×378px when nested under Create Squadron; the Command/Dialog container classes and mounts are unchanged from base, so this remains a pre-existing SQ1/creation-surface layout issue. The Create Squadron dialog’s 512px max width, 384px form width, and left-aligned folder row are likewise unchanged from base and remain homed to that creation-surface work.

The ambient option’s behavior was traced rather than inferred: six converted creation doors ignore ambient scope, while landing/index intentionally consumes a valid selected ambient Squadron for auto-launch. Ambient remains a last fallback only in the pre-existing composer resolver, but the final send boundary no longer copies ambient into an unselected draft; such a draft fails loudly. Successful converted doors always set an explicit carrier. The Squadron row folder captions were removed per Jackson’s later ruling; folder data remains searchable through row search terms.

Ambient door trace

At the final head, Command Palette entries, Sidebar toolbar, both keyboard shortcuts, ChatHeader, and Sidebar branch actions use a durable Registrar home, the exact-one Registrar entry, or the explicit Squadron picker; none reads ambient scope for creation. Landing/index is the sole converted creation door that consumes a valid ambient selection and auto-launches directly into that Squadron, even when multiple Squadrons exist. With no determinate destination, index remains an explicit choice state. Composer inheritance still follows durable home > draft-local carrier > ambient for display, but first send now requires durable/draft-local state and never persists ambient as an accommodation.

Findings

All findings raised across the review rounds are closed or correctly refuted, including #220 (corrected to All Squadrons). The single authorized CodeRabbit run produced nine findings; all were fixed or refuted at later heads with per-finding notes. No CodeRabbit rerun was made.

The PR remains open for Jackson’s human approval and merge decision.

\n\nHard rule 7 note: the three later evidence attestations were corrected in place to open with “Posted by an AI agent on Jackson’s behalf.”; #221 is fixed and no source or evidence bytes changed.\n

@coderabbitai

coderabbitai Bot commented Aug 31, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Essentials

Run ID: 421e372b-ce72-480d-a262-666c138b54d6

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Comment @coderabbitai help to get the list of available commands.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XL 500-999 effective changed lines (test files excluded in mixed PRs). labels Aug 31, 2026
@Jacksondr5
Jacksondr5 force-pushed the j5-e7-squadron-picker-conversion branch 2 times, most recently from c9b3ff2 to 14689b5 Compare August 31, 2026 07:11
@Jacksondr5

Jacksondr5 commented Aug 31, 2026 •

Copy link
Copy Markdown
Owner Author

Posted by an AI agent on Jackson’s behalf.

Final UI evidence is published additively on j5/evidence at commit db2cb9905f4b2b2f13ff33f196098067d79233ff, under pr-35/14689b5147aa34fdeb3b2a680152dea166fef6a6/. The PR source head remains 14689b5147aa34fdeb3b2a680152dea166fef6a6.

Manifest (all eight SHA256 checksums verified): SHA256SUMS

Frame 08 cannot prove the aria attribute because screenshots do not render accessibility attributes. The separate DOM assertion is: getByLabel('Choose folder', {exact: true}) returned count 1 and aria-label === 'Choose folder'; this text assertion is the accessibility evidence, not the PNG itself.

All archived captures were verified as true PNG image data at 1920×929. Evidence used isolated disposable state /tmp/e7-final-evidence.WcBdn9; no shared live state was modified.

@Jacksondr5

Copy link
Copy Markdown
Owner Author

Posted by an AI agent on Jackson’s behalf.

Evidence clarification: frames that visibly include Project folder or Add project script are intentionally showing boarded, out-of-reach surfaces (#150/#151 disposition rows), not converted creation-choice surfaces. They are retained as honest sweep evidence; no recapture hides those named survivors. The aria-label assertion is the separate DOM/text evidence described in the attestation above, not something frame 08 can visually prove.

@Jacksondr5
Jacksondr5 force-pushed the j5-e7-squadron-picker-conversion branch 2 times, most recently from 234deb2 to 929619c Compare August 31, 2026 07:42
@github-actions github-actions Bot added size:XXL 1,000+ effective changed lines (test files excluded in mixed PRs). and removed size:XL 500-999 effective changed lines (test files excluded in mixed PRs). labels Aug 31, 2026
@Jacksondr5

Jacksondr5 commented Aug 31, 2026 •

Copy link
Copy Markdown
Owner Author

Posted by an AI agent on Jackson’s behalf.

E7 final isolated live evidence is bound to source head 929619cd6c48ceeb39e6bf8ab018c6ce6df8c6db and evidence commit dfadfa439c46bc549c3d3c72ea37d62af08d8dbf.

All eight image assets were checked as true PNG image data; each asset and the DOM-read text verifies against the manifest.

@Jacksondr5

Jacksondr5 commented Aug 31, 2026 •

Copy link
Copy Markdown
Owner Author

Posted by an AI agent on Jackson’s behalf.

Final isolated evidence is bound to PR source head 2a231814956749956235470370fe684eb7d823b7 and evidence commit ac681ff.

All nine images were verified as true PNGs and the manifest verified with shasum -c in the published evidence tree. Captured in disposable local state; no shared T3 home was used.

@Jacksondr5
Jacksondr5 force-pushed the j5-e7-squadron-picker-conversion branch from 2a23181 to 77e345f Compare September 1, 2026 20:51
@Jacksondr5

Jacksondr5 commented Sep 1, 2026 •

Copy link
Copy Markdown
Owner Author

Posted by an AI agent on Jackson’s behalf.

Final live evidence for source head af0d55cf0750595d01a174f4e691be5ce02ab7d3 is published on j5/evidence at commit 62ce29f26edf37d3c72791b88a9dd74ad9b286ac.

All PNG payloads were converted and verified as true PNGs; every raw URL below returned HTTP 200. Manifest · SHA256SUMS

Accessibility is a DOM/text assertion, not screenshot evidence: SquadronCreateForm accessible-name read records one Choose folder control whose accessible name and visible text agree.

@Jacksondr5
Jacksondr5 merged commit 3ef80f2 into j5/main Sep 1, 2026
13 checks passed
@Jacksondr5
Jacksondr5 deleted the j5-e7-squadron-picker-conversion branch September 1, 2026 23:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XXL 1,000+ effective changed lines (test files excluded in mixed PRs). vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant