OverviewFilesCommitsIssuesDocsReleasesPeers

knowledge-ratchet / run.js

84 lines · javascript ref:
#!/usr/bin/env node

// Knowledge Ratchet — Main Pipeline
// Runs the full cycle: extract → validate → promote → regress → migrate
// Use: node run.js [full|extract|validate|regress|migrate|status]

const { execSync } = require('child_process')
const path = require('path')

const DIR = __dirname

function run (script, args = '') {
  console.log(`\n${'─'.repeat(60)}`)
  console.log(`Running: ${script} ${args}`)
  console.log('─'.repeat(60))
  try {
    const output = execSync(`node ${path.join(DIR, script)} ${args}`, {
      encoding: 'utf8',
      stdio: 'inherit'
    })
  } catch (e) {
    console.error(`Failed: ${script}`)
  }
}

const command = process.argv[2] || 'status'

switch (command) {
  case 'full':
    // Full pipeline: extract → validate → sync → regress → migrate
    run('extract-patterns.js')
    run('validate-principles.js')
    run('promote.js', 'sync')
    run('regress.js')
    run('migrate-down.js')
    run('contradiction-detector.js', 'pending')
    console.log('\n' + '═'.repeat(60))
    console.log('Pipeline complete.')
    break

  case 'extract':
    run('extract-patterns.js')
    break

  case 'validate':
    run('validate-principles.js')
    break

  case 'regress':
    run('regress.js')
    break

  case 'migrate':
    run('migrate-down.js')
    break

  case 'questions':
    run('contradiction-detector.js', 'pending')
    break

  case 'promote':
    run('promote.js', process.argv.slice(3).join(' '))
    break

  case 'status':
    run('promote.js', 'list')
    run('migrate-down.js', 'status')
    run('contradiction-detector.js', 'pending')
    break

  default:
    console.log('Knowledge Ratchet Pipeline')
    console.log('')
    console.log('Commands:')
    console.log('  full       Run full pipeline (extract → validate → sync → regress → migrate)')
    console.log('  extract    Extract patterns from feedback files')
    console.log('  validate   Run retrospective split test')
    console.log('  regress    Check correction rates per principle')
    console.log('  migrate    Check enforcement level escalation')
    console.log('  questions  List pending questions for user')
    console.log('  promote    Promote candidates (promote list | promote <index>)')
    console.log('  status     Show current state of all principles')
}