chore(v0): add dev extras and fail-closed docs #22

Merged
pdurlej merged 1 commit from codex/patchwarden-dev-extras-fail-closed-docs into main 2026-05-27 11:54:36 +02:00
Collaborator

Canary status: missing — Patchwarden repo does not yet have platform canary wiring; rely on local tests for this small v0 hygiene PR.

Canary Context Pack

Product story

Patchwarden should be installable and testable by agents without relying on undeclared extras, and its finding resolver should state its fail-closed behavior plainly.

What changed

  • Added test and dev optional dependencies with pytest>=8.0.
  • Added a metadata test that locks those extras in pyproject.toml.
  • Documented that resolve-findings treats a missing --state-file as fail-closed: findings default to open, high/blocker findings hold, and unknown finding types are manual_only.

Why it changed

Dziadek/DeepSeek review correctly pointed out that extras were missing and that resolver state behavior should be explicit before Patchwarden grows more E2E machinery.

Files touched

  • README.md
  • pyproject.toml
  • tests/test_project_metadata.py

Runtime evidence

No runtime mutation. Repo-only Patchwarden change.

Known constraints

This intentionally does not add webhook mode, Forgejo API client, LLM integration, or policy DSL.

Explicit out-of-scope

  • Service/webhook runner
  • Automatic PR comment posting
  • Policy bundle parser
  • Reviewer model execution

Requested decision

Merge this as a small v0 hygiene fix.

Merge blockers

  • Extras do not parse/install.
  • Test suite fails.
  • Documentation contradicts resolver behavior.

Spec sources read

  • pyproject.toml — package metadata and extras.
  • README.md — public operator-facing status/docs.
  • src/patchwarden/resolve_findings.py — actual fail-closed behavior.
  • tests/test_resolve_findings.py — resolver behavior coverage.

Tests

  • PYTHONPATH=src python3 -m pytest -q20 passed
  • git diff --check origin/main...HEAD → clean
  • python3 -m pip install -e '.[test]' --dry-run → resolves patchwarden and pytest>=8.0
Canary status: missing — Patchwarden repo does not yet have platform canary wiring; rely on local tests for this small v0 hygiene PR. ## Canary Context Pack ### Product story Patchwarden should be installable and testable by agents without relying on undeclared extras, and its finding resolver should state its fail-closed behavior plainly. ### What changed - Added `test` and `dev` optional dependencies with `pytest>=8.0`. - Added a metadata test that locks those extras in `pyproject.toml`. - Documented that `resolve-findings` treats a missing `--state-file` as fail-closed: findings default to `open`, high/blocker findings hold, and unknown finding types are `manual_only`. ### Why it changed Dziadek/DeepSeek review correctly pointed out that extras were missing and that resolver state behavior should be explicit before Patchwarden grows more E2E machinery. ### Files touched - `README.md` - `pyproject.toml` - `tests/test_project_metadata.py` ### Runtime evidence No runtime mutation. Repo-only Patchwarden change. ### Known constraints This intentionally does not add webhook mode, Forgejo API client, LLM integration, or policy DSL. ### Explicit out-of-scope - Service/webhook runner - Automatic PR comment posting - Policy bundle parser - Reviewer model execution ### Requested decision Merge this as a small v0 hygiene fix. ### Merge blockers - Extras do not parse/install. - Test suite fails. - Documentation contradicts resolver behavior. ## Spec sources read - `pyproject.toml` — package metadata and extras. - `README.md` — public operator-facing status/docs. - `src/patchwarden/resolve_findings.py` — actual fail-closed behavior. - `tests/test_resolve_findings.py` — resolver behavior coverage. ## Tests - `PYTHONPATH=src python3 -m pytest -q` → `20 passed` - `git diff --check origin/main...HEAD` → clean - `python3 -m pip install -e '.[test]' --dry-run` → resolves `patchwarden` and `pytest>=8.0`
Sign in to join this conversation.
No reviewers
No labels
agent/claude-code
agent/codex
agent/gemini
agent/hermes
agent/iskra
agent/ollama
agent/patchwarden
area:business-model
area:competitive
area:discovery
area:forgejo
area:metrics
area:product-strategy
area:v0-core
cagan-grade-approved
client:platform
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
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
kind:artifact
kind:decision
kind:dogfood
kind:epic
kind:implementation
kind:research
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
mode:operator-only
mode:patchwarden-iskra-approved
mode:safe-auto
observed/erroring
observed/needs-followup
observed/pending
observed/retire-candidate
observed/unused
observed/used
priority:p0
priority:p1
priority:p2
priority:p3
ready-for-agent
review:claude-reviewed
review:codex-reviewed
review:dziadek-reviewed
review:needs-human
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:blocked-on-discovery
status:cagan-grade-review-pending
status:codex-ready
status:merged:pending-evidence
status:needs-evidence
status:needs-operator-decision
status:operator-needed
status:parked
tier:0-anchor
tier:0-platform-substrate
tier:1-core
tier:1-iskra-value-layer
tier:2-supporting
tier:2-tools-products-modules
type:bug
type:chore
type:docs
type:feat
type:policy
type:research
wave:1-foundation
wave:2-positioning
wave:3-validation
wave:4-economics
wave:5-operating
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
pdurlej/patchwarden!22
No description provided.