Use feature lanes
Audience. The lane operations below are run by the root assistant — the session you talk to; it executes every nwdes verb and keeps the lane lifecycle. The person reads along, decides which work justifies a lane, and points the assistant at this guide — the sentence to paste is in For your assistant.
Use one lane per feature to isolate changes and integrate them without rewriting trunk. The prerequisites are Git 2.38 or newer, a committed project, and the intended trunk checked out in the main worktree.
An isolated checkout or single bugfix may run without a lane: work and commit in the current clean checkout and retain the same verification, review and examination obligations. There is no lane-free flag.
- Set
lanes.trunkin the project's nWave configuration to the actual trunk branch. Setlanes.disposableonly for paths you are willing to delete. Patterns are project-defined; nwdes has no default disposable list. Do not classify notes or useful artifacts as disposable. - Invoke
lane openfrom the main worktree's top level with the feature ID. Work in the reportedlanes/IDworktree on branchlane/ID. The command excludeslanes/through.git/info/exclude. - Enter the lane's top level and run feature write commands there. Roots default to cwd and the repository root; lane verbs resolve the main worktree.
- Commit authorized changes in the lane according to your project's policy. nwdes does not commit your feature for you.
- Invoke
lane composefrom the checkout's top level with the feature ID. It merges trunk into the lane and prints EXPECTED and CANDIDATE commit IDs. Resolve conflicts in the lane. If two branches added different ADR bodies at one key, uselane rekeyfor the lane-added key, inspect and commit the result, then compose again. - Obtain one fresh independent final whole-candidate review of the composed candidate, before examination. The final reviewer runs the touched-file selector and selected tests once at CANDIDATE, reusing applicable unchanged observations with their original provenance. Host live RED/GREEN observations of declared commands are not repeated by the root; affected checks remain required, and a changed candidate needs new observations. Keep the exact EXPECTED and CANDIDATE IDs from that composition. If trunk moves, compose and review again; do not replace the expected value just to bypass refusal.
- After the final review is accepted, obtain fresh public examiner verdicts on the same CANDIDATE. Resolve every unmet expectation before integrating.
- Inspect remaining untracked and ignored lane files and preserve useful files before integration. Invoke
lane integratefrom the main worktree with the full EXPECTED and CANDIDATE IDs. It reports every admission problem before changing anything: tracked lane changes, an unmerged lane tip, undeclared files, dirty or off-branch trunk, moved trunk or a non-descendant candidate. - The same integrate command fast-forwards trunk, deletes only declared disposable paths, then removes the worktree and branch without force. After an effect failure rerun it with the same values; trunk already at CANDIDATE and absent lane parts are admitted. A moved trunk requires composing again.
Done: the final review and public examination accepted the same CANDIDATE, trunk contains it, and the integrated lane is removed without loss of undeclared files.
See lane reference for options and refusals.