fix: telemetry/memory flag mismatches, doc drift; add CI; self-dogfood

Parallel fleet audit (2 background agents) + direct work:

- src/commands/memory.mjs: `memory put --allow-secrets` was read as
  `flags.allowSecrets` (camelCase) but the CLI parser only emits
  kebab-case keys, so the flag was always undefined/false. Fixed to
  `flags['allow-secrets']`.
- Docs: `lh graph --brief` was referenced 14x across 5 agent.md files,
  harness.instructions.md, 4 SKILL.md files, onboard.prompt.md, and
  README, but `lh graph` has no --brief flag (terse output is already
  the default, --json/--severity are the only flags). Corrected every
  reference to match actual CLI surface.
- .github/workflows/ci.yml: run npm install/validate/test on node 20+22.
- Self-dogfooded `lh init --yes` in this repo, producing .agents/
  (harness.config.json, architecture.md, conventions.md, memory
  shards). `lh doctor` now reports all required checks green.
- Deduped .gitignore harness block against init's auto-managed block.

Verified: 53/53 tests pass, validate 0 errors, doctor all-green.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
2026-09-09 22:50:07 +02:00
co-authored by Copilot
parent 383129f571
commit cd36cc0efc
25 changed files with 273 additions and 20 deletions
+94
View File
@@ -0,0 +1,94 @@
{
"version": 1,
"memory": {
"root": ".agents",
"committed": [
"architecture.md",
"conventions.md",
"memory",
"specs",
"runs/*/journal.md"
],
"ignored": [
".cache",
"runs/*/events.ndjson",
"runs/*/board.md"
],
"tokenBudget": 8000,
"compactAtPercent": 85
},
"artifacts": {
"architecture": true,
"conventions": true,
"adr": true,
"journal": true,
"spec": true
},
"index": {
"include": [
"**/*"
],
"exclude": [
"**/node_modules/**",
"**/.git/**",
"**/dist/**",
"**/build/**",
"**/target/**",
"**/vendor/**",
"**/*.min.*",
"**/.agents/**"
],
"depth": 3,
"budget": 1200
},
"models": {
"tiers": {
"cheap": "claude-haiku-4.5",
"mid": "claude-sonnet-5",
"strong": "claude-opus-5"
},
"roles": {
"conductor": "strong",
"interrogator": "strong",
"scout": "cheap",
"architect": "strong",
"splitter": "mid",
"builder": "mid",
"verifier": "cheap",
"reviewer": "strong",
"integrator": "strong",
"scribe": "cheap"
}
},
"ralph": {
"maxIterations": 4,
"exitCriteria": [
"verify-commands-exit-zero",
"acceptance-criteria-checked",
"structural-gate-passes",
"reviewer-approves",
"no-out-of-scope-files"
],
"onMaxIterations": "escalate"
},
"verify": {
"commands": [
{
"name": "test",
"command": "npm run test"
}
],
"autodetected": true
},
"concurrency": {
"maxWriteLanes": 4,
"readOnlyFanOut": 6
},
"isolation": {
"backend": "worktree"
},
"context7": {
"required": true,
"envVar": "CONTEXT7_API_KEY"
}
}