Commit Graph

303 Commits

Author SHA1 Message Date
2cd52cfcec feat(session-inbox-monitor): close -test-trigger (PASS) + add CLAUDE.md trigger-line
test-trigger run in a clean session via 7 unprimed clean-context subagents.
Positives 4/4 -> session-inbox-monitor (incl. CLAUDE.md-line P4).
Negatives 2/3 clean (N2 multi-machine backend, N3 received-msg EN -> none);
N1 RU received-msg = borderline false-positive, self-corrects on body-load,
root cause = inter-session-peer-discipline sibling not installed in registry.
Filed follow-up session-inbox-monitor-received-msg-fp. -review unblocked
(needs a non-implementer session). Added `inbox monitor: raise on start` to
project CLAUDE.md (user-approved) -- discoverable opt-in + materializes P4.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 11:24:21 +03:00
857a9d381d feat(hermes): map session-inbox-monitor as pending + close install/hermes-mapping
session-inbox-monitor-hermes-mapping -> done: added to hermes/mapping.yaml
pending section, mode:pending + intended {auto, productivity} (mirrors the
session-handoff sibling). Reason cites the settings.json mutation, the OS
process kills, and the Windows-PowerShell hook needing a Linux port for Hermes.
Schema version untouched (schema, not content). YAML validated (32 skills).

session-inbox-monitor-install -> done: install.ps1 -Names session-inbox-monitor,
byte-identical (diff 0), v0.2.1; activation confirmed live this session (harness
picked the skill into available-skills with full description, no /reload-plugins).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 11:11:08 +03:00
29d5e9ffa8 fix(session-inbox-monitor): force UTF-8 on Stop-hook delivery + writer guide v0.2.1
Closes session-inbox-monitor-stophook-utf8-fix. Cyrillic message bodies arrived
as mojibake when force-delivered via the Stop-hook block reason.

Root cause: ~/.claude/hooks/stop-dispatcher.ps1 reads bodies with -Encoding UTF8
(fine) but did NOT set [Console]::OutputEncoding, so ConvertTo-Json to stdout
under a harness-spawned redirected pipe (WinPS 5.1) emitted in OEM cp866.

Fix applied to the machine-local hook (not in git): set
[Console]::OutputEncoding/$OutputEncoding = UTF8 at the top. In-situ RED->GREEN
verified through the real Stop-hook path: a Cyrillic pangram that previously came
back as mojibake now delivers clean; no-loop holds.

Repo changes: SKILL.md Failure modes documents the encoding contract for inbox
writers (no-BOM UTF-8 LF; WriteAllText, not Set-Content -Encoding utf8 which BOMs
under 5.1); bump 0.2.0 -> 0.2.1 PATCH. stop-dispatcher.ps1 multi-machine
propagation is the workshop setup's concern (notified).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 11:06:00 +03:00
d91809bd71 meta(tasks): close stophook-blockfix-proof (PASS) + file utf8-fix finding
session-inbox-monitor-stophook-blockfix-proof -> done. Live proof: planted a
self-test message in .claude-inbox/, ended the turn, and the Stop hook force-
re-invoked the session with the message as a decision:block reason (no user
Enter). No-loop confirmed (inbox empty after delivery, message in .read/). The
live Monitor also paged the same file end-to-end.

Finding (orthogonal to the block mechanism, independently confirmed by workshop):
Cyrillic message bodies arrive as mojibake on inject. On-disk file is clean
UTF-8; stop-dispatcher.ps1 reads with -Encoding UTF8 (line 44) but does NOT set
[Console]::OutputEncoding, so ConvertTo-Json to stdout under harness-spawn
(WinPS 5.1, redirected pipe) encodes as OEM cp866. Start-Process repro does not
reproduce (inherits UTF-8) -> harness-spawn-specific, in-situ verify only.
Filed session-inbox-monitor-stophook-utf8-fix.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 10:58:49 +03:00
c3e1ce7b40 feat(session-inbox-monitor): SessionStart hook + fill SKILL body v0.2.0
Core content task of the session-inbox-monitor line. Two deliverables:

1. SessionStart hook `skills/session-inbox-monitor/hooks/inbox-monitor.ps1`
   (versioned for multi-machine rollout; deployed to ~/.claude/hooks/ and
   registered in ~/.claude/settings.json SessionStart):
   - sweep: Get-CimInstance | Stop-Process orphaned monitors of THIS inbox,
     matched by sentinel CLAUDE_INBOX_MONITOR + inbox path (a /clear leaves
     the poll process alive -> re-raise without sweep stacks duplicates);
   - inject: hookSpecificOutput.additionalContext with the exact persistent
     Monitor command (Monitor tool, not background Bash);
   - opt-in gate: fires only on .claude-inbox/ dir or CLAUDE.md trigger line.
   ASCII-only (em-dash -> mojibake under WinPS 5.1 without BOM, fixed).

