100 Commits
Author SHA1 Message Date
ryaneggz 01b137d8f8 task: promote CHANGELOG for 2026.5.24 2026-05-24 01:58:19 +00:00
Ryan Eggleston ce6f9ff493 Merge pull request #345 from ryaneggz/task/344-rename-client-slack
FROM task/344-rename-client-slack TO development
2026-05-23 19:49:19 -06:00
Ryan Eggleston 548ab5a28c Merge pull request #351 from ryaneggz/feat/350-karpathy-llm-wiki
FROM feat/350-karpathy-llm-wiki TO development
2026-05-23 19:47:05 -06:00
ryaneggzandClaude Opus 4.7 833d9900bf task: record /ship-spec PR-ready preference
User feedback (2026-05-24): /ship-spec must end with `gh pr ready
<N>`; don't leave PRs in draft. Overrides the skill's documented
"v1 stops at draft" stance. Recorded in both the harness MEMORY.md
and the auto-memory feedback store so future sessions apply the
preference without re-correction.

Follow-up (deferred): update .claude/skills/ship-spec/SKILL.md
Stage 9 to call `gh pr ready <N>` as the final step.

Refs #350.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 01:42:03 +00:00
ryaneggzandClaude Opus 4.7 f786b0358f task: /reflect — promote 3 lessons from Karpathy wiki session
Memory Improvement Protocol § c (Improve), session-closing pass.

14 candidates scanned; 4 filtered as already-captured; 7 filtered
as not durable / already in rules; 3 survived to MEMORY.md
(none graduated to IDENTITY.md — no cross-session generalization
established yet from a single run).

Promoted:
- /ship-spec Stage 4 HALT-on-HIGH semantics are looser in practice
  than the spec implies — in-place AC mitigation with a Synthesis
  audit trail in critique.md is equivalent when fixes are
  mechanical (no PROTECTED-PATH / boundary-crossing signals).
- /ship-spec Stage 7 template path drift: the referenced template
  at tasks/openharness-v07-convergence/prompt.md is now at
  tasks/archive/... ; skill prose hasn't caught up.
- memory/YYYY-MM-DD/log.md gitignore vs context/rules/memory.md
  docstring mismatch: rule says "log.md tracked inside"; .gitignore:42
  rule memory/[0-9]*/ excludes the entire directory contents in
  practice. Daily logs are local-only working state.

Refs #350. /reflect log entry appended to memory/2026-05-24/log.md
(local-only per the gitignore behavior recorded in lesson 3).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 01:36:00 +00:00
ryaneggzandClaude Opus 4.7 14b6bee451 task: record /delegate shared-file integration pattern in MEMORY.md
Memory Improvement Protocol per context/rules/memory.md.

Promotes one durable lesson from the /delegate run that landed
the Karpathy wiki integration: when /delegate spawns parallel
sub-agents touching a shared append-style file (CHANGELOG.md,
AGENTS.md skills table), scope each sub-agent to disjoint files
and let the orchestrator integrate the shared-file edits at
commit time. Avoids concurrent-commit clobber and silent stale-
view compose (same mechanism behind the 2026-05-19 worktree
lesson). Pattern is "fan out implementation, fan in integration."

Also promotes the pre-existing 2026-05-23 .claude/plans/ gitignore
lesson which was unstaged since PR #347; this commit lands it on
this PR's merge to development.

Daily log entries for pm-agent / ship-spec / delegate runs were
appended to memory/2026-05-24/log.md but the directory is
gitignored by the existing memory/[0-9]*/ rule, so the daily log
lives only on the local filesystem (per the established
convention; only MEMORY.md is the long-term tracked store).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 01:27:50 +00:00
ryaneggzandClaude Opus 4.7 ba7e925994 task: mark all 5 stories complete in prd.json + progress.txt
All US-001..US-005 passes: true; progress.txt has Codebase Patterns
+ per-story entries + STATUS: COMPLETE sentinel. /delegate execution
of tasks/karpathy-llm-wiki/prd.json is finished.

