Skip to content

Add Jumpstarter Enhancement Proposal (JEP) process and docs#423

Merged
mangelajo merged 13 commits intomainfrom
jep-process
Apr 23, 2026
Merged

Add Jumpstarter Enhancement Proposal (JEP) process and docs#423
mangelajo merged 13 commits intomainfrom
jep-process

Conversation

@kirkbrauer
Copy link
Copy Markdown
Member

@kirkbrauer kirkbrauer commented Apr 7, 2026

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.md symlink, and the propose-jep skill.

Latest follow-up (this push)

  • Renamed .cursor/rules/jep-adr-process.mdcjep-process.mdc and updated .claude symlink + references in the skill and JEP README.
  • Sphinx make html verified locally with uv sync --group docs.

Reviewers

Please re-review on the current head when you can; prior CHANGES_REQUESTED reviews were on an older commit. Resolve conversation threads that are already addressed so the PR can merge.

@netlify
Copy link
Copy Markdown

netlify Bot commented Apr 7, 2026

Deploy Preview for jumpstarter-docs failed. Why did it fail? →

Name Link
🔨 Latest commit cb16b2f
🔍 Latest deploy log https://app.netlify.com/projects/jumpstarter-docs/deploys/69daa97693dec600089a42f1

@kirkbrauer kirkbrauer requested a review from mangelajo April 7, 2026 15:49
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Apr 7, 2026

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 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

Cohort / File(s) Summary
JEP process & template
jeps/JEP-0000-jep-process.md, jeps/JEP-NNNN-template.md, jeps/README.md
New JEP process spec (eligibility, types, full lifecycle, roles, numbering, workflow), a comprehensive JEP template with required metadata/sections, and README with quick-start, index, conventions, and status key.
Policy/rules artifacts
.claude/rules/jep-adr-process.md, .cursor/rules/jep-adr-process.mdc
New rule documents formalizing JEP/ADR usage, DD-N design-decision convention, numbering/placement rules, merge/PR expectations, and Apache-2.0 notice.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~10 minutes

Suggested reviewers

  • raballew
  • kirkbrauer
  • mangelajo

Poem

🐇 I nibbled notes and penned a plan,
A carrot-led map for every branch and clan.
Drafts hop, reviewers dance in tune,
From burrowed ideas to a mid-afternoon bloom.
Hop on the trail — proposals sprout like noon.

🚥 Pre-merge checks | ✅ 2 | ❌ 1

❌ Failed checks (1 inconclusive)

Check name Status Explanation Resolution
Description check ❓ Inconclusive No pull request description was provided by the author, making it impossible to assess relevance to the changeset. Add a description explaining the purpose, scope, and key changes introduced by this pull request for better context.
✅ Passed checks (2 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Title check ✅ Passed The title accurately and clearly summarizes the main change: introducing a formal Jumpstarter Enhancement Proposal (JEP) process with associated documentation and templates.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch jep-process

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.

❤️ Share

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

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)
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.md around 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:

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 -->

Comment thread .github/ISSUE_TEMPLATE/jep-proposal.yml Outdated
Comment thread jeps/JEP-0000-jep-process.md Outdated
@mangelajo
Copy link
Copy Markdown
Member

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. :)

Comment thread jep/README.md Outdated
@mangelajo mangelajo requested a review from raballew April 8, 2026 10:36
Comment thread jeps/README.md Outdated
@kirkbrauer
Copy link
Copy Markdown
Member Author

kirkbrauer commented Apr 8, 2026

@ambient-code Let's go ahead and remove the issue template and standardize the process on creating PRs for formal proposals.

@ambient-code
Copy link
Copy Markdown
Contributor

ambient-code Bot commented Apr 8, 2026

Done. I've removed the .github/ISSUE_TEMPLATE/jep-proposal.yml file and updated all JEP documentation (jeps/JEP-0000-jep-process.md, jeps/README.md, jeps/JEP-NNNN-template.md) to standardize on pull requests as the sole mechanism for submitting JEPs. References to the issue template, issue-based numbering, and issue-centric language have been replaced with PR-based equivalents throughout.

Comment thread jeps/JEP-0000-jep-process.md Outdated
Comment thread python/docs/source/internal/jeps/JEP-0000-jep-process.md
Comment thread jeps/JEP-0000-jep-process.md Outdated
Comment thread jeps/JEP-0000-jep-process.md Outdated
Comment thread jeps/JEP-NNNN-template.md Outdated
@kirkbrauer
Copy link
Copy Markdown
Member Author

@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

@ambient-code
Copy link
Copy Markdown
Contributor

ambient-code Bot commented Apr 9, 2026

I've reviewed both SpecKit and the ADR format from PR #533 and made the following changes to align the JEP process:

JEP template (JEP-NNNN-template.md):

  • Added a Design Decisions section using the DD-N pattern from ADRs (alternatives considered, decision, rationale) — this matches the format used in ADR-0001 from PR Add Renode emulator driver for embedded target simulation #533
  • Added a Consequences section (positive/negative/risks) following ADR convention
  • Marked all sections as *(mandatory)*, *(optional)*, or *(mandatory for Standards Track)* following SpecKit's practice of making document structure explicit for agents and contributors alike

Process document (JEP-0000-jep-process.md):

  • Added a JEPs and Architecture Decision Records section that clarifies when to use a JEP vs an ADR (JEPs for cross-cutting changes needing community review; ADRs for scoped technical decisions within a single component/driver)
  • Added SpecKit and ADR references to the Prior Art section

Index (README.md):

  • Added a Related: ADRs section pointing contributors to the right process
  • Added a For AI Agents section documenting JEP conventions (metadata format, section markers, DD-N pattern, file naming) so agents can help draft and review JEPs

What I intentionally did not adopt from SpecKit: SpecKit's full workflow (/speckit.specify/speckit.plan/speckit.tasks) is designed for product feature development with code generation. That doesn't map well to an enhancement proposal process. Instead, I adopted the parts that are relevant: explicit mandatory/optional section markers, structured document conventions for agent readability, and the spec-as-source-of-truth philosophy.

Copy link
Copy Markdown
Member Author

@kirkbrauer kirkbrauer left a comment

Choose a reason for hiding this comment

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

@ambient-code Let's address these comments first before further reviews.

Comment thread jeps/JEP-0000-jep-process.md Outdated
Comment thread jeps/JEP-0000-jep-process.md Outdated
Comment thread python/docs/source/internal/jeps/JEP-0000-jep-process.md
Comment thread jeps/JEP-0000-jep-process.md Outdated
Comment thread jeps/JEP-NNNN-template.md Outdated
vtz added a commit to vtz/jumpstarter that referenced this pull request Apr 11, 2026
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
@kirkbrauer
Copy link
Copy Markdown
Member Author

@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.

@ambient-code
Copy link
Copy Markdown
Contributor

ambient-code Bot commented Apr 11, 2026

Migrated JEPs and ADRs into the docs directory for documentation rendering:

  • Moved jeps/docs/internal/jeps/ (JEP-0000, JEP template, and README)
  • Created docs/internal/adr/ directory (with .gitkeep) for future ADRs
  • Updated all internal path references:
    • docs/internal/jeps/README.md — updated Quick Start instructions to reference docs/internal/jeps/
    • docs/internal/jeps/JEP-0000-jep-process.md — fixed the JEP template link (was a broken relative path ../docs/internal/jeps/..., now co-located JEP-NNNN-template.md)
    • .claude/rules/jep-adr-process.md — updated template source path
    • .cursor/rules/jep-adr-process.mdc — updated template source path

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.

@jumpstarter-dev jumpstarter-dev deleted a comment from ambient-code Bot Apr 13, 2026
vtz added a commit to vtz/jumpstarter that referenced this pull request Apr 15, 2026
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
vtz added a commit to vtz/jumpstarter that referenced this pull request Apr 15, 2026
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
vtz added a commit to vtz/jumpstarter that referenced this pull request Apr 15, 2026
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
kirkbrauer and others added 4 commits April 15, 2026 19:13
- 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>
kirkbrauer and others added 4 commits April 15, 2026 19:13
- 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>
Comment thread .claude/rules/jep-adr-process.md
Comment thread python/docs/source/internal/jeps/JEP-NNNN-template.md
Comment thread python/docs/source/internal/jeps/JEP-0000-jep-process.md
Comment thread python/docs/source/internal/jeps/JEP-0000-jep-process.md
Comment thread .cursor/skills/propose-jep/SKILL.md Outdated
Comment thread python/docs/source/internal/adr/index.md Outdated
Comment thread python/docs/source/internal/jeps/README.md Outdated
Comment thread python/docs/source/index.md Outdated
Comment thread python/docs/source/internal/jeps/README.md
Comment thread python/docs/source/internal/jeps/JEP-0010-renode-integration.md
Comment thread .claude/skills/create-adr/SKILL.md Outdated
Comment thread python/docs/source/internal/jeps/JEP-NNNN-template.md
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.

just some additional comments.

@kirkbrauer
Copy link
Copy Markdown
Member Author

@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.

kirkbrauer and others added 2 commits April 16, 2026 14:04
- 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>
mangelajo added a commit that referenced this pull request Apr 17, 2026
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
@mangelajo mangelajo changed the title Add Jumpstarter Enhancement Proposal (JEP) Process and Issue Template Add Jumpstarter Enhancement Proposal (JEP) process and docs Apr 23, 2026
@mangelajo mangelajo requested review from mangelajo and raballew April 23, 2026 08:25
- 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
@mangelajo mangelajo disabled auto-merge April 23, 2026 08:53
@mangelajo mangelajo enabled auto-merge (squash) April 23, 2026 08:54
@mangelajo mangelajo dismissed raballew’s stale review April 23, 2026 09:46

requests were addressed

@mangelajo mangelajo merged commit 4957600 into main Apr 23, 2026
32 checks passed
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.

3 participants