186 Commits
Author SHA1 Message Date
ryaneggzandClaude Opus 4.7 1e6ab78b81 feat: US-004 — /wiki-lint skill (health checks + atomic README regen)
Wave 3 of /delegate execution.

/wiki-lint (.claude/skills/wiki-lint/SKILL.md, 525 lines):
- Argument interface: [--dry-run]; argument-hint set
- Default regenerates wiki/README.md atomically (tmp file +
  validate non-empty + grep for exact header + atomic rename;
  on failure exits non-zero and leaves original intact)
- --dry-run prints proposed changes without writing
- Five distinct check types (NEVER conflated):
  1. Stale-90d (updated > 90 days)
  2. Deprecated (confidence: deprecated) — REPORTS only, never SETS
  3. Orphan (zero inbound [[slug]] refs, two-pass)
  4. Broken outbound link (separate from orphans)
  5. Contradiction detection (stub — descoped to follow-up)
- Uses the canonical frontmatter extraction command from
  context/rules/wiki.md § 6, byte-identical to /wiki-query (US-003)
- Daily log entry per Memory Improvement Protocol

Refs #350. Wave 4 (US-005 — AGENTS.md registration) is the final
dependency-unblocked story.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 01:21:23 +00:00
ryaneggzandClaude Opus 4.7 92c879749d feat: US-002 + US-003 — /wiki-ingest + /wiki-query skills
Wave 2 of /delegate execution; both skills land together.

/wiki-ingest (.claude/skills/wiki-ingest/SKILL.md, 295 lines):
- Argument interface: <url|path> [--slug <override>] | --from-draft
  <slug> [--allow-stale]; argument-hint set
- URL ingest WebFetches and writes wiki/raw/<yyyy-mm-dd>-<slug>.md;
  path ingest mirrors a copy; both mkdir -p wiki/raw/ first
