17 Commits

Author SHA1 Message Date
Bo 3213afcf1c Default to native execution and report independently accepted work (#1129)
## Change

Make native coding-agent execution the default AgentOps entry path with
zero mandatory skills. Preserve full bundles and add repeatable `ao
skills link --skill NAME` selection, validating the entire selection
before writes. Align product, installation, architecture and generated
command documentation.

Extend the existing trial readout to separate endpoint test results,
execution state and independently accepted work. Bind supplied judgments
to exact content, acceptance and native evidence. Reject empty
implementation subjects and require the caller's complete criterion ID
set before reporting acceptance. Preserve genuine nonempty and
deletion-only subjects, valid failures and missing-proof outcomes.

## Validation

- Native onboarding from empty home/consumer directories produces no
setup files; selective/full linking and failure boundaries are covered.
- Actual RED/GREEN regressions cover empty subjects and the
partial-criterion omission found by independent review.
- Full Go build, vet and race/shuffle tests; affected Go lint; 88 Python
readout/statistics tests passed.
- All 73 gates, generated projections, strict documentation build and
local aggregate passed (10 passed; one documented optional absence).
- All nine PR checks succeeded at
`7df0d42b12f35ffc22008cc10a40339afcfbb6a0`.
- Fresh author-distinct review passed all six acceptance criteria over
all 59 changed paths, with no findings or unchecked scope, after
repairing the criterion-coverage finding.

## Evidence limits

The real native coding repair demonstrates usability, not comparative
skill uplift. The strict live-session machine replay remains NOT_PROVEN
where execution/identity observations are unavailable; the source review
PASS is retained separately. Existing cohort limits and the historical
aggregate-enforcement gap remain unwaived. No new comparative cohort,
scheduler, skill-corpus deletion, memory migration or global
installation is included.
2026-09-10 20:28:22 +00:00
Bo e1fae0dae6 Make the engineering harness lean and add optional topic memory (#1116)
RPI now owns the authorized outcome through finish, with Plan and Memory
loaded only when useful. Known defects get direct repair, and evidence
can change the approach under unchanged acceptance. Fresh exact-content
validation remains required. Memory provides optional recall, mining and
curation of reviewed topic pages; specialists and the fixed-dispatch
adapter remain optional.

The change reconciles current documentation and generated skill
projections. It preserves native budget and permission authority, BD
work ownership, protected external evidence storage and the distinction
between a supported lesson and demonstrated later benefit. It adds no
scheduler, work store, Go command or evidence schema.

Validation: required local Go/build/vet/race checks, aggregate suite,
generated-output check and 72 gates pass. The complete 44-test executor
suite passes; its shared-deadline fixture now tolerates CI scheduling
jitter while still requiring deadline exhaustion and preventing a third
launch. Fresh author-distinct review passed all 112 changed paths with
no findings; all seven exact-head CI checks passed at bfce33cce. Native
restricted-source enforcement and reduced token use are not established
by this change.
2026-09-09 10:10:29 -04:00
Bo 568e99d436 Loop restore: converge and crank as control flow under the verdict contract (ADR-0017) (#1099)
## Loop restore: converge and crank as control flow under the verdict
contract (ADR-0017)

Intent source: `docs/plans/2026-09-03-loop-restore.md` (in this PR).
Decision record:
`docs/adr/ADR-0017-loop-as-control-flow-not-knowledge.md`.

**Why.** The 2026-07-14 single-pass cut (`482307762`) removed the
iterate loop (discovery, crank, converge, evolve, the learn write-half)
together with the unproven compounding claim, although ADR-0011 demoted
only the latter. The control flow was never demoted, and its absence
showed on 2026-09-02, when a three-lane fix needed eight validators and
two stops because the contract had no repair phase. This restores the
loop as control flow and nothing else: no knowledge store, no `ao
converge`/`ao crank`, no evolve, no canary. ADR-0004 and ADR-0011 stay
in force.

**What changes.**
- **RPI gains a bounded repair phase.** On `FAIL` or `NOT_PROVEN` with
findings, repair and re-validate freshly under the convergence law:
caller-declared `repair_rounds` (default 2); open finding set keyed by
stable `findings[].id`, union across validator families, non-growing; no
closed id reopens; the subject digest changed or, for `NOT_PROVEN`, new
digest-bound evidence resolved a named gap. Converged = fresh PASS plus
cross-family PASS on risky surfaces. Plan and Implement keep their
single dispatch. `skills/rpi/scripts/run_once.py` models the law as pure
data (33 tests): rounds are validated for shape (digest required, no
duplicate ids, no PASS with findings, no FAIL without findings),
condition 4's evidence branch needs a NOT_PROVEN previous round, a
non-FAIL current round, new evidence, and a resolved finding, and a PASS
over unchanged bytes after a FAIL is a flip that reports NOT_PROVEN.
`workflows/rpi.js` runs validation as legs (spawned or external primary,
plus a caller-supplied `crossFamily.command` on risky surfaces) merged
worst-of with a union of stable ids; a risky surface without a
cross-family leg is `diversity_unsatisfied` and never converges or
enters repair; a failed repair or re-validation returns NOT_PROVEN with
no stale verdict. Validators return `subjectDigest`, stable finding ids,
and `evidenceRefs`.
- **crank returns as a thin wave executor** (113 lines): the caller
selects the wave and the repair bound, crank invokes RPI per lane
(parallel only on disjoint write and regen scopes), runs the wave
acceptance once, returns evidence, and stops. No retry, budget, queue,
claim, lease, Git, closure, or next-work ownership. Routing golden
`rq-07-wave-execution` ranks it first.
- **validate is cross-family by default on risky surfaces**
(`cli/internal/gates/**`, `scripts/check-*.sh`, `tests/**`,
`skills/*/scripts/**`, hook policies, `lib/**`, security-scanned paths)
with the LAW-0 dispatch table: Claude orchestrating uses read-only
`codex exec`; Codex orchestrating uses an interactive Claude session in
an NTM pane, never `claude -p`. No live adapter means
`diversity_unsatisfied`, which on a risky surface is `NOT_PROVEN`. The
full literal CI command set runs once on the final integrated subject;
routine rounds keep the receipt-driven freshness contract.
- **Conformance assertions flipped under ADR-0017 only:**
`scripts/check-cathedral-cut-conformance.py` (crank live; "Stop
regardless" replaced by positive canaries for the law's four conditions;
a bounded `for` loop that compares against `repair_rounds` is required
in `run_repair_phase`, and the gate executes the law's canaries against
the reference behavior), `workflows/rpi.js`,
`skills/rpi/scripts/validate.sh`,
`evals/agentops-core/rpi-behavior.json`,
`skills/rpi/references/rpi.feature`. Every single-pass public surface
(README, AGENTS.md, PRODUCT.md, CI-CD, agent-workflow-reference,
rpi-traversal, cli/README, quickstart and demo commands, the
operating-contract and product-boundary bats, the Codex-description
oracle) now states repair to convergence.

**Known approximation, disclosed.** The Claude conveyor has no
deterministic shell primitive, so changed paths are derived by the fresh
validator (git status and diff against the clean pre-run tree) and
unioned with the implementer's report; risk is classified over that
union and unreported paths are coverage findings. A validator is still a
model; runtime derivation outside every agent is a follow-up. Family
distinctness of the cross-family leg is asserted by the caller's choice
of command and not verified by the script.

**Not in scope.** Premortem stays a single advisory judge and Plan still
only names the first check (phase boundaries unchanged). No `verdict.v2`
or `rpi-report.v1` change. The loop's own effect on outcomes is
unmeasured and owed a seeded-defect probe, like the rest of the corpus.

**Evidence on the tip.** Regen check clean; full gate green with a
HEAD-built binary; CI's bats command green; Go build/vet/test green;
golangci-lint clean; security gate quick PASS; one fresh validator over
the whole diff; one cross-family read of the design before
implementation (13 findings folded) and two of the integrated diff (9
findings in round one, 11 by round two, 15 by round three, each round
repaired and re-reviewed; the fresh validator passed the tip after round
two and the final tip 1e8adb72d passed a fresh validator (14-scenario
independent harness of the law, full gate 71/71 with a HEAD-built
binary, CI bats 1164/0) and a cross-family read by Gemini 3.8 via AGY,
which closed all six remaining residues with no new findings; Codex was
unreachable at push time).

**Follow-ups filed from the final reviews, not blockers:** the JS
violation check tests growth before reopen while Python tests reopen
first (same stop, different label when both occur in one round);
`cli/testdata/compatibility-baseline/families/{demo,quickstart}/case.json`
assert help-text substrings Cobra never prints (pre-existing, no
consumer); runtime derivation of changed paths outside every agent in
the Claude conveyor.
2026-09-03 15:16:08 +00:00
boshu ad494e6f88 feat: apply mined AgentOps workflow improvements 2026-07-15 21:32:15 -04:00
boshu 4823077621 refactor: cut AgentOps to a single-pass evidence loop 2026-07-14 22:01:50 -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
boshu 31337c369e docs: establish lean AgentOps product boundary
Implements: age-agentops-lean-loop-direct-cut-rp16f.1
2026-07-14 10:54:34 -04:00
boshu 43b4387dbd fix(go): seal retired-owner and lifecycle boundaries 2026-07-13 10:24:38 -04:00
boshu ae1bee33ef docs(agents): fix root agent-doc drift vs executable truth (age-2d8m)
Audit of root files found five drift classes, each verified against the
executable source before fixing:

- AGENTS.md claimed Codex twins are never regenerated; regen-all.sh /
  codex-sync.sh auto-refresh parity twins (bespoke/pointer stay manual,
  per AGENTS-CODEX.md). Fixed both the registries line and the project
  structure map.
- AGENTS-WORKFLOW.md referenced the missing docs/QUICKSTART.md and carried
  a near-verbatim duplicate Session Completion checklist; deduped to the
  canonical Landing the Plane section.
- AGENTS-RUNTIME.md listed sync-skill-counts.sh targets that the script
  does not touch (README.md, docs/SKILLS.md, docs/ARCHITECTURE.md,
  using-agentops/SKILL.md); replaced with the script's real surface.
- PROGRAM.md: hooks/** (directory no longer exists) removed from mutable
  scope; ao autodev commands annotated + fixed with -tags legacy (the
  command surface is archived behind the legacy build tag — verified
  'autodev validate' returns valid:true with the tag); BEADS_DIR=$PWD/_beads
  corrected to $(ao beads dir); 'tracked in bd' -> br.
- MEMORY.md: removed empty Last Session header; updated the bd-era Tracker
  Skew entry to the br reality; marked the ao codex ensure-start/stop
  pattern superseded (deprecated shims per AGENTS-RUNTIME.md).
2026-07-02 20:00:49 -04:00
Boden Fuller 828d39c195 docs(direction): align validation-first source routing 2026-06-16 09:51:33 -04:00
Boden Fuller 1bd6153062 docs(goals): encode the agent-ergonomic ao CLI contract as a directive
The agent-ergonomics pass landed conventions (capabilities/robot-docs
introspection, --json everywhere, error-teaches, flag-typo hints) but
nothing in the repo's guiding contracts pointed future autodev/evolve
cycles at them. Add GOALS.md Directive 13 codifying the contract, and a
PROGRAM.md decision-policy line so a slice that touches an `ao` CLI
surface is held to it.

Mirrors the directive shape of GOALS.md #12 (convention directive with a
Steer line). Introspection surfaces: 0 → 2 documented as standard.
2026-05-17 01:12:36 -04:00
Boden Fuller 4c0fe25dc0 docs(autodev): encode operating-loop doctrine into PROGRAM.md contract
Reframe the autodev contract around the operating loop: BDD-shaped
intent, vertical slices mapped to one Given/When/Then, first-failing-test
discipline, the 7-row conflict-free wave check, bounded-context and
domain-purity rules, and ratchet-gated capture. Adds a domain/ports/
adapters go test to the validation bundle.
2026-05-16 07:25:36 -04:00
Boden Fuller 56b9c88407 fix(test): add git show mock to pre-push BATS test 5
The --scope head default (5dbe1e6d) uses `git show --name-only`
instead of `git diff --name-only`. The test mock only handled
diff, causing a false-negative on go build failure detection.
2026-05-04 22:14:31 -04:00
Boden Fuller a154b6ffa3 feat(nightly): add RPI auto prompt brief 2026-05-01 09:24:20 -04:00
Boden Fuller 034ee9c0a0 feat(overnight): register external watchlist generator + PROGRAM.md scope (RFC 0001 Proposal 2 Wave 3)
Wire the Wave 2 generator into the INGEST stage's parallel finding-generator
fanout. The existing runFindingGenerator wrapper already enforces the
2-minute per-source budget (RFC §253) via context.WithTimeout; no new
machinery needed.

Changes:
- cli/internal/overnight/ingest.go: append the external-watchlist generator
  to findingGenerators(). Reuses defaultFindingGeneratorTimeout (2 min) and
  the existing goroutine-per-generator fanout.
- PROGRAM.md: add .agents/dream/external-watchlist.yaml to Mutable Scope
  when Dream is the active command, making the operator-managed source's
  ownership explicit alongside the broader .agents/** rule.
- cli/internal/overnight/stages_test.go: update GeneratorSidecarCount
  assertion in TestRunIngest_FindingGeneratorEmitsRealSidecarCandidates
  from 1 to 2 (mine-findings + external-watchlist soft-success when no
  watchlist.yaml exists).

Verification:
- cd cli && go test ./internal/overnight/... ./internal/rpi/... -> all PASS
- bash scripts/check-contract-compatibility.sh -> 0 failures
2026-04-26 19:55:39 -04:00
Bo 1bd2f0824c feat(dream): record finding generator sidecars
Merge the Dream mine-findings generator sidecar prototype from RFC 0001.
2026-04-26 16:10:01 -04:00
Boden Fuller 553211dabe docs: add autodev program contract 2026-04-11 17:37:54 -04:00