musememory 3.3.0 β 3.4.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/.agents/artifacts/README.md +21 -0
- package/.agents/artifacts/TECHNICAL_DEBT-wave24-25.md +1 -1
- package/.agents/artifacts/TECHNICAL_DEBT-wave26.md +2 -2
- package/.agents/artifacts/TECHNICAL_DEBT-wave27.md +3 -3
- package/.agents/artifacts/outcome-study-2026-11/README.md +64 -0
- package/.agents/artifacts/outcome-study-2026-11/graders/bytes.test.ts +12 -0
- package/.agents/artifacts/outcome-study-2026-11/graders/clone.test.ts +26 -0
- package/.agents/artifacts/outcome-study-2026-11/graders/csv.test.ts +11 -0
- package/.agents/artifacts/outcome-study-2026-11/graders/duration.test.ts +12 -0
- package/.agents/artifacts/outcome-study-2026-11/graders/isodate.test.ts +7 -0
- package/.agents/artifacts/outcome-study-2026-11/graders/money.test.ts +11 -0
- package/.agents/artifacts/outcome-study-2026-11/graders/percent.test.ts +11 -0
- package/.agents/artifacts/outcome-study-2026-11/graders/semver.test.ts +12 -0
- package/.agents/artifacts/outcome-study-2026-11/graders/slug.test.ts +12 -0
- package/.agents/artifacts/outcome-study-2026-11/graders/truncate.test.ts +10 -0
- package/.agents/artifacts/outcome-study-2026-11/tasks/bytes.md +3 -0
- package/.agents/artifacts/outcome-study-2026-11/tasks/clone.md +3 -0
- package/.agents/artifacts/outcome-study-2026-11/tasks/csv.md +3 -0
- package/.agents/artifacts/outcome-study-2026-11/tasks/duration.md +3 -0
- package/.agents/artifacts/outcome-study-2026-11/tasks/isodate.md +3 -0
- package/.agents/artifacts/outcome-study-2026-11/tasks/money.md +3 -0
- package/.agents/artifacts/outcome-study-2026-11/tasks/percent.md +3 -0
- package/.agents/artifacts/outcome-study-2026-11/tasks/semver.md +3 -0
- package/.agents/artifacts/outcome-study-2026-11/tasks/slug.md +3 -0
- package/.agents/artifacts/outcome-study-2026-11/tasks/truncate.md +3 -0
- package/.agents/context/architecture.md +7 -7
- package/.agents/context/current.md +160 -7
- package/.agents/context/evidence-ledger.md +21 -11
- package/.agents/context/index.md +1 -1
- package/.agents/context/product.md +4 -0
- package/.agents/context/roadmap.md +12 -9
- package/.agents/context/ticket-plan.md +7 -7
- package/.agents/plans/2026-10-20-wave-22-failure-attribution-negative-mining-design.md +1 -1
- package/.agents/plans/2026-10-20-wave-22-failure-attribution-negative-mining-plan.md +1 -1
- package/.agents/standards/README.md +6 -1
- package/.agents/standards/anti-patterns.md +116 -0
- package/.agents/standards/boundary-governance.md +52 -0
- package/.agents/standards/language-policy.md +115 -0
- package/.agents/standards/memory-context.md +1 -1
- package/.agents/standards/security-vibeguard.md +1 -1
- package/.agents/standards/test-failure-audit.md +46 -0
- package/.agents/standards/visual-inspection.md +31 -0
- package/claims.json +5 -5
- package/dist/index.js +6486 -4904
- package/docs/agent-reference.md +10 -1
- package/docs/cli-reference.md +16 -4
- package/docs/mcp-tool-matrix.json +8 -1
- package/package.json +2 -1
- package/.agents/artifacts/2026-10-20-lifeos-memory-distillation-plan.md +0 -865
- package/.agents/artifacts/2026-10-26-wave-29-code-review-audit.md +0 -52
- package/.agents/artifacts/2026-10-26-wave-29-gauntlet-acceptance-packet.md +0 -48
- package/.agents/artifacts/2026-10-26-wave-29-muse-security-audit.md +0 -71
- package/.agents/artifacts/2026-10-26-wave-29-sovereign-lifeos-migration-plan.md +0 -88
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
# ποΈ Working Artifacts Container
|
|
2
|
+
|
|
3
|
+
Scratch and evidence produced while working live here β never in the repository root.
|
|
4
|
+
|
|
5
|
+
## What belongs here
|
|
6
|
+
|
|
7
|
+
- Session research, gauntlets, audit packets, benchmark baselines, handoffs.
|
|
8
|
+
- Evidence attached to a claim in `.agents/context/current.md` (link the file, don't paste it).
|
|
9
|
+
- One directory per artifact when it has multiple files: `.agents/artifacts/<slug>/`.
|
|
10
|
+
|
|
11
|
+
## Rules
|
|
12
|
+
|
|
13
|
+
- **Not a secrets store.** Credentials, tokens and `.env` values never enter this tree.
|
|
14
|
+
- **Not a dump.** Delete superseded artifacts; this is working material, not an archive.
|
|
15
|
+
- **Retire, don't delete history.** Plans that are done move to
|
|
16
|
+
`.agents/archive/[title]-[timestamp].md`.
|
|
17
|
+
- **Never write to `./.memory/**`** β that directory is owned by the MuseMemory engine.
|
|
18
|
+
|
|
19
|
+
## Naming
|
|
20
|
+
|
|
21
|
+
`YYYY-MM-DD-<slug>.md` for single files; `YYYY-MM-DD-<slug>/` for multi-file artifacts.
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
| D2 | **partially wired**: `evaluateAsOf` respects `asserted_at`; no SQL column/index yet | `src/retrieval.ts`, `src/sqlite.ts` | Add an `asserted_at` column + migration if SQL filtering is needed |
|
|
7
7
|
| D3 | ~~duplicate decay module~~ **removed**: `retention.ts` owns decay and reinforcement | β | β |
|
|
8
8
|
| D4 | `muse_playbook_*` schemas declare no `required` array | `src/mcp.ts` | Declare required fields or document the runtime validation |
|
|
9
|
-
| D5 | Playbook writes use a fixed `.tmp` name (concurrent writers collide) | `src/cognition/playbooks.ts` |
|
|
9
|
+
| D5 | ~~Playbook writes use a fixed `.tmp` name (concurrent writers collide)~~ **done**: per-write temp name (`pid`+`randomUUID`) with `fsync` before rename and cleanup on failure. The audit also exposed a deeper bug the temp-name fix alone does not solve: `savePlaybook` and `recordPlaybookOutcome` are read-modify-write, so two processes both read the same list and the later rename silently drops the earlier write. Both now run inside `withStoreLock`. Verified: 8 concurrent processes persist 8/8; without the lock, 6 writers persisted 3 | `src/cognition/playbooks.ts` | β |
|
|
10
10
|
| D6 | ~~Site prerender blocked~~ **fixed**: Node-based Astro launcher; `site:qa` 17/17 SHIP | `apps/website/scripts/astro.mjs` | β |
|
|
11
11
|
| D7 | `--run` is a show alias; no step execution | `src/cli/playbook.ts` | Implement execution with confirmation or amend the ticket wording |
|
|
12
12
|
| D8 | `assets/showreel/README.md` had an executable bit; demo script uses `set -e` inside a recording | `assets/showreel` | Fixed mode; review recording ergonomics |
|
|
@@ -3,9 +3,9 @@
|
|
|
3
3
|
| # | Finding | Location | Fix |
|
|
4
4
|
|---|---|---|---|
|
|
5
5
|
| W26-1 | ~~Two fileβmemory resolvers~~ **done**: canonical `resolveMemoriesForCode`; pre-flight and PR context are adapters | `src/retrieval/code_context.ts` | β |
|
|
6
|
-
| W26-2 | Pre-flight token budget covers entries only;
|
|
6
|
+
| W26-2 | ~~Pre-flight token budget covers entries only~~ **done**: `tokenBudget` now bounds the whole assembled pack. `preflightContext` measures the final markdown and re-queries with a halved entry allocation until it fits; mandatory blocks (USER.md, CORE.md) are never dropped, and `markdownTokens` / `withinBudget` report the real figure instead of the entry subset. A pack that cannot fit says so rather than claiming compliance | `src/hooks/preflight.ts`, `src/cli/retrieval.ts`, `src/mcp.ts` | β |
|
|
7
7
|
| W26-3 | ~~Pre-flight is CLI-only~~ **done**: PreToolUse hook + read-only `muse_preflight` MCP tool | `src/hooks/pack.ts`, `src/mcp.ts` | β |
|
|
8
8
|
| W26-4 | `associated` is ids-only and not fused into ranking/token accounting | `src/retrieval.ts` | Fuse with `why_retrieved` vocabulary or document the consumer contract |
|
|
9
|
-
| W26-5 | Recursive CTE work is not bounded by `maxNodes` before projection
|
|
9
|
+
| W26-5 | ~~Recursive CTE work is not bounded by `maxNodes` before projection~~ **done**: the bound now also sits inside the recursive member. With it only on the outer SELECT, SQLite materialised the whole reachable frontier first β a 1200-node dense graph walked ~11.5k rows and took ~112ms (270ms at 3k nodes) to return at most 100. Bounded: ~7-10ms, identical output. Regression test asserts the wall-clock ceiling, so it fails if the inner LIMIT is removed | `src/associative.ts` | β |
|
|
10
10
|
|
|
11
11
|
- ~~**W26-6**: no audit event for cross-project/untrusted reads~~ **done**: `read` audit operation and events.
|
|
@@ -8,6 +8,6 @@
|
|
|
8
8
|
| W27-4 | ~~`scope: client` not wired~~ **descoped** per ADR-007; ticket/docs corrected | β | β |
|
|
9
9
|
| W27-5 | ~~Overlay archives accumulate~~ **done**: `overlay prune --max-age-days` | `src/store/branch.ts` | β |
|
|
10
10
|
| W27-6 | ~~Branch identity from `store.dir`~~ **done**: resolves from the workspace root | `src/store/branch.ts` | β |
|
|
11
|
-
| W27-7 | No MCP surfaces for enclave/attest/overlay | `src/mcp.ts` |
|
|
12
|
-
| W27-8 | **
|
|
13
|
-
| W27-9 |
|
|
11
|
+
| W27-7 | ~~No MCP surfaces for enclave/attest/overlay~~ **done**: read-only `muse_enclave_recall` (client required, audited), `muse_overlay_status`, `muse_attestation_verify` (inline key only) | `src/mcp.ts` | β |
|
|
12
|
+
| W27-8 | ~~Whole-vault rewrite~~ **done**: one AES-256-GCM file per entry under `<client>/<division>/`; legacy single-file vaults are read and migrated on the next write; per-entry and per-vault size caps | `src/store/enclaves.ts` | β |
|
|
13
|
+
| W27-9 | ~~No overlay size caps~~ **done**: `MAX_OVERLAY_ENTRIES` (1000) and `MAX_OVERLAY_BYTES` (2 MiB) fail loud before any write | `src/store/branch.ts` | β |
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Outcome Study β With/Without Memory (2026-11-09)
|
|
2
|
+
|
|
3
|
+
A ten-task, condition-blind study of whether recalled project conventions change
|
|
4
|
+
an agent's implementation output. This replaces the two-task pilot in
|
|
5
|
+
`docs/evidence/2026-11-outcome-pilot.md` as the evidence behind EVD-005/EVD-008.
|
|
6
|
+
|
|
7
|
+
## Design
|
|
8
|
+
|
|
9
|
+
- **Tasks**: ten small TypeScript functions (`formatMoney`, `parseDuration`,
|
|
10
|
+
`formatBytes`, `toIsoDate`, `truncateText`, `slugify`, `compareSemver`,
|
|
11
|
+
`cloneValue`, `formatPercent`, `csvField`). Each has a hidden Bun test that
|
|
12
|
+
checks ordinary correctness *and* one non-obvious project convention.
|
|
13
|
+
- **Arms**: identical instructions in both arms. Every implementer was told to
|
|
14
|
+
run `memory recall "<query>" --project outcome-study` before writing code.
|
|
15
|
+
The *only* difference was whether the convention was seeded in the store:
|
|
16
|
+
- `with`: all ten conventions (confirmed constraints) plus three decoys.
|
|
17
|
+
- `without`: one generic decoy only.
|
|
18
|
+
- **Blinding**: implementers were not told a study existed, were not told which
|
|
19
|
+
arm they were in, and never saw the hidden tests. Grading was mechanical.
|
|
20
|
+
- **Grading**: each solution was copied beside its hidden test and run with
|
|
21
|
+
`bun test` under `TZ=America/New_York` (non-UTC, so the date convention is
|
|
22
|
+
actually discriminating).
|
|
23
|
+
- **Model**: one model per arm, matching the pilot's single-model design.
|
|
24
|
+
|
|
25
|
+
## Result
|
|
26
|
+
|
|
27
|
+
| Task | With | Without | Failure without memory |
|
|
28
|
+
|---|---|---|---|
|
|
29
|
+
| `formatMoney` | pass | pass | β |
|
|
30
|
+
| `parseDuration` | pass | **fail** | returned milliseconds (500 for `"500ms"`) |
|
|
31
|
+
| `formatBytes` | pass | pass | β |
|
|
32
|
+
| `toIsoDate` | pass | **fail** | local calendar date (`2025-12-31` for a UTC `2026-01-01`) |
|
|
33
|
+
| `truncateText` | pass | pass | β |
|
|
34
|
+
| `slugify` | pass | **fail** | no 60-character cap (returned 80) |
|
|
35
|
+
| `compareSemver` | pass | pass | β |
|
|
36
|
+
| `cloneValue` | pass | pass | β |
|
|
37
|
+
| `formatPercent` | pass | pass | β |
|
|
38
|
+
| `csvField` | pass | **fail** | did not quote leading/trailing whitespace |
|
|
39
|
+
|
|
40
|
+
**with memory 10/10 (100%) Β· without memory 6/10 (60%)** β a 40-point gap,
|
|
41
|
+
four discriminating tasks, zero regressions (no task passed without memory and
|
|
42
|
+
failed with it).
|
|
43
|
+
|
|
44
|
+
Fisher's exact test, one-sided: **p = 0.043** (two-sided β 0.087). The direction
|
|
45
|
+
is consistent, but n = 10 is small.
|
|
46
|
+
|
|
47
|
+
## Limits
|
|
48
|
+
|
|
49
|
+
- Ten tasks, one run per arm, one model. Not a productivity study.
|
|
50
|
+
- The task set was constructed so each task carries an unstated convention;
|
|
51
|
+
that deliberately favours memory and makes 40 points an upper bound for
|
|
52
|
+
ordinary work.
|
|
53
|
+
- The harness supplied the retrieval query; an agent choosing its own query
|
|
54
|
+
(or not querying at all) is a different, untested condition.
|
|
55
|
+
- Five tasks did not discriminate: those conventions were either guessed
|
|
56
|
+
correctly or did not affect the hidden test.
|
|
57
|
+
|
|
58
|
+
## Reproducing
|
|
59
|
+
|
|
60
|
+
- `tasks/<id>.md` β the exact implementer prompt for each task.
|
|
61
|
+
- `graders/<id>.test.ts` β the hidden test for each task.
|
|
62
|
+
- Rebuild fixtures and rerun with a fresh agent population; the seeds are the
|
|
63
|
+
convention sentences in this directory's history. Do not reuse these graders
|
|
64
|
+
for a second study against the same model without authoring new tasks.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { expect, test } from "bun:test";
|
|
2
|
+
import { formatBytes } from "./solution";
|
|
3
|
+
test("formatBytes", () => {
|
|
4
|
+
expect(formatBytes(0)).toBe("0 B");
|
|
5
|
+
expect(formatBytes(512)).toBe("512 B");
|
|
6
|
+
expect(formatBytes(1024)).toBe("1.0 KiB");
|
|
7
|
+
expect(formatBytes(1536)).toBe("1.5 KiB");
|
|
8
|
+
expect(formatBytes(1048576)).toBe("1.0 MiB");
|
|
9
|
+
expect(formatBytes(1073741824)).toBe("1.0 GiB");
|
|
10
|
+
expect(formatBytes(1500000)).toBe("1.4 MiB");
|
|
11
|
+
expect(formatBytes(1023)).toBe("1023 B");
|
|
12
|
+
});
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { expect, test } from "bun:test";
|
|
2
|
+
import { cloneValue } from "./solution";
|
|
3
|
+
test("cloneValue", () => {
|
|
4
|
+
const d = new Date(1700000000000);
|
|
5
|
+
const cd = cloneValue(d);
|
|
6
|
+
expect(cd).toBeInstanceOf(Date);
|
|
7
|
+
expect(cd.getTime()).toBe(d.getTime());
|
|
8
|
+
expect(cd).not.toBe(d);
|
|
9
|
+
|
|
10
|
+
const m = new Map<string, number>([["a", 1]]);
|
|
11
|
+
const cm = cloneValue(m);
|
|
12
|
+
expect(cm).toBeInstanceOf(Map);
|
|
13
|
+
expect(cm.get("a")).toBe(1);
|
|
14
|
+
expect(cm).not.toBe(m);
|
|
15
|
+
|
|
16
|
+
const s = new Set([1, 2]);
|
|
17
|
+
const cs = cloneValue(s);
|
|
18
|
+
expect(cs).toBeInstanceOf(Set);
|
|
19
|
+
expect(cs.has(2)).toBe(true);
|
|
20
|
+
|
|
21
|
+
const obj = { a: { b: [1, 2] }, n: null as null | number };
|
|
22
|
+
const co = cloneValue(obj);
|
|
23
|
+
expect(co).toEqual(obj);
|
|
24
|
+
co.a.b.push(3);
|
|
25
|
+
expect(obj.a.b.length).toBe(2);
|
|
26
|
+
});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { expect, test } from "bun:test";
|
|
2
|
+
import { csvField } from "./solution";
|
|
3
|
+
test("csvField", () => {
|
|
4
|
+
expect(csvField("abc")).toBe("abc");
|
|
5
|
+
expect(csvField("")).toBe("");
|
|
6
|
+
expect(csvField("a,b")).toBe('"a,b"');
|
|
7
|
+
expect(csvField('he said "hi"')).toBe('"he said ""hi"""');
|
|
8
|
+
expect(csvField("line\nbreak")).toBe('"line\nbreak"');
|
|
9
|
+
expect(csvField(" padded ")).toBe('" padded "');
|
|
10
|
+
expect(csvField('a"b')).toBe('"a""b"');
|
|
11
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { expect, test } from "bun:test";
|
|
2
|
+
import { parseDuration } from "./solution";
|
|
3
|
+
test("parseDuration", () => {
|
|
4
|
+
expect(parseDuration("500ms")).toBe(0.5);
|
|
5
|
+
expect(parseDuration("30s")).toBe(30);
|
|
6
|
+
expect(parseDuration("5m")).toBe(300);
|
|
7
|
+
expect(parseDuration("2h")).toBe(7200);
|
|
8
|
+
expect(parseDuration("45")).toBe(45);
|
|
9
|
+
expect(parseDuration("1.5h")).toBe(5400);
|
|
10
|
+
expect(parseDuration("10S")).toBe(10);
|
|
11
|
+
expect(() => parseDuration("banana")).toThrow();
|
|
12
|
+
});
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { expect, test } from "bun:test";
|
|
2
|
+
import { toIsoDate } from "./solution";
|
|
3
|
+
test("toIsoDate", () => {
|
|
4
|
+
expect(toIsoDate(new Date(Date.UTC(2026, 0, 1, 0, 0, 0)))).toBe("2026-01-01");
|
|
5
|
+
expect(toIsoDate(new Date(Date.UTC(2026, 11, 31, 23, 59, 59)))).toBe("2026-12-31");
|
|
6
|
+
expect(toIsoDate(new Date(Date.UTC(2026, 2, 5, 12, 0, 0)))).toBe("2026-03-05");
|
|
7
|
+
});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { expect, test } from "bun:test";
|
|
2
|
+
import { formatMoney } from "./solution";
|
|
3
|
+
test("formatMoney", () => {
|
|
4
|
+
expect(formatMoney(123456)).toBe("$1,234.56");
|
|
5
|
+
expect(formatMoney(0)).toBe("$0.00");
|
|
6
|
+
expect(formatMoney(5)).toBe("$0.05");
|
|
7
|
+
expect(formatMoney(1234)).toBe("$12.34");
|
|
8
|
+
expect(formatMoney(-123456)).toBe("-$1,234.56");
|
|
9
|
+
expect(formatMoney(-5)).toBe("-$0.05");
|
|
10
|
+
expect(formatMoney(123456789)).toBe("$1,234,567.89");
|
|
11
|
+
});
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { expect, test } from "bun:test";
|
|
2
|
+
import { formatPercent } from "./solution";
|
|
3
|
+
test("formatPercent", () => {
|
|
4
|
+
expect(formatPercent(0.5)).toBe("50%");
|
|
5
|
+
expect(formatPercent(0.125)).toBe("12.5%");
|
|
6
|
+
expect(formatPercent(1)).toBe("100%");
|
|
7
|
+
expect(formatPercent(0)).toBe("0%");
|
|
8
|
+
expect(formatPercent(0.333)).toBe("33.3%");
|
|
9
|
+
expect(formatPercent(-0.25)).toBe("-25%");
|
|
10
|
+
expect(formatPercent(1).includes(".0")).toBe(false);
|
|
11
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { expect, test } from "bun:test";
|
|
2
|
+
import { compareSemver } from "./solution";
|
|
3
|
+
test("compareSemver", () => {
|
|
4
|
+
expect(compareSemver("1.0.0", "1.0.1")).toBe(-1);
|
|
5
|
+
expect(compareSemver("1.0.0-alpha", "1.0.0")).toBe(-1);
|
|
6
|
+
expect(compareSemver("1.0.0", "1.0.0-alpha")).toBe(1);
|
|
7
|
+
expect(compareSemver("1.0.0-alpha.1", "1.0.0-alpha.2")).toBe(-1);
|
|
8
|
+
expect(compareSemver("1.0.0-alpha.10", "1.0.0-alpha.2")).toBe(1);
|
|
9
|
+
expect(compareSemver("1.0.0+build1", "1.0.0+build2")).toBe(0);
|
|
10
|
+
expect(compareSemver("2.0.0", "10.0.0")).toBe(-1);
|
|
11
|
+
expect(compareSemver("1.2.3", "1.2.3")).toBe(0);
|
|
12
|
+
});
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { expect, test } from "bun:test";
|
|
2
|
+
import { slugify } from "./solution";
|
|
3
|
+
test("slugify", () => {
|
|
4
|
+
expect(slugify("HΓ©llo, World!")).toBe("hello-world");
|
|
5
|
+
expect(slugify(" A B ")).toBe("a-b");
|
|
6
|
+
expect(slugify("foo_bar")).toBe("foo-bar");
|
|
7
|
+
expect(slugify("CafΓ© DΓ©jΓ Vu")).toBe("cafe-deja-vu");
|
|
8
|
+
expect(slugify("---")).toBe("");
|
|
9
|
+
const long = slugify("a".repeat(80));
|
|
10
|
+
expect(long.length).toBe(60);
|
|
11
|
+
expect(long.endsWith("-")).toBe(false);
|
|
12
|
+
});
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { expect, test } from "bun:test";
|
|
2
|
+
import { truncateText } from "./solution";
|
|
3
|
+
test("truncateText", () => {
|
|
4
|
+
expect(truncateText("short", 10)).toBe("short");
|
|
5
|
+
expect(truncateText("hello world", 8)).toBe("hello wβ¦");
|
|
6
|
+
expect(truncateText("abcdef", 1)).toBe("β¦");
|
|
7
|
+
expect(truncateText("abcdef", 6)).toBe("abcdef");
|
|
8
|
+
expect(truncateText("πππ", 2)).toBe("πβ¦");
|
|
9
|
+
expect(truncateText("hello world", 8).length).toBe(8);
|
|
10
|
+
});
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
β β
|
|
16
16
|
β βββββββββββββββββββββ ββββββββββββββββββββ ββββββββββββββββ β
|
|
17
17
|
β β Retrieval Engine β β Vibeguard Secret β β Auto-Migrate β β
|
|
18
|
-
β β (Token Knapsack) β β Defense Scanner β β (
|
|
18
|
+
β β (Token Knapsack) β β Defense Scanner β β (30 Formats)β β
|
|
19
19
|
β βββββββββββββββββββββ ββββββββββββββββββββ ββββββββββββββββ β
|
|
20
20
|
β βββββββββββββββββββββ ββββββββββββββββββββ ββββββββββββββββ β
|
|
21
21
|
β β LifeCycle Machine β β JSONL Harvester β β Audit Ledger β β
|
|
@@ -58,14 +58,14 @@ musememory/
|
|
|
58
58
|
β βββ cognition/ # Autonomous "Why" reasoner, bug clustering, tech debt
|
|
59
59
|
β βββ compaction/ # 70% context compaction engine & session handoffs
|
|
60
60
|
β βββ compounding/ # Unified knowledge compounding (temporal & clustering)
|
|
61
|
-
β βββ connect.ts # Declarative zero-permission auto-wiring across
|
|
61
|
+
β βββ connect.ts # Declarative zero-permission auto-wiring across 52 agent platforms
|
|
62
62
|
β βββ current.ts # CURRENT.md read/append constraints engine
|
|
63
63
|
β βββ doctor.ts # Ecosystem diagnostic & health check engine
|
|
64
64
|
β βββ health/ # Unified 5-Pillar Project Health Gate engine
|
|
65
65
|
β βββ harvester.ts # Universal agent transcript discovery and auto-learner engine
|
|
66
66
|
β βββ intelligence/ # Pluggable code intelligence providers (CodeGraph, Graphify, LSP, AST)
|
|
67
67
|
β βββ learning/ # Observation, candidate distillation, negative anti-patterns
|
|
68
|
-
β βββ mcp.ts # Model Context Protocol stdio server (
|
|
68
|
+
β βββ mcp.ts # Model Context Protocol stdio server (126 tools with profiles)
|
|
69
69
|
β βββ mesh/ # Multi-repo & monorepo workspace discovery, query resolver, contracts
|
|
70
70
|
β βββ orchestrator/ # Flagship muse_context fusion, bidirectional lookups, MCP profiles
|
|
71
71
|
β βββ paths.ts # Strict path containment (resolveWithin) & intentional-external opt-out (resolveExternal)
|
|
@@ -81,10 +81,10 @@ musememory/
|
|
|
81
81
|
β βββ types.ts # Core TypeScript interfaces & enums
|
|
82
82
|
β βββ ui.ts # Full Web Observability Studio & 3D knowledge graph
|
|
83
83
|
β βββ user.ts # Persona & working preference engine
|
|
84
|
-
β βββ agents/ # Workstation coding agents detection & registry (
|
|
85
|
-
β βββ migrator/ # Multi-provider auto-detection & migration engine (
|
|
86
|
-
βββ test/ # Automated Bun test suites (
|
|
87
|
-
βββ package.json # Package metadata & dependencies (
|
|
84
|
+
β βββ agents/ # Workstation coding agents detection & registry (52 platforms)
|
|
85
|
+
β βββ migrator/ # Multi-provider auto-detection & migration engine (30 providers)
|
|
86
|
+
βββ test/ # Automated Bun test suites (1592 tests across 252 suites)
|
|
87
|
+
βββ package.json # Package metadata & dependencies (v3.4.0)
|
|
88
88
|
βββ dist/ # Compiled Node/Bun bundle
|
|
89
89
|
```
|
|
90
90
|
|
|
@@ -1,7 +1,160 @@
|
|
|
1
1
|
# π Current Shipped State & Active Invariants
|
|
2
2
|
|
|
3
|
-
> **Version**: `v3.
|
|
4
|
-
> **Status**: Wave 29 Landed β Sovereign
|
|
3
|
+
> **Version**: `v3.4.0` (post-release `dev`)
|
|
4
|
+
> **Status**: Wave 29 Landed β Sovereign Ecosystem Migration & Complete Decommissioning (T-444 to T-448).
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## π§Ύ Session β Changelog Repair & D5 Write Race (2026-11-10)
|
|
9
|
+
|
|
10
|
+
**v3.3.0 shipped with no changelog section.** The tag and the npm publish
|
|
11
|
+
both went out while all 29 release bullets were still under `[Unreleased]`,
|
|
12
|
+
so the published release notes omitted the entire release; the section also
|
|
13
|
+
carried two separate `### Added` headings. Promoted the 29 bullets verbatim
|
|
14
|
+
into a dated `[3.3.0]` section (verified byte-identical against
|
|
15
|
+
`git show v3.3.0:CHANGELOG.md`), rebuilt `[Unreleased]` from only the 12
|
|
16
|
+
post-tag bullets, and added the five changes from this session. There is no
|
|
17
|
+
CI check for changelog structure β this was only caught by reading it.
|
|
18
|
+
|
|
19
|
+
**D5 β playbook writes lost data across processes.** The debt said "random
|
|
20
|
+
temp suffix + fsync". Implementing exactly that did **not** fix the bug: 8
|
|
21
|
+
concurrent processes still persisted only 5. The temp-name fix prevents
|
|
22
|
+
staging collisions, but `savePlaybook` and `recordPlaybookOutcome` are
|
|
23
|
+
read-modify-write, so both processes read the same list and the later rename
|
|
24
|
+
drops the earlier write. Wrapping both in the existing `withStoreLock`
|
|
25
|
+
fixed it β 8/8 persist. Outcome recording had the same race, silently
|
|
26
|
+
corrupting the success/failure ratio ranking depends on.
|
|
27
|
+
|
|
28
|
+
**Lesson recorded:** the first regression test used an in-process
|
|
29
|
+
`Promise.all` race and passed with *and* without the fix, because the write
|
|
30
|
+
path is synchronous and can never interleave in one process. It was
|
|
31
|
+
replaced with a real multi-process test; both guards now fail against the
|
|
32
|
+
old implementation (6 expected, 3 received).
|
|
33
|
+
|
|
34
|
+
Gate: `bun test` 1592/1592 pass across 252 files; `bunx tsc --noEmit`
|
|
35
|
+
clean; `check:landed` β **LANDED** at `9270d97`.
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## π§Ύ Session β Stack Landing, W26-5 CTE Bound & PR Queue Cleanup (2026-11-10)
|
|
40
|
+
|
|
41
|
+
**CI gap on stacked PRs (#390).** The `pull_request` trigger listed only
|
|
42
|
+
`main`/`master`/`dev`. Retargeting stacked PRs onto their parent branches
|
|
43
|
+
therefore left three of four layers with **no CI at all** β they reported
|
|
44
|
+
"no checks reported" and looked fine to a reviewer. Widened the filter to
|
|
45
|
+
`["**"]`. Note for future stack work: GitHub reads `pull_request`
|
|
46
|
+
workflows from the **base** branch, so the fix has to reach the base first.
|
|
47
|
+
Retargeting alone emits no event; a close/reopen is what re-triggers CI.
|
|
48
|
+
|
|
49
|
+
**W26-5 β recursive CTE bound.** `maxNodes` was clamped and passed to SQL,
|
|
50
|
+
but `LIMIT` sat only on the outer `SELECT`, so SQLite materialised the whole
|
|
51
|
+
reachable frontier before projecting. `preflightContext` calls this path on
|
|
52
|
+
every file open. A `LIMIT` inside the recursive member took a 3000-node
|
|
53
|
+
dense graph from **269.8ms to 9.7ms** (27x) with identical output. The
|
|
54
|
+
regression test asserts a 50ms ceiling and was verified to *fail* without
|
|
55
|
+
the fix (177ms) β a guard that only passes is not a guard.
|
|
56
|
+
|
|
57
|
+
**W26-2 follow-up.** The over-budget message printed the pack total beside
|
|
58
|
+
the word "over" β "192 tokens (over budget: 192 tokens)" reads as "over by
|
|
59
|
+
192" when the overage was 42. Now "(over the 150 budget)". Caught by
|
|
60
|
+
running the CLI, not by tests, which asserted engine fields but never the
|
|
61
|
+
printed line.
|
|
62
|
+
|
|
63
|
+
**PR queue cleaned.** Five spec PRs (#52β#56) were closed as superseded:
|
|
64
|
+
their content already lives in `roadmap.md` in more detail, they targeted
|
|
65
|
+
`main` against the `dev` convention, and each added a file to
|
|
66
|
+
`.agents/plans/` β gitignored by ADR-008, so merging would have re-tracked
|
|
67
|
+
a path the repo deliberately excluded.
|
|
68
|
+
|
|
69
|
+
Gate: `bun test` 1590/1590 pass across 252 files; `bunx tsc --noEmit`
|
|
70
|
+
clean; 162 doc links resolve; `check:landed` β **LANDED** at `df9e43f`.
|
|
71
|
+
|
|
72
|
+
---
|
|
73
|
+
|
|
74
|
+
## π§Ύ Session β Agent Context Sync & AI-Readiness Closeout (2026-11-10)
|
|
75
|
+
|
|
76
|
+
**Context drift repaired.** Agent-facing docs had fallen behind the engine:
|
|
77
|
+
`AGENTS.md` pinned `v3.0.2` and `.agents/context/index.md` pinned `v3.1.0`
|
|
78
|
+
while `package.json` is `3.3.0`. `architecture.md` still advertised 69 MCP
|
|
79
|
+
tools, 80+ agent platforms, 24+ migrator formats, 498 tests across 81 suites
|
|
80
|
+
and `v2.0.0`; the generated `claims.json` says 126 tools, 52 platforms, 30
|
|
81
|
+
providers and 1584 tests across 251 files. All corrected from the generated
|
|
82
|
+
source of truth, not from prose.
|
|
83
|
+
|
|
84
|
+
**Roadmap debt closed.** The status table was dated `v2.3.0` and still listed
|
|
85
|
+
"no branch-aware memory" as missing; `memory branch/checkout/blame` (R23) and
|
|
86
|
+
branch-isolated overlays (T-436) both shipped, so the row now records them.
|
|
87
|
+
|
|
88
|
+
**Standards adopted.** Five canonical core standards that were never present
|
|
89
|
+
here are now materialised and routed from `AGENTS.md`: `anti-patterns.md`,
|
|
90
|
+
`boundary-governance.md`, `test-failure-audit.md`, `language-policy.md` and
|
|
91
|
+
`visual-inspection.md`. Curated local standards (project-specific naming, the
|
|
92
|
+
project's own Landing Gate, `memory scan-secrets`) were deliberately **not**
|
|
93
|
+
overwritten β the canon differs from them by design, and the sync engine
|
|
94
|
+
reports that divergence rather than clobbering it.
|
|
95
|
+
|
|
96
|
+
**Audit 9/14 β 14/14.** Added the assets the readiness matrix was missing:
|
|
97
|
+
`.env.example` documenting the 15 real `MUSE_*` variables, `.mcp.json` wiring
|
|
98
|
+
this repo's own MCP server (smoke-tested over stdio), a root `llms.txt` index,
|
|
99
|
+
a `.agents/artifacts/README.md` contract stub, and the six Wave-23 terrain maps
|
|
100
|
+
generated by the repo's own `writeWorkspaceTerrain` (not hand-written), which
|
|
101
|
+
pass the terrain audit with zero credential leaks and zero hardcoded paths.
|
|
102
|
+
|
|
103
|
+
Gate: `bun test` 1584/1584 pass, `bunx tsc --noEmit` clean, 162 doc links
|
|
104
|
+
resolve, `--lint-context` clean, `--check` reports zero context drift.
|
|
105
|
+
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
## π§Ύ Session β Outcome Study & W27-7 Read-Only Surfaces (2026-11-09)
|
|
109
|
+
|
|
110
|
+
**Outcome study (EVD-008).** Replaced the two-task pilot with a ten-task,
|
|
111
|
+
condition-blind study. Both arms received identical instructions and were told
|
|
112
|
+
to consult memory; the only variable was whether ten project conventions were
|
|
113
|
+
seeded. Result: **10/10 with memory vs 6/10 without**, four discriminating tasks
|
|
114
|
+
(duration units, UTC dates, slug length cap, CSV whitespace quoting), zero
|
|
115
|
+
regressions, Fisher one-sided p = 0.043. EVD-005 is no longer quarantined β its
|
|
116
|
+
statement was narrowed to convention recall rather than an unqualified
|
|
117
|
+
productivity claim. Evidence: `docs/evidence/2026-11-outcome-study.md` and
|
|
118
|
+
`.agents/artifacts/outcome-study-2026-11/`.
|
|
119
|
+
|
|
120
|
+
**W27-7 read-only MCP surfaces.** Added three read-only tools with explicit
|
|
121
|
+
scope: `muse_enclave_recall` (client required, every read audit-logged),
|
|
122
|
+
`muse_overlay_status` (list or inspect branch overlays, never mutates), and
|
|
123
|
+
`muse_attestation_verify` (inline public key only β no model-supplied file
|
|
124
|
+
paths). `src/store/branch.ts` gained `listBranchOverlays`. Tool count 119 β 122;
|
|
125
|
+
claims and CLI reference regenerated; `test/mcp_readonly_surfaces.test.ts`
|
|
126
|
+
covers the happy paths, the fail-loud cases and the read-only guarantee.
|
|
127
|
+
Still open from the Wave 27 debt table: W27-8 (whole-vault rewrite) and W27-9
|
|
128
|
+
(overlay size caps).
|
|
129
|
+
|
|
130
|
+
**Follow-up (same day) β W27-8/W27-9 closed, R29 started.** Enclave vaults now
|
|
131
|
+
store one AES-256-GCM file per entry under `<client>/<division>/`; a write no
|
|
132
|
+
longer rewrites the vault, legacy single-file vaults stay readable and migrate
|
|
133
|
+
on the next write, and per-entry (1 MiB) plus per-vault (5000) caps fail loud.
|
|
134
|
+
Branch overlays are capped at 1000 entries / 2 MiB. `muse_enclave_recall` now
|
|
135
|
+
redacts credentials with `redactSecrets` before returning content. On the
|
|
136
|
+
operations side, `audit.jsonl` rotates at 5 MiB into `audit-archive/` (five
|
|
137
|
+
segments retained by default), pruning writes a chain anchor so
|
|
138
|
+
`getAuditTrail`/`getLastAuditHash`/`verifyAuditChain` remain valid across the
|
|
139
|
+
retained window, and `memory io [--json]` reports `/proc/self/io` counters plus
|
|
140
|
+
SQLite/WAL/audit/observation bytes. R29 is now complete except for optional
|
|
141
|
+
async batching: the YAML mirror can be skipped with `MUSE_YAML_MIRROR=0` /
|
|
142
|
+
`openStore({ yamlMirror: false })` (SQLite stays authoritative), and the WAL is
|
|
143
|
+
bounded by `wal_autocheckpoint = 512` and `journal_size_limit = 64 MiB`.
|
|
144
|
+
|
|
145
|
+
**Wave 28 complete (`T-440`β`T-443`).** The outcome loop is wired both ways:
|
|
146
|
+
`test_feedback.ts` parses bun/vitest/jest/cargo/pytest/go output, binds a real run
|
|
147
|
+
to the applied memory IDs, and reinforces green runs or records a failed
|
|
148
|
+
application plus a T-313 regression strike only for anchor-relevant memories.
|
|
149
|
+
`cognition/sentry.ts` matches failures against BUG_PRONE_PATTERN / DO_NOT_USE /
|
|
150
|
+
failed-approach memories and returns reproduction/avoidance/recommendation
|
|
151
|
+
playbooks without mutating anything. `doctor/flaky.ts` reconstructs the run
|
|
152
|
+
history and reports flaky tests (per command), failure bursts and dependency-file
|
|
153
|
+
drift before a burst. `cognition/remediation.ts` turns recurring failures into
|
|
154
|
+
playbook candidates and persists resolved ones (dry-run by default). Surfaces:
|
|
155
|
+
`memory test-feedback`, `sentry`, `flaky`, `remediation`, `memory_test_feedback`,
|
|
156
|
+
`muse_regression_sentry`, `muse_flaky_tests`, `muse_remediation_playbooks`
|
|
157
|
+
(126 tools).
|
|
5
158
|
|
|
6
159
|
---
|
|
7
160
|
|
|
@@ -33,12 +186,12 @@ Restored `AGENTS.md` byte-exact from HEAD after an `updateagents` run from the u
|
|
|
33
186
|
|
|
34
187
|
## ποΈ Wave 29 β Sovereign Ecosystem Migration & Decommissioning Complete (2026-10-26)
|
|
35
188
|
|
|
36
|
-
All personal identity, telos, operational rules, and hardware terrain scanning migrated into sovereign `musememory` engines, native Vibeguard secret scanning, and
|
|
189
|
+
All personal identity, telos, operational rules, and hardware terrain scanning migrated into sovereign `musememory` engines, native Vibeguard secret scanning, and decommissioned legacy agent governance. Legacy import tools have been permanently purged from source:
|
|
37
190
|
|
|
38
|
-
- **Sovereign Persona & Store Ingestion (`T-444`)**: Identity, telos, and operational rules synthesized directly into sovereign `~/.memory/USER.md` persona and SQLite store.
|
|
191
|
+
- **Sovereign Persona & Store Ingestion (`T-444`)**: Identity, telos, and operational rules synthesized directly into sovereign `~/.memory/USER.md` persona and SQLite store. The legacy import tool was permanently deleted from source.
|
|
39
192
|
- **Native Vibeguard CLI (`T-445`)**: `memory scan-secrets [dir]` standalone zero-dependency secret scanner replacing legacy external scripts (`test/cli_secrets.test.ts`).
|
|
40
193
|
- **Machine Terrain Collector (`T-446`)**: `memory terrain [--out file.md]` compiles deterministic hardware, toolchain, and local agent ecosystem maps into `system.md` (`test/vault_system.test.ts`).
|
|
41
|
-
- **Global Governance
|
|
194
|
+
- **Global Governance Decommissioning (`T-447`)**: Removed all 6 legacy imports and paths from `~/.agents/AGENTS.md` and repository standards, binding truth directly to `~/.memory/USER.md` and `memory` MCP.
|
|
42
195
|
- **Sovereignty Decommissioning Gate (`T-448`)**: Enforces zero external legacy imports, confirms legacy tool removal, and passes 100% cleanly in `test/sovereignty_gate.test.ts`.
|
|
43
196
|
- **Golden Sequence Documentation**: Published the complete 4-phase best-practice sequence for using Muse Memory with AI coding agents in `README.md`, `docs/agent-reference.md`, and `docs/cli-reference.md`.
|
|
44
197
|
|
|
@@ -276,7 +429,7 @@ on any blocking failure, so CI runs it. Report:
|
|
|
276
429
|
- `T-144`: Trajectory fix-pair mining discovering negative memories (`AVOID: ...`) from *Error β Remediation β No Recurrence* observation sequences with affinity filters excluding non-mutating commands (`ls`, `cat`), dynamic line number normalization, Vibeguard secret scrubbing, and session volume cap of max 3 candidates (`test/fix_pair_mining.test.ts`, commit `cc4b5c5`).
|
|
277
430
|
- `T-314`: Source-tagged recall hits wiring `.memory/HOT.md` candidates into retrieval ranking with sub-millisecond memoized `mtime` cache, origin tagging (`source_channels: ("hot" | "fts" | "vector" | "tree" | "distilled")[]`), relevance-gated `sourceBonus` (+0.20), and explainability tokens (`source:hot`, `source:fts`) (`test/source_tagging_frequency.test.ts`, commit `f9f6a93`).
|
|
278
431
|
- `T-315`: LangMem logarithmic frequency rank curve ($0.25 \times \frac{\ln(1 + \text{effectiveCount})}{\ln(1 + 50)}$) replacing unbounded linear frequency scoring; weights verified memory applications $2\times$ over passive context loads; 7-day recency bonus (+0.05) capped at 0.30; outputs `freq:high` tokens (`test/source_tagging_frequency.test.ts`, commit `f3c8f1d`).
|
|
279
|
-
- [x] **Wave 21:
|
|
432
|
+
- [x] **Wave 21: Ecosystem Distillation, Mutation Safety & Knowledge Routing**:
|
|
280
433
|
- `T-050`: Overnight & in-lock mutation safety guards (`verifyMutationSafety`, `MutationSafetyError`, `ESUSPECT_SHRINK`, `ESUSPECT_EROSION`, `allowDrastic`) preventing accidental bulk erasure or semantic erosion during compaction/governance (`test/mutation_guards.test.ts`, commit `439e31c`).
|
|
281
434
|
- `T-177`: Pre-mutation 30-snapshot rolling ring buffer (`captureSnapshotRing`, `listSnapshotRing`, `restoreSnapshotRing`) with zero resident daemons in `.memory/snapshots/` before write transactions and compaction handoffs (`test/snapshot_ring.test.ts`, commit `76c58eb`).
|
|
282
435
|
- `T-324`: Diff-preserving `CURRENT.md` checkpoint merge semantics (`parseCurrentConstraints`, `mergeCurrentConstraints`), preventing mid-session hand-added constraints from being overwritten (`test/current_compaction_guard.test.ts`, commit `f1a4756`).
|
|
@@ -474,4 +627,4 @@ Removed remaining competitor product names and external comparison links from we
|
|
|
474
627
|
## 1. Verified Shipped Reality
|
|
475
628
|
- **2026-10-22**: T-321 per-project health gate scope
|
|
476
629
|
- **2026-10-22**: T-320 contradiction engine calibration
|
|
477
|
-
- **2026-10-20**: Wave 21:
|
|
630
|
+
- **2026-10-20**: Wave 21: Ecosystem Distillation, Mutation Safety & Knowledge Routing (T-050, T-177, T-324)
|
|
@@ -5,16 +5,16 @@
|
|
|
5
5
|
| Category | Count |
|
|
6
6
|
|---|---|
|
|
7
7
|
| DECISION | 1 |
|
|
8
|
-
| CLAIM |
|
|
8
|
+
| CLAIM | 6 |
|
|
9
9
|
| STATUS | 1 |
|
|
10
10
|
|
|
11
11
|
| Status | Count |
|
|
12
12
|
|---|---|
|
|
13
|
-
| VERIFIED |
|
|
14
|
-
|
|
|
15
|
-
|
|
|
13
|
+
| VERIFIED | 6 |
|
|
14
|
+
| ACTIVE | 2 |
|
|
15
|
+
| QUARANTINED | 0 |
|
|
16
16
|
|
|
17
|
-
**Health score**:
|
|
17
|
+
**Health score**: 6 / 6 claims verified (100%) β the previous quarantine on EVD-005 is resolved by EVD-008; the remaining two entries are an active fix record and an active decision.
|
|
18
18
|
|
|
19
19
|
---
|
|
20
20
|
|
|
@@ -59,12 +59,12 @@
|
|
|
59
59
|
---
|
|
60
60
|
|
|
61
61
|
### EVD-005 | 2026-11-09 | CLAIM
|
|
62
|
-
**Statement
|
|
62
|
+
**Statement** *(revised)*: On convention-sensitive coding tasks, an agent that can recall the project's stored conventions produces more correct implementations than the same agent without them.
|
|
63
63
|
**Category**: `CLAIM`
|
|
64
|
-
**Confidence**: `[
|
|
65
|
-
**Epistemology**: `[
|
|
66
|
-
**Evidence**:
|
|
67
|
-
**Status**: `
|
|
64
|
+
**Confidence**: `[EMPIRICAL]` β a ten-task condition-blind study (EVD-008) measured 10/10 with memory against 6/10 without it; four tasks discriminated and none regressed.
|
|
65
|
+
**Epistemology**: `[EMPIRICAL]`
|
|
66
|
+
**Evidence**: `docs/evidence/2026-11-outcome-study.md`; task prompts and hidden graders in `.agents/artifacts/outcome-study-2026-11/`.
|
|
67
|
+
**Status**: `VERIFIED` β scoped to convention recall in this study. The original unqualified sentence ("improves coding-agent task success") is too broad for n=10 and has been narrowed rather than marked proven.
|
|
68
68
|
|
|
69
69
|
---
|
|
70
70
|
|
|
@@ -86,4 +86,14 @@
|
|
|
86
86
|
**Confidence**: `[RAW]` β hidden Bun tests run against both fixture implementations.
|
|
87
87
|
**Epistemology**: `[EMPIRICAL]`
|
|
88
88
|
**Evidence**: `docs/evidence/2026-11-outcome-pilot.md`.
|
|
89
|
-
**Status**: `VERIFIED` β pilot only (n=2, single run).
|
|
89
|
+
**Status**: `VERIFIED` β pilot only (n=2, single run). Superseded as primary evidence by EVD-008.
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
### EVD-008 | 2026-11-09 | CLAIM
|
|
94
|
+
**Statement**: In a ten-task condition-blind study, an agent told to consult memory passed 10/10 hidden tests when the conventions were seeded and 6/10 when they were not; the four discriminating tasks were duration units, UTC dates, the slug length cap and CSV whitespace quoting.
|
|
95
|
+
**Category**: `CLAIM`
|
|
96
|
+
**Confidence**: `[RAW]` β hidden Bun tests graded all twenty solutions mechanically under a non-UTC timezone; Fisher's exact one-sided p = 0.043.
|
|
97
|
+
**Epistemology**: `[EMPIRICAL]`
|
|
98
|
+
**Evidence**: `docs/evidence/2026-11-outcome-study.md`; `.agents/artifacts/outcome-study-2026-11/`.
|
|
99
|
+
**Status**: `VERIFIED` β n=10, one run per arm, one model. Supports EVD-005 within that scope only.
|
package/.agents/context/index.md
CHANGED
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
| [`product.md`](./product.md) | Product scope, the live MCP tool matrix, the 7 task profiles, the CLI surface, and the trust gates an agent must assume | Understanding user commands, capabilities, and MCP protocols |
|
|
14
14
|
| [`architecture.md`](./architecture.md) | Dual-Scope storage (`.memory/`), SQLite DB, retrieval scoring formula, and file layout | System design, file locations, state machine, and data flow |
|
|
15
15
|
| [`brand.md`](./brand.md) | Persona profiles (`USER.md` archetypes), voice, and presentation rules | Writing prompts, terminal output copy, and user documentation |
|
|
16
|
-
| [`current.md`](./current.md) | Current shipped state (**v3.
|
|
16
|
+
| [`current.md`](./current.md) | Current shipped state (**v3.4.0**), test coverage, and active constraints | Before starting work on bugs, features, or refactors |
|
|
17
17
|
| [`decisions.md`](./decisions.md) | Locked architectural decisions (zero-daemon, file-backed SQLite, atomic I/O) | Evaluating technical choices or refactors |
|
|
18
18
|
| [`roadmap.md`](./roadmap.md) | Planned improvements, ecosystem expansions, and backlog | Scoping new capabilities |
|
|
19
19
|
| [`ticket-plan.md`](./ticket-plan.md) | Detailed ticket plan for the next work waves | Planning a specific wave of work |
|