Skip to content

docs: consolidate and improve documentation across the repository#693

Open
raballew wants to merge 132 commits into
jumpstarter-dev:mainfrom
raballew:490-docs-consolidation-improvements
Open

docs: consolidate and improve documentation across the repository#693
raballew wants to merge 132 commits into
jumpstarter-dev:mainfrom
raballew:490-docs-consolidation-improvements

Conversation

@raballew
Copy link
Copy Markdown
Member

Summary

  • Add top-level LICENSE file and remove duplicate LICENSE files from subdirectories (e2e/, protocol/, python/)
  • Consolidate license and contributing sections: subdirectory READMEs now point to the top-level project guidelines instead of duplicating them
  • Fix broken links, outdated references, and typos across all markdown files
  • Add CI workflow for automated link checking on documentation changes
  • Update copyright years to 2026

Test plan

  • Verify the link checker CI workflow runs successfully
  • Confirm subdirectory READMEs no longer contain full License/Contributing sections
  • Verify top-level LICENSE file is present and correct (Apache 2.0)
  • Spot-check that fixed links resolve correctly

🤖 Generated with Claude Code

raballew and others added 7 commits May 19, 2026 12:14
- Add root LICENSE file with Apache-2.0 license text
- Fix broken CI badge links in python/README.md (pytest.yaml -> python-tests.yaml,
  build_oci_bundle.yaml -> build-oci-bundle.yaml, build.yaml -> build-images.yaml,
  remove non-existent publish.yaml badge)
- Replace TODO(user) placeholders in controller/README.md and
  controller/deploy/operator/README.md with actual descriptions
- Update copyright years from 2024/2025 to 2026 in controller READMEs
- Fix incorrect jumpstarter-router image references in controller/README.md
- Update outdated jumpstarter-controller repository references to point to
  the monorepo in protocol/README.md and development-environment.md
- Fix contributing link in protocol/README.md
- Fix incorrect make target (ty-pkg- -> pkg-ty-) in contributing.md
- Add Claude Code documentation to AI Assistants section in contributing.md
- Replace TODO placeholder in soc-pytest README with actual link
- Add linkcheck CI job to documentation.yaml workflow

Generated-By: Forge/20260519_120329_624463_fd4d563a
The service.md documentation still referenced the deprecated standalone
jumpstarter-controller repository. Updated the link to point to the
controller directory within the monorepo.

Generated-By: Forge/20260519_120329_624463_fd4d563a
Consolidate licensing to the top-level LICENSE file and README.md
section only, removing redundant copies from e2e/, protocol/, python/
and license sections from subdirectory READMEs.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace verbose Contributing sections in subdirectory READMEs with brief
pointers to the top-level contributing guide, removing redundant
boilerplate text.

Generated-By: Forge/20260519_123606_665332_1831981b
- Fix API Reference URL in root README (jumpstarter.dev/main/api/
  changed to jumpstarter.dev/main/reference/)
- Fix Jumpstarter Driver Architecture link in JEP-0011 (add missing
  python/ prefix and update domain to jumpstarter.dev)
- Fix outdated docs.jumpstarter.dev and old repo URL in microshift
  config-svc README
- Fix broken Bootc documentation URL (containers.github.io moved to
  bootc-dev.github.io)
- Fix decorator source link path (packages/ to python/packages/)

Generated-By: Forge/20260519_123606_665332_1831981b
- Fix Go version requirement from 1.22 to 1.24 in root and controller
  READMEs to match go.mod
- Fix make targets in root README (make python -> make build-python,
  remove nonexistent make dev)
- Fix make sync instructions in development-environment.md and
  packages.md to specify the python/ subdirectory
- Update operator CSV repository URL from old standalone repo to
  monorepo

Generated-By: Forge/20260519_123606_665332_1831981b
The linkcheck job performs network requests to external URLs but had no
timeout-minutes set, risking consumption of CI minutes for up to the
GitHub Actions default of 6 hours if an external site is unresponsive.

