@balpal4495/quorum 1.0.0 → 2.0.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/README.md CHANGED
@@ -1,79 +1,170 @@
1
1
  # Quorum
2
2
 
3
- **Quorum gives your AI coding assistant persistent memory and judgment and keeps it getting smarter over time.**
3
+ **Git-backed memory and design review for AI coding agents.**
4
4
 
5
- When Claude Code, Copilot, Cursor, or Codex works in your codebase, it forgets everything between sessions. It retries approaches that already failed. It contradicts decisions made last week. It has no idea what the team has already learned.
5
+ Your agent knows how to code. It does not know what your team decided last week.
6
6
 
7
- Quorum fixes this. It installs a persistent knowledge store (Chronicle) into your project, gives your AI a structured workflow for querying it before proposing solutions, validates designs before acting, and writes new knowledge back with you approving every write.
8
-
9
- ---
10
-
11
- ## Get started in one command
7
+ Quorum gives Claude Code, Cursor, Codex, Copilot, and other coding agents a project memory they check before proposing changes and only humans approve what gets remembered.
12
8
 
13
9
  ```bash
14
10
  npx @balpal4495/quorum@latest init
15
11
  ```
16
12
 
17
- Then `npm install`. That's it.
13
+ This creates `.chronicle/`, adds agent instructions to `CLAUDE.md`, `AGENTS.md`, and `.github/copilot-instructions.md`, and gives every future AI session access to the project's approved memory.
14
+
15
+ ---
16
+
17
+ ## The problem
18
+
19
+ AI coding agents forget:
20
+
21
+ - decisions made in prior sessions
22
+ - approaches that already failed and why
23
+ - which parts of the codebase are risky
24
+ - team-specific architecture rules
25
+ - why something was rejected
26
+
27
+ Every new session starts from zero. The same mistakes get proposed again. The same rejected patterns get rediscovered.
28
+
29
+ ---
30
+
31
+ ## What changes after Quorum
32
+
33
+ **Without Quorum:**
34
+
35
+ > "I'll replace sessions with HS256 JWTs."
18
36
 
19
- Quorum copies its modules into `quorum/`, merges instruction files for your AI (`CLAUDE.md`, `AGENTS.md`, `.github/copilot-instructions.md`), and creates the Chronicle knowledge store at `.chronicle/`.
37
+ **With Quorum:**
38
+
39
+ > "I checked Chronicle first. HS256 was rejected in March — key rotation would invalidate all active sessions. The validated approach is RS256 with short-lived access tokens and refresh rotation in httpOnly cookies."
40
+
41
+ The agent didn't discover this through code archaeology. Chronicle told it. That knowledge was approved by a human and has been there for every session since.
42
+
43
+ ---
44
+
45
+ ## Three guarantees
46
+
47
+ ### 1. It remembers
48
+
49
+ Every session starts from approved project knowledge, not a blank chat window. Decisions, rejected approaches, risky areas, and architectural rules — all available before the first line of code is written.
50
+
51
+ ### 2. It checks
52
+
53
+ Risky proposals are compared against Chronicle evidence before they reach you. Refuted approaches are hard stops. Missing rollback plans and undocumented risks are surfaced before implementation.
54
+
55
+ ### 3. It learns under human control
56
+
57
+ The agent can stage new lessons. Only you decide what becomes project memory. Nothing is indexed without your sign-off.
20
58
 
21
59
  ---
22
60
 
23
- ## How Quorum learns over time
61
+ ## Where Quorum fits
24
62
 
25
- This is the core loop. Every session makes the project smarter.
63
+ Quorum does not replace your coding-agent workflow.
64
+
65
+ Use Superpowers, Claude Code, Cursor rules, Codex instructions, or your own process for planning and implementation. Quorum adds the missing memory and evidence layer underneath them.
26
66
 
