fbf00a3cd0
✨ feat(auth): pkg/auth skeleton for OpenID Connect (ADR-0028 Phase B prep) ( #69 )
...
CI/CD Pipeline / Build Docker Cache (push) Successful in 9s
CI/CD Pipeline / CI Pipeline (push) Successful in 4m4s
CI/CD Pipeline / Trigger Docker Push (push) Successful in 5s
Co-authored-by: Gabriel Radureau <arcodange@gmail.com >
Co-committed-by: Gabriel Radureau <arcodange@gmail.com >
2026-05-05 19:24:41 +02:00
b17b727157
✨ feat(server): add GET /api/v1/uptime endpoint ( #67 )
...
CI/CD Pipeline / Build Docker Cache (push) Successful in 8s
CI/CD Pipeline / Trigger Docker Push (push) Has been cancelled
CI/CD Pipeline / CI Pipeline (push) Has been cancelled
Co-authored-by: Gabriel Radureau <arcodange@gmail.com >
Co-committed-by: Gabriel Radureau <arcodange@gmail.com >
2026-05-05 19:18:24 +02:00
b6a6a2b3d7
✨ feat(user): magic-link expired-token cleanup loop (ADR-0028 Phase A consequence) ( #65 )
...
CI/CD Pipeline / Build Docker Cache (push) Successful in 11s
CI/CD Pipeline / CI Pipeline (push) Successful in 4m27s
CI/CD Pipeline / Trigger Docker Push (push) Successful in 6s
Co-authored-by: Gabriel Radureau <arcodange@gmail.com >
Co-committed-by: Gabriel Radureau <arcodange@gmail.com >
2026-05-05 13:07:01 +02:00
6ed95165d3
feat(config): OIDC provider config skeleton (ADR-0028 Phase B.1 prep) ( #64 )
...
CI/CD Pipeline / Build Docker Cache (push) Successful in 9s
CI/CD Pipeline / Trigger Docker Push (push) Has been cancelled
CI/CD Pipeline / CI Pipeline (push) Has been cancelled
Co-authored-by: Gabriel Radureau <arcodange@gmail.com >
Co-committed-by: Gabriel Radureau <arcodange@gmail.com >
2026-05-05 13:04:14 +02:00
9072b3e246
✨ feat(bdd): magic-link BDD scenarios + bcrypt overflow fix (ADR-0028 Phase A.5) ( #63 )
...
CI/CD Pipeline / Build Docker Cache (push) Successful in 9s
CI/CD Pipeline / CI Pipeline (push) Successful in 5m0s
CI/CD Pipeline / Trigger Docker Push (push) Successful in 5s
Co-authored-by: Gabriel Radureau <arcodange@gmail.com >
Co-committed-by: Gabriel Radureau <arcodange@gmail.com >
2026-05-05 11:44:41 +02:00
f39acf5de5
✨ feat(auth): magic-link request + consume HTTP handlers (ADR-0028 Phase A.4) ( #62 )
...
CI/CD Pipeline / Build Docker Cache (push) Successful in 8s
CI/CD Pipeline / CI Pipeline (push) Successful in 4m56s
CI/CD Pipeline / Trigger Docker Push (push) Successful in 6s
Co-authored-by: Gabriel Radureau <arcodange@gmail.com >
Co-committed-by: Gabriel Radureau <arcodange@gmail.com >
2026-05-05 11:32:12 +02:00
c9ab876dfe
✨ feat(user): magic_link_tokens table + repository (ADR-0028 Phase A.3) ( #61 )
...
CI/CD Pipeline / Build Docker Cache (push) Successful in 8s
CI/CD Pipeline / CI Pipeline (push) Successful in 5m11s
CI/CD Pipeline / Trigger Docker Push (push) Successful in 6s
Co-authored-by: Gabriel Radureau <arcodange@gmail.com >
Co-committed-by: Gabriel Radureau <arcodange@gmail.com >
2026-05-05 11:24:06 +02:00
b3027d2669
✨ feat(bdd): pkg/bdd/mailpit/ HTTP client + integration tests (ADR-0030 Phase A.2) ( #60 )
...
CI/CD Pipeline / Build Docker Cache (push) Successful in 11s
CI/CD Pipeline / CI Pipeline (push) Successful in 5m23s
CI/CD Pipeline / Trigger Docker Push (push) Successful in 5s
Co-authored-by: Gabriel Radureau <arcodange@gmail.com >
Co-committed-by: Gabriel Radureau <arcodange@gmail.com >
2026-05-05 10:51:33 +02:00
ef32e750ed
✨ feat(email): pkg/email + Mailpit docker-compose service (ADR-0029 Phase A.1) ( #59 )
...
CI/CD Pipeline / Build Docker Cache (push) Successful in 13s
CI/CD Pipeline / CI Pipeline (push) Successful in 4m3s
CI/CD Pipeline / Trigger Docker Push (push) Successful in 4s
Co-authored-by: Gabriel Radureau <arcodange@gmail.com >
Co-committed-by: Gabriel Radureau <arcodange@gmail.com >
2026-05-05 10:47:03 +02:00
3b4b40c1cf
🐛 fix(bdd): shouldEnableV2 wrongly matched ~@v2 as @v2 substring + new gate regression scenario ( #57 )
...
CI/CD Pipeline / Build Docker Cache (push) Successful in 14s
CI/CD Pipeline / CI Pipeline (push) Failing after 6m31s
CI/CD Pipeline / Trigger Docker Push (push) Has been skipped
Co-authored-by: Gabriel Radureau <arcodange@gmail.com >
Co-committed-by: Gabriel Radureau <arcodange@gmail.com >
2026-05-05 10:38:08 +02:00
de5b599455
✨ feat(server): api.v2_enabled hot-reload via middleware gate (ADR-0023 Phase 4) ( #56 )
...
CI/CD Pipeline / Build Docker Cache (push) Successful in 9s
CI/CD Pipeline / Trigger Docker Push (push) Has been cancelled
CI/CD Pipeline / CI Pipeline (push) Has been cancelled
Co-authored-by: Gabriel Radureau <arcodange@gmail.com >
Co-committed-by: Gabriel Radureau <arcodange@gmail.com >
2026-05-05 10:35:03 +02:00
8d93050636
feat(server): add go_version to /api/info response ( #54 )
...
CI/CD Pipeline / Build Docker Cache (push) Successful in 7s
CI/CD Pipeline / CI Pipeline (push) Successful in 4m57s
CI/CD Pipeline / Trigger Docker Push (push) Successful in 6s
Co-authored-by: Gabriel Radureau <arcodange@gmail.com >
Co-committed-by: Gabriel Radureau <arcodange@gmail.com >
2026-05-05 10:18:30 +02:00
42d165624b
🧪 test(user): SHA-256 fingerprint stays non-empty and != secret value (Mistral autonomous) ( #53 )
...
CI/CD Pipeline / Build Docker Cache (push) Successful in 8s
CI/CD Pipeline / CI Pipeline (push) Successful in 4m9s
CI/CD Pipeline / Trigger Docker Push (push) Successful in 6s
Co-authored-by: Gabriel Radureau <arcodange@gmail.com >
Co-committed-by: Gabriel Radureau <arcodange@gmail.com >
2026-05-05 10:08:36 +02:00
e9d61a7fb0
🧪 test(bdd): admin metadata endpoint security property — no secret leak ( #52 )
...
CI/CD Pipeline / Build Docker Cache (push) Successful in 11s
CI/CD Pipeline / CI Pipeline (push) Successful in 3m41s
CI/CD Pipeline / Trigger Docker Push (push) Successful in 5s
Co-authored-by: Gabriel Radureau <arcodange@gmail.com >
Co-committed-by: Gabriel Radureau <arcodange@gmail.com >
2026-05-05 09:56:17 +02:00
f71495b6fc
✨ feat(admin): GET /api/v1/admin/jwt/secrets — metadata-only introspection ( #51 )
...
CI/CD Pipeline / Build Docker Cache (push) Successful in 57s
CI/CD Pipeline / Trigger Docker Push (push) Has been cancelled
CI/CD Pipeline / CI Pipeline (push) Has been cancelled
Co-authored-by: Gabriel Radureau <arcodange@gmail.com >
Co-committed-by: Gabriel Radureau <arcodange@gmail.com >
2026-05-05 09:51:54 +02:00
46df1f6170
🔧 chore(config): defense-in-depth for WatchAndApply test race (Q-038) ( #50 )
...
CI/CD Pipeline / Build Docker Cache (push) Successful in 14s
CI/CD Pipeline / Trigger Docker Push (push) Has been cancelled
CI/CD Pipeline / CI Pipeline (push) Has been cancelled
Co-authored-by: Gabriel Radureau <arcodange@gmail.com >
Co-committed-by: Gabriel Radureau <arcodange@gmail.com >
2026-05-05 09:45:14 +02:00
92a8027dd4
✨ feat(server): wire sampler hot-reload callback (ADR-0023 Phase 3, sub-phase 3.3) ( #49 )
...
CI/CD Pipeline / Build Docker Cache (push) Successful in 14s
CI/CD Pipeline / Trigger Docker Push (push) Has been cancelled
CI/CD Pipeline / CI Pipeline (push) Has been cancelled
Co-authored-by: Gabriel Radureau <arcodange@gmail.com >
Co-committed-by: Gabriel Radureau <arcodange@gmail.com >
2026-05-05 09:42:38 +02:00
f97b6874c9
🐛 fix(config): remove racy log.Info in WatchAndApply cancel goroutine ( #48 )
...
CI/CD Pipeline / Build Docker Cache (push) Successful in 11s
CI/CD Pipeline / Trigger Docker Push (push) Has been cancelled
CI/CD Pipeline / CI Pipeline (push) Has been cancelled
Co-authored-by: Gabriel Radureau <arcodange@gmail.com >
Co-committed-by: Gabriel Radureau <arcodange@gmail.com >
2026-05-05 09:40:03 +02:00
3d9746ed65
🐛 fix(ci): remove dollar-double-brace expression from comment that still gets interpolated ( #47 )
...
CI/CD Pipeline / Build Docker Cache (push) Successful in 10s
CI/CD Pipeline / CI Pipeline (push) Successful in 3m44s
CI/CD Pipeline / Trigger Docker Push (push) Successful in 5s
Co-authored-by: Gabriel Radureau <arcodange@gmail.com >
Co-committed-by: Gabriel Radureau <arcodange@gmail.com >
2026-05-05 09:34:00 +02:00
8147991fe0
✨ feat(telemetry): ReconfigureTracerProvider for sampler hot-reload (ADR-0023 Phase 3, sub-phase 3.1) ( #45 )
...
CI/CD Pipeline / Build Docker Cache (push) Successful in 14s
CI/CD Pipeline / CI Pipeline (push) Failing after 3m48s
CI/CD Pipeline / Trigger Docker Push (push) Has been skipped
Co-authored-by: Gabriel Radureau <arcodange@gmail.com >
Co-committed-by: Gabriel Radureau <arcodange@gmail.com >
2026-05-05 09:27:20 +02:00
3c73ca39d6
✨ feat(auth): JWT TTL hot-reload + fix hardcoded 24h bug (ADR-0023 Phase 2) ( #44 )
...
CI/CD Pipeline / Build Docker Cache (push) Successful in 23s
CI/CD Pipeline / CI Pipeline (push) Failing after 5m23s
CI/CD Pipeline / Trigger Docker Push (push) Has been skipped
Co-authored-by: Gabriel Radureau <arcodange@gmail.com >
Co-committed-by: Gabriel Radureau <arcodange@gmail.com >
2026-05-05 09:09:22 +02:00
b33ad236e1
✨ feat(config): hot-reload Phase 1 — logging.level (ADR-0023) ( #42 )
...
CI/CD Pipeline / Build Docker Cache (push) Successful in 59s
CI/CD Pipeline / CI Pipeline (push) Failing after 4m3s
CI/CD Pipeline / Trigger Docker Push (push) Has been skipped
Co-authored-by: Gabriel Radureau <arcodange@gmail.com >
Co-committed-by: Gabriel Radureau <arcodange@gmail.com >
2026-05-05 08:45:19 +02:00
03ea2a7b89
✨ feat(auth): JWT secret retention policy + automatic cleanup loop (ADR-0021) ( #41 )
...
CI/CD Pipeline / Build Docker Cache (push) Successful in 13s
CI/CD Pipeline / Trigger Docker Push (push) Has been cancelled
CI/CD Pipeline / CI Pipeline (push) Has been cancelled
Co-authored-by: Gabriel Radureau <arcodange@gmail.com >
Co-committed-by: Gabriel Radureau <arcodange@gmail.com >
2026-05-05 08:40:27 +02:00
a2beadc458
✨ feat(server): /api/info aggregator + frontend version footer ( #40 )
...
CI/CD Pipeline / Build Docker Cache (push) Successful in 9s
CI/CD Pipeline / CI Pipeline (push) Failing after 4m48s
CI/CD Pipeline / Trigger Docker Push (push) Has been skipped
Co-authored-by: Gabriel Radureau <arcodange@gmail.com >
Co-committed-by: Gabriel Radureau <arcodange@gmail.com >
2026-05-05 08:29:26 +02:00
ee4e8b2ee1
🎨 chore(server): apply swag fmt alignment to swagger annotations ( #37 )
...
CI/CD Pipeline / Build Docker Cache (push) Successful in 8s
CI/CD Pipeline / CI Pipeline (push) Failing after 4m10s
CI/CD Pipeline / Trigger Docker Push (push) Has been skipped
Co-authored-by: Gabriel Radureau <arcodange@gmail.com >
Co-committed-by: Gabriel Radureau <arcodange@gmail.com >
2026-05-04 07:58:51 +02:00
82feaec51f
✨ feat(bdd): parallel-safe schema-per-package isolation (T12 stage 2/2) — 2.85x speedup ( #35 )
...
CI/CD Pipeline / Build Docker Cache (push) Successful in 7s
CI/CD Pipeline / CI Pipeline (push) Failing after 3m58s
CI/CD Pipeline / Trigger Docker Push (push) Has been skipped
Per-package isolated Postgres schema with migrations. Local benchmark: 12.87s sequential → 4.51s parallel = 2.85x. ADR-0025 status to Implemented. CI uses BDD_SCHEMA_ISOLATION=true.
Co-authored-by: Gabriel Radureau <arcodange@gmail.com >
Co-committed-by: Gabriel Radureau <arcodange@gmail.com >
2026-05-03 19:42:09 +02:00
4452620df8
✨ feat(user): foundation for parallel-safe BDD isolation (T12 stage 1/2) ( #34 )
...
CI/CD Pipeline / Build Docker Cache (push) Successful in 10s
CI/CD Pipeline / CI Pipeline (push) Failing after 4m4s
CI/CD Pipeline / Trigger Docker Push (push) Has been skipped
NewPostgresRepositoryFromDSN factory + BuildSchemaIsolatedDSN helper + integration test proving per-schema isolation works at repo level. Foundation for T12. Wiring into testserver is stage 2/2.
Co-authored-by: Gabriel Radureau <arcodange@gmail.com >
Co-committed-by: Gabriel Radureau <arcodange@gmail.com >
2026-05-03 18:03:43 +02:00
301471f728
✨ feat(server): cache /api/v1/greet responses + admin cache flush endpoint ( #29 )
...
CI/CD Pipeline / Build Docker Cache (push) Successful in 13s
CI/CD Pipeline / Trigger Docker Push (push) Has been cancelled
CI/CD Pipeline / CI Pipeline (push) Has been cancelled
Extends cache service to /api/v1/greet (per-name 60s) and adds POST /api/admin/cache/flush. ~95% Mistral autonomous via ICM workspace, trainer finalized commit/PR (test scaffold did not compile).
Co-authored-by: Gabriel Radureau <arcodange@gmail.com >
Co-committed-by: Gabriel Radureau <arcodange@gmail.com >
2026-05-03 16:33:02 +02:00
93bd384ca8
🐛 fix(bdd): revert PR #26 schema isolation + cache flush + sequential CI tests ( #28 )
...
CI/CD Pipeline / Build Docker Cache (push) Successful in 11s
CI/CD Pipeline / Trigger Docker Push (push) Has been cancelled
CI/CD Pipeline / CI Pipeline (push) Has been cancelled
Reverts PR #26 (BDD_SCHEMA_ISOLATION caused empty schemas with no tables, 500 errors). Adds sequential package execution (-p 1) + cache flush AfterScenario. AuthBDD goes from 0/5 PASS to 5/5 PASS deterministically. Parallel BDD deferred as architectural follow-up (requires per-schema migrations + dedicated connection pools).
Co-authored-by: Gabriel Radureau <arcodange@gmail.com >
Co-committed-by: Gabriel Radureau <arcodange@gmail.com >
2026-05-03 16:28:57 +02:00
358e3df38b
✨ feat(cache): add in-memory cache service (ADR-0022 Phase 1 part 2) ( #23 )
...
CI/CD Pipeline / Build Docker Cache (push) Successful in 50s
CI/CD Pipeline / CI Pipeline (push) Successful in 4m22s
CI/CD Pipeline / Trigger Docker Push (push) Successful in 6s
Phase 1 part 2 of ADR-0022 (companion to PR #22 rate-limit). In-memory cache service via go-cache, used by /api/version (60s TTL).
6/6 unit tests pass. ~95% Mistral autonomous via ICM workspace, cost €2.50 stages 01-02 (50% reduction vs T5 thanks to pre-extracted snippets in shared/).
Co-authored-by: Gabriel Radureau <arcodange@gmail.com >
Co-committed-by: Gabriel Radureau <arcodange@gmail.com >
2026-05-03 13:24:17 +02:00
54dd0cc80f
✨ feat(server): add per-IP rate limit middleware on /api/v1/greet ( #22 )
...
CI/CD Pipeline / Build Docker Cache (push) Successful in 1m3s
CI/CD Pipeline / CI Pipeline (push) Successful in 4m4s
CI/CD Pipeline / Trigger Docker Push (push) Successful in 6s
Phase 1 of ADR-0022. In-memory per-IP rate limiter on golang.org/x/time/rate. Returns 429 with Retry-After when exceeded. 7 unit tests pass. BDD scenario @skip until testserver rework. Closes #13 .
~95% Mistral Vibe autonomous via ICM workspace. Cost ~6.5€ (T5 + resume + trainer commit/PR).
Co-authored-by: Gabriel Radureau <arcodange@gmail.com >
Co-committed-by: Gabriel Radureau <arcodange@gmail.com >
2026-05-03 13:16:29 +02:00
045823ec8e
✨ feat(server): add /api/healthz endpoint with rich health info ( #20 )
...
CI/CD Pipeline / Build Docker Cache (push) Successful in 17s
CI/CD Pipeline / CI Pipeline (push) Failing after 4m28s
CI/CD Pipeline / Trigger Docker Push (push) Has been skipped
Adds Kubernetes-style /api/healthz endpoint with status/version/uptime_seconds/timestamp.
Non-breaking — /api/health preserved. Includes unit test (passes locally) and BDD scenario (validated by CI).
Généré ~95% en autonomie par Mistral Vibe via workspace ICM ~/Work/Vibe/workspaces/healthz-feature/.
Co-authored-by: Gabriel Radureau <arcodange@gmail.com >
Co-committed-by: Gabriel Radureau <arcodange@gmail.com >
2026-05-03 12:25:54 +02:00
c17fb4f9b4
🐛 fix: emit all config-loading logs in correct JSON format from the start ( #16 )
...
CI/CD Pipeline / Build Docker Cache (push) Successful in 10s
CI/CD Pipeline / CI Pipeline (push) Failing after 4m14s
CI/CD Pipeline / Trigger Docker Push (push) Has been skipped
## Summary
Closes #15
When `logging.json: true` (or `DLC_LOGGING_JSON=true`), the logger was unconditionally initialised to console/text format at the top of `LoadConfig()`, so early log lines — most visibly **"Config file loaded"** — were always written as human-readable text regardless of configuration.
## Root cause
Classic chicken-and-egg: the format flag lives inside the config that is being loaded. The format-switch block only ran *after* `v.Unmarshal()`, too late for the config-file log.
## Changes
### `pkg/config/config.go`
- Add `peekJSONLogging()`: resolves the JSON flag **before** any log is emitted by (1) checking `DLC_LOGGING_JSON` directly via `os.Getenv`, then (2) doing a minimal throwaway Viper pre-read of the config file for the `logging.json` key. This mirrors Viper's own priority order without parsing the full config twice.
- Apply the resolved format immediately and emit **"Logging configured"** as the very first log line.
- Remove the now-redundant format-switch block that ran after `Unmarshal()`.
### `scripts/start-server.sh`, `test-graceful-shutdown.sh`, `test-opentelemetry.sh`
- Replace hardcoded `PROJECT_DIR` path with a dynamic `SCRIPTS_DIR=$(dirname $(realpath ${BASH_SOURCE[0]}))` derivation so scripts work from any worktree or clone location.
## Test plan
- [x] `go test ./pkg/...` — all pass
- [x] `scripts/test-graceful-shutdown.sh` — all JSON valid, all startup logs present
- [x] Manual smoke test: first line is `{"level":"info",...,"message":"Logging configured"}`, every line is valid JSON
Reviewed-on: #16
Co-authored-by: Gabriel Radureau <arcodange@gmail.com >
Co-committed-by: Gabriel Radureau <arcodange@gmail.com >
2026-04-12 23:28:35 +02:00
5eec64e5e8
🧪 test: add JWT secret rotation BDD scenarios and step implementations ( #12 )
...
CI/CD Pipeline / Build Docker Cache (push) Successful in 9s
CI/CD Pipeline / CI Pipeline (push) Successful in 4m15s
CI/CD Pipeline / Trigger Docker Push (push) Has been skipped
✨ merge: implement JWT secret rotation with BDD scenario isolation
- Implement JWT secret rotation mechanism (closes #8 )
- Add per-scenario state isolation for BDD tests (closes #14 )
- Validate password reset workflow via BDD tests (closes #7 )
- Fix port conflicts in test validation
- Add state tracer for debugging test execution
- Document BDD isolation strategies in ADR 0025
- Fix PostgreSQL configuration environment variables
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai >
Co-authored-by: Gabriel Radureau <arcodange@gmail.com >
Co-committed-by: Gabriel Radureau <arcodange@gmail.com >
2026-04-11 17:56:45 +02:00
c1e628f339
📝 docs: update comprehensive documentation and project infrastructure
...
Documentation Updates:
- Enhanced AGENTS.md with user authentication details
- Updated README.md with authentication API documentation
- Added CONTRIBUTING.md guidelines for BDD testing
- Version management guide improvements
- Local CI/CD testing documentation
Project Infrastructure:
- Updated .gitignore for new file patterns
- Enhanced git hooks documentation
- YAML linting configuration
- Script improvements and organization
- Configuration management updates
API Enhancements:
- Greet service integration with authentication
- Server middleware for JWT validation
- Telemetry improvements
- Version management utilities
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai >
2026-04-09 00:26:15 +02:00
a17eebc8f2
🧪 test: add comprehensive BDD test suite for user authentication
...
Added BDD test scenarios covering:
- User registration with validation
- Successful and failed authentication
- Admin authentication with master password
- JWT token generation and validation
- Password reset workflow
- Edge cases and error handling
BDD Features:
- 20+ authentication scenarios
- JWT validation edge cases
- Password reset security scenarios
- Input validation tests
- Error response verification
BDD Infrastructure:
- Step definitions for authentication workflows
- Test server with user management endpoints
- JWT parsing and validation utilities
- Common step patterns for reuse
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai >
2026-04-09 00:25:48 +02:00
52a4ce4139
✨ feat: implement user authentication system with JWT and PostgreSQL
...
Added comprehensive user management system:
- User registration with validation (3-50 char username, 6+ char password)
- JWT-based authentication with bcrypt password hashing
- Admin authentication with master password
- Password reset workflow with admin flagging
- PostgreSQL repository implementation
- SQLite repository for testing
- Unified authentication service interface
API Endpoints:
- POST /api/v1/auth/register - User registration
- POST /api/v1/auth/login - User/admin authentication
- POST /api/v1/auth/password-reset/request - Request password reset
- POST /api/v1/auth/password-reset/complete - Complete password reset
- POST /api/v1/auth/validate - JWT token validation
Security Features:
- Password hashing with bcrypt
- JWT token generation and validation
- Admin claims in JWT tokens
- Configurable token expiration
- Input validation for all endpoints
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai >
2026-04-09 00:25:43 +02:00
157d8e2d19
🔧 chore: update all references from DanceLessonsCoach to dance-lessons-coach
CI/CD Pipeline / CI Pipeline (push) Failing after 4m0s
2026-04-06 17:27:07 +02:00
183933b43e
feat: integrate swag fmt and improve CI/CD workflows
...
Go CI/CD Pipeline / Lint and Format (push) Successful in 4m51s
Docker Build and Publish / Version Bump (push) Successful in 4m54s
Docker Build and Publish / Build and Push Docker Image (push) Failing after 2m51s
Go CI/CD Pipeline / Build and Test (push) Successful in 9m47s
Go CI/CD Pipeline / Version Management (push) Successful in 12s
- Add swag fmt to git pre-commit hook and CI/CD pipeline
- Create comprehensive CONTRIBUTING.md guide with AI section
- Update ADR-0013 with swag fmt documentation
- Fix swagger generation to include all endpoints
- Improve local testing scripts and workflows
- Update Dockerfile for better swagger handling
- Fix CI/CD workflow file references
2026-04-06 15:36:55 +02:00
e55c92735d
📊 feat: include package version in OpenTelemetry telemetry resource
...
- Add Version field to telemetry.Setup struct
- Include service.version attribute in OpenTelemetry resource
- Pass version.Short() from server to telemetry initialization
- Follows OpenTelemetry semantic conventions for better observability
- Enables version tracking in production traces
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai >
2026-04-05 11:40:21 +02:00
a5344d6ed8
📝 docs: add comprehensive version management and CLI documentation
2026-04-05 11:28:11 +02:00
3e8c50d80a
📝 docs: comprehensive Swagger documentation skill with hierarchical tagging
2026-04-05 10:37:48 +02:00
b279a31f88
✨ feat: implement OpenAPI/Swagger documentation with swaggo/swag
...
📝 docs: add comprehensive API documentation
📦 dependencies: add swaggo/swag to go.mod
🔧 chore: add go:generate directive for documentation
- Add comprehensive API documentation using swaggo/swag
- Embed OpenAPI spec in binary using go:embed
- Add Swagger UI at /swagger/
- Document all endpoints, models, and validation rules
- Add go:generate directive for easy regeneration
- Update README, AGENTS, CHANGELOG with documentation
- Finalize ADR 0013 with implementation details
- Gitignore generated docs directory
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai >
2026-04-05 00:45:40 +02:00
9336178d73
📝 docs: add ADR for staged-only Git hooks formatting
...
- Add ADR-0012 documenting the decision to format only staged Go files
- Update ADR README.md with new entry
- Document rationale, alternatives, and verification results
- Include future considerations for monitoring and CI/CD integration
Generated by Mistral Vibe.
Co-Authored-By: Mistral Vibe <vibe@mistral.ai >
2026-04-04 21:36:57 +02:00
d3b6d190d1
✨ feat: implement input validation for API v2
...
- Added go-playground/validator dependency
- Created pkg/validation/ package with custom validator wrapper
- Implemented request validation for v2 greet endpoint
- Added structured validation error responses
- Extended BDD tests to cover validation scenarios
- Updated AGENTS.md with v2 API documentation
- Created ADR 0011-validation-library-selection.md
- Simplified server handler creation code
- Updated CHANGELOG with implementation details
2026-04-04 21:08:13 +02:00
875eb09fb7
✨ feat: implement API v2 with feature flag control
...
- Added /api/v2/greet POST endpoint with JSON request/response
- Implemented ServiceV2 with Hello my friend <name>! greeting format
- Added api.v2_enabled feature flag (default: false)
- Extended BDD tests to cover v2 scenarios
- Maintained full backward compatibility with v1 API
- Added DLC_API_V2_ENABLED environment variable support
- Created ADR 0010-api-v2-feature-flag.md
- Updated configuration system to support API versioning
2026-04-04 20:39:46 +02:00
85b6cf82ee
🧪 feat: complete BDD implementation with comprehensive documentation
...
Finalize BDD testing framework with:
- Unified step definitions using StepContext struct
- Proper server verification in theServerIsRunning step
- Robust JSON response handling with escaping and newline trimming
- Updated documentation reflecting current implementation
- Test validation script to ensure test quality
- All tests passing with proper black box testing
Key files updated:
- pkg/bdd/steps/steps.go: Unified step definitions
- pkg/bdd/testserver/client.go: Robust response validation
- pkg/bdd/README.md: Godog pattern guide
- doc/BDD_GUIDE.md: Updated usage guide
- adr/0008-bdd-testing.md: Updated ADR with current approach
- scripts/run-bdd-tests.sh: Test validation script
The BDD framework is now production-ready with comprehensive
documentation and proper testing practices.
2026-04-04 17:59:35 +02:00
0daaf9bf96
feat: implement BDD testing with Godog
...
Implement comprehensive BDD testing framework using Godog:
- Added feature files for greet and health endpoints
- Created test server that runs on port 9191
- Implemented step definitions using Godog's exact patterns
- Fixed undefined step warnings by following Godog conventions
- All tests passing with proper response validation
- Maintained black box testing principles
Key files:
- pkg/bdd/steps/steps.go - Step definitions using StepContext struct
- pkg/bdd/testserver/ - Test server implementation
- features/*.feature - BDD feature files
- pkg/bdd/README.md - Documentation for proper step patterns
The implementation follows Godog's exact pattern suggestions to avoid
undefined step warnings and provides comprehensive API testing.
2026-04-04 17:43:57 +02:00
3c1aaea789
🔧 refactor: move log output setup to config package and change server logs to Trace level
2026-04-04 14:05:06 +02:00
25d8940db4
🔧 config: add log output file configuration and cleanup example files
2026-04-04 13:54:59 +02:00