Generated-By: Forge/20260519_123606_665332_1831981b
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented May 19, 2026

Review Change Stack

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • ▶️ Resume reviews
  • 🔍 Trigger review
📝 Walkthrough

Walkthrough

Adds a CI linkcheck job, restructures and expands documentation, introduces CRD reference generation and pages, adjusts devcontainer/devfile paths, updates READMEs and Sphinx config/CSS, and adds controller ExporterAccessPolicy CRD types and comment fixes.

Changes

Docs + CRDs + CI

Layer / File(s) Summary
Docs reorg, CRD refs, CI linkcheck Restructures docs and navigation, adds many driver references, generates CRD reference pages via a new script and Makefile target, updates READMEs/Sphinx/CSS/dev tooling, adds CI linkcheck, and updates controller API comments plus a new ExporterAccessPolicy CRD.

Sequence Diagram(s)

(skip)

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~60 minutes

Possibly related PRs

Suggested labels

documentation, python

Suggested reviewers

  • mangelajo

Poem

I nip through docs with gentle hops,
Stitch CRDs in tidy crops—
A whiskered check of every link,
New guides that sparkle, page by page in sync.
With paws on Make and gRPC breeze,
I sign this merge with carrot-keys. 🥕

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

raballew and others added 4 commits May 19, 2026 13:24
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
These sections duplicate information already in the top-level README.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Strip kubebuilder boilerplate from controller and operator READMEs,
remove badges and duplicated installation/highlights from python README,
replace sparse protocol README with code generation context, and trim
duplicated Resources/Support sections from microshift-bootc README.

Each subdirectory README now focuses on component-specific information
without repeating project-wide content from the top-level README.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@raballew raballew marked this pull request as ready for review May 19, 2026 11:47
@raballew raballew requested a review from mangelajo May 19, 2026 11:48
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🧹 Nitpick comments (1)
python/docs/source/contributing.md (1)

69-77: ⚡ Quick win

Inconsistent variable placeholder syntax.

The Claude Code section uses <package_name> placeholder syntax (line 74), while the rest of the document consistently uses ${package_name} (lines 30, 32, 90). Consider standardizing to ${package_name} for consistency.

📝 Proposed fix to standardize placeholder syntax
-**CLAUDE.md**: The root `CLAUDE.md` provides project-level instructions including key commands for testing (`make pkg-test-<package_name>`), linting (`make lint-fix`), and type checking (`make pkg-ty-<package_name>`).
+**CLAUDE.md**: The root `CLAUDE.md` provides project-level instructions including key commands for testing (`make pkg-test-${package_name}`), linting (`make lint-fix`), and type checking (`make pkg-ty-${package_name}`).
🤖 Prompt for 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.

In `@python/docs/source/contributing.md` around lines 69 - 77, Standardize the
placeholder syntax in the "Claude Code" section by replacing the angle-bracket
placeholders used in the make targets (e.g., "make pkg-test-<package_name>" and
"make pkg-ty-<package_name>") with the project's `${package_name}` format so
they match other occurrences (e.g., `${package_name}` found elsewhere in the
document and in `CLAUDE.md`).
🤖 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 `@python/docs/source/contributing.md`:
- Around line 73-76: Replace incorrect references to the non-existent `.claude`
config paths in the contributing documentation: change every occurrence of
`.claude/rules/` to `.cursor/rules/` and update
`.claude/rules/creating-new-drivers.md` to
`.cursor/rules/creating-new-drivers.mdc` (look for these exact strings in the
CONTRIBUTING text such as the bullet items mentioning "Project Rules" and
"Driver Creation"); ensure the new `.cursor` paths and the `.mdc` filename are
used consistently in the same sentences describing project rules and driver
creation guidance.