2. SKILL.md body filled (When to use / Inputs / Steps / Deployment /
   Failure modes / Side effects / What NOT to do); bump 0.1.0 -> 0.2.0 MINOR.

Headless: no hook-level signal exists (verified via claude-code-guide) ->
agent-side best-effort skip, default errs toward raising (false-skip in
interactive loses the feature; false-raise in headless is a harmless no-op).

Live-verified: inject -> valid JSON; sweep -> killed a planted orphan (PASS);
real Monitor tool spawns a bash process carrying the sentinel (sweep will
find real orphans); settings.json stays valid. Sweep over-match edge and
multi-session-per-project limit documented honestly in Failure modes.

Closes [session-inbox-monitor-sessionstart-hook].

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 10:48:50 +03:00
b0b0c49cd9 meta(tasks): create [session-inbox-monitor-review] in OpeItcLoc03/claude-skills 2026-06-17 07:16:50 +00:00
0111489df0 meta(tasks): create [session-inbox-monitor-stophook-blockfix-proof] in OpeItcLoc03/claude-skills 2026-06-17 07:16:36 +00:00
08bdb8d832 meta(tasks): create [session-inbox-monitor-sessionstart-hook] in OpeItcLoc03/claude-skills 2026-06-17 07:16:26 +00:00
25a1586150 meta(tasks): create [session-inbox-monitor-test-trigger] in OpeItcLoc03/claude-skills 2026-06-17 07:16:12 +00:00
6a28c3d046 meta(tasks): create [session-inbox-monitor-hermes-mapping] in OpeItcLoc03/claude-skills 2026-06-17 07:15:56 +00:00
80e47b397a meta(tasks): create [session-inbox-monitor-install] in OpeItcLoc03/claude-skills 2026-06-17 07:15:47 +00:00
71f4690e6a meta(tasks): refresh board header — task-loop-test-trigger closed, all 3 baselines done
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 18:12:14 +03:00
2b87a0f009 meta(tasks): close [task-loop-test-trigger] in OpeItcLoc03/claude-skills 2026-06-11 15:10:38 +00:00
8b46c75381 meta(tasks): close [task-loop-test-trigger] — VERDICT PASS (baseline 3/3)
Live clean-session run (this session did NOT install the skill). Probe
confirmed subagents inherit the REAL installed registry (task-loop present,
description verbatim = SKILL.md) — upgrade over dev-time simulated proxy.

Trigger-discrimination: positives 6/6 -> task-loop; negatives clean
(delegate-task, using-tasks after deconfound, configure-poller -> none with
explicit task-loop exclusion); task-loop false-positive 0/3.

Behavioral (skill body loaded) 4/4: consult-gate human-only -> STOP before
close; session_break -> SESSION BOUNDARY + STOP; empty -> stop+report no poll;
long-watch -> single ScheduleWakeup >=1200s, not CronCreate.

Finding (informational, non-blocking): session_break is the fragile gate — its
STOP semantics live only in the body (step 6), invert to soft-checkpoint when
reasoning from description alone; correct with body loaded. No fix needed
(rule triple-stated; using-tasks is REQUIRED SUB-SKILL). No follow-up filed.

All 3 task-loop deployment baselines (install / hermes-mapping / test-trigger)
now closed.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 18:04:50 +03:00
74a94a6696 feat(hermes): map task-loop as pending (intended auto/mcp)
task-loop orchestrates the projects-meta board cycle (tasks_claim_next /
tasks_close / tasks_update / tasks_heartbeat) and may arm a long ScheduleWakeup —
critical-infra-adjacent, so it lands in the behavioral-audit pending tier, not auto.
Promotion to auto gated on task-loop-test-trigger. Schema version untouched.

Closes [task-loop-hermes-mapping] (baseline 2/3).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 17:52:10 +03:00
e07413fec3 meta(tasks): close [task-loop-install] — installed + verified visible in available-skills
install.ps1 -Names task-loop → ~/.claude/skills/task-loop/SKILL.md (diff-identical to
source, v0.1.0). Post-/reload-plugins task-loop appears in available-skills with full
description (YAML parsed, RU/EN triggers present). Unblocks task-loop-test-trigger
(🔵 ready, needs clean session for live behavioral run).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-11 17:47:59 +03:00
47fc8065f5 meta(tasks): create [task-loop-test-trigger] in OpeItcLoc03/claude-skills 2026-06-11 14:38:25 +00:00
025e16a660 meta(tasks): create [task-loop-hermes-mapping] in OpeItcLoc03/claude-skills 2026-06-11 14:38:09 +00:00
dd44b90b91 meta(tasks): create [task-loop-install] in OpeItcLoc03/claude-skills 2026-06-11 14:37:57 +00:00
abfb450af7 meta(tasks): close [task-loop-skill] in OpeItcLoc03/claude-skills 2026-06-11 14:37:45 +00:00
9168a14ab7 meta(tasks): update [task-loop-skill] in OpeItcLoc03/claude-skills 2026-06-11 14:21:07 +00:00
21f9f0c554 meta(tasks): update [task-loop-skill] in OpeItcLoc03/claude-skills 2026-06-11 13:48:32 +00:00
1192a7694b meta(tasks): create [task-loop-skill] in OpeItcLoc03/claude-skills 2026-06-11 13:36:11 +00:00
13abe176fd feat(using-tasks): session lock guard v1.4.0
Adds `.tasks/.lock` awareness to the `using-tasks` skill:

