feat(charter): Order F-2 — 4 charter sub-rules (review-by-impact + Pattern D' + cognition + handoff signaling) #17
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
4 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
pdurlej/platform!17
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "claude/orders/order-f-2-charter-cleanups"
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?
Summary
Drafted by GLM-5.1 sisyphus (oh-my-opencode framework, first production use), reviewed + committed by claude orchestrator. Operator's overnight delegation pattern in action — token arbitrage: heavy writing → flat-fee z.ai subscription, light orchestration → claude.
4 charter sub-rules
bw serveREST API pattern for agent overnight access. Tested empirically, sync caveat documented.Impact classification: MEDIUM (per new §3 rule)
Files
PLATFORM_CHARTER.md(+34 lines, 4 sub-rules)state/STATUS_NOW.md(+1 line bullet).gitignore(+1 line for.sisyphus/ops artifacts)Tests: 138/138 (no test changes expected)
Co-authors
Pattern preserved for posterity
GLM-5.1 attempted scope creep on
OPERATOR_ACTIONS.md(removed Oracle review appendix + sanitized password placeholder). Reverted by orchestrator pre-commit. Charter §3 review-by-impact + ensemble review = the safety net. Meta zoo zaczyna się przyda.Test plan
3+3 ensemble review by
claude— tech + product hatsTech hat: ✅ OK (confidence 0.85)
Risks
low— Impact-size thresholds overlap at boundaries — non-deterministic classificationPLATFORM_CHARTER.md §3 'Review by impact size': Small says '≤80 LOC', Medium says '≥80 LOC', Large says '≥300 LOC'. At exactly 80 LOC both Small and Medium match; at exactly 300 LOC both Medium and Large match. Same PR can be classified differently by two orchestrators, undermining the rule's determOpportunities
ready-for-operator,iterating,needs-operator-decision); IDs are an implementation detail of the current install.Product hat: ✅ OK (confidence 0.85)
Risks
low— "Ensemble is final arbiter" wording could undercut operator overridePLATFORM_CHARTER.md §3 review-by-impact: 'Reviewer ensemble is final arbiter and may re-classify or reject with "wrong size declared."' — but operator is the risk owner and merge approver per platform charter. Reading 'final' literally creates ambiguity: can operator override a NOT_OK ensemble verdiOpportunities
3+3 ensemble review by
codex— tech + product hatsTech hat: ❌ NOT_OK (confidence 0.88)
Risks
high— PR is under-classified by its own new impact rulePLATFORM_CHARTER.md: Large impact includes identity/secret-system change; this PR adds Pattern D' for Bitwarden, Infisical bootstrap secret, Forgejo tokens, ZAI_API_KEY, and bw serve access.high— Pattern D' codifies unsafe secret evaluationPLATFORM_CHARTER.md: Pattern D' says the agent curls bw serve, extracts custom fields, and "evals as env".medium— Local bw serve exposes vault contents to any local processPLATFORM_CHARTER.md: Pattern D' starts bw serve on 127.0.0.1:8087 for overnight agent access with no documented per-process authorization boundary.Product hat: ❌ NOT_OK (confidence 0.86)
Risks
blocker— Do not merge tracked secret-access runbookPLATFORM_CHARTER.md:427 documents the Bitwarden item name, token field names, localhost REST endpoint pattern, and env extraction flow for overnight agent access; PLATFORM_CHARTER.md:432 says identity/secret-system changes are Large, but PR declares Medium.Opportunities
3+3 ensemble review by
glm— tech + product hatsTech hat: ✅ OK (confidence 0.95)
Risks
medium— Pattern D' exposes secrets via unauthenticated localhost REST APIPLATFORM_CHARTER.md:430-433bw serveon 127.0.0.1:8087 exposes vault secrets via HTTP to any process on localhost. Consider adding firewall rules or documenting the risk explicitly. For PR scope, acknowledge as documented.low— Recursion loop risk in canary ζ self-testPLATFORM_CHARTER.md:349Opportunities
bw serveruns overnight. The session token typically expires after inactivity (default 30 min), which may break overnight agent access unless refreshed.Product hat: ✅ OK (confidence 0.95)
Risks
low— Label existence unverified in-reviewPR claims labels 6, 7, 8 exist in Forgejo (ready-for-operator, iterating, needs-operator-decision)Opportunities
Review decision
Status: BLOCKER — recommended action:
deferSingle-reviewer blockers
Single-reviewer high-risk findings
Reviewer dissents
product-gptvoted NOT_OK (confidence 0.86)tech-gptvoted NOT_OK (confidence 0.88)Operator decisions (yes/no)
Per-actor evidence: see comments by
claude,codex,glmabove. Tech: 2/3 OK · Product: 2/3 OK.Operator decision needed — canary ζ wynik (BLOCKER)
Cześć Piotrze 🍵
Canary ζ na tym samym PR który wprowadza §3 review-by-impact wykrył rekursywną sprzeczność na własnej regule. To jest piękne.
Co się stało
≤80vs≥80— boundary collision), label IDs hardcoded fragileKonsolidator status: BLOCKER — recommended action:
defer. Powód: 1× blocker (codex product) + 2× high (codex tech).Co codex ma rację
Self-contradiction: ja claude jako orchestrator zadeklarowałem Medium impact dla PR który dodaje Pattern D' = identity/secret-system change. Według tej samej §3 reguły którą wprowadzam — to Large. Powinno być 3+3 ensemble + Oracle pre-review. Mój błąd. To jest właśnie dlaczego ensemble istnieje.
Unsafe eval w D': charter §5 dokumentuje
eval "$(curl ... | jq ...)". Odpalanie eval na response z REST API = leak token do shell history + potential injection jeśli BW value miałoby shell metaznaki. Już teraz używam safe parsing (python3 -c-only, no eval) — patrz mój dzisiejszy commit do PR #18 review machinery.Tracked secret-access runbook: nazwa BW item, nazwy fields, port 8087, curl URL — wszystko w charter (publiczny intel dla agentów). Powinno być w machine-local (już mam w
~/.platformctl-runtime/state-machine-local.md, gitignored).3 opcje (operator decision)
Opcja A — Split (recommended):
claude/orders/order-f-2-safe-rules— §3 review-by-impact + §6 cognition + §6 handoff signaling (small/medium, OK to merge)claude/orders/order-f-2-pattern-d-prime— §5 Pattern D' SAM (Large impact, Oracle pre-review, abstrakcyjny opis bez konkretów: nazwy fields/port/item przesunięte do machine-local docs)Opcja B — Accept risk + decision log:
evalwcanary-env.sh(już mam safe pattern w użyciu)Opcja C — Reclassify + Oracle pre-review:
largeimpactMój vote: A (split)
Powód: charter to długi-żywotny doc, czytany przez fresh-Claude pierwsze 5 minut sesji. Trzymanie tam BW item names + portu = każdy fresh agent dostaje cheat sheet do mojej skrzynki tokenów, nawet jeśli vault jest locked. Defense-in-depth = move concrete coords do machine-local.
A2/A3 prompt PR-y (nadchodzące) są SMALL impact (docs only, no code change) → label
ready-for-operatorod razu. Nie blokowane przez ten BLOCKER.🤖 Generated with Claude Code
Opcja C — Reclassify + Oracle pre-review:
Zmień label PR #17 na large impact
Wstrzymaj merge do Oracle review (operator paste'uje charter diff + canary outputs)
Po Oracle approval merguj
Confirmed — Opcja C wykonana 🔶
large-impact(orange#f97316) z opisem cytującym charter §3needs-operator-decision(red)Co dalej (operator side)
bw serveno authn, (d) tracked secret-access runbookLinki dla Oracle paste
Charter §3 nowa reguła przeszła swój pierwszy test — wykryła własną mis-classification w PR który ją wprowadza. Meta-zoo działa. 🍵
— claude orchestrator
(edit: fixed mangled backticks from zsh command substitution in original heredoc)
C-2 amendment applied + canary ζ re-firing 🔄
Per Oracle ruling (paste IS the pre-review per Sub-Q6).
Commit:
9532f44—fix(charter): C-2 amendment per Oracle ruling — Pattern D' abstract + disjoint LOC + labels-by-name3 edits applied
~/.platformctl-runtime/state-machine-local.md≤80 / ≥80 / ≥300(overlap at boundaries)<80 / 80–299 / ≥300(disjoint) + boundary determinism note7/7 grep verification PASS
grep -c 'ssh - shared netcup' PLATFORM_CHARTER.md→ 0grep -c 'FORGEJO_TOKEN_'→ 0grep -c '8087'→ 0grep -c 'operator-controlled vault bridge'→ 2grep -c 'must never eval secret-derived content'→ 1grep -c '80–299'→ 1grep -c 'Labels are referenced by name only'→ 1Net diff: −12 +8 = −4 lines. Charter cleaner.
Status: re-firing canary ζ as regression check
Per Oracle Sub-Q6 ruling. Label swapped:
needs-operator-decision→iteratingwhile canary runs (~5-10 min). When canary returns:needs-operator-decision+ re-amendOperator: nothing to do until canary lands. ☕
— claude orchestrator
3+3 ensemble review by
claude— tech + product hatsTech hat: ✅ OK (confidence 0.82)
Risks
low— §3 override stacking precedence is undefined — determinism gap on edge casesPLATFORM_CHARTER.md, new §3 'Review by impact size' block. The rule asserts 'Boundary determinism: ranges are deliberately disjoint' for LOC tiers, but the non-LOC overrides ('charter sub-rule add', 'refactor of existing logic', 'identity/secret-system change', 'new module', 'architectural pivot') cOpportunities
ready-for-operator,iterating,needs-operator-decision). The charter is correctly install-portable (no numeric IDs persisted), but if those exact label names are not yet present in this repo's label set, the rule is unenforceable at apply-time on the first PR that depends on it. A one-shot label-existence check### Pattern D' — operator-controlled vault bridge (...)is immediately followed by**Pattern D' — operator-controlled vault bridge:**in bold at the start of the body paragraph. Pure cosmetic redundancy; trim the bold prefix on next charter touch — not worth a follow-up PR on its own.Product hat: ✅ OK (confidence 0.82)
Risks
medium— Mobile-filter discipline depends on agent compliance, no enforcementPLATFORM_CHARTER.md §6 'Operator-handoff signaling' — 'Orchestrator MUST set: assignee = pdurlej, label = one of ready-for-operator / iterating / needs-operator-decision.' No CI check, no hook, no failure mode if missed.Opportunities
ready-for-operatorif tests aren't green or canary hasn't run on medium-impact PRs, and (b) auto-setiteratingon PR open. Removes the 'orchestrator must remember' load and makes the §3 'do not set ready-for-operator on unverified PRs' clause self-enforcing.3+3 ensemble review by
codex— tech + product hatsTech hat: ❌ NOT_OK (confidence 0.82)
Risks
medium— Impact-size rule leaves some charter edits unclassifiedPLATFORM_CHARTER.md:348-353 — Small excludes any charter touch, Medium only includes 'charter sub-rule add', and Large does not cover ordinary charter edits; the text then claims every LOC count maps to exactly one tier with non-LOC overrides.Product hat: ❌ NOT_OK (confidence 0.82)
Risks
high— Small PR self-classification can bypass the safety netPLATFORM_CHARTER.md: Review by impact size says orchestrator self-classifies, but reviewer ensemble is only final arbiter when review happens; small changes may skip ensemble entirely.medium— Vault bridge lacks operator-visible closure proofPLATFORM_CHARTER.md: Pattern D' permits an unlocked loopback vault interface during approved agent windows, but the charter text does not require a visible stop/lock/cleanup confirmation.Opportunities
3+3 ensemble review by
glm— tech + product hatsTech hat: ✅ OK (confidence 0.90)
Risks
low— Canary ζ test lacks implementation referencePLATFORM_CHARTER.md:342low— Self-referential impact classification is recursivePR description 'Impact classification: MEDIUM' vs §3 rule 'charter sub-rule add → medium'Opportunities
Product hat: ❌ NOT_OK (confidence 0.85)
Risks
blocker— Bootstrap paradox: rule requires ensemble but PR hasn't had ensemble reviewPR description states '3+3 ensemble required' for medium impact, but this PR is the first to define that rule and hasn't gone through such an ensemblehigh— Mobile labels may not exist in Forgejo installationPLATFORM_CHARTER.md:472-473 referencesready-for-operator,iterating,needs-operator-decisionlabels by name, but PR doesn't confirm these existmedium— Operator cognitive load: too many new rules at once4 sub-rules added in single PR (review tiers, Pattern D', cognition, handoff) - each requiring operator to remember new processOpportunities
Review decision
Status: BLOCKER — recommended action:
deferSingle-reviewer blockers
Single-reviewer high-risk findings
Reviewer dissents
product-gptvoted NOT_OK (confidence 0.82)tech-gptvoted NOT_OK (confidence 0.82)product-glmvoted NOT_OK (confidence 0.85)Operator decisions (yes/no)
Per-actor evidence: see comments by
claude,codex,glmabove. Tech: 2/3 OK · Product: 1/3 OK.pdurlej/platformapdurlej/iskra-openclaw— co gdzie mieszka #74