In `@README.md`:
- Line 118: The e2e CI workflows are still using Go 1.22 while the controller's
go.mod declares Go 1.24; update the e2e CI workflow(s) (e2e.yaml) to use Go 1.24
(actions/setup-go version or matrix entries) so they match the controller's
go.mod Go version, and ensure any related steps (caching, tool installs) that
reference a Go version are updated to 1.24 as well.

---

Nitpick comments:
In `@python/docs/source/contributing.md`:
- Around line 69-77: Standardize the placeholder syntax in the "Claude Code"
section by replacing the angle-bracket placeholders used in the make targets
(e.g., "make pkg-test-<package_name>" and "make pkg-ty-<package_name>") with the
project's `${package_name}` format so they match other occurrences (e.g.,
`${package_name}` found elsewhere in the document and in `CLAUDE.md`).
🪄 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: CHILL

Plan: Pro

Run ID: a931c6a8-0afa-4a99-9181-dff8bcca4b3a

📥 Commits

Reviewing files that changed from the base of the PR and between c22dfe8 and 1493b6d.

📒 Files selected for processing (19)
  • .github/workflows/documentation.yaml
  • LICENSE
  • README.md
  • controller/README.md
  • controller/deploy/microshift-bootc/README.md
  • controller/deploy/microshift-bootc/config-svc/README.md
  • controller/deploy/operator/README.md
  • controller/deploy/operator/config/manifests/bases/jumpstarter-operator.clusterserviceversion.yaml
  • protocol/LICENSE
  • protocol/README.md
  • python/LICENSE
  • python/README.md
  • python/docs/source/contributing.md
  • python/docs/source/contributing/development-environment.md
  • python/docs/source/getting-started/installation/packages.md
  • python/docs/source/internal/jeps/JEP-0011-protobuf-introspection-interface-generation.md
  • python/docs/source/introduction/service.md
  • python/examples/soc-pytest/README.md
  • python/packages/jumpstarter-driver-mitmproxy/README.md
💤 Files with no reviewable changes (5)
  • python/LICENSE
  • protocol/LICENSE
  • python/packages/jumpstarter-driver-mitmproxy/README.md
  • controller/deploy/microshift-bootc/config-svc/README.md
  • controller/deploy/microshift-bootc/README.md

Comment thread python/docs/source/contributing.md Outdated
Comment thread README.md
raballew and others added 5 commits May 19, 2026 13:57
Update index.md to include Highlights from the top-level README instead
of python/README.md which no longer has that section. Fix broken anchor
in JEP-0013 where prometheus renamed #exemplars to #exemplars-experimental.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add to the top-level README intro and Highlights that Jumpstarter is
agentic by design -- all interfaces are programmatic so humans, scripts,
CI pipelines, and AI agents use the same APIs. Add a dedicated section
in the docs introduction explaining this design philosophy.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Break down the flat guides section into logical groups:
- Setup (local, direct, distributed mode guides)
- Examples (shell usage, Python API, pytest - split from examples.md)
- Integration Patterns (CI, developer workflows, testing frameworks,
  AI agent, cost management, best practices - split from
  integration-patterns.md)