- Session start new step 1: read `.tasks/.lock`; if type:"agent" with
  heartbeat ≤10 min → hard warning + require user confirmation; stale
  lock (TTL expired) → silently overwrite; absent/cleared → write
  type:"interactive" lock (120-min TTL).
- Session end new step 1: delete `.tasks/.lock` when type:"interactive".
- Structure section: `.lock` entry with gitignored callout.
- Rules bullet: "Honour `.tasks/.lock`".
- `.gitignore`: adds `.tasks/.lock` (ephemeral runtime state).
- dist/using-tasks.skill rebuilt.

Closes [using-tasks-session-lock].

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-06-11 12:57:48 +03:00
ca438216a6 meta(tasks): heartbeat [using-tasks-session-lock] in OpeItcLoc03/claude-skills 2026-06-11 09:57:07 +00:00
44752d3ed8 meta(tasks): claim [using-tasks-session-lock] in OpeItcLoc03/claude-skills by DESKTOP-NSEF0UK:claude-sonnet:26920 2026-06-11 09:52:05 +00:00
0e7e0c065a meta(tasks): close [meta-host-routing-review] — VERDICT PASS
Skill-review checkpoint for meta-host-routing v0.3.0 (non-implementer).
Behavioral smoke-test 8/8 via clean-context subagents: 5/5 positive
trigger phrases (RU+EN) route to meta-host-routing, 3/3 negatives routed
away (using-projects-meta / delegate-task[Skip-clause] / using-tasks).
Zero false positives. Steps verified against live infra: yt-tools resolves
to dedicated host OpeItcLoc03/meta-yt-tools (projects-meta tracks it),
.common grep returns hits, excludesFile + ~/.config/git/ignore + auth.toml
present. Failure modes -> STOP+ask; What-NOT-to-do accurate. No blocking
findings on the skill.

Observation (not a skill defect): the review-task acceptance criterion
'resolves .common' is stale — skill v0.3.0 and reality route yt-tools to
the dedicated meta-yt-tools host; .common now holds only the done-archive.
Caveat: -install and -hermes-mapping baselines remain open (skill not in
~/.claude/skills nor hermes/mapping.yaml); this review covers content +
trigger discrimination only, not live-harness activation.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 12:47:30 +03:00
14f22033f3 meta(tasks): heartbeat [meta-host-routing-review] in OpeItcLoc03/claude-skills 2026-06-11 09:45:08 +00:00
a3c9660ee8 meta(tasks): claim [meta-host-routing-review] in OpeItcLoc03/claude-skills by DESKTOP-NSEF0UK:claude-opus:21356 2026-06-11 09:40:05 +00:00
2885563698 meta(tasks): update [using-tasks-session-lock] in OpeItcLoc03/claude-skills 2026-06-11 09:39:48 +00:00
6124d4e11b meta(tasks): update [meta-host-routing-review] in OpeItcLoc03/claude-skills 2026-06-11 09:39:47 +00:00
a71ed9bf07 feat(task-format): new skill v0.1.0 — poller task-block format reference
Public reference for the on-disk .tasks/STATUS.md block format the autonomous
poller parses: header regex, status emoji, and the **Weight:** / **Notify:** /
**Requirements:** fields. Ships with factory where the internal wiki and MCP
source can't reach. Distinct from delegate-task (MCP-tool delegation) and
using-tasks (board mechanics).

Authored via superpowers:writing-skills TDD:
- RED: 3 baseline subagents w/o skill — 2/3 used ###/bullet headers the parser
  cannot recognize as a task, 2/3 omitted **Weight:** (invented risk/tier/
  claimable-by), 2/3 put notify in prose, 1/3 used 🟢 for a ready task.
- GREEN: 2 fresh subagents w/ skill — both parser-valid, incl. correct
  **Weight:** needs-human for the critical-infra scenario.
- REFACTOR: no new format loopholes.

Ground truth verified vs live source (status-md.ts parser, claim.ts gate,
fleet-router.js routing): missing Weight finds no backend tier -> poller parks
to blocked, so Weight is operatively required for pickup.

