ariadna 1.3.1 → 2.0.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.
- checksums.yaml +4 -4
- data/ariadna.gemspec +0 -1
- data/data/agents/ariadna-codebase-mapper.md +34 -722
- data/data/agents/ariadna-debugger.md +44 -1139
- data/data/agents/ariadna-executor.md +75 -396
- data/data/agents/ariadna-planner.md +78 -1215
- data/data/agents/ariadna-roadmapper.md +55 -582
- data/data/agents/ariadna-verifier.md +60 -702
- data/data/ariadna/templates/config.json +8 -33
- data/data/ariadna/workflows/debug.md +28 -0
- data/data/ariadna/workflows/execute-phase.md +31 -513
- data/data/ariadna/workflows/map-codebase.md +20 -319
- data/data/ariadna/workflows/new-milestone.md +20 -365
- data/data/ariadna/workflows/new-project.md +19 -880
- data/data/ariadna/workflows/plan-phase.md +24 -443
- data/data/ariadna/workflows/progress.md +20 -376
- data/data/ariadna/workflows/quick.md +19 -221
- data/data/ariadna/workflows/roadmap-ops.md +28 -0
- data/data/ariadna/workflows/verify-work.md +23 -560
- data/data/commands/ariadna/add-phase.md +11 -22
- data/data/commands/ariadna/debug.md +11 -143
- data/data/commands/ariadna/execute-phase.md +12 -30
- data/data/commands/ariadna/insert-phase.md +7 -14
- data/data/commands/ariadna/map-codebase.md +16 -49
- data/data/commands/ariadna/new-milestone.md +12 -25
- data/data/commands/ariadna/new-project.md +22 -26
- data/data/commands/ariadna/plan-phase.md +13 -22
- data/data/commands/ariadna/progress.md +16 -6
- data/data/commands/ariadna/quick.md +9 -11
- data/data/commands/ariadna/remove-phase.md +9 -12
- data/data/commands/ariadna/verify-work.md +14 -19
- data/data/skills/rails-backend/API.md +138 -0
- data/data/skills/rails-backend/CONTROLLERS.md +154 -0
- data/data/skills/rails-backend/JOBS.md +132 -0
- data/data/skills/rails-backend/MODELS.md +213 -0
- data/data/skills/rails-backend/SKILL.md +169 -0
- data/data/skills/rails-frontend/ASSETS.md +154 -0
- data/data/skills/rails-frontend/COMPONENTS.md +253 -0
- data/data/skills/rails-frontend/SKILL.md +187 -0
- data/data/skills/rails-frontend/VIEWS.md +168 -0
- data/data/skills/rails-performance/PROFILING.md +106 -0
- data/data/skills/rails-performance/SKILL.md +217 -0
- data/data/skills/rails-security/AUDIT.md +118 -0
- data/data/skills/rails-security/SKILL.md +422 -0
- data/data/skills/rails-testing/FIXTURES.md +78 -0
- data/data/skills/rails-testing/SKILL.md +160 -0
- data/data/skills/rails-testing/SYSTEM-TESTS.md +73 -0
- data/lib/ariadna/installer.rb +11 -15
- data/lib/ariadna/tools/cli.rb +0 -12
- data/lib/ariadna/tools/config_manager.rb +10 -72
- data/lib/ariadna/tools/frontmatter.rb +23 -1
- data/lib/ariadna/tools/init.rb +201 -401
- data/lib/ariadna/tools/model_profiles.rb +6 -14
- data/lib/ariadna/tools/phase_manager.rb +1 -10
- data/lib/ariadna/tools/state_manager.rb +170 -451
- data/lib/ariadna/tools/template_filler.rb +4 -12
- data/lib/ariadna/tools/verification.rb +21 -399
- data/lib/ariadna/uninstaller.rb +9 -0
- data/lib/ariadna/version.rb +1 -1
- metadata +20 -91
- data/data/agents/ariadna-backend-executor.md +0 -261
- data/data/agents/ariadna-frontend-executor.md +0 -259
- data/data/agents/ariadna-integration-checker.md +0 -418
- data/data/agents/ariadna-phase-researcher.md +0 -469
- data/data/agents/ariadna-plan-checker.md +0 -622
- data/data/agents/ariadna-project-researcher.md +0 -618
- data/data/agents/ariadna-research-synthesizer.md +0 -236
- data/data/agents/ariadna-test-executor.md +0 -266
- data/data/ariadna/references/checkpoints.md +0 -772
- data/data/ariadna/references/continuation-format.md +0 -249
- data/data/ariadna/references/decimal-phase-calculation.md +0 -65
- data/data/ariadna/references/git-integration.md +0 -248
- data/data/ariadna/references/git-planning-commit.md +0 -38
- data/data/ariadna/references/model-profile-resolution.md +0 -32
- data/data/ariadna/references/model-profiles.md +0 -73
- data/data/ariadna/references/phase-argument-parsing.md +0 -61
- data/data/ariadna/references/planning-config.md +0 -194
- data/data/ariadna/references/questioning.md +0 -153
- data/data/ariadna/references/rails-conventions.md +0 -416
- data/data/ariadna/references/tdd.md +0 -267
- data/data/ariadna/references/ui-brand.md +0 -160
- data/data/ariadna/references/verification-patterns.md +0 -853
- data/data/ariadna/templates/codebase/architecture.md +0 -481
- data/data/ariadna/templates/codebase/concerns.md +0 -380
- data/data/ariadna/templates/codebase/conventions.md +0 -434
- data/data/ariadna/templates/codebase/integrations.md +0 -328
- data/data/ariadna/templates/codebase/stack.md +0 -189
- data/data/ariadna/templates/codebase/structure.md +0 -418
- data/data/ariadna/templates/codebase/testing.md +0 -606
- data/data/ariadna/templates/context.md +0 -283
- data/data/ariadna/templates/continue-here.md +0 -78
- data/data/ariadna/templates/debug-subagent-prompt.md +0 -91
- data/data/ariadna/templates/phase-prompt.md +0 -609
- data/data/ariadna/templates/planner-subagent-prompt.md +0 -117
- data/data/ariadna/templates/research-project/ARCHITECTURE.md +0 -439
- data/data/ariadna/templates/research-project/FEATURES.md +0 -168
- data/data/ariadna/templates/research-project/PITFALLS.md +0 -406
- data/data/ariadna/templates/research-project/STACK.md +0 -251
- data/data/ariadna/templates/research-project/SUMMARY.md +0 -247
- data/data/ariadna/templates/state.md +0 -176
- data/data/ariadna/templates/summary-complex.md +0 -59
- data/data/ariadna/templates/summary-minimal.md +0 -41
- data/data/ariadna/templates/summary-standard.md +0 -48
- data/data/ariadna/templates/user-setup.md +0 -310
- data/data/ariadna/workflows/add-phase.md +0 -111
- data/data/ariadna/workflows/add-todo.md +0 -157
- data/data/ariadna/workflows/audit-milestone.md +0 -241
- data/data/ariadna/workflows/check-todos.md +0 -176
- data/data/ariadna/workflows/complete-milestone.md +0 -644
- data/data/ariadna/workflows/diagnose-issues.md +0 -219
- data/data/ariadna/workflows/discovery-phase.md +0 -289
- data/data/ariadna/workflows/discuss-phase.md +0 -408
- data/data/ariadna/workflows/execute-plan.md +0 -448
- data/data/ariadna/workflows/help.md +0 -470
- data/data/ariadna/workflows/insert-phase.md +0 -129
- data/data/ariadna/workflows/list-phase-assumptions.md +0 -178
- data/data/ariadna/workflows/pause-work.md +0 -122
- data/data/ariadna/workflows/plan-milestone-gaps.md +0 -256
- data/data/ariadna/workflows/remove-phase.md +0 -154
- data/data/ariadna/workflows/research-phase.md +0 -74
- data/data/ariadna/workflows/resume-project.md +0 -306
- data/data/ariadna/workflows/set-profile.md +0 -80
- data/data/ariadna/workflows/settings.md +0 -145
- data/data/ariadna/workflows/transition.md +0 -493
- data/data/ariadna/workflows/update.md +0 -212
- data/data/ariadna/workflows/verify-phase.md +0 -226
- data/data/commands/ariadna/add-todo.md +0 -42
- data/data/commands/ariadna/audit-milestone.md +0 -42
- data/data/commands/ariadna/check-todos.md +0 -41
- data/data/commands/ariadna/complete-milestone.md +0 -136
- data/data/commands/ariadna/discuss-phase.md +0 -86
- data/data/commands/ariadna/help.md +0 -22
- data/data/commands/ariadna/list-phase-assumptions.md +0 -50
- data/data/commands/ariadna/pause-work.md +0 -35
- data/data/commands/ariadna/plan-milestone-gaps.md +0 -40
- data/data/commands/ariadna/reapply-patches.md +0 -110
- data/data/commands/ariadna/research-phase.md +0 -187
- data/data/commands/ariadna/resume-work.md +0 -40
- data/data/commands/ariadna/set-profile.md +0 -34
- data/data/commands/ariadna/settings.md +0 -36
- data/data/commands/ariadna/update.md +0 -37
- data/data/guides/backend.md +0 -3069
- data/data/guides/frontend.md +0 -1479
- data/data/guides/performance.md +0 -1193
- data/data/guides/security.md +0 -1522
- data/data/guides/style-guide.md +0 -1091
- data/data/guides/testing.md +0 -504
- data/data/templates.md +0 -94
|
@@ -1,328 +0,0 @@
|
|
|
1
|
-
# External Integrations Template
|
|
2
|
-
|
|
3
|
-
Template for `.ariadna_planning/codebase/INTEGRATIONS.md` - captures external service dependencies.
|
|
4
|
-
|
|
5
|
-
**Purpose:** Document what external systems this codebase communicates with. Focused on "what lives outside our code that we depend on."
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## File Template
|
|
10
|
-
|
|
11
|
-
```markdown
|
|
12
|
-
# External Integrations
|
|
13
|
-
|
|
14
|
-
**Analysis Date:** [YYYY-MM-DD]
|
|
15
|
-
|
|
16
|
-
## APIs & External Services
|
|
17
|
-
|
|
18
|
-
**Payment Processing:**
|
|
19
|
-
- [Service] - [What it's used for: e.g., "subscription billing, one-time payments"]
|
|
20
|
-
- Gem: [e.g., "`stripe` gem"]
|
|
21
|
-
- Auth: [e.g., "`Rails.application.credentials.stripe[:secret_key]` or `ENV["STRIPE_SECRET_KEY"]`"]
|
|
22
|
-
- Integration: [e.g., "Stripe::Customer, Stripe::PaymentIntent, webhooks"]
|
|
23
|
-
|
|
24
|
-
**Email:**
|
|
25
|
-
- [Service] - [What it's used for: e.g., "transactional emails"]
|
|
26
|
-
- Gem: [e.g., "`postmark-rails` gem"]
|
|
27
|
-
- Delivery method: [e.g., "ActionMailer with SMTP or API delivery"]
|
|
28
|
-
- Templates: [e.g., "ERB views in `app/views/user_mailer/`"]
|
|
29
|
-
- Config: [e.g., "`config/environments/production.rb` mail settings"]
|
|
30
|
-
|
|
31
|
-
**External APIs:**
|
|
32
|
-
- [Service] - [What it's used for]
|
|
33
|
-
- Gem/Client: [e.g., "`faraday` gem", "`httparty` gem", "custom API wrapper in `app/services/`"]
|
|
34
|
-
- Auth: [e.g., "Bearer token via `Rails.application.credentials`"]
|
|
35
|
-
- Rate limits: [if applicable]
|
|
36
|
-
|
|
37
|
-
## Data Storage
|
|
38
|
-
|
|
39
|
-
**Databases:**
|
|
40
|
-
- [Type/Provider] - [e.g., "SQLite (Rails default)" or "PostgreSQL on Render"]
|
|
41
|
-
- Connection: [e.g., "via `config/database.yml` and `DATABASE_URL` env var"]
|
|
42
|
-
- Client: [e.g., "ActiveRecord"]
|
|
43
|
-
- Migrations: [e.g., "`db/migrate/` via `rails db:migrate`"]
|
|
44
|
-
|
|
45
|
-
**File Storage:**
|
|
46
|
-
- [Service] - [e.g., "AWS S3 for user uploads via ActiveStorage"]
|
|
47
|
-
- Gem: [e.g., "`aws-sdk-s3` gem"]
|
|
48
|
-
- Config: [e.g., "`config/storage.yml`"]
|
|
49
|
-
- Service: [e.g., "`amazon` service in production, `local` in development"]
|
|
50
|
-
|
|
51
|
-
**Caching:**
|
|
52
|
-
- [Service] - [e.g., "Solid Cache for database-backed caching" or "Redis for shared state caching"]
|
|
53
|
-
- Gem: [e.g., "`solid_cache` gem" or "`redis` gem"]
|
|
54
|
-
- Interface: [e.g., "`Rails.cache` with `solid_cache_store`" or "`redis_cache_store`"]
|
|
55
|
-
- Config: [e.g., "`config/cache.yml` for Solid Cache" or "`config/environments/production.rb` cache store settings"]
|
|
56
|
-
|
|
57
|
-
## Authentication & Identity
|
|
58
|
-
|
|
59
|
-
**Auth Provider:**
|
|
60
|
-
- [Approach] - [e.g., "Rails authentication generator with `Authentication` concern", "`has_secure_password` with custom auth"]
|
|
61
|
-
- Setup: [e.g., "`bin/rails generate authentication`"]
|
|
62
|
-
- Config: [e.g., "`app/controllers/concerns/authentication.rb`"]
|
|
63
|
-
- Session management: [e.g., "database-tracked sessions via `Session` model", "cookie-based sessions"]
|
|
64
|
-
|
|
65
|
-
**OAuth Integrations:**
|
|
66
|
-
- [Provider] - [e.g., "Google OAuth for sign-in"]
|
|
67
|
-
- Gem: [e.g., "`omniauth-google-oauth2`"]
|
|
68
|
-
- Credentials: [e.g., "`Rails.application.credentials.google[:client_id]`"]
|
|
69
|
-
- Scopes: [e.g., "email, profile"]
|
|
70
|
-
|
|
71
|
-
## Monitoring & Observability
|
|
72
|
-
|
|
73
|
-
**Error Tracking:**
|
|
74
|
-
- [Service] - [e.g., "Sentry"]
|
|
75
|
-
- Gem: [e.g., "`sentry-ruby` and `sentry-rails`"]
|
|
76
|
-
- DSN: [e.g., "`Rails.application.credentials.sentry[:dsn]` or `ENV["SENTRY_DSN"]`"]
|
|
77
|
-
- Config: [e.g., "`config/initializers/sentry.rb`"]
|
|
78
|
-
|
|
79
|
-
**Analytics:**
|
|
80
|
-
- [Service] - [e.g., "Ahoy for product analytics"]
|
|
81
|
-
- Gem: [e.g., "`ahoy_matey`"]
|
|
82
|
-
|
|
83
|
-
**Logs:**
|
|
84
|
-
- [Service] - [e.g., "Lograge for structured logs", "stdout only"]
|
|
85
|
-
- Gem: [e.g., "`lograge`"]
|
|
86
|
-
- Config: [e.g., "`config/initializers/lograge.rb`"]
|
|
87
|
-
|
|
88
|
-
## Background Jobs
|
|
89
|
-
|
|
90
|
-
**Job Backend:**
|
|
91
|
-
- [Service] - [e.g., "Solid Queue for database-backed background processing (Rails 8 default)" or "Sidekiq for high-throughput processing"]
|
|
92
|
-
- Gem: [e.g., "`solid_queue`" or "`sidekiq`"]
|
|
93
|
-
- Config: [e.g., "`config/queue.yml` for Solid Queue" or "`config/sidekiq.yml`"]
|
|
94
|
-
- Dashboard: [e.g., "Mission Control (`mission_control-jobs`) mounted at `/jobs`" or "Sidekiq Web UI at `/sidekiq`"]
|
|
95
|
-
- Queues: [e.g., "default, mailers, backend"]
|
|
96
|
-
|
|
97
|
-
## CI/CD & Deployment
|
|
98
|
-
|
|
99
|
-
**Hosting:**
|
|
100
|
-
- [Platform] - [e.g., "Hetzner via Kamal", "Render", "Heroku"]
|
|
101
|
-
- Deployment: [e.g., "Kamal deploy via `config/deploy.yml`"]
|
|
102
|
-
- Docker: [e.g., "`Dockerfile` in project root"]
|
|
103
|
-
- Environment vars: [e.g., "configured in `config/deploy.yml` secrets or platform dashboard"]
|
|
104
|
-
|
|
105
|
-
**CI Pipeline:**
|
|
106
|
-
- [Service] - [e.g., "GitHub Actions"]
|
|
107
|
-
- Workflows: [e.g., "`.github/workflows/ci.yml`"]
|
|
108
|
-
- Secrets: [e.g., "stored in GitHub repo secrets"]
|
|
109
|
-
|
|
110
|
-
## Environment Configuration
|
|
111
|
-
|
|
112
|
-
**Development:**
|
|
113
|
-
- Required env vars: [List critical vars]
|
|
114
|
-
- Secrets location: [e.g., "`.env` via `dotenv-rails` gem (gitignored)", "`config/database.yml`"]
|
|
115
|
-
- Mock/stub services: [e.g., "Stripe test mode", "SQLite (no setup needed)", "ActiveStorage local disk"]
|
|
116
|
-
|
|
117
|
-
**Staging:**
|
|
118
|
-
- Environment-specific differences: [e.g., "uses staging Stripe account"]
|
|
119
|
-
- Data: [e.g., "separate staging database"]
|
|
120
|
-
|
|
121
|
-
**Production:**
|
|
122
|
-
- Secrets management: [e.g., "`config/credentials/production.yml.enc` via `rails credentials:edit --environment production`"]
|
|
123
|
-
- Failover/redundancy: [e.g., "multi-region DB replication"]
|
|
124
|
-
|
|
125
|
-
## Webhooks & Callbacks
|
|
126
|
-
|
|
127
|
-
**Incoming:**
|
|
128
|
-
- [Service] - [Route: e.g., "`post "/webhooks/stripe", to: "webhooks/stripe#create"`"]
|
|
129
|
-
- Verification: [e.g., "`Stripe::Webhook.construct_event` with signing secret"]
|
|
130
|
-
- Events: [e.g., "payment_intent.succeeded, customer.subscription.updated"]
|
|
131
|
-
- Controller: [e.g., "`app/controllers/webhooks/stripe_controller.rb`"]
|
|
132
|
-
|
|
133
|
-
**Outgoing:**
|
|
134
|
-
- [Service] - [What triggers it]
|
|
135
|
-
- Delivery: [e.g., "ActiveJob-enqueued HTTP POST via webhook job"]
|
|
136
|
-
- Retry logic: [if applicable]
|
|
137
|
-
|
|
138
|
-
---
|
|
139
|
-
|
|
140
|
-
*Integration audit: [date]*
|
|
141
|
-
*Update when adding/removing external services*
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
<good_examples>
|
|
145
|
-
```markdown
|
|
146
|
-
# External Integrations
|
|
147
|
-
|
|
148
|
-
**Analysis Date:** 2025-01-20
|
|
149
|
-
|
|
150
|
-
## APIs & External Services
|
|
151
|
-
|
|
152
|
-
**Payment Processing:**
|
|
153
|
-
- Stripe - Subscription billing and one-time course payments
|
|
154
|
-
- Gem: `stripe` gem v10.x
|
|
155
|
-
- Auth: API key via `Rails.application.credentials.stripe[:secret_key]`
|
|
156
|
-
- Integration: Stripe::Customer, Stripe::PaymentIntent, Stripe::Checkout::Session, webhooks
|
|
157
|
-
|
|
158
|
-
**Email:**
|
|
159
|
-
- Postmark - Transactional emails (receipts, password resets, notifications)
|
|
160
|
-
- Gem: `postmark-rails` gem v0.22
|
|
161
|
-
- Delivery method: ActionMailer with Postmark API delivery
|
|
162
|
-
- Templates: ERB views in `app/views/` mailer directories (`user_mailer/`, `notification_mailer/`)
|
|
163
|
-
- Config: `config/environments/production.rb` sets `config.action_mailer.delivery_method = :postmark`
|
|
164
|
-
|
|
165
|
-
**External APIs:**
|
|
166
|
-
- OpenAI API - Course content generation
|
|
167
|
-
- Gem: `ruby-openai` gem v7.x
|
|
168
|
-
- Auth: API key via `Rails.application.credentials.openai[:api_key]`
|
|
169
|
-
- Rate limits: 3500 requests/min (tier 3)
|
|
170
|
-
|
|
171
|
-
## Data Storage
|
|
172
|
-
|
|
173
|
-
**Databases:**
|
|
174
|
-
- SQLite - Primary data store (Rails default, zero-configuration)
|
|
175
|
-
- Connection: `config/database.yml` (file-based, no external service needed)
|
|
176
|
-
- Client: ActiveRecord
|
|
177
|
-
- Migrations: `db/migrate/` via `rails db:migrate`
|
|
178
|
-
- Note: Switch to PostgreSQL for high-concurrency production or when needing PostgreSQL-specific features (jsonb, full-text search, advisory locks)
|
|
179
|
-
|
|
180
|
-
**File Storage:**
|
|
181
|
-
- AWS S3 via ActiveStorage - User uploads (profile images, course materials)
|
|
182
|
-
- Gem: `aws-sdk-s3` gem
|
|
183
|
-
- Config: `config/storage.yml` defines `amazon` service
|
|
184
|
-
- Service: `amazon` in production, `local` disk in development
|
|
185
|
-
- Auth: `AWS_ACCESS_KEY_ID` and `AWS_SECRET_ACCESS_KEY` env vars
|
|
186
|
-
|
|
187
|
-
**Caching:**
|
|
188
|
-
- Solid Cache - Database-backed fragment caching (Rails 8 default)
|
|
189
|
-
- Gem: `solid_cache` gem
|
|
190
|
-
- Interface: `Rails.cache` with `config.cache_store = :solid_cache_store`
|
|
191
|
-
- Config: `config/cache.yml` for cache database, `config/environments/production.rb` cache store
|
|
192
|
-
- Session store: Cookie-based
|
|
193
|
-
|
|
194
|
-
## Authentication & Identity
|
|
195
|
-
|
|
196
|
-
**Auth Provider:**
|
|
197
|
-
- Rails authentication generator - Email/password authentication with database-tracked sessions
|
|
198
|
-
- Setup: `bin/rails generate authentication`
|
|
199
|
-
- Config: `app/controllers/concerns/authentication.rb`, `Session` and `User` models with `has_secure_password`
|
|
200
|
-
- Session management: Database-tracked sessions with CSRF protection
|
|
201
|
-
|
|
202
|
-
**OAuth Integrations:**
|
|
203
|
-
- Google OAuth - Social sign-in
|
|
204
|
-
- Gem: `omniauth-google-oauth2`
|
|
205
|
-
- Credentials: `Rails.application.credentials.google[:client_id]`, `Rails.application.credentials.google[:client_secret]`
|
|
206
|
-
- Scopes: email, profile
|
|
207
|
-
- Callback: `config/routes.rb` via OmniAuth routes
|
|
208
|
-
|
|
209
|
-
## Monitoring & Observability
|
|
210
|
-
|
|
211
|
-
**Error Tracking:**
|
|
212
|
-
- Sentry - Server-side error tracking
|
|
213
|
-
- Gem: `sentry-ruby` and `sentry-rails`
|
|
214
|
-
- DSN: `Rails.application.credentials.sentry[:dsn]`
|
|
215
|
-
- Config: `config/initializers/sentry.rb`
|
|
216
|
-
- Release tracking: Git commit SHA
|
|
217
|
-
|
|
218
|
-
**Analytics:**
|
|
219
|
-
- None (planned: Ahoy)
|
|
220
|
-
|
|
221
|
-
**Logs:**
|
|
222
|
-
- Lograge - Structured single-line request logs
|
|
223
|
-
- Gem: `lograge`
|
|
224
|
-
- Config: `config/initializers/lograge.rb`
|
|
225
|
-
- Production: stdout for container log aggregation
|
|
226
|
-
|
|
227
|
-
## Background Jobs
|
|
228
|
-
|
|
229
|
-
**Job Backend:**
|
|
230
|
-
- Solid Queue - Database-backed background job processing (Rails 8 default)
|
|
231
|
-
- Gem: `solid_queue` gem
|
|
232
|
-
- Config: `config/queue.yml` for queue database and worker configuration
|
|
233
|
-
- Dashboard: Mission Control (`mission_control-jobs`) mounted at `/jobs` in `config/routes.rb` (admin-only)
|
|
234
|
-
- Queues: default, mailers, backend (exports, heavy processing)
|
|
235
|
-
- Recurring: `config/recurring.yml` for scheduled tasks
|
|
236
|
-
|
|
237
|
-
## CI/CD & Deployment
|
|
238
|
-
|
|
239
|
-
**Hosting:**
|
|
240
|
-
- Hetzner via Kamal - Docker-based deployment
|
|
241
|
-
- Deployment: `kamal deploy` via `config/deploy.yml`
|
|
242
|
-
- Docker: `Dockerfile` in project root with multi-stage build
|
|
243
|
-
- Environment vars: Secrets managed in `config/deploy.yml` via `.kamal/secrets`
|
|
244
|
-
|
|
245
|
-
**CI Pipeline:**
|
|
246
|
-
- GitHub Actions - Tests, linting, and security checks
|
|
247
|
-
- Workflows: `.github/workflows/ci.yml`
|
|
248
|
-
- Secrets: `RAILS_MASTER_KEY` stored in GitHub repo secrets
|
|
249
|
-
|
|
250
|
-
## Environment Configuration
|
|
251
|
-
|
|
252
|
-
**Development:**
|
|
253
|
-
- Required env vars: None (development defaults in `config/database.yml`)
|
|
254
|
-
- Secrets location: `config/credentials.yml.enc` via `rails credentials:edit`, `.env` via `dotenv-rails` for overrides
|
|
255
|
-
- Mock/stub services: Stripe test mode, SQLite (file-based, no setup), ActiveStorage local disk service
|
|
256
|
-
|
|
257
|
-
**Staging:**
|
|
258
|
-
- Uses staging Stripe account
|
|
259
|
-
- Separate database on Render
|
|
260
|
-
- Same Kamal setup, different deploy target
|
|
261
|
-
|
|
262
|
-
**Production:**
|
|
263
|
-
- Secrets management: `config/credentials/production.yml.enc` via `rails credentials:edit --environment production`
|
|
264
|
-
- Database: SQLite with Litestream replication (or PostgreSQL on Render for high-concurrency apps)
|
|
265
|
-
|
|
266
|
-
## Webhooks & Callbacks
|
|
267
|
-
|
|
268
|
-
**Incoming:**
|
|
269
|
-
- Stripe - `post "/webhooks/stripe", to: "webhooks/stripe#create"` in `config/routes.rb`
|
|
270
|
-
- Verification: `Stripe::Webhook.construct_event` with signing secret from `Rails.application.credentials.stripe[:webhook_signing_secret]`
|
|
271
|
-
- Events: payment_intent.succeeded, customer.subscription.updated, customer.subscription.deleted
|
|
272
|
-
- Controller: `app/controllers/webhooks/stripe_controller.rb`
|
|
273
|
-
|
|
274
|
-
**Outgoing:**
|
|
275
|
-
- None
|
|
276
|
-
|
|
277
|
-
---
|
|
278
|
-
|
|
279
|
-
*Integration audit: 2025-01-20*
|
|
280
|
-
*Update when adding/removing external services*
|
|
281
|
-
```
|
|
282
|
-
</good_examples>
|
|
283
|
-
|
|
284
|
-
<guidelines>
|
|
285
|
-
**What belongs in INTEGRATIONS.md:**
|
|
286
|
-
- External services the code communicates with
|
|
287
|
-
- Authentication patterns (where secrets live, not the secrets themselves)
|
|
288
|
-
- Gems and client libraries used for each integration
|
|
289
|
-
- Environment variable names (not values)
|
|
290
|
-
- Webhook endpoints, routes, and verification methods
|
|
291
|
-
- Database connection patterns via `config/database.yml`
|
|
292
|
-
- File storage configuration via ActiveStorage and `config/storage.yml`
|
|
293
|
-
- Background job backend and queue configuration
|
|
294
|
-
- Monitoring, logging, and error tracking services
|
|
295
|
-
- Deployment platform and CI/CD pipeline
|
|
296
|
-
|
|
297
|
-
**What does NOT belong here:**
|
|
298
|
-
- Actual API keys or secrets (NEVER write these)
|
|
299
|
-
- Internal architecture (that's ARCHITECTURE.md)
|
|
300
|
-
- Code patterns (that's PATTERNS.md)
|
|
301
|
-
- Technology choices (that's STACK.md)
|
|
302
|
-
- Performance issues (that's CONCERNS.md)
|
|
303
|
-
|
|
304
|
-
**When filling this template:**
|
|
305
|
-
- Check `Gemfile` for integration gems (`stripe`, `sentry-rails`, `solid_queue`, `aws-sdk-s3`, etc.)
|
|
306
|
-
- Check `config/initializers/` for service configuration files
|
|
307
|
-
- Check `config/credentials.yml.enc` structure (via `rails credentials:show` or reading initializers that reference credentials)
|
|
308
|
-
- Check `config/storage.yml` for ActiveStorage service configuration
|
|
309
|
-
- Check `config/database.yml` for database connection setup
|
|
310
|
-
- Check `config/environments/production.rb` for mail, cache store, and job backend settings
|
|
311
|
-
- Look for webhook controllers in `app/controllers/webhooks/` or routes with `webhooks` in `config/routes.rb`
|
|
312
|
-
- Check `config/deploy.yml` or platform config for deployment setup
|
|
313
|
-
- Check `.github/workflows/` for CI pipeline configuration
|
|
314
|
-
- Note where secrets are managed (credentials files, env vars, platform dashboard) — not the secrets themselves
|
|
315
|
-
- Document environment-specific differences (development/staging/production)
|
|
316
|
-
|
|
317
|
-
**Useful for phase planning when:**
|
|
318
|
-
- Adding new external service integrations
|
|
319
|
-
- Debugging authentication issues with third-party services
|
|
320
|
-
- Understanding data flow outside the application
|
|
321
|
-
- Setting up new environments or onboarding developers
|
|
322
|
-
- Auditing third-party gem dependencies
|
|
323
|
-
- Planning for service outages or migrations
|
|
324
|
-
- Configuring deployment and CI/CD pipelines
|
|
325
|
-
|
|
326
|
-
**Security note:**
|
|
327
|
-
Document WHERE secrets live (`Rails.application.credentials`, env vars, `.kamal/secrets`), never WHAT the secrets are.
|
|
328
|
-
</guidelines>
|
|
@@ -1,189 +0,0 @@
|
|
|
1
|
-
# Technology Stack Template
|
|
2
|
-
|
|
3
|
-
Template for `.ariadna_planning/codebase/STACK.md` - captures the technology foundation.
|
|
4
|
-
|
|
5
|
-
**Purpose:** Document what technologies run this codebase. Focused on "what executes when you run the code."
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## File Template
|
|
10
|
-
|
|
11
|
-
```markdown
|
|
12
|
-
# Technology Stack
|
|
13
|
-
|
|
14
|
-
**Analysis Date:** [YYYY-MM-DD]
|
|
15
|
-
|
|
16
|
-
## Languages
|
|
17
|
-
|
|
18
|
-
**Primary:**
|
|
19
|
-
- [Language] [Version] - [Where used: e.g., "all application code"]
|
|
20
|
-
|
|
21
|
-
**Secondary:**
|
|
22
|
-
- [Language] [Version] - [Where used: e.g., "Stimulus controllers, Turbo interactions"]
|
|
23
|
-
|
|
24
|
-
## Runtime
|
|
25
|
-
|
|
26
|
-
**Environment:**
|
|
27
|
-
- [Runtime] [Version] - [e.g., "Ruby 3.3 from `.ruby-version`"]
|
|
28
|
-
- [Additional requirements if any]
|
|
29
|
-
|
|
30
|
-
**Package Manager:**
|
|
31
|
-
- [Manager] [Version] - [e.g., "Bundler 2.x"]
|
|
32
|
-
- Lockfile: [e.g., "`Gemfile.lock` present"]
|
|
33
|
-
|
|
34
|
-
## Frameworks
|
|
35
|
-
|
|
36
|
-
**Core:**
|
|
37
|
-
- [Framework] [Version] - [Purpose: e.g., "full-stack web framework"]
|
|
38
|
-
|
|
39
|
-
**Testing:**
|
|
40
|
-
- [Framework] [Version] - [e.g., "Minitest for unit/integration/system tests"]
|
|
41
|
-
- [Framework] [Version] - [e.g., "Capybara for system tests"]
|
|
42
|
-
|
|
43
|
-
**Build/Dev:**
|
|
44
|
-
- [Tool] [Version] - [e.g., "Propshaft for asset pipeline"]
|
|
45
|
-
- [Tool] [Version] - [e.g., "importmap-rails for JavaScript module loading"]
|
|
46
|
-
|
|
47
|
-
## Key Dependencies
|
|
48
|
-
|
|
49
|
-
[Only include dependencies critical to understanding the stack - limit to 5-10 most important]
|
|
50
|
-
|
|
51
|
-
**Critical:**
|
|
52
|
-
- [Gem] [Version] - [Why it matters: e.g., "authentication", "background jobs"]
|
|
53
|
-
- [Gem] [Version] - [Why it matters]
|
|
54
|
-
|
|
55
|
-
**Infrastructure:**
|
|
56
|
-
- [Gem] [Version] - [e.g., "SQLite adapter" or "PostgreSQL adapter"]
|
|
57
|
-
- [Gem] [Version] - [e.g., "application server"]
|
|
58
|
-
|
|
59
|
-
## Configuration
|
|
60
|
-
|
|
61
|
-
**Environment:**
|
|
62
|
-
- [How configured: e.g., "`config/database.yml`, `config/credentials.yml.enc`"]
|
|
63
|
-
- [Key configs: e.g., "`config/environments/*.rb` per-environment settings"]
|
|
64
|
-
|
|
65
|
-
**Build:**
|
|
66
|
-
- [Build config files: e.g., "`config/importmap.rb`", "`Procfile.dev`"]
|
|
67
|
-
|
|
68
|
-
## Platform Requirements
|
|
69
|
-
|
|
70
|
-
**Development:**
|
|
71
|
-
- [OS requirements or "any platform"]
|
|
72
|
-
- [Additional tooling if any: e.g., "PostgreSQL" if not using SQLite]
|
|
73
|
-
|
|
74
|
-
**Production:**
|
|
75
|
-
- [Deployment target: e.g., "Kamal to VPS", "Docker container", "Heroku", "Fly.io"]
|
|
76
|
-
- [Application server: e.g., "Puma"]
|
|
77
|
-
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
*Stack analysis: [date]*
|
|
81
|
-
*Update after major dependency changes*
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
<good_examples>
|
|
85
|
-
```markdown
|
|
86
|
-
# Technology Stack
|
|
87
|
-
|
|
88
|
-
**Analysis Date:** 2025-01-20
|
|
89
|
-
|
|
90
|
-
## Languages
|
|
91
|
-
|
|
92
|
-
**Primary:**
|
|
93
|
-
- Ruby 3.3 — All application code
|
|
94
|
-
|
|
95
|
-
**Secondary:**
|
|
96
|
-
- JavaScript — Stimulus controllers, Turbo interactions
|
|
97
|
-
- CSS/SCSS — Styling
|
|
98
|
-
|
|
99
|
-
## Runtime
|
|
100
|
-
|
|
101
|
-
**Environment:**
|
|
102
|
-
- Ruby 3.3 (from `.ruby-version`)
|
|
103
|
-
- Bundler 2.x
|
|
104
|
-
|
|
105
|
-
**Package Manager:**
|
|
106
|
-
- Bundler 2.x
|
|
107
|
-
- Lockfile: `Gemfile.lock` present
|
|
108
|
-
|
|
109
|
-
## Frameworks
|
|
110
|
-
|
|
111
|
-
**Core:**
|
|
112
|
-
- Rails 8.x — Full-stack web framework
|
|
113
|
-
|
|
114
|
-
**Testing:**
|
|
115
|
-
- Minitest 5.x — Unit, integration, system tests
|
|
116
|
-
- Capybara — System tests with browser automation
|
|
117
|
-
|
|
118
|
-
**Build/Dev:**
|
|
119
|
-
- Propshaft — Asset pipeline
|
|
120
|
-
- importmap-rails — JavaScript module loading without bundler
|
|
121
|
-
|
|
122
|
-
## Key Dependencies
|
|
123
|
-
|
|
124
|
-
**Critical:**
|
|
125
|
-
- authentication (built-in) — Session-based auth
|
|
126
|
-
- authorization - custom implementation (before_action + Current) — Role-based access control
|
|
127
|
-
- solid_queue — Background jobs (Rails 8 default)
|
|
128
|
-
|
|
129
|
-
**Infrastructure:**
|
|
130
|
-
- sqlite3 — SQLite adapter (Rails default)
|
|
131
|
-
- solid_cache — Database-backed caching (Rails 8 default)
|
|
132
|
-
- puma — Application server
|
|
133
|
-
|
|
134
|
-
## Configuration
|
|
135
|
-
|
|
136
|
-
**Environment:**
|
|
137
|
-
- `config/database.yml`, `config/credentials.yml.enc`, `config/environments/*.rb`
|
|
138
|
-
- `SECRET_KEY_BASE` required in production
|
|
139
|
-
|
|
140
|
-
**Build:**
|
|
141
|
-
- `config/importmap.rb` — JavaScript module pins
|
|
142
|
-
- `Procfile.dev` — Development process manager
|
|
143
|
-
|
|
144
|
-
## Platform Requirements
|
|
145
|
-
|
|
146
|
-
**Development:**
|
|
147
|
-
- macOS/Linux
|
|
148
|
-
- No Docker or external database required for local development (SQLite is file-based)
|
|
149
|
-
|
|
150
|
-
**Production:**
|
|
151
|
-
- Kamal deployment to VPS, Docker container, Puma application server
|
|
152
|
-
- SQLite (or PostgreSQL for high-concurrency production)
|
|
153
|
-
|
|
154
|
-
---
|
|
155
|
-
|
|
156
|
-
*Stack analysis: 2025-01-20*
|
|
157
|
-
*Update after major dependency changes*
|
|
158
|
-
```
|
|
159
|
-
</good_examples>
|
|
160
|
-
|
|
161
|
-
<guidelines>
|
|
162
|
-
**What belongs in STACK.md:**
|
|
163
|
-
- Languages and versions
|
|
164
|
-
- Runtime requirements (Ruby version, Bundler)
|
|
165
|
-
- Package manager and lockfile
|
|
166
|
-
- Framework choices
|
|
167
|
-
- Critical dependencies (limit to 5-10 most important)
|
|
168
|
-
- Build tooling and asset pipeline
|
|
169
|
-
- Platform/deployment requirements
|
|
170
|
-
|
|
171
|
-
**What does NOT belong here:**
|
|
172
|
-
- File structure (that's STRUCTURE.md)
|
|
173
|
-
- Architectural patterns (that's ARCHITECTURE.md)
|
|
174
|
-
- Every gem in `Gemfile` (only critical ones)
|
|
175
|
-
- Implementation details (defer to code)
|
|
176
|
-
|
|
177
|
-
**When filling this template:**
|
|
178
|
-
- Check `Gemfile` for dependencies and framework versions
|
|
179
|
-
- Note Ruby version from `.ruby-version` or `Gemfile`
|
|
180
|
-
- Check `config/` directory for framework configuration and asset pipeline setup
|
|
181
|
-
- Include only dependencies that affect understanding (not every utility gem)
|
|
182
|
-
- Specify versions only when version matters (breaking changes, compatibility)
|
|
183
|
-
|
|
184
|
-
**Useful for phase planning when:**
|
|
185
|
-
- Adding new dependencies (check compatibility)
|
|
186
|
-
- Upgrading frameworks (know what's in use)
|
|
187
|
-
- Choosing implementation approach (must work with existing stack)
|
|
188
|
-
- Understanding build requirements
|
|
189
|
-
</guidelines>
|