Skip to content

docs: bootstrapper execution branches, Passes 4-5 (follow-up to #400) - #401

Merged
mixmansoundude merged 6 commits into
mainfrom
claude/bootstrapper-execution-branches-ox2izi
Jul 30, 2026
Merged

docs: bootstrapper execution branches, Passes 4-5 (follow-up to #400)#401
mixmansoundude merged 6 commits into
mainfrom
claude/bootstrapper-execution-branches-ox2izi

Conversation

@mixmansoundude

Copy link
Copy Markdown
Owner

Summary

Follow-up to #400 (Passes 1-3, merged). Continues the same multi-pass documentation effort on
docs/demo-bootstrapper-output.md for real end-user scenarios. Per the repo's merged-PR policy,
this branch was reset from fresh main and 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 this
same 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.bat and 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/.yml touched)
  • Pass 5 lands as a follow-up commit on this same PR

Co-Authored-By: Claude Sonnet 5


Generated by Claude Code

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
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@mixmansoundude
mixmansoundude enabled auto-merge (squash) July 29, 2026 22:18
@coderabbitai

coderabbitai Bot commented Jul 29, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@mixmansoundude, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 42 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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 configuration

Configuration used: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: 95d40341-702d-4669-9309-0bef1dba5bf2

📥 Commits

Reviewing files that changed from the base of the PR and between 99bf306 and 653473f.

📒 Files selected for processing (2)
  • CLAUDE.md
  • docs/demo-bootstrapper-output.md
📝 Walkthrough

Summary by CodeRabbit

  • Documentation
    • Expanded the demo bootstrapper guide with new “Part VI” and “Part VII” walkthroughs, including console/output details and outcomes for Scenarios 17–33 (adversarial and recovery flows).
    • Added coverage for retry behavior, offline-mode prompting, recovery after environment corruption, installation escalation/fallback messaging, embedded Python download outcomes, and consent/cascade resolution paths.
    • Updated backlog documentation with a note about a specific warning log line’s observed unconditioned firing behavior.

Walkthrough

Changes

The 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

Layer / File(s) Summary
Scenario navigation
docs/demo-bootstrapper-output.md
The table of contents adds Part VI scenarios 17–25 and Part VII scenarios 26–33.
Adversarial and recovery branches
docs/demo-bootstrapper-output.md, CLAUDE.md
Part VI documents connectivity retries, conda repair, Miniconda fallback outcomes, embedded Python downloads, provider cascades, hidden-import recovery, warnfix loops, pre-flight guards, and lock handling. The backlog records that the Miniconda AllUsers fallback warning can be emitted when AllUsers installation was skipped.
Remaining scenario branches
docs/demo-bootstrapper-output.md
Part VII documents git configuration merging, Python and dependency precedence, PEP 723 write-back, execute-mode discovery, NI-VISA handling, heuristic dependency augmentation, conda updates, and REQ-014 system-Python consent.

Estimated code review effort: 2 (Simple) | ~10 minutes

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly summarizes the docs-only bootstrapper execution-branch updates and the Passes 4-5 follow-up context.
Description check ✅ Passed The description is directly about the documentation changes, their scope, and the intended pass-by-pass bootstrapper branch coverage.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/bootstrapper-execution-branches-ox2izi

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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between 846f0d9 and c4ef0d1.

📒 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, or docs/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.bat locations 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!

Comment thread docs/demo-bootstrapper-output.md
Comment thread docs/demo-bootstrapper-output.md Outdated
…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
claude added 2 commits July 29, 2026 22:30
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

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

📥 Commits

Reviewing files that changed from the base of the PR and between 86d4e13 and 99bf306.

📒 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.bat locations 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

Comment thread docs/demo-bootstrapper-output.md Outdated
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
@mixmansoundude
mixmansoundude merged commit 6404ec6 into main Jul 30, 2026
16 checks passed
@mixmansoundude
mixmansoundude deleted the claude/bootstrapper-execution-branches-ox2izi branch July 30, 2026 00:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants