qualia-framework 6.4.0 → 6.6.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.
- package/CLAUDE.md +1 -0
- package/bin/auto-report.js +156 -0
- package/bin/command-surface.js +1 -0
- package/bin/erp-retry.js +4 -2
- package/bin/qualia-ui.js +1 -0
- package/bin/report-payload.js +5 -0
- package/bin/state.js +106 -1
- package/guide.md +7 -0
- package/hooks/stop-session-log.js +15 -0
- package/package.json +8 -2
- package/references/archetypes/ai-agent.md +89 -0
- package/references/archetypes/voice-agent.md +60 -0
- package/references/archetypes/web-app.md +67 -0
- package/references/archetypes/website.md +78 -0
- package/rules/constitution.md +42 -0
- package/skills/qualia/SKILL.md +2 -0
- package/skills/qualia-scope/SKILL.md +123 -0
- package/tests/auto-report.test.sh +158 -0
- package/tests/lib.test.sh +15 -8
- package/tests/run-all.sh +1 -0
- package/docs/archive/CHANGELOG-pre-v4.md +0 -855
- package/docs/archive/v4.0.0-review.md +0 -288
- package/docs/ecosystem-operating-model.md +0 -121
- package/docs/research/2026-04-21-command-quality-deep-research.md +0 -128
- package/docs/research/2026-04-21-industry-best-practices.md +0 -255
- package/docs/research/2026-05-11-deep-research.md +0 -189
- package/docs/reviews/matt-pocock-skills-analysis.md +0 -300
- package/docs/reviews/v4.1.0-audit.html +0 -1488
- package/docs/reviews/v4.1.0-audit.md +0 -263
- package/docs/reviews/v6.2.1-revival-audit.md +0 -53
- package/docs/reviews/v6.2.2-memory-erp-audit.md +0 -41
- package/docs/reviews/v6.2.3-erp-id-guard.md +0 -15
|
@@ -1,263 +0,0 @@
|
|
|
1
|
-
# Qualia Framework v4.1.0 — Production Review
|
|
2
|
-
|
|
3
|
-
**Date:** 2026-04-22
|
|
4
|
-
**Scope:** 26 skills, 8 agents, 7 hooks, 4 bin scripts, 6 rules, templates, docs, HTML surfaces
|
|
5
|
-
**Method:** 4 parallel specialist audits (commands/skills, hooks/state, memory/knowledge, design/UX)
|
|
6
|
-
**Findings:** 142 total across 4 dimensions
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## Summary
|
|
11
|
-
|
|
12
|
-
| Dimension | Critical | High | Medium | Low | Score |
|
|
13
|
-
|-----------|----------|------|--------|-----|-------|
|
|
14
|
-
| Commands & Skills | 5 | 14 | 17 | 9 | **2/5** |
|
|
15
|
-
| Hooks & State | 0 | 3 | 16 | 13 | **3/5** |
|
|
16
|
-
| Memory & Knowledge | 3 | 5 | 6 | 6 | **2/5** |
|
|
17
|
-
| Design & UX | 0 | 11 | 15 | 11 | **2/5** |
|
|
18
|
-
| **Total** | **8** | **33** | **54** | **47** | **2.25/5** |
|
|
19
|
-
|
|
20
|
-
**Verdict: FAIL** — 8 critical blockers, 33 high findings. Framework is functional for OWNER daily use but structurally unsound for multi-employee scale. Ship v4.2.0 with the critical-fix batch before onboarding new team members.
|
|
21
|
-
|
|
22
|
-
---
|
|
23
|
-
|
|
24
|
-
## Top 10 Critical & High Issues (fix first)
|
|
25
|
-
|
|
26
|
-
### 1. `grounding.md` is a phantom for existing installs [CRITICAL]
|
|
27
|
-
**Where:** `skills/qualia-{build,plan,verify,design}/SKILL.md`, `agents/{builder,planner,plan-checker,verifier}.md` — all `@~/.claude/rules/grounding.md` references.
|
|
28
|
-
**Reality:** File exists in repo `rules/grounding.md` but **not in installed** `~/.claude/rules/` for users who upgraded from v4.0.x (current local install is missing it). install.js copies it on fresh install only; no self-healing check on version bump.
|
|
29
|
-
**Impact:** Every planner, builder, plan-checker, verifier spawn silently gets no Grounding Protocol and no Severity Rubric. All 1–5 scores by verifier are improvised. Affects every Road phase, every project, silently.
|
|
30
|
-
**Fix:** Add a hook or install.js post-upgrade routine that compares `rules/` contents and copies missing files. Emit a warning if critical files missing.
|
|
31
|
-
|
|
32
|
-
### 2. Builder agent never reads knowledge base [CRITICAL]
|
|
33
|
-
**Where:** `agents/builder.md` — zero references to `~/.claude/knowledge/`.
|
|
34
|
-
**Impact:** Patterns in `learned-patterns.md`, `supabase-patterns.md`, `common-fixes.md` reach the planner but not the agent that writes code. "Always use `lib/supabase/server.ts` for mutations" never reaches the coder.
|
|
35
|
-
**Fix:** Add a "load relevant patterns" step to builder.md's preamble; pipe through `@~/.claude/knowledge/learned-patterns.md` like grounding.md.
|
|
36
|
-
|
|
37
|
-
### 3. 11 of 14 knowledge files are invisible to every skill [CRITICAL]
|
|
38
|
-
**Where:** `~/.claude/knowledge/` has `qualia-context.md`, `deployment-map.md`, `supabase-patterns.md`, `voice-agent-patterns.md`, `employees.md`, `claudecode-bible.md`, `optimization-research-2026.md`, `session-digest.md`, `email-signature.html`, etc. — grepping the framework for these filenames returns zero results.
|
|
39
|
-
**Impact:** Every skill hardcodes filenames (`cat ~/.claude/knowledge/common-fixes.md`). New knowledge files are dead weight. `session-digest.md` hasn't updated since Apr 12 — the hook that wrote it no longer exists.
|
|
40
|
-
**Fix:** Replace hardcoded cats with `node ~/.claude/bin/knowledge.js load --type <X>` — a discovery utility that indexes and merges tiers. See Memory Architecture proposal §B below.
|
|
41
|
-
|
|
42
|
-
### 4. No per-employee memory scoping [CRITICAL]
|
|
43
|
-
**Where:** All memory is in `~/.claude/knowledge/` with no user scope. Hasan, Fawzi, Moayad all share the same global knowledge files.
|
|
44
|
-
**Impact:** Personal preferences mix with universal patterns. `employees.md` is a flat roster, not a scoping mechanism.
|
|
45
|
-
**Fix:** 3-tier memory architecture — see §B.
|
|
46
|
-
|
|
47
|
-
### 5. `qualia-report` ERP upload: silent injection & auth failures [CRITICAL]
|
|
48
|
-
**Where:** `skills/qualia-report/SKILL.md:84-87, 114-163`.
|
|
49
|
-
- Empty `API_KEY` → sends `Authorization: Bearer ` (blank); 401 handler says "Ask Fawzi" without diagnosing.
|
|
50
|
-
- `SUBMITTED_BY` shell-interpolated into `node -e` string → single quote in git user.name breaks silently.
|
|
51
|
-
- `CLIENT_REPORT_ID` fallback to empty string on state.js failure → commit message loses the ID; ERP payload corrupted.
|
|
52
|
-
**Fix:** Add `[ -z "$API_KEY" ] && fail "No ERP key"` guard. Pipe SUBMITTED_BY via env var, not string interp. Validate report_id non-empty before proceeding.
|
|
53
|
-
|
|
54
|
-
### 6. Triple overlap: `qualia-optimize` vs `qualia-review` vs `qualia-polish` [HIGH]
|
|
55
|
-
**Where:** All three run the same grep patterns (fonts, max-width, gradients, service_role, empty catches, sequential awaits, `<img>` without next/image). Different output files (OPTIMIZE.md / REVIEW.md / inline fix). Different severity scales. User gets three reports about the same issues.
|
|
56
|
-
**Fix:** Pick one. Recommend: `qualia-review` = detect-only (grep + score), `qualia-polish` = fix-only (applies known transforms), delete `qualia-optimize` or repurpose it as a parallel-agent wrapper around review+polish.
|
|
57
|
-
|
|
58
|
-
### 7. 4 skills are orphans — never invoked by the Road [HIGH]
|
|
59
|
-
**Where:** `qualia-test`, `qualia-debug`, `qualia-task`, `qualia-quick` are never auto-triggered by any Road step. The Road has no automated test gate between build and verify. If verification fails, the Road goes to `/qualia-plan --gaps`, not `/qualia-debug`.
|
|
60
|
-
**Fix:** Add `/qualia-test` as a hard gate inside `/qualia-build` post-wave. Route verify-fail → `/qualia-debug` → `/qualia-plan --gaps` chain. Kill `qualia-task` (absorbed into `/qualia-quick`).
|
|
61
|
-
|
|
62
|
-
### 8. Color palette drift across surfaces [HIGH]
|
|
63
|
-
**Where:** `TEAL_DIM` differs `rgb(0,130,135)` (statusline.js:19) vs `rgb(0,140,145)` (qualia-ui.js:31). `DIM` differs `rgb(80,90,100)` vs `rgb(100,110,120)` across 3 files. Brand teal in demo.html `#00ced9` vs help.html `#00ced1`. Display fonts split: Fraunces (demo) vs Outfit (help).
|
|
64
|
-
**Fix:** Create `bin/colors.js` as single source of truth; import in all 5 surfaces. Unify brand token vocabulary between demo.html and help.html.
|
|
65
|
-
|
|
66
|
-
### 9. Statusline shows installer name, not operator [HIGH]
|
|
67
|
-
**Where:** `bin/statusline.js:292` — reads `.qualia-config.json` which is set at install time.
|
|
68
|
-
**Impact:** On a shared machine, all operators see the installer's name. `Qualia member: Hasan` even when Fawzi is driving.
|
|
69
|
-
**Fix:** Read from a session-scoped identity (env var, git user.name) or add `/qualia-whoami` switch.
|
|
70
|
-
|
|
71
|
-
### 10. `/qualia-ship` has no state guard and no security depth [HIGH]
|
|
72
|
-
**Where:** `skills/qualia-ship/SKILL.md`.
|
|
73
|
-
- No `state.js check` at start; can invoke from any state.
|
|
74
|
-
- Security check only greps `service_role` — misses hardcoded keys, tracked `.env`, `dangerouslySetInnerHTML`.
|
|
75
|
-
- Post-deploy verification uses literal `{domain}` placeholder — expects LLM to hallucinate URL.
|
|
76
|
-
**Fix:** Add state-preconditions block (must be `polished` or final-phase verified). Inline the full qualia-review CRITICAL checks. Read `deployed_url` from tracking.json like `/qualia-handoff` does.
|
|
77
|
-
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
## Dimension Deep-Dives
|
|
81
|
-
|
|
82
|
-
### A. Silent Fails (selected — 15 most dangerous)
|
|
83
|
-
|
|
84
|
-
| # | File:line | Severity | Silent behavior |
|
|
85
|
-
|---|-----------|----------|-----------------|
|
|
86
|
-
| A1 | `state.js:179,229` | MED | `readTracking/readState` swallow corrupt JSON as "missing" → user told "No .planning/" when file is corrupt |
|
|
87
|
-
| A2 | `state.js:59` | MED | Corrupt journal silently cleared, no log |
|
|
88
|
-
| A3 | `state.js:107` | HIGH | Lock timeout falls through silently — concurrent writes possible |
|
|
89
|
-
| A4 | `pre-push.js:22,47` | HIGH | No lock coordination with state.js; assumes cwd is repo root |
|
|
90
|
-
| A5 | `pre-deploy-gate.js:51` | MED | `package.json` missing → ALL gates silently skipped |
|
|
91
|
-
| A6 | `pre-deploy-gate.js:146` | MED | File read failure → security scan silently skips that file |
|
|
92
|
-
| A7 | `session-start.js:128` | LOW | Top-level catch; crash inside try → no banner, no error, trace records "allow" anyway |
|
|
93
|
-
| A8 | `qualia-report/SKILL.md:84` | CRIT | Empty pipe chain → report_id becomes `""`, commit loses ID |
|
|
94
|
-
| A9 | `qualia-report/SKILL.md:114` | CRIT | Empty API key → blank Bearer token sent to ERP |
|
|
95
|
-
| A10 | `qualia-handoff/SKILL.md:39` | CRIT | Malformed tracking.json → empty URL; verification curl hits blank target |
|
|
96
|
-
| A11 | `qualia-help/SKILL.md:44` | HIGH | Missing template → sed writes empty file → blank help page opens; "ok" message still printed |
|
|
97
|
-
| A12 | `qualia-verify/SKILL.md:65` | HIGH | `FRONTEND=true` never set — frontend detection broken; browser QA never spawns |
|
|
98
|
-
| A13 | `migration-guard.js:96` | MED | DROP TABLE check is file-global, not per-statement — one `IF EXISTS` masks another unguarded DROP |
|
|
99
|
-
| A14 | `state.js:329` | MED | Progress bar: phase 1/5 shows 0%, phase 5/5 shows 80% — never 100% |
|
|
100
|
-
| A15 | `cli.js:827` | HIGH | ERP ping uses `curl` — unavailable on older Windows |
|
|
101
|
-
|
|
102
|
-
### B. Memory Architecture — 3-Tier Proposal
|
|
103
|
-
|
|
104
|
-
Current state is flat, untiered, and half-invisible. Proposed structure:
|
|
105
|
-
|
|
106
|
-
```
|
|
107
|
-
Tier 1 — FRAMEWORK (universal, ships with framework)
|
|
108
|
-
~/.claude/knowledge/framework/
|
|
109
|
-
├─ stack-patterns.md ← Next.js, Supabase, Vercel
|
|
110
|
-
├─ voice-patterns.md ← Retell, ElevenLabs, Telnyx
|
|
111
|
-
├─ security-patterns.md ← RLS, service_role, env
|
|
112
|
-
├─ common-fixes.md ← cross-project fixes
|
|
113
|
-
└─ KNOWLEDGE-INDEX.md ← auto-generated manifest
|
|
114
|
-
|
|
115
|
-
Tier 2 — EMPLOYEE (per-user, ~/.claude/ scoped by team code)
|
|
116
|
-
~/.claude/knowledge/employee/
|
|
117
|
-
├─ preferences.md ← my coding style, timezone, tools
|
|
118
|
-
├─ my-patterns.md ← things I've learned
|
|
119
|
-
├─ my-fixes.md ← errors I've solved
|
|
120
|
-
└─ KNOWLEDGE-INDEX.md
|
|
121
|
-
|
|
122
|
-
Tier 3 — PROJECT (per-repo, version-controlled with project)
|
|
123
|
-
.planning/knowledge/
|
|
124
|
-
├─ client-prefs.md ← this client's brand/stack
|
|
125
|
-
├─ project-patterns.md ← project-specific gotchas
|
|
126
|
-
├─ deployment.md ← this project's deploy notes
|
|
127
|
-
└─ KNOWLEDGE-INDEX.md
|
|
128
|
-
```
|
|
129
|
-
|
|
130
|
-
**Discovery utility:** `bin/knowledge.js` — single CLI for all skills.
|
|
131
|
-
```
|
|
132
|
-
knowledge.js load --type patterns # merges all 3 tiers, project overrides employee overrides framework
|
|
133
|
-
knowledge.js search "supabase RLS" # searches all tiers, labels source
|
|
134
|
-
knowledge.js index # regenerates INDEX files
|
|
135
|
-
knowledge.js promote --from employee --to framework # for /qualia-learn
|
|
136
|
-
```
|
|
137
|
-
|
|
138
|
-
**Staleness:** INDEX tracks `last_verified` per file. Entries >30 days get `[STALE]` tag in merge output.
|
|
139
|
-
|
|
140
|
-
**Integration with Claude native memory:** Keep `CLAUDE_CODE_DISABLE_AUTO_MEMORY=0`. Native memory captures conversational context; Qualia knowledge captures structured reusable patterns. Add `/qualia-learn --promote` to migrate native → structured. Statusline shows both counts: `K:14 M:4`.
|
|
141
|
-
|
|
142
|
-
**Migration (one-off script):**
|
|
143
|
-
1. Move universal bits of `learned-patterns.md` → `framework/stack-patterns.md`
|
|
144
|
-
2. Move project-specific section → each project's `.planning/knowledge/`
|
|
145
|
-
3. Move `email-signature.html` out of knowledge/ (not knowledge — asset)
|
|
146
|
-
4. Delete `session-digest.md` (dead)
|
|
147
|
-
5. Update 5 reader skills to use `knowledge.js load`
|
|
148
|
-
|
|
149
|
-
### C. Commands That Don't Fit the Road
|
|
150
|
-
|
|
151
|
-
| Skill | Status | Recommendation |
|
|
152
|
-
|-------|--------|----------------|
|
|
153
|
-
| `qualia-task` | Orphan, overlaps `qualia-quick` | **Delete** — fold into `/qualia-quick --proper` flag |
|
|
154
|
-
| `qualia-quick` | Orphan | Keep, add `--proper` flag for atomic-commit behavior of task |
|
|
155
|
-
| `qualia-test` | Orphan | Integrate into `/qualia-build` post-wave as hard gate |
|
|
156
|
-
| `qualia-debug` | Orphan, only suggested | Auto-invoke after verify-fail before `/qualia-plan --gaps` |
|
|
157
|
-
| `qualia-design` | Duplicates polish ~90% | **Merge into** `/qualia-polish`; delete standalone |
|
|
158
|
-
| `qualia-optimize` | Overlaps review+polish | Repurpose as parallel-agent wrapper; specialists run review+polish in fan-out |
|
|
159
|
-
| `qualia-review` | Orphan, no state guard | Integrate as mandatory step between build and verify (code review before goal check) |
|
|
160
|
-
| `qualia-map` | Optional brownfield | Keep, but add auto-trigger on `/qualia-new` if `package.json` exists |
|
|
161
|
-
| `qualia-research` | Optional | Keep as phase-depth option |
|
|
162
|
-
| `qualia-discuss` | Optional | Keep |
|
|
163
|
-
| `qualia-idk` | Alternate router | Keep — genuine diagnostic, not alias (fix help.html:410 description) |
|
|
164
|
-
| `qualia-learn` | Meta | Keep, extend with tier promotion (see §B) |
|
|
165
|
-
| `qualia-help` | Reference | Keep |
|
|
166
|
-
| `qualia-skill-new` | Authoring | Keep |
|
|
167
|
-
|
|
168
|
-
### D. Missing from the Road (gaps)
|
|
169
|
-
|
|
170
|
-
1. **Automated test gate** — no skill runs tests after build, before verify. Add to `/qualia-build`.
|
|
171
|
-
2. **Inter-phase code review** — goal-backward verify doesn't check code quality. Add `/qualia-review` between build and verify.
|
|
172
|
-
3. **Adversarial/red-team build loop** — per harness-engineering research (Anthropic GAN pattern, Archon adversarial-dev). Generator ↔ evaluator with pre-negotiated sprint contract. Add `/qualia-adversarial` or fold into `/qualia-build --adversarial`.
|
|
173
|
-
4. **Continuous reviewer agents** — no background persona reviewers (security, reliability, frontend-architect) on each commit. Stripe Minion pattern; Lopopolo "every push" pattern.
|
|
174
|
-
5. **Component freshness** — no skill pulls latest shadcn/Radix versions or checks for staleness. Proposal below.
|
|
175
|
-
|
|
176
|
-
### E. Component Fetching (user's explicit ask)
|
|
177
|
-
|
|
178
|
-
No current mechanism. Framework has no `shadcn`, `radix`, or `component` references.
|
|
179
|
-
|
|
180
|
-
**Proposal: `/qualia-components` skill**
|
|
181
|
-
```
|
|
182
|
-
/qualia-components add button card dialog # pulls latest shadcn via `npx shadcn@latest add`
|
|
183
|
-
/qualia-components update # bumps versions; writes .planning/component-changelog.md
|
|
184
|
-
/qualia-components check # reports N components > X days stale
|
|
185
|
-
```
|
|
186
|
-
- Integrates with existing `vercel-plugin:shadcn` skill for shadcn ops
|
|
187
|
-
- Uses WebFetch from researcher agent to pull latest docs (`https://ui.shadcn.com/docs/components/{name}`)
|
|
188
|
-
- Writes a diff summary so planner knows what changed
|
|
189
|
-
- Add a mandatory check inside `/qualia-verify`: flag components > 1 major version behind
|
|
190
|
-
|
|
191
|
-
**Do not auto-update during builds.** Component breaks should be explicit, versioned, verified.
|
|
192
|
-
|
|
193
|
-
### F. Design Polish Roadmap (5 phases)
|
|
194
|
-
|
|
195
|
-
**Phase 1 — Color unification (1 day)**
|
|
196
|
-
Create `bin/colors.js`; delete inline palettes in statusline, qualia-ui, session-start, install, cli. Fix TEAL_DIM, DIM, brand teal mismatches. DIM must pass WCAG AA (4.5:1) on dark terminals — currently fails at ~3.2:1.
|
|
197
|
-
|
|
198
|
-
**Phase 2 — Statusline ergonomics (1 day)**
|
|
199
|
-
Terminal-width guard on Line 1 (progressive truncation: identity → memory → worktree → agent). Add milestone indicator `M2 P3/5 T2/4`. Add last-error from `tracking.json.last_error`. Format duration as `Xh Ym` over 60min. Add burn rate `$/min`.
|
|
200
|
-
|
|
201
|
-
**Phase 3 — HTML modernization (1 day)**
|
|
202
|
-
help.html: replace `@import` with `<link rel="preconnect"><link rel="stylesheet">`. Unify design tokens with demo.html. Adopt `@container` queries for card grids. Add `color-scheme: dark`. Fix **demo.html:506 `</span>` → `</div>`** (broken DOM). Fix help.html:410 `/qualia-idk` description (currently says "Alias for /qualia" — wrong).
|
|
203
|
-
|
|
204
|
-
**Phase 4 — Skill description cleanup (half day)**
|
|
205
|
-
Trim 10 skills over 30-word descriptions. Add trigger phrases to 4 that have none (report, ship, verify, build). Cap at 20 words + triggers for autocomplete readability.
|
|
206
|
-
|
|
207
|
-
**Phase 5 — Component fetching (1-2 days)** — see §E.
|
|
208
|
-
|
|
209
|
-
### G. Team Ergonomics — What's Missing
|
|
210
|
-
|
|
211
|
-
For a 5-person team operating from a shared fleet:
|
|
212
|
-
- **Per-operator identity** on statusline (not installer)
|
|
213
|
-
- **Active agent name/count** — which subagent is running right now
|
|
214
|
-
- **Milestone progress** alongside phase progress (`M2/4 P3/5`)
|
|
215
|
-
- **Shared-state indicator** — is someone else editing this project?
|
|
216
|
-
- **Last verification score** from tracking.json
|
|
217
|
-
- **Blocker summary** beyond the pill (currently only shows count, no first-line)
|
|
218
|
-
|
|
219
|
-
---
|
|
220
|
-
|
|
221
|
-
## Action Roadmap (priority-ordered)
|
|
222
|
-
|
|
223
|
-
### v4.1.1 Hotfix (ship this week)
|
|
224
|
-
1. Auto-copy missing rules on version bump (fixes grounding.md phantom)
|
|
225
|
-
2. Guard empty API_KEY in qualia-report
|
|
226
|
-
3. Fix broken `</span>` in demo.html:506
|
|
227
|
-
4. Fix help.html:410 `/qualia-idk` description
|
|
228
|
-
5. Add state guard to `/qualia-ship`
|
|
229
|
-
|
|
230
|
-
### v4.2.0 — Structural (2 weeks)
|
|
231
|
-
1. 3-tier memory architecture + `bin/knowledge.js`
|
|
232
|
-
2. Merge `qualia-design` into `qualia-polish`, delete orphan `qualia-task`
|
|
233
|
-
3. Unified `bin/colors.js`
|
|
234
|
-
4. Builder agent loads knowledge
|
|
235
|
-
5. Integrate `/qualia-test` as build gate, `/qualia-debug` on verify-fail
|
|
236
|
-
6. cwd → git root resolution for state.js, pre-push, pre-compact (fixes 3 MED findings at once)
|
|
237
|
-
|
|
238
|
-
### v4.3.0 — Harness patterns (4 weeks)
|
|
239
|
-
1. Adversarial build mode (generator↔evaluator GAN-style)
|
|
240
|
-
2. Continuous reviewer agents (security/reliability/frontend personas on every push)
|
|
241
|
-
3. Source-code structural tests (file<350 lines, schema dedup, no-unknown)
|
|
242
|
-
4. `/qualia-components` skill
|
|
243
|
-
|
|
244
|
-
### v4.4.0 — Team-scale (ongoing)
|
|
245
|
-
1. Per-operator identity on statusline
|
|
246
|
-
2. Shared-state coordination lock
|
|
247
|
-
3. Token burn rate + milestone progress indicators
|
|
248
|
-
4. Knowledge staleness tracking + auto-prune
|
|
249
|
-
|
|
250
|
-
---
|
|
251
|
-
|
|
252
|
-
## Verdict
|
|
253
|
-
|
|
254
|
-
**Strengths** — The Road skeleton is sound. Context isolation, goal-backward verification, story-file plans, wave-based parallelization, and the state machine are all genuinely good harness patterns (confirmed by comparison to Anthropic/OpenAI/Archon research).
|
|
255
|
-
|
|
256
|
-
**Structural debt** — Three clusters compound risk:
|
|
257
|
-
1. **Invisible dependencies** — grounding.md, 11 knowledge files, builder↔knowledge disconnect. The framework believes things are loaded that aren't.
|
|
258
|
-
2. **Silent failures** — 15 high-impact silent-fail paths where users get "ok" messages while the underlying operation produced garbage.
|
|
259
|
-
3. **Orphan skills** — 4 commands never touch the Road; 3 triple-overlap. Mental overhead for the team is real.
|
|
260
|
-
|
|
261
|
-
**Shipping bar** — This review would FAIL `/qualia-ship` on a client project. The framework needs v4.1.1 hotfix before onboarding the next employee and v4.2.0 before the next major client delivery.
|
|
262
|
-
|
|
263
|
-
Raw audit transcripts (142 findings in full) are available via the 4 background agent outputs if deeper context is needed on any specific finding.
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
# Qualia Framework Revival Audit - 2026-05-21
|
|
2
|
-
|
|
3
|
-
Scope: current `qualia-framework` worktree moving from `package.json` version `6.2.0` to `6.2.1`, with emphasis on silent failures, dead references, ERP/report truth, Codex and Claude Code compatibility, token discipline, and the "0 to hero" project road.
|
|
4
|
-
|
|
5
|
-
## Evidence Collected
|
|
6
|
-
|
|
7
|
-
- `npm test` passed all 9 suites after the package-install smoke test was added.
|
|
8
|
-
- `bash tests/refs.test.sh` passed after adding stale-surface guards: 25 checks, 0 failed.
|
|
9
|
-
- `bash tests/skills.test.sh` passed: 168 checks, 0 failed.
|
|
10
|
-
- `bash tests/install-smoke.test.sh` passed: 7 checks, 0 failed.
|
|
11
|
-
- `npm pack --dry-run` succeeded after the version bump and showed `qualia-framework@6.2.1`, 144 package files, 466.7 kB package size, 1.5 MB unpacked.
|
|
12
|
-
- `npm view qualia-framework version` returned `6.1.0`; local package is now `6.2.1`. This means `npx qualia-framework@latest install` does not yet install the local v6.2 contract.
|
|
13
|
-
|
|
14
|
-
## External 2026 Check
|
|
15
|
-
|
|
16
|
-
- Claude Code skills are live-discovered from `~/.claude/skills/`, project `.claude/skills/`, and parent directories; supporting files should be referenced from `SKILL.md` and loaded on demand. Current framework structure matches this pattern.
|
|
17
|
-
- Claude Code hooks remain event-based and include `PreCompact`, but hooks are arbitrary commands and must be reviewed/tested. Removing Qualia's `pre-compact.js` bot commit is compatible because state durability belongs in `state.js`, not git history.
|
|
18
|
-
- Claude Code subagents use separate context windows and should be used when repeated side work would flood the main context. Qualia's dedicated planner, builder, verifier, researcher, roadmapper, and QA agents still match this model.
|
|
19
|
-
- Codex continues to treat `AGENTS.md` as the cross-agent project instruction surface. The framework's root `AGENTS.md` mirror is the right compatibility layer, but installed Codex behavior should be verified with a real `codex` session after publish.
|
|
20
|
-
- MCP's 2026 direction emphasizes production readiness, security boundaries, and controlled user elicitation. Qualia should keep MCP use explicit and avoid tool servers asking for secrets through elicitation.
|
|
21
|
-
|
|
22
|
-
Sources checked:
|
|
23
|
-
- Claude Code skills: https://code.claude.com/docs/en/slash-commands
|
|
24
|
-
- Claude Code hooks: https://code.claude.com/docs/en/hooks
|
|
25
|
-
- Claude Code subagents: https://code.claude.com/docs/en/sub-agents
|
|
26
|
-
- Codex AGENTS.md pointer: https://github.com/openai/codex/blob/main/docs/agents_md.md
|
|
27
|
-
- AGENTS.md format: https://github.com/agentsmd/agents.md
|
|
28
|
-
- MCP 2026 roadmap: https://blog.modelcontextprotocol.io/posts/2026-mcp-roadmap/
|
|
29
|
-
- MCP elicitation: https://modelcontextprotocol.io/specification/2025-11-25/client/elicitation
|
|
30
|
-
|
|
31
|
-
## Fixed In This Pass
|
|
32
|
-
|
|
33
|
-
- README and onboarding version text now reflect `v6.2.0`, not `v6.0.0`.
|
|
34
|
-
- README and guide now say 33 skills and include `/qualia-vibe`.
|
|
35
|
-
- Active docs no longer claim the ERP passively reads `tracking.json` from git.
|
|
36
|
-
- `/qualia-road`, `/qualia-milestone`, and `agents/roadmapper.md` now frame `tracking.json` as local/report telemetry instead of an ERP tree source.
|
|
37
|
-
- `/qualia-verify` no longer repeats the old "silent PASS unless downgraded" wording for `INSUFFICIENT EVIDENCE`; it now states fail-closed behavior directly.
|
|
38
|
-
- `/qualia-polish` no longer says optional Lighthouse/axe gates are skipped silently.
|
|
39
|
-
- `tests/refs.test.sh` now fails on stale active-surface claims: passive ERP tracking, removed pre-compact guidance, stale skill count, stale README version, old `INSUFFICIENT EVIDENCE` wording, and silent optional gate language.
|
|
40
|
-
- `tests/install-smoke.test.sh` now proves the packaged tarball can install into both Claude and Codex targets from an isolated HOME.
|
|
41
|
-
|
|
42
|
-
## Current Verdict
|
|
43
|
-
|
|
44
|
-
The core framework is functional and test-backed, but the public install path is not revived yet because npm latest is still `6.1.0` while this repo is `6.2.1`. Until a verified publish happens, employees using `npx qualia-framework@latest install` do not receive the no-bot-commit contract or the refreshed docs.
|
|
45
|
-
|
|
46
|
-
## Remaining High-Leverage Work
|
|
47
|
-
|
|
48
|
-
1. **Publish drift is the current release blocker.** After full tests, publish a patched release so `@latest` matches the repo. Evidence target: `npm view qualia-framework version` returns the new version.
|
|
49
|
-
2. **Codex install verification should become a test.** The installer already writes `~/.codex/AGENTS.md`, but the next pass should add a non-interactive smoke test that verifies Codex-facing install output contains the role-filled root instructions and no `{{ROLE}}` placeholders.
|
|
50
|
-
3. **Claude hook modernization should be explicit, not opportunistic.** Current Claude Code exposes newer hook events such as `PostToolUseFailure`, `PostToolBatch`, `InstructionsLoaded`, `SessionEnd`, and agent start/stop events. Qualia does not need to wire all of them, but a future phase should decide which are useful for employee/admin experience instead of drifting hook-by-hook.
|
|
51
|
-
4. **ERP employee/admin experience should stay report-driven.** Framework telemetry should enrich `/qualia-report`; the ERP should not depend on git scraping internal `.planning` files. This keeps framework tasks internal and preserves the ERP as the oversight layer.
|
|
52
|
-
5. **Skill count should not grow by default.** The 33-skill surface is already large. Prefer merging or tightening skills before adding new ones unless a new skill removes repeated work that cannot be handled by an existing command.
|
|
53
|
-
6. **Token awareness should be measured in installed surfaces.** The next audit should report installed `CLAUDE.md`/`AGENTS.md` line count, skill description total size, and agent frontmatter count so "lightweight" is a measurable contract, not a claim.
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
# Qualia Framework Memory/ERP Audit - 2026-05-21
|
|
2
|
-
|
|
3
|
-
Source reviewed: `/home/qualia-new/Downloads/qualia-framework-memory-erp-connection.md`.
|
|
4
|
-
|
|
5
|
-
## Useful Model Adopted
|
|
6
|
-
|
|
7
|
-
The note's core model is correct and now has a framework home:
|
|
8
|
-
|
|
9
|
-
- Framework builds.
|
|
10
|
-
- Memory remembers.
|
|
11
|
-
- ERP operates.
|
|
12
|
-
|
|
13
|
-
This became `docs/ecosystem-operating-model.md` so employees and admins have one clear boundary document instead of scattered assumptions.
|
|
14
|
-
|
|
15
|
-
## Correction Applied
|
|
16
|
-
|
|
17
|
-
The note says ERP can sync `.planning/` files from GitHub into project phases/items. That is acceptable only as an explicit import/snapshot workflow. It must not revive the old v6.1 passive `tracking.json` git-scrape story or hook-created bot commits.
|
|
18
|
-
|
|
19
|
-
Current contract:
|
|
20
|
-
|
|
21
|
-
- `/qualia-report` remains the primary Framework -> ERP sync.
|
|
22
|
-
- `.planning` snapshots are allowed only through an explicit future import/API workflow.
|
|
23
|
-
- ERP owns client-visible status, deadlines, assignments, payments, and dashboards.
|
|
24
|
-
- Framework owns local execution state.
|
|
25
|
-
- Memory owns durable knowledge, not live operational truth.
|
|
26
|
-
|
|
27
|
-
## Changes Made
|
|
28
|
-
|
|
29
|
-
- Added `docs/ecosystem-operating-model.md`.
|
|
30
|
-
- Added `templates/work-packet.md` for ERP-approved session context.
|
|
31
|
-
- Added optional `erp_project_id`, `client_id`, and `workspace_id` fields to `templates/tracking.json`.
|
|
32
|
-
- Updated `bin/state.js` so those identifiers survive `state.js init` / re-init.
|
|
33
|
-
- Updated `/qualia-report` payload construction to send those identifiers only when present.
|
|
34
|
-
- Updated `docs/erp-contract.md` with the new optional fields.
|
|
35
|
-
- Updated `/qualia-report` help text to use the safe piped `set-erp-key` command.
|
|
36
|
-
|
|
37
|
-
## Remaining Work
|
|
38
|
-
|
|
39
|
-
1. ERP backend should accept and store `erp_project_id`, `client_id`, and `workspace_id` if it does not already.
|
|
40
|
-
2. ERP can generate `templates/work-packet.md` content or a JSON equivalent for agents.
|
|
41
|
-
3. If planning snapshots are needed, define a real endpoint or import job with approval semantics. Do not depend on passive GitHub scraping.
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
# Qualia Framework ERP ID Guard - 2026-05-21
|
|
2
|
-
|
|
3
|
-
After the v6.2.2 Framework/Memory/ERP patch, the ERP route was checked directly in `/home/qualia-new/Projects/qualia-erp/app/api/v1/reports/route.ts`.
|
|
4
|
-
|
|
5
|
-
Finding:
|
|
6
|
-
|
|
7
|
-
- ERP `client_id` is validated as a UUID and stored as an FK to `clients`.
|
|
8
|
-
- ERP already has an `erp_project_id` column and admin reporting reads it.
|
|
9
|
-
- The v6.2.2 framework example used a slug-like `client_id` (`"acme"`) and `/qualia-report` would send any non-empty `client_id`.
|
|
10
|
-
|
|
11
|
-
Fix:
|
|
12
|
-
|
|
13
|
-
- `/qualia-report` now includes `erp_project_id`, `client_id`, and `workspace_id` only when values are UUID-shaped.
|
|
14
|
-
- Docs now label those IDs as UUIDs.
|
|
15
|
-
- `project_id` and `team_id` remain the slug/string identifiers for framework-level dedupe and reporting.
|