27
67
  ```
28
- session start
29
- └─ AI reads Chronicle (quorum advisor brief + query)
30
- └─ work happens informed by accumulated knowledge
31
- └─ decisions and learnings staged as proposals (oracle.propose)
32
- └─ you approve from terminal (quorum commit)
33
- └─ Chronicle grows
34
- └─ PR merged → growth comment posted automatically
35
- └─ periodic: quorum evolve consolidates + improves entries
68
+ Agent workflow:
69
+ brainstorm design plan implement review → merge
70
+
71
+ Quorum layer:
72
+ remember check evidence flag risk → stage learning → human approval
36
73
  ```
37
74
 
38
- **Session start** the AI runs `quorum advisor brief` to see what Chronicle knows, then `quorum advisor query "topic"` to get relevant entries before touching any code.
75
+ > **Your agent already has a workflow. Quorum gives it institutional memory.**
39
76
 
40
- **During work** Oracle is queried before every significant decision. Refuted entries are treated as hard stops. Validated entries inform the approach.
77
+ ### Using Quorum with Superpowers
41
78
 
42
- **Session end** the AI stages Chronicle proposals for every meaningful decision made. You review and commit them with `quorum commit`.
79
+ | Superpowers phase | Quorum hook |
80
+ |---|---|
81
+ | Brainstorming | `quorum advisor brief` and `quorum advisor query "topic"` before proposing options |
82
+ | Writing the design | Chronicle entries as evidence for accepted and rejected approaches |
83
+ | Planning | `quorum check` on the proposed design before implementation |
84
+ | TDD / implementation | Stage meaningful decisions as Chronicle proposals |
85
+ | Code review | Check whether the change contradicts validated entries |
86
+ | Finish branch | `quorum commit --list`, approve learnings, then `quorum growth` |
43
87
 
44
- **On every PR merge** — a growth comment is posted automatically showing exactly what Chronicle learned from that PR.
88
+ ---
89
+
90
+ ## The Quorum loop
91
+
92
+ ```
93
+ 1. Start with memory
94
+ quorum advisor brief
95
+ quorum advisor query "authentication"
96
+
97
+ 2. Check the design
98
+ quorum check --outcome "migrate auth" --design "..."
99
+
100
+ 3. Stage what was learned
101
+ The agent proposes a Chronicle entry.
102
+
103
+ 4. Approve memory
104
+ quorum commit --list
105
+ quorum commit <id>
45
106
 
46
- **Periodically** `quorum evolve` reviews all entries and proposes consolidations, resolves contradictions, and promotes confirmed knowledge.
107
+ 5. Keep memory healthy
108
+ quorum growth
109
+ quorum evolve
110
+ ```
47
111
 
48
- **Visibility at any time** `quorum growth` shows whether learning is actually happening, how fast, and what was learned recently.
112
+ Every PR merge posts a growth comment showing what Chronicle learned. `quorum evolve` periodically consolidates entries and resolves contradictions.
49
113
 
50
114
  ---
51
115
 
52
- ## CLI commands
116
+ ## What you can do
117
+
118
+ | Job | Command |
119
+ |---|---|
120
+ | Ask what the project already knows | `quorum advisor "what did we decide about auth?"` |
121
+ | Search memory without an LLM | `quorum advisor query "auth"` |
122
+ | Start a session with full context | `quorum advisor brief` |
123
+ | Check a design before coding | `quorum check --outcome ... --design ...` |
124
+ | Approve what the agent should remember | `quorum commit <id>` |
125
+ | See whether memory is growing | `quorum growth` |
126
+ | Consolidate stale or duplicate entries | `quorum evolve` |
127
+ | Find undocumented areas | `quorum sentinel coverage` |
128
+
129
+ ---
130
+
131
+ ## Start small, then add guardrails
132
+
133
+ ### Level 1 — Local memory
134
+ Use `quorum advisor brief` and `quorum advisor query` at the start of AI sessions. No setup beyond `init`.
135
+
136
+ ### Level 2 — Human-approved learning
137
+ Let the agent stage proposals. Approve them with `quorum commit`. Chronicle grows.
138
+
139
+ ### Level 3 — Design checks
140
+ Run `quorum check` before risky changes. Auth, database, payments, PII, crypto — each gets a deterministic preflight and risk level.
141
+
142
+ ### Level 4 — Team memory in Git
143
+ Commit `.chronicle/committed/` so every teammate and every new AI session starts with the same accumulated knowledge.
144
+
145
+ ### Level 5 — CI and PR visibility
146
+ Enable the GitHub Actions workflows for automatic PR growth comments, coverage reports, and drift checks.
147
+
148
+ ---
149
+
150
+ ## Get started
53
151
 
54
152
  ```bash
55
- npm install -g @balpal4495/quorum
56
- # or: npx @balpal4495/quorum <command>
153
+ npx @balpal4495/quorum@latest init
154
+ npm install
57
155
  ```
58
156
 
59
- | Command | What it does | LLM |
60
- |---|---|---|
61
- | `quorum advisor "question"` | Ask a plain-language question — answer synthesised from Chronicle evidence | Auto¹ |
62
- | `quorum advisor query "topic"` | Search Chronicle entries by keyword | No |
63
- | `quorum advisor brief` | High-level Chronicle summary | No |
64
- | `quorum growth` | Chronicle health — growth rate, recent learnings, weekly sparkline | No |
65
- | `quorum evolve` | Consolidate and improve Chronicle entries | Auto¹ |
66
- | `quorum status` | Chronicle health — pending proposals, committed entries | No |
67
- | `quorum check --outcome X --design Y` | Deterministic preflight + risk classifier | No |
68
- | `quorum commit <id>` | Approve and index a pending proposal | No |
69
- | `quorum sentinel [coverage]` | Chronicle coverage of your source files | No |
70
- | `quorum init` | Scaffold Quorum into a project | No |
71
-
72
- ¹ **Auto-detect** — Quorum finds whichever LLM is available: `ANTHROPIC_API_KEY`, `OPENAI_API_KEY`, `GEMINI_API_KEY`, `OPENAI_BASE_URL`, Ollama at localhost:11434, or an authenticated `gemini` CLI. When running inside Claude Code, Copilot, Codex, or any other AI agent without a separate key, these commands output Chronicle evidence and a synthesis request directly — the agent answers inline. No key required.
157
+ Then install the CLI globally for terminal access:
158
+
159
+ ```bash
160
+ npm install -g @balpal4495/quorum
161
+ ```
73
162
 
74
163
  ---
75
164
 
76
- ## `quorum advisor` — ask Chronicle a question
165
+ ## Command reference
166
+
167
+ ### `quorum advisor` — ask Chronicle a question
77
168
 
78
169
  ```bash
79
170
  quorum advisor "what did we decide about authentication?"
@@ -99,11 +190,58 @@ Question: what did we decide about authentication?
99
190
  quorum advisor query "oauth migration" to check current status
100
191
  ```
101
192
 
102
- Advisor validates its own answer internally — if confidence is below 0.7 or blockers exist, it retries up to 2 times with the previous answer as context before returning.
193
+ No LLM required for `query` and `brief`. When an LLM is available, `advisor` synthesises and validates answers internally — retrying up to 2 times if confidence is below 0.7. When running inside Claude Code, Copilot, or Codex with no separate API key, it outputs Chronicle evidence and a synthesis request for the agent to answer inline.
194
+
195
+ ---
196
+
197
+ ### `quorum check` — instant risk triage
198
+
199
+ ```bash
200
+ quorum check \
201
+ --outcome "migrate auth from sessions to JWT" \
202
+ --design "replace session middleware with HS256 tokens on all routes"
203
+ ```
204
+
205
+ ```
206
+ Preflight
207
+ ⚠ Sensitive areas: auth
208
+ ✗ No rollback strategy mentioned
209
+ ✗ No test strategy mentioned
210
+
211
+ Risk
212
+ Level: CRITICAL
213
+ Council mode: full
214
+ Reasons:
215
+ · authentication or authorisation logic
216
+
217
+ ⚠ Critical risk — human architecture review required before proceeding.
218
+ ```
219
+
220
+ Exit codes: `0` = low/medium, `1` = high, `2` = critical — pipe directly into CI scripts.
221
+ Accepts JSON on stdin: `echo '{"outcome":"…","design":"…"}' | quorum check --json`
103
222
 
104
223
  ---
