fix(ci): structural CI failures from cycles 45-47

Three required-job failures caught by `gh run list` per the cycle-48
tightened quality protocol (operator-asked, "how are you going to
enforce quality"):

1. **markdownlint** (cycle 46+) — MD004 ul-style violation in
   docs/releases/v2.39.0-claims/all-claims-evidence-map.md:52. A `+`
   bullet at column 3 was being interpreted as a nested list using
   plus-style; rewrote prose to use "with" instead.

2. **validate-three-gap-supergate** (cycle 42+) — compile-health child
   failed every CI run since the supergate landed because it requires
   .agents/defrag/latest.json which doesn't exist on greenfield CI
   runners (the nightly workflow generates it via `ao defrag` into a
   tmpdir + COMPILE_OUTPUT_DIR env). Sibling gates (council-coverage,
   flywheel-proof) already SKIP under similar conditions; compile-
   health now does too: if neither AGENTS_DIR/defrag/latest.json nor
   AGENTS_DIR/overnight/*/defrag/latest.json exists AND
   COMPILE_OUTPUT_DIR is unset, SKIP with "enforced by nightly
   workflow" message. The nightly workflow remains the canonical
   enforcer.

3. **registry-check** (cycle 45) — registry.json stale because cycle
   45 added 4 new skills/evolve/references/*.md files without
   regenerating. `bash scripts/generate-registry.sh` regenerated;
   counts now reflect current state (77 skills, 43 hooks, 4 stores,
   14 job types, 63 evals, 148 CLI commands).

Verification:
- markdownlint docs/releases/v2.39.0-claims/*.md — clean.
- bash scripts/check-three-gap-supergate.sh --gap=all — PASS locally.
- AGENTS_DIR=/tmp/no-such-dir bash scripts/check-three-gap-supergate.sh
  --gap=durable-learning — PASS with SKIP message for compile-health
  (simulates CI greenfield).
- bash scripts/generate-registry.sh --check — "OK: registry.json is up
  to date".

Out of scope:
- agentops-contract-canaries cycle-45 failure (aggregate=0.9549) — same
  fingerprint as the soc-l4yt closed-flake; doesn't reproduce on cycle
  46/47 CI runs or in local 5/5 bats. Not addressed here.
- security-toolchain-gate (advisory; exit 3 with 0 missing tools) —
  pre-existing, not introduced by this branch.
This commit is contained in:
Boden Fuller
2026-05-12 08:58:45 -04:00
parent 07c2d3cb9c
commit cbdeda4806
3 changed files with 45 additions and 10 deletions
@@ -49,7 +49,7 @@
- **Claim:** mt-olympus city is a working multi-agent deployment of
AgentOps.
- **Surface:** `~/dev/mt-olympus/` (separate repo, gc supervisor
+ bd dolt remote prefix `mo`/`hq`). Cross-fleet reference in
with bd dolt remote prefix `mo`/`hq`). Cross-fleet reference in
`~/.claude/reference/bushido.md` "mt-olympus dolt" section.
- **Gate:** Not gated by this repo's CI; cross-repo claim. Listed for
completeness — fully verifying this requires inspecting mt-olympus
+30 -7
View File
@@ -1,13 +1,13 @@
{
"schema_version": 1,
"generated_at": "2026-05-10T19:28:50Z",
"generated_at": "2026-05-12T12:53:01Z",
"summary": {
"skills": 75,
"skills": 77,
"hooks": 43,
"knowledge_stores": 4,
"job_types": 14,
"eval_files": 61,
"cli_commands": 147
"eval_files": 63,
"cli_commands": 148
},
"surfaces": {
"skills": [
@@ -185,7 +185,7 @@
"path": "skills/evolve/",
"has_skill_md": true,
"has_references": true,
"reference_count": 12
"reference_count": 16
},
{
"name": "grafana-platform-dashboard",
@@ -355,6 +355,14 @@
"has_references": true,
"reference_count": 5
},
{
"name": "validate",
"tier": "judgment",
"path": "skills/validate/",
"has_skill_md": true,
"has_references": false,
"reference_count": 0
},
{
"name": "vibe",
"tier": "judgment",
@@ -371,6 +379,14 @@
"has_references": true,
"reference_count": 4
},
{
"name": "curate",
"tier": "knowledge",
"path": "skills/curate/",
"has_skill_md": true,
"has_references": false,
"reference_count": 0
},
{
"name": "domain",
"tier": "knowledge",
@@ -1145,8 +1161,11 @@
{
"suite": "workbench",
"path": "evals/workbench/",
"eval_count": 0,
"evals": []
"eval_count": 2,
"evals": [
"baseline-scorecard",
"scorecard-latest"
]
}
],
"cli_commands": [
@@ -1242,6 +1261,10 @@
"name": "corpus",
"path": "cli/cmd/ao/corpus.go"
},
{
"name": "corpus_snapshot",
"path": "cli/cmd/ao/corpus_snapshot.go"
},
{
"name": "curate",
"path": "cli/cmd/ao/curate.go"
+14 -2
View File
@@ -78,8 +78,20 @@ gap_durable_learning() {
else
echo " SKIP flywheel-proof (cli/bin/ao not built)"
fi
run_gate "compile-health" \
"bash $REPO_ROOT/scripts/check-compile-health.sh" || fails=$((fails+1))
# compile-health requires .agents/defrag/latest.json (or an overnight
# fallback). On greenfield CI runners neither exists; the nightly
# workflow runs `ao defrag` and then check-compile-health.sh against
# a tmpdir output. The supergate is per-push and should SKIP rather
# than fail when the artifact is structurally unavailable.
local agents_dir="${AGENTS_DIR:-$REPO_ROOT/.agents}"
if [ -z "${COMPILE_OUTPUT_DIR:-}" ] \
&& [ ! -f "$agents_dir/defrag/latest.json" ] \
&& ! find "$agents_dir/overnight" -path '*/defrag/latest.json' -type f 2>/dev/null | grep -q .; then
echo " SKIP compile-health (no defrag artifact; enforced by nightly workflow)"
else
run_gate "compile-health" \
"bash $REPO_ROOT/scripts/check-compile-health.sh" || fails=$((fails+1))
fi
return "$fails"
}