@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 +238 -194
- package/SETUP.md +60 -96
- package/bin/commands/init.js +59 -60
- package/bin/quorum.js +0 -0
- package/package.json +4 -2
- package/bin/init.js +0 -378
package/README.md
CHANGED
|
@@ -1,79 +1,170 @@
|
|
|
1
1
|
# Quorum
|
|
2
2
|
|
|
3
|
-
**
|
|
3
|
+
**Git-backed memory and design review for AI coding agents.**
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Your agent knows how to code. It does not know what your team decided last week.
|
|
6
6
|
|
|
7
|
-
Quorum
|
|
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
|
-
|
|
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
|
|
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
|
-
##
|
|
61
|
+
## Where Quorum fits
|
|
24
62
|
|
|
25
|
-
|
|
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
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
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
|
-
|
|
75
|
+
> **Your agent already has a workflow. Quorum gives it institutional memory.**
|
|
39
76
|
|
|
40
|
-
|
|
77
|
+
### Using Quorum with Superpowers
|
|
41
78
|
|
|
42
|
-
|
|
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
|
-
|
|
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
|
-
|
|
107
|
+
5. Keep memory healthy
|
|
108
|
+
quorum growth
|
|
109
|
+
quorum evolve
|
|
110
|
+
```
|
|
47
111
|
|
|
48
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
56
|
-
|
|
153
|
+
npx @balpal4495/quorum@latest init
|
|
154
|
+
npm install
|
|
57
155
|
```
|
|
58
156
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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.
|
|
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
|
|
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
|
|
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
|
-
##
|
|
395
|
+
## How it works under the hood
|
|
335
396
|
|
|
336
|
-
|
|
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
|
|
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
|
-
|
|
347
|
-
|
|
348
|
-
---
|
|
407
|
+
### How Jury works
|
|
349
408
|
|
|
350
|
-
|
|
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
|
-
|
|
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
|
-
|
|
413
|
+
### How Council works
|
|
368
414
|
|
|
369
|
-
A
|
|
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
|
|
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
|
|
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
|
-
|
|
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 "
|
|
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.
|