qualia-framework 6.3.0 → 6.5.0

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 (64) hide show
  1. package/AGENTS.md +8 -8
  2. package/CLAUDE.md +6 -5
  3. package/README.md +17 -39
  4. package/bin/cli.js +64 -16
  5. package/bin/command-surface.js +6 -1
  6. package/bin/install.js +26 -11
  7. package/bin/learning-candidates.js +217 -0
  8. package/bin/prune-deprecated.js +64 -0
  9. package/bin/qualia-ui.js +1 -0
  10. package/bin/runtime-manifest.js +4 -0
  11. package/bin/security-scan.js +409 -0
  12. package/bin/state.js +106 -1
  13. package/bin/status-snapshot.js +363 -0
  14. package/guide.md +18 -33
  15. package/hooks/pre-compact.js +232 -0
  16. package/package.json +8 -2
  17. package/references/archetypes/ai-agent.md +89 -0
  18. package/references/archetypes/voice-agent.md +60 -0
  19. package/references/archetypes/web-app.md +67 -0
  20. package/references/archetypes/website.md +78 -0
  21. package/rules/constitution.md +42 -0
  22. package/skills/qualia/SKILL.md +3 -1
  23. package/skills/qualia-build/SKILL.md +1 -1
  24. package/skills/qualia-discuss/SKILL.md +1 -1
  25. package/skills/qualia-doctor/SKILL.md +1 -1
  26. package/skills/qualia-feature/SKILL.md +1 -1
  27. package/skills/qualia-fix/SKILL.md +1 -1
  28. package/skills/qualia-idk/SKILL.md +245 -0
  29. package/skills/qualia-learn/SKILL.md +1 -1
  30. package/skills/qualia-map/SKILL.md +1 -1
  31. package/skills/qualia-milestone/SKILL.md +1 -1
  32. package/skills/qualia-new/SKILL.md +1 -1
  33. package/skills/qualia-optimize/SKILL.md +1 -1
  34. package/skills/qualia-plan/SKILL.md +1 -1
  35. package/skills/qualia-polish/SKILL.md +1 -1
  36. package/skills/qualia-postmortem/SKILL.md +1 -1
  37. package/skills/qualia-report/SKILL.md +1 -1
  38. package/skills/qualia-research/SKILL.md +1 -1
  39. package/skills/qualia-review/SKILL.md +1 -1
  40. package/skills/qualia-road/SKILL.md +1 -1
  41. package/skills/qualia-scope/SKILL.md +123 -0
  42. package/skills/qualia-secure/SKILL.md +105 -0
  43. package/skills/qualia-test/SKILL.md +1 -1
  44. package/skills/qualia-verify/SKILL.md +1 -1
  45. package/skills/zoho-workflow/SKILL.md +1 -1
  46. package/tests/bin.test.sh +9 -9
  47. package/tests/install-smoke.test.sh +3 -3
  48. package/tests/lib.test.sh +17 -10
  49. package/tests/published-install-smoke.test.sh +3 -3
  50. package/tests/refs.test.sh +29 -22
  51. package/tests/runner.js +3 -3
  52. package/tests/state.test.sh +38 -7
  53. package/docs/archive/CHANGELOG-pre-v4.md +0 -855
  54. package/docs/archive/v4.0.0-review.md +0 -288
  55. package/docs/ecosystem-operating-model.md +0 -121
  56. package/docs/research/2026-04-21-command-quality-deep-research.md +0 -128
  57. package/docs/research/2026-04-21-industry-best-practices.md +0 -255
  58. package/docs/research/2026-05-11-deep-research.md +0 -189
  59. package/docs/reviews/matt-pocock-skills-analysis.md +0 -300
  60. package/docs/reviews/v4.1.0-audit.html +0 -1488
  61. package/docs/reviews/v4.1.0-audit.md +0 -263
  62. package/docs/reviews/v6.2.1-revival-audit.md +0 -53
  63. package/docs/reviews/v6.2.2-memory-erp-audit.md +0 -41
  64. package/docs/reviews/v6.2.3-erp-id-guard.md +0 -15
