docs(decisions): D28 closed-loop controller + dependency-offloading; self-usable milestone #158

Merged
pdurlej merged 1 commit from claude/decisions-d28-closed-loop into main 2026-06-23 23:15:25 +02:00
Collaborator

Summary

Records the 2026-06-23 operator/Codex strategy as D28 and makes D27's "self-usable" trigger concrete.

D28 — gate → closed-loop trust controller. Patchwarden stops asking only "may this PR merge?" and adds "was my last decision good?", calibrating from the answer. Built as three loops:

  • L1 pre-merge e2e/sandbox/web proof (#150/#151 as evidence-kinds),
  • L2 post-merge analytics (shipped: post_merge_feedback.v1, #147/#156),
  • L3 agent feedback contract (repair_instruction.v1 — to build; filed alongside this PR).

Plus the dependency-offloading principle + hard boundary: lean on external tools (Sandcastle, Steel, a future Opik) for execution, but retain the verdict — stdlib core re-evaluates evidence fail-closed/head-bound/sanitized; producer-unavailable → blocked; L3 repair is policy-derived not model-authored; analytics→trust stays operator-gated (#134).

self-usable-milestone.md turns D27's vague trigger into a capability checklist: 3 loops closed + merge frontier crossed safely on platform/openclaw. That checklist is now both the discovery trigger (D27) and the build north star.

Changes

  • docs/decisions.md — D28 section + summary-table row 28.
  • docs/product/self-usable-milestone.md (new) — operational definition + checklist mapping to the 3 loops, the merge frontier, and PW-G rows.
  • docs/STATUS.md — wedge line + entry points point to the milestone; decision-log range → D1–D28.

Does NOT change

  • Safety floor intact: D20/D24/D26 all bind; the closed loop runs entirely inside it (every loop emits plans/evidence/intent, never side effects). Merge actuation still build-time-banned.
  • Pure docs; no src/SSoT change, no drift-guard regen.

Verification

  • unittest discover -s tests — 656 green; git diff --check clean; disjoint files.

Authored by claude per the operator green-light ("D28 + issue L3 + self-usable milestone → rób").

## Summary Records the 2026-06-23 operator/Codex strategy as **D28** and makes D27's "self-usable" trigger concrete. **D28 — gate → closed-loop trust controller.** Patchwarden stops asking only "may this PR merge?" and adds "**was my last decision good?**", calibrating from the answer. Built as three loops: - **L1** pre-merge e2e/sandbox/web proof (#150/#151 as evidence-kinds), - **L2** post-merge analytics (shipped: `post_merge_feedback.v1`, #147/#156), - **L3** agent feedback contract (`repair_instruction.v1` — to build; filed alongside this PR). Plus the **dependency-offloading principle + hard boundary**: lean on external tools (Sandcastle, Steel, a future Opik) for execution, but **retain the verdict** — stdlib core re-evaluates evidence fail-closed/head-bound/sanitized; producer-unavailable → `blocked`; L3 repair is policy-derived not model-authored; analytics→trust stays operator-gated (#134). **self-usable-milestone.md** turns D27's vague trigger into a capability checklist: **3 loops closed + merge frontier crossed safely** on `platform`/`openclaw`. That checklist is now both the discovery trigger (D27) and the build north star. ## Changes - `docs/decisions.md` — D28 section + summary-table row 28. - `docs/product/self-usable-milestone.md` (new) — operational definition + checklist mapping to the 3 loops, the merge frontier, and PW-G rows. - `docs/STATUS.md` — wedge line + entry points point to the milestone; decision-log range → D1–D28. ## Does NOT change - Safety floor intact: D20/D24/D26 all bind; the closed loop runs entirely inside it (every loop emits plans/evidence/intent, never side effects). Merge actuation still build-time-banned. - Pure docs; no src/SSoT change, no drift-guard regen. ## Verification - `unittest discover -s tests` — 656 green; `git diff --check` clean; disjoint files. Authored by claude per the operator green-light ("D28 + issue L3 + self-usable milestone → rób").
docs(decisions): record D28 closed-loop controller + dependency-offloading; add self-usable milestone
All checks were successful
fallow-py / fallow-py-advisory (pull_request) Successful in 16s
7646a9c8b5
D28 reframes Patchwarden from a one-shot pre-merge gate to a closed-loop
trust controller ("may I merge?" + "was my last decision good?") via three
loops (L1 pre-merge e2e/sandbox, L2 post-merge analytics, L3 agent feedback/
repair), plus the dependency-offloading principle with its hard boundary
(offload execution, retain verdict; producer-unavailable -> fail-closed;
L3 repair policy-derived not model-authored; analytics->trust operator-gated).
Runs entirely inside the D20/D24/D26 floor.

self-usable-milestone.md makes D27's discovery trigger concrete: the
capability checklist for the unattended autonomous merge loop on the
operator's own repos = 3 loops closed + merge frontier crossed safely.

- decisions.md: D28 section + summary-table row 28
- docs/product/self-usable-milestone.md (new): the operational definition
- STATUS.md: wedge line + entry points point to the milestone; D1-D28
pdurlej deleted branch claude/decisions-d28-closed-loop 2026-06-23 23:15:25 +02:00
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!158
No description provided.