Commit Graph

38 Commits

Author SHA1 Message Date
Bo af1e530159 Adopt CDLC contracts and reconcile BD tooling (#1108)
AgentOps now describes the selected Context Delivery Lifecycle alongside
standalone RPI: external reviewed memory, native work and runtime
ownership, independent validation, and explicit limits on what the
pilots proved. The active ADRs name which historical prescriptions are
superseded and which invariants remain.

This integrates the BD foundation, including doctor diagnostics that
distinguish BD from BR and protection against private tracker data
entering outgoing Git history. It also fixes skills audit resolution of
explicit relative reference paths. Source-owned projections were
regenerated, and the landed stopping behavior is preserved.

Validation: Go build/vet/test and race/shuffle, 1,325 Bats cases, the
local aggregate, and full AO gates. The gate registry reports 71 passes
and one nonblocking preamble-adoption failure on the existing report
script; that advisory remains disclosed. Historical probe receipts whose
source hashes changed remain historical evidence.

This is foundation adoption. It does not claim that the later memory,
goal, background, privacy-release, or benefit-measurement work is
implemented.

Independent Astra and Fable judgments both PASS over the exact
integrated content. Earlier negative results and their factual
resolution remain preserved in private work evidence.
2026-09-07 19:07:21 -04:00
boshu 5bdbb5fd09 refactor: simplify AgentOps loop and harden CLI 2026-07-15 19:17:08 -04:00
boshu cb2a7ac398 refactor: complete the cathedral cut 2026-07-15 00:21:02 -04:00
boshu a9504a8a62 docs: cut root AGENTS siblings and densify retain contracts
Migrate SYSTEM and AGENTS-{WORKFLOW,CI,CODEX,RUNTIME} into docs owners,
retarget consumers, rewrite the split gate, and craft-densify AGENTS,
README, PRODUCT, and GOALS under the documentation authority graph.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-14 17:39:11 -04:00
Boden Fuller fbba8af5ac feat: land audit hardening and goal-design workflow 2026-07-09 12:20:53 -04:00
boshu 6042703661 feat(cli): surface the standing pawl-service on 'ao pawl' (up/down/health/route/metrics)
The bead intent is 'ao pawl up / ao pawl route / ao pawl metrics', but those lived only
in scripts/pawl.sh ('bash scripts/pawl.sh <cmd>'); 'ao pawl' exposed only 'review'. Wire
the 5 service subcommands into the ao CLI (each forwards verbatim to scripts/pawl.sh and
propagates its exit code via pawlReviewExitError — so a REFUTED route exits non-zero
through ao). + 2 cmd/ao tests (exit-code propagation; subcommand registration) + 4 honest
cmdao-surface-allowlist rows (live-ATM service commands + bats-covered metrics). Completes
the ao pawl surface; the standing warm-duel service is now first-class on the CLI.

age-standing-pawl-service-ml8
2026-06-23 18:25:01 -04:00
Boden Fuller 23769dff5f fix(beads): resolve canonical ledger from worktrees (age-worktree-beads-ledger-guard-c1u1) 2026-06-19 22:34:07 -04:00
Boden Fuller 7e447c02b5 docs(destale): wave 2 + ratchet — all live docs off retired tech (age-docs-staleness-remediation-cko)
Completes the staleness epic. 42 P2/P3 files converged to current truth
(bd→br, gascity/gt-sling/mayor→NTM+Agent Mail, daemon→substrate, hooks→hookless,
CI-authoritative→push-to-main local Go gate); GLOSSARY's 18 dead skills/* links
repaired to ../skills/<name>/SKILL.md (19 links, 0 broken); contracts/runbooks
that freeze retired-system nouns bannered RETIRED/HISTORICAL rather than rewritten.

Adds the Arc-7 ratchet — scripts/check-docs-no-retired-tech.sh — which scans all
live docs (260) for retired-subsystem commands/phrases and fails on regression.
A doc opts out by carrying a RETIRED/HISTORICAL/SUPERSEDED banner (or being an
ADR / migration / upgrade / index doc), and lines that describe a removal are not
flagged. Running it caught 12 stale refs the deep-read sweep missed — a
"CI is the authoritative gate" cluster (agentops-brief, primitive-chains,
INCIDENT-RUNBOOK, knowledge-flywheel, philosophy, software-factory), stale
hook-smoke in release-e2e-checklist, and GasCity descriptors in
contracts/index + SCHEMAS + strategic-direction — now fixed. Gate: PASS.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 10:29:17 -04:00
Boden Fuller db911aad56 docs(destale): wave 1 — P1 docs stop referencing retired tech (age-docs-staleness-remediation-cko)
The 16 highest-risk live docs (onboarding, L3/L5 tutorials, demo storyboards,
gate-authority doctrine, troubleshooting) that would actively mislead an agent.
13 rewritten to current truth, 3 historical-by-nature docs bannered RETIRED:

- bd <cmd> → BEADS_DIR=$PWD/_beads br <cmd>; .beads/issues.jsonl → _beads/;
  pip install beads → install br; dropped bd vc status/Dolt → git -C _beads push
- Gas City/gastown/gt-sling/mayor/using-gc → NTM + MCP Agent Mail; /rpi & ao rpi
  framed load-bearing legacy, operating loop is primary
- "CI is authoritative / branch protection blocks main / open a PR" → push-to-main,
  local pre-push Go gate is routine authority, validate.yml a backstop
- bannered RETIRED/HISTORICAL (body kept): runbooks/bd-server-mode-closeout.md,
  runbooks/beads-failure-recovery.md, contracts/remote-compute.md

Verified: git scope = exactly the 16 P1 files; independent grep finds no residual
live stale pattern in rewrites; all 3 banners present. Wave 2 (P2/P3) next.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-17 10:13:30 -04:00
Boden Fuller c8793c5088 docs(gates): align Go gate authority (ag-codex-runtime-enhancement-o0nds.8.1) 2026-06-12 10:01:54 -04:00
Boden Fuller b5570cd3e6 docs(runbooks): beads-failure recovery + bash-gate sunset criterion (cp-4jac)
- docs/runbooks/beads-failure-recovery.md: what to do when bd fails mid-work
  (FM1-FM5: dolt unreachable, divergent board, orphaned beads, merge-eaten
  closes, lock contention) incl. the audited AGENTOPS_GATE_DISABLED=1 bypass;
  taxonomy from control-plane cp-cwiy (br-reconcile) + cp-7cko family.
- docs/runbooks/bash-gate-sunset.md: explicit 4-part death-date condition for
  scripts/pre-push-gate.sh + the AGENTOPS_GATE_BASH hatch (PB3 cp-v8m.2,
  coverage-equivalence with deferredBacking drained, 30-day real-push bake,
  retirement-ledger entry cp-retirement-ledger-mjdm); execution = cp-v8m.6.
- tracking bead filed: ag-ltjq.

Bead: cp-4jac
2026-06-09 19:29:00 -04:00
Bo dee7a35023 fix(runtime): disable Claude print team-runner path (ag-eli0.1 #team-runner-law0) (#834)
## Summary

- Make `lib/scripts/team-runner.sh` Codex-only and reject `runtime:
"claude"` before worker spawn.
- Tighten `lib/schemas/team-spec.json` to `runtime: codex` and update
team-runner fixtures/tests.
- Rewrite the headless invocation contract around LAW 0 and the Codex
runner path.
- Carry current-main CI drift repairs: markdownlint style fixes for
ag-qidx docs and regenerated `registry.json` for `ao refinery`.

Closes-scenario: ag-eli0.1#team-runner-law0
Bounded-context: BC5-Runtime
Evidence: shellcheck

## Test plan

- [x] `bash -n lib/scripts/team-runner.sh
lib/scripts/watch-codex-stream.sh lib/scripts/watch-claude-stream.sh
tests/team-runner/test-runner-dry-run.sh
tests/team-runner/test-schemas.sh`
- [x] `shellcheck lib/scripts/team-runner.sh
tests/team-runner/test-runner-dry-run.sh
tests/team-runner/test-schemas.sh`
- [x] `bash tests/team-runner/run-all.sh`
- [x] `bash /Users/bo/acfs/skill-pipeline/scripts/no-api-print-scan.sh
"$PWD/skills" "$PWD/scripts" "$PWD/hooks" "$PWD/lib"
"$PWD/tests/team-runner"`
- [x] `bash scripts/check-registry-drift.sh`
- [x] `markdownlint-cli2 docs/handoffs/2026-06-07-ag-qidx-postmortem.md
docs/runbooks/bushido-refinery.md
docs/contracts/headless-invocation-standards.md`
- [x] `git diff --check`
- [x] fast pre-push gate passed locally except AP#7 before this Evidence
trailer correction
2026-06-07 12:30:13 -04:00
Boden Fuller cba058c6ab feat(refinery): ao refinery backstop daemon (ag-qidx P2.1-2.4,2.6)
The bushido continuous-validation backstop: watch main -> full gate on each new
commit -> classify deterministic-vs-flaky (re-run N=3; the 18-30% flake rate
makes naive escalation noise) -> on deterministic blocking FAIL: poison beacon
(.refinery-poison + git note) + fix-bead (bd create) + alert. NEVER reverts
(P2.5 quorum-gated revert deferred to ag-k99u). Backstop-not-gatekeeper: down =
merges still succeed; resumes from .refinery-state. Injectable ports (git/bd/
gates adapters); core tested with fakes (deterministic escalates, flaky doesn't,
green clears, never-reverts). ao refinery once|run; systemd unit + runbook for
bushido. go test green. ag-qidx.
2026-06-07 10:57:08 -04:00
Bo 0085175186 docs(runbooks): PR creation from linked worktrees (ag-9zls #worktree-pr-runbook) (#775)
## What

Adds `docs/runbooks/pr-creation-from-linked-worktrees.md` — root cause +
verified fix for the background-agent bug `ag-9zls`: *"No branch name
available for PR creation"* from linked-worktree branches.

## Root cause (verified live)

`git worktree add -b <branch> origin/main` inherits upstream tracking
from the start point, so `branch.<branch>.merge = refs/heads/main`. Any
PR tool that infers the **head** from upstream config resolves it to
`main` → no distinct head → the error. The branch is pushed and real;
only the *inferred* head is wrong.

```
BEFORE push -u:  branch.<b>.merge = refs/heads/main      @{u} = origin/main
AFTER  push -u:  branch.<b>.merge = refs/heads/<b>       @{u} = origin/<b>
```

## Fix

`git push -u origin HEAD:<branch>` rewrites tracking to the branch
itself; always pass `--head <branch>` to PR creation. Runbook gives a
three-tier path (gh `--head` / `gh api` / compare-URL fallback for
no-write-token agents) plus prevention.

## Evidence

This PR was itself opened from the linked worktree
`docs/ag-9zls-worktree-pr-runbook` using the documented Tier-1 path —
the before/after tracking flip was captured live.

## Checks
- markdownlint (repo `.markdownlint.json`): pass
- Indexed in `docs/documentation-index.md`

Closes-scenario: ag-9zls#worktree-pr-runbook
Bounded-context: BC5-Runtime
Evidence: docs/runbooks/pr-creation-from-linked-worktrees.md
2026-06-07 13:04:57 +00:00
Bo 6072dceac5 docs(substrate): reconcile doctrine — skill-dispatch + drop Gas City reference (ag-88y5 #docs-skills-dispatch-reframe) (#696)
## What
Two bounded doctrine-reconciliation slices (one coherent arc):

**ag-88y5** — the out-of-session dispatch unit is the `/rpi`·`/evolve`
**skill**, not the `ao rpi`/`ao evolve` CLI. Per the 3.0
skills-are-the-runtime thesis (using-ntm #693 already frames it this
way), re-narrate the **live** doctrine surfaces so the substrate spawns
an agent that *runs the /rpi skill* over a bead:
- docs/3.0.md, docs/architecture/canonical-loop-model.md,
docs/runbooks/nightly-evolution.md
- skills/using-agentops, skills/agent-native,
skills/domain/references/factory.md

Historical surfaces (MIGRATION-3.0, ADR-0009, release notes) +
CLI-reference left as-is; the actual `ao rpi`/`ao evolve` CLI removal is
the **ag-iowf** epic (live automation callers — overnight-evolve,
release-smoke — must migrate first).

**ag-ogp5** — drop the 4 docs still asserting Gas City as THE reference
substrate → NTM+MCP+managed-agents:
- docs/ARCHITECTURE.md, docs/SCHEMAS.md,
docs/contracts/agents-write-surfaces.md,
docs/patterns/completion-notifications.md (Pattern C)

The ~37 historical/illustrative GC refs are intentionally retained (per
ag-ogp5 scope).

## Verification
regen-all --check, embedded-sync, heal --strict, registry-drift,
codex-rpi-contract, codex-artifacts --scope head — all green.

Closes-scenario: ag-88y5#docs-skills-dispatch-reframe
Bounded-context: BC4-Factory
Evidence: docs/3.0.md
2026-06-03 12:11:23 +00:00
Bo 94397478d1 docs(runbooks): re-narrate Gas City orchestration to NTM+MCP+managed-agents (ag-r6g1 #runbooks-slice) (#690)
## What

Round-3 Gas City doctrine sweep — **operator-runbooks slice**
(**ag-r6g1**). Both runbooks framed out-of-session orchestration as the
"Gas City reference City" with GC-specific mechanics (mayor + refinery
agents, Gas City cron Orders). Re-narrated to the canonical substrate
**NTM + MCP + managed-agents** per [`docs/3.0.md`](docs/3.0.md).

## Surfaces (2 files, +20 −18)

- `docs/runbooks/nightly-evolution.md` — 3.0-note header, Architecture
table rows (reference-City + `/dream` dispatch), out-of-session prose,
First-Safe-Run note, recurring-runs note, Vendor-Policy Dream-handoff +
substrate bullet. Mayor/refinery → NTM swarm + workers; Gas City cron
Order → managed-agent driver or cron.
- `docs/runbooks/autonomy-runtime-cycle-1.md` — 3.0-note header, dry-run
guidance, observability bullet, operator-notes line.

Kept the correct "AgentOps ships no daemon/scheduler" framing and Mt.
Olympus (separate sovereign runtime) untouched.

## Scope

This clears the **operator-facing** surfaces. ag-r6g1's remaining refs
are descriptive comparison/example/explainer mentions (illustrative
"dispatched on the Gas City reference City") — a final low-priority
slice.

## Verification

- markdownlint 0 errors · `regen-all.sh --check` ALL GREEN (docs-only).

Closes-scenario: ag-r6g1#runbooks-slice
Bounded-context: BC1-Corpus
Evidence: docs/runbooks/nightly-evolution.md
2026-06-02 16:20:16 -04:00
Bo ef4aa67933 docs(eval): operator runbook for the Outcomes holdout-safety gates (ag-ko5rj #outcomes-operator-runbook) (#630)
## What

An operator runbook (`docs/runbooks/outcomes-grading.md`) for the
**Outcomes-grading lane** as delivered on `main` — the holdout-safe
projection of the LOCKED eval substrate built across this session's 6
merged PRs (#624/#626/#627/#628/#629):

- **compile** → holdout-safe Rubric (`additionalProperties:false` leak
guard, by-construction + re-scan strip),
- **ingest** → one council verdict,
- **gate #2** (`--expect-judge-hash`) rubric-drift parity refuse +
unchecked-parity warn,
- **gate #3** (`--burn-ledger`) holdout-quota refuse + cross-invocation
persistence.

Leads with the load-bearing rule — **Managed Agents are NOT ZDR; the
holdout never ships** — and a when-cloud-vs-local decision table + a
holdout-safety guard summary.

## Honest scope

Documents the **completed gates only**. The end-to-end
Knowledge-Flywheel close (run-manifest emission), global-Dolt burn
ledger, the `--score/--suite/--bead` interface, and the Qwen3.6 grader
are listed as **open follow-ons** (ag-fy6e / ag-vwiv / ag-62g68 /
ag-2hi41) — not claimed as done. The validation/ratchet **SKILL.md**
integration remains the open part of ag-ko5rj; this is the
standalone-runbook slice.

## Risk

Docs-only, single new file. `docs/runbooks/` is nav-exempt (`mkdocs.yml`
`strict:false`, no runbooks in nav) and not a catalogued-contract
surface → no nav/catalogue gate. Referenced contracts
(`outcomes-rubric-projection.md`, `eval-verdict-pipeline.md`) both
exist.

Closes-scenario: ag-ko5rj#outcomes-operator-runbook
Bounded-context: BC4-Evaluation
Evidence: docs/runbooks/outcomes-grading.md
2026-05-30 08:48:18 -04: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 ee748d580d feat(rip)!: retire factory command + contract corpus (soc-2rtm0 #cascade-rip) (#512)
**Wave 1 of the orchestration-substrate cascade rip** (soc-2rtm0). The
full cascade (daemon + dream/overnight + schedule/plans/watch + gc-glue
+ factory) is ~50K LOC across deeply-entangled packages — far past one
reviewable PR. Per the bead's slice directive and the recon map's
serial-by-wave verdict, this ships as sequential PRs by wave. **This is
the factory wave** (the only cleanly-disjoint slice — no KEEP-feature
entanglement).

## What this retires (operator-confirmed FULL factory retire)

**Go command surface** (no external non-test caller — clean delete):
- `cmd/ao/factory.go`, `factory_admit.go`, `factory_pilot.go`,
`factory_admission_adapter.go` (+ all tests)
- `internal/ports/factory_admission.go` +
`inmemory_factory_admission.go` (+ test) — the port was only wired to
the daemon by the deleted production adapter
- severed factory flag save/restore + command-tree assertions from
`cobra_commands_test.go` / `testutil_test.go`

**Contract corpus** (scripts, schemas, contract docs, runbooks,
fixtures, tests):
- `scripts/check-factory-{admission,claim-ledger,yield-ledger}.sh`
- `schemas/factory-{admission,work-order,yield}.v1.schema.json`
- `docs/contracts/factory-{admission,claim-ledger,yield-ledger}.*`
-
`docs/runbooks/{factory-manual-merge,daemon-factory-admission,cloud-frontier-pilot}.md`
- `tests/e2e/factory-operator-canary.sh`,
`tests/integration/test-factory-claim-ledger-ci-job.sh`,
`tests/scripts/test-factory-admission-contracts.py`,
`tests/fixtures/factory-*`
- orphaned `aggregate-observation-log` subsystem (script + integration
test + fixtures) — its only data source was the deleted
`factory-claim-ledger-strict` CI job

**CI / generated reconciliation:**
- removed 3 factory jobs from `validate.yml` (+ both `needs:` arrays +
verdict echoes); removed entries from `ci-jobs.yaml`; regenerated
`AGENTS-CI.md` (63 jobs)
- removed factory gate-ids from `GOALS.md`; trimmed
`contracts-structural-floor` factory references
- regenerated `registry.json` (177→174 CLI commands), `COMMANDS.md` (−70
lines), `cli-skills-map.md` (73→72 headings)
- updated `cli-command-surface-matrix` canary spec + fixture counts
(`top=72 sub=194 all=266`); scrubbed deleted-file links from
`documentation-index.md`, `SCHEMAS.md`, `contracts/index.md`,
`agentopsd-control-plane.md`, `insert-schema-practices.py`

## Deliberately left for the daemon-carve wave
Daemon-owned factory job types (`factory.admission`,
`factory.local-pilot`) and the `agentopsd` routing-policy schema remain
— they belong to `internal/daemon/` and retire when the daemon does.

## Gates verified green locally
`gofmt`/`go build`/`go vet`, full Go test (**11830 pass**),
`validate-ci-policy-parity`, `contract-compatibility`,
`contracts-structural-floor`, `registry --check`, `doc-release` (0
broken links), `smoke-test`, `json-flag-consistency` (0 errors),
**`contract-canaries` (failures=0)**, codex-hashes, `pre-push-gate.bats`
(55).

Diff: 66 files changed, ~16 insertions / ~5680 deletions.

Closes-scenario: soc-2rtm0#cascade-rip
Bounded-context: BC5-Runtime
Evidence: .agents/discovery/2026-05-24-rip-caller-map.md
2026-05-24 12:29:22 -04:00
Bo c1a46cee26 chore: scrub all jsm references — external ref only, patterns kept (soc-wnic7 #scrub-jsm) (#501)
## What

Operator directive (soc-wnic7): scrub ALL references to "jsm" from
AgentOps. jsm was only an external reference corpus we learned patterns
from. The absorbed **patterns stay** (skill-quality rubric, SELF-TEST
shape, system-tuning methodology, bug-hunt patterns, attribution
patterns, marketplace-export profile) — only the jsm **name**,
jsm-dedicated docs, and jsm export tooling are removed.

## Deleted (8 files)

- `docs/reference/jsm-agentops-gap-audit.md`
- `docs/reference/jsm-clean-room-extraction-policy.md`
- `docs/reference/jsm-cli-capability-map.md`
- `docs/reference/jsm-pilot-upgrade-backlog.md`
- `docs/reference/jsm-skill-absorption.md`
- `docs/reference/jsm-skill-standards.md`
- `scripts/check-jsm-export.sh`
- `scripts/inventory-jsm-skills.sh`

## Renamed (kept methodology, stripped jsm)

`skills/standards/references/jsm-attribution.md` →
`external-source-attribution.md` (+ skills-codex + cli/embedded
mirrors). The attribution methodology (Pattern A/B, choice rule, mkdocs
constraint, clean-room hygiene) is a kept pattern — renamed and de-named
rather than deleted, so the standards skill keeps a repoint target.

## Edited

- De-catalogued the 6 deleted docs from `docs/documentation-index.md`
and `docs/reference/index.md`; de-named the kept skill-quality-rubric
entries.
- Genericized every footer/credit per the scope rule:
- `Adapted from jsm / \`x\`` → `Adapted from an external skill corpus /
\`x\``
- `(jsm/ACFS skill corpus)` → `(ACFS skill corpus)` — **ACFS/gstack
credits left intact**
- jsm-only credits (system-tuning, hooks-authoring) → "external skill
corpus", keeping the methodology-only/no-verbatim hygiene clause
- Genericized: "JSM-Style/Marketplace Export Profile", hexagonal-map
adapter node, domain-evolution BDD/plan gherkin steps, CHANGELOG
entries, skill-auditor validation-terms tuple.
- Removed dead `check-jsm-export` blocks from 4 SELF-TEST.md files.

## Regen + gates (all green)

`make sync-hooks` · `regen-codex-hashes.sh` · `generate-registry.sh`
re-run. Verified: `grep -ri jsm` empty (per exclusions);
`regen-codex-hashes --check` OK; `generate-registry --check` OK;
`validate-embedded-sync` in sync; `validate-context-map-drift` OK;
`check-docs-learning-references` PASS; `heal.sh --strict` clean;
`audit-codex-parity` PASS; `go build ./...` OK; no dangling punctuation;
no broken links to deleted files.

Closes-scenario: soc-wnic7#scrub-jsm
Bounded-context: BC1-Corpus
Evidence: docs/documentation-index.md
2026-05-23 22:41:56 -04:00
Bo f7cc505a7a fix(agentopsd): harden AI smell surfaces (soc-0l5z #ai-smell-hardening) (#389)
## Summary
- Replace the plans manifest shape-only stub with projection-backed
daemon state.
- Gate llmwiki placeholder outputs behind explicit opt-in and make fake
daemon execution test/demo-only.
- Refresh stale Olympus-ported docs and tune README/PRODUCT claims to
default-safe runtime behavior.
- Repair strict docs-site and hook-lease inventory drift surfaced by the
merge gate.

## Validation
- `scripts/pre-push-gate.sh --fast`
- `go test ./internal/daemon ./internal/llmwiki ./cmd/ao`
- `bash tests/docs/validate-doc-release.sh`
- `scripts/docs-build.sh --check`
- `bash scripts/validate-sovereignty-proof-citations.sh`
- `bash scripts/check-hook-lease-inventory.sh`

Closes-scenario: soc-0l5z#ai-smell-hardening
Bounded-context: BC5-Runtime
Evidence: validate-sovereignty-proof-citations: scanned 3 pages, 16
citations
2026-05-20 21:31:38 -04:00
Bo 729fbf8ab6 Sharpen RPI lifecycle: criterion contract + isolation enforcement + daemon executor swap (soc-bcrn) (#255)
* feat(rpi): executionPacket criterion contract foundation (UW0 of soc-bcrn)

Extend executionPacket with EpicCriteria []rpi.Criterion and
BeadCriteria map[string][]rpi.Criterion, backed by a new exported
rpi.Criterion type. Add JSON schema (draft 2020-12) covering envelope +
criterion shape; if/then enforces agent_judge when check_type ==
custom_rubric (pre-mortem advisory fix #1).

DoneCriteria preserved verbatim for v1 back-compat. New round-trip tests
cover criteria-populated, v1-no-criteria, custom-rubric, and omitempty
cases.

Lands soc-bcrn.1.1 (E1.1). go test ./... → 11911 passed in 50 packages.

* feat(skills): acceptance_criteria contract across discovery/plan/crank/validation (UW1 of soc-bcrn)

Wire the per-criterion contract through the lifecycle skills (text-only;
no code changes). Skill text now references the JSON schema landed in
UW0 (schemas/execution-packet.schema.json) as canonical.

soc-bcrn.1.2 — discovery/plan emit acceptance_criteria fences:
  - skills/discovery/SKILL.md STEP 4 + STEP 6 amendments
  - skills/discovery/references/output-templates.md links the schema
  - skills/plan/SKILL.md issue-decomposition step requires the block

soc-bcrn.1.3 — crank pre-spawn read + per-criterion checkpoint:
  - Step 4 instructs orchestrator to inject metadata.validation.acceptance_criteria
  - Step 5.7 checkpoint format adds criterion_verdicts[]

soc-bcrn.1.4 (E1.4+E1.5 merged on shared file) — validation:
  - Per-criterion verdict table replaces vibe-only
  - Back-compat WARN until 2026-06-30, then FAIL (pre-mortem fix #2)
  - New skills/validation/references/per-criterion-rubric.md

go test ./... → 11833 passed in 50 packages.

* fix(skills): correct check_type terminology in crank acceptance-criteria injection

Worker B's UW1 amendment hallucinated `kind (test|structure|content|command|lint)`
as the criterion field/enum. Actual schema uses `check_type` with enum
`test_pass | command_exit_zero | file_exists | grep_match | manual |
council_judge | custom_rubric`, plus the conditional `agent_judge` field
for `custom_rubric`. Replace with the verbatim shape from
schemas/execution-packet.schema.json $defs/Criterion.

Caught by self-review of 81d729fc.

* feat(rpi,skills): isolation contract + lint + addSignalWithEvidence (UW2 of soc-bcrn)

soc-bcrn.2.1 (E2.1+E2.3 merged):
- skills/rpi/references/isolation-contract.md (NEW): codifies PRODUCT.md
  operational principle #5 with declaration-vs-enforcement framing,
  four-lever table (text / hook / daemon / combination — recommends D),
  compression patterns + false-positive guard.
- scripts/check-skill-isolation.sh (NEW, executable): bash lint that
  greps phase-skill SKILL.md for compression patterns. Runs clean on
  current tree; injection-regression test passes (rc=1 on 'I will
  research' violation).

soc-bcrn.3.3 (E3.S2):
- session_outcome.go: addSignalWithEvidence(regex, evidence, weight)
  override path; tests_pass now credited via either regex or evidence.
- internal/rpi/artifacts.go: LaneResult + ParseValidationLanesResults
  (forward-compat — accepts {passed:bool}, {status:"PASS"}, {result:"PASSED"};
  empty slice when packet field absent).
- rpi_evaluator.go: collectPhaseSessionOutcome reads packet
  validation_lanes_results and threads any-PASS reduce to evidence path.
- session_outcome_test.go: 3 new tests cover override, both-false, regex-alone.

UW2 verify-only beads (closed without code):
- soc-bcrn.3.1 (E3.S1): captureCreatedEpicID already merged at
  rpi_phased_discovery.go:43, primary callsite rpi_phased_gates.go:83.
- soc-bcrn.3.2 (E3.S3): preserveWorktreeCommits already merged at
  rpi_cleanup.go:399, called BEFORE git worktree remove --force.

go test ./... → 11833 passed in 50 packages.

* feat(skills,scripts): isolation-contract cross-links + RPI surface smoke (UW3 of soc-bcrn)

soc-bcrn.2.2 (E2.2): Cross-link skills/{rpi,discovery,crank,validation}/SKILL.md
to the isolation contract reference doc landed in UW2. Each link uses
the lint-allowed `See [...](path)` form. lint runs clean.

soc-bcrn.3.4 (E3.S4): scripts/test-rpi-surface-smoke.sh (NEW, executable).
Static-surface smoke covering 6 checks: bin presence, schema validity,
skill-isolation lint, dangling commits (informational), bd workspace,
schema-criterion-fields. Returns PASS/FAIL summary.

Path-collision recovery: bead body said scripts/test-evolve-cycle-smoke.sh,
but that path was already taken by PR #241 (end-to-end cycle smoke wired
into pre-push-gate's --smoke-evolve flag). Restored the original; renamed
this new static-surface smoke to scripts/test-rpi-surface-smoke.sh. The
two scripts have distinct purposes (cycle E2E vs static surface) and
should coexist.

go test ./... → 11832 passed in 50 packages.

* docs(rpi): rollback discipline note in phase-data-contracts.md (UW4 of soc-bcrn)

soc-bcrn.3.5 (E3.W3): document phase-3-first / phase-2-second rollback
discipline. Re-routed from the plan's `program-templates/phase-{2,3}.md`
path (which doesn't exist in the repo) to the existing phase-data-contracts.md
ref doc.

Pre-mortem F3 of soc-bcrn flagged this as the primary rollback risk for
E3 (consolidated daemon epic). E3.S3 (already merged) is the worked
example: preserveWorktreeCommits (phase-3 logic) shipped BEFORE the
phase-2 cleanup-removal.

soc-bcrn.2.3 (E2.4 verify): closed without code change — isolation-contract.md
already has 3 forward-references to rpi_run.go from UW2.

go test ./... → 11834 passed in 50 packages.

* feat(daemon): RPIRunExecutor in-process runner replaces CLI-fallback shell-out (UW5/5a of soc-bcrn)

soc-bcrn.3.6 (E3.W4 sub-wave 5a, additive):
- NEW cli/internal/daemon/rpi_run.go: RPIRunExecutor with function-pointer
  pattern (RPIRunFunc). Mirrors DreamExecutor structure. Validates
  full-cycle specs (start_phase=1, max_phase=3) and emits artifacts
  tagged executor_policy=in-process / backend=in-process.
- NEW cli/internal/daemon/rpi_run_test.go: 5 tests (runs-via-func,
  rejects-wrong-jobtype, propagates-runner-error, validate-full-run,
  requires-fields).
- agentopsd.go: buildAgentOpsDaemonCLIFallbackRPIExecutor now wires
  RPIRunExecutor with defaultCLIFallbackRPIRunFunc that calls
  runPhasedEngine in-process. New CLIFallbackRPIRunFunc option lets
  tests inject fakes. buildPhasedEngineOptionsFromSpec maps obvious
  fields (RunID, TestFirst, ExecutionPacketPath→DiscoveryArtifact,
  PhaseTimeout); other phasedEngineOptions fields use defaults.
- agentopsd_test.go: TestAgentOpsDaemonCLIFallbackExecutorPolicyCompletesRPIRunJob
  rewritten to inject a fake RPIRunFunc instead of writing fake shell
  scripts. Asserts executor_policy=in-process, backend=in-process,
  rpi_run_status=completed.

ADDITIVE only — RPICLIExecutor and scripts/ao-rpi-autonomous-cycle.sh
preserved for nightly-evolution.sh until sub-waves 5b/5c migrate them.
RPICLIExecutor has zero production callers after this change (only its
own test file references the type).

go test ./... → 11832 passed in 50 packages.

* fix(daemon): RPIRunExecutor wraps supervisor (gates+landing+cycles) (UW5/5a-fix of soc-bcrn)

soc-bcrn.3.8 — fix the regression sub-wave 5a introduced.

Sub-wave 5a's defaultCLIFallbackRPIRunFunc called runPhasedEngine alone,
silently losing the gate/landing/cycle semantics of the old shell wrapper
that ran ao rpi loop --supervisor. Daemon-submitted rpi.run jobs would
have skipped landing-policy enforcement.

Changes:
- RPIRunJobSpec gains 7 supervisor policy fields (all omitempty for
  back-compat): MaxCycles, GatePolicy, LandingPolicy, LandingBranch,
  BDSyncPolicy, FailurePolicy, KillSwitchPath.
- agentopsd.go:defaultCLIFallbackRPIRunFunc now calls executeLoopCyclesCtx
  (thin context-aware wrapper around executeLoopCycles) — full supervisor
  loop with gates + landing + cycle management.
- New buildSupervisorConfigFromSpec(spec, root) helper translates spec
  policy fields into rpiLoopSupervisorConfig, then validates via the
  supervisor's own validateLoopConfigPolicies.
- Lease disabled in daemon path (cfg.LeaseEnabled=false) — daemon already
  owns queue-level claim; lease would deadlock.
- Deleted dead helper buildPhasedEngineOptionsFromSpec.
- 5 new tests: spec round-trip with policy fields, defaults-empty
  back-compat, spec→cfg mapping (3 cases incl. invalid-enum rejection).

Forward-compat caveats noted in worker discoveries (NOT fully wired):
- MaxCycles in spec is read but rpiLoopSupervisorConfig has no MaxCycles
  field; cycle count comes from the cobra-bound rpiMaxCycles global.
  Daemon path runs one cycle (matches nightly script default).
- RunID, ExecutionPacketPath, TestFirst, PhaseTimeout in spec are not
  yet projected onto the cfg.

go test ./... → 11835 passed in 50 packages.

* feat(scripts,docs): nightly-evolution + 3 docs migrate to ao daemon submit (UW5/5b of soc-bcrn)

soc-bcrn.3.7 (E3.W4 sub-wave 5b):

scripts/nightly-evolution.sh — replace shell wrapper invocation
(`scripts/ao-rpi-autonomous-cycle.sh`) with `ao daemon jobs submit
--type=rpi.run` + `ao daemon jobs wait`. Liveness-probe via `ao daemon
jobs list --json` before submit. Payload now carries supervisor policy
fields (max_cycles, gate_policy, landing_policy, optional landing_branch)
via the spec extension landed in 5a-fix; daemon executor runs the full
supervisor loop (cycles + gates + landing).

docs/contracts/agentops-daemon.md, docs/runbooks/daemon-factory-admission.md,
docs/contracts/factory-admission.md — replace stale references to
`scripts/ao-rpi-autonomous-cycle.sh` with the new in-process path
(RPIRunExecutor, cli/internal/daemon/rpi_run.go).

scripts/ao-rpi-autonomous-cycle.sh and cli/internal/daemon/rpi_cli_executor.go
remain in-tree pending sub-wave 5c (deletion).

go test ./... → 11835 passed in 50 packages.
bash -n scripts/nightly-evolution.sh → clean.

* chore(daemon): delete RPICLIExecutor + ao-rpi-autonomous-cycle.sh shell wrapper (UW5/5c of soc-bcrn)

soc-bcrn.3 final E3.W4 cleanup. After sub-waves 5a (RPIRunExecutor),
5a-fix (supervisor wrapping + policy fields), and 5b (nightly migration
to ao daemon submit), all production callers of these surfaces have been
retired. Deleting:

- cli/internal/daemon/rpi_cli_executor.go (5.6KB) — old shell-shelling executor
- cli/internal/daemon/rpi_cli_executor_test.go (6.6KB)
- scripts/ao-rpi-autonomous-cycle.sh (4.7KB) — legacy shell wrapper

Final consumer audit: zero non-comment references to RPICLIExecutor or
NewRPICLIExecutor remain. The new in-process path
(cli/internal/daemon/rpi_run.go → executeLoopCyclesCtx) carries the same
gate + landing semantics via supervisor wrapping.

go test ./... → 11833 passed in 50 packages (down from 11835 — the 2
diff is from the deleted RPICLIExecutor's own tests).
go build ./... + go vet ./... → clean.

UW5 (E3.W4 / M3.5 daemon executor swap) complete.

* docs(skills): best-practices citation table + 4 SKILL.md cross-links (UW6 of soc-bcrn)

soc-bcrn.4 (E4 — Best-practices encoding):

E4.1: NEW skills/rpi/references/best-practices.md. Table A (14 lifecycle
principles) + Table B (6 anti-patterns) extracted verbatim from
.agents/research/2026-05-07-rpi-lifecycle-sharpening.md §Objective 4.
Each row carries a source citation and which skills should encode it.
The doc explicitly says lifecycle skills MUST cite by # — never duplicate
the body.

E4.2: skills/{rpi,discovery,crank,validation}/SKILL.md — one-line
cross-link added next to the existing isolation-contract.md citation.
Each link uses the lint-allowed `See [...](path)` form. lint runs clean.

Mechanical-enforcement section in best-practices.md cross-references
prior soc-bcrn waves (UW0 schema $defs/Criterion, UW1 per-criterion-rubric,
UW2 check-skill-isolation lint).

go test ./... → 11832 passed in 50 packages.

* feat(daemon,schema): agent-update protocol surface (UW7-1 of soc-y0ct)

soc-y0ct.1 — protocol surface (schema + event types + payload structs).
Defers ac-aup.3 (rpi_run.go emission) to a follow-up bead since it
requires careful integration with the supervisor's existing event flow.

- schemas/agent-update.schema.json (NEW): draft 2020-12 envelope
  {agent_update_version, event_type, payload}; 4 $defs (phase_start,
  phase_complete, criterion_verdict, phase_handoff) with allOf+if/then
  for type-tagged payload dispatch (mirrors UW0 Criterion's custom_rubric
  pattern).
- cli/internal/daemon/types.go: 4 new EventType constants registered in
  the const block AND eventTypeSet (required for ValidateEventType).
- cli/internal/daemon/agent_update.go (NEW): AgentUpdateVersion=1, 4
  payload structs, 4 NewAgentUpdate*Event constructors that stamp the
  version, default empty timestamps, emit only-non-zero optional fields.
  Constructors deliberately leave EventID/RequestID/JobID/Actor unset —
  emission caller populates those.
- cli/internal/daemon/agent_update_test.go (NEW): 7 test functions
  covering const + ValidateEventType registration, 4 payload round-trips,
  version stamping, and timestamp default.

Status enums per spec: phase_complete uses lowercase (success|failure|
timeout) matching JobResultStatus; criterion_verdict uses uppercase
(PASS|FAIL|SKIP) matching the verdict vocabulary in
schemas/verdict.v1.schema.json.

go test ./... → 11842 passed in 50 packages (up from 11833 — the +9 is
the new tests under ./internal/daemon/).

* feat(tests,docs): wave 0 operator canary + software-factory drift stopgap (soc-kizn.11)

Adds tests/e2e/factory-operator-canary.sh: narrow L1/L2 smoke that prints the
five operator-surface anchors (briefing, next delivery, validation, evidence,
closeout) and reports each as resolved-path or explicit-unavailable. Does not
claim factory yield, autonomous merge, or L3 proof.

Reframes the Codex section of docs/software-factory.md so the canonical
hookless route is `agentopsd` (`ao daemon submit ...`), and `ao codex *` is
documented only as deprecated legacy fallback. Strips routine `ao codex *`
recommendations from the Surface Map. Validation now passes:
`rg 'ao codex (start|stop)|ao codex ensure-(start|stop)' docs/software-factory.md
| rg -v 'hookless|compat|legacy|fallback|deprecated'` returns empty.

Full Codex skill/runtime parity cleanup remains tracked in soc-kizn.8.

* docs(skills): move forge Examples to references/ to fit 248-line CI limit (soc-pul8)

skills/forge/SKILL.md was 260 lines after the soc-yjzp.3 cross-vendor analog
edit, over the 248-line skill-lint ceiling. Moves the two Examples walkthroughs
(SessionEnd hook invocation + manual transcript mining) to
skills/forge/references/examples.md, replacing the section body with a link.

Now 237 lines. heal.sh --strict clean (new references file is linked).
hooks/skill-lint-gate.sh exits 0. Codex parity audit passes.

* fix(skills): copy rpi references into crank/discovery/validation, fix dead-ref gate

UW3 (e74b2ff0) and UW6 (2272510e) cross-linked from skills/{crank,discovery,
validation}/SKILL.md to ../rpi/references/{isolation-contract,best-practices}.md.
heal.sh's DEAD_REF check only resolves local references/ and ../shared/references/
paths, so it flagged the cross-skill links as dead — blocking pre-push.

Per CLAUDE.md "no symlinks; copy instead", copies both files into each affected
skill's own references/ dir and rewrites the SKILL.md links to local paths.
skills/validation/SKILL.md additionally compresses Setup+Gate sections, drops
the Per-criterion-verdicts example table from Phase Summary code fence, and
inlines the back-compat fallback to fit the 248-line skill-lint ceiling
(was 274, now 247).

Verified: heal.sh --strict clean across all skills; skill-lint-gate exit 0;
codex parity audit passes for crank, discovery, validation.

* chore(codex,registry): refresh codex artifacts + registry.json after skill ref edits

Auto-regenerated by `scripts/refresh-codex-artifacts.sh --scope upstream` after
the dead-ref fix touched skills/{crank,discovery,validation}/SKILL.md and
skills/forge/SKILL.md (cycle 5 close). Updates .agentops-generated.json
hashes for 7 skills + manifest + rolls registry.json reference_count for forge
(1 -> 2 after examples.md split) and knowledge_stores count refresh.

No source-code changes; this is the metadata catch-up the pre-push
codex-artifact-metadata gate flagged.

* fix(tests): nightly-evolution bats — mock daemon wait/list, assert payload not log

soc-bcrn UW5/5b migrated nightly-evolution.sh from shelling
ao-rpi-autonomous-cycle.sh to `ao daemon jobs submit` + `wait`. Two bats
tests still asserted the old shell-wrapper behavior:

- Mock `ao` only handled `daemon jobs submit`. Add handlers for
  `daemon jobs wait` (returns completed) and `daemon jobs list`
  (liveness probe — returns []). Also strip `--output FOO` global
  flags so subcommand match still works.
- Test 462 grep'd $AO_RPI_LOG for `--landing-branch` (the legacy CLI
  arg). Replace with jq assertion on the new payload file
  evolve-rpi-run-payload.json.

Now 31/31 nightly-evolution bats pass (was 29/31).

* fix(skills): copy phase-data-contracts.md to fix transitive broken-link gate

isolation-contract.md (just copied to crank/discovery/validation in 053111a8)
references phase-data-contracts.md as a sibling. The doc-release link
validator flagged it as broken in the new locations because the file lived
only in skills/rpi/references/. Per CLAUDE.md "no symlinks; copy", copies
phase-data-contracts.md into each affected skill's references/ and adds the
link to each SKILL.md's Reference Documents section so heal.sh's UNLINKED_REF
check stays green. Refreshes codex .agentops-generated.json hashes for the
4 touched skills.

Verified: link validator 1990/1990 ok, heal.sh --strict clean, codex artifact
metadata + parity audits both pass.

* chore(registry): refresh registry.json after phase-data-contracts.md copies

Auto-regenerated by scripts/generate-registry.sh after commit 3ae3ce85
copied phase-data-contracts.md into crank/discovery/validation references.
Reference counts: crank 24→27, discovery 5→8, validation +3.

CI registry-check (--check mode) flagged the drift on PR #255.

* chore(registry): regen without polluting from gitignored .agents/

scripts/generate-registry.sh's build_knowledge_stores walks .agents/
which is gitignored. CI clones clean (no .agents/ tree), so its regen
output has no knowledge_stores entries; mine had them populated from
session state, causing registry-check stale-detection to fail.

Regenerate with .agents/ temporarily moved aside so the committed
registry.json matches the CI-clone's expected output. Net effect: drop
the knowledge_stores section that was a build-environment artifact.

Resolves PR #255 registry-check failure.
2026-05-07 17:01:55 -04:00
Boden Fuller e47be280aa feat(nightly): add L3 rehearsal scenario and operator runbook
Add two L3 scenario fixtures for the first no-merge local pilot
rehearsal: blocked (preflight refuses expired work order) and admitted
(valid work order passes all checks).

Extend the nightly evolution runbook with a step-by-step L3 rehearsal
section covering dry-run, Dream-only, blocked admission, admitted
no-merge evolve, and digest review. The pilot is not recurring until the
rehearsal passes all five steps.

Closes soc-y8b.11.6.
2026-05-05 14:17:44 -04:00
Boden Fuller cd5b6a6a91 test(daemon): add factory local pilot rehearsal 2026-05-04 22:25:10 -04:00
Boden Fuller a2bea16faf feat(nightly): submit dream runs through daemon 2026-05-04 22:20:56 -04:00
Boden Fuller 45dd282512 feat(daemon): add cli fallback rpi executor 2026-05-04 22:16:39 -04:00
Boden Fuller 3f90737501 feat(daemon): execute factory admission jobs 2026-05-04 21:56:00 -04:00
Boden Fuller b10b435485 feat(nightly): add scheduler install helper and update runbook
install-nightly-scheduler.sh handles generate, install, enable, status,
and uninstall of the systemd user timer for the nightly evolution chain.
Includes kill-switch defense-in-depth, 1h timeout, and dry-run default.

Timer installed on bushido WSL (dry-run mode, 12:15 UTC daily).
2026-05-04 20:03:54 -04:00
Boden Fuller f40ba2f866 Merge branch 'crank/soc-dpci' into main 2026-05-03 21:51:46 -04:00
Boden Fuller 4ea208afb5 feat(factory): add bounded cloud frontier pilot plan
Refs soc-dpci.8
2026-05-03 21:05:12 -04:00
Boden Fuller 65f9d3ff27 feat(daemon): add factory validation and yield contracts
Refs soc-dpci.6

Refs soc-dpci.7
2026-05-03 20:58:03 -04:00
Boden Fuller e6721a3ed3 release: harden audit validation tooling 2026-05-03 19:16:06 -04:00
Boden Fuller 256ff4868b feat(skills): absorb 9 jsm/ACFS Tier 1.5 patterns + new system-tuning skill
Pattern-adopted methodology from 9 jsm/ACFS skills (utility map score >=0.4)
into the AgentOps catalog as references on existing skills, one new top-level
skill, plus a build script and an operator runbook.

- skills/system-tuning/ - NEW utility skill (kill hierarchy, whack-a-mole
  anti-pattern, agent-swarm cleanup) with codex twin and skill-level LICENSE.md
  attribution. Distinct from skills/perf/ to avoid forward/backward methodology
  conflation.
- skills/bug-hunt/ - +2 refs (audit-fix-rescan cycle, convergence criteria)
- skills/research/ - +2 refs (onboarding methodology, data flow from entry
  points)
- skills/release/ - +3 refs (gh-actions CI patterns, release automation,
  changelog-as-research-artifact)
- skills/scope/ - +1 ref (destructive-command-guard patterns)
- skills/bootstrap/ - +1 ref (related runbooks index)
- skills/scaffold/ - +1 ref (forward-looking recommended-reading pointer
  including mcp-server-design with explicit absorption trigger)
- scripts/build-rg.sh + docs/rg-optimized.md - operator-build pattern for
  ripgrep with PCRE2
- docs/runbooks/path-rationalization.md - shell PATH audit and cleanup runbook

Catalog updates: skills/SKILL-TIERS.md adds system-tuning as utility-tier;
skills/using-agentops/SKILL.md catalog edit; sync-skill-counts and sync-hooks
ran for downstream PRODUCT.md, docs/SKILLS.md, docs/ARCHITECTURE.md, and
cli/embedded/skills/using-agentops/SKILL.md mirror.

Constraints honored:
- 4-runtime parity: every skills/ change has skills-codex/ counterpart
- Pattern-adoption only: NO verbatim phrases >5 consecutive words from jsm
  sources (one canonical pattern title "Whack-a-Mole Anti-Pattern" attributed
  via LICENSE.md)
- Per-file footer attribution for enhancement-only refs; skill-level LICENSE.md
  for system-tuning
- skills/perf/ untouched
- mcp-server-design content NOT absorbed (deferred to agentopsd MCP transport
  via discoverability pointer)

.gitignore now excludes .agents/ globally - workspace runtime state is no
longer git-tracked.

Validation: 7x audit-codex-parity PASS, heal-skill --strict clean,
sync-skill-counts PASS (62 user-facing + 9 internal = 71 codex), shellcheck
clean, pre-push-gate --fast passed.
2026-05-03 18:56:23 -04:00
Boden Fuller fb41ddef08 Harden repo operating loop validation 2026-05-03 10:28:07 -04:00
Boden Fuller 3693fdde34 fix(rpi): harden hook install and release audit gates 2026-05-03 09:31:42 -04:00
Boden Fuller ec04a43c7d docs(beads): clarify server-mode closeout
Implements: soc-y8b.8
2026-05-01 16:57:34 -04:00
Boden Fuller 262b91f039 feat(nightly): add local evolution wrapper 2026-05-01 10:57:42 -04:00
Boden Fuller 75bc023ec2 feat(extract): import olympus v5 contracts + reference docs into agentopsd
Lands the agentops-tqc extraction (32-bead epic). Olympus repo
(~/dev/personal/olympus, v5.0.1) was superseded 2026-04-28 by agentopsd;
this imports the load-bearing patterns and contracts.

New code surface:
- schemas/{bead,briefing,learning,phase,quest,verdict}.v1.schema.json
  (6 JSON schemas, contracts independent of Go type structs)
- cli/internal/types/quest/{atomic,atomic_test}.go + {atomic_fault,
  json_marshal_guard}_test.go: atomic file-write helpers (canonical
  destination for future writeFileAtomic dedup)
- cli/cmd/ao/exit_codes.go: 0/1/2/42 exit-code protocol from Olympus zeus
- cli/internal/context/brief_render{,_test}.go: pure-fn Render +
  RenderAndPersist shell (olympus hermes pattern, post-Feb-24 reduction)
- cli/cmd/ao/cobra_conformance_test.go: bidirectional spec/code walk
  locking cli/docs/COMMANDS.md against drift

Documentation:
- 11 new AGENTS.md files (10 cli/internal/<pkg>/ + cli/internal/types)
- docs/standards/olympus-engineering-standards.md (reference port,
  subordinate to canonical agentops rules)
- docs/runbooks/{autonomy-runtime-cycle-1,release-process}.md
- docs/code-map/agentopsd-codebase-map.md
- docs/design/olympus-v4-specs/ (8 v4 specs as REFERENCE only)
- docs/documentation-index.md updated with new entries

Build/vet/test green. Follow-up beads (agentops-3ga) consolidate atomic
helpers and fix the spec generator.

Source: ~/.agents/olympus-history-index.md
Plan: .agents/plans/2026-04-29-plan-extract-olympus-into-agentopsd.md
2026-04-29 22:33:59 -04:00