#275's billboard refactor thinned process-skill SKILL.md files and moved
detail into references/, but the validate contracts still grepped SKILL.md.
skill-lint + smoke-test: relax content-presence checks in crank/implement/
post-mortem/swarm validate.sh to scan the skill as a unit (SKILL.md +
references/); structural/identity checks stay SKILL.md-only. test-first-smoke
updated to match relocated SPEC/TEST WAVE + Step 0/4 headings.
skill-lint line caps: trim flywheel 310 -> 286 (cap 300), using-agentops
261 -> 239 (cap 250) by removing redundant prose, no content lost.
skill-integrity: link 3 orphaned references (crank/branch-isolation,
validation/flags + release-readiness-gates).
codex parity: regenerate stale skills-codex source hashes (77 skills).
Local: run-all.sh PASS, heal.sh --strict clean, smoke-test PASS.
Pass 1 of N: lands practices: frontmatter declarations on the
RPI-lifecycle and foundational skills (rpi, discovery, crank, validation,
plan, implement, vibe, pr-prep, pr-validate, post-mortem, domain,
flywheel, handoff), each citing 3-4 slugs from PRACTICE.md's 45-slug
registry.
scripts/validate-practice-citations.sh report now:
primitives scanned: 754
with practices field: 13 (was 0)
missing practices field: 741 (was 754)
invalid slug citations: 0
Schema fix in same commit (required infrastructure that was missed in
the pre-mortem audit): schemas/skill-frontmatter.v1.schema.json had
additionalProperties: false, which would have rejected every practices:
declaration via validate-manifests.sh. Added practices as a recognized
array-of-slug property; this unblocks all future backfill passes.
Codex twins intentionally NOT modified — skills-codex/* SKILL.md
frontmatter is strictly name+description by design (enforced by
scripts/validate-codex-generated-artifacts.sh). Skills-codex
.agentops-generated.json markers regenerated via regen-codex-hashes.sh
to record the source-side content drift.
Plan: .agents/plans/2026-05-10-practice-citation-backfill-rpi-core.md
Research: .agents/research/2026-05-10-practice-citation-backfill-mapping.md
Pre-mortem: .agents/council/2026-05-10-pre-mortem-practice-citation-backfill.md (PASS, with one gap noted: schema enforcement)
Bead epic: soc-hdot (14 child issues closed)
Local pre-push gate (fast): green.
implement Step 7 now closes with `bd close --reason "commit:<SHA>
files:[<list>]"` so closure-integrity audit resolves without
parser_miss/timing_miss. Crank team-coordination sync closures
carry wave+commit evidence as a safety net.
Implements: mol-3s7ob
Adds a 2400-char aggregate budget for skills-codex/*/SKILL.md `description:`
fields in tests/skills/test-token-budgets.sh, then trims each skill's description
to fit (catalog now 2146/2400). Both Claude and Codex SKILL.md descriptions
are kept in sync; codex .agentops-generated.json hashes regenerated.
Adds --repair-shape to scripts/audit-codex-hooks.sh: when ~/.codex/hooks.json
is missing or in legacy-flat shape, rewrites it from hooks/codex-hooks.json
with the active plugin_root (read from .agentops-codex-install.json) and
backs up any prior file. Covered by new test_repairs_legacy_flat_shape.
Memory decay (4 .agents/ files) bumped by the SessionStart inject hook.
* 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>
- Add BF1/BF2/BF4 bug-finding level selection to implement, post-mortem, validation
- Delete orphaned backend-claude-teams.md from council, research, shared, swarm
- Remove dead references from research/SKILL.md, shared/SKILL.md
- Remove dead converter sed rule for backend-claude-teams.md rename
- Add Reference Documents section to swarm/SKILL.md
- Update swarm validate.sh to check only backend-codex-subagents
Reference .md files in skills-codex/ were copied verbatim from source,
bypassing all converter rewrite rules. Now .md files in references/,
scripts/, and other subdirs are processed through codex_rewrite_text()
during passthrough copy.
Empirically validated: Codex agent confirms 0 Claude primitives in
converted reference files (was 107). Remaining gap: crank/swarm
orchestration patterns need full Codex-native rewrites (not converter
fixes) — tracked separately.
Validated with: codex exec -s read-only (gpt-5.4)
The CLI namespace was flattened in 4fd2512c (remove know.go, work.go,
quality.go), but skills-codex/ was never updated. Replace all stale
two-token prefixes with their flat equivalents across 17 SKILL.md files:
ao know forge → ao forge
ao know inject → ao inject
ao know search → ao search
ao know lookup → ao lookup
ao know temper → ao temper
ao quality flywheel → ao flywheel
ao quality pool → ao pool
ao quality metrics → ao metrics
ao quality maturity → ao maturity
ao quality badge → ao badge
ao quality constraint → ao constraint
ao quality contradict → ao contradict
ao quality dedup → ao dedup
ao quality curate → ao curate
71 occurrences fixed. Codex agents following these skills will no longer
invoke commands that return "unknown command".
Generated by sync-codex-native-skills.sh with modular layout.
References and scripts copied as files instead of inlined.
Overrides applied for 9 skills. Parity validated: 49/49.