This document defines ownership, decision authority, quality gates, and maintenance cadence for the Pi extension platform.
| Area | Owner | Backup |
|---|---|---|
| Runtime (PiJS, QuickJS, hostcalls) | Primary maintainer | AI agent review (Claude/Codex) |
| Extension API surface | Primary maintainer | AI agent review |
| Capability policy (safe/balanced/permissive) | Primary maintainer | Security review required |
| CI/CD pipelines | Primary maintainer | Self-healing via gate promotion |
| Conformance corpus (223 extensions) | Automated via conformance harness | Manual triage for new failures |
| Documentation | Primary maintainer + agents | Automated staleness checks |
| Sibling crates (asupersync, rich_rust, charmed, sqlmodel) | Independently versioned | Cross-repo coordination via bead dependencies |
- Breaking changes to extension API: Primary maintainer approval required. Documented in CHANGELOG.md before release.
- Capability policy changes (adding/removing capabilities): Requires security review and conformance regression check.
- New official extensions: Must pass conformance at Tier 1-2 level with clean preflight report.
- Dependency additions: Must pass
cargo audit, nounsafein new deps.
| Gate | Threshold | Enforcement |
|---|---|---|
cargo fmt |
Zero diff | .github/workflows/ci.yml |
cargo clippy -D warnings |
Zero warnings | .github/workflows/ci.yml |
| Unit tests | 100% pass | .github/workflows/ci.yml |
| VCR/fixture tests | 100% pass | .github/workflows/ci.yml |
| No-mock dependency guard | Zero violations | .github/workflows/ci.yml |
| Suite classification guard | All files classified | .github/workflows/ci.yml |
| Traceability matrix guard | All classified tests traced | .github/workflows/ci.yml |
| VCR leak guard | No cassettes in wrong suite | .github/workflows/ci.yml |
| PR Definition-of-Done evidence guard | Required for feature-surface PRs | .github/workflows/ci.yml |
| Gate | Threshold | Source |
|---|---|---|
| Extension corpus pass rate | >= 80% (current: 91.9%) | conformance_summary.json |
| Scenario conformance | >= 90% (current: 96.0%) | scenario_conformance.json |
| Node API matrix | 100% critical pass (current: 13/13) | runtime_api_matrix.json |
| Maximum failures | <= 36 extensions | conformance_summary.json |
| Maximum N/A | <= 170 extensions | conformance_summary.json |
| Policy negative tests | 100% pass | conformance_report.json |
| Budget | Threshold | Source |
|---|---|---|
| Cold extension load | < 200ms p95 | budget_summary.json |
| Warm extension load | < 50ms p95 | budget_summary.json |
| Event dispatch latency | < 10ms p95 | budget_summary.json |
| Binary size | < 50MB | CI artifact check |
See BENCHMARKS.md for full budget definitions.
Per releasing.md:
- CI green on Linux/macOS/Windows
- Core CLI modes stable (print + interactive + RPC)
- Extension runtime surface and security policy stable
- Conformance gates met at release thresholds
Feature-surface PRs (runtime/provider/tooling behavior changes) are not mergeable until:
- PR body includes checked evidence for unit, e2e, and extension validation.
- PR body links directly to structured artifacts/logs for those runs.
- PR body includes reproduction commands for both passing validation and the most recent failing path.
- PR body contains no unresolved checklist placeholders.
The canonical checklist source is .github/pull_request_template.md, and CI enforces it in
the Linux PR lane.
- Rebase on latest
main. - Replace PR body with
.github/pull_request_template.md. - Backfill evidence links from latest CI/local runs.
- Include explicit failing-path artifact links plus exact rerun commands.
- Re-run CI and merge only after DoD guard passes.
| Channel | Frequency | Scope |
|---|---|---|
Patch (0.x.Y) |
As needed | Bug fixes, conformance improvements |
Minor (0.X.0) |
Monthly | New features, API additions |
Major (X.0.0) |
When 1.0 criteria met | Stability commitment |
Pre-release (-rc.N) |
Before major/minor | Validation window |
- SemVer with tag format
vX.Y.Z(source of truth:Cargo.toml). - Pre-1.0: breaking changes allowed with changelog documentation.
- Post-1.0: breaking changes require major version bump and deprecation window.
- Sibling crates versioned independently.
See releasing.md for the full release process.
| Task | Owner | Verification |
|---|---|---|
Dependency audit (cargo audit) |
Automated | CI gate |
| Conformance regression review | Agent triage | Nightly CI reports |
| Bead backlog grooming | Primary maintainer | bv --robot-plan + br ready --json |
Snapshot:
- Scope:
bd-1f42*QA epic and sub-beads - Total: 51 beads (
8 closed,7 in_progress,36 open) - Priority mix:
open P0=19,open P1=17,in_progress P0=5,in_progress P1=2 - Slip check: no
bd-1f42*bead is past due as of2026-02-10. - Near-term risk window:
2026-02-13to2026-02-16(baseline-audit and core-unit milestones).
Top blocker graph pressure (open blockers):
bd-1f42.6.5blocked by 8 prerequisitesbd-1f42.4blocked by 7 prerequisitesbd-1f42.6blocked by 7 prerequisitesbd-1f42.2blocked by 6 prerequisitesbd-1f42.7.3blocked by 6 prerequisites
| Blocked target | Root cause analysis | Accountable owner | Unblock action (next checkpoint) |
|---|---|---|---|
bd-1f42.3 (E2E harness track) |
Critical-path concentration on runner core (bd-1f42.3.1) and versioned logging contract (bd-1f42.3.6) keeps scenario/replay beads from starting. |
TopazForest |
Close bd-1f42.3.1, then land bd-1f42.3.6 logging contract to unlock downstream scenario/replay work. |
bd-1f42.4 (208-extension matrix track) |
Fixture corpus + executor + gate/reporting work is still serial (bd-1f42.4.2/.4.3/.4.4), so downstream compatibility and dossier beads remain blocked. |
OrangeBarn |
Prioritize bd-1f42.4.3 sharded executor completion, then wire bd-1f42.4.4 CI must-pass gate immediately after. |
bd-1f42.6.5 (final full-suite gate) |
Final release-blocking gate depends on unfinished deliverables across CI, unit, e2e, extension, and reliability tracks. | PearlRaven (coordination owner for bd-1f42.6.*) |
Keep prerequisite checklist explicit and sequence completion bd-1f42.6.1 -> bd-1f42.6.8 -> bd-1f42.6.5 with owner check-ins each burndown cycle. |
bd-1f42.7.3 (final certification) |
Certification is evidence-gated: governance cadence (bd-1f42.7.2) plus runbook and CI evidence-bundle dependencies are still open. |
BrightValley |
Maintain weekly burndown updates, close bd-1f42.7.4 runbook, then assemble certification once bd-1f42.6.8 and bd-1f42.4.5 are complete. |
Next burndown checkpoint: 2026-02-17 (UTC), with updated blocker counts and owner-level action status.
Snapshot:
- Scope:
bd-3uqg*provider-parity epic and sub-beads. - Ready front: only
bd-3uqgis currently unblocked/open; most downstream tasks are intentionally dependency-gated. - Highest-impact current blocker:
bd-3uqg.3.8.4(native parity consolidation), which unlocksbd-3uqg.8,bd-3uqg.8.2, andbd-3uqg.9.1.2.
Execution lanes and ownership:
| Lane | Active beads | Current owner/assignee | Handoff target |
|---|---|---|---|
| Native implementation | bd-3uqg.3 |
RusticPrairie |
bd-3uqg.3.8 verification |
| Native verification | bd-3uqg.3.8 |
AmberHill |
bd-3uqg.3.8.4 consolidated report |
| Native parity consolidation | bd-3uqg.3.8.4 |
IvoryPuma |
Test/docs expansion (bd-3uqg.8*, bd-3uqg.9.1.2) |
| Provider onboarding docs | bd-3uqg.9 |
TealFox |
Docs matrix and playbook children |
| Provider support matrix | bd-3uqg.9.1 |
QuietCove |
bd-3uqg.9.1.2 and bd-3uqg.9.1.3 |
| Rollup orchestration | bd-3uqg, bd-3uqg.10, bd-3uqg.10.1 |
CopperCreek |
bd-3uqg.10.2 gate execution |
Sequencing gates (ordered):
- Gate A - Native parity evidence complete
Criteria:
bd-3uqg.3.8.4includes provider-level pass/fail matrix with links to unit/e2e logs and explicit deviation notes. - Gate B - Core provider test harnesses
Criteria:
bd-3uqg.8.2,bd-3uqg.8.3, andbd-3uqg.8.4land with deterministic fixtures, event-parity assertions, and CI artifact hooks. - Gate C - Provider docs evidence closure
Criteria:
bd-3uqg.9.1.2,bd-3uqg.9.1.3,bd-3uqg.9.2,bd-3uqg.9.3,bd-3uqg.9.4, andbd-3uqg.9.5reference concrete test artifacts rather than narrative-only claims. - Gate D - Rollup certification path
Criteria:
bd-3uqg.10.2runs mandatory quality gates, thenbd-3uqg.10.3performs final parity audit, andbd-3uqg.10.4publishes completion handoff + remaining-gap beads.
Anti-stall checkpoints:
- Every active
bd-3uqg*assignee posts a concise progress update in Agent Mail threadbr-3uqgat least once per 24 hours whilein_progress. - Any bead blocked for more than 12 hours must post a blocker note with exact blocking bead IDs, affected files, and required unblock action.
- Rollup owner re-runs
bv --robot-planandbv --robot-priorityat each checkpoint, then validates proposed bead IDs withbr ready --json/br show <id>to skip tombstones before reassigning effort. - No new provider-family onboarding starts until Gate A evidence exists, to prevent parallel drift and report mismatch.
Next provider rollup checkpoint: 2026-02-13 (UTC), focused on bd-3uqg.3.8.4 completion and Gate A evidence audit.
| Task | Owner | Verification |
|---|---|---|
| Performance budget review | Primary maintainer | budget_summary.json trends |
| Extension corpus update | Automated discovery | extension-inclusion-list.json |
| Documentation staleness check | Traceability tests | traceability_staleness.rs |
| CI gate threshold review | Primary maintainer | Gate promotion workflow |
| Task | Owner | Verification |
|---|---|---|
| Full conformance campaign (223 extensions) | Automated | conformance.yml nightly |
| Security review of capability policies | Primary maintainer | Threat model doc |
| Dependency major version updates | Primary maintainer | cargo update + full test |
| Roadmap review and bead reprioritization | Primary maintainer | bv --robot-plan + bv --robot-priority |
| Tier | Count | Vetting | Conformance |
|---|---|---|---|
| Official | 60 | Full review, MIT license verified | 100% pass required |
| Community | 58 | Automated conformance check | 90%+ pass target |
| npm registry | 66 | License + provenance check | Best-effort |
| Third-party | 23 | Provenance verification | Best-effort |
| Agent ecosystem | 1+ | Same as community | Same as community |
- Extension passes
pi doctorwith PASS verdict. - License is permissive (MIT, Apache-2.0, BSD).
- Provenance is pinnable (git commit hash or npm version).
- No per-extension patches required (unmodified compatibility).
- Added to
docs/extension-inclusion-list.jsonwith tier assignment.
- Extensions are removed from the corpus when:
- License changes to incompatible terms.
- Source becomes unavailable (unpinnable provenance).
- Extension requires per-extension patches to function.
- Removal is documented in CHANGELOG.md.
- Breaking changes are allowed with CHANGELOG documentation.
- Deprecated APIs emit runtime warnings for at least one minor release.
- CLI flag changes are documented in
--helpoutput.
- Deprecated APIs: warning for 2 minor releases, removal in next major.
- CLI flag removal: 1 minor release deprecation window.
- Extension API changes: 2 minor release deprecation window.
- Capability policy changes: announced in release notes.
This playbook covers maintainer unavailability, account compromise, or a release-blocking emergency where the primary maintainer cannot operate the repository directly. It is intentionally procedural and does not store secrets, private contact details, recovery phrases, or personal account material in this repository.
Use this path only when at least one condition is true:
- The primary maintainer is unreachable for 72 hours and a Critical/High security fix, installer breakage, or release-blocking regression must ship.
- The primary maintainer explicitly delegates emergency control in writing.
- The GitHub or crates.io account appears compromised and normal release authority must be suspended while credentials are rotated.
| Step | Action | Evidence |
|---|---|---|
| 1 | Open an emergency tracking bead with label operations and link the triggering incident. |
br show <id> --json |
| 2 | Confirm the activating condition with the out-of-band maintainer contact roster stored outside this repo. | Emergency log entry, not committed |
| 3 | Have the designated emergency repo admin accept temporary operational ownership. | GitHub organization or repo audit log |
| 4 | Freeze non-emergency merges until CI, release tags, and installer distribution are verified. | Branch ruleset/audit-log snapshot |
| 5 | Record every action in the emergency bead and in release notes if a user-visible build ships. | Bead comments, CHANGELOG entry |
The private roster must identify at least two emergency contacts: one GitHub repository administrator and one release/secrets operator. If either role is vacant, the weekly governance review must file a P1 operations bead.
No secret value belongs in this repo. The emergency operator should recover or rotate credentials from the private secrets manager/escrow only after the activation criteria are met.
| Secret or authority | Recovery/rotation action | Verification |
|---|---|---|
| GitHub repository/admin access | Rotate compromised credentials, review SSH/GPG keys, revoke unknown tokens, and confirm branch rulesets still protect main. |
GitHub security log + ruleset snapshot |
CARGO_REGISTRY_TOKEN |
Revoke the old crates.io token, issue a least-privilege replacement, and update the Actions secret. | Publish workflow dry-run or pre-release tag |
| Release workflow authority | Verify .github/workflows/release.yml permissions still use GitHub-scoped release rights only. |
Workflow run log |
| Installer artifact integrity | Regenerate release assets, SHA256SUMS, and Sigstore/checksum evidence before advising users to install. |
GitHub Release artifact list + checksum proof |
| Local signing or recovery material | Rotate outside Git, then document only the rotation event and operator identity. | Private escrow audit log |
After rotation, invalidate all emergency session tokens, remove temporary administrators, and capture a final audit-log snapshot before returning to normal governance.
- Rebase on latest
mainand keep the patch scoped to the emergency. - Run the mandatory local gates from AGENTS.md, including
cargo check --all-targets,cargo clippy --all-targets -- -D warnings,cargo fmt --check, and./scripts/reconcile_beads_ledger.sh. - Cut a pre-release tag first when time allows:
vX.Y.Z-rc.N. - Verify the
PublishandRelease (GitHub binaries)workflows in releasing.md, including installer regression and checksum artifacts. - Promote to the final SemVer tag only after the release artifact path and installer path both pass smoke tests.
- Document the reason for emergency authority in
CHANGELOG.mdand the emergency bead.
If a Critical/High vulnerability is actively exploitable, the emergency repo admin may bypass the normal monthly cadence, but may not bypass branch protection, code review evidence, or release artifact verification.
Only the primary maintainer or the designated emergency repo admin may change branch protection, required checks, release workflow permissions, or tag protection. During an emergency, any such change requires:
- A linked emergency bead.
- A second human or agent review recorded in the bead.
- A before/after snapshot of the GitHub ruleset or workflow permission diff.
- Immediate restoration of the stricter rule after the emergency release.
Branch protection must never be relaxed to make unrelated work mergeable during an incapacity event.
Run this review quarterly or after any release-process change:
- Pick a hypothetical Critical installer regression.
- Identify the emergency repo admin and release/secrets operator from the private roster without exposing their contact details in Git.
- Walk through credential rotation for
CARGO_REGISTRY_TOKENas a dry run: do not rotate unless there is a real incident, but verify the owner and storage location are known. - Trigger or inspect a non-publishing release rehearsal, preferably a pre-release tag or workflow dry run.
- Confirm the installer path verifies
SHA256SUMSand does not require--no-verifyin published instructions. - File beads for any missing role, stale secret owner, failing workflow, or ambiguous branch-protection authority.
The tabletop outcome is pass only when every role is named in private escrow, the release workflow can be rehearsed without publishing a final release, and no unresolved Critical/High operations gap remains untracked.
- Triage within 24 hours via
bv --robot-plan+br ready --json, and confirm candidate IDs withbr show <id>before claiming. - If regression is in runtime: fix and cut patch release.
- If regression is in test harness: fix harness, re-run campaign.
- If regression is in extension: update exception list with justification.
- Assess severity (capability escape, sandbox bypass, data leak).
- Critical/High: fix within 48 hours, cut patch release.
- Medium/Low: fix in next scheduled release.
- Document in CHANGELOG.md and release notes.
- Compare against baseline in
budget_summary.json. - If budget exceeded by >20%: investigate and fix before release.
- If budget exceeded by <20%: document and adjust threshold if justified.
| Epic | Status | Goal |
|---|---|---|
| Conformance evidence (bd-k5q5.2) | In progress | 223 scenarios green or documented |
| Node/Bun compatibility (bd-k5q5.3) | Closed | 18+ Node modules shimmed |
| Capability policy (bd-k5q5.4) | Closed | Safe/balanced/permissive profiles |
| CI gates (bd-k5q5.5) | In progress | Regression prevention |
| Documentation (bd-k5q5.6) | In progress | Architecture + operator docs |
| Verification program (bd-k5q5.7) | In progress | Unit + E2E + diagnostics |
- All CI gates green on Linux/macOS/Windows.
- Extension conformance >= 90% with documented exceptions.
- Performance budgets met consistently over 30 days.
- Public documentation complete (compatibility matrix, playbook, governance).
- Security review of capability policies complete.
| Document | Path | Purpose |
|---|---|---|
| Release process | docs/releasing.md | Versioning, tagging, publishing |
| Testing policy | docs/testing-policy.md | Suite classification, enforcement |
| Compatibility matrix | docs/ext-compat.md | Node/Bun API support |
| Operator playbook | docs/conformance-operator-playbook.md | Running conformance tests |
| Troubleshooting | docs/extension-troubleshooting.md | Common failure patterns |
| Benchmarks | BENCHMARKS.md | Performance budgets |
| Architecture | docs/extension-architecture.md | Runtime design |
| Threat model | docs/extension-runtime-threat-model.md | Security analysis |
| Traceability matrix | docs/traceability_matrix.json | Requirement-to-test mapping |