- --from-draft globs memory/*/wiki-drafts/<slug>.md, sorts by ISO
  date in parent dir name (not mtime), excludes .skip files, errors
  STALE if > 7d unless --allow-stale
- Slug derivation, body-merge, and frontmatter schema all defer to
  context/rules/wiki.md (§§ 3, 7, 2 respectively)
- Daily log entry per Memory Improvement Protocol
- Orchestrator-only writes (sub-agents draft to memory/<today>/
  wiki-drafts/<slug>.md and orchestrator promotes via --from-draft)

/wiki-query (.claude/skills/wiki-query/SKILL.md, 299 lines):
- Argument interface: <topic>; multi-word OR semantics
- Frontmatter-only grep using context/rules/wiki.md § 6 canonical
  awk extraction; matches title/slug/tags only (NOT body)
- Empty result prints No wiki entries matched <topic> and exits 0
- Sub-cap: <3 reads all; >=3 reads top 3 by updated: descending;
  cap hardcoded in v1
- Reads individual files directly (does not route via README index)
- Daily log entry per Memory Improvement Protocol

Refs #350. Wave 2 of /delegate execution. Wave 3 (US-004 /wiki-lint)
is the next dependency-unblocked story.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 01:16:19 +00:00
ryaneggz 8b2b9bd685 Merge remote-tracking branch 'origin/development' into skill/337-reflect-self-improvement
# Conflicts:
#	.mifune/skills.lock
#	AGENTS.md
#	CHANGELOG.md
2026-05-22 06:31:53 +00:00
Ryan Eggleston fc297b91ea Merge pull request #340 from ryaneggz/task/339-context-audit-resync
FROM task/339-context-audit-resync TO development
2026-05-22 00:29:57 -06:00
ryaneggzandClaude Opus 4.7 c83e1a00d7 task: re-sync context-audit to portable upstream (mifunedev/skills#6)
Strip top-level argument-hint frontmatter (portability), repin skills.lock
to merged master (commit f95011fe, checksum 02dd6324), and add the
previously-missing LICENSE for folder parity with upstream.

Closes #339

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 06:27:14 +00:00
ryaneggzandClaude Opus 4.7 3d2eef7c2f skill: make /reflect portable + pin to mifunedev/skills PR #5
Strip top-level argument-hint frontmatter (forbidden by skills-ref@0.1.5
portability policy; --dry-run documented in body). Harness copy now
byte-identical to the upstream contribution. Fix skills.lock checksum to
the registry folder-algorithm value (9be176e0); note references upstream
PR mifunedev/skills#5, commit backfilled on merge.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 06:19:52 +00:00
ryaneggzandClaude Opus 4.7 aaf55426dc skill: add /reflect self-improvement skill
Deliberate whole-session memory pass operationalizing the Memory
Improvement Protocol (context/rules/memory.md). Scans current conversation
for durable patterns, applies qualify filter, classifies by tier, proposes
MEMORY.md/IDENTITY.md additions for confirmation before writing; always
appends a log entry. Manual trigger, current-session scope,
propose-then-confirm. Authored via skill-builder agent for
github:mifunedev/skills (lock entry pending upstream contribution).

Closes #337

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 06:00:17 +00:00
ryaneggzandClaude Opus 4.7 68e4d6673e skill: scope /caveman-compress to memory + scratch only
Eval found no safe high-benefit target in-repo: docs/published prose
intentional, archives ignored by default, auto-loaded context belongs to
/context-audit. Add explicit scope check — refuse docs/**, archives,
context/**, .claude/** ; allow memory/** + untracked scratch + explicit
override. Refresh skills.lock checksum.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 05:44:31 +00:00
ryaneggzandClaude Opus 4.7 f65add41bf skill: add /caveman token-compression skill + subcommands
Vendored adaptation of JuliusBrussee/caveman (MIT). Adds /caveman output
mode (lite/full/ultra/wenyan) plus /caveman-commit, /caveman-review,
/caveman-compress, /caveman-stats. Preserves code, API names, error
strings, security warnings, and irreversible-action confirmations
verbatim. Authored to harness skill conventions; upstream curl|bash
installer intentionally not run. Pinned in skills.lock as manual entries.

Closes #335

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 05:32:50 +00:00
ryaneggzandClaude Sonnet 4.6 5fc7a63dd4 skill: add /context-audit with Tier-1 scorecard and Tier-2 ablation harness
Closes #333

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22 04:33:28 +00:00
ryaneggz 3c99ac89f8 task: sync all 15 skills to mifunedev/skills commit c559c100
- Add interview and render-html to .mifune/skills.lock now that
  mifunedev/skills PR #3 has merged; all 15 skills are upstream-tracked
- Sync render-html/SKILL.md from master (portable path, no hard-coded
  /home/sandbox/harness prefix); restore argument-hint locally
- Add LICENSE files for interview and render-html (Mifune Dev copyright)
- Update all 15 skill checksums and commit SHA in skills.lock
- Update .mifune/README.md and CHANGELOG.md to reflect full coverage
2026-05-22 04:00:10 +00:00
ryaneggz 081852cb3b fix: correct skill LICENSE copyright to Mifune Dev (mifune.dev)
Syncs with mifunedev/skills PR #3 which fixed the same files upstream.
Also notes interview/render-html upstream contribution in .mifune/README.md.
2026-05-22 03:51:38 +00:00
ryaneggzandClaude Sonnet 4.6 996906c4c2 task: migrate 13 skills to originate from mifunedev/skills
Syncs .claude/skills/ for 13 skills against github.com/mifunedev/skills
commit b2cca806 (registry 2026.5.17). Adds .mifune/skills.lock to pin
commit SHA and per-skill checksums for provenance tracking.

- 13 LICENSE files added (MIT, from remote)
- release/SKILL.md: upstream fix — PREV_BRANCH capture moved to step 4
- .mifune/skills.lock: new, tracks 13 skills with commit + checksum
- .mifune/README.md: directory anchor + update workflow instructions
- interview and render-html remain local-only (not in registry)

Closes #327

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22 03:24:20 +00:00
ryaneggz 5a58544d17 Add branch to status line 2026-05-21 02:33:40 +00:00
ryaneggz e85fbf2e4a Update settings, and adds few memories 2026-05-21 01:17:06 +00:00
ryaneggzandClaude Opus 4.7 f122a939fb skill: add /interview adaptive pre-work clarifier
Picks 2–4 task-specific questions via AskUserQuestion, echoes a
2–3 sentence scope brief, then proceeds. Skips trivial tasks with
an announcement. Serves as the in-tree reference pattern for
AskUserQuestion-based elicitation in future skills.

Tracks #316.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-19 02:09:14 +00:00
ryaneggz f2b1774695 skill: add /render-html for bespoke HTML synthesis artifacts
Closes #314.

Adds an on-request skill that takes an artifact (file or in-context
material) plus a one-line intent and produces a single self-contained
HTML file optimized for the moment a human reads it once to make a
decision. Writes to memory/<UTC-date>/<slug>.html (gitignored via the
existing memory/[0-9]*/ rule).

Encodes Thariq's HTML-over-Markdown thesis as a three-condition gate:
synthesis artifact + would-be-unreadable-as-Markdown + no downstream
pipeline consumer. Refuses to render source/pipeline input (PRDs,
briefings, rules, skills, commit messages, log.md itself). No
templates — each invocation produces bespoke HTML, picking widgets
per artifact (severity table, dependency SVG, collapsible evidence).