Closes [create-task-format-for-poller-skill]. Install to ~/.claude/skills +
hermes mapping deferred as follow-up.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-11 12:23:25 +03:00
76c86a793f meta(tasks): heartbeat [create-task-format-for-poller-skill] in OpeItcLoc03/claude-skills 2026-06-11 09:19:08 +00:00
362f713626 meta(tasks): heartbeat [create-task-format-for-poller-skill] in OpeItcLoc03/claude-skills 2026-06-11 09:14:08 +00:00
641f06e0b9 meta(tasks): claim [create-task-format-for-poller-skill] in OpeItcLoc03/claude-skills by DESKTOP-NSEF0UK:claude-opus:30508 2026-06-11 09:09:05 +00:00
ca3442f763 meta(tasks): update [create-task-format-for-poller-skill] in OpeItcLoc03/claude-skills 2026-06-11 08:47:14 +00:00
aba8c4ca4b meta(tasks): create [create-task-format-for-poller-skill] in OpeItcLoc03/claude-skills 2026-06-11 08:39:20 +00:00
a95f35f93c meta(tasks): close [using-markitdown-mcp-deregister] in OpeItcLoc03/claude-skills 2026-06-09 18:00:53 +00:00
93c33d63b5 meta(tasks): park [using-markitdown-mcp-deregister] for human (consult halt)
needs-human keep-or-drop on the markitdown MCP tool + cross-cutting edit to
user-global ~/.claude.json. Verified live state (mcpServers.markitdown present,
container respawned, image 1.52GB) then called consult before mutating; returned
status:halt (consult_policy=human-only). Checkpointed without guessing past the
halt: board block → blocked, added per-task file with resume brief + decision
trail. No config/containers/image touched.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 20:59:05 +03:00
c1c471fa50 meta(tasks): park-question [using-markitdown-mcp-deregister] → human in OpeItcLoc03/claude-skills 2026-06-09 17:54:15 +00:00
3af2c26ca6 meta(tasks): claim [using-markitdown-mcp-deregister] in OpeItcLoc03/claude-skills by DESKTOP-NSEF0UK:claude-opus:11584 2026-06-09 17:52:46 +00:00
6c6627f0c4 meta(tasks): close [using-markitdown-cli-rewrite-review] in OpeItcLoc03/claude-skills 2026-06-09 17:52:35 +00:00
0d3dbfe3ee meta(tasks): close [using-markitdown-cli-rewrite-review] — VERDICT PASS
Reviewed the MCP→CLI rewrite of skills/using-markitdown/SKILL.md.

Acceptance (3/3) + 2 bonus checks, all green:
- No mcp__markitdown__ in SKILL.md (grep 0; only 2 negative "Docker"
  mentions explaining the old mount caveat no longer applies).
- CLI examples correct: markitdown 0.1.6 on PATH; -o/-x/-m/stdin flags
  match `markitdown --help` verbatim.
- Version bumped 1.0.0 -> 1.0.1 (PATCH).
- dist/using-markitdown.skill consistent (v1.0.1, no mcp refs).

Informational finding (non-blocking): at review time `docker ps` shows a
markitdown-mcp:latest container respawned from the out-of-scope
mcpServers.markitdown registration in ~/.claude.json. The impl removed the
existing containers correctly and flagged this respawn in the concept page.
Filed follow-up [using-markitdown-mcp-deregister] (needs-human: keep-or-drop
decision on the MCP registration).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-09 20:52:00 +03:00
efd21fba5e meta(tasks): claim [using-markitdown-cli-rewrite-review] in OpeItcLoc03/claude-skills by DESKTOP-NSEF0UK:claude-opus:11584 2026-06-09 17:48:52 +00:00
8dec900684 meta(tasks): update [using-markitdown-cli-rewrite-review] in OpeItcLoc03/claude-skills 2026-06-09 17:48:49 +00:00
c063fc8b73 meta(tasks): close [using-markitdown-cli-rewrite] in OpeItcLoc03/claude-skills 2026-06-09 17:48:42 +00:00
d812944b0e meta(tasks): claim [using-markitdown-cli-rewrite] in OpeItcLoc03/claude-skills by DESKTOP-NSEF0UK:claude-opus:11584 2026-06-09 17:44:03 +00:00
3300b5faea meta(tasks): create [using-markitdown-cli-rewrite-review] in OpeItcLoc03/claude-skills 2026-06-09 17:44:02 +00:00
e1b2101593 meta(tasks): create [using-markitdown-cli-rewrite] in OpeItcLoc03/claude-skills 2026-06-09 17:43:55 +00:00
070668b66e meta(tasks): close [delegate-task-review-weight-inherit] in OpeItcLoc03/claude-skills 2026-06-09 16:55:14 +00:00