BREAKING: Remove custom action approach (too complex, failing)
Issue: Custom action with toJSON(secrets) failing due to:
- Special characters in SSH_PRIVATE_KEY
- Shell escaping complexity
- JSON parsing edge cases
Solution: Back to basics - direct env vars in workflow
- More verbose but 100% reliable
- No shell escaping issues
- Standard GitHub Actions pattern
- Works with all secret types
Trade-off accepted:
- Verbose: 25 env var declarations
- Reliable: No parsing, no escaping, no failures
- Maintainable: Add secrets via 'gh secret set'
- Standard: Uses GitHub's native secret injection
"Premature optimization is the root of all evil" - Knuth
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
BREAKING: Replaces explicit env var declarations with dynamic approach
Changes:
- Created .github/actions/setup-env custom action
- Uses toJSON(secrets) to pass ALL repository secrets dynamically
- Generates .env file automatically from secrets
- No need to update workflow when adding new secrets
How It Works:
1. toJSON(secrets) serializes all secrets to JSON
2. Custom action parses JSON with jq
3. Writes all secrets to .env file
4. Application loads .env via python-decouple/python-dotenv
Benefits:
- ✅ Fully dynamic - new secrets auto-included
- ✅ DRY - no repetitive secret declarations
- ✅ Maintainable - add secrets via 'gh secret set' only
- ✅ Secure - secrets never in workflow YAML
- ✅ Transparent - .env approach matches local dev
Usage:
gh secret set NEW_SECRET --body "value"
# Automatically available in next CI run!
Before:
30+ lines of explicit env: declarations
After:
3 lines with toJSON(secrets)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Issue: CI failing with "UndefinedValueError: SECRET_KEY not found"
Root Cause: Settings modules load env vars at import time, before
conftest.py can set TESTING=true
Fix: Add minimal test environment variables to CI workflow
- SECRET_KEY for security module
- Database credentials (not used, but required for imports)
- API keys (fake values for testing, not used)
- Reddit credentials (not used in tests)
All values are fake/test-only and do not expose real credentials.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
Rename GitHub repo from Pygentic-AI to strategiq. Update all
user-facing references: README badges/links/prose, page <title>,
hero alt text, CLAUDE.md, system-prompt, justfile comments,
komodo deploy echo, SCSS header comments, and compiled CSS.
Intentionally left unchanged: Docker registry image name
(s3docker.francissecada.com/pygentic_ai), container paths
(/opt/pygentic_ai), DB schema, CSS filenames, Traefik labels,
and the production domain (pygenticai.francissecada.com) — all
operational names that would require infra changes.
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>