Commit Graph

4 Commits

Author SHA1 Message Date
Bo 9b08fb933d refactor(cli): go cli quality discovery batch (gc-bridge, json contracts, leaf-help smoke) (#162)
* docs: add go cli quality discovery plan

* fix(cli): harden gc bridge version parsing

* docs(go): align complexity policy with gates

* docs(cli): classify command surface

* fix(cli): enforce json output contracts

* feat(cli): expand completion coverage

* refactor(cli): pilot badge options writer

* refactor(cli): inject contradict output writer

* refactor(cli): inject notebook update writer

* fix(cli): enable gc runtime smoke coverage

* fix(cli): align gc bridge with gascity v1

* Release v2.39.0

* fix(tests): align next-work schema test with widened type enum

Commit ed35c47f added `docs` and `chore` to the script's VALID_TYPES,
but tests/scripts/check-next-work-schema-rows.bats:42 still used
`type:"docs"` as its supposed-to-be-rejected example, so the test
now passes through the validator — `bats-tests` has been red on
main since.

Switch the rejected-type example to `finding`, which is still
outside the enum and is also the canonical example cited in the
script's own header comment ("type=finding ... caught at push time").

Local: 11/11 in tests/scripts/check-next-work-schema-rows.bats pass.

* docs: capture finding generator postmortem (#157)

* fix(rpi): sort verdicts deterministically in context and status helpers (#158)

BuildPhaseContext and JoinVerdicts iterated the verdicts map directly,
producing non-deterministic output across runs. Sort keys before
rendering so prompt injection and status logs are reproducible.

Closes council finding W-7 (context-orchestration-leverage batch). The
related buildHandoffContext path was already fixed to delegate to
FormatVerdicts (which sorts); this completes the remaining helpers.

- cli/internal/rpi/status.go: sort keys in JoinVerdicts
- cli/internal/rpi/phased_context.go: sort keys in BuildPhaseContext
- tests: replace "ordering not deterministic" waivers with exact-order
  asserts and add a 50-run stability check

https://claude.ai/code/session_01Qw4bZvXUNuLs8Rp1j1homB

Co-authored-by: Claude <noreply@anthropic.com>

* fix(codex): audit noisy hook injections (#159)

* docs: add competitive radar (#160)

* feat(agents): harden operator control plane (#161)

* docs(discovery): plan agents control plane hardening

* feat(agents): harden operator control plane

* Release v2.39.0

* fix(tests): align next-work schema test with widened type enum

Commit ed35c47f added `docs` and `chore` to the script's VALID_TYPES,
but tests/scripts/check-next-work-schema-rows.bats:42 still used
`type:"docs"` as its supposed-to-be-rejected example, so the test
now passes through the validator — `bats-tests` has been red on
main since.

Switch the rejected-type example to `finding`, which is still
outside the enum and is also the canonical example cited in the
script's own header comment ("type=finding ... caught at push time").

Local: 11/11 in tests/scripts/check-next-work-schema-rows.bats pass.

* docs: capture finding generator postmortem (#157)

* fix(rpi): sort verdicts deterministically in context and status helpers (#158)

BuildPhaseContext and JoinVerdicts iterated the verdicts map directly,
producing non-deterministic output across runs. Sort keys before
rendering so prompt injection and status logs are reproducible.

Closes council finding W-7 (context-orchestration-leverage batch). The
related buildHandoffContext path was already fixed to delegate to
FormatVerdicts (which sorts); this completes the remaining helpers.

- cli/internal/rpi/status.go: sort keys in JoinVerdicts
- cli/internal/rpi/phased_context.go: sort keys in BuildPhaseContext
- tests: replace "ordering not deterministic" waivers with exact-order
  asserts and add a 50-run stability check

https://claude.ai/code/session_01Qw4bZvXUNuLs8Rp1j1homB

Co-authored-by: Claude <noreply@anthropic.com>

* fix(codex): audit noisy hook injections (#159)

* docs: add competitive radar (#160)

* fix(merge): drop unused AgentsDoctorError ref and prune allowlist entries without production refs

---------

Co-authored-by: Claude <noreply@anthropic.com>

* fix(merge): resolve conflicts by taking PR's refactored contradict/codex_runtime, main's overnight test schema

---------

Co-authored-by: Claude <noreply@anthropic.com>
2026-04-26 23:09:48 -04:00
Claude 9814e4dd7c fix(check-cmdao-surface-parity): detect map-catalog and runXxx handler patterns
Two more false-positive patterns the previous heuristics missed:

1. Command-catalog maps in cobra_commands_test.go:
     "beads": {"harvest", "lint", "verify"}
     "corpus": {"fitness"}
   A grouped-by-parent regex now recognizes these.

2. Go handler naming convention `run<Title><Case>` (e.g. runConfigModels,
   runOvernightSetup). Tests frequently call handlers directly rather than
   dispatching through cobra. A runXxx probe closes the gap.

Effect: uncovered count drops from 13 → 8. Remaining 8 (`beads audit`,
`beads cluster`, `flywheel compare`, `overnight curator compact|diagnose|
enqueue|event|status`) are genuinely uncovered — their run* handlers exist
in source but are not exercised from any test.
2026-04-23 08:04:55 +00:00
Claude 3723ac03d5 fix(check-cmdao-surface-parity): recognize dedicated test files and Go arg patterns
The parity gate was missing test coverage that exists in real unit tests
because its detection relied only on literal "ao <cmd>" string matches.

Add two fallbacks:
1. Dedicated test-file heuristic (`<cmd>_test.go`, `<cmd>_*_test.go` with
   spaces/hyphens mapped to underscores). Picks up handoff, harvest,
   retrieval-bench, overnight setup, rpi serve.
2. Go executeCommand/SetArgs heuristic for multi-word commands: matches
   `"scenario", "list"` split across comma-separated string args. Picks up
   scenario list, scenario validate.

Use `find` instead of `ls` for the file-existence probe so the script no
longer trips over `set -euo pipefail` when a glob matches nothing.

Effect: uncovered-command count drops from 20 → 13 with zero new tests
needed; remaining 13 are genuinely uncovered (beads subcommands, overnight
curator subcommands, config models, corpus fitness, flywheel compare).
2026-04-23 07:36:09 +00:00
Boden Fuller c3785ddb78 feat(ci): add command-surface parity gate script and allowlist
Implements: ag-q5f.1
2026-02-27 07:26:32 -05:00