- .claude/skills/render-html/SKILL.md (new)
- AGENTS.md — Skills table row
- memory/README.md — recognized co-resident of log.md
- CHANGELOG.md — Unreleased entry
2026-05-18 23:54:43 +00:00
ryaneggzandClaude Opus 4.7 befbd94a0b fix: keep release CHANGELOG promotion synced to source branch (#297)
Two coupled changes:

1. .claude/skills/release/SKILL.md (Step 3 → 4):
   Capture PREV_BRANCH before the promotion commit and push it back
   to origin BEFORE cutting release/$VERSION. Without this, the
   promotion commit lived only on release/* (and reached main via
   the release-branch merge), but development never received it,
   so the next round of work re-carried already-released entries
   under [Unreleased] and the next /release double-promoted them.

2. CHANGELOG.md:
   Repair the existing drift caused by (1). Three prior releases
   (2026.5.14, 2026.5.15, 2026.5.16) had their promoted versioned
   sections on main but not on development. Reset CHANGELOG.md to
   main's versioned history, then re-seed [Unreleased] with only
   genuinely post-2026.5.16 entries: #309 fork-friendly-install,
   the /worktrees skill, and this fix itself.

Closes #297.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-18 01:05:35 +00:00
ryaneggz 9d84b1fab3 Add worktrees skill 2026-05-17 01:55:56 +00:00
ryaneggzandClaude Opus 4.7 d14bc330eb task: cloudflared/SSH/host-overlay doc cleanup (keep postgres)
Apply PR #284's doc updates selectively — cloudflared, SSH overlays,
host-bind overlays, SANDBOX_PASSWORD, and openssh-server references
removed everywhere. Postgres mentions preserved; postgres compose
overlay restored.

Doc edits:
- AGENTS.md / CLAUDE.md (symlink): drop /cloudflared-tunnel skill row,
  rewrite "Exposing apps" to mention generic tunnels/proxies.
- README.md, docs/installation.md: drop SANDBOX_PASSWORD, cloudflared,
  openssh-server, host-overlay references.
- docs/quickstart.md: keep postgres link, drop cloudflare link, mention
  postgres overlay is opt-in.
- docs/integrations/github.md: drop SSH-overlay section.
- docs/integrations/cloudflare.md: deleted.
- docs/agents/{deepagents,opencode}.md: drop host-overlay sections.
- context/rules/git.md: drop "Advanced opt-ins" SSH section.
- Makefile: drop _check-jq / _check-config gates; jq invocation is now
  defensive (only runs when jq + config.json both present).
- apps/docs/src/pages/index.tsx: keep postgres in "composable substrate"
  copy, drop cloudflare tunnels / Caddy gateway mentions.
- .claude/skills/{agent-browser,harness-audit,strategic-proposal}/SKILL.md
  and .claude/agents/command-builder.md: drop cloudflared references
  (strategic-proposal infra row keeps PostgreSQL 16).
- CHANGELOG.md [Unreleased] § Removed: new entry for #283 listing the
  10 deleted overlays + companion infrastructure; note postgres was
  kept.

Infra:
- Restored .devcontainer/docker-compose.postgres.yml.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 02:36:15 +00:00
ryaneggzandClaude Opus 4.7 c6a30a8f96 task: simplify overlays, sync sandbox UID to host (minimal)
Replace the host-group-membership workaround in entrypoint.sh with a
real UID/GID sync — on boot the sandbox user's UID/GID is rewritten to
match the bind-mounted repo's owner, so anything the sandbox creates
in-container is owned by the host user on the host (no chown handoff).

Delete the 11 in-tree compose overlays (claude/codex/deepagents/opencode/
pi-host.yml, ssh.yml, ssh-generate.yml, sshd.yml, git.yml, postgres.yml,
cloudflared.yml), the /cloudflared-tunnel skill, install/cloudflared-tunnel.sh,
the SANDBOX_PASSWORD plumbing, the *_HOST_BIND_MOUNT skip-clauses in
entrypoint.sh, the git-worktree resolver block, and the host-UID
overlay-stripping block in scripts/install.sh.

config.json's composeOverrides[] stays as the extension point for
downstream packs.

Doc / skill text references to deleted things are deferred to a
follow-up PR.

Closes #283

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 02:25:14 +00:00
OpenHarness BotandClaude Opus 4.7 9241da6e5c task: drop stale docs/guide subdir + sweep README/ICP refs
Removes the legacy docs/guide/ pages superseded by the new harness +
integrations sections, plus the broken README links and the orphan
.claude/ICP.md. Matches the ongoing stale-docs cleanup on this branch.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 22:22:06 -06:00
OpenHarness BotandClaude Opus 4.7 5036a93273 task: drop stale onboarding/lifecycle/connecting/architecture/operations docs
Removes nine documentation pages whose content no longer matches the
harness (`docs/onboarding.md`, `docs/sandbox-lifecycle.md`,
`docs/connecting.md`, `docs/operations/{provision,destroy,repair}.md`,
`docs/architecture/{overview,container-runtime,crons-and-heartbeats}.md`)
plus the now-orphaned `context/rules/repo-layout-source.md` rule that
pinned the architecture page as the canonical repo-tree source. The
docs site is left with `intro`, `quickstart`, `installation`, and the
`guide` / `agents` / `integrations` sections as the smaller accurate
foundation; per-directory `README.md` files plus the brief
`## Project Structure` block in `AGENTS.md` cover layout.

Closes #279

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-12 19:30:53 -06:00
OpenHarness Bot 8a12562b05 task: apply 5-critic council review to recursive-delegation rule
Second-round council (5 critics × distinct lenses: faithfulness,
codebase-fit, practical-usability, safety, editor) surfaced findings
the original 3-critic pass missed. Applying.

HIGH-severity fixes:
  - Faithfulness disclaimer: RAO is an RL training paper; its
    quantitative gains (depth-12 generalization, 2.5x wall-clock,
    context-overflow handling) require a trained policy this harness
    does not have. The rule now opens with this disclaimer and
    explicitly notes Max depth / Step budget are prompt-level
    conventions, not runtime caps.
  - launch_subagent vs Agent tool: paper's async REPL primitive runs
    asyncio coroutines with shared state. Harness Agent tool is
    stateless and synchronous. Rule now distinguishes them in
    § Multi-Level Delegation Protocol.
  - Enforcement gate added: .claude/skills/delegate/SKILL.md Step 5
    gains sub-step a.1 — before spawning a worker authorized to
    recurse, confirm Max depth / Max children per level / Step budget
    are ALL present. Missing → flat execution only.
  - .claude/protected-paths.txt: new rule registered as load-bearing
    (now cross-referenced from advisor-model.md and delegate SKILL).

MEDIUM-severity fixes:
  - Branching-factor cap added: Max children per level: 5 (hard cap)
    alongside Max depth, closing the depth-4 * parallel-spawn fanout
    risk.
  - Internal duplication cut: dropped "Recursion as Context
    Expansion" section (already covered by When-to-Use triggers
    + Recursing-for-reasoning anti-pattern); dropped tautological
    Step 4 in protocol; dropped duplicated "no raw content in Goal"
    rule; dropped Orchestrator Boundary second paragraph;
    dropped See Also entry for repo-layout-source.md (no referent
    in this file).
  - Ambiguous "Step 5" cross-ref tightened to
    "§ 5 Execute waves sub-step (a)".
  - "context capacity" trigger reframed to "child's briefing would
    exceed one sub-agent's effective context window" — concrete
    enough to act on.
  - New anti-pattern: "Synthesis pass-through" — mid-tree node
    forwards children's outputs verbatim, adds zero value.
  - New anti-pattern: "Sideways scope escalation" — child rewriting
    a sibling's briefing to lift depth/scope.

Net file size: 121 -> 114 lines. New content (disclaimers,
branching cap, new anti-patterns) more than offset by cuts of
duplicated and tautological text. CHANGELOG entry updated to
reflect the disclaimers and the new enforcement gate.

Closes #269 (continuing).
2026-05-10 23:34:15 -06:00
OpenHarness Bot c8aec0bf55 task: encode RAO recursive-delegation principles into rules + delegate skill
Adds context/rules/recursive-delegation.md — a new project rule encoding
the inference-time design principles from Recursive Agent Optimization
(arXiv 2605.06639, Gandhi et al., May 2026) that are genuinely novel
relative to existing harness conventions:

  - bounding compute (Max depth, Step budget fields in briefings)
  - context-as-parameter via an optional Context block
  - structured-return schemas declared in Acceptance criteria
  - multi-level (recursive) delegation protocol
  - recursion-as-context-expansion framing
  - orchestrator-vs-sandbox boundary (orchestrator-side trees default
    to Max depth: 1; multi-level reserved for rule/docs/skill work,
    not in-sandbox application code)

Cross-references existing rules instead of duplicating them. Principles
already covered elsewhere (fresh context per child, parallel-when-
independent, quality-over-quantity, don't-delegate-trivial) intentionally
omitted — see PR body for the council's overlap audit.

Patches:
  - context/rules/advisor-model.md: new "Multi-level (recursive)" row in
    Pipeline Variants table pointing at the new rule.
  - .claude/skills/delegate/SKILL.md: distinct-scope rule + authorization
    gate so workers stay flat unless Max depth / Step budget fields are
    present in their task description.

CHANGELOG: entry under [Unreleased] / Added, per context/rules/git.md.

Closes #269
2026-05-10 23:14:14 -06:00
OpenHarness BotandClaude Opus 4.7 aa6fd0026e feat: adopt openclaw memory concept (#259)
Two-tier markdown memory adapted from https://docs.openclaw.ai/concepts/memory:
long-term `memory/MEMORY.md` + daily logs at `memory/YYYY-MM-DD/log.md`.
Formalize the Memory Improvement Protocol as a canonical rule, fix path
drift across skills (workspace/memory/ -> memory/, file form -> subdir
form), and wire the read side via the AGENTS.md/CLAUDE.md session-start list.

New:
- context/rules/memory.md - canonical Memory Improvement Protocol (lifted
  + generalized from delegate/SKILL.md so any skill can reference it)
- memory/README.md - directory README per context/rules/directory-readme.md
- memory/MEMORY.md - long-term lessons stub (append-only)
- memory/x-campaign.md - relocated from memory/2026-05-04/ via git mv
  (it's a tracked persistent note, not a daily log)

Edits:
- AGENTS.md - session-start list extended with MEMORY.md, today's log,
  and pointer to the new rule
- .gitignore - ignore memory/[0-9]*/ daily logs; top-level memory files
  remain tracked
- docs/architecture/container-runtime.md - memory/ entry in the canonical
  Repo Layout tree
- .claude/skills/{delegate,harness-audit,skill-lint,strategic-proposal}
  /SKILL.md - replace inlined Memory Protocol with cross-ref to the new
  canonical rule; fix workspace/memory/ -> memory/; fix
  memory/YYYY-MM-DD.md (file form) -> memory/YYYY-MM-DD/log.md (subdir
  form) to match what the heartbeat cron and 5 existing daily dirs
  already use
- CHANGELOG.md - Unreleased entry

Plan: .claude/plans/study-https-docs-openclaw-ai-concepts-m-cozy-babbage.md

Closes #259

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 19:57:30 -06:00
OpenHarness BotandClaude Opus 4.7 aec17ba840 task: update convention-teaching refs and CHANGELOG for context/rules/
Replace project-level .claude/rules/ references in convention-teaching docs:
  AGENTS.md (auto-load glob + sandbox-processes link)
  .claude/agents/rule-builder.md (12 substitutions; user-level ~/.claude/rules/
                                  and a fictional cross-team example preserved)
CLAUDE.md inherits via root-level symlink to AGENTS.md.

Add CHANGELOG [Unreleased] § Changed entry describing the relocation.

Completes the documentation scope of PR #258 — the structural move shipped
with #258's first commit but the four convention/CHANGELOG files were
modified by the delegate workers without being staged before commit.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 19:28:54 -06:00
OpenHarness BotandClaude Opus 4.7 0bc1c0b2e3 feat: relocate rules to context/rules/ as canonical, tool-agnostic source
git mv .claude/rules context/rules. Re-symlink .claude/rules → ../context/rules
so Claude Code's auto-loader keeps working unchanged. Remove .codex/rules and
.pi/rules symlinks — neither CLI has a rules-loading feature, so they were
inert decoration. Add context/README.md and context/rules/README.md per
directory-readme.md. Update canonical layout tree at
docs/architecture/container-runtime.md and high-visibility teaching references
(AGENTS.md, CLAUDE.md, .claude/agents/rule-builder.md). ~50 other scattered
references kept as-is — the .claude/rules symlink resolves them.

Closes #257

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 19:15:52 -06:00
OpenHarness BotandClaude Opus 4.7 00078a7e8b feat: pi project config — mifune banner, path-guard, harness-context skill, CI wiring
Stand up .pi/ as a real project workspace for the pi-coding-agent CLI:
- settings.json: OpenAI defaults (gpt-4o), model cycling list, declared resource paths
- mifune-banner extension: flush-left MIFUNE wordmark + pi harness · ryaneggz/mifune subtitle
- path-guard extension: tool_call interceptor with case-insensitive risky-bash regex,
  hasUI headless guard, /dev/sd*|nvme*|hd*|disk* bare-redirection match, defensive
  toolName.toLowerCase() (verified lowercase in pi source), canonical input key `path`
- APPEND_SYSTEM.md: generic, consumer-agnostic
- prompts/review.md: /review template
- skills + rules: directory symlinks to ../.claude/{skills,rules} (single source of
  truth, mirrors .codex/ pattern)
- new canonical .claude/skills/harness-context/SKILL.md reachable from pi via symlink

Tests at .pi/extensions/__tests__/{path-guard,mifune-banner}.test.ts (32 + 7 cases,
hand-rolled mock ExtensionAPI, no pi devDep). vitest.config.ts include glob extended
to .pi/**/__tests__/**/*.test.ts. ci-harness.yml paths filter extended and a new
"Root tests" step runs pnpm test:scripts (also lifts cron-runtime.test.ts into CI).

86 tests passing across 6 files.

Closes #255

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 18:22:28 -06:00
OpenHarness BotandClaude Opus 4.7 a6077bdf2c task: /ci-status path-filter awareness + IDENTITY lesson
Replaces the NO-RUN guidance in /ci-status with a concrete enumeration
of this repo's path-filtered workflows so future infrastructure-only
PRs (devcontainer/scripts/install/) get accurate "no CI on push, that's
expected" reporting instead of being told to check a non-existent
ci.yml.

Closes #253

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 15:59:09 -06:00
OpenHarness BotandClaude Opus 4.7 f27e3aadf1 task: directory README pattern + rule
Add tracked README to apps/, crons/, scripts/, tasks/, .worktrees/
documenting each directory's intent, subfolders, and lifecycle.
Codify the pattern as .claude/rules/directory-readme.md so future
directories follow it.

.gitignore now exempts only .worktrees/README.md (replacing the
unused .gitkeep exemption); .claude/rules/git.md § Worktrees
points to the new README and documents the
.worktrees/project/<project-name>/<repo>/ slot for independent
project clones (own .git, not harness branches);
docs/architecture/container-runtime.md moves .worktrees/ into
the canonical tree.

context/IDENTITY.md gains three lessons from this session:
README-over-.gitkeep for tracked-empty dirs, "treat X same as Y"
interpretation discipline, and semantic-subfolder enumeration in
directory READMEs.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-07 15:22:07 -06:00
ryaneggzandClaude Opus 4.7 acabc319e4 skill: cloudflared-tunnel reconstructs creds JSON from token when missing
Step 3b: when a tunnel exists in the Cloudflare account but its
<tunnel-id>.json credentials file isn't on this host (created on a
different machine, lost, etc), reconstruct the JSON from
`cloudflared tunnel token <name>` rather than failing.