105
224
 
106
- ## `quorum growth` — is Chronicle actually learning?
225
+ ### `quorum commit` — the human gate
226
+
227
+ ```bash
228
+ quorum commit --list # see all pending proposals
229
+ quorum commit a1b2c3d4 # approve and index (partial ID works)
230
+ quorum commit a1b2c3d4 --dry-run # preview without writing
231
+ ```
232
+
233
+ Writes to `.chronicle/committed/`, updates `SUMMARY.md`, removes the proposal. Always works — no extra dependencies required. Install `@xenova/transformers` and `vectordb` to also embed entries for semantic search.
234
+
235
+ ```
236
+ .chronicle/
237
+ proposals/ ← AI-staged entries waiting for your approval
238
+ committed/ ← approved entries, indexed and searchable
239
+ SUMMARY.md ← auto-generated context for your AI to read
240
+ ```
241
+
242
+ ---
243
+
244
+ ### `quorum growth` — is Chronicle actually learning?
107
245
 
108
246
  ```bash
109
247
  quorum growth
@@ -131,11 +269,11 @@ Chronicle growth
131
269
  e57c30d5 Releases trigger from PR labels, not manual tag pushes… 2026-05-16
132
270
  ```
133
271
 
134
- Status levels: `EMPTY` → `STALLED` (14 days with no commits) → `SLOW` (7 days) → `HEALTHY` → `THRIVING` (3+ commits this week). When stalled, it tells you exactly what to do.
272
+ Status levels: `EMPTY` → `STALLED` (14 days) → `SLOW` (7 days) → `HEALTHY` → `THRIVING` (3+ this week). When stalled, it tells you what to do.
135
273
 
136
274
  ---
137
275
 
138
- ## `quorum evolve` — Chronicle self-improvement
276
+ ### `quorum evolve` — Chronicle self-improvement
139
277
 
140
278
  ```bash
141
279
  quorum evolve # analyse and stage improvement proposals
@@ -169,88 +307,9 @@ Every proposed improvement goes through the human gate (`quorum commit`). Nothin
169
307
 
170
308
  ---
171
309
 
172
- ## `quorum check` — instant risk triage
173
-
174
- ```bash
175
- quorum check \
176
- --outcome "migrate auth from sessions to JWT" \
177
- --design "replace session middleware with HS256 tokens on all routes"
178
- ```
179
-
180
- ```
181
- Preflight
182
- ⚠ Sensitive areas: auth
183
- ✗ No rollback strategy mentioned
184
- ✗ No test strategy mentioned
185
-
186
- Risk
187
- Level: CRITICAL
188
- Council mode: full
189
- Reasons:
190
- · authentication or authorisation logic
191
-
192
- ⚠ Critical risk — human architecture review required before proceeding.
193
- ```
194
-
195
- Exit codes: `0` = low/medium, `1` = high, `2` = critical — pipe directly into CI scripts.
196
- Also accepts JSON on stdin: `echo '{"outcome":"…","design":"…"}' | quorum check --json`
197
-
198
- ---
199
-
200
- ## `quorum commit` — the human gate
201
-
202
- ```bash
203
- quorum commit --list # see all pending proposals
204
- quorum commit a1b2c3d4 # approve and index (partial ID prefix works)
205
- quorum commit a1b2c3d4 --dry-run # preview without writing
206
- ```
207
-
208
- Writes to `.chronicle/committed/`, updates `SUMMARY.md`, removes the proposal. Always works — no extra dependencies required. Install `@xenova/transformers` and `vectordb` to also embed and index in the vector store for semantic search.
209
-
210
- ---
211
-
212
- ## What changes after setup
213
-
214
- ### Your AI starts every session with full project context
215
-
216
- Before touching any code, your AI reads Chronicle:
217
-
218
- ```bash
219
- quorum advisor brief # what has the project learned?
220
- quorum advisor query "topic of the work" # what's relevant to today's task?
221
- ```
222
-
223
- > *"I queried Chronicle before proposing the Redis session approach. Entry `[abc-123]` shows we rejected this in March — key rotation wasn't viable. I'm proposing JWT with RS256 instead."*
224
-
225
- ### Designs are validated before they reach you
226
-
227
- Every proposal goes through Jury (confidence scoring against evidence) and Council (adversarial panel) before it surfaces. Low-confidence or contested ideas get challenged internally first.
228
-
229
- > *"Jury scored this 0.41 — gaps in lock strategy and rollback plan. Council flagged the same. I've revised the migration to use a shadow column approach before bringing it to you."*
230
-
231
- ### You approve what gets remembered
232
-
233
- ```bash
234
- quorum commit --list # see what's pending
235
- quorum commit <id> # approve and index
236
- ```
237
-
238
- Nothing is indexed without your sign-off.
239
-
240
- ```
241
- .chronicle/
242
- proposals/ ← AI-staged entries waiting for your approval
243
- committed/ ← approved entries, indexed and searchable
244
- SUMMARY.md ← auto-generated weekly context for your AI to read
245
- ```
246
-
247
- Commit `.chronicle/committed/` to git. Every future session — yours and your teammates' — starts with that context.
248
-
249
310
  ### Every merged PR shows what Chronicle learned
250
311
 
251
- Quorum ships two GitHub Actions workflows. Enable them by copying `.github/workflows/` from the [Quorum repo](https://github.com/balpal4495/Quorum):
252
-
253
- **`chronicle-on-merge.yml`** — fires on every PR merge. Creates a Chronicle proposal from the PR metadata and posts a growth comment:
312
+ On every PR merge, Quorum automatically posts a growth comment:
254
313
 
255
314
  ```
