Commit Graph

3 Commits

Author SHA1 Message Date
Bo 8af560f678 fix(ci): reconcile hookless gates and flywheel snapshot
Squash merge PR #546. Local evidence: doc-release, smoke, snapshot gate, pre-push Bats, snapshot Bats, structural gates, and pre-push --fast passed. PR GitHub Actions were blocked in runner setup by GitHub codeload/action download failures before repository code executed. Snapshot records current corpus as DECAYING rather than preserving stale compounding evidence.
2026-05-26 08:19:50 -04:00
Boden Fuller 9e981d5907 fix(ci): close practice provenance validator gaps 2026-05-12 19:09:20 -04:00
Boden Fuller fafa00e79f feat(gates): flywheel-compounding snapshot gate, CI-blocking (G1)
Closes soc-45sg.1 — G1 (Make flywheel-compounding CI-blocking via
corpus-state snapshot).

Why
- The live flywheel-compounding gate (`bash scripts/check-flywheel-
  compounding.sh`) computes σρδ from the current corpus on demand.
  Multi-session activity is required to move it; CI runners have a
  cold corpus and would always fail. Result: the gate sat in the
  Roadmap column, not enforcing.
- The fix is the snapshot pattern. An operator captures a corpus-
  state evidence file when their local corpus IS compounding, commits
  it under docs/releases/, and CI validates the artifact without
  re-running the multi-session computation.

What
- scripts/snapshot-flywheel-compounding.sh (NEW, operator command):
  runs `ao flywheel status --json` and wraps it in a snapshot envelope
  with recorded_at, git_sha, git_branch. Writes to
  docs/releases/flywheel-compounding-snapshot.json (tracked path).
- scripts/check-flywheel-compounding-snapshot.sh (NEW, CI gate):
  reads the snapshot, fails on missing / stale (>14d default) /
  escape_velocity_compounding != true. Honors AGENTOPS_FLYWHEEL_
  SNAPSHOT_SKIP=1 operator override.
- docs/releases/flywheel-compounding-snapshot.json (NEW, seed):
  initial snapshot at HEAD 800b5165, compounding=true, σρ=0.0488,
  δ=2.742, recorded 2026-05-11T21:48:44Z.
- GOALS.md: new gate row flywheel-compounding-snapshot, weight 5.
  Three-Gap proof-surface table: moved into Currently enforcing
  column for Gap 2 (durable learning); live `flywheel-compounding`
  stays in Roadmap as the higher-fidelity but unattainable-in-CI
  reference. Closes the bead's "gate moves from Roadmap to Currently
  enforcing column" acceptance.
- .github/workflows/validate.yml: new validate-flywheel-compounding-
  snapshot job. Registered in summary.needs[] + summary echo per
  validate-ci-policy-parity contract (54 jobs, 7 non-blocking).
- scripts/pre-push-gate.sh: new always-on check 22h.
- AGENTS.md: CI Jobs row for validate-flywheel-compounding-snapshot.
- tests/scripts/pre-push-gate.bats: stub for the new gate script.

Verification
- snapshot script: produced snapshot at recorded_at=2026-05-11T21:48:44Z,
  compounding=true.
- gate: PASS (0d old, compounding=true, threshold 14d). SKIP path
  honored via env override.
- validate-ci-policy-parity.sh: PASS (54 jobs).
- bats 51/51 ok.
- pre-push --fast (PRE_PUSH_SKIP_EVAL=1 for soc-l4yt canary flake):
  both passes green with "ok flywheel-compounding snapshot".

Operator runbook: when the live gate is green (`bash scripts/check-
flywheel-compounding.sh` passes), refresh the snapshot:
  bash scripts/snapshot-flywheel-compounding.sh
  git add docs/releases/flywheel-compounding-snapshot.json
  git commit -m "chore(flywheel): refresh compounding snapshot"
The snapshot is good for 14 days before CI starts failing.

Companion bead: D11 (soc-ymph.11) which shipped ao corpus
snapshot/restore — pattern reuse: tracked durable JSON evidence
artifact + structural CI gate.
2026-05-11 17:52:30 -04:00