Also documents the trap that token-mode runs (`--token <T> --url <u>`)
silently drop --url because the tunnel is treated as remotely-managed
— connections register but Cloudflare returns 530.

The pipe goes direct from `cloudflared tunnel token` to `jq` to a
file; assigning to a *TOKEN-named variable would trip the
deny-env-dump.sh hook.

Closes #249

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-04 20:02:36 -06:00
OpenHarness Bot 6a461e2935 Adds post-bridge skill 2026-05-03 22:01:10 -06:00
OpenHarness Bot e6817d82e1 Adds Makefile to protected-paths.txt 2026-05-03 19:07:56 -06:00
OpenHarness Bot 6e0c9c70c1 feat: US-008 — Add .claude/rules/repo-layout-source.md auto-loaded rule 2026-05-03 17:49:17 -06:00
OpenHarness Bot f378cc17c8 Take all changes 2026-05-03 16:24:05 -06:00
OpenHarness Bot 3ec98fe008 Fix heredoc and ci status hitl 2026-05-03 10:36:45 -06:00
OpenHarness BotandClaude Opus 4.7 17de8f458e task: prune stale files + consolidate cron logs
Pass 2 of stale-file cleanup, after PR #223 narrowly scoped to .openharness/.

Removed:
- .devcontainer/tests/cli-binaries.sh (no caller)
- .devcontainer/init-env.sh (documented in 2 places but never invoked;
  install.sh:187-192 seeds the file directly and docker compose loads
  it from .devcontainer/ by default)