256
315
  ## Quorum Chronicle — what this PR taught
@@ -268,7 +327,7 @@ Committed this PR:
268
327
  Run quorum growth for full Chronicle health · quorum evolve to consolidate entries
269
328
  ```
270
329
 
271
- **`sentinel-pr.yml`** posts a coverage table and Mermaid heatmap on every PR showing which files Chronicle knows about and which are blind spots.
330
+ Enable by copying `.github/workflows/` from the [Quorum repo](https://github.com/balpal4495/Quorum). `sentinel-pr.yml` also posts a coverage table on every PR showing which files Chronicle knows about and which are blind spots.
272
331
 
273
332
  ---
274
333
 
@@ -276,7 +335,7 @@ Run quorum growth for full Chronicle health · quorum evolve to consolidate entr
276
335
 
277
336
  ### An agent that remembers a past failure
278
337
 
279
- Your AI is about to propose symmetric JWT signing. Oracle returns:
338
+ Your AI is about to propose symmetric JWT signing. Chronicle returns:
280
339
 
281
340
  ```
282
341
  [abc-123] Tried HS256 JWT in March. Rejected — no way to rotate keys without
@@ -284,7 +343,7 @@ Your AI is about to propose symmetric JWT signing. Oracle returns:
284
343
  status: validated · confidence: 0.91
285
344
  ```
286
345
 
287
- Jury flags it as a direct conflict. The agent revises before Council even sees it.
346
+ Jury flags it as a direct conflict. The agent revises before it ever reaches you.
288
347
 
289
348
  ---
290
349
 
@@ -316,7 +375,7 @@ gaps: ["no lock strategy documented", "no rollback plan"]
316
375
  council_brief: challenge
317
376
  ```
318
377
 
319
- Council gives a structured verdict with blockers that must be resolved before proceeding. The agent revises. You approve the Chronicle entry once it's solid — including alternatives considered and why they were rejected — so the next person touching that table has the full reasoning:
378
+ Council gives a structured verdict with blockers. The agent revises. You approve the Chronicle entry once it's solid:
320
379
 
321
380
  ```json
322
381
  {
@@ -329,99 +388,51 @@ Council gives a structured verdict with blockers that must be resolved before pr
329
388
  }
330
389
  ```
331
390
 
391
+ The next person touching that table has the full reasoning. They don't repeat the mistake.
392
+
332
393
  ---
333
394
 
334
- ## What's inside
395
+ ## How it works under the hood
335
396
 