@@ -1,855 +0,0 @@
1
- # CHANGELOG (pre-v4)
2
-
3
- Archive of v2.x and v3.x releases. Active changelog lives in [../../CHANGELOG.md](../../CHANGELOG.md) (v4.0.0 onward).
4
-
5
- ## [3.7.0] — 2026-04-18
6
-
7
- Story-file plan format. Every phase plan task now carries inline rationale,
8
- acceptance criteria, explicit dependencies, and self-validation commands —
9
- so builders read plans as briefs and verifiers check against observable
10
- user behaviors, not just grep counts.
11
-
12
- ### Added
13
-
14
- - **Story-file plan format** — `templates/plan.md` rewritten. Each task
15
- block now mandates: `Wave`, `Files`, `Depends on` (explicit task refs
16
- or `none`, not blank), `Why` (one-sentence motivation), `Acceptance
17
- Criteria` (2-4 observable user behaviors), `Action`, `Validation` (1-3
18
- grep/curl/tsc self-check commands), `Context`. Optional `Persona`
19
- (security | architect | ux | frontend | backend | performance).
20
- - **Plan-summary dashboard** — new `node bin/qualia-ui.js plan-summary
21
- <path>` command renders the plan as a terminal dashboard: phase goal,
22
- waves, colored persona chips, dependency arrows, AC count, validation
23
- count per task. `/qualia-plan` calls it automatically after the plan
24
- is finalized.
25
- - **Verifier reads per-task Acceptance Criteria** — verifier now does a
26
- 3-layer check: phase-level Success Criteria + per-task AC + formal
27
- Verification Contracts. Catches "files exist but user flow doesn't
28
- work" cases that grep-only verification would miss.
29
- - **Builder reads rationale** — builder agent now reads `Why`, respects
30
- `Depends on` (refuses to start before deps commit), runs `Validation`
31
- commands before `git commit`.
32
- - **`ac_count` in validate-plan output** — `state.js validate-plan` now
33
- reports AC anchor count alongside `done_when_count` and `contract_count`.
34
-
35
- ### Changed
36
-
37
- - **`plan-checker` Rule 2** — expanded from 3 mandatory fields to the 7
38
- story-file fields. Task without a `Why` or with vague AC now fails
39
- validation.
40
- - **`plan-checker` Rule 3** — wave assignments now cross-check against
41
- `Depends on` lines (Wave 2+ with `Depends on: none` is a contradiction).
42
- - **`state.js` plan preconditions** — accepts either `**Done when:**`
43
- (legacy) or `**Acceptance Criteria:**` (new) as the per-task anchor,
44
- so in-flight projects with older plans don't break on upgrade.
45
-
46
- ### Backward compatibility
47
-
48
- Fully additive. Plans written before v3.7.0 (with `**Done when:**` only)
49
- continue to pass state.js precondition checks. New plans generated by
50
- the v3.7.0 planner use the story-file format with `**Acceptance
51
- Criteria:**`. No migration required.
52
-
53
- ## [3.6.0] — 2026-04-17
54
-
55
- P2 cleanup release. Schema reconciliation with the ERP, log retention,
56
- and remaining state-machine polish from the audit. Third release of the
57
- night, after v3.4.2 (P0 hotfix) and v3.5.0 (P1 hardening).
58
-
59
- ### Added
60
-
61
- - **`tracking.json` schema additions** — new fields:
62
- - `team_id`, `project_id` — stable identifiers for ERP dedupe
63
- (composite `(team_id, project_id)` is the canonical project key,
64
- surviving directory renames)
65
- - `git_remote` — lets the ERP correlate tracking with the source repo
66
- - `session_started_at`, `last_pushed_at` — distinct timestamps
67
- - `build_count`, `deploy_count` — lifetime counters
68
- - `submitted_by` — mirrored at the top level (was only in /qualia-report
69
- payloads)
70
- - `lifetime.last_closed_milestone` — sentinel for close-milestone
71
- idempotency (introduced in v3.4.2)
72
- - **Log retention.** Trace files in `~/.claude/.qualia-traces/` older than
73
- 30 days are pruned on ~1% of writes. Heavy users no longer accumulate
74
- unbounded MB/day.
75
- - 2 new tests covering schema additions and defensive lifetime hydrate.
76
- Suite is now 150 tests, all green.
77
-
78
- ### Fixed
79
-
80
- - **`polished` transition no longer mis-marks the roadmap.** Was setting
81
- the LAST roadmap row to status `verified` regardless of which phase the
82
- user polished. Now marks every passed phase as `polished`.
83
- - **`cmdInit` defensively hydrates partial lifetime objects.** If
84
- `prevLife.lifetime` was missing keys (older tracking.json format), the
85
- spread left `undefined`s that subsequent `+=` produced `NaN`. Defaults
86
- layer underneath the spread so missing keys are 0, not NaN.
87
-
88
- ### Changed
89
-
90
- - **`docs/erp-contract.md`** documents `gap_cycles` polymorphism (object
91
- in tracking.json, number in `/api/v1/reports` payload — receivers must
92
- accept both shapes) and adds the new v3.6+ fields to the request body
93
- example and required-fields table.
94
-
95
- ## [3.5.0] — 2026-04-17
96
-
97
- P1 hardening release. 9 hooks/scripts overhauled, false positives killed,
98
- false negatives caught, cross-platform robustness throughout. Companion to
99
- the v3.4.2 P0 hotfix shipped earlier today.
100
-
101
- ### Fixed
102
-
103
- - **`branch-guard.js` refspec bypass.** Hook checked the *current* branch,
104
- so EMPLOYEE could push `feature/x:main` from a feature branch and land on
105
- main. Hook now parses `tool_input.command` from the Claude Code stdin
106
- payload and rejects any refspec whose destination is `main` or `master`.
107
- Block messages also routed to stderr (Claude Code surfaces stderr in
108
- block reasons) and `shell: process.platform === "win32"` added to git
109
- spawn for Windows reliability.
110
- - **`migration-guard.js` false positives.** SQL comments (`-- …` lines and
111
- `/* … */` blocks) are now stripped before pattern matching, so
112
- commented-out `DROP TABLE` calls no longer block. File-path regex
113
- tightened from `migration|migrate|\.sql$` to
114
- `(^|/)migrations?/` OR `\.sql$` — `MigrationModal.tsx` and `migrations.md`
115
- no longer trigger scans. `CREATE TEMP TABLE` and partition tables exempt
116
- from the RLS requirement.
117
- - **`migration-guard.js` false negatives.** New blockers: `ALTER TABLE …
118
- DROP COLUMN`, `DROP DATABASE`, `DROP SCHEMA … CASCADE`, `UPDATE …` without
119
- WHERE, `GRANT … TO PUBLIC`. Edit-tool calls now scan `old_string +
120
- new_string + content` (was only new_string).
121
- - **`pre-deploy-gate.js` `service_role` scanner.** Tightened from literal
122
- substring match to `\bservice_role` regex with per-line exemptions for
123
- comments (`//`, `/*`, `*`), `process.env.SUPABASE_SERVICE_ROLE` reads,
124
- and explicit `eslint-disable` allowlists. Walk now excludes `dist/`,
125
- `out/`, `build/`, `coverage/`, `.next/`, `.vercel/`, `.turbo/` so
126
- post-build artifacts don't slow the gate or false-positive on minified
127
- output. Block messages routed to stderr.
128
- - **`auto-update.js` 24-hour blackout fixed.** Cache timestamp was written
129
- *before* the npm version fetch — failed fetches suppressed re-checks for
130
- 24h. Now written only after successful fetch.
131
- - **`auto-update.js` no longer corrupts running sessions.** OWNER branch
132
- used to spawn `npx qualia-framework@latest install` in the background,
133
- which rewrote `~/.claude/settings.json` mid-session. Both OWNER and
134
- EMPLOYEE now write the same notification file; user must explicitly run
135
- `npx qualia-framework update` to actually upgrade.
136
- - **`pre-compact.js` silent commit failures.** Auto-commit ran with
137
- `stdio: "ignore"` and could fail invisibly when user had pre-commit
138
- hooks or commit signing → STATE.md not persisted before context
139
- compaction → context loss. Commit now uses `--no-verify --no-gpg-sign
140
- --author="Qualia Framework <bot@qualia.solutions>"` so it can't be
141
- blocked by user hooks. Commit status traced for visibility.
142
- - **`statusline.js` 3-spawns-per-prompt.** Collapsed three separate `git`
143
- invocations into a single `git status -b --porcelain=v1` call. Saves
144
- ~300ms per cold prompt on Windows. Cache write is now atomic
145
- (`tmp + rename`) so concurrent prompts can't produce corrupt cache.
146
- - **`state.js` CRLF tolerance.** Every `^Field:\s*(.+)$/m` regex is now
147
- `(.+?)\r?$/m` so Windows editors saving STATE.md with CRLF don't leak
148
- `\r` into captured `phase_name`, `status`, `assigned_to`.
149
- - **`cli.js cmdMigrate` no longer adds duplicate hooks.** Old check used
150
- substring match against the absolute path; if home directory ever
151
- changed, the OLD path didn't match the NEW path and `migrate` appended a
152
- second entry. Now compares basenames, so `migrate` is idempotent
153
- regardless of path changes.
154
-
155
- ### Cleaned
156
-
157
- - **Skill agent path refs corrected.** `qualia-verify`, `qualia-build`
158
- used `@agents/<name>.md` (relative to project cwd, broken from
159
- `.planning/`). All skills now use `@~/.claude/agents/<name>.md`
160
- consistently.
161
- - **`qualia-quick` description gained trigger phrases** so the smart
162
- router actually fires it on natural-language requests.
163
- - **`qualia-map` skill uses `Agent(...)`** instead of legacy `Task(...)`,
164
- matching framework convention everywhere else.
165
- - **`qualia-idk` skill removed.** Fully redundant — `qualia` (the router)
166
- already lists "idk" as a trigger phrase.
167
- - **`templates/help.html` regenerated.** Now lists all 26 skills (was 17).
168
- Grouped: Road, Phase Depth, Quality, Quick Paths, Knowledge, Session,
169
- Navigation, Meta. Version pill bumped to v3.5.0.
170
-
171
- ### Added
172
-
173
- - **GitHub Actions CI workflow.** `.github/workflows/test.yml` runs
174
- `npm test` on Ubuntu + macOS + Windows × Node 18/20/22. Triggered on
175
- every push and PR. 5-minute timeout per job. Tests are no longer
176
- "local-only" — every commit is verified across the supported matrix.
177
- - 11 new tests covering refspec bypass (3), comment-stripped SQL,
178
- ALTER TABLE DROP COLUMN, DROP DATABASE, UPDATE-without-WHERE, GRANT TO
179
- PUBLIC, TEMP-table RLS exemption, MigrationModal.tsx bypass, CRLF
180
- STATE.md parsing. Suite is now 148 tests, all green.
181
-
182
- ## [3.4.2] — 2026-04-17
183
-
184
- P0 hotfix release. Closes 7 critical bugs surfaced by a deep audit.
185
-
186
- ### Fixed
187
-
188
- - **`pre-push.js` stamp now actually reaches the remote.** Previously the hook
189
- wrote `last_commit` + `last_updated` to `tracking.json` and `git add`-ed it,
190
- but the push itself ran on a snapshot prepared before the hook — so the
191
- stamp never made it onto the wire. The ERP, which reads `tracking.json`
192
- straight from git, saw stale data forever. Hook now creates a real bot
193
- commit (`--no-verify --no-gpg-sign --author="Qualia Framework <bot@…>"`)
194
- so the stamp ships with the push that triggered it.
195
- - **`session-start.js` no longer silently fails on first run.** `TEAL`,
196
- `RESET`, `DIM` ANSI constants were referenced in the no-project welcome
197
- branch but never defined in the file (only in `bin/install.js`). The outer
198
- `try/catch` swallowed the `ReferenceError`, so new users saw a blank
199
- session. Constants now defined at top of file.
200
- - **`/qualia-optimize` works on fresh installs.** Skill spawned
201
- `frontend-agent`, `backend-agent`, `performance-oracle`,
202
- `architecture-strategist` — none of which ship with the framework.
203
- Rewritten to use `general-purpose` with the same specialized prompts.
204
- - **`.qualia-config.json` is now mode 0600.** Previously written with default
205
- 0644, so any local user could edit `role` to `OWNER` and bypass
206
- `branch-guard`. The role bit is now access-restricted.
207
- - **Default ERP key no longer shipped.** Installs no longer write the
208
- hardcoded literal `"qualia-claude-2026"`. New sources, in order:
209
- `$QUALIA_ERP_KEY` env var → existing `~/.claude/.erp-api-key` →
210
- ERP disabled until configured. Also chmods existing key file to 0600.
211
- - **Atomic file writes for `STATE.md` and `tracking.json`.** Previous
212
- direct `writeFileSync` could leave half-written files on SIGINT, OOM, or
213
- AV scanner interruption — the next `cmdCheck` would return `NO_PROJECT`.
214
- All writes now go through `tmp + rename` (atomic on POSIX, near-atomic
215
- on NTFS). Added `.planning/.state.lock` exclusive lockfile so two
216
- concurrent state.js mutations can't race.
217
- - **`close-milestone` is now idempotent.** Sentinel `last_closed_milestone`
218
- prevents re-running from double-counting `milestones_completed` and
219
- `total_phases`. Pass `--force` to deliberately re-close.
220
- - **`backfill-lifetime` no longer destroys history.** Now uses `Math.max`
221
- instead of overwrite — recomputed values from the current milestone's
222
- STATE.md cannot reduce lifetime counters that were already accumulated
223
- by `close-milestone`.
224
-
225
- ### Added
226
-
227
- - **`init` refuses to clobber an existing project.** `state.js init` against
228
- an active `.planning/STATE.md` now errors with `ALREADY_INITIALIZED`.
229
- Pass `--force` to re-initialize (lifetime is still preserved).
230
- - **`_trace` signature normalized to 3 args** — `_trace(event, result, data)`.
231
- Old call sites passing the result string in the data slot produced
232
- malformed JSONL. Telemetry is now well-formed.
233
- - 8 new tests covering the fixes — pre-push behavioral mutation +
234
- bot-commit, init guard, close-milestone idempotency, backfill Math.max,
235
- atomic write cleanup, lock release. Suite is now 137 tests, all green.
236
-
237
- ### Migration
238
-
239
- - Existing installs will pick up the fixes via auto-update or
240
- `npx qualia-framework@latest install`.
241
- - The `qualia-claude-2026` shared key is grandfathered server-side for 30
242
- days. After that, every employee needs a per-user token.
243
- - `init --force` is required to re-initialize an existing project (was
244
- silent before — a footgun).
245
-
246
- ## [3.4.1] — 2026-04-14
247
-
248
- ### Added
249
-
250
- - **`state.js backfill-lifetime` command** — reconstructs lifetime counters from
251
- STATE.md roadmap + plan files for existing projects upgrading from pre-v3.4.0.
252
- Idempotent and safe to run multiple times. Use after updating to sync historical data.
253
- - 2 new tests for backfill (53 state tests, 129 total).
254
-
255
- ## [3.4.0] — 2026-04-14
256
-
257
- ERP tracking was systematically wrong — milestone transitions destroyed all
258
- historical data, phase advances reset task counts, quick/task work was never
259
- counted. This release adds lifetime counters that survive every reset.
260
-
261
- ### Added
262
-
263
- - **`lifetime` object in tracking.json** — `tasks_completed`, `phases_completed`,
264
- `milestones_completed`, `total_phases`. These counters accumulate and NEVER
265
- reset on init or phase advance. The ERP can now see the real total.
266
- - **`milestone` field in tracking.json** — current milestone number (1-indexed),
267
- survives across `state.js init` calls.
268
- - **`state.js close-milestone` command** — snapshots the closing milestone's data
269
- into lifetime before init resets current-phase fields.
270
- - **`--tasks-done N` on note/activity transitions** — `/qualia-quick` and
271
- `/qualia-task` now increment `lifetime.tasks_completed` by 1 per invocation.
272
- - **`cmdCheck()` includes milestone + lifetime** in JSON output for ERP/statusline.
273
- - **tracking.json archived during milestone closeout** — previously only STATE.md
274
- and ROADMAP.md were archived.
275
- - 12 new tests covering lifetime preservation, cross-phase accumulation,
276
- close-milestone, backward compat. Suite is now 51 state tests, 129 total.
277
-
278
- ### Fixed
279
-
280
- - **`state.js init` no longer destroys historical data.** It now reads the existing
281
- tracking.json and preserves `milestone` and `lifetime` fields. Current-phase
282
- fields still reset as expected.
283
- - **`verified(pass)` accumulates before resetting.** Task counts are added to
284
- `lifetime.tasks_completed` and `lifetime.phases_completed` BEFORE `tasks_done`
285
- resets to 0. The last phase of a milestone also counts (accumulation moved
286
- outside the auto-advance conditional).
287
- - **`/qualia-report` endpoint fixed.** Was posting multipart to
288
- `/api/claude/report-upload`; now sends structured JSON to `/api/v1/reports`
289
- matching the ERP contract, including milestone + lifetime data.
290
- - Test 38 updated: `--force` bypasses `INVALID_PLAN` (matches v3.3.2 behavior).
291
-
292
- ### Changed
293
-
294
- - `templates/tracking.json` includes `milestone` and `lifetime` fields.
295
- - `docs/erp-contract.md` documents the new fields in request/response schemas.
296
- - `skills/qualia-milestone/SKILL.md` calls `close-milestone` before `init`.
297
-
298
- ## [3.3.2] — 2026-04-13
299
-
300
- Patch release. `state.js transition --force` now bypasses `INVALID_PLAN`
301
- errors so retroactive bookkeeping works.
302
-
303
- ### Fixed
304
-
305
- - **`state.js transition --to planned --force` now unblocks retroactive
306
- documentation.** When a phase is built without `/qualia-plan` (e.g. an
307
- employee shipped the work before the framework was wired up), the
308
- retroactive plan file is documentation, not a runnable plan — so it
309
- often lacks `**Done when:**` markers. Previously `--force` only
310
- bypassed status-ordering errors and still hard-failed on
311
- `INVALID_PLAN`, leaving STATE.md stuck behind reality. `--force` now
312
- also bypasses `INVALID_PLAN`. It still refuses `MISSING_FILE` /
313
- `MISSING_ARG` — those would point the state machine at nothing.
314
- - New test: `--force bypasses INVALID_PLAN (retroactive bookkeeping)`,
315
- plus a sanity test that `--force` still rejects `MISSING_FILE`.
316
- Suite is now 129 tests, all green.
317
-
318
- ## [3.3.1] — 2026-04-13
319
-
320
- Patch release. Fixes broken `@path` references inside the v3.3.0 deep-flow
321
- skills that were caught by post-release verification. Subagent spawning
322
- itself was unaffected (resolves via frontmatter `name:`), but the literal
323
- `Read your role: @~/.claude/agents/qualia-{name}.md` instruction passed
324
- into the spawned agent's prompt would fail to resolve the file because
325
- agents ship without the `qualia-` prefix (e.g. `researcher.md`, not
326
- `qualia-researcher.md`).
327
-
328
- ### Fixed
329
-
330
- - `skills/qualia-new/SKILL.md` — 6 refs rewritten (4× researcher,
331
- 1× research-synthesizer, 1× roadmapper).
332
- - `skills/qualia-plan/SKILL.md` — 3 refs rewritten (2× planner,
333
- 1× plan-checker).
334
- - `skills/qualia-research/SKILL.md` — 1 researcher ref rewritten.
335
- - `skills/qualia-milestone/SKILL.md` — 1 roadmapper ref rewritten.
336
- - `skills/qualia-optimize/SKILL.md` — removed dead call to
337
- `~/.claude/qualia-framework/bin/qualia-tools.js` (never shipped in v3.x);
338
- replaced with a plain `git add && git commit`.
339
-
340
- All 128 tests still green.
341
-
342
- ## [3.3.0] — 2026-04-13
343
-
344
- Deep flow release. Adds the comprehensive v2.6-era capabilities (research, plan-check,
345
- requirements traceability, roadmap generation) back into the v3 architecture — ~2k
346
- lines total instead of the v2.6 55k bloat. Same command surface for end users. No
347
- migration needed — existing projects keep working.
348
-
349
- ### Added
350
-
351
- - **`/qualia-new` comprehensive flow** — now runs deep questioning → 4 parallel
352
- research agents → requirements with REQ-IDs → ROADMAP.md with phases → approval
353
- gate. The 323-line wizard is replaced by a structured pipeline. Still ships with
354
- `--quick` flag for trivial projects.
355
- - **`/qualia-plan` plan-checker loop** — planner output is now validated by a
356
- plan-checker agent against 7 rules (task specificity, wave assignment, contract
357
- coverage, etc.). Up to 3 revision cycles. `--skip-check` flag available for
358
- emergencies.
359
- - **4 new skills:**
360
- - `/qualia-discuss {N}` — capture locked decisions before planning a phase
361
- - `/qualia-research {N}` — deep research for a niche phase (Context7/WebFetch/WebSearch)
362
- - `/qualia-map` — brownfield codebase mapping (4 parallel scanners)
363
- - `/qualia-milestone` — close current milestone, open next
364
- - **4 new agents:**
365
- - `qualia-researcher` — single researcher agent invoked 4× in parallel with a
366
- `<dimension>` arg (stack/features/architecture/pitfalls). No more 4 duplicate
367
- agent files.
368
- - `qualia-research-synthesizer` — merges 4 research outputs into SUMMARY.md
369
- - `qualia-roadmapper` — produces REQUIREMENTS.md + ROADMAP.md from PROJECT.md
370
- + research synthesis
371
- - `qualia-plan-checker` — validates plans against 7 rules
372
- - **New templates** in `~/.claude/qualia-templates/`:
373
- - `requirements.md` — REQ-ID traceability format
374
- - `roadmap.md` — phase structure with REQ mapping
375
- - `phase-context.md` — output shape for `/qualia-discuss`
376
- - `research-project/STACK.md, FEATURES.md, ARCHITECTURE.md, PITFALLS.md, SUMMARY.md`
377
- - `projects/website.md, ai-agent.md, voice-agent.md, mobile-app.md` — per-type
378
- phase templates
379
- - **New references directory** `~/.claude/qualia-references/`:
380
- - `questioning.md` — the methodology guide loaded by `/qualia-new` during the
381
- questioning stage
382
- - **`install.js` recursive template copy** — templates/ now supports nested
383
- directories (projects/, research-project/) via a new `copyTree` helper.
384
- - **`install.js` legacy cleanup** — automatically removes orphaned v2.6 install
385
- cruft from `~/.claude/qualia-framework/` and any broken `~/.claude/agents/qualia-*.md`
386
- files that reference the old `/home/qualia/` paths. Runs on upgrade.
387
-
388
- ### Changed
389
-
390
- - **`/qualia-new` replaces the 323-line inline wizard** with a structured 14-step
391
- process that delegates research/requirements/roadmap generation to specialized
392
- agents. Still feels the same to the user — same banner, same question style,
393
- same terminal output — but the backing logic is comprehensive instead of flat.
394
- - **`/qualia-plan` adds the plan-checker revision loop** by default. Existing
395
- behavior (single planner call) is available via `--skip-check`.
396
- - **ROADMAP.md is now first-class.** v3.0 → v3.2.1 didn't create ROADMAP.md; this
397
- release does. The ERP sync parser can now read structured roadmap data instead
398
- of falling back to STATE.md table parsing.
399
-
400
- ### Compatibility
401
-
402
- - **Existing v3.2.1 projects:** continue to work unchanged. The new features are
403
- only triggered for newly-initialized projects.
404
- - **v3.2.1 skill flow:** same command names, same aesthetics, same statusline.
405
- - **Statusline:** unchanged (`state.js` still writes the same `phase`,
406
- `total_phases`, `status` fields to `tracking.json`).
407
-
408
- ### Philosophy
409
-
410
- The v2.6 framework was 55k lines because it duplicated bash boilerplate across
411
- 30 workflow files and built mega-agents (43KB planner alone). This release ports
412
- the *concepts* (research, plan-check, requirements, roadmap) into the v3
413
- architecture (small focused agents, inline skills, single state tool). Total
414
- added: ~2k lines. Philosophy preserved: skills orchestrate, agents focus.
415
-
416
- ## [3.2.1] — 2026-04-12
417
-
418
- Patch release. Republishes the v3.2.0 feature set on top of the committed
419
- main branch. The original v3.2.0 was published from an uncommitted working
420
- tree earlier in the day and then rebased onto `origin/main` during cleanup;
421
- this release captures the post-rebase state — correct `repository.url`,
422
- fixed test assertions (hook count 8 → 7), and minor comment tweaks.
423
-
424
- No behavior changes from v3.2.0 for end users.
425
-
426
- ## [3.2.0] — 2026-04-12
427
-
428
- Sticky update notifications for employees, env access unblocked for the whole
429
- team, new `/qualia-optimize` deep optimization skill.
430
-
431
- ### Added
432
- - **Sticky update banner** for EMPLOYEE installs. When `auto-update.js` detects
433
- a newer version on npm, it writes `.qualia-update-available.json` instead of
434
- auto-installing. `session-start.js` renders a visible banner every session
435
- until the employee runs `npx qualia-framework@latest install`. OWNER still
436
- auto-updates silently — never sees the banner.
437
- - **`qualia-optimize`** skill — deep optimization pass that reads `.planning/`
438
- AND the codebase together. Spawns parallel specialists (frontend, backend,
439
- performance, architecture). Modes: `full`, `--perf`, `--ui`, `--backend`,
440
- `--alignment`, `--fix`.
441
- - `bin/qualia-ui.js` — new `update <current> <latest>` command renders the
442
- sticky banner.
443
- - `bin/install.js` — new `DEPRECATED_HOOKS` cleanup list proactively removes
444
- retired hooks from existing installs during upgrade.
445
-
446
- ### Changed
447
- - `hooks/auto-update.js` now branches on `cfg.role`. OWNER gets the silent
448
- background install (unchanged). EMPLOYEE writes the sticky notification so
449
- they can no longer ignore updates by accident.
450
-
451
- ### Removed
452
- - **`hooks/block-env-edit.js`** — team decision. Claude now has full read/write
453
- on `.env*` files across the team. `install.js` no longer wires this hook and
454
- `DEPRECATED_HOOKS` purges it from existing installs on upgrade.
455
- - Employee role descriptions updated — no longer claim "cannot edit .env files".
456
-
457
- ## [3.1.0] — 2026-04-12
458
-
459
- Package rename and gap closure release. The package is now `qualia-framework`
460
- (dropping the `-v2` suffix). Adds settings migration, skill outcome scoring,
461
- analytics, cross-platform tests, and fills all v3.0.0 gaps.
462
-
463
- ### Changed
464
- - **Package renamed** `qualia-framework-v2` → `qualia-framework`. All CLI
465
- commands are now `qualia-framework install`, `qualia-framework update`, etc.
466
- The old name continues to work via npm alias.
467
-
468
- ### Added
469
- - **`qualia-framework migrate`** — upgrades v2 settings to v3 without
470
- reinstalling. Wires missing hooks, env vars, status line, and MCP config.
471
- - **`qualia-framework analytics`** — aggregates hook telemetry and shows
472
- first-pass verification rate, gap cycles, per-hook breakdown.
473
- - **Skill outcome scoring** — state transitions now write trace entries to
474
- `~/.claude/.qualia-traces/` for plan→outcome correlation tracking.
475
- - **Verification contract format validation** — `validate-plan` now checks
476
- contract structure (check-type, command, expected, fail-if fields) with
477
- warnings for invalid types or missing fields. Backward compatible.
478
- - **next-devtools-mcp integration** — install and migrate now configure
479
- `next-devtools-mcp@0.3.10` as an MCP server for runtime error visibility
480
- in Next.js 16+ projects.
481
- - **Cross-platform Node.js test runner** — 134 tests using `node:test`,
482
- replacing bash-only test scripts. Works on Fedora, EndeavourOS, Windows.
483
- - **ERP API contract documentation** — `docs/erp-contract.md` specifying
484
- endpoints, auth, request/response shapes, rate limits, and security.
485
-
486
- ### Fixed
487
- - Contract validation regex in `validate-plan` — section extraction was
488
- always returning empty due to `$` matching end-of-line in multiline mode.
489
-
490
- ## [3.0.0] — 2026-04-11
491
-
492
- Harness engineering release. Applies lessons from Anthropic's "Harness Design
493
- for Long-Running Apps" article. The verifier becomes a scored evaluator, the
494
- planner generates verification contracts, guards get smarter, and the harness
495
- gains observability.
496
-
497
- ### Added
498
- - **Scored evaluator rubric** — verifier now scores on 4 dimensions
499
- (Correctness, Completeness, Wiring, Quality), each 1-5. Hard threshold:
500
- any score < 3 = FAIL. Two few-shot calibration examples included.
501
- - **Verification contracts** — planner generates testable contract entries
502
- (`file-exists`, `grep-match`, `command-exit`, `behavioral`) per task.
503
- Verifier executes contracts before ad-hoc verification.
504
- - **Plan content validation** — `state.js` now rejects plans with no task
505
- headers or missing "Done when" criteria. New `validate-plan` subcommand.
506
- - **Configurable gap cycle limit** — default remains 2; override via
507
- `tracking.json.gap_cycle_limit` or `PROJECT.md gap_cycle_limit:` field.
508
- - **Pre-deploy gate: Server Component detection** — `route.ts`,
509
- `middleware.ts`, `app/api/` paths, and `"use server"` directive files are
510
- now exempt from the service_role leak scan.
511
- - **Dynamic team management** — `qualia-framework team list|add|remove`
512
- CLI commands. Team dict externalized to `~/.claude/.qualia-team.json`;
513
- falls back to embedded defaults.
514
- - **ERP decoupling** — ERP config (`enabled`, `url`, `api_key_file`) stored
515
- in `.qualia-config.json`. `/qualia-report` skips upload when disabled.
516
- - **Hook telemetry** — all 8 hooks write JSONL traces to
517
- `~/.claude/.qualia-traces/YYYY-MM-DD.jsonl`. New `traces` CLI command
518
- shows recent hook activity.
519
- - **Build recovery tags** — `/qualia-build` creates `pre-build-phase-{N}`
520
- git tag before execution. `--force` flag on `state.js transition` enables
521
- state recovery after failed builds.
522
- - **Knowledge base dedup** — `/qualia-learn` checks for existing entries
523
- before appending. Entries now include UUID and ISO timestamp.
524
- - New tests for deploy gate, state machine, and guard hooks.
525
- Total: 152 tests passing (50 hooks + 40 state + 48 bin + 14 statusline).
526
-
527
- ### Fixed
528
- - **block-env-edit + branch-guard hooks not wired** — both hooks were
529
- copied during install but never registered in `settings.json`. Employees
530
- could push to main and edit `.env` files unchecked. Now registered in
531
- `PreToolUse` hooks.
532
- - **Auto-update background script broken** — detached child script used
533
- `return` at top level in `node -e`, which is a SyntaxError. The entire
534
- update check silently failed every time. Replaced with `process.exit(0)`.
535
- - **branch-guard exit code** — used `exit(1)` (hook error) instead of
536
- `exit(2)` (clean block). Now consistent with block-env-edit and
537
- migration-guard.
538
- - Install summary hardcoded "Hooks: 6" despite installing 8. Fixed.
539
- - Duplicate `statusline.js` copy in installer removed.
540
-
541
- ### Changed
542
- - `agents/verifier.md` — complete rewrite of the Scoring section into a
543
- structured 4-criterion rubric with calibration examples and contract
544
- verification workflow.
545
- - `agents/planner.md` — new Verification Contracts section with contract
546
- format, types, and rules.
547
- - `templates/plan.md` — includes Verification Contract section.
548
- - `bin/state.js` — `getGapCycleLimit()`, `cmdValidatePlan()`, `--force`
549
- flag, `gap_cycle_limit` in check output, plan content validation in
550
- preconditions.
551
- - `bin/install.js` — `CLAUDE_DIR`/`FRAMEWORK_DIR` moved above `loadTeam()`;
552
- team dict externalized via `loadTeam()`; ERP config in `.qualia-config.json`.
553
- - `bin/cli.js` — `team`, `traces` commands; uninstall cleans team file and
554
- traces dir; updated help text.
555
- - `bin/qualia-ui.js` — gap cycle display uses dynamic limit from state.
556
- - `hooks/pre-deploy-gate.js` — 4 new server-side file exemptions.
557
- - `skills/qualia-verify/SKILL.md` — spawn prompt references contracts.
558
- - `skills/qualia-report/SKILL.md` — config-driven ERP upload.
559
- - `skills/qualia-build/SKILL.md` — recovery point step before execution.
560
- - `skills/qualia-learn/SKILL.md` — dedup check, UUID+timestamp format.
561
-
562
- ## [2.10.0] — 2026-04-11
563
-
564
- Modern icon system, statusline context indicators.
565
-
566
- ### Added
567
- - Statusline now shows memory count (`⊙`), hooks count (`⚙`), and skills count (`✦`) on the top bar.
568
- - Each Qualia action has a unique, meaningful glyph: `⬢` router, `✦` new, `▣` plan, `⚙` build,
569
- `◎` verify, `✧` polish, `△` ship, `⇢` handoff, `▤` report, `⊘` debug, `⊙` learn,
570
- `⏸` pause, `▶` resume, `⊛` review, `◈` design, `⚡` quick, `▪` task, `⟐` gaps.
571
-
572
- ### Changed
573
- - Replaced all `◆` diamond glyphs with `⬢` hexagon (Qualia brand mark) across all files:
574
- qualia-ui.js, statusline.js, install.js, cli.js, hooks, and skill documentation.
575
- - Updated utility glyphs: spawn (`⬡`), wave (`»`), next (`⟶`), banner separator (`▸`).
576
- - Spinner tips and hook status messages now use `⬢` prefix.
577
-
578
- ## [2.9.0] — 2026-04-11
579
-
580
- Housekeeping, test coverage, and release hygiene.
581
-
582
- ### Added
583
- - GitHub Actions CI workflow — runs the full test suite on every push and PR.
584
- - Behavioral test suites for `bin/cli.js`, `bin/install.js`, `bin/qualia-ui.js`,
585
- `bin/statusline.js`, and the `pre-deploy-gate` / `branch-guard` hooks.
586
- - `CHANGELOG.md` — this file. Backfilled from commit history.
587
- - `npx qualia-framework uninstall` — clean, surgical removal of the framework
588
- from `~/.claude/`. Supports `--yes` / `-y` for scripted use. Preserves
589
- user-customized `CLAUDE.md` and non-Qualia entries in `settings.json`.
590
- Optionally preserves the knowledge base (default Yes).
591
- - Seeded knowledge base content — `learned-patterns.md` and `common-fixes.md`
592
- now ship with real entries harvested from v2.7–v2.8 work, so new installs
593
- have something to learn from immediately instead of empty stubs.
594
-
595
- ### Changed
596
- - `bin/cli.js` version check: `execSync("npm view ... 2>/dev/null")` → `spawnSync`
597
- with argv. Removes the last bash-only redirect from the CLI, matching the
598
- cross-platform pattern established in v2.8.0.
599
- - `STATE.md` parser hardened against edge cases (missing sections, malformed
600
- phase headers, non-ASCII phase names).
601
- - `README.md` — adds a Changelog section and documents the `uninstall` command.
602
-
603
- ## [2.8.1] — 2026-04-10
604
-
605
- Small patch release. Dogfood-driven: caught while installing v2.8.0 on a real
606
- machine immediately after publishing — typing `QS-FAWZI-O1` (letter O) instead
607
- of `QS-FAWZI-01` (digit zero) was rejected by the exact-match TEAM lookup.
608
-
609
- ### Added
610
- - `resolveTeamCode(input)` helper in `bin/install.js`. Normalizes case, trims
611
- whitespace, and replaces letter `O` → digit `0` in the numeric suffix only
612
- (after the last dash).
613
- - Invalid-code error message now echoes the code the user typed and adds a tip
614
- about the `O` vs `0` convention.
615
-
616
- ### Fixed
617
- - Install codes with letter `O` in the numeric suffix (`QS-FAWZI-O1`) are now
618
- tolerated and normalized to the canonical form.
619
- - `package.json` `repository.url` and `homepage` corrected from the
620
- hyphenated `qualia-solutions` owner to the real CamelCase `Qualiasolutions`
621
- GitHub org. npm had been silently auto-normalizing on publish but the
622
- metadata was still wrong.
623
- - Critical constraint: the O→0 normalization only touches the segment after
624
- the last dash, so `QS-MOAYAD-03` (real `O` in the name) is preserved.
625
- Verified against 13 test cases including the adversarial `qs-moayad-O3`.
626
-
627
- ## [2.8.0] — 2026-04-10
628
-
629
- Cross-platform hardening, real test coverage for the state machine, and a
630
- pure-Node status line. Closes 6 audit findings in one pass. Windows, macOS,
631
- and Linux all get a more honest, more tested, more portable framework.
632
-
633
- ### Added
634
- - `bin/statusline.js` — pure Node status line (~200 lines, zero deps). Same
635
- teal palette and 2-line layout as the previous bash version. Uses
636
- `os.tmpdir()` with a per-user cache filename instead of hardcoded `/tmp`.
637
- - `tests/state.test.sh` — 22 behavioral tests covering `cmdInit`, `cmdCheck`,
638
- every `VALID_FROM` transition, every precondition failure mode
639
- (`PRECONDITION_FAILED`, `MISSING_FILE`, `MISSING_ARG`, `INVALID_STATUS`),
640
- the gap-cycle circuit breaker (1 → 2 → blocked → reset on pass), and
641
- special note/activity transitions.
642
- - `package.json` `test` script now runs both the hooks and state suites.
643
- Total: 56 tests (34 hooks + 22 state), all passing.
644
-
645
- ### Changed
646
- - `bin/qualia-ui.js` `readState`: `execSync` shell string → `spawnSync` argv.
647
- Fixes the Windows banner when the username has spaces and removes the
648
- bash-only `2>/dev/null` redirect.
649
- - `bin/cli.js` `cmdUpdate`: replaced bash `<<<` here-string with `spawnSync`
650
- + `input:`. Manual `npx qualia-framework update` now works on Windows
651
- and on Debian/Ubuntu (where `/bin/sh` is `dash`, which also lacks `<<<`).
652
- - `skills/qualia-skill-new/SKILL.md` — removed 5 hardcoded
653
- `/home/qualia/Projects/...` paths in favor of `${FRAMEWORK_DIR}` detection
654
- (env var → git origin check → ask user). The skill no longer violates its
655
- own anti-patterns section.
656
- - `bin/install.js` wires the status line as `node ~/.claude/bin/statusline.js`
657
- instead of shelling out to bash. Scripts count updated 2 → 3 in the
658
- install summary.
659
- - README truthfulness pass: "3 rules" → "4 rules"; "auto-loaded by skills"
660
- → "loaded by /qualia-plan, /qualia-debug, /qualia-new" (only those skills
661
- actually cat the knowledge files); "No Git Bash, no WSL, no bash dependency"
662
- claim rescoped to be accurate (hooks and status line are pure Node; skills
663
- run through Claude Code's own Bash tool); "Production-Grade Hooks" bullet
664
- now says "All 8 hooks" instead of leaving the count ambiguous.
665
-
666
- ### Fixed
667
- - Windows session-start banner now shows phase/status even when the user's
668
- path contains spaces.
669
- - Manual `update` command no longer fails silently on Windows or Debian/Ubuntu.
670
- - The `qualia-skill-new` skill no longer embeds developer-specific absolute
671
- paths into generated skills.
672
-
673
- ### Removed
674
- - `bin/statusline.sh` — replaced by `bin/statusline.js`. "Every hook and the
675
- status line are pure Node.js" is now a claim the framework actually keeps.
676
- - `SubagentStart` echo hook from `install.js` — cosmetic-only, and it shipped
677
- broken output on Windows cmd.exe due to literal single quotes.
678
- - Undocumented `settings.effortLevel = "high"` no-op from `install.js`.
679
-
680
- ## [2.7.0] — 2026-04-10
681
-
682
- Every hook is now pure Node.js with zero shell dependencies. Works identically
683
- on Windows 10/11, macOS, and Linux. The only runtime requirement is Node.js
684
- 18+, which was already required for `state.js`, `qualia-ui.js`, and the
685
- installer itself. Motivation: the previous `.sh` hooks required bash in PATH,
686
- which on Windows means Git Bash — an extra install most team members don't
687
- have. Windows team members had been running the framework with silently
688
- broken hooks for weeks.
689
-
690
- ### Added
691
- - 8 pure-Node hooks: `session-start.js`, `auto-update.js`, `branch-guard.js`,
692
- `block-env-edit.js`, `migration-guard.js`, `pre-push.js`, `pre-compact.js`,
693
- `pre-deploy-gate.js`.
694
- - `tests/hooks.test.sh` now exercises `.js` hooks via stdin-piped JSON input,
695
- including a Windows-path test case (`C:\project\.env.local` should block).
696
- - 34/34 hook tests passing (up from 21).
697
-
698
- ### Changed
699
- - `install.js` writes hook commands as `node "<absolute-path>"` in
700
- `settings.json`, avoiding any bash/Git Bash requirement on Windows.
701
- - `install.js` deletes orphaned `.sh` files from `~/.claude/hooks/` before
702
- copying `.js` hooks (clean upgrade path for existing v2.5/v2.6 installs).
703
- - `chmod 755` on `.js` files (no-op on Windows, harmless).
704
- - `block-env-edit.js` normalizes Windows backslashes in file paths.
705
- - `pre-deploy-gate.js` uses a Node directory walker — no `grep -r`, no `find`.
706
-
707
- ### Fixed
708
- - Relative `HOOKS_DIR` bug that broke tests after `cd` into subshells.
709
-
710
- ### Removed
711
- - All 8 `.sh` hook files. Replaced 1:1 with `.js` equivalents.
712
-
713
- ## [2.6.1] — 2026-04-09
714
-
715
- ### Fixed
716
- - `session-start.js` hook never exits with a non-zero code. Previously, a
717
- transient failure in the banner renderer could surface as a hard error on
718
- session start, which felt broken even though nothing was actually wrong.
719
-
720
- ## [2.6.0] — 2026-04-09
721
-
722
- ### Added
723
- - `qa-browser` agent for browser-based verification.
724
- - `qualia-skill-new` skill — authoring tool for new skills and agents.
725
- - `bin/qualia-ui.js` cosmetics library — consistent banners across every
726
- skill with a shared teal palette and layout.
727
- - Memory activation: framework now participates in Claude Code's memory
728
- system instead of opting out.
729
-
730
- ### Fixed
731
- - Deploy gate false positives reduced.
732
-
733
- ## [2.5.0] — 2026-04-08
734
-
735
- ### Added
736
- - `auto-update.js` hook — daily silent update in a detached subprocess so
737
- teams stay on the current version without manual `update` calls.
738
- - Design best practices baked into the entire build pipeline (planner,
739
- builder, verifier, and the design rules).
740
-
741
- ### Changed
742
- - Quality gates are now role-aware: OWNER bypasses env/branch/sudo
743
- restrictions; EMPLOYEE is held to the original rules.
744
-
745
- ### Fixed
746
- - `/qualia-report` ERP upload path and API key setup flow in the installer.
747
-
748
- ## [2.4.0] — 2026-04-08
749
-
750
- ### Added
751
- - `version` and `update` CLI commands (`npx qualia-framework version`,
752
- `npx qualia-framework update`).
753
- - Knowledge system: `~/.claude/knowledge/` with `learned-patterns.md`,
754
- `common-fixes.md`, `client-prefs.md`.
755
- - `/qualia-learn` skill for capturing patterns, fixes, and client prefs to
756
- the knowledge base.
757
-
758
- ## [2.3.0] — 2026-04-08
759
-
760
- ### Added
761
- - `bin/state.js` state machine — validates preconditions, updates `STATE.md`
762
- and `tracking.json` atomically, tracks gap-closure cycles.
763
- - Smart router (`/qualia`) that reads project state and tells you the exact
764
- next command.
765
- - `/qualia-idk` as an alias for the smart router.
766
-
767
- ### Changed
768
- - All 10 skills replaced manual `STATE.md` / `tracking.json` updates with
769
- `state.js` calls.
770
- - `/qualia-report` rewritten to drop DOCX generation and raw `curl` usage.
771
-
772
- ### Fixed
773
- - Report generation pipeline.
774
-
775
- ## [2.2.0] — 2026-04-08
776
-
777
- ### Added
778
- - Ports of 6 skills from v1: `/qualia-idk`, `/qualia-design`, `/qualia-debug`,
779
- `/qualia-review`, `/qualia-pause`, `/qualia-resume`.
780
- - `pre-push` hook rewritten to Node.js.
781
- - `state.js` install step added to the installer.
782
- - `gap_cycles` counter added to the `tracking.json` template.
783
-
784
- ## [2.1.2] — 2026-04-08
785
-
786
- ### Added
787
- - Install codes for Rama and Sally (team expansion).
788
-
789
- ## [2.1.1] — 2026-04-07
790
-
791
- Safeguards release, incorporating lessons from the v1 code review.
792
-
793
- ### Added
794
- - Task validation at plan-time.
795
- - Stub detection in the verifier (flags `// TODO` and placeholder-only files).
796
- - Scope discipline checks.
797
- - Explicit deviation criteria.
798
- - Routing clarity improvements in `/qualia`.
799
- - Gap-closure documentation.
800
- - Hook tests (first pass).
801
-
802
- ## [2.1.0] — 2026-04-07
803
-
804
- ### Added
805
- - Full agent wiring: planner, builder, verifier — each in an isolated
806
- subagent context.
807
- - Full hook system (first production-grade pass).
808
- - Install codes and role-based access control (OWNER vs EMPLOYEE).
809
-
810
- ### Changed
811
- - README rewritten with architecture rationale and accurate counts.
812
-
813
- ## [2.0.0] — 2026-04-07
814
-
815
- Initial v2 release. Framework rewrite with agent wiring, full hook system,
816
- and install codes.
817
-
818
- ### Added
819
- - Initial `qualia-framework` repo with full hook system and agent wiring.
820
- - Core skills, agents, hooks, rules, and templates.
821
- - `bin/install.js` and `bin/cli.js` installer / CLI.
822
-
823
- [Unreleased]: https://github.com/Qualiasolutions/qualia-framework/compare/v4.0.3...HEAD
824
- [4.0.3]: https://github.com/Qualiasolutions/qualia-framework/compare/v4.0.2...v4.0.3
825
- [4.0.2]: https://github.com/Qualiasolutions/qualia-framework/compare/v4.0.1...v4.0.2
826
- [4.0.1]: https://github.com/Qualiasolutions/qualia-framework/compare/v4.0.0...v4.0.1
827
- [4.0.0]: https://github.com/Qualiasolutions/qualia-framework/compare/v3.7.0...v4.0.0
828
- [3.7.0]: https://github.com/Qualiasolutions/qualia-framework/compare/v3.6.0...v3.7.0
829
- [3.6.0]: https://github.com/Qualiasolutions/qualia-framework/compare/v3.5.0...v3.6.0
830
- [3.5.0]: https://github.com/Qualiasolutions/qualia-framework/compare/v3.4.2...v3.5.0
831
- [3.4.2]: https://github.com/Qualiasolutions/qualia-framework/compare/v3.4.1...v3.4.2
832
- [3.4.1]: https://github.com/Qualiasolutions/qualia-framework/compare/v3.4.0...v3.4.1
833
- [3.4.0]: https://github.com/Qualiasolutions/qualia-framework/compare/v3.3.2...v3.4.0
834
- [3.3.2]: https://github.com/Qualiasolutions/qualia-framework/compare/v3.3.1...v3.3.2
835
- [3.3.1]: https://github.com/Qualiasolutions/qualia-framework/compare/v3.3.0...v3.3.1
836
- [3.3.0]: https://github.com/Qualiasolutions/qualia-framework/compare/v3.2.1...v3.3.0
837
- [3.2.1]: https://github.com/Qualiasolutions/qualia-framework/compare/v3.2.0...v3.2.1
838
- [3.2.0]: https://github.com/Qualiasolutions/qualia-framework/compare/v3.1.0...v3.2.0
839
- [3.1.0]: https://github.com/Qualiasolutions/qualia-framework/compare/v3.0.0...v3.1.0
840
- [3.0.0]: https://github.com/Qualiasolutions/qualia-framework/compare/v2.10.0...v3.0.0
841
- [2.10.0]: https://github.com/Qualiasolutions/qualia-framework/compare/v2.9.0...v2.10.0
842
- [2.9.0]: https://github.com/Qualiasolutions/qualia-framework/compare/v2.8.1...v2.9.0
843
- [2.8.1]: https://github.com/Qualiasolutions/qualia-framework/compare/v2.8.0...v2.8.1
844
- [2.8.0]: https://github.com/Qualiasolutions/qualia-framework/compare/v2.7.0...v2.8.0
845
- [2.7.0]: https://github.com/Qualiasolutions/qualia-framework/compare/v2.6.1...v2.7.0
846
- [2.6.1]: https://github.com/Qualiasolutions/qualia-framework/compare/v2.6.0...v2.6.1
847
- [2.6.0]: https://github.com/Qualiasolutions/qualia-framework/compare/v2.5.0...v2.6.0
848
- [2.5.0]: https://github.com/Qualiasolutions/qualia-framework/compare/v2.4.0...v2.5.0
849
- [2.4.0]: https://github.com/Qualiasolutions/qualia-framework/compare/v2.3.0...v2.4.0
850
- [2.3.0]: https://github.com/Qualiasolutions/qualia-framework/compare/v2.2.0...v2.3.0
851
- [2.2.0]: https://github.com/Qualiasolutions/qualia-framework/compare/v2.1.2...v2.2.0
852
- [2.1.2]: https://github.com/Qualiasolutions/qualia-framework/compare/v2.1.1...v2.1.2
853
- [2.1.1]: https://github.com/Qualiasolutions/qualia-framework/compare/v2.1.0...v2.1.1
854
- [2.1.0]: https://github.com/Qualiasolutions/qualia-framework/compare/v2.0.0...v2.1.0
855
- [2.0.0]: https://github.com/Qualiasolutions/qualia-framework/releases/tag/v2.0.0