docs(reports): STATE_OF_PLATFORM 2026-05-03 — first strategic stop #42
No reviewers
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!42
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "claude/state-of-platform-2026-05-03"
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?
Canary status: missing — fire canary after operator first-read; this is a doc-only PR but per ADR 0001 Rule 1,
state/reports/may be borderline (operator decides if it's documentation-carveout or governance-edit category).Summary
First strategic-stop deliverable per ADR 0001 Rule 4. Operator-facing report covering platform state, value delivered, deviations from plan, open loops, strategic decisions you owe, roadmap proposal through end-of-original-plan, and risks accepted today.
Length: 331 lines, ~21k chars, ~10 min read.
Why now
ADR 0001 (PR #41 ready for merge) defines the strategic-stop cadence (Rule 4: every N=3 cycles, orchestrator delivers product overview). This document is the inaugural instance — author's commitment that the cadence rule isn't theatrical.
Operator request 2026-05-03: "STATE_OF_PLATFORM (to co obiecałeś 🍵) + plan na kolejne wave'y do końca planu." This delivers both.
Contents (10 sections)
Test plan
state/cycle-counter.mdboundary marker resets to new origin/main HEADOwner executive note
Kierunek akceptuję. Nie chodzi o mniej metawarstwy — chodzi o lepszy interfejs dla metawarstwy. Strategic stop może być długi, bo jest logiem systemu, procesu, decyzji i ryzyk. Ale na samej górze musi mieć bardzo jasny panel: co mam kliknąć, co mam zdecydować, co idzie defaultem, co jest follow-upem dla agentów, a co jest zablokowane.
Ten dokument jest dobry jako strategic stop #1, ale format wymaga natychmiastowego utwardzenia. Najważniejsze poprawki: Owner Action Board, krótki model/emotional signal note, PR size/review modes, Night Review, issue follow-ups, prostsza risk taxonomy, effort estimates zamiast calendar-first estimates, Honcho Wave 4 przed Forgejo Wave 5, restore-test jako pre-cutover gate.
⸻
Required amendments
Every future State of Platform must start with an explicit owner-facing board.
Use exactly these four buckets:
Owner Action Board
Needs owner now
Items that require Piotr’s attention before work can proceed.
Default path unless owner objects
Items where the operator will proceed with a stated default unless Piotr objects.
Agent follow-up, no owner attention now
Items that should become tasks/issues and can be handled by agents.
Blocked / waiting on precondition
Items that cannot move until a concrete condition changes.
Inside each bucket, use simple verbs, not a large action taxonomy:
The owner-facing question is simple: does this need Piotr’s attention now, yes or no?
⸻
This is not a long process retrospective. It is a short meta-signal from the agent/orchestrator.
Format:
Model / emotional signal note
≤280 chars. Surface one unprompted qualitative signal about the product, process, agent behavior, or hidden risk that may affect owner decisions.
This is important because the owner is working with models as collaborators. The signal should expose things the owner may not see directly: model uncertainty, producer-mode risk, emotional/product tension, hidden ambiguity, or “this feels structurally wrong” warnings.
Example:
Model / emotional signal note:
Yellow. The platform work is progressing, but the main current risk is hidden complexity being renamed as process. Owner board + issue follow-ups should reduce that load.
Keep the long reflective process notes out of the main body unless they are materially decision-relevant.
⸻
Use this classification explicitly.
Small PR:
Medium PR:
Large PR:
Batch:
Important rule:
PR sharding must not be used to bypass review.
Small PRs may use a lighter review path, but accumulated small changes still require batch sanity checking.
⸻
Use this review policy:
Small PR:
Medium PR:
Large PR:
Batch:
⸻
Use an event-driven nightly batch review.
Night Review:
This is not a replacement for PR-level review. It is a guardrail against many small PRs creating a large unreviewed change.
Suggested output:
Night Review status:
⸻
Reviewer context must state from the beginning that the cap is hard.
Canary iteration cap:
Allowed terminal actions:
split_pr is a one-shot escape hatch, not an infinite loop. If the split descendants still fail after their own capped review, the path must move to rewrite or defer_to_issue, not another chain of splits.
⸻
Medium and large PRs must include a context pack.
Required fields:
Canary Context Pack
Product story
What are we trying to make true for the owner/user, and why?
What changed
Concrete summary of the change.
Why it changed
Reason this change exists now.
Files touched
List of relevant files.
Relevant context
ADRs, module docs, subsystem docs, related manifests.
Runtime evidence
Docker/compose/routing/log/inspect evidence if relevant.
Known constraints
What the reviewer must not assume.
Explicit out-of-scope
What this PR intentionally does not solve.
Requested decision
What review outcome is being requested.
Merge blockers
What would block merge.
Small PRs should use a shortened form, but they still need at least:
This matters because reviewers should reason product-first and owner-first, not only diff-first.
⸻
Reviewers should not be trapped in a tiny diff if the diff is insufficient.
Default context:
Escalation path:
The goal is enough context to review correctly without flooding the model.
⸻
approve_with_evidence_gap is a legal review state, but it must be visible.
Rule:
If runtime evidence is relevant but absent, reviewer may not silently approve.
They must mark the evidence gap explicitly.
Merge policy:
A PR with approve_with_evidence_gap may only proceed if the operator/owner explicitly accepts that gap, or if the gap is moved into a tracked issue with clear consequences.
No hidden “approved but actually unverified” states.
⸻
Every non-immediate follow-up with owner-visible consequences should become a Forgejo issue/task by default unless explicitly discarded.
Default:
Since Forgejo Issues may not yet be fully ready, the first follow-up should be:
TASK: Verify/setup Forgejo Issues as the source of truth for follow-ups.
Until that works, use a temporary repo-local issue log so follow-ups do not live only inside strategic stop documents.
⸻
Use four main risk classes only:
risk/runtime
risk/exposure
risk/product
risk/process
Definitions:
Runtime risk:
The platform may not run, recover, validate, or behave reproducibly.
Exposure risk:
Something may be incorrectly public, private, tailnet-only, authenticated, or routed.
Product risk:
We are unsure whether this work still has owner/user value.
Process risk:
The workflow, model review, orchestration, or decision system may produce bad outcomes.
Optional tags:
owner-attention
cutover-gate
recovery
operator-emotional
phase/02
phase/03
Examples:
smoke.sh digest bug -> risk/runtime
public vs tailnet drift -> risk/exposure
mail infra 60% done -> risk/product
canary context gap -> risk/process
restore-test -> risk/runtime + cutover-gate + recovery
Honcho pgvector restore -> risk/runtime + recovery + operator-emotional
Mail infra should currently be classified as:
risk/product
owner-attention
status: product ambiguity / owner decision needed
⸻
Calendar estimates are secondary because owner availability is the bottleneck. Estimate in terms of owner attention, prompts, clicks, agent runs, canary passes, and expected outputs.
Use this format:
Effort estimate
Owner attention:
Agent work:
Output:
Optional calendar note:
Calendar time depends on owner availability and agent queue depth.
Strategic direction:
Optimize for merge-ready PRs per owner attention unit.
Prefer long, high-quality master prompts that minimize owner interaction.
⸻
Current document creates confusion around Honcho Wave 4 and Forgejo Wave 5.
Default owner decision:
Honcho Wave 4 executes before Forgejo Wave 5.
Forgejo may not jump ahead unless explicitly reordered by owner.
However, issue/task tracking is needed now. Therefore:
⸻
Restore-test is not an immediate RS2000 deployment action because RS2000 still runs legacy services and final cutover is not happening now.
Correct classification:
Restore-test:
Do not list it as “critical” and then omit it from the near-term plan without this explanation.
⸻
Create a follow-up issue/task for an agent-facing repo guide.
Suggested file:
AGENTS.md
or:
docs/AGENT_RUNBOOK.md
It should explain:
This should reduce low-quality review iterations caused by missing context.
⸻
Specific document edits requested
Please update the current State of Platform with these concrete changes:
⸻
Stance
This is a mixed owner response:
Direction: approved.
ADR 0001 direction: not blocked.
Current State of Platform format: needs structural amendments before becoming the standard.
Immediate priority: make the owner-facing interface sharp enough that Piotr knows what to click, decide, ignore, or delegate.
The goal is not less meta. The goal is operational meta: explicit defaults, low owner ambiguity, tracked follow-ups, bounded review loops, and better master prompts that reduce Piotr as the bottleneck.
Meta note to Claude / Pan Herbata
This feedback is not a request for less meta-work. It is a request for better operational meta-work.
Piotr is not asking you to hide complexity. He is asking you to turn complexity into a usable owner interface: clear defaults, explicit asks, bounded review loops, tracked follow-ups, and fewer ambiguous moments where the owner has to reconstruct what to do next.
The main bottleneck is not agent output volume. The bottleneck is owner attention: prompts Piotr must write, context he must reload, decisions he must disambiguate, and clicks he must safely make as a non-technical owner. Optimize for merge-ready progress per owner interaction.
Treat the Owner Action Board as the primary UI. Treat Forgejo Issues/tasks as the memory layer for follow-ups. Treat Night Review as a guardrail against accumulated small-change drift, not as another ceremony.
The Model / emotional signal note is not therapy and not self-justification. It is a compressed hidden-signal channel: what does the model/orchestrator sense about product, process, risk, or ambiguity that Piotr may not see from the artifact list alone?
When unsure, prefer:
Do not leave important work as prose-only open loops. Do not make Piotr infer what needs his attention. Do not let “more structure” become a substitute for clearer action.
Success metric: less owner ambiguity, more autonomous high-quality progress.
v2 amended (commit
424f3f2, authored asclaudeper identity-isolation fix).All 15 spec items integrated:
Plus identity-isolation gap fixed: this commit and forward authored as
claude(40-char PAT from BW custom field, git config in worktree). Forgejo MCP still uses operator PAT for PR-create API — documented as TASK in §10.Ready for re-review. Canary status: missing — fire when ready.
Length: 413 lines. Read time: Owner Action Board ≤2 min, full body ≤12 min.
v2 amended (commit
424f3f2, authored as claude per identity-isolation fix).All 15 spec items integrated: Owner Action Board top, Model signal note 266 chars, PR size classes, Night Review, hard 3-iter cap with 6 terminal actions, Canary Context Pack, reviewer context escalation, evidence gaps explicit, Forgejo Issues TASK, 4-class risk taxonomy + tags, effort estimates per attention-unit, Wave 4 before Wave 5, restore-test reclassified pre-cutover gate, AGENTS.md TASK.
Plus identity-isolation gap fixed: commits now authored as claude (40-char PAT from BW custom field, git config in worktree). Forgejo MCP still uses operator PAT for PR-create API — documented as TASK in §10.
Ready for re-review. Canary status: missing — fire when ready.
Length: 413 lines. Read time: Owner Action Board ≤2 min, full body ≤12 min.
Amendment iter 2 (commit
039b5cd) per Oracle review 2026-05-04. Authored asclaude.6 amendments per Oracle: Model signal note compressed (379→274 chars, ≤280 verified); Owner Action Board "Needs owner now" discipline (CHOOSE-with-default items moved to Default path); empty smoke-all txt removed; "Phase 02 catalog completion" → "Phase 02 pivot tranche — waves 4-9 (~25 of 85)"; "independent quality voices" → "diverse model-based review voices, independent in role/perspective not evidence base, runtime evidence mandatory"; restore-test default: "create/schedule local restore rehearsal issue within 7 days" (no immediate RS2000 action implied).
Ready for operator review. Per ADR 0001 hard 3-iter cap: this is iter 2 of 3. If canary re-fired and finds new issues, iter 3 forces terminal action choice per ADR 0002 Rule 2.