336
- Five portable TypeScript modules installed into `quorum/modules/`:
397
+ You do not need to understand these internals to use Quorum. They are installed into `quorum/modules/` so any AI working in the codebase can inspect and use them directly.
337
398
 
338
399
  | Module | What it does | LLM |
339
400
  |---|---|---|
340
- | **Advisor** | Plain-language interface to Chronicle. Ask a question, get a concise answer synthesised from evidence, validated with an internal retry loop. | Yes |
401
+ | **Advisor** | Plain-language interface to Chronicle. Ask a question, get an answer synthesised from evidence, validated with an internal retry loop. | Auto |
341
402
  | **Oracle** | Query and write interface to Chronicle. Two-pass retrieval (vector + BM25). | No |
342
403
  | **Jury** | Evaluates a design against Chronicle evidence. Four-dimension confidence score, deterministic preflight, hard-blocker gaps. | Yes |
343
404
  | **Council** | Adversarial panel — advisors challenge independently, reviewers critique anonymously, Chairman gives a structured verdict. Risk-scaled fan-out. | Yes |
344
405
  | **Sentinel** | Coverage reporting (which files Chronicle knows about), drift detection (are entries still accurate), PR coverage maps. | Optional |
345
406
 
346
- The modules live in your repo — readable by any AI working in the codebase. Nothing is hidden in `node_modules`.
347
-
348
- ---
407
+ ### How Jury works
349
408
 
350
- ## How Jury works
409
+ Before calling the LLM, Jury runs a **deterministic preflight** — checks sensitive areas (auth, database migrations, crypto, payments, PII, secrets), rollback strategy, and refuted Chronicle conflicts. These are injected as hard ground truth.
351
410
 
352
- Before calling the LLM, Jury runs a **deterministic preflight** that checks whether the design touches sensitive areas (auth, database migrations, crypto, payments, PII, secrets), mentions a rollback strategy, and whether any refuted Chronicle entries conflict with the design. These facts are injected into the prompt as hard ground truth.
353
-
354
- The LLM scores the design across four dimensions:
355
-
356
- | Dimension | What it measures |
357
- |---|---|
358
- | Evidence support | Do validated Chronicle entries confirm this approach works here? |
359
- | Feasibility | Do Chronicle entries suggest this is achievable? |
360
- | Risk | How well does the design address known failure modes? |
361
- | Completeness | Does the design cover the full outcome? |
362
-
363
- Confidence is recomputed as the exact average — the LLM's stated value is discarded. Jury separates `blocking_gaps` (must resolve before proceeding) from `gaps` (useful but not critical).
364
-
365
- ---
411
+ The LLM scores across four dimensions: evidence support, feasibility, risk, completeness. Confidence is the exact average the LLM's stated value is discarded. Jury separates `blocking_gaps` (must resolve) from `gaps` (useful but not blocking).
366
412
 
367
- ## How Council works
413
+ ### How Council works
368
414
 
369
- A **risk classifier** runs before the panel and scales fan-out accordingly:
415
+ A risk classifier scales the panel before it runs:
370
416
 
371
417
  | Risk | Triggers | Council mode | LLM calls |
372
418
  |---|---|---|---|
373
- | Low | Nothing sensitive | jury-only — Council skipped entirely | 0 |
419
+ | Low | Nothing sensitive | jury-only — Council skipped | 0 |
374
420
  | Medium | Cache, queues, deployments | lite — 1 advisor + 2 reviewers | 5 |
375
421
  | High | DB migrations, PII, permissions | full — 5 advisors + 5 reviewers | 12 |
376
422
  | Critical | Auth, payments, crypto, data deletion | full + human flag | 12 |
377
423
 
378
- Refuted entries in the evidence pack always elevate risk by at least one level.
424
+ Refuted entries always elevate risk by at least one level. Citation validation strips hallucinated Oracle IDs before any proposal is written.
379
425
 
380
- The Chairman's verdict is structured with `blockers` (must resolve), `warnings` (should address), `advisor_split` (shows disagreement), and `citation_validation` (hallucinated Oracle IDs are stripped before the Chronicle proposal is written).
426
+ ### LLM auto-detection
381
427
 
