Commit Graph

27 Commits

Author SHA1 Message Date
Bo 32bfaa1fa6 docs(plan): PMF blocker analysis and execution plan (#557)
## Summary

- Analyzes 7 specific PMF blockers with evidence from the repo's own
artifacts (PRODUCT.md Δ=+0.0000, 9-branch quickstart, 73-skill flat
catalog, jargon-heavy README)
- Produces a 3-wave execution plan ranked by leverage: prove lift (P0),
shrink time-to-aha (P0), narrow ICP (P1), reduce surface area (P1),
deliver compounding payoff, simplify vocabulary, expand distribution
- Companion to issue #556 which tracks the full breakdown

## Test plan

- [ ] Plan file renders correctly in GitHub markdown
- [ ] No CI regressions (doc-only addition to `docs/plans/`)

https://claude.ai/code/session_011cygz2T9XnQzK7TmS9JxHH


---
_Generated by [Claude
Code](https://claude.ai/code/session_011cygz2T9XnQzK7TmS9JxHH)_

Co-authored-by: Claude <noreply@anthropic.com>
2026-05-28 13:56:24 +00:00
Bo 631b34465d docs(3.0): ag-p7j W3 — reframe peripheral docs to in-session (ag-p7j) (#528)
## What

Worker 3 of the ag-p7j 3-way swarm reconciling stale daemon/scheduler
references for AgentOps 3.0. This worker owns the **peripheral docs**
(comparisons, examples, runbooks, plans, brainstorms, the daemon-jobspec
RFC) — pure prose edits only.

The standalone daemon (`ao daemon` / `agentopsd`), scheduler (`ao
schedule`), and overnight runner (`ao overnight`) were **deleted** in
the 3.0 rearchitecture
([ADR-0009](https://github.com/boshu2/agentops/blob/main/docs/adr/ADR-0009-daemon-deletion-in-session-only.md)).
AgentOps is **in-session only**; out-of-session orchestration is
delegated to the **Gas City reference City**. This PR mirrors
`docs/3.0.md` across the peripheral surface.

## Files changed (12)

- **Comparisons** — reframe the "off-API daemon" *feature* claim to
off-API/off-vendor **in-session operation + Gas City out-of-session
dispatch**; drop the deleted `dream-run-contract` link:
  - `docs/comparisons/competition-rpi-memory-pipelines.md`
  - `docs/comparisons/competitive-radar.md`
  - `docs/comparisons/vs-everything-claude-code.md`
  - `docs/comparisons/vs-tons-of-skills.md`
- **Examples** — replace `ao daemon`/`ao schedule` snippets with
mayor-driven `ao rpi` dispatch on the reference City; reframe
"daemon-first" → "automation-first out-of-session orchestration":
  - `docs/examples/agentops-3-council-demo-storyboard.md`
  - `docs/examples/agentops-3-domain-practice-packet.md`
  - `docs/agentops-3-explainer-kit.md`
- **Patterns** — rewrite Pattern C from `ao daemon` log tailing to
**substrate (Gas City) event tailing**:
  - `docs/patterns/completion-notifications.md`
- **Runbooks** — add 3.0 historical banners, neutralize `ao daemon jobs
submit`/`agentopsd`/`ao overnight` instructions, drop deleted
daemon-contract refs; host systemd timer reframed as host-OS timing (not
an AgentOps scheduler):
  - `docs/runbooks/nightly-evolution.md`
  - `docs/runbooks/autonomy-runtime-cycle-1.md`
- **Plans / Brainstorms** — dated historical artifacts: one-line
historical note + neutralize only active "use `ao overnight`"
instructions; remove the deleted `agentopsd` code-map reference:
  - `docs/plans/2026-05-11-evolution-roadmap.md`
-
`docs/brainstorms/2026-04-12-compiled-knowledge-workspace-requirements.md`

`docs/rfcs/0002-jobspec-openapi-v0.md` already carried the requested
superseded/historical banner (body retained), so it needed no change.

## Gate results

- `markdownlint --config .markdownlint.json` (12 changed files):
**PASS**
- `tests/docs/validate-doc-release.sh`: **PASS**
- `mkdocs build --strict`: **PASS** (0 warnings/errors attributable to
changed files)
- All 13 new ADR/contract relative links resolve; **no links to deleted
daemon contracts** remain.
- Grep of changed files for `ao daemon|agentopsd|ao schedule|ao
overnight|ao plans|ao watch`: only historical banners, explicit
disavowals ("no AgentOps daemon"), surviving real script names
(`scripts/install-nightly-scheduler.sh`), and dated-brainstorm
descriptive context covered by its banner. No active "use X"
instructions remain.
- diff stat: 164 insertions / 101 deletions — proportionate, no
anomalous data loss.

Closes-scenario: ag-p7j#w3-peripheral
Bounded-context: BC1-Corpus
Evidence: docs/comparisons/competitive-radar.md
2026-05-24 21:20:11 -04:00
Bo 2ea3c12b7a feat(evolve): --mode=burst|loop flag + mechanical write-stop-marker refusal (soc-hwax #mode-loop-flag) (#395)
## Why
/evolve self-stops in operator-driven cron sessions because its defaults
assume agent-as-operator. `--mode=loop` flips the contract: operator
owns stop signals; CLI mechanically refuses self-written STOPs.

## What changed
| Surface | Change |
|---|---|
| `cli/cmd/ao/evolve.go` | New `--mode string` flag (burst\|loop,
default burst) + `validateEvolveMode` helper called from `runEvolve` |
| `cli/cmd/ao/evolve_write_stop_marker.go` | New subcommand; refuses
with exit 1 under `--mode=loop`, writes `.agents/evolve/<MARKER>` under
burst |
| `cli/cmd/ao/evolve_test.go` | L1: `--mode=invalid` rejected; mode flag
registered with burst default |
| `cli/cmd/ao/evolve_write_stop_marker_test.go` | L2 table tests: burst
writes (DORMANT body assertion), loop refuses {dormant,stop,kill}, no
file written under refusal |
| `skills/evolve/SKILL.md` | Mode-aware HTML comments in Steps 1/3/7 +
Flag table row (only edited Steps 1/3/7 + Flag table; verified via grep
`^### Step`) |
| `skills/evolve/references/loop-mode.md` | New reference doc with
invariants + CLI primitives |
| `docs/plans/2026-05-21-evolve-loop-epic-design.md` | Epic design memo
(consumed by all 6 sub-beads of soc-g2qd) |
| `cli/docs/COMMANDS.md` | Regenerated via
`scripts/generate-cli-reference.sh` |
|
`skills-codex/{.agentops-manifest.json,evolve/.agentops-generated.json}`
| Post-edit hook source-hash refresh; `check-codex-parity-drift.sh` PASS
|

## How tested
- `go test -count=1 ./cmd/ao/` — 10175 pass, 1 skip (full suite green
after CLI-docs regen; pre-regen `TestCobraConformance` correctly flagged
the doc drift)
- `go build ./... && go vet ./...` — green
- `grep '^### Step' skills/evolve/SKILL.md` confirms only Steps 1/3/7
edited (12 Step markers preserved at same positions)
- `bash scripts/check-codex-parity-drift.sh` — PASS
- Table tests assert exact marker filename (DORMANT/STOP/KILL) + body
content for burst; for loop they assert error substring AND that no
marker file was created.

## §A7 fallback decision
**Chose in-file HTML comments** (not two-file split). Each Step comment
is one line; no conditional sections needed. Two-file split would have
ballooned the surface for a single-line contract reminder. CLI
mechanical enforcement (`write-stop-marker` refusal) is the real
invariant; SKILL.md comments only document intent for human readers.

See: docs/plans/2026-05-21-evolve-loop-epic-design.md §A1 + §A7

## TODOs the worker leaves for the epic
- Wire `cli/internal/evolve.preferences.Load()` into
`detectEvolveWriteStopMarkerMode` once soc-6svt lands (currently
flag-only).
- `ao evolve operator-stop` (Wave 2) — separate code path explicit
operator override.
- `ao evolve blocked` (Wave 2) — typed blocked event instead of STOP.

Closes-scenario: soc-hwax#mode-loop-flag
Bounded-context: BC5-Runtime
Evidence: cli/cmd/ao/evolve_write_stop_marker.go
2026-05-21 12:21:51 -04:00
Boden Fuller b8c5a3761b feat(agentops): make 3.0 hookless-first
Add DDD skill-domain contracts, hook lease inventory, replacement ports, artifact-first RPI skill boundaries, and release exact-SHA validation. Demote ao inject to a compatibility adapter and remove prompt-only default hooks.
2026-05-16 09:43:08 -04:00
Boden Fuller c5fe16f265 docs(plans): add skill catalog strangler-fig migration plan
Plan to migrate the skill catalog toward CDLC first-principles skill
definitions without a big-bang rewrite. Wraps the live SKILL.md runtime
with an advisory V2 SkillDefinition contract; skill-builder and
skill-auditor become the factory pair. Follows the dated-plan shape from
docs/plans/2026-05-11-evolution-roadmap.md.

Plan document only; no implementation artifacts introduced.
2026-05-15 20:17:02 -04:00
Boden Fuller ee763750ba docs: rename PRACTICE.md to PRACTICE-REGISTRY.md + add CDLC narrow-waist doctrine
Rescope PRACTICE.md into PRACTICE-REGISTRY.md: it now owns only the
practice-slug lineage registry, not product positioning or CDLC doctrine.
Update all references (schema, validate-practice-citations.sh, bats test,
architecture-terms.md, documentation-index.md, aggregate.go comment).

Introduce the Context Density Rule as a canonical domain concept: every
high-value context token carries intent, boundary, evidence, decision,
constraint, or next action. New domain entry context-density-rule.md (+
codex mirror). Thread the BDD/Gherkin + DDD + Hexagonal + TDD narrow waist
through cdlc.md, README.md, PRODUCT.md, GOALS.md, and the rpi/domain/
post-mortem skills. Sync codex artifacts.
2026-05-15 20:16:53 -04:00
Boden Fuller cd37602d5d docs(contracts): drift #5 resolved via audit, soc-5yuy COMPLETE (cycle 131)
Fifth and final soc-5yuy child closed. Drift #5 (Session per BC)
resolved as audit-only — too big to atomic-rename AND not
necessary, because Go's package qualifier already disambiguates
the 4 Session concepts.

Pre-rename substring audit (cycle-127 checklist):
- 342 word-bounded 'Session' refs across 6 packages (storage,
  search, formatter, forge, context, cmd/ao).
- That's 3x cycle 126's QueueClaim rename (108 refs).
- Cycle-122 lesson: large mechanical renames burn cycle time
  with high overreach risk. The cycle-126 sed-overreach added
  a learning that ratifies "audit before renaming".

Cycle 131 finding: the 4 Session concepts are already
disambiguated by package qualifier — agentworker.AgentSession,
storage.Session (= TranscriptSession by convention),
search.Session (= TranscriptSession by convention),
gascity.Session (published-API). The daemon package already has
no Session type per the contract. No rename needed.

Changes:
- ubiquitous-language.md drift #5 resolution block rewritten to
  document "package qualifier IS the disambiguator" and the 342
  word-bounded refs that would otherwise have to atomic-rename.
- ubiquitous-language.md drift-baseline table row #5 marked
  AUDITED.
- ubiquitous-language.md cycle log entry for cycle 131.
- docs/plans/2026-05-12-rescope-evolve-and-architecture.md .5
  row marked AUDITED.

soc-5yuy EPIC COMPLETE — 5 of 5 children closed:
- .1 Gate / Validator: AUDITED cycle 130 (codebase already uses
  Gate organically; 0 "Validator" in script headers)
- .2 Cycle / Run / Iteration: AUDITED cycle 129 (serialized
  contracts, Runner naming, Runtime substring-coincidence)
- .3 Claim → Lease: SHIPPED cycle 126 (108 Go refs) + corrective
  revert for over-broad sed (rpi work-item claim kept Claim
  semantics)
- .4 Skill / Pattern / Practice / Primitive: AUDITED cycle 128
  ('primitive' overload documented as 3 scoped senses)
- .5 Session per BC: AUDITED cycle 131 (THIS — 4 Session
  concepts already disambiguated by package qualifier)

Bigger arc insight (12 cycles, 119-131):
- Original catalog (cycle 58) flagged 5 drifts as "rename
  required".
- Audit-first discipline (cycles 125, 127 learnings) revealed
  4 of 5 were over-flagged — codebase was more disciplined
  than the catalog implied.
- 1 rename shipped + 4 audit-only closures + 1 sed-overreach
  correction + 1 substring-audit learning + 5 contract
  refinements.

Lesson durable in docs/learnings/2026-05-13-substring-sed-rename-
overreach.md. Pattern catalog: drift catalogs from one-shot
research mode overstate drift; incremental audit-first cycles
prevent wasted rename work.

soc-5yuy bd also closed in this cycle.

Cycle 131 / soc-5yuy.5 audit-only-resolution + epic-close mode.
2026-05-12 20:51:13 -04:00
Boden Fuller 1ffda5e577 docs(contracts): drift #1 resolved via audit (cycle 130, soc-5yuy.1)
Fourth soc-5yuy child closed. Drift #1 (Gate/Check/Validation/
Validator) resolved as audit-only — catalog overstated drift size.

Audit findings:
- Zero scripts/check-*.sh headers use the noun "Validator".
- 38 of ~90 scripts already use "Gate" in their headers; rest
  don't repeat the noun.
- cli/internal/ratchet.Validator is the only Go Validator type
  (legitimate ratchet-specific concept; not a check-script
  validator). KEEP.
- "validate"/"validates" as English verbs in header descriptions
  is fine — not a noun-confusion drift.

The "90 scripts inconsistent" claim in the catalog was wrong. The
codebase organically drifted toward "Gate" already. No renames
needed.

Changes:
- ubiquitous-language.md drift #1 resolution block rewritten to
  document the actual state.
- ubiquitous-language.md drift-baseline table row #1 marked
  AUDITED.
- ubiquitous-language.md cycle log entry for cycle 130.
- docs/plans/2026-05-12-rescope-evolve-and-architecture.md .1 row
  marked AUDITED.

This is doc-only. No code changes. soc-5yuy.1 bd closed.

soc-5yuy progress: 4 of 5 children closed. Three via audit-only
(.1 cycle 130, .2 cycle 129, .4 cycle 128) and one via rename
(.3 cycle 126). Only .5 (Session → TranscriptSession, 97 refs)
remains as the actual code-rename work.

Pattern crystallizes: when a drift catalog comes from one-shot
research mode rather than incremental observation, the actual
codebase is often more disciplined than the catalog implied.
3 of 5 cycle-128/129/130 audits resolved without renames. The
audit-first discipline (cycle 125 / 127 learnings) is now
demonstrably better than execute-first for borderline drifts.

Cycle 130 / soc-5yuy.1 audit-only-resolution mode.
2026-05-12 20:48:25 -04:00
Boden Fuller 320985b9c5 docs(contracts): drift #2 resolved via audit (cycle 129, soc-5yuy.2)
Third soc-5yuy child closed via audit-only. Drift #2 (Cycle/Loop/
Iteration/Run consistency) resolved without renames — the catalog
over-flagged this.

Audit findings:
- ~150 RPIRun* identifiers + 132 Iteration* identifiers enumerated.
- Most usage falls into one of 5 categories that are NOT drift:
  1. Serialized-contract enums (JobTypeRPIRun) — renaming breaks
     on-disk JSON job spec format and cross-process compatibility.
  2. Filesystem path constants (RPIRunRegistryDir) — renaming
     breaks registry layout.
  3. Legitimate Runner/Executor naming (RPIRunner, RPIRunExecutor)
     — these are role types, not Run-instance synonyms.
  4. Substring coincidence — RPIRuntimeCommand and RPIRuntimeMode
     contain "Run" as part of "Runtime". Not a Run concept.
  5. Scoped Dream-internal counters (overnight.IterationSummary,
     dream_subcycle.MaxIterations) — Dream's convergence-loop term,
     scoped to Dream surface only.
- rpi.RPIRun (the artifact struct) IS the canonical name for an
  RPI execution; analogous to GitHub Actions' "CI Run". Keep.

Conclusion: the codebase's Run/Iteration usage is mostly
semantically correct. Drift #2 was a contract-side mistake. The
audit IS the resolution.

Changes:
- ubiquitous-language.md drift #2 resolution block: REWRITTEN to
  document the 5 categories of correct-but-look-like-drift usage,
  with explicit "KEEP" annotations.
- ubiquitous-language.md drift-baseline table row #2: AUDITED.
- ubiquitous-language.md cycle log entry for cycle 129.
- docs/plans/2026-05-12-rescope-evolve-and-architecture.md .2 row
  marked AUDITED.

This is doc-only. No code changes. soc-5yuy.2 bd closed with
reason linking to this commit.

soc-5yuy progress: 3 of 5 children closed (.3 cycle 126 via
rename, .4 cycle 128 via audit, .2 cycle 129 via audit). Two
remaining: .1 (Gate/Validator) + .5 (Session/TranscriptSession) —
both still rename-required but with substring-overreach warnings
baked in from cycle 127.

Pattern note: the same cycle-126 substring-audit applied to a
catalog flag and revealed the catalog was wrong, not that the code
needed renaming. The audit-first discipline (cycles 125, 128, 129)
is now demonstrably better than execute-first for borderline
drifts.

Cycle 129 / soc-5yuy.2 audit-only-resolution mode.
2026-05-12 20:46:30 -04:00
Boden Fuller 3117933203 docs(contracts): drift #4 resolved via audit (cycle 128, soc-5yuy.4)
Second soc-5yuy child closed. Drift #4 (Skill/Pattern/Practice/
Primitive cross-reference consistency) resolved as audit-only — no
code renames needed.

Audit findings:
- Skill is consistently "invokable harness module" across all SKILL.md
  files. No drift.
- Pattern is consistently "reusable promoted knowledge". No drift.
- Practice is consistently "citation annotation in primitive
  frontmatter". No drift.
- Primitive IS overloaded — three distinct concepts share the word:

  1. BC1 Corpus Primitive (the annotated unit; canonical sense for
     the cross-cutting `practices: [slug]` annotation)
  2. Domain Primitive (skills/domain/ — 6 structural primitives:
     Entry, Index, Citation, Primitive, Slice, Anti-Pattern)
  3. Runtime primitive (skills/converter/ + skills/standards/ —
     atomic tool/feature exposed by a runtime, e.g., a Claude-only
     hook event)

  The 3 senses do NOT conflict because each is scoped to its own
  surface (BC1 cross-cutting vs the domain skill only vs converter
  + standards). No renames are needed — the audit IS the resolution.

Changes:
- ubiquitous-language.md drift #4 section: added a sub-overload
  table enumerating all 3 `primitive` senses with their scope
  + distinguishing context.
- ubiquitous-language.md drift-baseline table row #4: marked
  AUDITED cycle 128.
- ubiquitous-language.md cycle log entry for cycle 128.
- docs/plans/2026-05-12-rescope-evolve-and-architecture.md:
  marked .4 done.

This is doc-only. No code changes. soc-5yuy.4 bd closed with
reason linking to this commit.

soc-5yuy progress: 2 of 5 children closed (.3 cycle 126 via
rename, .4 cycle 128 via audit). Three rename-required children
(.1, .2, .5) still open with the cycle-127 substring-overreach
warning baked into their descriptions.

Cycle-shape note: "audit-only" is a legitimate cycle-sized
deliverable when the catalog turns out to NOT reflect real
drift. Cycle 125 also did contract-refinement after audit
(drift #5). Cycle 128 takes the simpler path — surveyed and
documented the overload as scoped, no follow-up code work
needed.

Cycle 128 / soc-5yuy.4 audit-only-resolution mode.
2026-05-12 20:44:07 -04:00
Boden Fuller 4c74bc8d4d refactor(daemon): rename QueueClaim → QueueLease (soc-5yuy.3, drift #3)
First soc-5yuy child to close. Mechanical rename of `daemon.QueueClaim`
to `daemon.QueueLease` across 108 Go references in 28 files —
cli/internal/daemon (76 refs), cli/cmd/ao (22), cli/internal/rpi
(7), cli/internal/llmwiki (3). Resolves drift #3 from
docs/contracts/ubiquitous-language.md.

Why QueueLease, not QueueClaim:
- `Claim` is the BC2 noun for what the project says publicly
  (e.g., AOP-CLAIM-*, factory-claim-ledger.json).
- The daemon's QueueClaim was semantically a LEASE on a job slot
  with a token + expiration, not a public assertion. The struct
  has fields `ClaimToken`, `LeaseEpoch`, `LeaseExpiresAt` — three
  out of four already named "Lease".
- The name collision tax was real: a fresh contributor reading
  factory-claim-ledger could not tell whether daemon.QueueClaim
  was the same concept.

Audit-then-execute (cycle-125 pattern):
1. Pre-rename audit: counted refs by package (76+22+7+3+5+0).
2. Checked for split-concept surprise (cycle-125 lesson): all 111
   baseline refs are the same concept (no Session-like split).
3. Checked for serialization keys: no `"queue_claim"` JSON tags;
   no string literals containing "QueueClaim".
4. Then bulk sed across 4 Go packages; build clean; vet clean;
   tests pass (daemon 11s, rpi 4s, llmwiki 0.1s, cmd/ao 53s).

Docs updated:
- docs/contracts/ubiquitous-language.md drift #3 resolution
  block, schedule table row, baseline table row, and cycle log
  entry — all reflect "DONE cycle 126" + "0 refs (from 111)".
- docs/plans/2026-05-12-rescope-evolve-and-architecture.md soc-5yuy
  .3 row marked DONE.

soc-5yuy.3 bd closed with reason linking to this commit.

Net delta: 113 insertions, 112 deletions across 28 files. Zero
QueueClaim refs remain in tracked code/docs (testdata excluded —
those are immutable transcript fixtures).

Cycle 126 / soc-5yuy.3 audit-then-execute mode (first real rename
following the audit-then-execute discipline from cycle 125).
2026-05-12 20:37:25 -04:00
Boden Fuller 3022cdf8e7 docs(learnings): durable-export the 2026-05-11 evolve-friction learning
Cycle 45 commit cc21ec2d landed 6 patches to skills/evolve/SKILL.md
sourced from .agents/learnings/2026-05-11-evolve-skill-friction-from-
13-cycle-session.md — a learning file that lived only in operator-
local .agents/ runtime state. docs/plans/2026-05-11-evolution-roadmap.md
referenced that path, but the file is gitignored and missing from
this worktree (and from every checkout that isn't the original
authoring session). Future value audits depending on the rationale
couldn't find it.

Per soc-w6vh.5 acceptance: export to durable surface
(docs/learnings/) and update referrers. Content reconstructed from
cycle 45's commit body, cycle 51's hypotheses.jsonl (verdicts on the
6 patches as of cycle 51), and the cycle-45-49 retro post-mortem.

The exported version goes beyond the original: it includes the
hypothesis verdicts from cycle 51 (H45.2 + H45.3 FALSIFIED; H45.6
VERIFIED) so future readers see not just the original rationale but
the durability of each patch.

Matches the cycle-46/47 PG4 evidence-file shape (docs/releases/
v2.39.0-claims/*.md) — durable export of local-only rationale to a
public, version-controlled surface.

Code-driven fitness: durable learning evidence files 0 → 1;
references in docs/plans/ pointing at local-only .agents/ paths: 2 → 0.

Cycle 61 / bd-driven mode. Bead soc-w6vh.5 acceptance partially met
(export done + references updated). Second clause — validation check
catches docs references to absent .agents/learnings files — deferred
to a follow-up bead.
2026-05-12 15:25:39 -04:00
Boden Fuller c089d2e93d docs(plans): land 2026-05-12 rescope under tracked plans surface
Tracks the rescope plan that reorganizes evolve-improvement work under
5 bounded-context epics + 1 cross-cutting epic, sourced from the
operator's exemplar commit shape (1b9d139c → f62295f7).

Companion artifacts (gitignored research / post-mortems, local-only):
- .agents/research/2026-05-12-repo-direction-map.md
- .agents/research/2026-05-12-bounded-contexts-and-ports.md
- .agents/post-mortems/2026-05-12-evolve-session-improvement-postmortem.md

BD state filed in same cycle (durable in dolt, not in this commit):
- 6 NEW epics: soc-2c1p (BC1), soc-wxh5 (BC2), soc-y5vh (BC3),
  soc-2klg (BC4), soc-zd7c (BC5), soc-5yuy (cross-cutting)
- CLOSED soc-z8rt + 8 children (catch-all retired; children migrated
  to BC homes with traceable close reasons)

Matches the docs/plans/2026-05-11-evolution-roadmap.md sibling
pattern: plan tracked alongside bd state for operator visibility and
durable rationale. The plan IS the structural drift-block — reader
verifies bd state by listing BC labels and matching to plan sections.

Code-driven fitness: open evolve-improvement parent epics 1 (soc-z8rt
catch-all) → 6 (5 BC-aligned + 1 cross-cutting); orphan z8rt children
8 → 0 (all migrated or closed).

Cycle 53 / wave 1.2 of the 2026-05-12 rescope.
2026-05-12 12:46:53 -04:00
Boden Fuller c02661de8a plan(evolve): add Learning Capture epic — daily self-reflection compounds across days
Three-layer protocol so each /evolve day improves the next:
1. Per-cycle micro-capture: 1 line to .agents/evolve/daily-learning-log-YYYY-MM-DD.md
2. Every-5th-productive reflect: pattern annotation inline in cycle-history note;
   3+-occurrence frictions matching prior days auto-file an evolve-improvement bead
3. End-of-day consolidate via scripts/evolve-capture-daily-learning.sh:
   - Reads daily log + cycle-history (filtered to today)
   - Writes .agents/learnings/YYYY-MM-DD-evolve-loop-learnings.md with counts,
     ledger, frictions, recurring patterns
   - Auto-files LC-followup beads (label: evolution-roadmap,evolve-improvement)
     for any FRICTION tag that recurred on 2+ days
   - Idempotent (re-run overwrites today's consolidated file; daily log untouched)
   - Supports --dry-run

Seeder updates:
- LC epic + LC1 leaf bead added (closes loop on the loop's own behavior)
- Pagination bug fixed: bd list --status=open --json (default 50 cap) caused
  duplicate beads on re-run when total open > 50. Changed all idempotency
  checks to bd list --status=open --limit 0 --json. Re-run is now safely
  idempotent — verified with dry-run reporting 41 skips, 0 would-create.
- 13 duplicate beads from the prior re-run already closed manually with
  reason="duplicate from seeder idempotency bug"; their close is the
  evidence the bug existed and is now fixed.

Road-map plan extended with LC section + table entry. 41 evolution-roadmap
labeled beads now open (39 original + LC epic + LC1).

Local-only artifacts (in .agents/, gitignored by policy):
- .agents/evolve/all-day-starter-prompt.md (revised with mandatory steps 9-10
  + end-of-day consolidator invocation)
- .agents/evolve/daily-learning-log.template.md (tag taxonomy + examples)
- .agents/evolve/daily-learning-log-2026-05-11.md (seeded for smoke test)
2026-05-11 08:57:38 -04:00
Boden Fuller d9ba7c948f plan(evolve): enumerate evolution road map + seed 39 beads under evolution-roadmap label
docs/plans/2026-05-11-evolution-roadmap.md is the durable plan: 8 epics, 39 beads,
explicit drain order. Closes the structural friction the 13-cycle 2026-05-11 /evolve
session surfaced — the loop was picking from bd ready / next-work.jsonl but the
LARGEST work source in this repo is the gap between aspirational docs
(PRODUCT.md / GOALS.md / PRACTICE.md / docs/contracts/ / docs/code-map/) and what
the code actually does. The road map enumerates that gap.

Epics filed (12 parents + 27 leaves = 39 beads, all labeled evolution-roadmap):
- E1 soc-ymph: Close 11 GOALS.md directive gaps (D1-D11)
- E2 soc-45sg: Promote 5 Roadmap gates to CI-blocking (G1-G5)
- E3 soc-dec2: Close 8 PRODUCT.md Known Product Gaps (PG1-PG11, some merged)
- E4 soc-3q1l: Polish 4 product layers (L1-L4)
- E5 soc-m47k: Three-gap contract super-gates (TG1-TG3)
- A1 soc-waod: AOP-CLAIM evidence map audit (83 markers → N follow-ups)
- A2 soc-nzji: Contract enforcement matrix audit (38 contracts → N follow-ups)
- A3 soc-cd32: Code-map drift report (2 maps → N follow-ups)

scripts/seed-evolution-roadmap-beads.sh is idempotent (--dry-run preview supported)
and safe to re-run; uses bd list title-match for idempotency.

Drain priority order documented in the plan; the all-day starter prompt
(.agents/evolve/all-day-starter-prompt.md, local only since .agents/ is gitignored)
references it. First-cycle target: soc-ymph.7 (D7: Codex parity drift to zero).
2026-05-11 08:49:50 -04:00
Boden Fuller ec188aca25 fix(docs): rename docs/INDEX.md -> docs/documentation-index.md to resolve case collision with docs/index.md
docs/INDEX.md (contract catalog) and docs/index.md (MkDocs landing) shared the
same case-folded name on case-insensitive filesystems, leaving the working tree
in a phantom-modified state and breaking contract-compatibility-gate when the
script read whichever file the OS resolved at run time.

Resolves TASK-1 + TASK-2 of .agents/plans/2026-04-26-resolve-docs-index-case-collision.md:
- Move catalog content from HEAD:docs/INDEX.md into docs/documentation-index.md
- Repoint contract validators (scripts/check-contract-compatibility.sh,
  scripts/contract-orphans-allowlist.txt) and their tests at the new path
- Update navigation references across README.md, AGENTS.md, CLAUDE.md, and the
  docs/ tree (newcomer-guide, CONTRIBUTING, CI-CD, plans/, positioning/,
  templates/, contract examples)
- Replace stale docs/README.md mentions in CLAUDE.md / AGENTS.md / repo-execution
  profile example with docs/index.md (the actual MkDocs landing)

Verification:
- bash scripts/check-contract-compatibility.sh -> 0 failures, 24 contracts catalogued
- bash tests/scripts/test-contract-compatibility-gate.sh -> 7/7 PASS (verified pre-rebase)
- bash tests/skills/test-repo-native-orchestration.sh -> 28/28 PASS (verified pre-rebase)
- git ls-files | awk casefold-dup scan -> empty

TASK-3 (casefold-collision guard script) and TASK-4 (worktree disposition) from
the plan remain to be done in a follow-up.
2026-04-26 19:32:13 -04:00
Boden Fuller 1e073d8363 chore: purge archived AO↔Olympus bridge integration + prefer local Go in precommit hook
Olympus (ol) was the power-user daemon predecessor to AgentOps, archived
in strategic-direction.md. The bridge contracts (SPEC_ONLY, never
enforced), MemRL policy surface, OL quarantine constraints collector, and
supporting scripts/tests all referenced a now-dead integration. Purging
them removes ~2400 lines of stale surface area.

## Deleted files
- docs/ol-bridge-contracts.md
- docs/architecture/ao-olympus-ownership-matrix.md
- docs/plans/2026-02-13-ao-olympus-bridge-next-steps.md
- docs/contracts/memrl-policy-integration.md
- docs/contracts/memrl-policy.schema.json
- docs/contracts/memrl-policy.profile.example.json
- cli/cmd/ao/inject_ol_test.go
- skills/vibe/scripts/ol-validate.sh + codex mirror
- skills-codex/swarm/scripts/ol-ratchet.sh, ol-wave-loader.sh
- tests/ol-integration/ (entire directory)

## CLI code stripped
- internal/search/types.go: OLConstraint struct + InjectedKnowledge.OLConstraints field
- internal/search/inject_run.go: CollectOLConstraints, WriteConstraintsSection, quarantineRelPath const, all related trim/render logic
- cmd/ao/inject.go: gatherOLConstraints, collectOLConstraints wrapper, olConstraint type alias, init-time call site
- Package comments in provenance/storage/types/formatter updated "olympus" → "agentops"
- formatter/markdown.go: session tag "olympus" → "agentops" (+ test update)
- Tests: deleted TestCollectOLConstraints + TestInject_collectOLConstraints, stripped OL subtests from TestFormatKnowledgeMarkdown and TestInject_*, renamed "olympus" literal test data to "other-repo"
- rpi_phased_context.go: stripped "matches Olympus DefaultTimeout" and "Modeled on Olympus internal/git/worktree.go" comments

## Docs + skills stripped
- mkdocs.yml nav: 3 entries removed (AO-Olympus Matrix, MemRL Policy, OL-AO Bridge)
- docs/INDEX.md, contracts/index.md, architecture/index.md, index.md: cross-refs removed
- strategic-direction.md: retirement rationale compressed to one paragraph
- docs/context-packet.md, positioning/devops-for-vibe-coding.md, plans/README.md: OL-specific content removed
- skills/vibe/SKILL.md + codex mirror, swarm/SKILL.md: OL script refs removed
- skills/vibe/references/deep-checks.md, plan/references/planning-rules.md (+ codex), pre-mortem/references/council-fail-patterns.md (+ codex): OL rule/pattern entries removed
- skills-codex hashes regenerated (plan, pre-mortem, swarm, vibe)

## Precommit hook fix
- hooks/go-test-precommit.sh: prefer ~/.local/go/bin/go when present. Hooks
  don't inherit interactive-shell PATH, so apt-provided go-1.22 would
  otherwise override a user-local 1.26 install. Mirrors the zshrc pattern.

## Retained (historical / useful)
- strategic-direction.md: 1-paragraph archival note
- Historical release notes (docs/releases/*.md) — immutable past-release record
- cli/testdata/transcripts/real-2.4mb.jsonl — captured test fixture
- docs/brownian-ratchet.md ol-rg3p bead-ID refs — internal bead prefix, not Olympus

## Verification
- go build ./... && go vet ./... clean
- go test ./... clean except pre-existing TestGCBridgeVersion_Live panic
- scripts/docs-build.sh --check (mkdocs strict) clean
- scripts/check-contract-compatibility.sh passes
- scripts/regen-codex-hashes.sh run — 4 skills updated
2026-04-19 14:33:00 -04:00
Boden Fuller 6d80baf689 docs: align product framing across onboarding surfaces 2026-04-09 15:45:04 -04:00
Boden Fuller 3eb679c6f6 feat(knowledge): rename athena → compile + add Karpathy-style knowledge compiler
Rename the athena skill to compile — a descriptive name that communicates
what it actually does. Extend with Karpathy's LLM Knowledge Bases architecture:

- New compile phase: LLM reads raw .agents/ artifacts and produces interlinked
  markdown wiki at .agents/compiled/ with index.md, log.md, backlinks
- New lint phase: detects contradictions, orphan pages, stale claims, coverage gaps
- Pluggable compute backend via AGENTOPS_COMPILE_RUNTIME (ollama|claude|openai)
- Hash-based incremental compilation (only recompile changed sources)
- compile.sh engine with security fixes (no shell injection, path traversal guard)
- Full rename across 93 files: skills, docs, CLI, tests, hooks, scripts, codex

Existing Mine → Grow → Defrag cycle preserved as phases within the larger
compile workflow. No vector DB — compiled wiki IS the retrieval layer.
2026-04-05 17:57:40 -04:00
Bo 69630a8de0 feat: add knowledge activation skill and CLI surfaces (#87)
* feat: add knowledge activation skill and CLI surfaces

* chore: sync embedded skills and codex artifact hashes

* test: cover quality signals hook in bats suite
2026-04-01 20:53:17 -04:00
Test User b6e16585e2 feat(search): wrap ao search around upstream cass 2026-03-22 15:48:15 -04:00
Boden Fuller 4fd2512c87 refactor: flatten CLI namespace and liquidate debt
Remove 5 namespace parent commands (know, work, quality, settings, start)
and register all 49 leaf commands directly on rootCmd. Flat namespace is
simpler for users; GroupID-based help provides visual grouping without
requiring namespace tokens.

Namespace flattening (184 files):
- Delete know.go, work.go, quality.go, settings.go, start.go
- Invert deprecatedCommands map (old namespace paths → flat paths)
- Update 127 consumer files (hooks, skills, docs, scripts, tests)

Debt liquidation (7 items from post-mortem):
- Fix 62 broken smoke test invocations
- Delete 118 LOC dead deprecatedAlias code
- Widen doctor scan to docs/, scripts/, and subdirectories
- Expand expectedCmds test to all 49 commands (floor 45)
- Add bidirectional expectedCmds sync check
- Create sweep-namespace-references.sh automation
- Fix EXPECTED_COMMANDS array to list flat commands
- Escape sed variables in sweep script

All Go tests pass (36s). All conformance checks pass.
2026-02-26 09:27:38 -05:00
Boden Fuller a539546d33 codex installer: ship no-clone install flow and docs sync 2026-02-26 06:24:21 -05:00
Boden Fuller 0f78b56c17 docs: extract 29 unconsumed next-work improvements 2026-02-24 13:09:48 -05:00
Boden Fuller f5ea600625 docs: explicitly include 10 ag-poz next-work items 2026-02-24 12:56:27 -05:00
Boden Fuller 891384386c docs: add comprehensive improvements extraction plan 2026-02-24 12:56:13 -05:00
Boden Fuller 37d4b5b2ae Merge branch 'codex/rpi-supervisor-cli' into main 2026-02-21 19:41:50 -05:00