This document is for SIG Approvers. It explains when to approve a FEP, when to block it, and how to provide useful reviews.
FEP PR submitted
│
├→ Within 72h: SIG Chair designates a lead Approver (at least 1)
│
├→ Within 2 weeks: Lead Approver provides initial feedback (approve / request changes / block)
│
├→ Involving other SIGs: Lead Approver @mentions the relevant SIG's Approvers to participate
│
├→ All discussions resolved → all relevant Approvers approve → merged
│
└→ No Approver feedback within 2 weeks → SIG Chair escalates to TSC
Bootstrap phase note: When the SIG Chair and Approvers have not yet been confirmed, the actions "SIG Chair designates" and "SIG Approver approval" in the above process are performed directly by the TSC. Before the TSC is established, the ZhongZhi FlagOS Community acts on its behalf. See GOVERNANCE.md for details.
Approvers reviewing a FEP should check each item against the following checklist:
- Is the problem real? Is the pain point the proposal addresses sufficiently described? Is there data or user feedback to back it up?
- Is the scope reasonable? Do Non-Goals clearly define boundaries? Is there scope creep?
- Is it appropriate for FlagOS? Is this feature suitable as part of FlagOS, or better suited as an external tool/plugin?
- Is the design simple? Is the simplest workable solution used? Is there over-engineering?
- Are there precedents? Are there similar designs that can be referenced? If there are significant differences, what is the rationale?
- Are the API/interfaces stable? Does the user-facing API account for forward compatibility?
- What is the impact on existing modules? Are there any breaking changes? If so, what is the migration path?
- Which SIGs are involved? Which SIG owns the modules in the proposal? Are there cross-SIG dependencies?
- Are relevant SIGs aware? Have relevant SIG Approvers been @mentioned?
- Are dependencies reasonable? If the FEP depends on work from other SIGs, has communication already occurred?
- Is there an owner? Does the FEP Owner have the ability or resources to drive implementation?
- Is the timeline reasonable? Is the target release realistic? Does it need to be split across multiple releases?
- Is the test plan sufficient? Does the Test Plan cover all Goals? Are multi-chip scenarios considered?
- Is the documentation plan clear? Does the Packaging section specify build and distribution methods?
- Is the license compatible? If new dependencies are introduced, are the licenses compatible?
| Opinion Type | Meaning | When to Use |
|---|---|---|
| Approve | Unconditional approval | All checklist items pass |
| Comment / LGTM | Agree with minor suggestions | Non-blocking suggestions; can be merged without changes |
| Request Changes | Modifications required before re-review | Issues exist but are fixable |
| Block / Objection | Fundamental, irreparable objection | The design direction is wrong, scope is severely inappropriate, or core FlagOS principles are violated. Must clearly state reasons and alternatives |
Below are the most common reasons a FEP is rejected or requires significant revision. Approvers should clearly call these out in their review when encountered:
| Issue | Description | Recommendation |
|---|---|---|
| Scope too large | The FEP attempts to solve too many problems at once | Suggest splitting into multiple independent FEPs |
| Over-engineered design | Complex abstractions designed for simple requirements | Suggest starting with the simplest approach and evolving incrementally |
| No user demand | Designs a feature no one asked for | Suggest gathering user feedback before submitting |
| Insufficient cross-SIG coordination | Involves other SIGs but no communication has occurred | Suggest communicating with relevant SIG Chairs first |
| Inadequate test plan | Especially: multi-chip scenarios not covered | Supplement the test matrix |
| Backward incompatible | Breaking change with no migration path | Provide a migration guide or compatibility layer design |
When a FEP involves ≥2 SIGs:
- Home SIG designation: The FEP author selects one SIG as home; the file is placed under that SIG's directory
- Lead Approver: The home SIG's Approver serves as lead and is responsible for coordination
- Relevant SIG approval: The lead Approver @mentions the relevant SIGs' Approvers in the PR
- All Approvers pass: Each relevant SIG needs at least 1 Approver's approve
- Unable to reach consensus: Escalate to the TSC. If the TSC still cannot pass → the proposal is tabled, with a 60-day cooling-off period before resubmission; urgent matters → the TSC Chair makes a temporary decision (requires co-signature by ≥1 other TSC member), with a retroactive vote within 72h
The lead Approver uses the following template in the PR to initiate a cross-SIG review:
## Cross-SIG Review Request
**FEP**: [link]
**Home SIG**: sig-xxx
**Involved SIGs**: sig-yyy, sig-zzz
Requesting review from the following Approvers:
@sig-yyy-approver-1
@sig-zzz-approver-2
Please complete your review by YYYY-MM-DD. If you have objections, please state them in a PR comment.Emergency situations such as security patches, critical bug fixes, or CI blockers may use the fast-track channel:
- The FEP Owner marks the PR title with
[URGENT] - The SIG Chair assigns an Approver within 24h
- The Approver delivers an approval decision within 48h
- Missing documentation sections may be supplemented within 1 week after merging
- Response time: Initial feedback must be provided within 2 weeks of receiving a review request. If no feedback is given beyond 2 weeks, the Chair may reassign
- Constructiveness: When rejecting, you must provide reasons and alternatives. A review that only says "no" provides no value
- Respect the Owner: The FEP Owner has invested significant time. Reviews should help improve the proposal, not discourage the contributor
- Transparency: All review opinions are expressed publicly in the PR. Do not communicate privately
- Critique the process, not the person: Distinguish between "this design has an issue" and "you did it wrong." The former is constructive; the latter is unacceptable