382
- ---
383
-
384
- ## Eval suite
385
-
386
- `evals/` contains canonical test cases — known-bad proposals that should block, known-good ones that should pass:
387
-
388
- | Case | Expected |
389
- |---|---|
390
- | Naive NOT NULL migration on large table | Block — no lock strategy |
391
- | HS256 JWT when RS256 was already chosen | Block — cites refuted entry |
392
- | PII fields logged to stdout | Block — GDPR violation in evidence |
393
- | Payment charge without idempotency key | Block — duplicate charge risk |
394
- | Safe internal rename | Proceed — low risk, no conflicts |
395
- | RS256 JWT (approved pattern) | Proceed — matches validated entry |
396
- | Migration with rollback + shadow column | Proceed — addresses documented failure mode |
397
-
398
- Deterministic assertions run on every CI pass. LLM assertions activate with `EVAL_LLM=1`.
399
-
400
- ```bash
401
- npx vitest run evals/
402
- ```
403
-
404
- ---
405
-
406
- ## Sentinel — coverage and drift
407
-
408
- **Coverage** — which parts of your codebase has the AI never documented?
409
-
410
- ```bash
411
- quorum sentinel coverage --path src
412
- quorum sentinel coverage --json
413
- ```
414
-
415
- **Drift** — are existing Chronicle entries still accurate? Requires an LLM; use `sentinelAssertions({ llm })` in your test suite.
428
+ Quorum finds whichever LLM is available: `ANTHROPIC_API_KEY` → `OPENAI_API_KEY` → `GEMINI_API_KEY` → `OPENAI_BASE_URL` → Ollama at `localhost:11434` → authenticated `gemini` CLI. When running inside an AI agent with no separate key, commands output Chronicle evidence and a synthesis request — the agent answers inline.
416
429
 
417
430
  ---
418
431
 
419
432
  ## For custom agent pipelines
420
433
 
421
- Wire the modules directly into any TypeScript agent:
422
-
423
434
  ```typescript
424
- import { setup } from "./quorum/modules/setup"
435
+ import { setup } from "@balpal4495/quorum"
425
436
 
426
437
  const { oracle, evaluate, deliberate, ask } = await setup({ llm: myLLMProvider })
427
438
 
@@ -446,6 +457,39 @@ Full API reference: [modules/README.md](modules/README.md)
446
457
 
447
458
  ---
448
459
 
460
+ ## Eval suite
461
+
462
+ `evals/` contains canonical test cases — known-bad proposals that should block, known-good ones that should pass:
463
+
464
+ | Case | Expected |
465
+ |---|---|
466
+ | Naive NOT NULL migration on large table | Block — no lock strategy |
467
+ | HS256 JWT when RS256 was already chosen | Block — cites refuted entry |
468
+ | PII fields logged to stdout | Block — GDPR violation in evidence |
469
+ | Payment charge without idempotency key | Block — duplicate charge risk |
470
+ | Safe internal rename | Proceed — low risk, no conflicts |
471
+ | RS256 JWT (approved pattern) | Proceed — matches validated entry |
472
+ | Migration with rollback + shadow column | Proceed — addresses documented failure mode |
473
+
474
+ ```bash
475
+ npx vitest run evals/
476
+ ```
477
+
478
+ Deterministic assertions run without any LLM. Set `EVAL_LLM=1` to also test Jury confidence and Council recommendations against a real LLM.
479
+
480
+ ---
481
+
482
+ ## What Quorum is not
483
+
484
+ Quorum is not a coding agent.
485
+ Quorum is not a replacement for TDD, code review, or planning.
486
+ Quorum is not a private SaaS memory store.
487
+ Quorum does not auto-approve what the AI learns.
488
+
489
+ It is a project-local memory, evidence, and review layer for agents you already use.
490
+
491
+ ---
492
+
449
493
  ## Releases
450
494
 
451
495
  Published as `@balpal4495/quorum`. Releases trigger automatically on PR merge via label (`release:patch`, `release:minor`, `release:major`) — GitHub Actions bumps the version, tags, and publishes via OIDC Trusted Publishing.