Merge contributing/internals.md into the Introduction, replacing PNG
architecture diagrams with mermaid. The Introduction now covers RPC
styles and Router tunneling alongside the existing Core Components and
Operation Modes sections.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Update links to examples.md and setup-distributed-mode.md to account
for the new subdirectory structure.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Comment on lines -409 to -412
### Technology Stack
- [MicroShift Documentation](https://microshift.io/)
- [Bootc Documentation](https://containers.github.io/bootc/)
- [TopoLVM Documentation](https://github.com/topolvm/topolvm)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I think the links to microshift/bootc at least are good, topolvm is just a microshift detail.

raballew and others added 6 commits May 19, 2026 14:38
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The Router is already documented in service.md and shown in the
architecture diagram. The standalone section was duplicated during
the internals merge.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Move the router topology diagram (tunneled vs direct path) into the
Service page where the Router section lives.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The RPC styles describe driver call semantics, not top-level
architecture. Move the content and mermaid diagram into the
Communication section of drivers.md and add a cross-reference
from service.md.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add setup/index.md so the setup guides appear as a nested group
in the sidebar rather than inlined directly under Guides.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (2)
python/docs/source/getting-started/guides/examples/shell-usage.md (2)

22-22: ⚡ Quick win

Remove redundancy in "CLI interfaces" phrasing.

The phrase "CLI interfaces" is redundant since CLI stands for "Command Line Interface." Consider using "CLIs" or "command-line interfaces" instead.

✍️ Suggested rewording

Line 22:

-The exporter shell provides access to driver CLI interfaces through the magic
+The exporter shell provides access to driver CLIs through the magic

Line 45:

-When you run the `j` command in the exporter shell, you're accessing the CLI
-interfaces exposed by the drivers configured in your exporter. In this example:
+When you run the `j` command in the exporter shell, you're accessing the CLIs
+exposed by the drivers configured in your exporter. In this example:

Also applies to: 45-45

🤖 Prompt for 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.

In `@python/docs/source/getting-started/guides/examples/shell-usage.md` at line
22, Replace the redundant phrase "CLI interfaces" in the documentation
(occurrences in the shell-usage.md content such as the line containing "The
exporter shell provides access to driver CLI interfaces through the magic" and
the other occurrence around line 45) with either "CLIs" or "command-line
interfaces" for clarity and consistency; update both occurrences so wording
reads e.g. "provides access to driver CLIs" or "provides access to driver
command-line interfaces".

26-26: ⚡ Quick win

Make the example command more concrete.

The comment suggests using appropriate parameters, but the command shows no parameters. Consider referencing the specific examples shown earlier (lines 7 or 12) or including a concrete example here.

✍️ Suggested alternatives

Option 1 - Reference earlier examples:

-$ jmp shell # Use appropriate --exporter or --client parameters
+$ jmp shell --exporter example-local  # or use --client with --selector for distributed mode

Option 2 - Be more specific in comment:

-$ jmp shell # Use appropriate --exporter or --client parameters
+$ jmp shell  # Use --exporter <name> for local mode or --client <name> --selector <labels> for distributed mode
🤖 Prompt for 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.

In `@python/docs/source/getting-started/guides/examples/shell-usage.md` at line
26, Replace the placeholder command "jmp shell" and its trailing comment with a
concrete example invocation of jmp shell that includes real parameters; update
the line containing "jmp shell" to either reference the earlier concrete
examples (the ones showing --exporter and --client) or directly include a full
example such as specifying --exporter and --client (e.g., --exporter=http and
--client=python), and remove the vague "Use appropriate --exporter or --client
parameters" comment so the doc shows a runnable command.
🤖 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.

Nitpick comments:
In `@python/docs/source/getting-started/guides/examples/shell-usage.md`:
- Line 22: Replace the redundant phrase "CLI interfaces" in the documentation
(occurrences in the shell-usage.md content such as the line containing "The
exporter shell provides access to driver CLI interfaces through the magic" and
the other occurrence around line 45) with either "CLIs" or "command-line
interfaces" for clarity and consistency; update both occurrences so wording
reads e.g. "provides access to driver CLIs" or "provides access to driver
command-line interfaces".
- Line 26: Replace the placeholder command "jmp shell" and its trailing comment
with a concrete example invocation of jmp shell that includes real parameters;
update the line containing "jmp shell" to either reference the earlier concrete
examples (the ones showing --exporter and --client) or directly include a full
example such as specifying --exporter and --client (e.g., --exporter=http and
--client=python), and remove the vague "Use appropriate --exporter or --client
parameters" comment so the doc shows a runnable command.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 488d2ba2-6b21-4ac4-957e-0efd6ba9a131

📥 Commits

Reviewing files that changed from the base of the PR and between 1493b6d and f64bb24.

⛔ Files ignored due to path filters (3)
  • python/docs/source/contributing/images/architecture.png is excluded by !**/*.png
  • python/docs/source/contributing/images/router.png is excluded by !**/*.png
  • python/docs/source/contributing/images/rpc.png is excluded by !**/*.png
📒 Files selected for processing (26)
  • README.md
  • python/docs/source/conf.py
  • python/docs/source/contributing.md
  • python/docs/source/contributing/internals.md
  • python/docs/source/getting-started/guides/examples/index.md
  • python/docs/source/getting-started/guides/examples/pytest-usage.md
  • python/docs/source/getting-started/guides/examples/python-api.md
  • python/docs/source/getting-started/guides/examples/shell-usage.md
  • python/docs/source/getting-started/guides/index.md
  • python/docs/source/getting-started/guides/integration-patterns.md
  • python/docs/source/getting-started/guides/integration-patterns/ai-agent-integration.md
  • python/docs/source/getting-started/guides/integration-patterns/best-practices.md
  • python/docs/source/getting-started/guides/integration-patterns/ci-integration.md
  • python/docs/source/getting-started/guides/integration-patterns/cost-management.md
  • python/docs/source/getting-started/guides/integration-patterns/developer-workflows.md
  • python/docs/source/getting-started/guides/integration-patterns/index.md
  • python/docs/source/getting-started/guides/integration-patterns/testing-frameworks.md
  • python/docs/source/getting-started/guides/setup/direct-mode.md
  • python/docs/source/getting-started/guides/setup/distributed-mode.md
  • python/docs/source/getting-started/guides/setup/local-mode.md
  • python/docs/source/index.md
  • python/docs/source/internal/jeps/JEP-0011-protobuf-introspection-interface-generation.md
  • python/docs/source/internal/jeps/JEP-0013-observability-telemetry-logs.md
  • python/docs/source/introduction/drivers.md
  • python/docs/source/introduction/index.md
  • python/docs/source/introduction/service.md
💤 Files with no reviewable changes (2)
  • python/docs/source/contributing/internals.md
  • python/docs/source/getting-started/guides/integration-patterns.md
✅ Files skipped from review due to trivial changes (20)
  • python/docs/source/getting-started/guides/examples/index.md
  • python/docs/source/getting-started/guides/examples/pytest-usage.md
  • python/docs/source/getting-started/guides/integration-patterns/best-practices.md
  • python/docs/source/getting-started/guides/integration-patterns/index.md
  • python/docs/source/getting-started/guides/integration-patterns/ai-agent-integration.md
  • python/docs/source/getting-started/guides/integration-patterns/cost-management.md
  • python/docs/source/getting-started/guides/integration-patterns/developer-workflows.md
  • python/docs/source/getting-started/guides/setup/distributed-mode.md
  • python/docs/source/getting-started/guides/integration-patterns/testing-frameworks.md
  • python/docs/source/getting-started/guides/setup/direct-mode.md
  • python/docs/source/getting-started/guides/setup/local-mode.md
  • python/docs/source/conf.py
  • python/docs/source/getting-started/guides/examples/python-api.md
  • README.md
  • python/docs/source/introduction/service.md
  • python/docs/source/getting-started/guides/integration-patterns/ci-integration.md
  • python/docs/source/introduction/drivers.md
  • python/docs/source/internal/jeps/JEP-0013-observability-telemetry-logs.md
  • python/docs/source/contributing.md
  • python/docs/source/internal/jeps/JEP-0011-protobuf-introspection-interface-generation.md

raballew and others added 2 commits May 19, 2026 15:21
Standardize all guide index pages to match the configuration index
pattern (heading, intro, bullet list, hidden toctree). Remove "Setup"
prefix from mode titles. Add setup/index.md for proper nesting. Merge
Agentic by Design into the introduction paragraph. Apply blue sequence
diagram theme to hooks for dark mode visibility.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Nest JEPs (Enhancement Proposals) under Contributing instead of a
separate top-level Internal section. Remove internal/index.md from
the root toctree.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
raballew and others added 18 commits May 20, 2026 13:47
Add explicit docstrings to DutNetwork, Dutlink, and Qemu classes
that were missing them. Without a docstring, Sphinx rendered the
dataclass signature which contains * interpreted as RST emphasis.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- can: restructure from class-name headings to standard template
- energenie: add Configuration and API Reference sections
- noyito-relay: add Configuration section
- pi-pico: add Installation section
- uds: add Installation and Configuration sections

All 45 drivers now follow the template: Title, Installation,
Configuration, API Reference.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Restructure 20 driver READMEs to follow the template order:
Installation -> Configuration -> Usage -> Architecture -> API Reference.

- Rename Examples/CLI Commands/CLI Usage/Shell Commands -> Usage
- Move Prerequisites/Dependencies into Installation
- Move Supported Formats/SSL Setup/Board Detection into Configuration
- Merge CLI + Python API sections into Usage as subsections
- Rename How It Works -> Architecture
- Move Architecture after Usage

Update create_driver.sh template to include Usage section and
autoclass API Reference directive.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Both sections are commented out by default. Uncomment when the
driver has usage examples/CLI commands or complex internals.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- dut-network: merge Configuration Reference into Configuration,
  convert nftables note to admonition, remove Running Tests
- gpiod: merge Pin Configuration Details into Configuration,
  remove generic Error Handling
- http-power: convert Notes to admonition under Configuration
- mitmproxy: demote Container Deployment to Usage subsection
- renode: demote Design Decisions to Architecture subsection

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Add try/except for KeyError in main() so CRDs missing openAPIV3Schema
  are skipped gracefully instead of crashing the entire generation run
- Escape pipe characters in descriptions to prevent markdown table breakage
- Replace unused toctree_entries/index_entries lists with a simple counter

Generated-By: Forge/20260520_152552_1578170_9029b591
Cover all four public functions (flatten_properties, render_table,
process_crd, main) including edge cases: depth limiting, SKIP_EXPAND,
description truncation, enum formatting, pipe escaping, missing schema
handling, and empty inputs.

Generated-By: Forge/20260520_152552_1578170_9029b591
The type was renamed from Identity to Client but three string literals
in main.go and client_controller_test.go still used the old name.

Generated-By: Forge/20260520_152552_1578170_9029b591
The .cursor/rules/jep-process.mdc file (symlinked as
.claude/rules/jep-process.md) contained two em-dash characters
(U+2014) that violate the ASCII-only requirement from FR-011.

Generated-By: Forge/20260520_152552_1578170_9029b591
Replace innerHTML assignment with textContent for defense in depth.
Glossary term content is always plain text from Sphinx-generated
documentation, so no HTML parsing is needed.

Generated-By: Forge/20260520_152552_1578170_9029b591
Remove unused tempfile import and reorder imports to satisfy ruff I001.

Generated-By: Forge/20260520_152552_1578170_9029b591
Replace el.innerHTML with el.textContent when resetting mermaid diagram
source before re-rendering. The code variable contains plain text from
textContent or data-original attribute, so innerHTML is unnecessary and
widens the attack surface. mermaid.run() re-renders from source text
regardless.

Generated-By: Forge/20260520_162350_1637693_9c2b12a2
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace all U+2014 em dash characters with ASCII hyphen-minus
across 35 files to comply with the project convention of using
only ASCII text representations.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace all U+2013 en dash characters with ASCII hyphen-minus
across 5 files to comply with the project convention of using
only ASCII text representations.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Replace ` -- ` with ` - ` in prose text across 50 files.
CLI argument separators (e.g. `jmp shell -- pytest`) are
preserved unchanged.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The guideline previously recommended double hyphens (--) as
replacements for em/en dashes, but the codebase now uses single
hyphens (-) consistently.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The controller's go.mod requires Go 1.24.0 but the e2e CI
workflows were still using Go 1.22. Update all 5 setup-go
steps in e2e.yaml to use Go 1.24.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@raballew raballew marked this pull request as ready for review May 20, 2026 15:15
Copy link
Copy Markdown
Member

@mangelajo mangelajo left a comment

Choose a reason for hiding this comment

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

still going through it... painfully ... chrome gets stuck

**Alternatives considered:**

1. **Option A** Brief description.
2. **Option B** Brief description.
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

what changed here? hmm

Copy link
Copy Markdown
Member Author

@raballew raballew May 20, 2026

Choose a reason for hiding this comment

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

dashem to dash characters - essentially non ascii to ascii compatible format, you will find this 100s of times in this PR - its a common "mistake" LLMs/LRMs make

Comment thread python/docs/source/_static/js/glossary-tooltips.js
Comment thread python/docs/source/_templates/page.html
@@ -64,11 +64,3 @@ For the full process definition, see [JEP-0000](JEP-0000-jep-process.md).
| Superseded | Replaced by a newer JEP |


```{toctree}
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

does it work without toctree?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

the toc tree blew up the nav bar as all those headings are 3-4 lines each - i hid it intentionally so you need to navigate through the table on the jep page

Comment thread python/docs/source/getting-started/guides/integration-patterns/cost.md Outdated

contributing/how-to-contribute.md
contributing/development-environment.md
contributing/internals.md
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I liked the internals, and the diagrams, can we keep those? It's a bit hard to explain otherwise those details to new people without a diagram.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

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

i created multiple mermaid diagrams on the introduction index page to cover this

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

But those are different diagrams, let's please restore the internals and existing diagrams, those are harder to represent in mermaid, and I find them important when I need to mentally walk through our driver model and protocols, or show a new engineer how that works in reality. It is called "internals" :D because it's too low level, but still it's useful.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Ahh but those diagrams are in introduction/drivers now, ok...

Comment thread python/docs/source/glossary.md Outdated
raballew and others added 4 commits May 20, 2026 18:02
docs-serve, docs-singlehtml, docs-linkcheck, and docs-test were
missing the docs-generate-crds prerequisite, causing missing CRD
reference warnings when building docs outside of `make docs`.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Cost management was speculative content. Testing overlapped with
the examples/testing guide which covers pytest integration in depth.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-authored-by: Miguel Angel Ajo Pelayo <majopela@redhat.com>
@raballew
Copy link
Copy Markdown
Member Author

@mangelajo i recommend going through the code changes once and then side by side look at the rendered version locally

Fix mermaid diagram syntax errors across multiple files by changing
single-dash edge labels to double-dash (the valid mermaid syntax).

Rename service installation pages to reflect their intended use case
rather than the install method, addressing confusion reported in jumpstarter-dev#692:
- cli.md -> development.md (Development)
- bootc.md -> standalone.md (Standalone)
- operator.md -> production.md (Production)

Fix broken tab directives in production.md by using four backticks for
outer tab directives that nest three-backtick code blocks.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

## Prerequisites

- Fedora/RHEL-based system (tested on Fedora 42)
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

I will make a pass later on this one, as the information is not very precise, but at least it's a start


contributing/how-to-contribute.md
contributing/development-environment.md
contributing/internals.md
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

But those are different diagrams, let's please restore the internals and existing diagrams, those are harder to represent in mermaid, and I find them important when I need to mentally walk through our driver model and protocols, or show a new engineer how that works in reality. It is called "internals" :D because it's too low level, but still it's useful.

- The [glossary](../glossary.md) is reserved for Jumpstarter-specific terms only
(entities, concepts, CLI commands). Do not add well-known industry terms or
third-party project names to it
- Use ASCII hyphens (`-`) instead of en-dash or em-dash characters
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

but this change was moving a lot of standard ascii hyphens to the others :)

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

ignore this, I understood the other changes incorrectly.

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