Refs #350. PR #351 ready for human review (transition to ready via
gh pr ready 351 + /ci-status).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 01:25:14 +00:00
ryaneggzandClaude Opus 4.7 dc64711017 task: US-005 — register /wiki-ingest, /wiki-query, /wiki-lint in AGENTS.md
Wave 4 (final) of /delegate execution.

Appends 3 rows to the AGENTS.md skills table — flat append, no
new category header. CLAUDE.md symlink integrity verified intact
before and after (inode 3408085 unchanged).

CHANGELOG entry: one ### Changed line for the registration action
itself (per US-005 AC); per-skill ### Added entries already shipped
in US-001/2/3/4 commits.

Refs #350. Closes #350 once merged. All 5 stories from the prd.json
are now landed; next step is gh pr ready 351 + /ci-status.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 01:23:03 +00:00
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
ryaneggzandClaude Opus 4.7 e7b410e164 feat: US-001 — scaffold wiki/ + context/rules/wiki.md schema rule
Establishes the Karpathy LLM Wiki foundation: top-level wiki/ +
wiki/raw/ directories with README anchors, .gitignore exemption
for the snapshot README, and the complete 7-section schema rule
at context/rules/wiki.md (boundary table, entry schema, slug
derivation, cross-link convention, confidence lifecycle, canonical
frontmatter extraction command, body-merge strategy for updates).

