ADRs 0009-0011 + edits to 0001/0003/0006/0007/0008 (operator review 2026-05-05) #30

Merged
pdurlej merged 1 commit from decisions/post-operator-review-2026-05-05 into decisions/initial-adr-migration 2026-05-05 07:59:12 +02:00
Collaborator

Stacked PR on top of #26. Captures operator's voice review of all 8 Phase A ADRs, 2026-05-05 ~04:30-05:30.

What this PR adds

Three new ADRs:

  • 0009 Three-bucket classification with mandatory product-language explanations (supersedes 0001). Drops manual_only, renames review_neededdecision_needed, mandates trade_offs field. Phase B issue #27 tracks implementation.
  • 0010 Mandatory non-author AI reviewer + branch protection on every PR (operator's process change). Branch protection on pdurlej/pyfallow/main already enabled via Forgejo Settings 2026-05-05. Escalated to platform: pdurlej/platform issue #75.
  • 0011 Adopt Forgejo-native CI pattern from parallel Codex thread's stash (partially supersedes 0003). Operator: "since Codex independently arrived at this pattern, use it." Sister branch feat/forgejo-native-ci-from-stash (forthcoming) will land the code.

Edits to existing ADRs (clarifying additions, original text preserved with operator-correction notes):

  • 0001 — status superseded by 0009
  • 0003 — status partially superseded by 0011
  • 0006 — corrected Whisper transcription (operator-canonical version) + new founding thesis ("AI z dyscypliną = signal, AI bez dyscypliny = szum, signal-vs-noise nie zmienia się w historii, zmieniają się narzędzia")
  • 0007 — bassist metaphor promoted to primary framing; AI-agent-vs-harness categorical distinction added
  • 0008 — window flipped from time-bounded (4-6 weeks) to evidence-bounded (no calendar end; sufficient log/run/token-spend count); cron infra dependency on rs2000 added (Forgejo issue #29)

How this PR depends on #26

Base: decisions/initial-adr-migration (PR #26 branch). This PR is stacked — needs #26 merged first. Once #26 merges to main, this PR's base auto-rebases to main and merges as second wave.

Both PRs are mergeable independently in terms of content (edits don't conflict; ADRs 0009-0011 don't reference content unique to this branch beyond what #26 introduces).

Mandatory non-author reviewer (ADR 0010 self-test)

This PR is the first PR governed by the new branch-protection rule (operator enabled it 2026-05-05 in Forgejo Settings). Authored by claude. Cannot merge without:

  • ≥1 approved review from a non-claude account (operator default = codex, glm, or escalation to operator's review)
  • Green CI matrix (CI / Python 3.11/3.12/3.13 (pull_request))
  • Up-to-date branch
  • Operator (pdurlej) clicking merge

Meta-validation that the new process works in practice.

Identity

Commit + PR authored as claude (claude@noreply.git.pdurlej.com) per pdurlej/platform/AGENTS.md § Identity-isolation. Operator (pdurlej) co-authored in commit trailer (decisions captured here are operator's; orchestrator only recorded).

— Claude Opus 4.7 (orchestrator), 2026-05-05 ~05:30

Stacked PR on top of #26. Captures operator's voice review of all 8 Phase A ADRs, 2026-05-05 ~04:30-05:30. ## What this PR adds **Three new ADRs:** - **0009** Three-bucket classification with mandatory product-language explanations (supersedes 0001). Drops `manual_only`, renames `review_needed` → `decision_needed`, mandates `trade_offs` field. Phase B issue #27 tracks implementation. - **0010** Mandatory non-author AI reviewer + branch protection on every PR (operator's process change). Branch protection on `pdurlej/pyfallow/main` already enabled via Forgejo Settings 2026-05-05. Escalated to platform: pdurlej/platform issue #75. - **0011** Adopt Forgejo-native CI pattern from parallel Codex thread's stash (partially supersedes 0003). Operator: "since Codex independently arrived at this pattern, use it." Sister branch `feat/forgejo-native-ci-from-stash` (forthcoming) will land the code. **Edits to existing ADRs** (clarifying additions, original text preserved with operator-correction notes): - 0001 — status `superseded by 0009` - 0003 — status `partially superseded by 0011` - 0006 — corrected Whisper transcription (operator-canonical version) + new founding thesis ("AI z dyscypliną = signal, AI bez dyscypliny = szum, signal-vs-noise nie zmienia się w historii, zmieniają się narzędzia") - 0007 — bassist metaphor promoted to primary framing; AI-agent-vs-harness categorical distinction added - 0008 — window flipped from time-bounded (4-6 weeks) to evidence-bounded (no calendar end; sufficient log/run/token-spend count); cron infra dependency on rs2000 added (Forgejo issue #29) ## How this PR depends on #26 Base: `decisions/initial-adr-migration` (PR #26 branch). This PR is **stacked** — needs #26 merged first. Once #26 merges to main, this PR's base auto-rebases to main and merges as second wave. Both PRs are mergeable independently in terms of content (edits don't conflict; ADRs 0009-0011 don't reference content unique to this branch beyond what #26 introduces). ## Mandatory non-author reviewer (ADR 0010 self-test) This PR is the **first PR governed by the new branch-protection rule** (operator enabled it 2026-05-05 in Forgejo Settings). Authored by `claude`. Cannot merge without: - ≥1 approved review from a non-`claude` account (operator default = `codex`, `glm`, or escalation to operator's review) - Green CI matrix (CI / Python 3.11/3.12/3.13 (pull_request)) - Up-to-date branch - Operator (`pdurlej`) clicking merge Meta-validation that the new process works in practice. ## Identity Commit + PR authored as `claude` (claude@noreply.git.pdurlej.com) per `pdurlej/platform/AGENTS.md` § Identity-isolation. Operator (`pdurlej`) co-authored in commit trailer (decisions captured here are operator's; orchestrator only recorded). — Claude Opus 4.7 (orchestrator), 2026-05-05 ~05:30
Add ADRs 0009-0011 + edits to 0001/0003/0006/0007/0008 (operator review 2026-05-05)
All checks were successful
CI / Python 3.11 (pull_request) Successful in 50s
CI / Python 3.12 (pull_request) Successful in 52s
CI / Python 3.13 (pull_request) Successful in 51s
CI / Python 3.11 (push) Successful in 46s
CI / Python 3.12 (push) Successful in 51s
CI / Python 3.13 (push) Successful in 49s
3cdd65bc95
Operator (`pdurlej`) reviewed all 8 Phase A ADRs via voice on 2026-05-05.
Three new decisions and several refinements emerged. This commit captures
all of them in one atomic batch.

NEW ADRs:

- 0009 Three-bucket classification with mandatory product-language
  explanations. Supersedes 0001. Drops `manual_only` (asks non-tech
  operator to flip a coin — antithetical to mission). Renames
  `review_needed` to `decision_needed` (product language, not
  programmer language). Mandates `trade_offs` field on every
  decision_needed/blocking finding so operator can decide without
  reading code. Phase B issue #27 tracks implementation.

- 0010 Mandatory non-author AI reviewer + branch protection on every
  PR. Operator decision after Phase A retro surfaced incentive
  misalignment: Codex saw 9-of-13 MCP tests failing on Python 3.11
  in Phase A and just fixed locally without escalation. New rule:
  every PR (every size class) needs >=1 approved review from an
  agent different from author. AI agent OK as reviewer (default
  rotation: claude reviews codex, codex reviews claude). Branch
  protection on `pdurlej/pyfallow/main` enabled by operator via
  Forgejo Settings 2026-05-05. Escalated to platform as proposal:
  pdurlej/platform#75

- 0011 Adopt Forgejo-native CI pattern from parallel Codex thread's
  stash. Partially supersedes 0003 (workflow-shape part; runner-image
  fix from 0003 stays accepted). Operator: "since Codex independently
  arrived at this pattern, we should use it." Convergent design from
  two agents without coordination = strong signal. Forgejo-native
  action URLs (data.forgejo.org), ubuntu-22.04 explicit pin,
  persist-credentials false, dedicated scripts/ci/run_python_ci.py
  Python runner. Sister branch `feat/forgejo-native-ci-from-stash`
  will land the actual code (forthcoming).

EDITS to existing ADRs (clarifying additions, not retroactive
intent changes — original text preserved with operator-correction
notes):

- 0001: status flipped to "superseded by 0009" with note explaining
  Phase A namespace-unification stays; the next migration is in 0009.

- 0003: status flipped to "partially superseded by 0011" with note
  clarifying that the runner-image fix stays correct; only the
  workflow shape is upgraded by 0011.

- 0006: original Whisper-transcribed quote was garbled ("nie chcemy
  juz chcemy"); operator corrected to "a my chcemy! nie AI-slopowo,
  czyli myslac AI-em, uzywajac madrzej AI-a". Plus founding thesis
  added: "AI z dyscyplina = zajebista sprawa. AI bez dyscypliny =
  szum. Signal vs noise nie zmienia sie w historii, zmieniaja sie
  narzedzia." Plus window length clarified (operator: "kilka
  miesiecy" — combined with 0008's evidence-bounded refinement,
  window is no longer time-bounded).

- 0007: bassist metaphor (musical) promoted to primary framing;
  "deterministic gate" stays as technical description. Plus
  AI-agent-vs-harness categorical distinction added: pyfallow,
  Forgejo Actions, pytest, ruff, mypy, platform.exe = harness;
  Iskra, Codex, Claude/Opus, GLM = agents. Pyfallow is bassist =
  harness = disciplined background member that lets vocalist/lead
  shine.

- 0008: window definition flipped from time-bounded (4-6 weeks)
  to evidence-bounded (sufficient log/run/token-spend count, no
  calendar end). Plus infrastructure dependency: cron job on rs2000
  (Forgejo issue #29) aggregates pyfallow CI artifacts weekly and
  posts to dogfood-evidence-inbox issue. Without aggregator, manual
  evidence collection is friction = decision blind = mission failure.

decisions/README.md index updated to reflect new statuses and 3
new ADRs.

This commit's PR is the first PR governed by the new mandatory-
non-author-reviewer rule (ADR 0010) — meta-validation that the
process works in practice.

Co-Authored-By: pdurlej <pdurlej@noreply.git.pdurlej.com>
pdurlej merged commit 1cdc196768 into decisions/initial-adr-migration 2026-05-05 07:59:12 +02:00
Sign in to join this conversation.
No description provided.