Add Jumpstarter Enhancement Proposal (JEP) process and docs#423
Add Jumpstarter Enhancement Proposal (JEP) process and docs#423
Conversation
❌ Deploy Preview for jumpstarter-docs failed. Why did it fail? →
|
|
Note Reviews pausedIt 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 Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughAdds a Jumpstarter Enhancement Proposal (JEP) governance system: a process specification, a reusable JEP template, a README index, and corresponding rule files describing when to use JEPs vs ADRs, numbering, metadata, and submission workflow. All changes are documentation-only. Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~10 minutes Suggested reviewers
Poem
🚥 Pre-merge checks | ✅ 2 | ❌ 1❌ Failed checks (1 inconclusive)
✅ Passed checks (2 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 2
🧹 Nitpick comments (1)
jep/JEP-0000-jep-process.md (1)
140-142: Add language specifier to fenced code block.The fenced code block is missing a language specifier, which is flagged by markdownlint.
📝 Proposed fix
-``` +```text JEP: Short descriptive title</details> <details> <summary>🤖 Prompt for AI Agents</summary>Verify each finding against the current code and only fix it if needed.
In
@jep/JEP-0000-jep-process.mdaround lines 140 - 142, The fenced code block
containing "JEP: Short descriptive title" lacks a language specifier (triggering
markdownlint); update that fenced block (the triple-backtick block that wraps
the line "JEP: Short descriptive title") to include a language tag such as text
(e.g., ```text) so the block is properly annotated.</details> </blockquote></details> </blockquote></details> <details> <summary>🤖 Prompt for all review comments with AI agents</summary>Verify each finding against the current code and only fix it if needed.
Inline comments:
In @.github/ISSUE_TEMPLATE/jep-proposal.yml:
- Line 12: Update the broken Markdown link string
"https://github.com/jumpstarter-dev/jumpstarter/blob/main/jeps/JEP-0000-jep-process.md"
to use the correct directory name by replacing "jeps/" with "jep/" so the link
points to
"https://github.com/jumpstarter-dev/jumpstarter/blob/main/jep/JEP-0000-jep-process.md";
locate the URL in the ISSUE_TEMPLATE jep-proposal YAML entry (the line
containing the JEP-0000 reference) and update the path accordingly.In
@jep/JEP-0000-jep-process.md:
- Line 203: Update the incorrect directory path reference in the JEP text:
replace the occurrence of "jeps/README.md" with the correct "jep/README.md" in
the document (JEP-0000-jep-process.md) so it points to the actual README in the
jep/ directory.
Nitpick comments:
In@jep/JEP-0000-jep-process.md:
- Around line 140-142: The fenced code block containing "JEP: Short descriptive
title" lacks a language specifier (triggering markdownlint); update that fenced
block (the triple-backtick block that wraps the line "JEP: Short descriptive
title") to include a language tag such as text (e.g., ```text) so the block is
properly annotated.</details> <details> <summary>🪄 Autofix (Beta)</summary> Fix all unresolved CodeRabbit comments on this PR: - [ ] <!-- {"checkboxId": "4b0d0e0a-96d7-4f10-b296-3a18ea78f0b9"} --> Push a commit to this branch (recommended) - [ ] <!-- {"checkboxId": "ff5b1114-7d8c-49e6-8ac1-43f82af23a33"} --> Create a new PR with the fixes </details> --- <details> <summary>ℹ️ Review info</summary> <details> <summary>⚙️ Run configuration</summary> **Configuration used**: Organization UI **Review profile**: CHILL **Plan**: Pro **Run ID**: `5aed2daa-10d5-4d72-a927-5a6ff2159142` </details> <details> <summary>📥 Commits</summary> Reviewing files that changed from the base of the PR and between d713354eeaea42fe7774665a561a07da404e5598 and 652b3d2a7b591889b699aafd65bbc33fbe214c66. </details> <details> <summary>📒 Files selected for processing (4)</summary> * `.github/ISSUE_TEMPLATE/jep-proposal.yml` * `jep/JEP-0000-jep-process.md` * `jep/JEP-NNNN-template.md` * `jep/README.md` </details> </details> <!-- This is an auto-generated comment by CodeRabbit for review status -->
|
This is a great idea, having a structured process for substantial changes brings much-needed formality and a clear planning trail, especially for anything touching interfaces, the gRPC protocol, or CRDs where mistakes are expensive to undo, etc. One optional idea for down the road: once a JEP is approved, we could experiment with spec-kit deriving a spec-kit spec from a JEP. :) |
|
@ambient-code Let's go ahead and remove the issue template and standardize the process on creating PRs for formal proposals. |
|
Done. I've removed the |
|
@ambient-code Let's go ahead and make this align with the SpecKit (https://github.com/github/spec-kit) standards for specifications that can be implemented by agents. We might also want to pull in Architecture Decision Records (ADRs) similar to the one added into this PR: #533 |
|
I've reviewed both SpecKit and the ADR format from PR #533 and made the following changes to align the JEP process: JEP template (
Process document (
Index (
What I intentionally did not adopt from SpecKit: SpecKit's full workflow ( |
kirkbrauer
left a comment
There was a problem hiding this comment.
@ambient-code Let's address these comments first before further reviews.
Restructure the Renode integration ADR to follow the JEP template format: metadata table, Abstract, Motivation, Rejected Alternatives, Prior Art, Implementation History, and References sections. The DD-N design decisions and Consequences sections were already aligned. Made-with: Cursor
|
@ambient-code Finally, we should migrate the ADRs and JEPs into the docs directory for consistency so we can render it as part of the documentation. |
|
Migrated JEPs and ADRs into the docs directory for documentation rendering:
The physical file locations now match the paths already documented in JEP-0000, the rules files, and the JEP template. This enables rendering JEPs and ADRs as part of the project documentation site. |
Move the Renode integration design document from python/docs/source/contributing/adr/ to the JEP directory at docs/internal/jeps/, following the JEP template from PR jumpstarter-dev#423. Adds mandatory sections (Proposal, Design Details, Test Plan, Backward Compatibility, User Stories, Future Possibilities) and a new DD-5 for security decisions (allow_raw_monitor, load_command allowlist, newline rejection). Made-with: Cursor
Restructure the Renode integration ADR to follow the JEP template format: metadata table, Abstract, Motivation, Rejected Alternatives, Prior Art, Implementation History, and References sections. The DD-N design decisions and Consequences sections were already aligned. Made-with: Cursor
Move the Renode integration design document from python/docs/source/contributing/adr/ to the JEP directory at docs/internal/jeps/, following the JEP template from PR jumpstarter-dev#423. Adds mandatory sections (Proposal, Design Details, Test Plan, Backward Compatibility, User Stories, Future Possibilities) and a new DD-5 for security decisions (allow_raw_monitor, load_command allowlist, newline rejection). Made-with: Cursor
- Rename jep/ directory to jeps/ per maintainer feedback - Add text language specifier to fenced code block - Update workflow to clarify JEPs should be submitted as PRs for discussion Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Remove the JEP proposal issue template and update all JEP documentation to reference pull requests as the sole mechanism for submitting formal proposals. This simplifies the process by having a single, consistent workflow for JEP submission and review. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add structured Design Decisions (DD-N) section to JEP template following the ADR pattern used in the project (e.g., ADR-0001 from PR #533) - Add Consequences section (positive/negative/risks) to JEP template - Mark all template sections as mandatory, optional, or conditional - Document the relationship between JEPs and ADRs in JEP-0000 - Add SpecKit and ADR references to Prior Art in JEP-0000 - Add agent instructions and document conventions to jeps/README.md Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Unify documentation location to docs/internal/ for JEPs and ADRs - Clarify JEP numbers are incrementing integers, not PR numbers - Clarify JEPs should always be merged as PRs into docs/source - Update rejection policy: rejected JEPs not merged unless architectural reason - Add claude/cursor rules to assist with JEP/ADR generation workflow Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Move JEP files from jeps/ to docs/internal/jeps/ and create docs/internal/adr/ directory, matching the paths already referenced in the documentation. Update all internal references in the JEP process document, README, and claude/cursor rules files. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
mangelajo
left a comment
There was a problem hiding this comment.
just some additional comments.
|
@ambient-code Please address all of the review comments that you're tagged in to update this spec to match the expectations of the reviewers. |
- Replace .claude/rules and .claude/skills copies with symlinks to .cursor/ equivalents, matching the existing convention - Add Acceptance Criteria section to JEP template (mandatory for Standards Track) - Add "Active" status to lifecycle states table in JEP-0000 and README - Fix skill file references to point to .cursor/rules/jep-adr-process.mdc - Add empty toctree directive to ADR index - Simplify "For AI Agents" section in README, defer to agent rule files - Add canonical source note to README status table - Add trailing newline to python/docs/source/index.md - Fix date format inconsistency in JEP-0010 Implementation History Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Rename the 'Proposed' JEP lifecycle state to 'Discussion' across all JEP documents, templates, rules, and skills - Remove all ADR (Architecture Decision Record) files, directories, skills, and references since the project will focus on JEPs only - Update project structure docs to reflect the removal of ADR directory Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Propose an explicit per-lease lifecycle state machine for the exporter to replace the current event-driven coordination between lease setup, hooks, routing readiness, and cleanup. The JEP follows the PR-based JEP process from #423 and captures the intended internal design without introducing separate ADR documents. Made-with: Cursor
- Rename .cursor/rules/jep-adr-process.mdc to jep-process.mdc - Replace .claude symlink with jep-process.md -> ../../.cursor/rules/jep-process.mdc - Update propose-jep skill and JEPs README references Made-with: Cursor
- Link .claude/rules/jep-process.md in the project rules list - Add 'When creating JEPs' to the when-to-read section Made-with: Cursor
Agent-oriented JEP conventions remain in .cursor/rules/jep-process.mdc; the index stays human-focused. Made-with: Cursor
Summary
Introduces the Jumpstarter Enhancement Proposal (JEP) process: an index and template under the Sphinx docs (
python/docs/source/internal/jeps/), JEP-0000 process text, and the Renode JEP-0010. JEPs are submitted and reviewed via pull request (no issue template).Also adds Cursor and Claude integration:
.cursor/rules/jep-process.mdc(single source of truth),.claude/rules/jep-process.mdsymlink, and thepropose-jepskill.Latest follow-up (this push)
.cursor/rules/jep-adr-process.mdc→jep-process.mdcand updated.claudesymlink + references in the skill and JEP README.make htmlverified locally withuv sync --group docs.Reviewers
Please re-review on the current head when you can; prior
CHANGES_REQUESTEDreviews were on an older commit. Resolve conversation threads that are already addressed so the PR can merge.