docs: bootstrapper execution branches, Passes 4-5 (follow-up to #400) - #401
Conversation
Adds Scenarios 17-25 covering: REQ-013 connectivity check + REQ-022 transient retry (conda create and bulk install, both real captures); corrupted-conda self-heal (detect/decline/accept); Miniconda AllUsers->JustMe->both-failed chain; embed-tier download (decline and a genuine end-to-end real success); the REQ-009 provider cascade -- one real capture happens to show the FULL chain (uv->conda->embed->venv mid-exhaustion, then venv->system final decline, ending in the honest "SETUP COMPLETE -- WITH A CAVEAT" panel); --hidden-import auto-recovery exhaustion; the warnfix repair loop's success and genuine-failure paths (the failure case is what feeds the cascade candidate detection); pre-flight guards actually firing (contrast with Scenario 8's clean pass); and concurrent-instance lock contention (held vs. stale-evict). Follow-up to PR #400 (Passes 1-3), which already merged -- this continues on the same branch name reset from fresh main per the repo's merged-PR policy. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A4iE1BRSkUETwz237XeuTW
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
Warning Review limit reached
Next review available in: 42 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: ASSERTIVE Plan: Pro Plus Run ID: 📒 Files selected for processing (2)
📝 WalkthroughSummary by CodeRabbit
WalkthroughChangesThe documentation adds Parts VI and VII with scenarios covering bootstrapper failure handling, recovery paths, pre-flight guards, lock contention, configuration and dependency precedence, interpreter discovery, and consent flows. The backlog records a Miniconda fallback warning observation. Bootstrapper scenario documentation
Estimated code review effort: 2 (Simple) | ~10 minutes 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/demo-bootstrapper-output.md`:
- Around line 1517-1519: The Miniconda installation narrative and captured
output around the AllUsers/JustMe flow contradict each other. Update the
explanation or failure output so both consistently show whether a non-elevated
process attempts AllUsers or skips directly to JustMe, preserving the documented
branch behavior.
- Around line 1492-1493: In docs/demo-bootstrapper-output.md, add blank lines
between every adjacent fenced code block, including the reported region and the
additional section around the later referenced lines. Ensure each closing fence
is separated from the next opening fence by one blank line so markdownlint MD031
passes.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 50727b15-6a84-4ec6-9480-f7fb86c8f476
📒 Files selected for processing (1)
docs/demo-bootstrapper-output.md
📜 Review details
⏰ Context from checks skipped due to timeout. (1)
- GitHub Check: auto_merge
🧰 Additional context used
📓 Path-based instructions (2)
**/*
📄 CodeRabbit inference engine (CLAUDE.md)
**/*: Keep repository source and documentation ASCII-only; avoid emojis, curly quotes, em-dashes, and other non-ASCII characters.
When a change teaches or invalidates a lesson, update the relevant knowledge document in the same commit:docs/agent-interconnect.md,docs/agent-lessons-learned.md, ordocs/agent-ndjson.md.Treat GitHub Actions results, especially Windows runner results, as authoritative; local or sandbox runs are advisory.
Files:
docs/demo-bootstrapper-output.md
**/*.{md,bat,cmd}
📄 CodeRabbit inference engine (AGENTS.md)
Document
run_setup.batlocations using stable label or subroutine names rather than exact line numbers.
Files:
docs/demo-bootstrapper-output.md
🪛 markdownlint-cli2 (0.23.1)
docs/demo-bootstrapper-output.md
[warning] 1492-1492: Fenced code blocks should be surrounded by blank lines
(MD031, blanks-around-fences)
[warning] 1493-1493: Fenced code blocks should be surrounded by blank lines
(MD031, blanks-around-fences)
[warning] 1599-1599: Fenced code blocks should be surrounded by blank lines
(MD031, blanks-around-fences)
[warning] 1600-1600: Fenced code blocks should be surrounded by blank lines
(MD031, blanks-around-fences)
[warning] 1603-1603: Fenced code blocks should be surrounded by blank lines
(MD031, blanks-around-fences)
[warning] 1604-1604: Fenced code blocks should be surrounded by blank lines
(MD031, blanks-around-fences)
🔇 Additional comments (10)
docs/demo-bootstrapper-output.md (10)
66-75: LGTM!
1383-1444: LGTM!
1448-1491: LGTM!Also applies to: 1494-1505
1508-1516: LGTM!Also applies to: 1534-1538
1542-1576: LGTM!
1580-1598: LGTM!Also applies to: 1605-1660
1664-1687: LGTM!
1691-1722: LGTM!
1726-1773: LGTM!
1777-1808: LGTM!
…bbit) Add blank lines around three adjacent fenced code blocks per markdownlint MD031. Clarify that :tci_justme's WARN log line fires unconditionally regardless of whether AllUsers was actually attempted (three paths share the label); the doc previously implied a genuine attempt-then-failure sequence. Logs the wording inaccuracy as CLAUDE.md Active Backlog item 11 rather than editing run_setup.bat's messaging in this docs-only PR. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A4iE1BRSkUETwz237XeuTW
Document dependency-source precedence (pyproject.toml [project].dependencies vs requirements.txt), REQ-004 Python-version precedence tiers 1-3 and runtime.txt write-back, PEP 723 dependency write-back (REQ-005.11 fresh trigger), HP_PVW_KNOWN_IDEMPOTENT execute-mode discovery (REQ-005.13), NI-VISA detection/install outcome (REQ-008), pandas/openpyxl heuristic augmentation (REQ-005.8), conda base periodic update (skip branch real, update-firing branch extrapolated per docs/agent-ndjson.md's own note that no CI lane exercises it), and REQ-014 system-Python consent ACCEPT (complementing the decline already shown in Part VI Scenario 21). All scenarios sourced from real CI capture (run 30328748330) except the conda-base-update-firing branch, explicitly labeled [Extrapolated Branch]. This completes all 5 passes of the bootstrapper execution-branch documentation effort. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A4iE1BRSkUETwz237XeuTW
Item 12: :embed_dl_retry's genuine mid-download-failure-then-retry-once path has no CI test hook (only immediate-decline and full-success are covered). Item 13: self.warn.longpath's own real CI run shows an inconclusive ranBootstrap:false result that the test still counts as a pass, so the guard's actual WARN text has not been positively confirmed by CI evidence examined for the demo doc (already labeled [Extrapolated Branch] there for this reason). Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A4iE1BRSkUETwz237XeuTW
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@docs/demo-bootstrapper-output.md`:
- Around line 1908-1923: Correct the REQ-004 evidence so the declared
pyproject.toml requires-python constraint and the written-back runtimeVersion
are compatible. Update the captured resolved version, constraint, or both, and
ensure the associated versionSatisfied:true claim accurately reflects that
constraint check before publishing the document.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: ASSERTIVE
Plan: Pro Plus
Run ID: 13f7853a-ce01-4d62-b756-5998440fda9b
📒 Files selected for processing (1)
docs/demo-bootstrapper-output.md
📜 Review details
⏰ Context from checks skipped due to timeout. (8)
- GitHub Check: Batch syntax/run check (conda-full)
- GitHub Check: Batch syntax/run check (uv-dl-fallback)
- GitHub Check: Batch syntax/run check (real)
- GitHub Check: Batch syntax/run check (cache)
- GitHub Check: Batch syntax/run check (justme-test)
- GitHub Check: Batch syntax/run check (uv)
- GitHub Check: Batch syntax/run check (contract-uv-fail)
- GitHub Check: Batch syntax/run check (contract-uv)
🧰 Additional context used
📓 Path-based instructions (3)
**/*
📄 CodeRabbit inference engine (AGENTS.md)
Treat GitHub Actions results, especially Windows runner results, as authoritative; local or sandbox runs are advisory.
Implement exactly one missing feature slice and add exactly one missing test per iteration loop; freeze scope and defer new requirements to the backlog.
Files:
docs/demo-bootstrapper-output.md
**/*.{md,bat,cmd}
📄 CodeRabbit inference engine (AGENTS.md)
Document
run_setup.batlocations using stable label or subroutine names rather than exact line numbers.
Files:
docs/demo-bootstrapper-output.md
docs/**/*.md
📄 CodeRabbit inference engine (CLAUDE.md)
When a change teaches or invalidates a lesson, update the relevant knowledge document in the same commit, editing existing entries rather than only appending.
Files:
docs/demo-bootstrapper-output.md
🔇 Additional comments (3)
docs/demo-bootstrapper-output.md (3)
66-84: LGTM!
1527-1551: LGTM!
1833-1907: LGTM!Also applies to: 1924-2143
pyproject.precedence.detect and .writeback are two independent NDJSON rows exercising two different scratch directories with two different requires-python constraints (a tight >=3.10,<3.11 for parse-only verification via a direct ~detect_python.py invocation with no environment ever created, vs. a deliberately loose >=3.9 for the full-bootstrap write-back path). The previous text implied one flowed into the other, which produced an internally-inconsistent claim (python-3.14.6 does not satisfy <3.11). Corrected per a CodeRabbit review finding, verified directly against the test source. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A4iE1BRSkUETwz237XeuTW
…yxl) The PyInstaller warn-file line quoted for the pandas->openpyxl heuristic was actually from a different sibling test's own scratch directory (self.exe.warnfix.real / tests/~selftest_warnfix_real, tests/selftest.ps1) that independently exercises the same heuristic with a different app, not from tests/selfapps_pandas_excel.ps1's own capture. Found via the same conflation pattern CodeRabbit flagged in Scenario 27 (REQ-004); verified against the actual job log and corrected to attribute each real capture to its own source test. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01A4iE1BRSkUETwz237XeuTW
Summary
Follow-up to #400 (Passes 1-3, merged). Continues the same multi-pass documentation effort on
docs/demo-bootstrapper-output.mdfor real end-user scenarios. Per the repo's merged-PR policy,this branch was reset from fresh
mainand this is a new PR, not a reopening of #400.This PR currently contains Pass 4 (adversarial/recovery branches) -- Scenarios 17-25 covering
network connectivity + transient retry, corrupted-conda self-heal, the Miniconda install chain,
the standalone embed-tier download, the REQ-009 provider cascade (one real capture happens to
show the full uv->conda->embed->venv->system chain end to end), hidden-import auto-recovery
exhaustion, the warnfix repair loop, pre-flight guards actually firing, and concurrent-instance
lock contention.
Pass 5 (remaining branches: git config/.gitignore merge, runtime.txt/PEP 723 write-back,
pyproject precedence, NI-VISA detection, pandas/openpyxl heuristics, conda base update, system-
Python consent,
HP_PVW_KNOWN_IDEMPOTENT, stragglers) will land as a follow-up commit on thissame PR -- it does not need to merge until that's done.
Scope & sourcing
Same convention as #400: real evidence pulled via GitHub Actions job logs where a test exercises
the branch; genuinely untested branches are statically traced from
run_setup.batand labeled[Extrapolated Branch]explicitly. See the doc's own "Sourcing convention" note at the top.Test plan
tools/check_delimiters.py/ ASCII sweep / markdownlint clean (docs-only diff, no.bat/.ps1/.ymltouched)Co-Authored-By: Claude Sonnet 5
Generated by Claude Code