true, 'sandbox_exists'=>is_dir($sandbox), 'docker_available'=>!empty(shell_exec('which docker 2>/dev/null')), 'note'=>'Self-refactor requires Docker sandbox + nonreg validator. Use action=propose to queue refactor.', ]); exit; } if ($action === 'propose') { $description = $_POST['description'] ?? ''; $target = $_POST['target'] ?? ''; if (!$description || !$target) { echo json_encode(['ok'=>false,'error'=>'description+target required']); exit; } $queue = $sandbox . '/queue.json'; @mkdir($sandbox, 0755, true); $q = file_exists($queue) ? json_decode(file_get_contents($queue), true) : []; $q[] = ['id'=>uniqid(), 'ts'=>date('c'), 'description'=>$description, 'target'=>$target, 'status'=>'pending']; file_put_contents($queue, json_encode($q, JSON_PRETTY_PRINT)); echo json_encode(['ok'=>true, 'queued'=>count($q)]); exit; } if ($action === 'queue') { $queue = $sandbox . '/queue.json'; echo json_encode(['ok'=>true, 'queue'=>file_exists($queue) ? json_decode(file_get_contents($queue), true) : []]); exit; } echo json_encode(['ok'=>false, 'actions'=>['status','propose','queue']]);