Commit Graph
20 Commits
Author SHA1 Message Date
Rodin e75a97707d docs: add Logger.warn deprecation as common mistake 2026-05-10 21:24:24 -07:00
Rodin df9c856d96 patterns(testing): add async test filtering pattern (#21)
When testing telemetry, pub/sub, or any broadcast mechanism with
async: true, events from concurrent tests can leak into mailbox.

Fix: Pin-match on unique identifier to filter.

Two-part pattern:
1. Filter at source — only forward events matching test's identifier
2. Pin in assertion — ^variable rejects mismatches that slip through

Applies to telemetry handlers, PubSub, GenStage/Broadway consumers,
any shared message bus.

Triggered by PR #710 flaky test fix in gargoyle.
2026-05-09 18:27:05 -07:00
Rodin b833d05410 patterns: add telemetry emission patterns (dedicated submodule, naming, measurements vs metadata) 2026-05-07 19:28:48 -07:00
Rodin 6400d626dc docs: rewrite usage section as agent instructions
Frame the README for someone setting up a subagent that uses
this repo as a knowledge base. Three prompt templates:
solving problems, reviewing code, evaluating patterns.
2026-05-07 18:06:54 -07:00
Rodin d4c919f8df docs: add usage prompts for writing, reviewing, and evaluating 2026-05-07 18:06:07 -07:00
Rodin b4e3cf2824 docs: define patterns vs conventions in README
Patterns are prescriptive — follow them.
Conventions are descriptive — study for ideas.

Clarifies repo purpose, directory structure, and how to
use patterns during development and review.
2026-05-07 18:04:50 -07:00
Rodin 74101b513c chore: merge elixir-conventions and oban-conventions into sources/
Absorbed content from rodin/elixir-conventions and rodin/oban-conventions
into a sources/ directory. These are reference material — descriptive,
not prescriptive. Patterns that prove broadly applicable get promoted
into patterns/.

Part of taxonomy cleanup (issue #4):
- Pattern = prescriptive, follow these
- Convention/Source = reference, study for ideas

The original repos can now be archived.
2026-05-07 18:01:42 -07:00
Rodin 40f024b477 fix: update drifted source citations to match current upstream
Verified all 17 file:line citations against elixir-lang/elixir HEAD.
Fixed 10 citations where line numbers had shifted due to upstream changes:

- patterns/genserver.md: agent.ex:246 → 279 (start_link spec)
- patterns/process-design.md: task.ex:282 → 327 (child_spec)
- smells/anti-patterns.md: registry_test.exs:28 → 29, gen_server_test.exs:166 → 164,
  test_helper.exs:98 → 99
- smells/common-mistakes.md: registry_test.exs:28 → 29, callbacks.ex:423 → 433,
  task_test.exs:297,305,315,330 → 300,308,316,327,
  supervisor_test.exs:278 → 289, callbacks.ex:277 → 520
2026-05-06 16:33:21 -07:00
Rodin 4bc7f3b357 chore: remove leftover scripts and tooling artifacts
Remove Python enhancement scripts (enhance_macros3.py,
enhance_modules.py, enhance_modules2.py), watermark file,
and changelog directory. These were scaffolding from the
initial extraction pass.
2026-04-30 15:49:05 -07:00
Rodin 5f62dd0bf1 feat: add source hyperlinks + remove thin from-source.md
Every source reference now links to elixir-lang/elixir at commit f4e1b34.
122 hyperlinks across 11 topic files. Added PATTERN_COMPLETE sentinels.
Removed from-source.md (326 lines, shallow) — covered by existing files.
2026-04-30 14:43:56 -07:00
Rodin 9ff22d2eed fix: add 'When to use' to every pattern (was missing) 2026-04-30 13:29:27 -07:00
Rodin e6fbfced96 docs: add patterns extracted from elixir-lang/elixir source
Using codebase-analysis skill (patterns mode) on the language source.
Real examples from the repo, not invented. Each pattern has:
- Rule, Example, Why, When NOT to use, Source file.

Topics: module org, protocol design, error handling, testing,
documentation, naming, process design, smells.
2026-04-30 13:26:23 -07:00
Rodin e51f491b6e chore: remove project conventions from sources/
These have been promoted to standalone repos:
- rodin/ecto-conventions
- rodin/oban-conventions
2026-04-30 11:45:46 -07:00
Rodin 46fe9c23c9 chore: move cross-ecosystem analysis to patterns-vs-guidelines 2026-04-30 10:50:37 -07:00
Rodin 7bca84f906 docs: testing philosophy + API evolution (cross-referenced) 2026-04-30 10:33:55 -07:00
Rodin be7eeb0d63 docs: cross-cutting concerns analysis (cross-referenced) 2026-04-30 10:31:19 -07:00
Rodin f5007e22e9 docs: ecosystem-level analysis (cross-referenced) 2026-04-30 10:02:08 -07:00
Rodin e2b5ba487c docs: architectural analysis (same doc, cross-referenced) 2026-04-30 09:28:08 -07:00
Rodin 44c61840df docs: add patterns extracted from ecto and oban
Ecto: 6 patterns (protocol dispatch, changeset separation, Multi pipelines)
Oban: 9 patterns (plugin behaviour, telemetry spans, engine abstraction)
2026-04-30 09:03:17 -07:00
Rodin 9a94765ea2 changelog: 2026-04-30 digest (initial) 2026-04-30 07:05:38 -07:00