| English | 中文版 |
This directory holds Requests for Comments (RFCs) — the formal record of how a non-trivial change to the NPS suite was proposed, debated, and decided. An RFC is a thinking document, not an implementation plan: it exists so the argument survives the decision.
An RFC MUST be opened before any PR that:
0x02,
a new frame type, a new NPS status code range)spec/frame-registry.yamlNPS-6-*)min_agent_version bump)An RFC SHOULD be opened (but may be skipped with shepherd consent) for:
An RFC is NOT required for:
Rule of thumb: if landing the PR would force every SDK to either adopt or explicitly reject the change, it needs an RFC.
Draft ─────► Accepted ─────► Active ─────► Superseded
│ │
│ └──► Withdrawn (author pulls it)
└──► Rejected
| State | Meaning | How to change |
|---|---|---|
Draft |
Author is writing / revising; PR open against dev |
Author pushes commits |
Accepted |
Merged to dev; implementation may begin across SDKs |
Shepherd merges PR after approval threshold met |
Active |
Implementation landed in ≥1 reference SDK; frame/spec changes integrated | Follow-up PR flips header; requires ≥1 SDK + green CI |
Superseded |
A later RFC replaces this one | The replacing RFC sets Supersedes: and this one is edited to set Superseded-By: |
Withdrawn |
Author no longer pursues it; preserved as history | Author edits header |
Rejected |
Discussion reached “no” consensus; preserved as history | Shepherd edits header with summary of why |
Rejected and Withdrawn RFCs are never deleted — the argument is the deliverable.
Acceptance requires, at minimum:
Extended windows:
| Change type | Minimum discussion window |
|---|---|
| New frame / new Reserved bit assignment | 14 days |
| Breaking wire-format change | 21 days |
Raising min_agent_version |
21 days + one month deprecation notice |
NPS-RFC-{NNNN}-{kebab-slug}.md (English primary)NPS-RFC-{NNNN}-{kebab-slug}.cn.md (Chinese mirror)NNNN is a zero-padded four-digit number assigned on PR open,
monotonically increasing. Never reuse a number, even for Withdrawn /
Rejected RFCs.
template.md → NPS-RFC-{next}-{slug}.mdtemplate.cn.md → NPS-RFC-{next}-{slug}.cn.md and translateStatus: Draft)dev, title format:
rfc: NPS-RFC-{NNNN} — {one-line summary}Once merged to dev with Status: Accepted, implementation work can
start in any SDK. The RFC’s Status: is updated to Active in a
follow-up PR once at least one reference SDK ships the change.
| Number | Title | Status | Accepted | Supersedes |
|---|---|---|---|---|
| 0001 | Add NCP connection preamble for native-mode traffic identification | Draft | — | — |
| 0002 | Adopt X.509 + ACME for NID certificates | Accepted | 2026-05-27 | — |
| 0003 | Three-tier Agent identity assurance levels for anti-scraping / trust gating | Draft | — | — |
| 0004 | Append-only NID reputation log (Certificate Transparency for Agents) | Draft | — | — |
| 0005 | Reputation Policy Enforcement | Accepted | 2026-05-27 | — |