Agents Builders

Enforce full suite gate

Archived
enforce-full-suite-gate

Created

Jun 25, 05:39

Started

Jun 25, 12:40

Completed

Jun 25, 19:24

DevOps handoff

Type

Feature

Shape

backend

Worktree Slug

enforce-full-suite-gate

Repositories

mcritchie-studio

Release Train

Branch

feat/enforce-full-suite-gate

QA URL

Production URL

devops ci

Acceptance Criteria

  • dor-check runs full suite not touched-files
  • dor-check runs rubocop across the whole repo
  • Pre-commit hook mirrors the full-suite gate
  • Under-tested or lint-failing PR is refused

Expected Test Plan

  • unit
  • integration

Checks Run

  • [unit] fingerprint stability+staleness for new/untracked files + opt-in hook installer (install/idempotent/uninstall, refuse-clobber) — full_suite_check_test 12 runs green; fail-first proven vs old stash-create fingerprint
  • [integration] dor-check new-file commit-boundary e2e + real-git fingerprint grading — dor_check_test 69 runs green
  • [rework] fingerprint git stash create→temp-index git add -A (incl untracked-not-ignored); opt-in pre-push installer (operator choice); carl/role.md+soul.md reconciled. Re-cert 1624 runs/0 fail, rubocop 509/0 @ce382d65
  • [review] Carl (heavy/backend) re-review APPROVE_WITH_NITS (Alex excluded as fix author) — all 3 prior blockers CLEARED: throwaway-index fingerprint is untracked-inclusive, gitignore-respecting, real-index-safe, stable across commit incl added files (empirically reprobed), fail-first proven; opt-in pre-push installer correct + off-by-default; pre-push resolution accepted. Sole new nit (devops-cycle-design.md stale hook ref) fixed in c725910.
  • [full-suite@a0de713ba2d70fab90edac8f60cadb7281aa99ef] bin/rails test green
  • [rubocop@a0de713ba2d70fab90edac8f60cadb7281aa99ef] bin/rubocop clean
  • [rework] merge-forward origin/release (13 commits behind, #188-#191 shipped) — 2 union conflicts resolved (my suite_evidence_error + full-suite tests alongside #191 fragile_runner_load?/canonical_runner_path helpers + tests in bin/dor-check & dor_check_test); no logic change either side. Re-cert green @a0de713b (dor_check 73/0, full_suite_check 12/0); now mergeable CLEAN into release (merge c5cd4bb).

Agent Context

Source: devops retro retro-rel-20260623-fb969a.md lines 54 + 58 ('dor-check/pre-commit must enforce the FULL suite + rubocop, not touched-files'). Builds repeatedly passed the touched-file test subset but broke the full suite/lint, which only surfaced post-merge. Goal: bin/dor-check (and the pre-commit hook) must gate on the FULL test suite + full rubocop run, not just files touched in the diff, before a PR can be handed to submitted. Partially mitigated by #133 (auto test-DB) but the full-suite mandate itself still needs to be enforced in dor-check. Originated as a local dev-fixture card on the board.

Stage Timeline

Who handled each stage, the time it took (measured), and the model / tokens / cost reported (best-effort) — plus who's on it right now. means the agent didn't report that metric.

  1. Created Designed
    M Magmar
    Magmar
    Model
    Duration
    Tokens
    Cost
    Completed Jun 25, 05:39 · 2 days ago
    api
  2. Designed Building
    M Magmar
    Magmar
    Model
    claude-opus-4-8
    Duration
    5 minutes
    Tokens
    Cost
    Started Jun 25, 05:39
    Completed Jun 25, 05:44 · 2 days ago
    cli
  3. Building Submitted
    M Magmar
    Magmar
    Model
    claude-opus-4-8
    Duration
    35 minutes
    Tokens
    Cost
    Started Jun 25, 05:44
    Completed Jun 25, 06:19 · 2 days ago
    cli
  4. Submitted Blocked
    Model
    Duration
    about 6 hours
    Tokens
    Cost
    Started Jun 25, 06:19
    Completed Jun 25, 12:33 · 2 days ago
    api
  5. Blocked Building
    M Magmar
    Magmar
    Model
    claude-opus-4-8
    Duration
    7 minutes
    Tokens
    Cost
    Started Jun 25, 12:33
    Completed Jun 25, 12:40 · 2 days ago
    cli
  6. Building Submitted
    M Magmar
    Magmar
    Model
    claude-opus-4-8
    Duration
    about 1 hour
    Tokens
    Cost
    Started Jun 25, 12:40
    Completed Jun 25, 13:53 · 2 days ago
    cli
  7. Submitted Reviewed
    C Carl
    Carl primary
    S Shannon
    Shannon light
    Model
    claude-opus-4-8
    Duration
    9 minutes
    Tokens
    5,783,416
    Cost
    ~$3.92
    Started Jun 25, 13:53
    Completed Jun 25, 14:03 · 2 days ago
    cli
  8. Reviewed Assembled
    S Steffon
    Steffon
    Model
    Duration
    about 5 hours
    Tokens
    Cost
    Started Jun 25, 14:03
    Completed Jun 25, 19:03 · 1 day ago
  9. Assembled Shipped
    A Avi
    Avi
    Model
    Duration
    21 minutes
    Tokens
    Cost
    Started Jun 25, 19:03
    Completed Jun 25, 19:24 · 1 day ago
  10. Shipped Archived
    8
    81fad33e-98b5-4075-8ed6-d0efe6cb5804
    Model
    claude-opus-4-8
    Duration
    about 2 hours
    Tokens
    Cost
    Started Jun 25, 19:24
    Completed Jun 25, 21:16 · 1 day ago
    cli

Conversation

QA review feedback, agent handoffs, and follow-up notes for this task.

QA Feedback 2 days ago

REQUEST_CHANGES (Carl heavy + Jasper light). BLOCKERS: (1) [major] FullSuiteGate.fingerprint (bin/lib/full_suite_gate.rb:351) uses 'git stash create' tree-hash which EXCLUDES untracked files — empirically reproduced: certify pre-commit then commit yields a different fp at HEAD so valid evidence reads STALE -> false REFUSE for the common add-a-file change; and breaking an untracked file after certify does NOT change fp so staleness check fails to fire. Fix: hash untracked-but-not-ignored content via temp index (GIT_INDEX_FILE=tmp git add -A && git write-tree). (2) Tests (dor_check_test e2e stable/stale + full_suite_check_test) only MODIFY a tracked file — add a NEW-FILE case proving fp stability across commit AND staleness after an untracked edit. (3) Acceptance 'pre-commit hook mirrors the full-suite gate' NOT met — no hook is installed/added, only documented as wireable; install it or descope the criterion. NON-BLOCKING also worth fixing: [minor] bin/dor-check:463 honors ambient DOR_CHECK_SUITE_EVIDENCE on the prod merge path injecting an unrecorded 'ok' (gate the seam vs the loud recorded [full-suite-bypass]); [nit] carl/role.md:31 + soul.md:36 still claim a hook 'enforces' — reconcile.

Sealed-bid sizing

Edit →

Alex (PM)

Avi (PO)

Dev

Actual