You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Export profile-only launch mode and skip the lane guard - #126
Make the launched Claude process carry its actual lane mode:
Export CLAUDE_NO_LANE=1 for profile-only launches and bare fallbacks.
Clear an inherited opt-out when an explicit lane request starts a lane.
Keep explicit --no-lane authoritative regardless of option order.
Preserve launch mode across actual tmux child invocations.
Vendors merged opensoft/openRepoTools#135 at main commit a7d125716829dcc24b009e464d919a3e404afba4, using the canonical update-upstream.py apply command. Shared profile hooks remain installed.
Verification
Binary selection and launch modes passed, including all 72 current-Claude checks.
Name guard hook: 27 scenarios, 59 assertions passed.
Lane defaults: 49 scenarios, 206 assertions passed for each launcher entry point.
The PR makes the launched Claude process explicitly identify profile-only mode, normalizes inherited and explicit lane options with deterministic precedence, clears the exemption during lane handoff, and carries the mode through tmux and fallback paths. It adds focused launcher regressions, updates user-facing documentation, and records the OpenSpec/Speckit implementation and verification artifacts; review should also confirm the required vendored openRepoTools pin update is included before merge.
Sequence diagram for Claude launch lane-mode propagation
sequenceDiagram
participant User
participant Launcher as claude-profile
participant Tmux
participant Claude
participant Hook
User->>Launcher: pclaude <profile>
Launcher->>Launcher: export CLAUDE_NO_LANE=1
Launcher->>Claude: exec Claude without lane
Claude->>Hook: start with CLAUDE_NO_LANE=1
Hook-->>Claude: skip lane guard
User->>Launcher: lclaude <profile>
Launcher->>Launcher: unset CLAUDE_NO_LANE
Launcher->>Tmux: launch lane child
Tmux->>Claude: invoke Claude with lane mode
Claude->>Hook: start without no-lane marker
Hook-->>Claude: enforce lane guard
alt explicit --no-lane
User->>Launcher: --no-lane with profile options
Launcher->>Launcher: export CLAUDE_NO_LANE=1
Launcher->>Claude: exec Claude without lane
end
alt refused lane handoff
Launcher->>Claude: bare fallback with CLAUDE_NO_LANE=1
end
Loading
File-Level Changes
Change
Details
Files
Normalize and propagate the selected lane mode through launcher execution.
Export CLAUDE_NO_LANE=1 for direct profile launches, tmux children, and bare fallbacks.
Track explicit lane and no-lane options so lane requests clear inherited markers while --no-lane wins in either order.
Unset the marker before lane handoff and preserve the existing shared profile hooks.
base-image/files/claude-profile
Add regression coverage for mode propagation, precedence, and fallback behavior.
Observe the marker in fake Claude and lane-start processes.
Cover inherited markers, explicit lane requests, both option orders, tmux re-execution, and refused-lane fallback.
Retain binary-selection and launcher compatibility checks.
Trigger a new review: Comment @sourcery-ai review on the pull request.
Continue discussions: Reply directly to Sourcery's review comments.
Generate a GitHub issue from a review comment: Ask Sourcery to create an
issue from a review comment by replying to it. You can also reply to a
review comment with @sourcery-ai issue to create an issue from it.
Generate a pull request title: Write @sourcery-ai anywhere in the pull
request title to generate a title at any time. You can also comment @sourcery-ai title on the pull request to (re-)generate the title at any time.
Generate a pull request summary: Write @sourcery-ai summary anywhere in
the pull request body to generate a PR summary at any time exactly where you
want it. You can also comment @sourcery-ai summary on the pull request to
(re-)generate the summary at any time.
Generate reviewer's guide: Comment @sourcery-ai guide on the pull
request to (re-)generate the reviewer's guide at any time.
Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
pull request to resolve all Sourcery comments. Useful if you've already
addressed all the comments and don't want to see them anymore.
Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
request to dismiss all existing Sourcery reviews. Especially useful if you
want to start fresh with a new review - don't forget to comment @sourcery-ai review to trigger a new review!
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.
This profile-only case reuses launch.log, mode.log, and identity.log from the immediately preceding direct launch. If pclaude incorrectly exits without starting Claude, all three current assertions still pass from stale output. Clear those logs before this invocation and assert the selected Claude executable was launched, as the later refusal case does.
This issue also appears on line 143 of the same file.
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.
To continue using code reviews, you can upgrade your account or add credits to your account and enable them for code reviews in your settings.
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
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.
Summary
Make the launched Claude process carry its actual lane mode:
CLAUDE_NO_LANE=1for profile-only launches and bare fallbacks.--no-laneauthoritative regardless of option order.Vendors merged opensoft/openRepoTools#135 at main commit
a7d125716829dcc24b009e464d919a3e404afba4, using the canonicalupdate-upstream.py applycommand. Shared profile hooks remain installed.Verification
the old pin and passes with the marker-aware pin.
Governance:
openspec/changes/export-no-lane-mode/.Implementation:
specs/017-export-no-lane-mode/.This session is outside a lane under brettheap/new-workstation#47, which makes
lane attribution conditional on actual lane membership.
Summary by Sourcery
Propagate the actual lane mode to Claude launches so profile-only sessions skip lane enforcement while explicit lane requests retain precedence.
New Features:
CLAUDE_NO_LANE=1.Bug Fixes:
--no-laneremains authoritative regardless of option order.Enhancements:
Documentation:
CLAUDE_NO_LANEenvironment contract.Tests:
Chores: