mirror of
https://github.com/katanemo/plano.git
synced 2026-04-27 09:46:28 +02:00
142 lines
6.3 KiB
Markdown
142 lines
6.3 KiB
Markdown
# PEP-0000: Plano Enhancement Proposal Process
|
|
|
|
| Field | Value |
|
|
|---|---|
|
|
| **PEP** | 0000 |
|
|
| **Title** | Plano Enhancement Proposal Process |
|
|
| **Status** | Active |
|
|
| **Authors** | Plano Maintainers |
|
|
| **Created** | 2026-04-07 |
|
|
|
|
## What is a PEP?
|
|
|
|
A **Plano Enhancement Proposal (PEP)** is a design document that describes a significant change to the Plano project. PEPs provide a structured way to propose, discuss, and track major features, architectural changes, and process improvements.
|
|
|
|
PEPs are inspired by [Kafka's KIP process](https://cwiki.apache.org/confluence/display/KAFKA/Kafka+Improvement+Proposals), [Kubernetes KEPs](https://github.com/kubernetes/enhancements/tree/master/keps), and [Envoy's design document process](https://github.com/envoyproxy/envoy/blob/main/CONTRIBUTING.md).
|
|
|
|
## When is a PEP Required?
|
|
|
|
A PEP is required for changes that:
|
|
|
|
- Introduce a new user-facing feature or capability
|
|
- Change existing user-facing behavior in a breaking way
|
|
- Add a new subsystem or architectural component
|
|
- Modify the configuration schema in a significant way
|
|
- Add a new LLM provider with non-standard API patterns
|
|
- Change the project's processes or governance
|
|
|
|
A PEP is **not** required for:
|
|
|
|
- Bug fixes
|
|
- Documentation improvements
|
|
- Refactoring that doesn't change behavior
|
|
- Adding models to an existing provider
|
|
- Minor CLI improvements
|
|
- Test improvements
|
|
- Dependency updates
|
|
|
|
When in doubt, open a GitHub issue or Discussion first. A maintainer will let you know if a PEP is warranted.
|
|
|
|
## PEP Lifecycle
|
|
|
|
```
|
|
Draft → Under Review → Accepted → Implementing → Complete
|
|
↘ Declined
|
|
↘ Deferred
|
|
↘ Withdrawn
|
|
```
|
|
|
|
### States
|
|
|
|
| State | Description |
|
|
|---|---|
|
|
| **Draft** | Author is writing the proposal. Not yet ready for formal review. |
|
|
| **Under Review** | PR is open. Maintainers and community are discussing the design. |
|
|
| **Accepted** | Maintainers have approved the design. Implementation can begin. |
|
|
| **Declined** | Maintainers have decided not to pursue this proposal. The PEP remains in the repo for historical reference with an explanation of the decision. |
|
|
| **Deferred** | Good idea, but not the right time. Will be reconsidered later. |
|
|
| **Withdrawn** | Author has decided not to pursue this proposal. |
|
|
| **Implementing** | Accepted and actively being built. Linked to tracking issue(s). |
|
|
| **Complete** | Fully implemented and released. |
|
|
|
|
## How to Submit a PEP
|
|
|
|
### 1. Discuss First (Recommended)
|
|
|
|
Before writing a full PEP, validate the idea:
|
|
|
|
- Open a [GitHub Discussion](https://github.com/katanemo/plano/discussions) describing the problem and your proposed approach
|
|
- Or bring it up in a [community meeting](https://discord.gg/pGZf2gcwEc)
|
|
- Or open a GitHub issue tagged `enhancement`
|
|
|
|
This step saves time by catching fundamental objections early.
|
|
|
|
### 2. Write the PEP
|
|
|
|
Copy `docs/peps/PEP-TEMPLATE.md` to `docs/peps/PEP-XXXX-short-title.md` (use the next available number). Fill in all sections. The template is deliberately structured — each section exists for a reason.
|
|
|
|
Key guidelines:
|
|
|
|
- **Be specific.** "Add caching" is too vague. "Add exact-match response cache with configurable TTL keyed by model + message hash" is actionable.
|
|
- **Show the config.** If the feature involves user-facing configuration, include the YAML snippet users would write.
|
|
- **Address trade-offs.** Every design has trade-offs. Acknowledging them strengthens the proposal.
|
|
- **Include alternatives.** Explain what other approaches you considered and why you chose this one.
|
|
|
|
### 3. Submit as a Pull Request
|
|
|
|
Open a PR adding your PEP file to `docs/peps/`. The PR title should be `PEP-XXXX: Short Title`. Set the status to `Draft` or `Under Review` depending on readiness.
|
|
|
|
### 4. Review and Discussion
|
|
|
|
- At least **two maintainers** must review the PEP
|
|
- Community members are encouraged to comment on the PR
|
|
- The author is expected to respond to feedback and revise the proposal
|
|
- Discussion should focus on the **design**, not implementation details (those belong in code review)
|
|
- Complex PEPs may be discussed in a community meeting
|
|
|
|
### 5. Decision
|
|
|
|
Maintainers aim to provide **initial feedback within two weeks** of a PEP entering `Under Review`. Complex proposals may take longer, but the author should never be left without a response.
|
|
|
|
A PEP is **accepted** when at least two maintainers approve the PR and there are no unresolved objections. The accepting maintainer merges the PR with the status set to `Accepted`.
|
|
|
|
A PEP is **declined** when maintainers determine the proposal doesn't align with the project's direction or has fundamental issues that can't be resolved. The PR is merged (not closed) with the status set to `Declined` and a rationale recorded — declined PEPs remain in the repo as a record.
|
|
|
|
**Resolving disagreements:** If maintainers disagree on a PEP, the proposal is discussed in a community meeting. If consensus still can't be reached, the project lead makes the final call and records the rationale in the PEP.
|
|
|
|
### 6. Implementation
|
|
|
|
Once accepted:
|
|
|
|
- Create a tracking GitHub issue (or issues) for the implementation
|
|
- Link the issue(s) in the PEP header
|
|
- Update the PEP status to `Implementing`
|
|
- Implementation PRs should reference the PEP number (e.g., "Part of PEP-0042")
|
|
- When all implementation work is merged and released, update status to `Complete`
|
|
|
|
## PEP Numbering
|
|
|
|
- PEPs are numbered sequentially starting from 0001
|
|
- PEP-0000 is reserved for this process document
|
|
- The author picks the next available number when submitting
|
|
|
|
## Roles
|
|
|
|
| Role | Responsibility |
|
|
|---|---|
|
|
| **Author** | Writes the PEP, responds to review feedback, drives the proposal to a decision |
|
|
| **Sponsor** | A maintainer who shepherds the PEP through review. Required for PEPs from non-maintainers. Find a sponsor by asking in Discord or a community meeting. |
|
|
| **Reviewers** | Maintainers and community members who provide feedback on the design |
|
|
|
|
## Amending Accepted PEPs
|
|
|
|
If an accepted PEP needs material changes during implementation:
|
|
|
|
- For minor adjustments (implementation details, clarifications): update the PEP in-place via a PR
|
|
- For significant design changes: open a new PEP that supersedes the original, linking back to it
|
|
|
|
## Index
|
|
|
|
| PEP | Title | Status | Author |
|
|
|---|---|---|---|
|
|
| [0000](PEP-0000-process.md) | Plano Enhancement Proposal Process | Active | Plano Maintainers |
|