The schema rule auto-loads via context/rules/*.md and is the
canonical reference for US-002 (/wiki-ingest), US-003 (/wiki-query),
and US-004 (/wiki-lint). All three skills MUST use the locked
extraction command from § 6 to avoid silent divergence.

Refs #350. Wave 1 of /delegate execution.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 01:09:30 +00:00
ryaneggzandClaude Opus 4.7 18f0daa2a3 feat: scaffold karpathy-llm-wiki task
Four-file contract (per SPEC v0.7 §tasks/) + critique:
- prd.md: 5 user stories (US-001 through US-005), 12 FRs,
  8 non-goals; HIGH critic findings folded into ACs.
- prd.json: schemaVersion 1, branchName feat/350-karpathy-llm-wiki,
  5 stories with wave-encoded priorities and dependency notes.
- prompt.md: Ralph iteration instructions adapted from the
  archived convergence template; wave-ordering and symlink-
  discipline notes specific to this task.
- progress.txt: empty header.
- critique.md: 2-critic adversarial review (implementer +
  user lens) with 7 HIGH / 12 MED / 6 LOW findings; all
  HIGH findings mitigated in prd.md ACs (recorded in the
  Synthesis section). 0 protected-path violations.

Tracks #350 (implementation). Builds on plan PR #347
(.claude/plans/karpathy-llm-wiki.md on branch
feat/346-karpathy-llm-wiki). Parent tracking issue #346.

PRD generated by /prd; reviewed by 2 critics (implementer +
user lens, with the advisor-model 3-step variant — critique
findings folded back into PRD as AC tightenings); converted
by /ralph.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-24 01:03:01 +00:00
ryaneggzandClaude Opus 4.7 b17242590c task: rename agent-pi → client-slack tmux session + restore on restart
- Add `client-` prefix to sandbox-processes.md naming table for
  external-surface clients bridging an in-sandbox agent.
- Tighten the `agent-` example off interactive CLIs; document that
  claude/codex/opencode are foreground tools, not tmux sessions.
- entrypoint.sh: restore client-slack on container start when
  SLACK_APP_TOKEN + SLACK_BOT_TOKEN are present and `pi` is installed.
- Propagate rename through wizard code, READMEs, and docs.
- Fold in half-finished harness-pi rename from #302.

Closes #344

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-23 20:39:51 +00:00
ryaneggz a75200d272 fix: install pi under sandbox-owned prefix 2026-05-23 20:13:35 +00:00
Ryan Eggleston 8cc45b1e9e Merge pull request #338 from ryaneggz/skill/337-reflect-self-improvement
FROM skill/337-reflect-self-improvement TO development
2026-05-22 00:32:14 -06: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 7bc2e1c66d task: backfill reflect lock pin to mifunedev/skills master
PR #5 merged. Pin reflect to commit d35ad8d, registry_version 2026.5.22;
checksum unchanged (already the registry value).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 06:25:32 +00:00
Ryan Eggleston 50f90821b7 Merge pull request #336 from ryaneggz/skill/335-caveman-compression
FROM skill/335-caveman-compression TO development
2026-05-22 00:21:43 -06:00
ryaneggzandClaude Opus 4.7 93bd09629d task: record session lessons via /reflect dogfood
Three MEMORY.md lessons promoted (qualify-filtered, user-approved):
untrusted curl|bash → fetch/inspect/implement-native; CLAUDE.md symlink →
edit AGENTS.md; skills.lock provenance for non-registry skills.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-22 06:19:52 +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
Ryan Eggleston 849191dff1 Merge pull request #334 from ryaneggz/skill/333-context-audit
FROM skill/333-context-audit TO development
2026-05-21 22:43:38 -06:00
ryaneggzandClaude Sonnet 4.6 e603bea546 task: add context-audit to skills.lock (mifunedev/skills PR #4)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22 04:39:18 +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
Ryan Eggleston d3d5fd1bd3 Merge pull request #332 from ryaneggz/task/331-self-hosting-dx-docs
FROM task/331-self-hosting-dx-docs TO development
2026-05-21 22:25:24 -06:00
ryaneggzandClaude Sonnet 4.6 84777e5ee6 task: improve self-hosting DX for fork-and-clone and clone-and-own
Surface scripts/install.sh local-run detection as three equal-weight install
paths (upstream / fork-and-clone / clone-and-own) in README, installation.md,
and quickstart.md. No script changes — the installer already handled both
self-hosting flows; docs were the only gap.

Closes #331

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-22 04:23:05 +00:00
Ryan Eggleston 4f0ca99de7 Merge pull request #330 from ryaneggz/task/329-sync-skills-lock-c559c100
FROM task/329-sync-skills-lock-c559c100 TO development
2026-05-21 22:01:09 -06: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
Ryan Eggleston 91a1b57926 Merge pull request #328 from ryaneggz/task/327-migrate-skills-mifunedev
FROM task/327-migrate-skills-mifunedev TO development
2026-05-21 21:53:10 -06: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
Ryan Eggleston 28eaa0912c Merge pull request #324 from ryaneggz/task/323-remove-config-example
FROM task/323-remove-config-example TO development
2026-05-20 19:41:26 -06:00
ryaneggzandClaude Opus 4.7 ddbf2d504a task: remove dead config.example.json seed template
config.example.json was the tracked seed for the gitignored config.json,
but the base ships zero compose overlays and every reader (Makefile,
install.sh, banner.sh) tolerates a missing config.json via jq fallbacks.
Remove the file and its now-dead seeding block in install.sh.

Closes #323

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-21 01:38:42 +00:00
ryaneggz e85fbf2e4a Update settings, and adds few memories 2026-05-21 01:17:06 +00:00
Ryan Eggleston de01308879 Merge pull request #317 from ryaneggz/skill/316-interview-skill
FROM skill/316-interview-skill TO development
2026-05-18 20:11:46 -06: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
Ryan Eggleston e8cc2c0509 Merge pull request #315 from ryaneggz/skill/314-render-html
FROM skill/314-render-html TO development
2026-05-18 18:02:36 -06: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
ryaneggz 8940068610 task: promote CHANGELOG for 2026.5.18 2026-05-18 01:09:03 +00:00
Ryan Eggleston a48c51835a Merge pull request #311 from ryaneggz/development
FROM development TO main
2026-05-17 19:07:48 -06:00
ryaneggz ca7d9106b1 Merge remote-tracking branch 'origin/main' into development
# Conflicts:
#	CHANGELOG.md
2026-05-18 01:07:31 +00:00
Ryan Eggleston 1e207dead7 Merge pull request #310 from ryaneggz/fix/297-release-changelog-sync
FROM fix/297-release-changelog-sync TO development
2026-05-17 19:06:23 -06: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
Ryan EgglestonandClaude Opus 4.7 2a54508627 FROM feat/308-fork-friendly-install TO development (#309)
* feat: scaffold fork-friendly-install task

Four-file contract per SPEC v0.7 §tasks/:
- prd.md: 7 user stories with post-critic-mitigation AC
- prd.json: schemaVersion 1, branchName feat/308-fork-friendly-install
- prompt.md: Ralph iteration instructions
- progress.txt: empty header
- critique.md: 2-critic review (implementer + user lens),
  all 6 H-severity findings mitigated; 1 M-severity ICP.md
  drift flagged as separate orchestrator hygiene

Source: 5-seat AI council unanimous Option E (Hybrid B+A) +
Critic concur-with-amendments. Parameterizes the clone source
via OH_GITHUB_REPO so a forked Open Harness installs the
forker's code, not upstream's; keeps oh.mifune.dev canonical
upstream URL unchanged.

Tracks #308. PRD generated by /prd; reviewed by 2 critics
(implementer + user lens); converted by /ralph.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat: US-005 — README adds a "For forks / self-host" block

Inserts a ### 📦 For forks / self-host subsection into README.md after
the closing paragraph of ## 📦 Install and before ## 🚀 Use it. Includes
blockquote visual-hierarchy guard, matching <your-org>/<your-fork>
placeholders in both curl URL path and OH_GITHUB_REPO env var, branch
substitution note, mutable-HEAD trust caveat, and .devcontainer/ footnote
with concrete patch guidance. Upstream line 17 is byte-identical.

* feat: US-001 — OH_GITHUB_REPO env var parameterizes the clone

- Adds OH_GITHUB_REPO="${OH_GITHUB_REPO:-ryaneggz/open-harness}" immediately after REPO_DIR is set (line 180) and before the migration block (line 182)
- Validates with bash [[ =~ ]] regex (^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$); dies with clear message on mismatch
- Emits warn "Cloning from fork: $OH_GITHUB_REPO" when non-default value supplied
- Replaces both hardcoded clone URLs (with and without --branch) with https://github.com/${OH_GITHUB_REPO}.git in lockstep
- bash -n passes; shellcheck: baseline 11, post-edit 11 (no new warnings)

* task: US-001 — update progress.txt with commit SHA dbf8623

* feat: US-002 — OH_GITHUB_REF aliases OH_INSTALL_REF

Adds OH_GITHUB_REF alias resolution block after the fork-warn block,
before the population/migration classification. When both
OH_GITHUB_REF and OH_INSTALL_REF are set to differing non-empty
values, a warn fires before the alias resolution overrides
OH_INSTALL_REF. The fresh-clone branch-guard now keys on the
resolved $OH_GITHUB_REF, so either var triggers --branch clone form.

Back-compat preserved: OH_INSTALL_REF=v1.2.3 with OH_GITHUB_REF
unset still results in --branch v1.2.3 (alias resolves to v1.2.3).
No deprecation warning emitted in this release.

bash -n: PASS. shellcheck: 11 warnings (no regression vs baseline).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* feat: US-003 — pull path validates remote against OH_GITHUB_REPO

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: US-004 — help text documents OH_GITHUB_REPO and OH_GITHUB_REF

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

* feat: US-007 — CHANGELOG records OH_GITHUB_REPO/REF additions

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-17 14:18:33 -06:00
ryaneggz 9d84b1fab3 Add worktrees skill 2026-05-17 01:55:56 +00:00
ryaneggz 12e8be0817 task: promote CHANGELOG for 2026.5.16 2026-05-16 06:09:05 +00:00
ryaneggz b142a67301 Merge branch 'development' into main
# Conflicts:
#	CHANGELOG.md
2026-05-16 06:08:48 +00:00
Ryan Eggleston f8006f4825 task: docs runbook + agents catalog (#301)
Closes #300.
2026-05-15 22:14:45 -06:00
Ryan Eggleston 5951874e06 task: docs orchestrator-as-default + arch diagram + VS Code attach flow (#303)
Lead `docs/quickstart.md` "Enter the sandbox" with the VS Code Dev Containers attach flow (Command Palette → `Dev Containers: Attach to Running Container...` → `openharness`), since it works identically on localhost and over Remote-SSH; `make shell` demoted to a terminal fallback.

Add an orchestrator-as-default framing block to `docs/intro.md` "How it works" plus a Mermaid architecture diagram showing the host/sandbox split, the orchestrator at the center of the sandbox subgraph, the tmux session row, the `docker.sock` path to an optional second sandbox, and external GitHub / LLM-provider edges.

Repurpose `docs/agents/overview.md` "Running an agent in tmux" into "Default surfaces" (Pi+Slack, T3 Code, docs app) with VS Code Simple Browser guidance. Rename documented tmux sessions to `harness-pi` / `harness-t3code` in this page only — `apps/oh/src/config/slack.ts` and `context/rules/sandbox-processes.md` still use the `agent-` prefix; full rename will follow.

Fix dark-mode inline-code pill contrast in `apps/docs/src/css/custom.css` (background 0.06 → 0.12, border 0.1 → 0.22, text → pure white).

Docs-only; tests not run.

Closes #302
2026-05-15 21:33:12 -06:00
Ryan Eggleston fedb23b3ad docs: generalize worktree project examples (#299)
Remove maintainer-specific repo examples from `.worktrees/README.md` while keeping the structural boundary: agent-owned harness work lives under `agent/`, durable standalone repos live under `project/<owner>/<repo>/`.

Docs-only; tests not run.

Closes #298
2026-05-15 13:33:54 -06:00
Ryan Eggleston d3f747b849 task: clarify project worktree layout (#296)
Clarify that new long-lived standalone repos belong under `.worktrees/project/<owner>/<repo>/`, while `.worktrees/agent/` is limited to harness agent branches and legacy agent-owned clones.

Document the concrete Mifune misplacement that triggered this clarification.

Docs-only; tests not run.

Closes #295
2026-05-15 13:31:05 -06:00
ryaneggz f85a0420e5 task: promote CHANGELOG for 2026.5.15 2026-05-15 06:01:47 +00:00
Ryan Eggleston 6d6918535b Merge pull request #294 from ryaneggz/bug/293-changelog-misplacement
FROM bug/293-changelog-misplacement TO main
2026-05-15 00:01:18 -06:00
ryaneggz beba18f469 fix: move misplaced #290 CHANGELOG entry from [2026.5.14] to [Unreleased]
The oh config slack wizard UX entry (#290, merged via #291) was inserted
into the already-shipped [2026.5.14] section instead of [Unreleased].
[2026.5.14] was tagged on 2026-05-14T06:36Z and the [Unreleased] block
was reset to empty by that release — but #291 anchored its CHANGELOG
edit to the wrong ### Changed heading. Moved the entry to [Unreleased]
so the next release captures it.

Closes #293.
2026-05-15 06:00:53 +00:00
Ryan Eggleston 30ec50bf80 Merge pull request #292 from ryaneggz/development
FROM development TO main
2026-05-14 23:53:32 -06:00
Ryan Eggleston f536670f52 Merge pull request #291 from ryaneggz/feat/290-oh-slack-wizard-ux
FROM feat/290-oh-slack-wizard-ux TO development
2026-05-14 23:48:58 -06:00
ryaneggz 141ff14a2d feat: improve oh config slack wizard UX with masked input + step framing
Token prompts now echo a ● per keystroke instead of swallowing all output —
visible feedback that input is being received. The flow is reframed into
four numbered steps with inline "Where:" hints and clickable URLs (OSC 8
hyperlinks, fall back to "label (url)" on legacy terminals). Each input
shows a validation checkmark on success. A final summary screen lists the
keys (tokens redacted) behind a Proceed? [Y/n] gate before the env file is
touched.

Two files touched. apps/oh/src/lib/prompt.ts gains step(), link(), and
bold() helpers, plus a TTY-aware askSecret that handles backspace, Ctrl-U,
Ctrl-C, and Enter via raw mode. Piped/non-TTY stdin keeps the legacy
readline path as askSecretPiped so `echo "" | oh config slack` keeps
working for tests. apps/oh/src/config/slack.ts trims the round-1 preamble
to a 3-line header and applies the new helpers across both prompt groups.

Closes #290.
2026-05-15 05:46:43 +00:00
ryaneggz c2f488bdcf task: promote CHANGELOG for 2026.5.14 2026-05-14 06:36:09 +00:00
Ryan Eggleston ea3031974b Merge pull request #289 from ryaneggz/development
FROM development TO main
2026-05-14 00:35:19 -06:00
Ryan Eggleston 9ddfbc9542 Merge pull request #288 from ryaneggz/feat/287-codex-callback-port
FROM feat/287-codex-callback-port TO development
2026-05-14 00:26:09 -06:00
ryaneggzandClaude Opus 4.7 6e51b4b88c fix: reframe port 1455 mapping as Pi-harness-specific
The 1455 callback is the Pi harness's own OAuth login flow, not Codex.
Codex CLI has its own headless path (codex login --device-auth) and
doesn't need the port. Move the detail to docs/agents/pi.md with a
cross-reference note in codex.md; correct CHANGELOG and the compose
comment.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 06:20:00 +00:00
ryaneggzandClaude Opus 4.7 cb8b5dfea6 task: document Codex callback port 1455 for Pi harness login
Detail in docs/agents/codex.md that codex login is a prerequisite for
the Pi harness, that the 1455 callback works out of the box via VS Code
Remote SSH, and that direct-terminal users must forward the port
manually. Link CHANGELOG entry to issue #287.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 06:14:13 +00:00
ryaneggzandClaude Opus 4.7 d6250da3fa feat: publish Codex OAuth callback port 1455 to host loopback
Maps container port 1455 to 127.0.0.1:1455 so an editor's auto
port-forwarding (VS Code Remote SSH) carries the OAuth redirect to the
laptop, removing the manual `ssh -L 1455:localhost:1455` step for
`codex` subscription login in the sandbox.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 06:02:44 +00:00
ryaneggz 94bb9e391e No longer needed in main harness 2026-05-14 03:49:57 +00:00
Ryan Eggleston a2758ab5b7 Merge pull request #286 from ryaneggz/task/283-overlay-consolidation-minimal
FROM task/283-overlay-consolidation-minimal TO development
2026-05-13 20:59:27 -06:00
ryaneggzandClaude Opus 4.7 4e515f156f task: clear agent-specific heartbeat items from orchestrator template
X-campaign follow-ups are owned by their respective agent sandboxes now;
the orchestrator's Active items list ships empty so new users start clean.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 02:56:37 +00:00
Ryan Eggleston c3fb49b245 Merge pull request #285 from ryaneggz/task/283-overlay-consolidation-minimal
FROM task/283-overlay-consolidation-minimal TO development
2026-05-13 20:39:11 -06: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
Ryan Eggleston 94326bc6ac Merge pull request #282 from ryaneggz/feat/281-oh-config-slack
FROM feat/281-oh-config-slack TO development
2026-05-12 22:49:05 -06:00
Ryan Eggleston f5030606f9 Merge pull request #280 from ryaneggz/task/279-drop-stale-docs
FROM task/279-drop-stale-docs TO development
2026-05-12 22:42:58 -06:00
Ryan Eggleston 1280593ac7 Merge pull request #278 from ryaneggz/development
FROM development TO main
2026-05-11 23:41:57 -06:00
Ryan Eggleston c87ecaaab7 Merge pull request #277 from ryaneggz/task/276-drop-slack-overlay
FROM task/276-drop-slack-overlay TO development
2026-05-11 23:41:14 -06:00
Ryan Eggleston 32e55878dc Merge pull request #273 from ryaneggz/development
FROM development TO main
2026-05-11 00:22:41 -06:00
Ryan Eggleston dda2e2a054 Merge pull request #272 from ryaneggz/task/271-build-essential
FROM task/271-build-essential TO development
2026-05-11 00:14:59 -06:00
Ryan Eggleston 925e923a43 Merge pull request #266 from ryaneggz/task/265-sandbox-image-prefix
FROM task/265-sandbox-image-prefix TO development
2026-05-11 00:00:42 -06:00
Ryan Eggleston c6b83ebc6a Merge pull request #270 from ryaneggz/task/269-rao-recursive-delegation
FROM task/269-rao-recursive-delegation TO development
2026-05-11 00:00:00 -06:00
ryaneggzandClaude Opus 4.7 36ba4410c2 task: document agent/ clone pattern in worktrees README
The agent/ subfolder holds two patterns: harness branch worktrees (legacy
in-tree agents) and standalone agent-repo clones with their own .git
(post-graduation agents). dc-designer is the example clone.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 17:48:49 +00:00
ryaneggzandClaude Opus 4.7 f13be6b6ab fix: install root pnpm deps on first boot for Pi extensions and cron-runtime
The harness root package.json declares deps (croner for scripts/cron-runtime.ts;
@slack/socket-mode, @slack/web-api, chalk, @sinclair/typebox for the in-tree
Slack Pi extension) that aren't bundled into Pi or any global CLI. The harness
is bind-mounted, so a Dockerfile-time install gets shadowed at runtime. The
entrypoint now runs pnpm install --prefer-offline at the harness root on first
boot when node_modules/ is missing, before the cron runtime starts. Set
SKIP_PNPM_INSTALL=1 to opt out.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-09 17:48:43 +00:00
Ryan Eggleston 4347fa3b23 Merge pull request #262 from ryaneggz/feat/pi-slack-extension
FROM feat/pi-slack-extension TO development
2026-05-07 23:25:51 -06:00
Ryan Eggleston 5a8ca8be19 Merge pull request #260 from ryaneggz/feat/259-openclaw-memory
FROM feat/259-openclaw-memory TO development
2026-05-07 20:03:13 -06:00
Ryan Eggleston ccfc867a9e Merge pull request #258 from ryaneggz/feat/257-context-rules-canonical
FROM feat/257-context-rules-canonical TO development
2026-05-07 20:03:00 -06:00
Ryan Eggleston af9053383d Merge pull request #256 from ryaneggz/feat/255-pi-project-config
FROM feat/255-pi-project-config TO development
2026-05-07 20:02:28 -06:00
Ryan Eggleston ae40b56024 Merge pull request #254 from ryaneggz/task/253-ci-status-path-filters
FROM task/253-ci-status-path-filters TO development
2026-05-07 16:06:30 -06:00
Ryan Eggleston 2809343365 Merge pull request #252 from ryaneggz/feat/251-repurpose-openharness-install-root
FROM feat/251-repurpose-openharness-install-root TO development
2026-05-07 16:06:26 -06:00
ryaneggz 5082aa309f Store this, I borked the subharnesses on cleaning out old linux users 2026-05-05 16:06:28 -06:00
Ryan Eggleston b78da43a39 Merge pull request #250 from ryaneggz/feat/249-cloudflared-token-creds
FROM feat/249-cloudflared-token-creds TO development
2026-05-04 20:08:23 -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
Ryan Eggleston 261a58722c Merge pull request #248 from ryaneggz/fix/247-opencode-config-chown
fix: chown opencode config parent and add DeepAgents docs tile
2026-05-03 21:40:36 -06:00
Ryan Eggleston f79782dde8 Merge pull request #246 from ryaneggz/fix/245-opencode-local-state-chown
FROM fix/245-opencode-local-state-chown TO development
2026-05-03 21:10:37 -06:00
Ryan Eggleston 3132c964c7 Merge pull request #244 from ryaneggz/development
FROM development TO main
2026-05-03 20:54:02 -06:00
Ryan Eggleston 02647d353d Merge pull request #243 from ryaneggz/task/242-remove-redundant-root-cname
FROM task/242-remove-redundant-root-cname TO development
2026-05-03 20:51:40 -06:00
Ryan Eggleston d64f40d44e Merge pull request #241 from ryaneggz/feat/237-deepagents-cli-support
FROM feat/237-deepagents-cli-support TO development
2026-05-03 20:34:03 -06:00
Ryan Eggleston 2c56b29baf Merge pull request #240 from ryaneggz/feat/239-opencode-harness
FROM feat/239-opencode-harness TO development
2026-05-03 19:55:36 -06:00
Ryan Eggleston b12e4616ae Merge pull request #238 from ryaneggz/feat/237-deepagents-cli-support
FROM feat/237-deepagents-cli-support TO development
2026-05-03 19:53:27 -06:00