- Services log immediately when called, so array must be populated first
- Move all servicesInvolved.push() statements BEFORE service calls
- Ensures audit logs capture coordination data correctly
- Add services_involved tracking to framework-audit-hook.js
- Hook now tracks which services are invoked for each tool use
- Pass services_involved array to all service contexts
- Update ContextPressureMonitor to log coordination in metadata.services_involved
- Update BoundaryEnforcer to log coordination in metadata.services_involved
- Enables 0% → X% coordination rate in audit log analysis
- Fixes HF Space showing 0.0% Deep Interlock coordination
- Services will now properly log when they coordinate on decisions
This implements the missing instrumentation for Deep Interlock (Principle #2).
Services were coordinating but not logging it - now audit trail will show
multi-service coordination patterns.
CRITICAL BUG FIX: Framework audit hook was blocking actions but NOT
logging those denials to the audit database. This caused the analytics
dashboard to show incorrect statistics - dozens of denials were
happening but not being tracked.
Changes:
- Add logDenial() function to framework-audit-hook.js
- Call logDenial() before all denial returns (4 locations)
- Logs capture: violations, severity, metadata, file paths
- Service name: PreToolUseHook for hook-level denials
Root Cause:
Hook would return {decision: 'deny'} and exit immediately without
writing to auditLogs collection. Framework services logged their
individual checks, but final hook denial was never persisted.
Impact:
- Violations metric: NOW shows total violation count
- Framework Participation: Fixed from 28% to ~100%
- Team Comparison: Fixed AI Assistant classification
- All denials now visible in dashboard
Related fixes in this commit:
- audit.controller.js: Move avgBlockRate calc before use
- audit.controller.js: Count total violations not decision count
- audit.controller.js: Fix team comparison service list
- audit-analytics.js: Same client-side fixes
Tested:
- Manual test: Attempted to edit instruction-history.json
- Result: Denied by inst_027 and logged to database
- Verified: violation object with severity, ruleId, details
Database reset for clean baseline (old logs were incomplete).
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
Phase 3.5: Cross-validation between prompt analysis and action analysis
- Added prompt-analyzer-hook.js to store prompt expectations in session state
- Modified framework-audit-hook.js to retrieve and compare prompt vs action
- Implemented cross-validation logic tracking agreements, disagreements, missed flags
- Added validation feedback to systemMessage for real-time guidance
Services enhanced with guidance generation:
- BoundaryEnforcer: _buildGuidance() provides systemMessage for enforcement decisions
- CrossReferenceValidator: Generates guidance for cross-reference conflicts
- MetacognitiveVerifier: Provides guidance on metacognitive verification
- PluralisticDeliberationOrchestrator: Offers guidance on values conflicts
Framework now communicates bidirectionally:
- TO Claude: systemMessage injection with proactive guidance
- FROM Claude: Audit logs with framework_backed_decision metadata
Integration testing: 92% success (23/25 tests passed)
Recent performance: 100% guidance generation for new decisions
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>