Commit Graph

15 Commits

Author SHA1 Message Date
Rodin 2f7536766c chore: move cross-ecosystem analysis to patterns-vs-guidelines
These docs analyze multiple ecosystems (Go + Elixir) and
don't belong in a single-ecosystem patterns repo.
2026-04-30 10:50:36 -07:00
Rodin 4185747da6 docs: testing philosophy + API evolution strategies
Four testing models: defense-in-depth (CockroachDB), golden
files (Prometheus), fake adapters (Ecto), testing modes (Oban).

Three evolution strategies: version gates (distributed),
numbered migrations (schema), compile-time deprecation (library).
2026-04-30 10:33:55 -07:00
Rodin d6f36b67c8 docs: cross-cutting concerns analysis (logging, config, retry, lifecycle)
How CockroachDB, Prometheus, Ecto, and Oban handle the
things that touch everything but belong nowhere. Includes
red flags and review questions for each concern.
2026-04-30 10:31:19 -07:00
Rodin cee58e85a4 docs: ecosystem-level analysis — how codebases present to consumers
Extension points, deliberate absences, test architecture,
and consumer contracts across CockroachDB, Prometheus, Ecto, Oban.

Key insight: smaller interface → larger ecosystem.
2026-04-30 10:02:07 -07:00
Rodin 725308c37a docs: architectural analysis across CockroachDB, Prometheus, Ecto, Oban
Not just per-file patterns — structural analysis of how these
codebases organize at scale. Key findings:
- 116 packages @ 4 files each (CockroachDB)
- Interface layer breaks circular deps
- Testability designed in, not bolted on
- Composition via data, not inheritance
2026-04-30 09:28:03 -07:00
Rodin 758ae5dae4 docs: add patterns extracted from cockroachdb and prometheus
CockroachDB: 4 patterns (Stopper lifecycle, leak detection, two-phase shutdown, CloserFn adapter)
Prometheus: 5 patterns (atomic file ops, DefaultOptions, aligned timestamps, sentinel errors, compile-time interface checks)
2026-04-30 09:04:11 -07:00
Rodin 1ef2a4a189 changelog: 2026-04-30 digest 2026-04-30 14:07:37 +00:00
aweiker 733aa7d261 docs: add when-not to style + smells (package-design + documentation already done) 2026-04-30 13:31:47 +00:00
aweiker 11048ae73e docs: add when-not to interfaces + error-handling + concurrency 2026-04-30 13:26:20 +00:00
aweiker a7a853bb43 docs: add when-not to structs + testing-advanced + api-conventions 2026-04-30 13:24:01 +00:00
aweiker 631be02392 refactor: remove Kubernetes content (moved to rodin/kubernetes-patterns) 2026-04-30 12:10:11 +00:00
aweiker eb9171368b docs: add 'when to use' triggers + examples to all patterns
Added 'When to Use' subsections with concrete decision triggers and
before/after Go code examples to patterns across all directories:

- patterns/error-handling.md (3 patterns: sentinels, wrapping, Join)
- patterns/concurrency.md (4 patterns: Mutex, Once, done channels, pipelines)
- patterns/interfaces.md (4 patterns: small interfaces, accept/return, adapter, optional)
- patterns/structs.md (3 patterns: zero-value, constructors, config structs)
- patterns/package-design.md (3 patterns: internal/, init(), context keys)
- patterns/style.md (3 patterns: interface checks, iota constants, named types)
- patterns/testing-advanced.md (3 patterns: table tests, golden files, httptest)
- patterns/api-conventions.md (3 patterns: Must, layered API, graceful shutdown)
- patterns/documentation.md (2 patterns: examples, deprecated)
- kubernetes/patterns.md (3 patterns: controller, workqueue, leader election)
- kubernetes/production-go.md (2 patterns: codegen, HandleCrash)
- smells/anti-patterns.md (2 anti-patterns: cache mutation, edge-triggered)
2026-04-30 12:08:41 +00:00
rodin 0e5974f39a add MIT license 2026-04-30 11:58:36 +00:00
Rodin c797178fb9 docs: idiomatic Go patterns from stdlib + Kubernetes with source citations 2026-04-30 11:07:33 +00:00
Rodin 0f1d7e4c06 feat: initial Go patterns guide from stdlib + Kubernetes source study
9 pattern files covering stdlib (structs, interfaces, API conventions, docs, style),
Kubernetes (controller/reconciler, informer/cache, leader election, code generation),
comparison (stdlib vs K8s approaches), and anti-patterns.

All patterns cite exact source files and line numbers.
2026-04-30 06:34:02 +00:00