qualia-framework 6.1.0 → 6.2.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/README.md +39 -26
  2. package/agents/roadmapper.md +1 -1
  3. package/bin/cli.js +339 -200
  4. package/bin/codex-goal.js +92 -0
  5. package/bin/erp-retry.js +11 -3
  6. package/bin/install.js +483 -55
  7. package/bin/knowledge-flush.js +25 -13
  8. package/bin/knowledge.js +11 -1
  9. package/bin/project-snapshot.js +293 -0
  10. package/bin/qualia-ui.js +13 -2
  11. package/bin/report-payload.js +137 -0
  12. package/bin/state.js +8 -1
  13. package/bin/statusline.js +14 -2
  14. package/docs/changelog-v6.html +864 -0
  15. package/docs/ecosystem-operating-model.md +121 -0
  16. package/docs/erp-contract.md +74 -21
  17. package/docs/onboarding.html +1 -1
  18. package/docs/release.md +44 -0
  19. package/docs/reviews/v6.2.1-revival-audit.md +53 -0
  20. package/docs/reviews/v6.2.2-memory-erp-audit.md +41 -0
  21. package/docs/reviews/v6.2.3-erp-id-guard.md +15 -0
  22. package/guide.md +16 -4
  23. package/hooks/auto-update.js +14 -7
  24. package/hooks/branch-guard.js +10 -2
  25. package/hooks/env-empty-guard.js +10 -1
  26. package/hooks/git-guardrails.js +10 -1
  27. package/hooks/migration-guard.js +4 -1
  28. package/hooks/pre-deploy-gate.js +38 -1
  29. package/hooks/pre-push.js +56 -157
  30. package/hooks/session-start.js +22 -14
  31. package/hooks/stop-session-log.js +11 -3
  32. package/hooks/supabase-destructive-guard.js +11 -1
  33. package/hooks/vercel-account-guard.js +12 -3
  34. package/package.json +3 -2
  35. package/rules/codex-goal.md +46 -0
  36. package/skills/qualia-build/SKILL.md +4 -0
  37. package/skills/qualia-feature/SKILL.md +4 -0
  38. package/skills/qualia-map/SKILL.md +1 -1
  39. package/skills/qualia-milestone/SKILL.md +1 -1
  40. package/skills/qualia-optimize/SKILL.md +1 -1
  41. package/skills/qualia-plan/SKILL.md +4 -0
  42. package/skills/qualia-polish/SKILL.md +2 -2
  43. package/skills/qualia-report/SKILL.md +6 -43
  44. package/skills/qualia-road/SKILL.md +1 -1
  45. package/skills/qualia-verify/SKILL.md +1 -1
  46. package/templates/help.html +1 -1
  47. package/templates/knowledge/agents.md +3 -3
  48. package/templates/knowledge/index.md +1 -1
  49. package/templates/tracking.json +3 -0
  50. package/templates/work-packet.md +46 -0
  51. package/tests/bin.test.sh +411 -13
  52. package/tests/hooks.test.sh +1 -8
  53. package/tests/install-smoke.test.sh +137 -0
  54. package/tests/published-install-smoke.test.sh +126 -0
  55. package/tests/refs.test.sh +42 -0
  56. package/tests/run-all.sh +1 -0
  57. package/tests/runner.js +19 -33
  58. package/tests/state.test.sh +4 -1
  59. package/hooks/pre-compact.js +0 -127
package/README.md CHANGED
@@ -1,10 +1,14 @@
1
- # Qualia Framework v6.0.0
1
+ # Qualia Framework v6.2.9
2
2
 
