Major security, observability, and configuration improvements:
## Security Hardening
- Implemented configurable CORS (no more wildcards)
- Added comprehensive auth middleware for admin endpoints
- Enhanced webhook HMAC validation
- Added input validation and rate limiting
- Security headers and CSP policies
## Configuration Management
- Made N8N webhook URL configurable (WHOOSH_N8N_BASE_URL)
- Replaced all hardcoded endpoints with environment variables
- Added feature flags for LLM vs heuristic composition
- Gitea fetch hardening with EAGER_FILTER and FULL_RESCAN options
## API Completeness
- Implemented GetCouncilComposition function
- Added GET /api/v1/councils/{id} endpoint
- Council artifacts API (POST/GET /api/v1/councils/{id}/artifacts)
- /admin/health/details endpoint with component status
- Database lookup for repository URLs (no hardcoded fallbacks)
## Observability & Performance
- Added OpenTelemetry distributed tracing with goal/pulse correlation
- Performance optimization database indexes
- Comprehensive health monitoring
- Enhanced logging and error handling
## Infrastructure
- Production-ready P2P discovery (replaces mock implementation)
- Removed unused Redis configuration
- Enhanced Docker Swarm integration
- Added migration files for performance indexes
## Code Quality
- Comprehensive input validation
- Graceful error handling and failsafe fallbacks
- Backwards compatibility maintained
- Following security best practices
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
26 lines
1.1 KiB
Plaintext
26 lines
1.1 KiB
Plaintext
The .words file is used by gospel (v1.2+), which wraps the Hunspell libraries
|
|
but populates the dictionary with identifiers from the Go source.
|
|
|
|
<https://github.com/kortschak/gospel>
|
|
|
|
Alas, no comments are allowed in the .words file and newer versions of gospel
|
|
error out on seeing them. This is really a hunspell restriction.
|
|
|
|
We assume en_US hunspell dictionaries are installed and used.
|
|
The /AFFIXRULES are defined in en_US.aff (eg: /usr/share/hunspell/en_US.aff)
|
|
Invoke `hunspell -D` to see the actual locations.
|
|
|
|
Words which are in the base dictionary can't have extra affix rules added to
|
|
them, so we have to start with the affixed variant we want to add.
|
|
Thus `creds` rather than `cred/S` and so on.
|
|
|
|
So we can't use receive/DRSZGBU, adding 'U', to allow unreceive and variants,
|
|
we have to use unreceive as the stem.
|
|
|
|
We can't define our own affix or compound rules,
|
|
to capture rfc\d{3,} or 0x[0-9A-Fa-f]{2}
|
|
|
|
The spelling tokenizer doesn't take "permessage-deflate" as allowing for ...
|
|
"permessage-deflate", which is an RFC7692 registered extension for websockets.
|
|
We have to explicitly list "permessage".
|