diff --git a/CHANGELOG.md b/CHANGELOG.md index 4ae0a279..517d2532 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,25 @@ All notable changes to codexclaw are documented here. The format follows ## [Unreleased] +## [0.2.27] - 2026-09-13 + +### Added + +- Logic-analysis methodology in `cxc-dev-debugging`: new `references/logic-analysis.md` + covers comprehending unknown systems (closed apps, AI tools, undocumented APIs, + unfamiliar codebases) when no defect is being fixed — the logic-analysis loop + (isolate → inventory the callable surface → hypothesize from names/strings/errors → + observe static AND dynamic → mutate one variable → prove the model by writing a + client), a technique routing table, the honest human-lab boundary, and an + anti-give-up escalation ladder whose core rule is that "I can't analyze this" is a + skipped loop, not a limit. Distilled from three reverse-engineering courses with + cited evidence in `devlog/_plan/260913_logic_analysis_skill/`. `SKILL.md` gains the + trigger metadata, boundary route, a compact Logic Analysis section, and the + references-table row (414 → 431 lines). `cxc-dev` §2 and its surface routing table + now point comprehension-without-a-defect requests at the same reference, and + `cxc-search` Korean Intent Guard rule 1 classifies "figure out how this system + works" (로직 파악, 뜯어봐) as logic analysis rather than a web lookup. + ## [0.2.26] - 2026-09-13 ### Added diff --git a/cli/package.json b/cli/package.json index 112850df..60e4b356 100644 --- a/cli/package.json +++ b/cli/package.json @@ -1,6 +1,6 @@ { "name": "@codexclaw/cli", - "version": "0.2.26", + "version": "0.2.27", "private": true, "type": "module", "description": "codexclaw CLI — status, subagent config, provider toggle, GUI launcher.", diff --git a/package-lock.json b/package-lock.json index 7d4a027f..8293c454 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "codexclaw", - "version": "0.2.26", + "version": "0.2.27", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "codexclaw", - "version": "0.2.26", + "version": "0.2.27", "license": "MIT", "workspaces": [ "plugins/codexclaw/components/*", @@ -20,7 +20,7 @@ }, "cli": { "name": "@codexclaw/cli", - "version": "0.2.26", + "version": "0.2.27", "bin": { "codexclaw": "bin/codexclaw.mjs" } @@ -1953,43 +1953,43 @@ }, "plugins/codexclaw/components/bg-wake": { "name": "@codexclaw/bg-wake", - "version": "0.2.26" + "version": "0.2.27" }, "plugins/codexclaw/components/config-guard": { "name": "@codexclaw/config-guard", - "version": "0.2.26" + "version": "0.2.27" }, "plugins/codexclaw/components/cxc-ops": { "name": "@codexclaw/cxc-ops", - "version": "0.2.26" + "version": "0.2.27" }, "plugins/codexclaw/components/messenger-bridge": { "name": "@codexclaw/messenger-bridge", - "version": "0.2.26" + "version": "0.2.27" }, "plugins/codexclaw/components/pabcd-state": { "name": "@codexclaw/pabcd-state", - "version": "0.2.26" + "version": "0.2.27" }, "plugins/codexclaw/components/provider-bridge": { "name": "@codexclaw/provider-bridge", - "version": "0.2.26" + "version": "0.2.27" }, "plugins/codexclaw/components/recall": { "name": "@codexclaw/recall", - "version": "0.2.26" + "version": "0.2.27" }, "plugins/codexclaw/components/skill-search": { "name": "@codexclaw/skill-search", - "version": "0.2.26" + "version": "0.2.27" }, "plugins/codexclaw/components/subagent-config": { "name": "@codexclaw/subagent-config", - "version": "0.2.26" + "version": "0.2.27" }, "plugins/codexclaw/gui": { "name": "@codexclaw/gui", - "version": "0.2.26", + "version": "0.2.27", "dependencies": { "react": "^18.3.1", "react-dom": "^18.3.1" diff --git a/package.json b/package.json index a3db12bb..46596990 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "codexclaw", - "version": "0.2.26", + "version": "0.2.27", "private": true, "description": "cli-jaw-style dev discipline + multi-model subagents for the OpenAI Codex runtime.", "type": "module", diff --git a/plugins/codexclaw/.codex-plugin/plugin.json b/plugins/codexclaw/.codex-plugin/plugin.json index 4fe04860..e32e8bff 100644 --- a/plugins/codexclaw/.codex-plugin/plugin.json +++ b/plugins/codexclaw/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "codexclaw", - "version": "0.2.26+codex.20260913055205", + "version": "0.2.27+codex.20260913080217", "description": "cli-jaw-style dev discipline (dev skills + PABCD) and multi-model subagents for the OpenAI Codex runtime, with optional opencodex provider routing.", "author": { "name": "lidge-jun", diff --git a/plugins/codexclaw/components/bg-wake/package.json b/plugins/codexclaw/components/bg-wake/package.json index ec8c5000..8149f16f 100644 --- a/plugins/codexclaw/components/bg-wake/package.json +++ b/plugins/codexclaw/components/bg-wake/package.json @@ -1,6 +1,6 @@ { "name": "@codexclaw/bg-wake", - "version": "0.2.26", + "version": "0.2.27", "private": true, "type": "module", "description": "Background task registry + completion wake for Codex. Registers detached commands, then wakes the agent through the Stop hook when they finish.", diff --git a/plugins/codexclaw/components/config-guard/package.json b/plugins/codexclaw/components/config-guard/package.json index 27fd71e1..84777db7 100644 --- a/plugins/codexclaw/components/config-guard/package.json +++ b/plugins/codexclaw/components/config-guard/package.json @@ -1,6 +1,6 @@ { "name": "@codexclaw/config-guard", - "version": "0.2.26", + "version": "0.2.27", "private": true, "type": "module", "description": "Controlled feature-flag activation: enables only codexclaw's declared [features] flags via the official `codex features` CLI, with a revert manifest and backup.", diff --git a/plugins/codexclaw/components/cxc-ops/package.json b/plugins/codexclaw/components/cxc-ops/package.json index bec18b5d..0943d64a 100644 --- a/plugins/codexclaw/components/cxc-ops/package.json +++ b/plugins/codexclaw/components/cxc-ops/package.json @@ -1,6 +1,6 @@ { "name": "@codexclaw/cxc-ops", - "version": "0.2.26", + "version": "0.2.27", "private": true, "type": "module", "description": "codexclaw ops CLI — doctor (plugin health), reset (scoped state cleanup).", diff --git a/plugins/codexclaw/components/messenger-bridge/package.json b/plugins/codexclaw/components/messenger-bridge/package.json index 59a86b61..7c4064ff 100644 --- a/plugins/codexclaw/components/messenger-bridge/package.json +++ b/plugins/codexclaw/components/messenger-bridge/package.json @@ -1,6 +1,6 @@ { "name": "@codexclaw/messenger-bridge", - "version": "0.2.26", + "version": "0.2.27", "private": true, "type": "module", "description": "codexclaw messenger bridge — cxc serve HTTP server + SQLite state substrate (zero third-party deps).", diff --git a/plugins/codexclaw/components/pabcd-state/package.json b/plugins/codexclaw/components/pabcd-state/package.json index bc7c1625..84594ab4 100644 --- a/plugins/codexclaw/components/pabcd-state/package.json +++ b/plugins/codexclaw/components/pabcd-state/package.json @@ -1,6 +1,6 @@ { "name": "@codexclaw/pabcd-state", - "version": "0.2.26", + "version": "0.2.27", "private": true, "type": "module", "description": "IPABCD finite-state machine backed by per-session .codexclaw/sessions/.json + shared ledger.jsonl.", diff --git a/plugins/codexclaw/components/provider-bridge/package.json b/plugins/codexclaw/components/provider-bridge/package.json index 62106407..7ccae716 100644 --- a/plugins/codexclaw/components/provider-bridge/package.json +++ b/plugins/codexclaw/components/provider-bridge/package.json @@ -1,6 +1,6 @@ { "name": "@codexclaw/provider-bridge", - "version": "0.2.26", + "version": "0.2.27", "private": true, "type": "module", "description": "Detect-only opencodex (ocx) status probe at session start; graceful native path when absent.", diff --git a/plugins/codexclaw/components/recall/package.json b/plugins/codexclaw/components/recall/package.json index 2950d96a..5ac2f46b 100644 --- a/plugins/codexclaw/components/recall/package.json +++ b/plugins/codexclaw/components/recall/package.json @@ -1,6 +1,6 @@ { "name": "@codexclaw/recall", - "version": "0.2.26", + "version": "0.2.27", "private": true, "type": "module", "description": "Read-only chat/memory recall search over the Codex session root (~/.codex): date-pruned rollout scan + thread/memory sqlite enrichment.", diff --git a/plugins/codexclaw/components/skill-search/package.json b/plugins/codexclaw/components/skill-search/package.json index 8867f5ad..9fce4382 100644 --- a/plugins/codexclaw/components/skill-search/package.json +++ b/plugins/codexclaw/components/skill-search/package.json @@ -1,6 +1,6 @@ { "name": "@codexclaw/skill-search", - "version": "0.2.26", + "version": "0.2.27", "private": true, "type": "module", "description": "Remote dormant-skill search over cli-jaw-skills / Hermes / ClawHub / gh code search. Zero-dep, TTL-cached, adapter-preamble output. No local vendoring.", diff --git a/plugins/codexclaw/components/subagent-config/package.json b/plugins/codexclaw/components/subagent-config/package.json index fb1ed3f6..635828a1 100644 --- a/plugins/codexclaw/components/subagent-config/package.json +++ b/plugins/codexclaw/components/subagent-config/package.json @@ -1,6 +1,6 @@ { "name": "@codexclaw/subagent-config", - "version": "0.2.26", + "version": "0.2.27", "private": true, "type": "module", "description": "Stores subagent model/prompt config; serves it to the GUI and an MCP tool.", diff --git a/plugins/codexclaw/gui/package.json b/plugins/codexclaw/gui/package.json index c918dbfe..e84a39b1 100644 --- a/plugins/codexclaw/gui/package.json +++ b/plugins/codexclaw/gui/package.json @@ -1,6 +1,6 @@ { "name": "@codexclaw/gui", - "version": "0.2.26", + "version": "0.2.27", "private": true, "type": "module", "description": "codexclaw local dashboard (Vite + React) — subagent config, prompts, provider link bar.", diff --git a/plugins/codexclaw/inventory.json b/plugins/codexclaw/inventory.json index 288387e1..04f943ab 100644 --- a/plugins/codexclaw/inventory.json +++ b/plugins/codexclaw/inventory.json @@ -2,8 +2,8 @@ "schemaVersion": 1, "plugin": { "name": "codexclaw", - "manifestVersion": "0.2.26+codex.20260913055205", - "packageVersion": "0.2.26" + "manifestVersion": "0.2.27+codex.20260913080217", + "packageVersion": "0.2.27" }, "skills": [ { @@ -297,55 +297,55 @@ { "folder": "bg-wake", "packageName": "@codexclaw/bg-wake", - "version": "0.2.26", + "version": "0.2.27", "hasTests": true }, { "folder": "config-guard", "packageName": "@codexclaw/config-guard", - "version": "0.2.26", + "version": "0.2.27", "hasTests": true }, { "folder": "cxc-ops", "packageName": "@codexclaw/cxc-ops", - "version": "0.2.26", + "version": "0.2.27", "hasTests": true }, { "folder": "messenger-bridge", "packageName": "@codexclaw/messenger-bridge", - "version": "0.2.26", + "version": "0.2.27", "hasTests": true }, { "folder": "pabcd-state", "packageName": "@codexclaw/pabcd-state", - "version": "0.2.26", + "version": "0.2.27", "hasTests": true }, { "folder": "provider-bridge", "packageName": "@codexclaw/provider-bridge", - "version": "0.2.26", + "version": "0.2.27", "hasTests": true }, { "folder": "recall", "packageName": "@codexclaw/recall", - "version": "0.2.26", + "version": "0.2.27", "hasTests": true }, { "folder": "skill-search", "packageName": "@codexclaw/skill-search", - "version": "0.2.26", + "version": "0.2.27", "hasTests": true }, { "folder": "subagent-config", "packageName": "@codexclaw/subagent-config", - "version": "0.2.26", + "version": "0.2.27", "hasTests": true } ] diff --git a/plugins/codexclaw/skills/dev/SKILL.md b/plugins/codexclaw/skills/dev/SKILL.md index 4ca6ff94..ba8b7341 100644 --- a/plugins/codexclaw/skills/dev/SKILL.md +++ b/plugins/codexclaw/skills/dev/SKILL.md @@ -149,7 +149,7 @@ numbered, contiguous, non-overlapping chunks through EOF and verify no gaps. | Tests / QA | `dev-testing` | `dev-frontend` for browser QA | | Security / auth / secrets | `dev-security` | surface-specific router | | Architecture / modules / deps | `dev-architecture` | `dev-scaffolding` for new structure | -| Debugging / crashes / perf | `dev-debugging` | surface-specific router | +| Debugging / crashes / perf / comprehending unknown systems | `dev-debugging` | surface-specific router; `references/logic-analysis.md` when no defect | | DevOps / deploy / infra | `dev-devops` | `dev-security` for credentials | | Scaffolding / docs / setup | `dev-scaffolding` | `dev-architecture` for boundaries | | Code review | `dev-code-reviewer` | `dev-security` + `dev-testing` | @@ -322,6 +322,10 @@ Before any new abstraction, apply DEV-NECESSITY-01 and owner search in ## 2. Systematic Debugging For non-obvious defects or repeated failed repairs load cxc-dev-debugging. +For comprehension without a defect — how an unknown app, API, AI tool, or +codebase works (로직 파악, 뜯어보기) — load cxc-dev-debugging's +`references/logic-analysis.md`: "I can't analyze this" is a skipped +observation loop, not a limit. DEV-FRICTION-01 and DEV-EDIT-SHAPE-01 remain in [Development practice](references/development-practice.md). diff --git a/plugins/codexclaw/skills/search/SKILL.md b/plugins/codexclaw/skills/search/SKILL.md index 1cb47fe2..b400133e 100644 --- a/plugins/codexclaw/skills/search/SKILL.md +++ b/plugins/codexclaw/skills/search/SKILL.md @@ -200,6 +200,10 @@ When the user says **검색 / 검색해 / 찾아봐 / 찾아줘 / 알아봐 / above; programming library/framework/API docs -> official docs or the active documentation retrieval path, then source-open proof; this repository's code/logs/config -> file search (`rg`, `rg --files`, local code tools). + **"Figure out how this specific system/app/AI tool/API works"** (로직 파악, + 뜯어봐) is not a web lookup by default — route to `dev-debugging` + `references/logic-analysis.md` (the observation loop) and use this ladder + only for its external-evidence steps (docs, CVEs, prior writeups). 2. **Do not send the full natural-language sentence as the only query.** Rewrite it into 1-3 focused keyword queries (see `references/query-rewrite.md`). 3. **Preserve anchors** in the rewrite: entities, source hints (official, Naver,