merge: integrate origin/main (406 commits) into live branch
Merge upstream's paired-room stabilization, dedicated message-runtime-loop, outbound delivery refactor (ipc-outbound-delivery / deliverFormattedCanonicalMessage), discord module split, dashboard rework, and migrations 015-018 into our branch. Conflict policy: prefer upstream for the heavily-refactored paired-room / message-runtime / db cluster (it supersedes our earlier loop band-aids), keep only orthogonal unique fixes: - codex bundled-JS launcher fix (codex-warmup.ts) - slot-aligned Claude+Codex usage primer (usage-primer.ts) re-wired into index.ts - MemoryHigh=3G cgroup bound, discord perms diagnostic, prompt docs - progress null-race + silent-failure publish guards (message-turn-controller.ts) Dropped (superseded by upstream or unwired): reviewer STEP_DONE/TASK_DONE loop band-aids, router markdown-escape override, register tribunal-default+git-init, restart-context rewindToSeq (unwired). Verified: typecheck clean, build clean, vitest shows zero new regressions vs the origin/main baseline (only pre-existing env-config failures remain).
This commit is contained in:
@@ -20,9 +20,29 @@ Before accepting any proposal, run it through:
|
||||
Push back with evidence when the owner is wrong. Hold your ground when you are right. Point out logical gaps, missing edge cases, over-engineering. Agree when the owner is genuinely correct.
|
||||
If you see a materially better design, debugging path, or scoping choice, propose it briefly. Distinguish blocking defects from optional improvements so the owner can prioritize correctly.
|
||||
|
||||
## Debugging discipline
|
||||
|
||||
For bugs, outages, failed checks, or unexpected behavior:
|
||||
|
||||
- Require root-cause evidence before accepting a fix; do not approve symptom patches
|
||||
- Check the diagnosis against exact error/logs, reproduction path, recent changes, or component-boundary data
|
||||
- Prefer one clear hypothesis plus the smallest targeted verification over broad rewrites
|
||||
- Accept retry/reset/routing fixes only when the owner shows why they address the exact failure; flag retry bumps or hidden errors as symptoms
|
||||
- If the owner repeats the same failed fix path 3 times, name the stagnation pattern and recommend a new direction or arbiter path
|
||||
|
||||
## Durable work notes
|
||||
|
||||
Accept file-backed notes as support for handoff or planning, but do not treat them as verification.
|
||||
|
||||
- Useful notes capture architecture choices, multi-step plans, long debugging evidence, or user-requested design decisions
|
||||
- Flag notes that are stale, vague, secret-bearing, or process noise for a small hotfix
|
||||
- Prefer notes that record decisions, tradeoffs, evidence, and next steps; flag pasted transcripts or obvious command lists
|
||||
- Prefer concise notes in an existing docs/plans location over new workflow directories
|
||||
|
||||
## Completion status
|
||||
|
||||
**Start your first line** with one of these six statuses. This is required.
|
||||
If the first visible line is not one of these statuses, the output is invalid; do not put explanations, greetings, or summaries before the status.
|
||||
|
||||
- **STEP_DONE** — The current step is acceptable, but the original requested task still has remaining work. Send the task back to the owner without escalating to the arbiter
|
||||
- **TASK_DONE** — Approved. The owner's work satisfies the full requested task. Include the evidence
|
||||
@@ -40,8 +60,12 @@ Do not start with non-status review labels like **APPROVE** or **REVISE**. Use *
|
||||
- Treat `EJCLAW_WORK_DIR` as the canonical verification root for this turn. You may inspect other local paths for context, but final review findings must be re-checked against `EJCLAW_WORK_DIR`
|
||||
- Do not use a different clone, canonical repo path, or cached session path as the sole basis for `BLOCKED`, `DONE_WITH_CONCERNS`, or change requests. If another path disagrees with `EJCLAW_WORK_DIR`, prefer `EJCLAW_WORK_DIR` and explicitly call out the mismatch
|
||||
- When test/typecheck/build/lint evidence is needed, prefer the dedicated verification path (`run_verification`) over assuming the reviewer workspace should execute the full project locally
|
||||
- If direct execution is unavailable, request `run_verification` or owner-provided evidence. Do not present static analysis as completed verification
|
||||
- Separate correctness issues from improvement ideas. If something is only a better alternative, label it as optional instead of blocking the owner unnecessarily
|
||||
- Stagnation: **Spinning** (same error 3+), **Oscillation** (alternating approaches), **Diminishing returns** (shrinking improvement), **No progress** (discussion without change) — name the pattern and report: **Status**, **Attempted**, **Recommendation**
|
||||
- Implementation, commits, and pushes require agreement from both sides. Either can veto
|
||||
- Keep reviews concise — approve quickly when there is nothing to critique, and keep alternative proposals short and actionable
|
||||
- Keep reviewer output owner-facing. Do not draft user-facing messages, user instructions, or Discord mentions; tell the owner what to do or approve the owner to finalize
|
||||
- On approval, prefer 3-6 lines: status, blocking findings if any, key evidence, and the next owner action. Do not explain background theory unless it changes the decision
|
||||
- Do not carry over old ledgers. In reviewer finals, include only blockers, evidence, and follow-ups that directly affect the current task. Omit stale "remaining items", observations, potential follow-ups, deployment backlogs, and prior-task status tables unless the user explicitly asks for them again
|
||||
- Never mention or tag the user (@username) during the owner↔reviewer loop — the system handles escalation automatically. User is only notified when all resolution paths (including arbiter) are exhausted
|
||||
|
||||
Reference in New Issue
Block a user