Proposal: globalne zasady governance — non-author AI reviewer mandatory + branch protection na każdym mikroprojekcie #75
Labels
No labels
W6d-automerge-calibration
agent/claude-code
agent/codex
agent/hermes
agent/iskra
agent/ollama
agent/patchwarden
automerge-candidate
class/security-sensitive
cutover-gate
dependency/blocked
dependency/blocks-others
dependency/cross-repo
dependency/needs-confirmation
domain:agents
domain:ci
domain:docs
domain:forgejo
domain:infra
domain:memory
domain:runtime
domain:signal
domain:ux
flow/architecture
flow/blocked
flow/deployed
flow/done
flow/implementation
flow/intake
flow/maintained
flow/observed
flow/ready
flow/refining
flow/retired
flow/review
iterating
judge/codex-candidate
judge/hermes-candidate
judge/low-confidence
judge/needs-refinement
judge/operator-needed
judge/p0
judge/p1
judge/p2
judge/p3
judge/park
judge/patchwarden-candidate
judge/stale-priority
kind/adr
kind/bug
kind/chore
kind/feature
kind/infra
kind/ops
kind/refactor
kind/research
large-impact
merge/auto
merge/manual
merge/manual-dependency-conflict
merge/manual-failing-tests
merge/manual-merge-conflict
merge/manual-missing-review
merge/manual-operator-preference
merge/manual-red-zone
merge/manual-security-sensitive
merge/manual-unclear-scope
merge/manual-unknown
meta
mode:operator-only
mode:patchwarden-iskra-approved
mode:safe-auto
needs-operator-decision
needs-triage
not-ready
observed/erroring
observed/needs-followup
observed/pending
observed/retire-candidate
observed/unused
observed/used
operator-emotional
owner-attention
phase/02
phase/03
priority:p0
priority:p1
priority:p2
priority:p3
proposed
ready-for-agent
ready-for-operator
recovery
review:claude-reviewed
review:codex-reviewed
review:dziadek-reviewed
review:needs-human
risk/exposure
risk/process
risk/product
risk/runtime
safety:external-write
safety:no-prod-mutation
safety:prod-impact
safety:secret-touch
size/large
size/medium
size/small
size/tiny
size/unknown
source/adr
source/agent-generated
source/manual
source/operator-chat
source/voice-note
status:blocked
status:codex-ready
status:merged:pending-evidence
status:needs-evidence
status:operator-needed
status:parked
tier/full
tier/lite
tier/stacked
tier:0-platform-substrate
tier:1-iskra-value-layer
tier:2-tools-products-modules
type:bug
type:chore
type:docs
type:feat
type:policy
type:research
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
pdurlej/platform#75
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Proposal
Adopt globally (as platform-level governance, applicable to all microprojects:
pyfallow,hermes-agency,iskra-openclaw, ...) the contributor pattern that operator (pdurlej) confirmed during pyfallow Phase A close-out (chat 2026-05-04 → 2026-05-05):mainenforces mechanically — no merge without ≥1 approved review + green CI. Even repo admins are subject (no silent bypass; break-glass is "disable rule, push, re-enable" with audit trail).pdurlej) is the merger, not a reviewer-of-record. Operator's role = final approval and merge button. Review work is delegated to AI agents per-policy.AGENTS.mdis the canonical contributor contract for every microproject. Microproject-local docs may add (never subtract).Why now
Operator's voice 2026-05-05 (translated, condensed):
Quote in original Polish recorded in pyfallow
decisions/(forthcoming ADR 0010, see references below).Concrete change to existing platform docs
AGENTS.md§ "Canary 3+3 review (ADR 0001)" currently scopes mandatory canary to PRs touchingmodules/,schema/,prompts/,tests/,control-plane/,decisions/. Small PRs outside those paths can merge with 1 tech + 1 product reviewer per ADR 0001 Rule 1a.Proposed amendment: mandatory non-author reviewer on every PR (Small/Medium/Large/Batch), regardless of touched paths. Canary 3+3 stays mandatory for governance-critical paths (no change there); the universal floor adds: even pure-docs / single-file changes need a non-author reviewer to approve before merge.
Light-PR pattern (1 reviewer, single iteration) is acceptable for Small PRs — but not zero reviewers.
Concrete change to microproject convention
Each microproject's repo (
pyfallow,hermes-agency,iskra-openclaw, ...):Branch protection rule on
main:main(whitelist empty, i.e., nobody direct-pushes; PR-only)Identity-isolation: per-actor PAT in BW (item
git.pdurlej.com (<actor>), custom fieldPAT). Already documented inAGENTS.md§ Identity-isolation.Microproject's contributor doc (e.g.,
pdurlej/pyfallow/.codex/WORKFLOW.md) references platformAGENTS.mdas canonical, adds project-specific extras only.Pyfallow as first integration
pdurlej/pyfallow/mainper operator action 2026-05-05 (this PR's predecessor — operator clicked Settings → Branches in Forgejo UI).CI / Python 3.11 (pull_request),CI / Python 3.12 (pull_request),CI / Python 3.13 (pull_request).pdurlej/pyfallow/decisions/) records the decision with full context.Suggested implementation in this issue's resolution
ready-for-agent.AGENTS.md(and possiblyPLATFORM_CONSTITUTION.mdif reviewer rule is constitutional). Full Canary Context Pack per existing canary 3+3 process. The amendment PR itself goes through the new universal-floor reviewer rule — meta-validation that the rule works.pdurlej/hermes-agency,pdurlej/iskra-openclaw, etc., asking operator to enable branch protection there with same shape as pyfallow. Each microproject gets its own branch-protection-enable issue.Owner Action Board
Needs owner now
AGENTS.md(as amendment to § Canary 3+3) or inPLATFORM_CONSTITUTION.md(as a new operator promise). Default:AGENTS.md— it's contributor-facing operational rule, not constitutional identity.Default path unless owner objects
AGENTS.mdwith full Canary Context Pack. The PR itself triggers full 3+3 canary (since it touches governance docs). Codex or glm reviews; operator merges.Agent follow-up, no owner attention now
Blocked / waiting on precondition
Model / emotional signal note (≤280 chars)
Yellow→green. Operator's "non-tech needs deterministic governance" thesis grew from pyfallow Phase A retrospective into a global pattern. This issue captures the moment. Risk if not formalized in platform: each microproject reinvents wheel; identity-isolation drifts; AI agents skip review because no mechanism enforces.
References
decisions/0010-mandatory-non-author-reviewer.md— forthcoming ADR with full contextdecisions/0007-pyfallow-as-deterministic-gate.md— articulates pyfallow as "deterministic code gate" counterpart toplatform.exe's deterministic infra gate; same identity discipline propagated to other microprojects via this proposalAGENTS.md§ Canary 3+3 review — current scoping (this proposal amends)decisions/0001-canary-mandatory-pm-cadence.md— establishes canary 3+3 (this proposal extends scope)— Claude Opus 4.7 (orchestrator), 2026-05-05
Operator decision: ACCEPT (2026-05-06)
Operator-confirmed via chat 2026-05-06: accept the proposal in principle.
Adopted globally (platform-level governance, applicable to all microprojects:
pyfallow,hermes-agency,iskra-openclaw,platform, future microprojects):mainenforces mechanically — no merge without ≥1 approval from a non-author identity.Execution gate
Branch protection enforcement is gated on Issue #49 setup tasks (specifically: branch protection configuration on
mainper ADR 0002 setup task #3). Until #49 setup completes, this is policy in effect but not yet mechanically enforced. Soft enforcement: orchestrator/PR-opener follows it; reviewers cite it.Follow-up needed
pdurlej/platform/mainto require ≥1 approval from non-authorpdurlej/pyfallow,pdurlej/hermes-agency,pdurlej/iskra-openclawmains (separate operator UI tasks per repo)AGENTS.mdto reflect this as canonical (currently mentions canary 3+3 only)This issue stays open until all four mains have branch protection configured. Closing prematurely would lose the cross-repo follow-up tracking.
Label updated:
accepted(or use existing label if present).M10 disposition: moved to
10 - Improvements.What this is: global governance / non-author AI reviewer proposal.
Why parked here: This is broad governance policy; keep it as future improvement rather than letting it bloat M06 current execution work.
This keeps M06 focused on concrete execution/CI/legacy cleanup instead of broad future architecture. Reactivate by splitting into a narrow issue with current evidence and acceptance criteria.
Closing as accepted/superseded by ADR-0019 and the current governance stack.
Accepted superset now lives across:
docs/ci/ai-review-governance.md: counted AI review contract;Any remaining implementation should be tracked as concrete M06 tasks, such as required checks / branch protection activation, not as this broad proposal issue.