B13: Drop manual_only from classification namespace + add mandatory explainability #27
Labels
No labels
area:ci
area:docs
area:engineering
area:framework-fp
area:test-coverage
dogfood:fn
dogfood:fp
dogfood:friction
dogfood:tp
phase:b
phase:c
severity:critical
severity:high
severity:low
severity:medium
source:deepseek-v4-pro
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
pdurlej/fallow-py#27
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?
Ticket B13 (post-operator-review, 2026-05-05)
Operator decision (chat 2026-05-05, recorded as ADR 0009 in forthcoming sister PR to
decisions/): dropmanual_onlyfrom classification namespace; renamereview_neededtodecision_needed; add mandatory explainability fordecision_neededandblockingfindings.Why
Quoting operator:
Pyfallow's mission is deterministic governance for non-technical operator. Asking that operator to make decisions on findings that pyfallow itself doesn't classify is asking the operator to flip a coin — antithetical to the mission.
Scope
src/pyfallow/classify.py:auto_safe/decision_needed/blockingreview_needed→decision_neededeverywhere (core, MCP, tests, schemas, JSON output formats, agent-fix-plan output)manual_onlyfindings: each rule that previously routed tomanual_onlyeither (a) now routes todecision_neededwith explanation, or (b) is dropped from the analyzer entirely if it's not a real finding category.Finding: everydecision_neededandblockingfinding must havetrade_offs: list[str](or similar) that explains options the operator can take. Schema-enforced (Pydantic).manual_only.0.3.0a2. Bump to0.3.0a3(or higher if accumulated with other Phase B work).Phase context
Phase B execution is gated on dogfood evidence (per ADR 0008 + ADR 0009). This ticket is high priority because operator's strategic decision specifically calls it out — but execution waits until evidence accumulates that the new namespace is needed (other Phase B items might surface different concerns first).
Reference