e11y 0.2.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (288) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +130 -10
  3. data/CHANGELOG.md +80 -1
  4. data/CLAUDE.md +168 -0
  5. data/CONTRIBUTING.md +640 -0
  6. data/README.md +165 -701
  7. data/RELEASE.md +41 -12
  8. data/Rakefile +249 -57
  9. data/config/README.md +1 -1
  10. data/config/loki-local-config.yaml +12 -0
  11. data/config/otel-collector-config.yaml +44 -0
  12. data/cucumber.yml +1 -0
  13. data/docker-compose.yml +18 -2
  14. data/docs/ADAPTERS.md +76 -0
  15. data/docs/ADAPTIVE_SAMPLING.md +59 -0
  16. data/docs/COMPARISON.md +104 -0
  17. data/docs/CONFIGURATION.md +52 -0
  18. data/docs/DISTRIBUTED_TRACING.md +44 -0
  19. data/docs/LIMITATIONS.md +13 -0
  20. data/docs/METRICS_DSL.md +84 -0
  21. data/docs/PERFORMANCE.md +60 -0
  22. data/docs/PII_FILTERING.md +40 -0
  23. data/docs/PRESETS.md +65 -0
  24. data/docs/QUICK-START.md +546 -587
  25. data/docs/RAILS_INTEGRATION.md +79 -0
  26. data/docs/SCHEMA_VALIDATION.md +63 -0
  27. data/docs/SLO-PROMQL-ALERTS.md +161 -0
  28. data/docs/TESTING.md +69 -0
  29. data/docs/{ADR-001-architecture.md → architecture/ADR-001-architecture.md} +36 -65
  30. data/docs/{ADR-002-metrics-yabeda.md → architecture/ADR-002-metrics-yabeda.md} +62 -236
  31. data/docs/architecture/ADR-003-slo-observability.md +1402 -0
  32. data/docs/{ADR-004-adapter-architecture.md → architecture/ADR-004-adapter-architecture.md} +163 -146
  33. data/docs/{ADR-005-tracing-context.md → architecture/ADR-005-tracing-context.md} +10 -9
  34. data/docs/{ADR-006-security-compliance.md → architecture/ADR-006-security-compliance.md} +184 -191
  35. data/docs/{ADR-007-opentelemetry-integration.md → architecture/ADR-007-opentelemetry-integration.md} +3 -21
  36. data/docs/{ADR-008-rails-integration.md → architecture/ADR-008-rails-integration.md} +182 -743
  37. data/docs/{ADR-009-cost-optimization.md → architecture/ADR-009-cost-optimization.md} +45 -54
  38. data/docs/architecture/ADR-010-developer-experience.md +522 -0
  39. data/docs/{ADR-011-testing-strategy.md → architecture/ADR-011-testing-strategy.md} +44 -86
  40. data/docs/{ADR-012-event-evolution.md → architecture/ADR-012-event-evolution.md} +11 -11
  41. data/docs/{ADR-013-reliability-error-handling.md → architecture/ADR-013-reliability-error-handling.md} +37 -12
  42. data/docs/{ADR-014-event-driven-slo.md → architecture/ADR-014-event-driven-slo.md} +12 -24
  43. data/docs/{ADR-015-middleware-order.md → architecture/ADR-015-middleware-order.md} +43 -59
  44. data/docs/{ADR-016-self-monitoring-slo.md → architecture/ADR-016-self-monitoring-slo.md} +58 -355
  45. data/docs/{ADR-017-multi-rails-compatibility.md → architecture/ADR-017-multi-rails-compatibility.md} +4 -11
  46. data/docs/architecture/ADR-018-memory-optimization.md +366 -0
  47. data/docs/{ADR-INDEX.md → architecture/ADR-INDEX.md} +11 -6
  48. data/docs/plans/2026-03-20-browser-overlay-svelte.md +281 -0
  49. data/docs/{00-ICP-AND-TIMELINE.md → prd/00-ICP-AND-TIMELINE.md} +6 -6
  50. data/docs/{01-SCALE-REQUIREMENTS.md → prd/01-SCALE-REQUIREMENTS.md} +6 -6
  51. data/docs/prd/01-overview-vision.md +19 -14
  52. data/docs/use_cases/README.md +22 -23
  53. data/docs/use_cases/UC-001-request-scoped-debug-buffering.md +50 -44
  54. data/docs/use_cases/UC-002-business-event-tracking.md +26 -95
  55. data/docs/use_cases/UC-003-event-metrics.md +66 -0
  56. data/docs/use_cases/UC-004-zero-config-slo-tracking.md +33 -684
  57. data/docs/use_cases/UC-005-sentry-integration.md +13 -15
  58. data/docs/use_cases/UC-006-trace-context-management.md +30 -28
  59. data/docs/use_cases/UC-007-pii-filtering.md +35 -87
  60. data/docs/use_cases/UC-008-opentelemetry-integration.md +51 -89
  61. data/docs/use_cases/UC-009-multi-service-tracing.md +30 -178
  62. data/docs/use_cases/UC-010-background-job-tracking.md +24 -91
  63. data/docs/use_cases/UC-011-rate-limiting.md +95 -168
  64. data/docs/use_cases/UC-012-audit-trail.md +21 -46
  65. data/docs/use_cases/UC-013-high-cardinality-protection.md +29 -167
  66. data/docs/use_cases/UC-014-adaptive-sampling.md +2 -2
  67. data/docs/use_cases/UC-015-cost-optimization.md +46 -99
  68. data/docs/use_cases/UC-016-rails-logger-migration.md +39 -213
  69. data/docs/use_cases/UC-017-local-development.md +203 -777
  70. data/docs/use_cases/UC-018-testing-events.md +3 -3
  71. data/docs/use_cases/UC-019-retention-based-routing.md +53 -106
  72. data/docs/use_cases/UC-020-event-versioning.md +8 -9
  73. data/docs/use_cases/UC-021-error-handling-retry-dlq.md +18 -22
  74. data/docs/use_cases/UC-022-event-registry.md +15 -21
  75. data/docs/use_cases/backlog.md +119 -87
  76. data/e11y.gemspec +2 -2
  77. data/gems/e11y-devtools/README.md +158 -0
  78. data/gems/e11y-devtools/config/routes.rb +15 -0
  79. data/gems/e11y-devtools/e11y-devtools.gemspec +25 -0
  80. data/gems/e11y-devtools/exe/e11y +34 -0
  81. data/gems/e11y-devtools/frontend/.gitignore +24 -0
  82. data/gems/e11y-devtools/frontend/README.md +51 -0
  83. data/gems/e11y-devtools/frontend/index.html +14 -0
  84. data/gems/e11y-devtools/frontend/package-lock.json +3707 -0
  85. data/gems/e11y-devtools/frontend/package.json +28 -0
  86. data/gems/e11y-devtools/frontend/public/mocks/v1/events/recent.json +4205 -0
  87. data/gems/e11y-devtools/frontend/public/mocks/v1/interactions.json +194 -0
  88. data/gems/e11y-devtools/frontend/public/mocks/v1/traces/0a2e04027cfa22d014bc22e8b27cd913/events.json +86 -0
  89. data/gems/e11y-devtools/frontend/public/mocks/v1/traces/0e1543af6a630fb3af6b52283154b3e0/events.json +169 -0
  90. data/gems/e11y-devtools/frontend/public/mocks/v1/traces/1838b691faa49564f97db8592ff3978d/events.json +78 -0
  91. data/gems/e11y-devtools/frontend/public/mocks/v1/traces/29f198f6588dacffb687777eb5f8f118/events.json +197 -0
  92. data/gems/e11y-devtools/frontend/public/mocks/v1/traces/34bc3c9c0097de28a7a6f99b90a8e7bc/events.json +194 -0
  93. data/gems/e11y-devtools/frontend/public/mocks/v1/traces/3ba6c20d068ab9cee00e51b180e66444/events.json +184 -0
  94. data/gems/e11y-devtools/frontend/public/mocks/v1/traces/435bfd8f17b9009146a79812d7c3726d/events.json +144 -0
  95. data/gems/e11y-devtools/frontend/public/mocks/v1/traces/4c7676e3fe668e99edb2b94d7d5678a9/events.json +222 -0
  96. data/gems/e11y-devtools/frontend/public/mocks/v1/traces/6daf0d47974bedfc55d5de7004a3ea9f/events.json +194 -0
  97. data/gems/e11y-devtools/frontend/public/mocks/v1/traces/8a81ada42834d15f287bb40010043605/events.json +194 -0
  98. data/gems/e11y-devtools/frontend/public/mocks/v1/traces/8c0a98900edaae105469df8daedccf02/events.json +198 -0
  99. data/gems/e11y-devtools/frontend/public/mocks/v1/traces/8e4f645180f8a7d1dce426b07380466b/events.json +222 -0
  100. data/gems/e11y-devtools/frontend/public/mocks/v1/traces/93db346fa5d44a032605a13b627f4b80/events.json +128 -0
  101. data/gems/e11y-devtools/frontend/public/mocks/v1/traces/98ff6146faf7bd9be8bd03a8275817ba/events.json +223 -0
  102. data/gems/e11y-devtools/frontend/public/mocks/v1/traces/9997ddd0247bc7e25f2ca7a5c415c93d/events.json +197 -0
  103. data/gems/e11y-devtools/frontend/public/mocks/v1/traces/99e35f8ef3baedd798cc4fd085980ad9/events.json +194 -0
  104. data/gems/e11y-devtools/frontend/public/mocks/v1/traces/b4f3095c1909924cbc98889a86c83d6d/events.json +131 -0
  105. data/gems/e11y-devtools/frontend/public/mocks/v1/traces/b54b7fc32b7575a7110de809d11ccda0/events.json +128 -0
  106. data/gems/e11y-devtools/frontend/public/mocks/v1/traces/c0b48033fa06746bcc5886745e053cff/events.json +169 -0
  107. data/gems/e11y-devtools/frontend/public/mocks/v1/traces/c44649ac76701b4558927cd2305ab535/events.json +169 -0
  108. data/gems/e11y-devtools/frontend/public/mocks/v1/traces/d601ae3320057580a39dbdac2edfdf4a/events.json +248 -0
  109. data/gems/e11y-devtools/frontend/public/mocks/v1/traces/e67e724bab422d2b52eeb49635e512e1/events.json +194 -0
  110. data/gems/e11y-devtools/frontend/public/mocks/v1/traces/e6c72765a28f158a8485b35fa63f73da/events.json +194 -0
  111. data/gems/e11y-devtools/frontend/public/mocks/v1/traces/f541b87405c9a54819b18ebe529f6419/events.json +194 -0
  112. data/gems/e11y-devtools/frontend/scripts/generate_mocks.rb +397 -0
  113. data/gems/e11y-devtools/frontend/src/App.svelte +827 -0
  114. data/gems/e11y-devtools/frontend/src/components/Fab.svelte +19 -0
  115. data/gems/e11y-devtools/frontend/src/components/FilterBar.svelte +38 -0
  116. data/gems/e11y-devtools/frontend/src/components/FullscreenPanel.svelte +82 -0
  117. data/gems/e11y-devtools/frontend/src/components/InteractionsTimeline.svelte +264 -0
  118. data/gems/e11y-devtools/frontend/src/components/RecentHistogram.svelte +354 -0
  119. data/gems/e11y-devtools/frontend/src/lib/api.ts +37 -0
  120. data/gems/e11y-devtools/frontend/src/lib/eventIdentity.ts +12 -0
  121. data/gems/e11y-devtools/frontend/src/lib/format.ts +37 -0
  122. data/gems/e11y-devtools/frontend/src/lib/listFilter.ts +43 -0
  123. data/gems/e11y-devtools/frontend/src/lib/recentVolume.ts +80 -0
  124. data/gems/e11y-devtools/frontend/src/lib/router.ts +12 -0
  125. data/gems/e11y-devtools/frontend/src/lib/transitions.ts +34 -0
  126. data/gems/e11y-devtools/frontend/src/lib/viewportOrigin.ts +25 -0
  127. data/gems/e11y-devtools/frontend/src/main.ts +8 -0
  128. data/gems/e11y-devtools/frontend/src/overlay-entry.ts +24 -0
  129. data/gems/e11y-devtools/frontend/src/overlay.css +1080 -0
  130. data/gems/e11y-devtools/frontend/svelte.config.js +2 -0
  131. data/gems/e11y-devtools/frontend/test_puppeteer.js +41 -0
  132. data/gems/e11y-devtools/frontend/test_scale.js +3 -0
  133. data/gems/e11y-devtools/frontend/tsconfig.app.json +21 -0
  134. data/gems/e11y-devtools/frontend/tsconfig.json +7 -0
  135. data/gems/e11y-devtools/frontend/tsconfig.node.json +26 -0
  136. data/gems/e11y-devtools/frontend/vite.config.ts +36 -0
  137. data/gems/e11y-devtools/lib/e11y/devtools/mcp/server.rb +96 -0
  138. data/gems/e11y-devtools/lib/e11y/devtools/mcp/tool_base.rb +25 -0
  139. data/gems/e11y-devtools/lib/e11y/devtools/mcp/tools/clear.rb +31 -0
  140. data/gems/e11y-devtools/lib/e11y/devtools/mcp/tools/errors.rb +35 -0
  141. data/gems/e11y-devtools/lib/e11y/devtools/mcp/tools/event_detail.rb +33 -0
  142. data/gems/e11y-devtools/lib/e11y/devtools/mcp/tools/events_by_trace.rb +33 -0
  143. data/gems/e11y-devtools/lib/e11y/devtools/mcp/tools/interactions.rb +40 -0
  144. data/gems/e11y-devtools/lib/e11y/devtools/mcp/tools/recent_events.rb +34 -0
  145. data/gems/e11y-devtools/lib/e11y/devtools/mcp/tools/search.rb +34 -0
  146. data/gems/e11y-devtools/lib/e11y/devtools/mcp/tools/stats.rb +30 -0
  147. data/gems/e11y-devtools/lib/e11y/devtools/overlay/assets/overlay.js +20 -0
  148. data/gems/e11y-devtools/lib/e11y/devtools/overlay/controller.rb +94 -0
  149. data/gems/e11y-devtools/lib/e11y/devtools/overlay/engine.rb +26 -0
  150. data/gems/e11y-devtools/lib/e11y/devtools/overlay/middleware.rb +80 -0
  151. data/gems/e11y-devtools/lib/e11y/devtools/overlay/rails_controller.rb +67 -0
  152. data/gems/e11y-devtools/lib/e11y/devtools/tui/app.rb +262 -0
  153. data/gems/e11y-devtools/lib/e11y/devtools/tui/grouping.rb +66 -0
  154. data/gems/e11y-devtools/lib/e11y/devtools/tui/widgets/event_detail.rb +62 -0
  155. data/gems/e11y-devtools/lib/e11y/devtools/tui/widgets/event_list.rb +70 -0
  156. data/gems/e11y-devtools/lib/e11y/devtools/tui/widgets/interaction_list.rb +47 -0
  157. data/gems/e11y-devtools/lib/e11y/devtools/version.rb +8 -0
  158. data/gems/e11y-devtools/lib/e11y/devtools.rb +13 -0
  159. data/gems/e11y-devtools/spec/e11y/devtools/mcp/tools_spec.rb +107 -0
  160. data/gems/e11y-devtools/spec/e11y/devtools/overlay/controller_spec.rb +91 -0
  161. data/gems/e11y-devtools/spec/e11y/devtools/overlay/middleware_spec.rb +46 -0
  162. data/gems/e11y-devtools/spec/e11y/devtools/tui/app_spec.rb +85 -0
  163. data/gems/e11y-devtools/spec/e11y/devtools/tui/grouping_spec.rb +64 -0
  164. data/gems/e11y-devtools/spec/spec_helper.rb +5 -0
  165. data/gems/e11y-devtools/spec/tui/widgets/event_list_spec.rb +44 -0
  166. data/gems/e11y-devtools/spec/tui/widgets/interaction_list_spec.rb +62 -0
  167. data/lib/e11y/adapters/audit_encrypted.rb +53 -11
  168. data/lib/e11y/adapters/base.rb +33 -34
  169. data/lib/e11y/adapters/dev_log/file_store.rb +143 -0
  170. data/lib/e11y/adapters/dev_log/query.rb +219 -0
  171. data/lib/e11y/adapters/dev_log.rb +118 -0
  172. data/lib/e11y/adapters/file.rb +3 -6
  173. data/lib/e11y/adapters/in_memory.rb +52 -5
  174. data/lib/e11y/adapters/in_memory_test.rb +29 -0
  175. data/lib/e11y/adapters/loki.rb +58 -23
  176. data/lib/e11y/adapters/null.rb +82 -0
  177. data/lib/e11y/adapters/opentelemetry_collector.rb +183 -0
  178. data/lib/e11y/adapters/otel_logs.rb +136 -23
  179. data/lib/e11y/adapters/sentry.rb +4 -7
  180. data/lib/e11y/adapters/stdout.rb +73 -7
  181. data/lib/e11y/adapters/yabeda.rb +153 -29
  182. data/lib/e11y/buffers/adaptive_buffer.rb +3 -17
  183. data/lib/e11y/buffers/{request_scoped_buffer.rb → ephemeral_buffer.rb} +72 -58
  184. data/lib/e11y/buffers/ring_buffer.rb +3 -16
  185. data/lib/e11y/configuration.rb +272 -0
  186. data/lib/e11y/console.rb +10 -17
  187. data/lib/e11y/current.rb +53 -1
  188. data/lib/e11y/debug/pipeline_inspector.rb +96 -0
  189. data/lib/e11y/documentation/generator.rb +48 -0
  190. data/lib/e11y/event/base.rb +176 -82
  191. data/lib/e11y/event/value_sampling_config.rb +1 -5
  192. data/lib/e11y/events/rails/database/query.rb +1 -4
  193. data/lib/e11y/events/rails/job/failed.rb +2 -0
  194. data/lib/e11y/instruments/active_job.rb +44 -12
  195. data/lib/e11y/instruments/rails_instrumentation.rb +49 -24
  196. data/lib/e11y/instruments/sidekiq.rb +135 -31
  197. data/lib/e11y/linters/base.rb +11 -0
  198. data/lib/e11y/linters/pii/pii_declaration_linter.rb +120 -0
  199. data/lib/e11y/linters/slo/config_consistency_linter.rb +76 -0
  200. data/lib/e11y/linters/slo/explicit_declaration_linter.rb +36 -0
  201. data/lib/e11y/linters/slo/slo_status_from_linter.rb +41 -0
  202. data/lib/e11y/logger/bridge.rb +26 -7
  203. data/lib/e11y/metrics/cardinality_protection.rb +10 -15
  204. data/lib/e11y/metrics/cardinality_tracker.rb +16 -6
  205. data/lib/e11y/metrics/registry.rb +3 -5
  206. data/lib/e11y/metrics/test_backend.rb +62 -0
  207. data/lib/e11y/metrics.rb +56 -10
  208. data/lib/e11y/middleware/adapter_resolver.rb +40 -0
  209. data/lib/e11y/middleware/audit_signing.rb +43 -6
  210. data/lib/e11y/middleware/baggage_protection.rb +75 -0
  211. data/lib/e11y/middleware/dev_log_source.rb +24 -0
  212. data/lib/e11y/middleware/event_slo.rb +23 -9
  213. data/lib/e11y/middleware/otel_span.rb +23 -0
  214. data/lib/e11y/middleware/pii_filter.rb +104 -75
  215. data/lib/e11y/middleware/rate_limiting.rb +54 -27
  216. data/lib/e11y/middleware/request.rb +70 -23
  217. data/lib/e11y/middleware/routing.rb +78 -21
  218. data/lib/e11y/middleware/sampling.rb +66 -17
  219. data/lib/e11y/middleware/self_monitoring_emit.rb +39 -0
  220. data/lib/e11y/middleware/trace_context.rb +45 -10
  221. data/lib/e11y/middleware/track_latency.rb +34 -0
  222. data/lib/e11y/middleware/validation.rb +7 -16
  223. data/lib/e11y/middleware/versioning.rb +26 -22
  224. data/lib/e11y/opentelemetry/semantic_conventions.rb +109 -0
  225. data/lib/e11y/opentelemetry/span_creator.rb +142 -0
  226. data/lib/e11y/pii/patterns.rb +12 -1
  227. data/lib/e11y/pipeline/builder.rb +4 -4
  228. data/lib/e11y/presets/audit_event.rb +13 -2
  229. data/lib/e11y/railtie.rb +52 -14
  230. data/lib/e11y/registry.rb +306 -0
  231. data/lib/e11y/reliability/circuit_breaker.rb +19 -21
  232. data/lib/e11y/reliability/dlq/base.rb +71 -0
  233. data/lib/e11y/reliability/dlq/file_adapter.rb +301 -0
  234. data/lib/e11y/reliability/dlq/file_storage.rb +63 -34
  235. data/lib/e11y/reliability/dlq/filter.rb +37 -54
  236. data/lib/e11y/reliability/retry_handler.rb +26 -29
  237. data/lib/e11y/reliability/retry_rate_limiter.rb +3 -11
  238. data/lib/e11y/sampling/error_spike_detector.rb +0 -2
  239. data/lib/e11y/sampling/load_monitor.rb +5 -9
  240. data/lib/e11y/sampling/stratified_tracker.rb +18 -0
  241. data/lib/e11y/self_monitoring/buffer_monitor.rb +2 -0
  242. data/lib/e11y/self_monitoring/performance_monitor.rb +19 -61
  243. data/lib/e11y/self_monitoring/reliability_monitor.rb +4 -74
  244. data/lib/e11y/slo/config_loader.rb +40 -0
  245. data/lib/e11y/slo/config_validator.rb +58 -0
  246. data/lib/e11y/slo/dashboard_generator.rb +122 -0
  247. data/lib/e11y/slo/event_driven.rb +8 -0
  248. data/lib/e11y/slo/tracker.rb +31 -4
  249. data/lib/e11y/testing/have_tracked_event_matcher.rb +190 -0
  250. data/lib/e11y/testing/rspec_matchers.rb +21 -0
  251. data/lib/e11y/testing/snapshot_matcher.rb +86 -0
  252. data/lib/e11y/trace_context/sampler.rb +35 -0
  253. data/lib/e11y/tracing/faraday_middleware.rb +31 -0
  254. data/lib/e11y/tracing/net_http_patch.rb +33 -0
  255. data/lib/e11y/tracing/propagator.rb +144 -0
  256. data/lib/e11y/tracing.rb +47 -0
  257. data/lib/e11y/version.rb +1 -1
  258. data/lib/e11y/versioning/version_extractor.rb +32 -0
  259. data/lib/e11y.rb +123 -266
  260. data/lib/generators/e11y/event/event_generator.rb +22 -0
  261. data/lib/generators/e11y/event/templates/event.rb.tt +16 -0
  262. data/lib/generators/e11y/grafana_dashboard/grafana_dashboard_generator.rb +30 -0
  263. data/lib/generators/e11y/grafana_dashboard/templates/e11y_dashboard.json +81 -0
  264. data/lib/generators/e11y/install/install_generator.rb +34 -0
  265. data/lib/generators/e11y/install/templates/e11y.rb +239 -0
  266. data/lib/generators/e11y/prometheus_alerts/prometheus_alerts_generator.rb +29 -0
  267. data/lib/generators/e11y/prometheus_alerts/templates/e11y_alerts.yml +28 -0
  268. data/lib/tasks/e11y_docs.rake +30 -0
  269. data/lib/tasks/e11y_events.rake +71 -0
  270. data/lib/tasks/e11y_lint.rake +91 -0
  271. data/lib/tasks/e11y_slo.rake +29 -0
  272. metadata +186 -39
  273. data/docs/ADR-003-slo-observability.md +0 -3337
  274. data/docs/ADR-010-developer-experience.md +0 -2166
  275. data/docs/API-REFERENCE-L28.md +0 -914
  276. data/docs/COMPREHENSIVE-CONFIGURATION.md +0 -2366
  277. data/docs/CONTRIBUTING.md +0 -312
  278. data/docs/IMPLEMENTATION_NOTES.md +0 -2804
  279. data/docs/IMPLEMENTATION_PLAN.md +0 -1971
  280. data/docs/IMPLEMENTATION_PLAN_ARCHITECTURE.md +0 -586
  281. data/docs/PLAN.md +0 -148
  282. data/docs/README.md +0 -296
  283. data/docs/design/00-memory-optimization.md +0 -593
  284. data/docs/guides/MIGRATION-L27-L28.md +0 -692
  285. data/docs/guides/PERFORMANCE-BENCHMARKS.md +0 -434
  286. data/docs/guides/README.md +0 -44
  287. data/docs/use_cases/UC-003-pattern-based-metrics.md +0 -1627
  288. data/lib/e11y/adapters/registry.rb +0 -141