3
- A harness engineering framework for [Claude Code](https://claude.ai/code). It installs into `~/.claude/` and wraps your AI-assisted development workflow with structured planning, execution, verification, and deployment gates.
3
+ A harness engineering framework for Claude Code and OpenAI Codex. It installs into `~/.claude/` and/or `~/.codex/` and wraps your AI-assisted development workflow with structured planning, execution, verification, and deployment gates.
4
4
 
5
5
  It is not an application framework like Rails or Next.js. It doesn't generate code, run servers, or process data. It's an opinionated workflow layer that tells Claude how to plan, build, and verify your projects end-to-end, from "tell me what you want to make" to "here's the handoff doc for your client."
6
6
 
7
- **v6.0** — wide-surface audit and cleanup. No new flagship; every change is a real bug fix, a silent failure surfaced, an outdated reference replaced, or a token-budget reduction. Uninstall/migrate manifests now match what ships (orphan hooks/agents fixed). Silent `catch {}` blocks in `auto-update`, `pre-compact`, and `env-empty-guard` now write trace entries. Trust-boundary block extracted to `rules/trust-boundary.md` (saves ~500 tokens per phase that spawns the full agent set). Pre-v4 CHANGELOG archived (2726 1875 lines). `tests/run-all.sh` fail-collect runner replaces the `&&`-chain so early-suite failures no longer hide later ones. Same 32 skills, same road, same behavior — just the broken edges fixed.
7
+ **v6.2.9** — Codex hook noise + status line. Conditional PreToolUse hooks no longer status-message on every Bash call (Codex was printing 8 "Running hook…" lines on every command). Self-filtering added to `pre-deploy-gate.js` and `pre-push.js` so they never trip on unrelated commands (Claude's substring matcher was firing them on for-loop arguments). Installer now writes `[tui] status_line = [...]` to Codex's `config.toml` for the rich native bottom status line.
8
+
9
+ **v6.2.8** — Codex `/goal` integration + install hardening. Phase-start skills now set the Codex thread goal (with token budget) via `bin/codex-goal.js` and `rules/codex-goal.md`. Installer fixes: agent TOMLs now emit `name = "..."` (Codex 0.133 was rejecting all 9), ERP API key is mirrored from `~/.claude/` → `~/.codex/`, and deprecated skills (`qualia-task`, `qualia-quick`, `qualia-polish-loop`, `qualia-design`, `qualia-prd`) are pruned on upgrade.
10
+
11
+ **v6.2.7** — Codex runtime compatibility. The installer now writes Codex-native hooks, TOML agents, bin scripts, rules, skills, templates, knowledge, guide, and role config under `~/.codex/`, not just `AGENTS.md`.
8
12
 
9
13
  **The v5 line (preserved):**
10
14
  - **v5.0**, alignment discipline. CONTEXT.md domain glossary, decisions/ ADRs, `/qualia-zoom`, `/qualia-issues`, `/qualia-triage`, slim CLAUDE.md per Matt Pocock's instruction-budget rule, insights-driven hooks.
@@ -19,6 +23,15 @@ It is not an application framework like Rails or Next.js. It doesn't generate co
19
23
  - **v5.9.1**, kickoff UX fix. `/qualia-new` now opens with the Demo/Full/Quick gate as Step 1 (`AskUserQuestion`), then exactly one free-text pitch question, then mandatory hand-off to `/qualia-discuss` — no ad-hoc clarification questioning between them. The shape gate drives the whole downstream interview, so it must come first.
20
24
  - **v5.9.2**, hook ordering + ERP payload fixes. `pre-push.js` self-gates against `branch-guard.js` so a blocked-push no longer leaves an orphan bot commit in local history. `qualia-report` ERP payload omits empty ISO datetime fields (`session_started_at`, `last_pushed_at`) instead of sending `''`, which the ERP validator rejected as 422.
21
25
  - **v6.0.0**, audit + cleanup pass. See CHANGELOG for the full list. Highlights: uninstall/migrate manifests fixed, silent hook `catch{}` blocks now traced, phantom `rules/frontend.md` references replaced, `/qualia-learn` and `/qualia-map` declare their actually-used tools, `/qualia-plan` revision-cycle contradiction reconciled (max 2), `agents/planner.md` and `agents/qa-browser.md` MCP tools declared in frontmatter, `rules/trust-boundary.md` extracted, hardcoded `/tmp` paths replaced with `mktemp`, fail-collect test runner, pre-v4 CHANGELOG archived.
26
+ - **v6.1.0**, `/qualia-vibe` adds a fast layout-preserving design pivot path and strengthens design-surface guards.
27
+ - **v6.2.0**, removes hook-created bot commits. The ERP/report contract is `/qualia-report` POSTs, not passive git scraping of `tracking.json`.
28
+ - **v6.2.1**, active-surface drift guard. README, guide, onboarding, ERP contract, road, milestone, polish, verify, and roadmapper wording now align with v6.2 behavior; refs tests fail on the stale claims.
29
+ - **v6.2.2**, Framework/Memory/ERP clarity. ERP can hand a work packet into Framework sessions, reports can carry ERP-native IDs, and public npm install proof is a first-class release smoke.
30
+ - **v6.2.3**, ERP ID guard. ERP-native IDs are UUID-only in report payloads; slugs remain in `project_id`/`team_id`.
31
+ - **v6.2.4**, report payload contract. The ERP payload builder is now a shipped, tested script instead of shell-embedded inline code.
32
+ - **v6.2.5**, project snapshot export. Framework can write `.planning/snapshots/project-snapshot-*.json` for explicit ERP/admin import.
33
+ - **v6.2.6**, project snapshot upload. Framework can POST that project snapshot directly to ERP's project snapshot intake.
34
+ - **v6.2.7**, Codex runtime compatibility. Codex installs now get native `hooks.json`, `agents/*.toml`, runtime scripts, rules, skills, templates, knowledge, guide, and config under `~/.codex/`.
22
35
 
23
36
  The Full Journey architecture carries forward: `/qualia-new` maps the entire project arc from kickoff to client handoff upfront, and the Road chains end-to-end in `--auto` mode with only two human gates per project.
24
37
 
@@ -40,7 +53,7 @@ Enter your team code when prompted. Get your code from Fawzi.
40
53
  ```bash
41
54
  npx qualia-framework@latest version # Check installed version + updates
42
55
  npx qualia-framework@latest update # Update to latest (remembers your code)
43
- npx qualia-framework@latest uninstall # Clean removal from ~/.claude/
56
+ npx qualia-framework@latest uninstall # Clean removal from installed Claude/Codex homes
44
57
  npx qualia-framework@latest team list # Show team members
45
58
  npx qualia-framework@latest team add # Add a team member
46
59
  npx qualia-framework@latest traces # View recent hook telemetry
@@ -48,7 +61,7 @@ npx qualia-framework@latest traces # View recent hook telemetry
48
61
 
49
62
  ## Usage
50
63
 
51
- Open Claude Code in any project directory.
64
+ Open Claude Code or Codex in any project directory.
52
65
 
53
66
  > **New to Qualia?** Open [`docs/onboarding.html`](docs/onboarding.html) in a browser for a one-page roadmap of the golden path. Best file to send a new hire.
54
67
 
@@ -115,7 +128,7 @@ Two human gates per project. One halt case (gap-cycle limit exceeded on a failin
115
128
  ### Knowledge & meta
116
129
 
117
130
  ```
118
- /qualia-learn # Save a pattern, fix, or client pref to ~/.claude/knowledge/
131
+ /qualia-learn # Save a pattern, fix, or client pref to the active install home's knowledge/
119
132
  /qualia-flush # Promote daily-log raw entries into curated knowledge concepts
120
133
  /qualia-postmortem # Self-heal — when verification fails, propose rule/skill deltas
121
134
  /qualia-skill-new # Author a new Qualia skill or agent
@@ -150,22 +163,24 @@ Project
150
163
 
151
164
  **Why it matters:** non-technical team members can follow the ladder from any entry point. `/qualia` and `/qualia-milestone` render JOURNEY.md as a visual ladder with current position highlighted. In the ERP, the primary operational dates are project deadline, milestone deadline, and employee shift submission date; framework tasks stay internal to agent execution.
152
165
 
153
- ## What's Inside (v6.1.0)
166
+ ## What's Inside (v6.2.7)
154
167
 
155
168
  - **33 skills**, full Road (new / plan / build / verify / milestone / polish / ship / handoff / report), depth (discuss, research, map), navigation (qualia router, idk, pause, resume, road, help), quality (debug, review, optimize with `--deepen` parallel-interface design, feature, test, zoom, issues, triage), design (`qualia-polish --loop`, `qualia-vibe` for fast aesthetic pivots), deterministic enforcement (`qualia-hook-gen`), and meta (learn, skill-new, flush, postmortem)
156
169
  - **9 agents** (each runs in fresh context): planner, builder, verifier, qa-browser, researcher, research-synthesizer, roadmapper, plan-checker, visual-evaluator
157
- - **12 hooks** (pure Node.js, cross-platform): session-start, auto-update, git-guardrails, branch-guard, pre-push tracking sync, migration-guard, pre-deploy-gate, pre-compact state save, stop-session-log, vercel-account-guard, env-empty-guard, supabase-destructive-guard
170
+ - **11 hooks** (pure Node.js, cross-platform): session-start, auto-update, git-guardrails, branch-guard, pre-push tracking stamp, migration-guard, pre-deploy-gate, stop-session-log, vercel-account-guard, env-empty-guard, supabase-destructive-guard
158
171
  - **7 always-loaded rules + 1 lazy-loaded** (`rules/`): grounding, security, infrastructure, deployment, speed (CLI-first / MCP tier-list), architecture (deep modules / scout-for-shallow-code), trust-boundary (shared injection-defence — extracted from agents in v6.0). Lazy-loaded by design-adjacent skills: one-opinion (EventMaster discipline — propose ONE direction, never a menu; new in v6.1)
159
172
  - **6 lazy-loaded design files** (`qualia-design/`): design-laws, design-brand, design-product, design-rubric, design-reference, frontend — `Read` on demand by design-aware skills/agents only, ~22 KB recovered from the always-loaded budget
160
- - **24 template files**: project.md, journey.md, plan.md (story-file format), state.md, DESIGN.md, CONTEXT.md (domain glossary), decisions/ADR-template.md, tracking.json (with `milestone_name` + `milestones[]`), requirements.md (multi-milestone), roadmap.md (current milestone only), phase-context.md, 4 project-type templates (website, ai-agent, voice-agent, mobile-app), 5 research-project templates (STACK, FEATURES, ARCHITECTURE, PITFALLS, SUMMARY), knowledge templates, help.html
173
+ - **25 template files**: project.md, journey.md, plan.md (story-file format), state.md, DESIGN.md, CONTEXT.md (domain glossary), work-packet.md (ERP-approved session context), decisions/ADR-template.md, tracking.json (with `milestone_name` + `milestones[]`), requirements.md (multi-milestone), roadmap.md (current milestone only), phase-context.md, 4 project-type templates (website, ai-agent, voice-agent, mobile-app), 5 research-project templates (STACK, FEATURES, ARCHITECTURE, PITFALLS, SUMMARY), knowledge templates, help.html
161
174
  - **1 reference** — questioning.md methodology for deep project initialization
175
+ - **Codex-native install surface** — `~/.codex/AGENTS.md`, `hooks.json`, `hooks/`, `agents/*.toml`, `bin/`, `rules/`, `skills/`, `qualia-design/`, `qualia-templates/`, `knowledge/`, and `qualia-guide.md`.
162
176
 
163
177
  ## Supported Platforms
164
178
 
165
- Works on **Windows 10/11, macOS, and Linux**. Requires Node.js 18+ and Claude Code.
179
+ Works on **Windows 10/11, macOS, and Linux**. Requires Node.js 18+ and Claude Code or OpenAI Codex.
166
180
 
167
181
  - Every hook and the status line are pure Node.js — no external bash, jq, or GNU coreutils required.
168
- - Skills are executed by Claude Code's own Bash tool (which Claude Code provides on all platforms, including Windows).
182
+ - Skills are installed as Markdown instructions with Node.js helpers; Claude and Codex each receive paths native to their own home directory.
183
+ - Codex installs use Codex-native hook status messages and agent TOML files; Codex does not expose a Claude-style global `statusLine` setting, so `statusline.js` is installed as a shared renderer/helper instead of a fake config key.
169
184
  - Tested on Fedora, EndeavourOS, macOS, and Windows 10/11.
170
185
 
171
186
  ## Why It Works
@@ -192,7 +207,7 @@ Splitting planner, builder, and verifier into separate agents with separate cont
192
207
 
193
208
  ### Production-Grade Hooks
194
209
 
195
- All 12 hooks are real ops engineering, not theoretical:
210
+ All 11 hooks are real ops engineering, not theoretical:
196
211
 
197
212
  - **Pre-deploy gate** — TypeScript, lint, tests, build, and `service_role` leak scan before `vercel --prod`
198
213
  - **Session start** — Shows project state, next command, update notices, and health warnings at session start
@@ -200,8 +215,7 @@ All 12 hooks are real ops engineering, not theoretical:
200
215
  - **Git guardrails** — Blocks destructive git operations like force-push to main/master, `git clean -fd`, and `rm -rf .git`
201
216
  - **Branch guard** — Role-aware: owner can push to main, employees can't (parses refspec so `feature/x:main` bypass is blocked)
202
217
  - **Migration guard** — Catches `DROP TABLE` without `IF EXISTS`, `DELETE`/`UPDATE` without `WHERE`, `CREATE TABLE` without RLS, `GRANT ... TO PUBLIC`, `ALTER TABLE ... DROP COLUMN`
203
- - **Pre-push** — Stamps tracking.json via a bot commit so the ERP always sees fresh data
204
- - **Pre-compact** — Saves state before context compression
218
+ - **Pre-push** — Stamps `tracking.json` locally for statusline, stop-session-log, and `/qualia-report`; does not create commits
205
219
  - **Stop-session log** — Writes lightweight daily session checkpoints into the knowledge layer
206
220
  - **Vercel account guard** — Verifies the correct Vercel account is active before deploy
207
221
  - **Env-empty guard** — Catches empty or placeholder environment variables before they reach production
@@ -209,7 +223,7 @@ All 12 hooks are real ops engineering, not theoretical:
209
223
 
210
224
  ### Enforced State Machine
211
225
 
212
- Every workflow step calls `state.js` — a Node.js state machine that validates preconditions (including plan content), updates both STATE.md and tracking.json atomically, and tracks gap-closure cycles. Milestone readiness guards ensure `close-milestone` refuses to close a milestone with unverified phases or < 2 phases (unless `--force`), and appends a summary to `tracking.json.milestones[]` so the ERP renders a clean project tree.
226
+ Every workflow step calls `state.js` — a Node.js state machine that validates preconditions (including plan content), updates both STATE.md and tracking.json atomically, and tracks gap-closure cycles. Milestone readiness guards ensure `close-milestone` refuses to close a milestone with unverified phases or < 2 phases (unless `--force`), and appends a summary to `tracking.json.milestones[]` for local status, reports, and future explicit integrations.
213
227
 
214
228
  ### Wave-Based Parallelization
215
229
 
@@ -225,19 +239,18 @@ Plans are grouped into waves for parallel execution. No fancy DAG solver — the
225
239
  npx qualia-framework@latest install
226
240
  |
227
241
  v
228
- ~/.claude/
229
- ├── skills/ 32 slash commands (each may ship SKILL.md + REFERENCE.md + scripts/ + fixtures/)
230
- ├── agents/ 9 agent definitions (planner, builder, verifier, qa-browser, roadmapper, research-synthesizer, researcher, plan-checker, visual-evaluator)
231
- ├── hooks/ 12 Node.js hooks — cross-platform (no bash dependency)
232
- ├── bin/ state.js + qualia-ui.js + statusline.js + knowledge.js + knowledge-flush.js + slop-detect.mjs + plan-contract.js + agent-runs.js
242
+ ~/.claude/ and/or ~/.codex/
243
+ ├── skills/ 33 slash commands (each may ship SKILL.md + REFERENCE.md + scripts/ + fixtures/)
244
+ ├── agents/ 9 agent definitions (Claude .md, Codex .toml)
245
+ ├── hooks/ 11 Node.js hooks — cross-platform (no bash dependency)
246
+ ├── bin/ state.js + qualia-ui.js + statusline.js + knowledge.js + knowledge-flush.js + slop-detect.mjs + plan-contract.js + agent-runs.js + ERP/report helpers
233
247
  ├── knowledge/ learned-patterns.md, common-fixes.md, client-prefs.md, daily-log/
234
- ├── rules/ always-loaded substrate (grounding, security, infrastructure, deployment, speed, architecture)
235
- ├── qualia-design/ lazy-loaded design substrate (design-laws, design-brand, design-product, design-rubric, design-reference, frontend) Read on demand
236
- ├── qualia-templates/ project.md, journey.md, plan.md (story-file), state.md, DESIGN.md, CONTEXT.md, decisions/ADR-template.md, tracking.json, requirements.md, roadmap.md, + projects/*.md + research-project/*.md + help.html
248
+ ├── rules/ grounding, security, infrastructure, deployment, speed, architecture, trust-boundary, one-opinion
249
+ ├── qualia-design/ lazy-loaded design substrate — read on demand
250
+ ├── qualia-templates/ project, journey, plan, state, DESIGN, CONTEXT, work-packet, decisions, tracking, requirements, roadmap, research, help
237
251
  ├── qualia-references/ questioning.md (deep project initialization methodology)
238
- ├── CLAUDE.md global instructions (role-configured per team member, deliberately ~25 lines per Matt Pocock instruction-budget rule)
239
- ├── (~/.codex/AGENTS.md if user opted into multi-target install — v5.1+)
240
- └── (settings.json wired for hooks, statusline, spinner verbs, etc.)
252
+ ├── CLAUDE.md or AGENTS.md
253
+ └── settings.json or hooks.json wired for native hooks/status messages
241
254
  ```
242
255
 
243
256
  ## For Qualia Solutions Team
@@ -150,7 +150,7 @@ node ~/.claude/bin/state.js init \
150
150
  --total_phases {count of Milestone 1 phases}
151
151
  ```
152
152
 
153
- `--milestone_name` is the human name of Milestone 1 (e.g. "Foundation"). tracking.json records it so the status bar and ERP tree render correctly.
153
+ `--milestone_name` is the human name of Milestone 1 (e.g. "Foundation"). tracking.json records it so the status bar and report payload have human-readable milestone context.
154
154
 
155
155
  ### 8. Return a Summary
156
156