- .claude/posts/{linkedin,x}.md (orphan drafts)
- tsconfig.base.json (never extended)
- .claude/plans/crispy-beaming-torvalds.md (lone plan tracked despite
  the **/.claude/plans gitignore rule)

Changed:
- scripts/cron-runtime.ts:21 — log path renamed
  crons/cron-runtime.log -> crons/cron.log so the daemon and per-cron
  bodies share one log file. Both names were already gitignored under
  crons/*.log.
- docs/architecture/container-runtime.md and .openharness/README.md —
  drop init-env.sh references from tree comment and consumers list.
- CHANGELOG.md [Unreleased] — drop the now-stale "distinct from the
  daemon-level cron-runtime.log" clause from the heartbeat-watchlist
  entry; update scripts/cron-runtime.ts entry to point at cron.log.

Closes #228

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-03 10:26:08 -06:00
OpenHarness BotandClaude Opus 4.7 b57baff14c feat: add context/ orchestrator identity layer
Implements the gist v0.6 spec's session-loaded identity layer
(https://gist.github.com/ryaneggz/8f6811efa144ac94d3cdc383846134d8
§"context/"), adapted for single-user harness scope. The v0.7
convergence (PR #212, US-013) correctly removed workspace identity
files (pack territory) but never created the canonical orchestrator
context/ folder.

Four files at repo root:

- context/SOUL.md (voice and disposition, ~30 lines)
- context/IDENTITY.md (operating principles + append-only lessons
  learned, ~60 lines)
- context/TOOLS.md (environment inventory, ~40 lines)
- context/USER.md (working-relationship patterns, living document,
  ~45 lines)

Plus:
- AGENTS.md gains a "Session start" section instructing the
  orchestrator to read context/*.md at session start
- .claude/protected-paths.txt extended with the four context/ entries
  so future cleanup passes don't delete them

The IDENTITY.md lessons-learned section captures the meta-principles
this session produced — revealed preference > stated preference,
critic-gate before destructive actions, short feedback loops over
speculative infrastructure — that would otherwise vanish when the
conversation ends.

USER.md is the most session-bridging file: encodes communication
style, decision style, authorization patterns, and cleanup
expectations inferred from this session's interaction. Marked as a
living document that the agent proposes updates to after sessions
that produce new patterns.

Closes #220.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-02 21:28:11 -06:00
OpenHarness BotandClaude Opus 4.7 cda1a8ca52 feat: protected-paths list + critic gate + /ship-spec stage reorder
Replaces the per-invocation usage-logging proposal (#217, closed) after
Critic B's proportionality argument: zero runtime overhead, works on
day 1, ~20 LOC vs. an 8-story PRD with hooks.

Three file changes:

1. .claude/protected-paths.txt — list of load-bearing skills, scripts,
   and config paths. Includes the 10 current orchestrator skills, key
   scripts, install/runtime files wired into Dockerfile or boot, crons,
   rules, specs, and sub-agents.

2. .claude/agents/critic.md — appended a "Protected paths — deletion
   gate" section. Critics must check the list before proposing any
   deletion; protected entries require an explicit override note;
   violations raise SEVERITY: high with [PROTECTED-PATH] tag.

3. .claude/skills/ship-spec/SKILL.md — two changes:
   a. Stage 4 critic prompts (now stage 3 after reorder) reference the
      protected-paths list directly; both implementer and user lens
      include the protected-path check as criterion 6.
   b. Stages 3 and 5 reordered. Critics now run BEFORE the GH issue is
      opened. Earlier ordering created dangling issues when critics
      halted (surfaced during dogfood on #217). New order: prd → critics
      → resolve → issue → ralph → scaffold → branch → push → draft PR.
      Halt conditions and idempotency tables updated to match.

The v0.7 convergence (PR #212, US-012) deleted six load-bearing skills
under "defensible 5-skill set" rationale. The protected-paths list is
the gate that would have caught it.

Closes #218.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-02 21:07:00 -06:00
OpenHarness BotandClaude Opus 4.7 922b82942f skill: add /ship-spec orchestrator
Composes existing primitives (/prd → 2 critics → /ralph → gh issue
→ branch → draft PR) into one durable invocation.

The critic gate (stage 5) is the entire point: it makes critics the
short feedback loop that the v0.7 convergence (PR #212) was missing.
PR #212 deleted six load-bearing skills under "defensible 5-skill set"
rationale; that mistake took two weeks to surface. /ship-spec halts
on any high-severity critic finding before the issue is opened or
anything is pushed — the cheapest thing to revise is the spec itself.

v1 stops at draft PR creation. Loop launch + CI verification stay
manual until the critic phase has been proven valuable across 2-3
real runs. Idempotent at every stage.

Closes #215.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-02 20:43:41 -06:00
OpenHarness Bot 2b0347309e clean up sepcs 2026-05-02 20:22:26 -06:00
OpenHarness Bot 2444041e55 audit: US-004 — .worktrees/ cleanup + policy 2026-05-02 19:21:43 -06:00
OpenHarness Bot e7baab2f3d audit: US-003 — Delete dead install scripts (critic-gated)
Risk Assessment (critic gate):
- High/Low: accidental deletion of the active entrypoint; mitigation: only removed legacy install-side scripts, preserved .devcontainer/entrypoint.sh, and verified Dockerfile COPY plus docker compose config.
- Medium/High: stale docs or skills could point agents at deleted files; mitigation: updated harness-audit, container-runtime docs, AGENTS, install-prereq notes, cloudflared references, changelog, and task docs.
- Medium/Medium: external/manual workflows could still invoke removed helpers; mitigation: retained supported banner/cloudflared assets and documented system-package or INSTALL_CLOUDFLARED=true install path.
- High/Low-Medium: missed active caller outside normal grep scope; mitigation: ran tracked grep for legacy setup/install-entrypoint paths and checked tmux wrapper references before deletion.

Critic invocation note: Claude Task tool was unavailable in this pi API harness; the critic prompt was executed read-only via codex exec before deletion using .claude/agents/critic.md's rubric. No high-severity finding lacked a mitigation.

Validation:
- docker compose -f .devcontainer/docker-compose.yml config
- pnpm run lint
- pnpm -r --if-present run typecheck
- pnpm run test
2026-05-02 19:18:06 -06:00
OpenHarness Bot 9b540b9e4d audit: US-001 — Delete obsolete spec v0.6 from disk + fix call-graph claim 2026-05-02 19:05:18 -06:00
OpenHarness BotandClaude Opus 4.7 392ce76c12 fix: restore 6 orchestrator skills removed in v0.7 convergence
Restored from fb71365^ unchanged:
- /ralph (PRD → prd.json converter for scripts/ralph.sh)
- /prd (PRD generator from feature description)
- /harness-audit (4 parallel sub-agents: PM/Implementer/Critic/Explorer)
- /skill-lint (skill staleness scorer, 5 dimensions)
- /delegate (parallel sub-agent execution coordinator)
- /strategic-proposal (5-expert council + Critic for roadmap)

US-012 deleted these on the rationale "workspace-agent skills, not
orchestrator." That triage was wrong: the orchestrator actively uses
the prd.json schema for its own task management
(tasks/openharness-v07-convergence/prd.json), so removing the tools
that generate that schema was a regression. scripts/ralph.sh (the
runner) was kept all along — only the wrapper skills were lost.

CLAUDE.md skills table updated to list all 10 surviving skills.
CHANGELOG entry under [Unreleased] ### Fixed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-02 18:51:30 -06:00
OpenHarness Bot f78e83ec7b fix: relocate task archive to tasks/archive/YYYY-MM-DD/ — drop memory/.../tasks/
US-014 (memory directory-per-day) and US-015 (archive
install-prereq-detection) followed v0.6's schema where completed Ralph
tasks landed in memory/YYYY-MM-DD/tasks/<taskdesc>/. That created two
directories both literally named 'tasks/' with different semantics
(active at root, archived inside daily memory) — confusing for both
agents and humans.

Single namespace fix: tasks always live under tasks/. Active in
tasks/<taskdesc>/, archived in tasks/archive/<YYYY-MM-DD>/<taskdesc>/.
memory/ keeps log.md/decisions.md/artifacts/ only — no tasks/
subfolder. Matches the convention already documented in
.claude/skills/ralph/SKILL.md (§ Archiving Previous Runs).

Changes:
- Move memory/2026-05-02/tasks/install-prereq-detection/ →
  tasks/archive/2026-05-02/install-prereq-detection/
- Remove now-empty memory/ tree (will be re-created on demand by
  daily journaling, never with a tasks/ subfolder)
- Update SPEC v0.7 §'Weekly cleanup cron' to specify the new path
  and explicitly supersede v0.6's location with a brief rationale
- Update crons/cleanup-tasks.md body to mv to tasks/archive/$TODAY/
  and add a 'skipping tasks/archive/' guard so the sweep doesn't
  re-archive its own output

Tracks: #210
2026-05-02 17:09:46 -06:00
OpenHarness Bot fb7136581f task: US-012 — triage orchestrator skills to defensible set
Drop six skills (delegate, harness-audit, strategic-proposal, skill-lint,
prd, ralph), convert provision/destroy/repair to docs/operations/, keep
release/ci-status/cloudflared-tunnel/agent-browser. Delete stale
heartbeat/daemon/worktree-discovery docs and patch incidental refs to
point at the croner runtime + crons/. Pack-side counterparts tracked in
ryaneggz/mifune#1 and #2. Per SPEC v0.7 §"Orchestrator vs workspace agent
skills".

Refs #210
2026-05-02 15:09:33 -06:00
OpenHarness Bot 9a0ea70f25 task: US-011 — archive multi-agent blogs and write anti-ICP
Delete the still-draft blog/2026-04-29-worktree-per-agent.md and move
blog/2026-04-28-byoh.md into blog/archive/ with archived: true and a
top-of-post note that the v1 framing differs. Add .claude/ICP.md with
primary persona, three JTBDs, top-3 needs, and an explicit anti-ICP
table (not multi-tenant SaaS, not non-developers, not production agent
operators, not comparison-shopping tinkerers). Strip the residual
"side-by-side" wording from docs/agents/overview.md so the grep gate
clears outside blog/archive/. Per SPEC v0.7 + the v07-convergence PRD.

Refs #210
2026-05-02 15:02:37 -06:00
OpenHarness BotandClaude Opus 4.7 5ef2e9bdf8 task: US-010 — update CLAUDE.md, workspace/AGENTS.md, and orchestrator skills
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-02 14:57:53 -06:00