Per vitya's rule an agent may only read its own directory's inbox. The
first global-scan version (all ~/projects inboxes + PI_INBOX_ROOTS) was
scrapped same day; rewrote as session-scoped: watches only
<ctx.cwd>/.claude-inbox/, decoy test proves other inboxes untouched.
Pi (pi-coding-agent) sessions get inbox delivery via global extension
(.common/lib/pi-extensions/inbox-monitor.ts → ~/.pi/agent/extensions/).
Not cwd-scoped: any .claude-inbox/ message pages the current session with
project name in header. Headless = no delivery. SKILL.md v0.2.2→v0.3.0.
The first autonomous run blocked exit 1 because the service-spawned
claude bypassed the user proxy (xray :10808) and hit a geo-block.
Proxy env now injected into the runner service. Flip 🔵→⚪, drop the
stale Owner/Claim stamp so the poller re-claims and retries.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
The poller writes a heartbeat/claim side-channel into .tasks/claims/ on
every claim; it was NOT gitignored here, so `git status --porcelain`
returned `?? .tasks/claims/` and the workspace resolver skipped every
claim with "working tree dirty" — the poller could never run a task in
this repo. Mirrors .common/.gitignore.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
tasks_create emitted lowercase **weight:**/**notify:** body prose; the
later capital **Weight:** needs-claude coexisted with the stale
lowercase **weight:** needs-human, and the poller parsed needs-human
(case-insensitive, last wins) -> task skipped. Remove the lowercase
dupes; only **Weight:** needs-claude + **Notify:** remain. (This is
exactly the gap tracked by [tasks-create-emit-weight-notify-fields].)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Add L1 **Poller:** eligible marker; ensure every ready task except
setup-agents-task-runner-windows-fixes carries **Weight:** needs-human
so the armed poller claims only that one task (no churn).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Build was RED: 5 skills in skills/ were unmapped (meta-host-routing,
ralph-loop-execution, setup-agents-task-runner, task-format,
using-system-snapshot) — "unmapped entries" abort. Mapped all 5 as `pending`
(conservative placeholder, no auto-commitment; each keeps its own mode decision).
meta-host-routing mapping executes task meta-host-routing-hermes-mapping.
- inter-session-peer-discipline: pending -> auto (category meta). Gate
("non-implementer test-trigger + review") satisfied — both VERDICT PASS this
session; purely behavioral, no tool-side effects, no Windows-PS hook. Human-ratified.
- session-inbox-monitor: reason updated — behavioral gate CLEARED (test-trigger +
review PASS), STAYS pending on two independent tool-side blockers (Linux port of
the PS hook + settings.json/process-kill audit), not on behavioral verification.
- dist-hermes regenerated: build now GREEN (auto 14 / manual 2 / skip 9 / pending 13);
materialized dist-hermes/meta/inter-session-peer-discipline/; synced stale
using-markitdown / using-tasks copies (source had been bumped without a hermes rebuild).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Closes session-inbox-monitor-encoding-guard-followup (finding from -review
structural audit item E, CONCERN).
inbox-monitor.ps1 emitted ConvertTo-Json (incl. the interpolated inbox path)
to a redirected pipe under WinPS 5.1 without setting [Console]::OutputEncoding
— the same context that mojibaked stop-dispatcher. ASCII-safe today, but the
inbox path is user-data, so a non-ASCII path/content would mangle the inject.
- Add [Console]::OutputEncoding + $OutputEncoding = UTF8 after the $ProjectDir
gate (mirror of stop-dispatcher.ps1). Comment text kept pure ASCII.
- Regression under WinPS 5.1: parse 0 errors; ran hook against a Cyrillic-path
project, read raw stdout bytes as no-BOM UTF-8 -> JSON valid, Cyrillic path
round-trips intact.
- Re-deployed to ~/.claude/hooks/inbox-monitor.ps1, SHA256 byte-identical.
- SKILL.md Mojibake failure-mode extended; version 0.2.1 -> 0.2.2 (PATCH).
install/hermes/dist not rebuilt — PATCH needs only reload-plugins; the runtime
hook is deployed.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Self-contained checklists + sources for the three tracks that unblock together:
session-inbox-monitor-review (umbrella), inter-session-peer-discipline-test-trigger,
and -review. Includes the clean-context-subagent method, acceptance items, design
sources, and the resolved FP note.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Un-reds the hermes build (build fails on unmapped skills in skills/; this skill
landed in sources 2026-06-16 unmapped). Entry is mode:pending, intended auto/meta
— a purely behavioral governance skill (no tool-side effects) that should pass a
non-implementer test-trigger + review before auto-firing. Filed ⚪
inter-session-peer-discipline-test-trigger + 🔵 -review.
Zone confirmed claude-skills (skill lives in this repo). Human-ratified; workshop
coordinated as a peer proposal, not authority (per the skill itself). YAML validated
(33 skills, 9 pending). Schema version untouched.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>