Post-PR follow-up complete: go vet + go build clean, Codex review clean ("only adds documentation… did not identify any actionable correctness issue"), no reviewer comments, all 30 CI checks green on ce514f2. Ready for human merge.
Two recent PRs (#10061 in this session, plus an earlier one I caught in retro) hit the same atlas-migration trap when adding a JSON column to an existing table. The schema compiles fine, pnpm ent:generate-code succeeds, but the lint-thermos verify step fails with "Atlas migrations are out of sync with schema" because:
field.JSON("name", []string{}).Default([]string{}) emits a Go-level default only — atlas's desired state is NOT NULL with no column-level default.ADD COLUMN … NOT NULL DEFAULT '[]'::jsonb migration would backfill existing rows correctly, but atlas's "desired state" doesn't include the DEFAULT, so the diff is non-empty and atlas emits an extra <timestamp>_migration_name.sql cleanup file.The fix that lives in the codebase already (recipes.runtime_helpers) is .Annotations(entsql.DefaultExpr("'[]'::jsonb")). This PR documents the requirement under "Rules" in apps/thermos/ent/CLAUDE.md so the next person finds the answer instead of the trap.
apps/thermos/ent/CLAUDE.md.go build ./... is unaffected (no schema or migration changes).recipes.runtime_helpers) is the live example at apps/thermos/ent/registrydb/schema/recipe.go.The recently-shipped ComposioHQ/hermes#10061 already adopted the pattern after burning two CI cycles on this exact trap; this PR is the documentation that should have been there to prevent it.
Post-PR follow-up complete: go vet + go build clean, Codex review clean ("only adds documentation… did not identify any actionable correctness issue"), no reviewer comments, all 30 CI checks green on ce514f2. Ready for human merge.
Based on git blame analysis of 1 file(s):
| Contributor | Contribution | Files |
|---|---|---|
| Sarthak Agrawal | 69% | 1 |
| Zen |
| 18% |
| 1 |
| shreysingla11 | 13% | 1 |
Recommend Zen and shreysingla11. Both edited apps/thermos/ent/CLAUDE.md today (Zen has a slightly larger share), so they’ll be most familiar with the recent changes and can give quick, context-aware feedback.
🤖 Based on git blame with recency weighting (recent edits count more).
:white_check_mark: All modified and coverable lines are covered by tests.
| Flag | Coverage Δ | |
|---|---|---|
| e2e-tests | ? | |
| self-hosted-tests | 5.61% <ø> (ø) | |
| thermos-service-isolation-tests | 65.62% <ø> (?) | |
| thermos-unit-tests | 7.26% <ø> (ø) | |
| unit-tests | ? |
Flags with carried forward coverage won't be shown. Click here to find out more. see 831 files with indirect coverage changes