Implements 9 additional enforcement mechanisms across all priority levels: 🔒 HIGH PRIORITY - Architectural Enforcement: ✅ API Security Validator (inst_013/045) - scripts/check-api-security.js - Scans API endpoints for rate limiting - Validates authentication requirements - Detects sensitive runtime data exposure ✅ GitHub Repo Structure (inst_063_CONSOLIDATED) - scripts/check-github-repo-structure.js - Validates repository structure requirements - Ensures tractatus-framework remains implementation-focused ⚙️ MEDIUM PRIORITY - Process/Workflow: ✅ Human Approval Tracker (inst_005) - scripts/track-human-approvals.js - Logs approval requirements for major decisions - Tracks pending approvals ✅ Context Pressure Comprehensive (inst_019) - scripts/verify-context-pressure-comprehensive.js - Verifies all pressure factors included - Validates comprehensive context accounting 📋 LOW PRIORITY - Behavioral/Values: ✅ Behavioral Compliance Reminders (inst_047/049) - .claude/hooks/behavioral-compliance-reminder.js - Reminds never to dismiss user requests - Prompts to test user hypotheses first - Integrated into UserPromptSubmit hooks ✅ Dark Patterns Detector (inst_079) - scripts/check-dark-patterns.js - Scans UI code for manipulative patterns - Detects confirm shaming, hidden checkboxes, timed popups 📊 Enforcement Progress: - Wave 1: 11/39 (28%) - Wave 2: 18/39 (46%) - Wave 3: 22/39 (56%) - Wave 4: 31/39 (79%) - Total improvement: +20 instructions = +178% from baseline - Remaining gaps: 8/39 (21%) 🎯 Remaining 8 Gaps (requires runtime/process enforcement): - inst_039: Document processing verification - inst_043: Web form input validation (runtime) - inst_052: Scope adjustment authority tracking - inst_058: JSON/DB schema sync validation - inst_061: Hook approval pattern tracking - inst_072: Defense-in-depth credential layers - inst_080: Open source commitment (policy) - inst_081: Pluralism principle (foundational value) 🔄 Enhanced Hooks: - UserPromptSubmit now runs 3 hooks (triggers, all-commands, behavioral) - Added behavioral compliance reminders for session guidance 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
59 lines
1.4 KiB
JavaScript
Executable file
59 lines
1.4 KiB
JavaScript
Executable file
#!/usr/bin/env node
|
|
/**
|
|
* Human Approval Gate Tracker - Enforces inst_005
|
|
* Logs when human approval is required/obtained
|
|
*/
|
|
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
const APPROVAL_LOG = path.join(__dirname, '../.claude/approval-log.json');
|
|
|
|
function loadLog() {
|
|
if (!fs.existsSync(APPROVAL_LOG)) {
|
|
return { approvals: [] };
|
|
}
|
|
return JSON.parse(fs.readFileSync(APPROVAL_LOG, 'utf8'));
|
|
}
|
|
|
|
function saveLog(log) {
|
|
fs.writeFileSync(APPROVAL_LOG, JSON.stringify(log, null, 2));
|
|
}
|
|
|
|
function logApproval(type, description) {
|
|
const log = loadLog();
|
|
log.approvals.push({
|
|
timestamp: new Date().toISOString(),
|
|
type,
|
|
description,
|
|
approved: false
|
|
});
|
|
saveLog(log);
|
|
console.log(`✅ Logged approval requirement: ${type}`);
|
|
}
|
|
|
|
function listPending() {
|
|
const log = loadLog();
|
|
const pending = log.approvals.filter(a => !a.approved);
|
|
|
|
if (pending.length === 0) {
|
|
console.log('✅ No pending approvals\n');
|
|
return;
|
|
}
|
|
|
|
console.log(`\n⚠️ ${pending.length} pending approval(s):\n`);
|
|
pending.forEach((a, i) => {
|
|
console.log(`${i+1}. ${a.type}: ${a.description}`);
|
|
console.log(` Requested: ${a.timestamp}\n`);
|
|
});
|
|
}
|
|
|
|
const cmd = process.argv[2];
|
|
if (cmd === 'log') {
|
|
logApproval(process.argv[3], process.argv[4]);
|
|
} else if (cmd === 'list') {
|
|
listPending();
|
|
} else {
|
|
console.log('Usage: track-human-approvals.js log <type> <description>');
|
|
console.log(' track-human-approvals.js list');
|
|
}
|