 131868bdca
			
		
	
	131868bdca
	
	
	
		
			
			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>
		
	
		
			
				
	
	
		
			85 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			85 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package pgxpool
 | |
| 
 | |
| import (
 | |
| 	"time"
 | |
| 
 | |
| 	"github.com/jackc/puddle/v2"
 | |
| )
 | |
| 
 | |
| // Stat is a snapshot of Pool statistics.
 | |
| type Stat struct {
 | |
| 	s                    *puddle.Stat
 | |
| 	newConnsCount        int64
 | |
| 	lifetimeDestroyCount int64
 | |
| 	idleDestroyCount     int64
 | |
| }
 | |
| 
 | |
| // AcquireCount returns the cumulative count of successful acquires from the pool.
 | |
| func (s *Stat) AcquireCount() int64 {
 | |
| 	return s.s.AcquireCount()
 | |
| }
 | |
| 
 | |
| // AcquireDuration returns the total duration of all successful acquires from
 | |
| // the pool.
 | |
| func (s *Stat) AcquireDuration() time.Duration {
 | |
| 	return s.s.AcquireDuration()
 | |
| }
 | |
| 
 | |
| // AcquiredConns returns the number of currently acquired connections in the pool.
 | |
| func (s *Stat) AcquiredConns() int32 {
 | |
| 	return s.s.AcquiredResources()
 | |
| }
 | |
| 
 | |
| // CanceledAcquireCount returns the cumulative count of acquires from the pool
 | |
| // that were canceled by a context.
 | |
| func (s *Stat) CanceledAcquireCount() int64 {
 | |
| 	return s.s.CanceledAcquireCount()
 | |
| }
 | |
| 
 | |
| // ConstructingConns returns the number of conns with construction in progress in
 | |
| // the pool.
 | |
| func (s *Stat) ConstructingConns() int32 {
 | |
| 	return s.s.ConstructingResources()
 | |
| }
 | |
| 
 | |
| // EmptyAcquireCount returns the cumulative count of successful acquires from the pool
 | |
| // that waited for a resource to be released or constructed because the pool was
 | |
| // empty.
 | |
| func (s *Stat) EmptyAcquireCount() int64 {
 | |
| 	return s.s.EmptyAcquireCount()
 | |
| }
 | |
| 
 | |
| // IdleConns returns the number of currently idle conns in the pool.
 | |
| func (s *Stat) IdleConns() int32 {
 | |
| 	return s.s.IdleResources()
 | |
| }
 | |
| 
 | |
| // MaxConns returns the maximum size of the pool.
 | |
| func (s *Stat) MaxConns() int32 {
 | |
| 	return s.s.MaxResources()
 | |
| }
 | |
| 
 | |
| // TotalConns returns the total number of resources currently in the pool.
 | |
| // The value is the sum of ConstructingConns, AcquiredConns, and
 | |
| // IdleConns.
 | |
| func (s *Stat) TotalConns() int32 {
 | |
| 	return s.s.TotalResources()
 | |
| }
 | |
| 
 | |
| // NewConnsCount returns the cumulative count of new connections opened.
 | |
| func (s *Stat) NewConnsCount() int64 {
 | |
| 	return s.newConnsCount
 | |
| }
 | |
| 
 | |
| // MaxLifetimeDestroyCount returns the cumulative count of connections destroyed
 | |
| // because they exceeded MaxConnLifetime.
 | |
| func (s *Stat) MaxLifetimeDestroyCount() int64 {
 | |
| 	return s.lifetimeDestroyCount
 | |
| }
 | |
| 
 | |
| // MaxIdleDestroyCount returns the cumulative count of connections destroyed because
 | |
| // they exceeded MaxConnIdleTime.
 | |
| func (s *Stat) MaxIdleDestroyCount() int64 {
 | |
| 	return s.idleDestroyCount
 | |
| }
 |