data/docs/PLAN.md DELETED
@@ -1,148 +0,0 @@
1
- # ✅ TeamTab Plan Successfully Created!
2
-
3
- **Date:** 2026-01-17
4
- **Status:** Complete (100%)
5
-
6
- ---
7
-
8
- ## 📊 CREATED PLANS SUMMARY
9
-
10
- ### **7 Root Tasks (Phases):**
11
-
12
- 1. **FEAT-4711:** PHASE 0: Gem Setup & Best Practices (Week -1)
13
- - 3 L3 components + 20 L4 subtasks
14
- - Root task (created separately)
15
-
16
- 2. **FEAT-4738:** PHASE 1: Foundation (Weeks 1-4)
17
- - 6 L3 components + 19 L4 subtasks
18
- - Root task (created separately)
19
-
20
- 3. **FEAT-4770:** PHASE 2: Core Features (Weeks 5-10)
21
- - 4 L3 components + 12 L4 subtasks
22
- - Root task (created separately)
23
-
24
- 4. **FEAT-4837:** PHASE 2.8: Advanced Sampling Strategies ⚡ *NEW*
25
- - 5 L3 components + 14 L4 subtasks
26
- - Root task (created 2026-01-20)
27
- - **Deferred from L2.7** - Advanced adaptive sampling (error-based, load-based, value-based, stratified)
28
-
29
- 5. **FEAT-4792:** PHASE 3: Rails Integration (Weeks 11-14)
30
- - 3 L3 components + 6 L4 subtasks
31
- - Root task (created separately)
32
-
33
- 6. **FEAT-4805:** PHASE 4: Production Hardening (Weeks 15-20)
34
- - 4 L3 components + 8 L4 subtasks
35
- - Root task (created separately)
36
-
37
- 7. **FEAT-4822:** PHASE 5: Scale & Optimization (Weeks 21-26)
38
- - 4 L3 components + 8 L4 subtasks
39
- - Root task (created separately)
40
-
41
- ---
42
-
43
- ## 📈 STATISTICS
44
-
45
- **Total Created:**
46
- - **7 root tasks** (phases) - *+1 added 2026-01-20*
47
- - **29 L3 components** (main subtasks) - *+5 from Phase 2.8*
48
- - **87 L4 subtasks** (detailed tasks) - *+14 from Phase 2.8*
49
- - **~120+ L5-L6 verification tasks** (in task descriptions)
50
-
51
- **Timeline:**
52
- - Week -1: Phase 0 (Research & Setup)
53
- - Weeks 1-4: Phase 1 (Foundation)
54
- - Weeks 5-10: Phase 2 (Core Features)
55
- - Weeks 11-14: Phase 3 (Rails Integration)
56
- - Weeks 15-20: Phase 4 (Production Hardening)
57
- - Weeks 21-26: Phase 5 (Scale & Optimization)
58
- - **Total Duration:** 23-27 weeks
59
-
60
- **Team:**
61
- - Peak parallelization: 6 developers simultaneously
62
- - Total estimate: ~1000+ person-hours
63
-
64
- ---
65
-
66
- ## ✅ WHAT'S INCLUDED IN THE PLAN
67
-
68
- ### **Phase 0: Gem Setup** ✅
69
- - Best practices research (Devise, Sidekiq, Puma, Dry-rb, Yabeda, Sentry)
70
- - Project skeleton setup (Zeitwerk, CI/CD, Docker Compose)
71
- - Team alignment
72
-
73
- ### **Phase 1: Foundation** ✅
74
- - Event::Base (zero-allocation, schema DSL, presets)
75
- - Buffers (RingBuffer, AdaptiveBuffer, RequestScoped)
76
- - Middleware Pipeline (zones, ordering)
77
-
78
- ### **Phase 2: Core Features** ✅
79
- - PII Filtering & Security (3-tier, audit pipeline)
80
- - Adapter Architecture (6 adapters: Stdout, File, Loki, Sentry, Elasticsearch, InMemory)
81
- - Metrics & Yabeda (pattern-based, cardinality protection)
82
- - Sampling & Cost Optimization (Basic - L2.7)
83
-
84
- ### **Phase 2.8: Advanced Sampling Strategies** ⚡ *NEW* ⏳
85
- - Error-Based Adaptive Sampling (↑ rate during incidents)
86
- - Load-Based Adaptive Sampling (↓ rate during overload)
87
- - Value-Based Sampling (↑ rate for high-value events)
88
- - Stratified Sampling for SLO Accuracy (C11)
89
- - **Status:** Planned (2026-01-20), awaiting approval to start
90
- - **Depends On:** L2.7 (Basic Sampling - completed)
91
-
92
- ### **Phase 3: Rails Integration** ✅
93
- - Railtie & Auto-Configuration
94
- - Rails Instrumentation (unidirectional ASN → E11y)
95
- - Sidekiq/ActiveJob Integration (hybrid tracing)
96
- - Rails.logger Migration
97
-
98
- ### **Phase 4: Production Hardening** ✅
99
- - Reliability & Error Handling (DLQ, rate limiting, retry)
100
- - OpenTelemetry Integration (logs, baggage PII protection)
101
- - Event Versioning & Schema Migrations
102
- - SLO Tracking & Self-Monitoring
103
-
104
- ### **Phase 5: Scale & Optimization** ✅
105
- - High Cardinality Protection (dynamic actions)
106
- - Tiered Storage Migration (hot/warm/cold)
107
- - Performance Optimization (1K → 10K → 100K events/sec)
108
- - Documentation & Gem Release
109
-
110
- ---
111
-
112
- ## 🎯 KEY ACHIEVEMENTS
113
-
114
- ✅ **All ADRs covered** (ADR-001 to ADR-016)
115
- ✅ **All Use Cases covered** (UC-001 to UC-022)
116
- ✅ **All critical resolutions** (C01 to C20)
117
- ✅ **Detailed DoD for each task**
118
- ✅ **[P] markers for parallelization**
119
- ✅ **Quality Gates for milestone tasks**
120
- ✅ **Verification steps (L6) in descriptions**
121
-
122
- ---
123
-
124
- ## 🚀 NEXT STEPS
125
-
126
- ### **Current Status (2026-01-20):**
127
- - ✅ **L2.7 (Basic Sampling)** - COMPLETED
128
- - ⏳ **FEAT-4837 (Phase 2.8)** - AWAITING APPROVAL
129
- - Plan created for advanced sampling strategies
130
- - Need human approval to start execution
131
-
132
- ### **To Continue:**
133
- 1. **Return to main plan:** Continue with original Phase 2 tasks (L2.8+)
134
- 2. **Approve Phase 2.8:** Review and approve FEAT-4837 when ready to implement advanced sampling
135
- 3. **Track progress:** Monitor via TeamTab dashboard
136
-
137
- ---
138
-
139
- ## 📝 REFERENCES
140
-
141
- - **Main Plan:** `docs/IMPLEMENTATION_PLAN.md`
142
- - **Architecture:** `docs/IMPLEMENTATION_PLAN_ARCHITECTURE.md`
143
- - **ADRs:** `docs/ADR-001-*.md` to `docs/ADR-016-*.md`
144
- - **Use Cases:** `docs/use_cases/UC-001-*.md` to `docs/use_cases/UC-022-*.md`
145
-
146
- ---
147
-
148
- **🎉 Plan is ready for execution! All 6 phases created with detailed structure, DoD, and clear dependencies.**
data/docs/README.md DELETED
@@ -1,296 +0,0 @@
1
- # E11y - Complete Documentation
2
-
3
- > **E11y** = **e**asy t**e**lemetry (11 букв между 'e' и 'y', как i18n, l10n)
4
-
5
- Production-ready Ruby gem для структурированных бизнес-событий с request-scoped buffering, pattern-based метриками и zero-config SLO tracking.
6
-
7
- ---
8
-
9
- ## 🚀 Quick Links
10
-
11
- - **[Quick Start Guide](./QUICK-START.md)** - 5-minute setup
12
- - **[SLO Implementation Guide](./SLO-IMPLEMENTATION-GUIDE.md)** ⭐ Quick navigation for SLO setup
13
- - **[Configuration Reference](./COMPREHENSIVE-CONFIGURATION.md)** - All config options
14
- - **[ADR Coverage Check](./ADR-COVERAGE-CHECK.md)** - Architecture decisions
15
-
16
- ---
17
-
18
- ## 🎯 **NEW: IMPLEMENTATION PLAN (2026-01-17)** ⭐
19
-
20
- **Complete implementation plan ready for execution!**
21
-
22
- - 📄 **[IMPLEMENTATION_PLAN.md](./IMPLEMENTATION_PLAN.md)** - Main plan
23
- - 6 phases, 19 components, 220+ tasks with DoD
24
- - Parallelization strategy, integration contracts
25
-
26
- - 📄 **[IMPLEMENTATION_PLAN_ARCHITECTURE.md](./IMPLEMENTATION_PLAN_ARCHITECTURE.md)** - Architecture decisions
27
- - Critical questions & answers (Q1-Q4)
28
- - Unidirectional ASN flow, overridable event classes, Phase 0
29
-
30
- **Key Metrics:**
31
- - **Timeline:** 23-27 weeks (includes Week -1 gem setup)
32
- - **Team Size:** 4-6 developers (peak: 6)
33
- - **Quality:** 100% ADR/UC coverage, professional Rails gem
34
- - **Status:** ✅ Ready for execution
35
-
36
- ---
37
-
38
- ## 📚 Documentation Structure
39
-
40
- ### 1. Getting Started
41
- - **[00. ICP & Timeline](./00-ICP-AND-TIMELINE.md)** - Project overview, target users, roadmap
42
- - **[01. Scale Requirements](./01-SCALE-REQUIREMENTS.md)** - Performance targets, capacity planning
43
- - **[Quick Start](./quick-start.md)** - 5-minute setup guide
44
- - **[Installation](./installation.md)** - Detailed installation steps
45
-
46
- ### 2. Product Requirements (PRD)
47
- - **[PRD-01: Overview & Vision](./prd/01-overview-vision.md)** - Problem, solution, value proposition
48
- - **[PRD-02: Functional Requirements](./prd/02-functional-requirements.md)** - What the gem does
49
- - **[PRD-03: User Stories](./prd/03-user-stories.md)** - By persona
50
- - **[PRD-04: Success Metrics](./prd/04-success-metrics.md)** - How we measure success
51
- - **[PRD-05: Competitive Analysis](./prd/05-competitive-analysis.md)** - vs OTel, Sentry, Yabeda
52
-
53
- ### 3. Technical Requirements (TRD)
54
- - **[TRD-01: System Architecture](./trd/01-system-architecture.md)** - High-level design (C4 diagrams)
55
- - **[TRD-02: API Design](./trd/02-api-design.md)** - Event DSL, configuration DSL
56
- - **[TRD-03: Data Models](./trd/03-data-models.md)** - Event structure, schemas
57
- - **[TRD-04: Performance Requirements](./trd/04-performance-requirements.md)** - Latency, throughput, memory
58
- - **[TRD-05: Security Requirements](./trd/05-security-requirements.md)** - PII filtering, rate limiting, audit
59
- - **[TRD-06: Integration Requirements](./trd/06-integration-requirements.md)** - OTel, Yabeda, Rails, Sidekiq
60
-
61
- ### 4. Detailed Design
62
- - **[Design-01: Event Layer](./design/01-event-layer.md)** - Event DSL, validation, registry
63
- - **[Design-02: Processing Layer](./design/02-processing-layer.md)** - Filtering, PII, rate limiting
64
- - **[Design-03: Buffer Layer](./design/03-buffer-layer.md)** - Ring buffer, request-scoped buffering
65
- - **[Design-04: Metrics Layer](./design/04-metrics-layer.md)** - Pattern-based metrics, Yabeda integration
66
- - **[Design-05: Adapter Layer](./design/05-adapter-layer.md)** - Pluggable backends (Loki, ELK, Sentry)
67
- - **[Design-06: Transport Layer](./design/06-transport-layer.md)** - Async workers, retry, circuit breaker
68
- - **[Design-07: OpenTelemetry Integration](./design/07-opentelemetry-integration.md)** - OTel Collector, traces
69
- - **[Design-08: SLO Tracking](./design/08-slo-tracking.md)** - Auto-instrumentation, error budgets
70
-
71
- ### 5. Use Cases
72
- - **[Use Cases Index](./use_cases/README.md)** - All use cases by category
73
- - **[UC-001: Request-Scoped Debug Buffering](./use_cases/UC-001-request-scoped-debug-buffering.md)** ⭐ Killer feature
74
- - **[UC-002: Business Event Tracking](./use_cases/UC-002-business-event-tracking.md)** ⭐ Core feature
75
- - **[UC-003: Pattern-Based Metrics](./use_cases/UC-003-pattern-based-metrics.md)**
76
- - **[UC-004: Zero-Config SLO Tracking](./use_cases/UC-004-zero-config-slo-tracking.md)** ⭐ Killer feature
77
- - **[UC-005: PII Filtering](./use_cases/UC-005-pii-filtering.md)**
78
- - **[UC-006-016: Additional Use Cases](./use_cases/README.md)**
79
-
80
- ### 6. Configuration
81
- - **[Configuration Reference](./configuration/README.md)** - All options explained
82
- - **[Configuration Examples](./configuration/examples.md)** - Small/Medium/Large teams
83
- - **[Configuration Best Practices](./configuration/best-practices.md)** - Production recommendations
84
-
85
- ### 7. API Reference
86
- - **[API Overview](./api/README.md)**
87
- - **[Event API](./api/event-api.md)** - E11y::Event class, attributes, validation
88
- - **[Configuration API](./api/configuration-api.md)** - E11y.configure DSL
89
- - **[Tracking API](./api/tracking-api.md)** - .track() method, blocks
90
- - **[Metrics API](./api/metrics-api.md)** - Pattern-based metrics DSL
91
-
92
- ### 8. Guides
93
- - **[Migration from Rails.logger](./guides/migration-from-rails-logger.md)**
94
- - **[Migration from Yabeda](./guides/migration-from-yabeda.md)**
95
- - **[Integration with OpenTelemetry](./guides/opentelemetry-integration.md)**
96
- - **[Testing Guide](./guides/testing.md)** - Unit, integration, load tests
97
- - **[Debugging Guide](./guides/debugging.md)** - Troubleshooting
98
- - **[Performance Tuning](./guides/performance-tuning.md)** - Optimization tips
99
-
100
- ### 9. Architecture Decision Records (ADRs)
101
-
102
- **Complete ADRs:**
103
- - **[ADR-001: Architecture](./ADR-001-architecture.md)** - Core architecture, components, processing pipeline
104
- - **[ADR-002: Metrics & Yabeda](./ADR-002-metrics-yabeda.md)** - Pattern-based metrics, cardinality protection
105
- - **[ADR-003: SLO & Observability](./ADR-003-slo-observability.md)** - HTTP/Job SLO, per-endpoint config, burn rate alerts
106
- - **[ADR-004: Adapter Architecture](./ADR-004-adapter-architecture.md)** - Pluggable backends, retry, circuit breaker
107
- - **[ADR-005: Tracing & Context](./ADR-005-tracing-context.md)** - W3C Trace Context, propagation
108
- - **[ADR-006: Security & Compliance](./ADR-006-security-compliance.md)** - PII filtering, rate limiting, audit trail
109
- - **[ADR-007: OpenTelemetry Integration](./ADR-007-opentelemetry-integration.md)** - OTLP, semantic conventions
110
- - **[ADR-008: Rails Integration](./ADR-008-rails-integration.md)** - Railtie, Rack, Sidekiq, ActiveJob
111
- - **[ADR-009: Cost Optimization](./ADR-009-cost-optimization.md)** - Sampling, compression, smart routing
112
- - **[ADR-010: Developer Experience](./ADR-010-developer-experience.md)** - Console, Web UI, debug tools
113
- - **[ADR-011: Testing Strategy](./ADR-011-testing-strategy.md)** - RSpec matchers, test adapters
114
- - **[ADR-012: Event Evolution](./ADR-012-event-evolution.md)** - Versioning, schema changes, DLQ replay
115
- - **[ADR-013: Reliability & Error Handling](./ADR-013-reliability-error-handling.md)** - Retry, DLQ, circuit breaker
116
- - **[ADR-014: Event-Driven SLO](./ADR-014-event-driven-slo.md)** - Custom SLO for business logic
117
- - **[ADR-015: Middleware Order](./ADR-015-middleware-order.md)** - Processing pipeline execution order
118
-
119
- **Integration & Analysis:**
120
- - **[ADR-003-014 Integration](./ADR-003-014-INTEGRATION.md)** - How HTTP SLO and Event SLO work together
121
- - **[ADR Coverage Check](./ADR-COVERAGE-CHECK.md)** - ADR completeness matrix
122
-
123
- ### 10. Implementation Plan
124
- - **[Phase 1: MVP Core](./implementation/phase-1-mvp.md)** - Weeks 1-8
125
- - **[Phase 2: Yabeda Integration](./implementation/phase-2-yabeda.md)** - Weeks 9-12
126
- - **[Phase 3: SLO Tracking](./implementation/phase-3-slo.md)** - Weeks 13-16
127
- - **[Phase 4: OpenTelemetry](./implementation/phase-4-otel.md)** - Weeks 17-20
128
- - **[Phase 5: Production Hardening](./implementation/phase-5-hardening.md)** - Weeks 21-24
129
-
130
- ### 11. Research & Analysis
131
- - **[Research Findings 2025](./research/e11y-research-findings-2025.md)** - 40+ sources analyzed
132
- - **[Cardinality Protection](./research/cardinality-protection.md)** - Critical issue deep-dive
133
- - **[Rails PII Filtering Compatibility](./research/rails-pii-filtering.md)** - Design decision
134
-
135
- ### 12. Operations
136
- - **[Deployment Guide](./operations/deployment.md)** - Production deployment
137
- - **[Monitoring Guide](./operations/monitoring.md)** - Self-monitoring
138
- - **[Alerting Guide](./operations/alerting.md)** - Prometheus alerts
139
- - **[Runbooks](./operations/runbooks/)** - Common operational tasks
140
-
141
- ---
142
-
143
- ## 🎯 Documentation by Persona
144
-
145
- ### Ruby/Rails Developers
146
- **Start here:**
147
- 1. [Quick Start](./quick-start.md) - Get running in 5 minutes
148
- 2. [UC-002: Business Event Tracking](./use_cases/UC-002-business-event-tracking.md) - Core functionality
149
- 3. [Migration from Rails.logger](./guides/migration-from-rails-logger.md) - Replace existing logging
150
-
151
- **Then explore:**
152
- - [Event API Reference](./api/event-api.md)
153
- - [Testing Guide](./guides/testing.md)
154
- - [Configuration Examples](./configuration/examples.md)
155
-
156
- ---
157
-
158
- ### DevOps/SRE Engineers
159
- **Start here:**
160
- 1. [01. Scale Requirements](./01-SCALE-REQUIREMENTS.md) - Performance targets
161
- 2. [UC-004: Zero-Config SLO Tracking](./use_cases/UC-004-zero-config-slo-tracking.md) - Auto-monitoring
162
- 3. [Deployment Guide](./operations/deployment.md) - Production setup
163
-
164
- **Then explore:**
165
- - [Performance Requirements](./trd/04-performance-requirements.md)
166
- - [Monitoring Guide](./operations/monitoring.md)
167
- - [Performance Tuning](./guides/performance-tuning.md)
168
-
169
- ---
170
-
171
- ### Engineering Managers/CTOs
172
- **Start here:**
173
- 1. [00. ICP & Timeline](./00-ICP-AND-TIMELINE.md) - Project overview, ROI
174
- 2. [PRD-01: Overview & Vision](./prd/01-overview-vision.md) - Business value
175
- 3. [PRD-05: Competitive Analysis](./prd/05-competitive-analysis.md) - vs alternatives
176
-
177
- **Then explore:**
178
- - [Success Metrics](./prd/04-success-metrics.md)
179
- - [Implementation Plan](./implementation/phase-1-mvp.md)
180
-
181
- ---
182
-
183
- ### Security/Compliance Teams
184
- **Start here:**
185
- 1. [UC-005: PII Filtering](./use_cases/UC-005-pii-filtering.md) - Rails-compatible filtering
186
- 2. [Security Requirements](./trd/05-security-requirements.md) - Threat model
187
- 3. [UC-007: Audit Trail](./use_cases/UC-007-audit-trail.md) - Compliance logging
188
-
189
- **Then explore:**
190
- - [Design-02: Processing Layer](./design/02-processing-layer.md) - PII, rate limiting
191
-
192
- ---
193
-
194
- ## 🔍 Finding What You Need
195
-
196
- ### By Task
197
-
198
- **"I want to get started quickly"**
199
- → [Quick Start Guide](./quick-start.md)
200
-
201
- **"I need to track business events"**
202
- → [UC-002: Business Event Tracking](./use_cases/UC-002-business-event-tracking.md)
203
-
204
- **"I need to debug production issues"**
205
- → [UC-001: Request-Scoped Debug Buffering](./use_cases/UC-001-request-scoped-debug-buffering.md)
206
-
207
- **"I need SLO monitoring"**
208
- → [SLO Implementation Guide](./SLO-IMPLEMENTATION-GUIDE.md) ⭐ or [UC-004: Zero-Config SLO](./use_cases/UC-004-zero-config-slo-tracking.md)
209
-
210
- **"I need to filter PII"**
211
- → [UC-005: PII Filtering](./use_cases/UC-005-pii-filtering.md)
212
-
213
- **"I need to migrate from Rails.logger"**
214
- → [Migration Guide](./guides/migration-from-rails-logger.md)
215
-
216
- **"I need to integrate with OpenTelemetry"**
217
- → [OpenTelemetry Integration Guide](./guides/opentelemetry-integration.md)
218
-
219
- **"I need to test events"**
220
- → [Testing Guide](./guides/testing.md)
221
-
222
- **"I need to optimize performance"**
223
- → [Performance Tuning Guide](./guides/performance-tuning.md)
224
-
225
- **"I need to deploy to production"**
226
- → [Deployment Guide](./operations/deployment.md)
227
-
228
- ---
229
-
230
- ### By Feature
231
-
232
- - **Event DSL:** [Event API](./api/event-api.md), [Design-01](./design/01-event-layer.md)
233
- - **Request-Scoped Buffering:** [UC-001](./use_cases/UC-001-request-scoped-debug-buffering.md), [Design-03](./design/03-buffer-layer.md)
234
- - **Pattern-Based Metrics:** [UC-003](./use_cases/UC-003-pattern-based-metrics.md), [Design-04](./design/04-metrics-layer.md)
235
- - **SLO Tracking:** [UC-004](./use_cases/UC-004-zero-config-slo-tracking.md), [Design-08](./design/08-slo-tracking.md)
236
- - **PII Filtering:** [UC-005](./use_cases/UC-005-pii-filtering.md), [Design-02](./design/02-processing-layer.md)
237
- - **OpenTelemetry:** [Guide](./guides/opentelemetry-integration.md), [Design-07](./design/07-opentelemetry-integration.md)
238
- - **Adapters:** [Design-05](./design/05-adapter-layer.md)
239
-
240
- ---
241
-
242
- ## 📖 Reading Order
243
-
244
- ### For First-Time Users (Linear)
245
- 1. [Quick Start](./quick-start.md) - 5 min
246
- 2. [UC-002: Business Event Tracking](./use_cases/UC-002-business-event-tracking.md) - 15 min
247
- 3. [Configuration Examples](./configuration/examples.md) - 10 min
248
- 4. [UC-001: Request-Scoped Debug Buffering](./use_cases/UC-001-request-scoped-debug-buffering.md) - 20 min
249
- 5. [UC-004: Zero-Config SLO Tracking](./use_cases/UC-004-zero-config-slo-tracking.md) - 15 min
250
-
251
- **Total: ~1 hour to understand core features**
252
-
253
- ---
254
-
255
- ### For Production Deployment (Checklist)
256
- - [ ] Read [Quick Start](./quick-start.md)
257
- - [ ] Review [Scale Requirements](./01-SCALE-REQUIREMENTS.md)
258
- - [ ] Read [Security Requirements](./trd/05-security-requirements.md)
259
- - [ ] Configure [PII Filtering](./use_cases/UC-005-pii-filtering.md)
260
- - [ ] Set up [Adapters](./design/05-adapter-layer.md) (Loki, Sentry)
261
- - [ ] Enable [SLO Tracking](./use_cases/UC-004-zero-config-slo-tracking.md)
262
- - [ ] Review [Performance Tuning](./guides/performance-tuning.md)
263
- - [ ] Follow [Deployment Guide](./operations/deployment.md)
264
- - [ ] Set up [Monitoring](./operations/monitoring.md) & [Alerting](./operations/alerting.md)
265
-
266
- ---
267
-
268
- ## 🤝 Contributing
269
-
270
- See [CONTRIBUTING.md](../CONTRIBUTING.md) for:
271
- - How to report bugs
272
- - How to suggest features
273
- - How to submit patches
274
- - Development setup
275
-
276
- ---
277
-
278
- ## 📜 License
279
-
280
- E11y is released under the [MIT License](../LICENSE.md).
281
-
282
- ---
283
-
284
- ## 🔗 External Resources
285
-
286
- - **GitHub:** https://github.com/yourorg/e11y
287
- - **RubyGems:** https://rubygems.org/gems/e11y
288
- - **Documentation Site:** https://e11y.dev
289
- - **Community Discord:** https://discord.gg/e11y
290
- - **Twitter:** @e11y_gem
291
-
292
- ---
293
-
294
- **Document Version:** 1.0
295
- **Last Updated:** January 12, 2026
296
- **Project Status:** MVP Development (Phase 1)