CI matrix, hooks, test-methodology registry, lint enforcement - #4
Conversation
Compose-based local database mirrors the CI matrix (PG_DSN path in the harness); docs-only PRs skip the heavy jobs behind a fail-open filter with a single ci-ok required status; pre-commit/pre-push hooks give fast local feedback and skip cleanly on Markdown-only changes. A TLS-only server harness proves the verify-full CACertPath path live (trusted CA encrypts, plaintext and untrusted CA fail closed) — the one peer-CI pattern (pg-delta) applicable to Phase 0. docs/testing.md records Phase 0 coverage, Phases 1-7 test obligations including the topology patterns surveyed from peer-tool CIs, and the vanilla PostgreSQL vs real-Aurora validation boundary. The lint config adopts SchemaBot's proven linter set plus gofmt/goimports formatters, with a staged-files lint-fix pre-commit flow ported from the same repo.
Compose-based local database mirrors the CI matrix (PG_DSN path in the harness); docs-only PRs skip the heavy jobs behind a fail-open filter with a single ci-ok required status; pre-commit/pre-push hooks give fast local feedback and skip cleanly on Markdown-only changes. A TLS-only server harness proves the verify-full CACertPath path live (trusted CA encrypts, plaintext and untrusted CA fail closed) — the one peer-CI pattern (pg-delta) applicable to Phase 0. docs/testing.md records Phase 0 coverage, Phases 1-7 test obligations including the topology patterns surveyed from peer-tool CIs, and the vanilla PostgreSQL vs real-Aurora validation boundary. The lint config adopts SchemaBot's proven linter set plus gofmt/goimports formatters, with a staged-files lint-fix pre-commit flow ported from the same repo. AGENTS.md stays canonical for agent guidance: CLAUDE.md, GEMINI.md, .cursorrules, .goosehints, and copilot-instructions.md are symlinks to it, and review-agent checks live in .agents/checks/review.md.
Make the testing bar explicit and binding: same-PR tests, regression-first bug fixes, real-DB core validation, full-matrix CI as a merge gate, and a coverage ratchet (numeric gate wired when Phase 1 lands core code). Add eight phase-tagged test-methodology invariants (TM-1..TM-8) mined from the pgroll / pg_repack / pg-delta suites: lifecycle fixtures, two-oracle SQL tests, real fault injection asserting durable state, an adversarial schema corpus, the convergence oracle for declarative diff, mutation-direction coverage, correctness-asserting benchmarks, and a compiled-binary e2e CI path — plus seeded generative DDL as the beyond-peers goal.
…S.md Doc comments on exported symbols, no init(), no package-level mutable state, and no ctx-in-struct move to .golangci.yml (revive, gochecknoinits, gochecknoglobals, containedctx) so prose stays short. New maxims (panic policy, SQLSTATE error matching, goroutine lifetimes, injected clock, comment hygiene, OSS hygiene) ported from schemabot's AGENTS.md and Go community style canon, mirrored into the review checks.
The action's default binary is built with an older Go than the module targets and cannot load the v2 config; SHA-pinning also satisfies the semgrep and zizmor unpinned-action checks.
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
|
🤖 Review requested by Armand and performed by his agent — scoped to one question: what from block/schemabot's AGENTS.md is worth porting into this repo's AGENTS.md? Reviewed at head Verdict: most of it is already here, usually in tighter form — error wrapping with identifiers, no silent branches, no conflated causes, named compound predicates, comment hygiene, testify/ Worth porting
Deliberately not portedMySQL-specific items (instant-DDL terminology, connection helpers, Spirit/TiDB-parser integration, backtick style per se), schemabot's storage-schema bootstrap rules, its Verified solid: the five agent-config symlinks are real symlinks (mode This review was generated by Claude Code (claude-fable-5). |
|
🤖 Follow-up review requested by Armand and performed by his agent — a second pass through two lenses: (a) pg-sprite as an OSS-first project aiming to be the preferred Postgres DDL tool, and (b) clean integration into SchemaBot as an engine. Reviewed at head Lens 1 — OSS-first1. Aurora-first framing works against the ambition (the one strategic item). The README headline is "An online schema-change engine for Aurora PostgreSQL (and RDS/community PostgreSQL 14+)" — and AGENTS.md and the new 2. Three different lint versions. CI pins 3. The GOROOT probing in both hooks is environment-specific and silent. The candidate list is macOS/homebrew/hermit-shaped, and when a match is found the hook silently swaps toolchains. For outside contributors, an explicit error ("go.mod wants 1.26, PATH has 1.24 — see ") beats a probe that works on maintainer laptops and mysteriously no-ops elsewhere. 4. Workflow hygiene nits. No top-level least-privilege 5. The Genuinely strong OSS moves worth naming: the vanilla-PG matrix as a merge gate with the Aurora validation boundary honestly documented; the fail-open docs filter (detection failure → run CI, never skip); the Lens 2 — clean SchemaBot integration1. Typed, enumerable outcomes at the public API — seed the requirement now. SchemaBot's side of the boundary has a hard rule: engine error text is never rendered into PR-facing markdown; the orchestrator needs classified outcomes so it can render fixed, sanitized lines. The foundations here point the right way (SQLSTATE matching, 2. Terminology, carrying over from my previous comment: the TM docs say "migration"; SchemaBot bans the word in favor of "schema change." Whichever way the decision goes, deciding it in this PR is what keeps the seam clean. 3. Release discipline is an integration prerequisite, not just OSS polish. SchemaBot will pin pg-sprite via go.mod exactly as it pins Spirit — that needs tagged semver releases and a stability statement for the imported packages. "No releases yet" is right for Phase 0; 4. The test harness will want reuse. A SchemaBot Postgres storage backend would need exactly the harness this PR builds ( 5. Small nits: Verified solid for integration: Go versions align across the two modules (1.26 both sides); This review was generated by Claude Code (claude-fable-5). |
aparajon
left a comment
There was a problem hiding this comment.
🤖 Approving on Armand's behalf. My two-lens review and adversarial correctness pass are posted above — the findings there are for follow-up, not fix-before-merge blockers.
This approval was submitted by Claude Code (claude-fable-5) at Armand's direction.
Addresses the scoped agent review on PR #4: git/PR workflow section, identifier-quoting and DSN-handling rules, schema-change terminology, flake-verification script, and TM-9 (operation must outlive the observer).
|
Review response from Kiran's (@Kiran01bm) AI code review assessment agent Summary: all six ranked findings accepted and addressed in a follow-up commit on this PR (no history rewrite — the branch has been reviewed); the only remainder is a repo-wide docs terminology sweep that touches files outside this PR, tracked as a follow-up.
|
Summary
CI and test-methodology foundations. Stacked on
kiran01bm/p0-foundations.What
all-greensentinel job.make setup): pre-commit and pre-push gates.TM-*test-methodology registry indocs/testing.md(lifecycle fixtures, two-oracle SQL tests, real fault injection, convergence oracle)..golangci.yml; judgment maxims kept inAGENTS.md.Why
The coverage invariant and the version matrix are merge gates for every later phase; they need to exist before the first core package lands.