audrey 1.0.3 → 1.1.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/CHANGELOG.md +30 -0
- package/README.md +301 -435
- package/SECURITY.md +3 -3
- package/benchmarks/output/adapter-self-test/guardbench-adapter-self-test.json +2 -2
- package/benchmarks/output/external/guardbench-external-dry-run.json +1 -1
- package/benchmarks/output/external/guardbench-external-evidence.json +1 -1
- package/benchmarks/output/guardbench-conformance-card.json +12 -12
- package/benchmarks/output/guardbench-raw.json +106 -106
- package/benchmarks/output/guardbench-summary.json +168 -168
- package/benchmarks/output/leaderboard/guardbench-leaderboard.json +5 -5
- package/benchmarks/output/leaderboard/guardbench-leaderboard.md +2 -2
- package/benchmarks/output/submission-bundle/guardbench-conformance-card.json +12 -12
- package/benchmarks/output/submission-bundle/guardbench-raw.json +106 -106
- package/benchmarks/output/submission-bundle/guardbench-summary.json +168 -168
- package/benchmarks/output/submission-bundle/submission-manifest.json +11 -11
- package/benchmarks/output/submission-bundle/validation-report.json +1 -1
- package/benchmarks/output/summary.json +57 -57
- package/benchmarks/public-paths.mjs +14 -1
- package/dist/mcp-server/config.d.ts +4 -1
- package/dist/mcp-server/config.d.ts.map +1 -1
- package/dist/mcp-server/config.js +47 -7
- package/dist/mcp-server/config.js.map +1 -1
- package/dist/mcp-server/hooks.d.ts +41 -0
- package/dist/mcp-server/hooks.d.ts.map +1 -0
- package/dist/mcp-server/hooks.js +313 -0
- package/dist/mcp-server/hooks.js.map +1 -0
- package/dist/mcp-server/index.d.ts +5 -10
- package/dist/mcp-server/index.d.ts.map +1 -1
- package/dist/mcp-server/index.js +588 -286
- package/dist/mcp-server/index.js.map +1 -1
- package/dist/src/action-key.d.ts +1 -0
- package/dist/src/action-key.d.ts.map +1 -1
- package/dist/src/action-key.js +11 -13
- package/dist/src/action-key.js.map +1 -1
- package/dist/src/affect.d.ts +1 -0
- package/dist/src/affect.d.ts.map +1 -1
- package/dist/src/affect.js +9 -4
- package/dist/src/affect.js.map +1 -1
- package/dist/src/audrey.d.ts +11 -3
- package/dist/src/audrey.d.ts.map +1 -1
- package/dist/src/audrey.js +59 -25
- package/dist/src/audrey.js.map +1 -1
- package/dist/src/autopilot.d.ts +32 -0
- package/dist/src/autopilot.d.ts.map +1 -0
- package/dist/src/autopilot.js +997 -0
- package/dist/src/autopilot.js.map +1 -0
- package/dist/src/capsule.d.ts +2 -0
- package/dist/src/capsule.d.ts.map +1 -1
- package/dist/src/capsule.js +27 -12
- package/dist/src/capsule.js.map +1 -1
- package/dist/src/consolidate.d.ts +1 -1
- package/dist/src/consolidate.d.ts.map +1 -1
- package/dist/src/consolidate.js +14 -8
- package/dist/src/consolidate.js.map +1 -1
- package/dist/src/controller.d.ts +2 -0
- package/dist/src/controller.d.ts.map +1 -1
- package/dist/src/controller.js +18 -11
- package/dist/src/controller.js.map +1 -1
- package/dist/src/db.d.ts.map +1 -1
- package/dist/src/db.js +121 -33
- package/dist/src/db.js.map +1 -1
- package/dist/src/decay.d.ts +2 -1
- package/dist/src/decay.d.ts.map +1 -1
- package/dist/src/decay.js +14 -10
- package/dist/src/decay.js.map +1 -1
- package/dist/src/embedding.d.ts.map +1 -1
- package/dist/src/embedding.js.map +1 -1
- package/dist/src/encode.d.ts.map +1 -1
- package/dist/src/encode.js +4 -2
- package/dist/src/encode.js.map +1 -1
- package/dist/src/events.d.ts +2 -0
- package/dist/src/events.d.ts.map +1 -1
- package/dist/src/events.js +15 -1
- package/dist/src/events.js.map +1 -1
- package/dist/src/feedback.d.ts +1 -0
- package/dist/src/feedback.d.ts.map +1 -1
- package/dist/src/feedback.js +13 -9
- package/dist/src/feedback.js.map +1 -1
- package/dist/src/forget.d.ts.map +1 -1
- package/dist/src/forget.js.map +1 -1
- package/dist/src/impact.d.ts +1 -1
- package/dist/src/impact.d.ts.map +1 -1
- package/dist/src/impact.js +40 -30
- package/dist/src/impact.js.map +1 -1
- package/dist/src/import.d.ts.map +1 -1
- package/dist/src/import.js +13 -9
- package/dist/src/import.js.map +1 -1
- package/dist/src/index.d.ts +2 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/interference.d.ts +2 -1
- package/dist/src/interference.d.ts.map +1 -1
- package/dist/src/interference.js +44 -17
- package/dist/src/interference.js.map +1 -1
- package/dist/src/llm.d.ts.map +1 -1
- package/dist/src/llm.js +12 -1
- package/dist/src/llm.js.map +1 -1
- package/dist/src/migrate.d.ts.map +1 -1
- package/dist/src/migrate.js +9 -9
- package/dist/src/migrate.js.map +1 -1
- package/dist/src/preflight.d.ts +2 -0
- package/dist/src/preflight.d.ts.map +1 -1
- package/dist/src/preflight.js +29 -12
- package/dist/src/preflight.js.map +1 -1
- package/dist/src/promote.d.ts +1 -0
- package/dist/src/promote.d.ts.map +1 -1
- package/dist/src/promote.js +12 -8
- package/dist/src/promote.js.map +1 -1
- package/dist/src/recall.d.ts.map +1 -1
- package/dist/src/recall.js +152 -100
- package/dist/src/recall.js.map +1 -1
- package/dist/src/reflexes.d.ts.map +1 -1
- package/dist/src/reflexes.js.map +1 -1
- package/dist/src/rollback.d.ts.map +1 -1
- package/dist/src/rollback.js.map +1 -1
- package/dist/src/routes.d.ts +1 -0
- package/dist/src/routes.d.ts.map +1 -1
- package/dist/src/routes.js +73 -20
- package/dist/src/routes.js.map +1 -1
- package/dist/src/server.d.ts +1 -0
- package/dist/src/server.d.ts.map +1 -1
- package/dist/src/server.js +2 -2
- package/dist/src/server.js.map +1 -1
- package/dist/src/types.d.ts +1 -0
- package/dist/src/types.d.ts.map +1 -1
- package/dist/src/utils.d.ts +2 -0
- package/dist/src/utils.d.ts.map +1 -1
- package/dist/src/utils.js +18 -0
- package/dist/src/utils.js.map +1 -1
- package/dist/src/validate.d.ts +1 -0
- package/dist/src/validate.d.ts.map +1 -1
- package/dist/src/validate.js +19 -10
- package/dist/src/validate.js.map +1 -1
- package/docs/AUDREY_PAPER_OUTLINE.md +6 -3
- package/docs/PRODUCTION_BACKLOG.md +47 -30
- package/docs/paper/06-implementation.md +5 -3
- package/docs/paper/07-evaluation.md +5 -5
- package/docs/paper/08-discussion-limitations.md +1 -1
- package/docs/paper/audrey-paper-v1.md +11 -9
- package/docs/paper/evidence-ledger.md +8 -8
- package/docs/paper/output/arxiv/arxiv-manifest.json +4 -4
- package/docs/paper/output/arxiv/main.tex +11 -9
- package/docs/paper/output/arxiv-compile-report.json +3 -3
- package/docs/paper/output/submission-bundle/README.md +301 -435
- package/docs/paper/output/submission-bundle/benchmarks/output/adapter-self-test/guardbench-adapter-self-test.json +2 -2
- package/docs/paper/output/submission-bundle/benchmarks/output/external/guardbench-external-dry-run.json +1 -1
- package/docs/paper/output/submission-bundle/benchmarks/output/external/guardbench-external-evidence.json +1 -1
- package/docs/paper/output/submission-bundle/benchmarks/output/guardbench-conformance-card.json +12 -12
- package/docs/paper/output/submission-bundle/benchmarks/output/guardbench-raw.json +106 -106
- package/docs/paper/output/submission-bundle/benchmarks/output/guardbench-summary.json +168 -168
- package/docs/paper/output/submission-bundle/benchmarks/output/leaderboard/guardbench-leaderboard.json +5 -5
- package/docs/paper/output/submission-bundle/benchmarks/output/leaderboard/guardbench-leaderboard.md +2 -2
- package/docs/paper/output/submission-bundle/benchmarks/output/submission-bundle/submission-manifest.json +11 -11
- package/docs/paper/output/submission-bundle/benchmarks/output/submission-bundle/validation-report.json +1 -1
- package/docs/paper/output/submission-bundle/benchmarks/output/summary.json +52 -52
- package/docs/paper/output/submission-bundle/docs/AUDREY_PAPER_OUTLINE.md +6 -3
- package/docs/paper/output/submission-bundle/docs/paper/06-implementation.md +5 -3
- package/docs/paper/output/submission-bundle/docs/paper/07-evaluation.md +5 -5
- package/docs/paper/output/submission-bundle/docs/paper/08-discussion-limitations.md +1 -1
- package/docs/paper/output/submission-bundle/docs/paper/audrey-paper-v1.md +11 -9
- package/docs/paper/output/submission-bundle/docs/paper/evidence-ledger.md +8 -8
- package/docs/paper/output/submission-bundle/docs/paper/output/arxiv/arxiv-manifest.json +4 -4
- package/docs/paper/output/submission-bundle/docs/paper/output/arxiv/main.tex +11 -9
- package/docs/paper/output/submission-bundle/docs/paper/output/arxiv-compile-report.json +3 -3
- package/docs/paper/output/submission-bundle/package.json +5 -2
- package/docs/paper/output/submission-bundle/paper-submission-manifest.json +41 -41
- package/package.json +5 -2
- package/scripts/audit-release-completion.mjs +8 -8
- package/scripts/finalize-release.mjs +1 -1
- package/scripts/prepare-release-cut.mjs +1 -1
- package/scripts/publish-release-bundle.mjs +8 -4
- package/scripts/publish-release-github-api.mjs +1 -1
- package/scripts/sync-paper-artifacts.mjs +4 -5
- package/scripts/verify-release-readiness.mjs +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
3
|
"suite": "GuardBench leaderboard",
|
|
4
|
-
"generatedAt": "2026-
|
|
4
|
+
"generatedAt": "2026-07-10T15:00:42.478Z",
|
|
5
5
|
"ranking": [
|
|
6
6
|
"verified bundle",
|
|
7
7
|
"adapter conformance",
|
|
@@ -28,9 +28,9 @@
|
|
|
28
28
|
"evidenceRecall": 1,
|
|
29
29
|
"redactionLeaks": 0,
|
|
30
30
|
"latency": {
|
|
31
|
-
"p50Ms": 3.
|
|
32
|
-
"p95Ms":
|
|
33
|
-
"maxMs":
|
|
31
|
+
"p50Ms": 3.501,
|
|
32
|
+
"p95Ms": 20.658,
|
|
33
|
+
"maxMs": 20.658
|
|
34
34
|
}
|
|
35
35
|
},
|
|
36
36
|
"conformance": {
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
},
|
|
42
42
|
"source": {
|
|
43
43
|
"dir": "benchmarks/output/submission-bundle",
|
|
44
|
-
"manifestGeneratedAt": "2026-
|
|
44
|
+
"manifestGeneratedAt": "2026-07-10T15:00:42.148Z",
|
|
45
45
|
"fileCount": 17
|
|
46
46
|
},
|
|
47
47
|
"verification": {
|
package/docs/paper/output/submission-bundle/benchmarks/output/leaderboard/guardbench-leaderboard.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# GuardBench Leaderboard
|
|
2
2
|
|
|
3
|
-
Generated: 2026-
|
|
3
|
+
Generated: 2026-07-10T15:00:42.478Z
|
|
4
4
|
|
|
5
5
|
| Rank | Subject | Verified | Conformant | Full Contract | Decision Accuracy | Evidence Recall | Redaction Leaks | p95 Latency | Bundle |
|
|
6
6
|
|---:|---|---:|---:|---:|---:|---:|---:|---:|---|
|
|
7
|
-
| 1 | Audrey Guard | yes | yes | 100.0% | 100.0% | 100.0% | 0 |
|
|
7
|
+
| 1 | Audrey Guard | yes | yes | 100.0% | 100.0% | 100.0% | 0 | 20.658ms | benchmarks/output/submission-bundle |
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "1.0.0",
|
|
3
3
|
"suite": "GuardBench submission bundle",
|
|
4
|
-
"generatedAt": "2026-
|
|
4
|
+
"generatedAt": "2026-07-10T15:00:42.148Z",
|
|
5
5
|
"sourceDir": "benchmarks/output",
|
|
6
6
|
"subject": {
|
|
7
7
|
"name": "Audrey Guard",
|
|
@@ -16,9 +16,9 @@
|
|
|
16
16
|
"evidenceRecall": 1,
|
|
17
17
|
"redactionLeaks": 0,
|
|
18
18
|
"latency": {
|
|
19
|
-
"p50Ms": 3.
|
|
20
|
-
"p95Ms":
|
|
21
|
-
"maxMs":
|
|
19
|
+
"p50Ms": 3.501,
|
|
20
|
+
"p95Ms": 20.658,
|
|
21
|
+
"maxMs": 20.658
|
|
22
22
|
}
|
|
23
23
|
},
|
|
24
24
|
"conformance": {
|
|
@@ -44,8 +44,8 @@
|
|
|
44
44
|
"files": [
|
|
45
45
|
{
|
|
46
46
|
"path": "guardbench-conformance-card.json",
|
|
47
|
-
"bytes":
|
|
48
|
-
"sha256": "
|
|
47
|
+
"bytes": 1735,
|
|
48
|
+
"sha256": "f7e755fdc52216dbe387f28b3acdd6068b51b908db0cabde455b6d793b62ed43"
|
|
49
49
|
},
|
|
50
50
|
{
|
|
51
51
|
"path": "guardbench-manifest.json",
|
|
@@ -54,13 +54,13 @@
|
|
|
54
54
|
},
|
|
55
55
|
{
|
|
56
56
|
"path": "guardbench-raw.json",
|
|
57
|
-
"bytes":
|
|
58
|
-
"sha256": "
|
|
57
|
+
"bytes": 43454,
|
|
58
|
+
"sha256": "1888c8524d54f10bb403ef09b923cec63376518bf6d202ef271ba895811d37d8"
|
|
59
59
|
},
|
|
60
60
|
{
|
|
61
61
|
"path": "guardbench-summary.json",
|
|
62
|
-
"bytes":
|
|
63
|
-
"sha256": "
|
|
62
|
+
"bytes": 69347,
|
|
63
|
+
"sha256": "88cd54e091e5aa89e7ef873a2e440430b3c35eb3f4664d963a56d197cc3691e9"
|
|
64
64
|
},
|
|
65
65
|
{
|
|
66
66
|
"path": "schemas/guardbench-adapter-registry.schema.json",
|
|
@@ -125,7 +125,7 @@
|
|
|
125
125
|
{
|
|
126
126
|
"path": "validation-report.json",
|
|
127
127
|
"bytes": 739,
|
|
128
|
-
"sha256": "
|
|
128
|
+
"sha256": "9db6530947c3f88de484235f44eaa47e7aca98dee8d3603ea0daf067d28a98d3"
|
|
129
129
|
}
|
|
130
130
|
]
|
|
131
131
|
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"generatedAt": "2026-
|
|
2
|
+
"generatedAt": "2026-07-10T15:00:37.705Z",
|
|
3
3
|
"command": "node benchmarks/run.js --provider mock --dimensions 64",
|
|
4
4
|
"config": {
|
|
5
5
|
"provider": "mock",
|
|
@@ -23,13 +23,13 @@
|
|
|
23
23
|
"system": "Audrey",
|
|
24
24
|
"scorePercent": 100,
|
|
25
25
|
"passRate": 100,
|
|
26
|
-
"avgDurationMs":
|
|
26
|
+
"avgDurationMs": 16.25
|
|
27
27
|
},
|
|
28
28
|
{
|
|
29
29
|
"system": "Vector Only",
|
|
30
30
|
"scorePercent": 41.66666666666667,
|
|
31
31
|
"passRate": 25,
|
|
32
|
-
"avgDurationMs": 0.
|
|
32
|
+
"avgDurationMs": 0.25
|
|
33
33
|
},
|
|
34
34
|
{
|
|
35
35
|
"system": "Keyword + Recency",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"system": "Recent Window",
|
|
42
42
|
"scorePercent": 37.5,
|
|
43
43
|
"passRate": 25,
|
|
44
|
-
"avgDurationMs": 0
|
|
44
|
+
"avgDurationMs": 0
|
|
45
45
|
}
|
|
46
46
|
],
|
|
47
47
|
"overall_scope": "comparable_suites",
|
|
@@ -170,13 +170,13 @@
|
|
|
170
170
|
"system": "Audrey",
|
|
171
171
|
"scorePercent": 100,
|
|
172
172
|
"passRate": 100,
|
|
173
|
-
"avgDurationMs":
|
|
173
|
+
"avgDurationMs": 16.375
|
|
174
174
|
},
|
|
175
175
|
{
|
|
176
176
|
"system": "Vector Only",
|
|
177
177
|
"scorePercent": 56.25,
|
|
178
178
|
"passRate": 37.5,
|
|
179
|
-
"avgDurationMs": 0.
|
|
179
|
+
"avgDurationMs": 0.25
|
|
180
180
|
},
|
|
181
181
|
{
|
|
182
182
|
"system": "Keyword + Recency",
|
|
@@ -188,7 +188,7 @@
|
|
|
188
188
|
"system": "Recent Window",
|
|
189
189
|
"scorePercent": 50,
|
|
190
190
|
"passRate": 37.5,
|
|
191
|
-
"avgDurationMs": 0
|
|
191
|
+
"avgDurationMs": 0
|
|
192
192
|
}
|
|
193
193
|
],
|
|
194
194
|
"byFamily": [
|
|
@@ -277,7 +277,7 @@
|
|
|
277
277
|
"results": [
|
|
278
278
|
{
|
|
279
279
|
"system": "Audrey",
|
|
280
|
-
"durationMs":
|
|
280
|
+
"durationMs": 25,
|
|
281
281
|
"passed": true,
|
|
282
282
|
"score": 1,
|
|
283
283
|
"summary": "retrieved expected evidence",
|
|
@@ -336,7 +336,7 @@
|
|
|
336
336
|
"results": [
|
|
337
337
|
{
|
|
338
338
|
"system": "Audrey",
|
|
339
|
-
"durationMs":
|
|
339
|
+
"durationMs": 14,
|
|
340
340
|
"passed": true,
|
|
341
341
|
"score": 1,
|
|
342
342
|
"summary": "retrieved expected evidence",
|
|
@@ -371,7 +371,7 @@
|
|
|
371
371
|
},
|
|
372
372
|
{
|
|
373
373
|
"system": "Recent Window",
|
|
374
|
-
"durationMs":
|
|
374
|
+
"durationMs": 0,
|
|
375
375
|
"passed": false,
|
|
376
376
|
"score": 0.5,
|
|
377
377
|
"summary": "retrieved expected evidence, but conflicting evidence still appeared later",
|
|
@@ -394,7 +394,7 @@
|
|
|
394
394
|
"results": [
|
|
395
395
|
{
|
|
396
396
|
"system": "Audrey",
|
|
397
|
-
"durationMs":
|
|
397
|
+
"durationMs": 15,
|
|
398
398
|
"passed": true,
|
|
399
399
|
"score": 1,
|
|
400
400
|
"summary": "retrieved expected evidence",
|
|
@@ -457,7 +457,7 @@
|
|
|
457
457
|
"results": [
|
|
458
458
|
{
|
|
459
459
|
"system": "Audrey",
|
|
460
|
-
"durationMs":
|
|
460
|
+
"durationMs": 15,
|
|
461
461
|
"passed": true,
|
|
462
462
|
"score": 1,
|
|
463
463
|
"summary": "retrieved expected evidence",
|
|
@@ -468,7 +468,7 @@
|
|
|
468
468
|
},
|
|
469
469
|
{
|
|
470
470
|
"system": "Vector Only",
|
|
471
|
-
"durationMs":
|
|
471
|
+
"durationMs": 0,
|
|
472
472
|
"passed": true,
|
|
473
473
|
"score": 1,
|
|
474
474
|
"summary": "retrieved expected evidence",
|
|
@@ -518,7 +518,7 @@
|
|
|
518
518
|
"results": [
|
|
519
519
|
{
|
|
520
520
|
"system": "Audrey",
|
|
521
|
-
"durationMs":
|
|
521
|
+
"durationMs": 14,
|
|
522
522
|
"passed": true,
|
|
523
523
|
"score": 1,
|
|
524
524
|
"summary": "correct abstention",
|
|
@@ -527,7 +527,7 @@
|
|
|
527
527
|
},
|
|
528
528
|
{
|
|
529
529
|
"system": "Vector Only",
|
|
530
|
-
"durationMs":
|
|
530
|
+
"durationMs": 0,
|
|
531
531
|
"passed": false,
|
|
532
532
|
"score": 0.5,
|
|
533
533
|
"summary": "no leak, but retrieved tangential context",
|
|
@@ -574,7 +574,7 @@
|
|
|
574
574
|
"results": [
|
|
575
575
|
{
|
|
576
576
|
"system": "Audrey",
|
|
577
|
-
"durationMs":
|
|
577
|
+
"durationMs": 16,
|
|
578
578
|
"passed": true,
|
|
579
579
|
"score": 1,
|
|
580
580
|
"summary": "retrieved expected evidence",
|
|
@@ -693,7 +693,7 @@
|
|
|
693
693
|
"results": [
|
|
694
694
|
{
|
|
695
695
|
"system": "Audrey",
|
|
696
|
-
"durationMs":
|
|
696
|
+
"durationMs": 13,
|
|
697
697
|
"passed": true,
|
|
698
698
|
"score": 1,
|
|
699
699
|
"summary": "correct abstention",
|
|
@@ -750,7 +750,7 @@
|
|
|
750
750
|
"system": "Audrey",
|
|
751
751
|
"scorePercent": 100,
|
|
752
752
|
"passRate": 100,
|
|
753
|
-
"avgDurationMs":
|
|
753
|
+
"avgDurationMs": 16
|
|
754
754
|
},
|
|
755
755
|
{
|
|
756
756
|
"system": "Keyword + Recency",
|
|
@@ -879,7 +879,7 @@
|
|
|
879
879
|
"results": [
|
|
880
880
|
{
|
|
881
881
|
"system": "Audrey",
|
|
882
|
-
"durationMs":
|
|
882
|
+
"durationMs": 15,
|
|
883
883
|
"passed": true,
|
|
884
884
|
"score": 1,
|
|
885
885
|
"summary": "correct abstention",
|
|
@@ -932,7 +932,7 @@
|
|
|
932
932
|
"results": [
|
|
933
933
|
{
|
|
934
934
|
"system": "Audrey",
|
|
935
|
-
"durationMs":
|
|
935
|
+
"durationMs": 17,
|
|
936
936
|
"passed": true,
|
|
937
937
|
"score": 1,
|
|
938
938
|
"summary": "retrieved expected evidence",
|
|
@@ -943,7 +943,7 @@
|
|
|
943
943
|
},
|
|
944
944
|
{
|
|
945
945
|
"system": "Vector Only",
|
|
946
|
-
"durationMs":
|
|
946
|
+
"durationMs": 1,
|
|
947
947
|
"passed": false,
|
|
948
948
|
"score": 0,
|
|
949
949
|
"summary": "missed target evidence",
|
|
@@ -993,7 +993,7 @@
|
|
|
993
993
|
"results": [
|
|
994
994
|
{
|
|
995
995
|
"system": "Audrey",
|
|
996
|
-
"durationMs":
|
|
996
|
+
"durationMs": 18,
|
|
997
997
|
"passed": true,
|
|
998
998
|
"score": 1,
|
|
999
999
|
"summary": "retrieved expected evidence",
|
|
@@ -1004,7 +1004,7 @@
|
|
|
1004
1004
|
},
|
|
1005
1005
|
{
|
|
1006
1006
|
"system": "Vector Only",
|
|
1007
|
-
"durationMs":
|
|
1007
|
+
"durationMs": 0,
|
|
1008
1008
|
"passed": false,
|
|
1009
1009
|
"score": 0,
|
|
1010
1010
|
"summary": "missed target evidence",
|
|
@@ -1055,7 +1055,7 @@
|
|
|
1055
1055
|
"system": "Audrey",
|
|
1056
1056
|
"scorePercent": 100,
|
|
1057
1057
|
"passRate": 100,
|
|
1058
|
-
"avgDurationMs":
|
|
1058
|
+
"avgDurationMs": 15.25
|
|
1059
1059
|
},
|
|
1060
1060
|
{
|
|
1061
1061
|
"system": "Vector Only",
|
|
@@ -1073,7 +1073,7 @@
|
|
|
1073
1073
|
"system": "Recent Window",
|
|
1074
1074
|
"scorePercent": 0,
|
|
1075
1075
|
"passRate": 0,
|
|
1076
|
-
"avgDurationMs": 0
|
|
1076
|
+
"avgDurationMs": 0
|
|
1077
1077
|
}
|
|
1078
1078
|
],
|
|
1079
1079
|
"byFamily": [
|
|
@@ -1118,7 +1118,7 @@
|
|
|
1118
1118
|
"results": [
|
|
1119
1119
|
{
|
|
1120
1120
|
"system": "Audrey",
|
|
1121
|
-
"durationMs":
|
|
1121
|
+
"durationMs": 20,
|
|
1122
1122
|
"passed": true,
|
|
1123
1123
|
"score": 1,
|
|
1124
1124
|
"summary": "matched all required signals",
|
|
@@ -1176,7 +1176,7 @@
|
|
|
1176
1176
|
"results": [
|
|
1177
1177
|
{
|
|
1178
1178
|
"system": "Audrey",
|
|
1179
|
-
"durationMs":
|
|
1179
|
+
"durationMs": 14,
|
|
1180
1180
|
"passed": true,
|
|
1181
1181
|
"score": 1,
|
|
1182
1182
|
"summary": "matched all required signals",
|
|
@@ -1211,7 +1211,7 @@
|
|
|
1211
1211
|
},
|
|
1212
1212
|
{
|
|
1213
1213
|
"system": "Recent Window",
|
|
1214
|
-
"durationMs":
|
|
1214
|
+
"durationMs": 0,
|
|
1215
1215
|
"passed": false,
|
|
1216
1216
|
"score": 0,
|
|
1217
1217
|
"summary": "missed required signals: decision:block, warning:must_follow, reflex:block",
|
|
@@ -1234,12 +1234,12 @@
|
|
|
1234
1234
|
"results": [
|
|
1235
1235
|
{
|
|
1236
1236
|
"system": "Audrey",
|
|
1237
|
-
"durationMs":
|
|
1237
|
+
"durationMs": 15,
|
|
1238
1238
|
"passed": true,
|
|
1239
1239
|
"score": 1,
|
|
1240
1240
|
"summary": "matched all required signals",
|
|
1241
1241
|
"topResults": [
|
|
1242
|
-
"guard_hardened:replay_rejected error:guard receipt already has an outcome:
|
|
1242
|
+
"guard_hardened:replay_rejected error:guard receipt already has an outcome: 01KX68PZ5QNVH4SM1NQ0ZEVHTW",
|
|
1243
1243
|
"decision:caution verdict:caution risk:0.55 Caution: 1 memory signal, 1 medium severity found before acting.",
|
|
1244
1244
|
"warning:recent_failure severity:medium npm test failed 1x recently: Vitest failed with spawn EPERM Before re-running npm test, check what changed since the last failure."
|
|
1245
1245
|
],
|
|
@@ -1297,7 +1297,7 @@
|
|
|
1297
1297
|
"score": 1,
|
|
1298
1298
|
"summary": "matched all required signals",
|
|
1299
1299
|
"topResults": [
|
|
1300
|
-
"guard_hardened:non_guard_receipt_rejected error:not a guard receipt:
|
|
1300
|
+
"guard_hardened:non_guard_receipt_rejected error:not a guard receipt: 01KX68PZ643S3MRQMYPJ2PK7B3",
|
|
1301
1301
|
"decision:go verdict:clear risk:0 No relevant memory risks, prior failures, or must-follow procedures were found."
|
|
1302
1302
|
],
|
|
1303
1303
|
"retrievalSummary": "guard_hardened:non_guard_receipt_rejected error:not a guard receipt: 01K | decision:go verdict:clear risk:0 No relevant memory risks, prior failure"
|
|
@@ -1352,7 +1352,7 @@
|
|
|
1352
1352
|
"results": [
|
|
1353
1353
|
{
|
|
1354
1354
|
"system": "Audrey",
|
|
1355
|
-
"durationMs":
|
|
1355
|
+
"durationMs": 25,
|
|
1356
1356
|
"passed": true,
|
|
1357
1357
|
"score": 1,
|
|
1358
1358
|
"summary": "retrieved expected evidence",
|
|
@@ -1411,7 +1411,7 @@
|
|
|
1411
1411
|
"results": [
|
|
1412
1412
|
{
|
|
1413
1413
|
"system": "Audrey",
|
|
1414
|
-
"durationMs":
|
|
1414
|
+
"durationMs": 14,
|
|
1415
1415
|
"passed": true,
|
|
1416
1416
|
"score": 1,
|
|
1417
1417
|
"summary": "retrieved expected evidence",
|
|
@@ -1446,7 +1446,7 @@
|
|
|
1446
1446
|
},
|
|
1447
1447
|
{
|
|
1448
1448
|
"system": "Recent Window",
|
|
1449
|
-
"durationMs":
|
|
1449
|
+
"durationMs": 0,
|
|
1450
1450
|
"passed": false,
|
|
1451
1451
|
"score": 0.5,
|
|
1452
1452
|
"summary": "retrieved expected evidence, but conflicting evidence still appeared later",
|
|
@@ -1469,7 +1469,7 @@
|
|
|
1469
1469
|
"results": [
|
|
1470
1470
|
{
|
|
1471
1471
|
"system": "Audrey",
|
|
1472
|
-
"durationMs":
|
|
1472
|
+
"durationMs": 15,
|
|
1473
1473
|
"passed": true,
|
|
1474
1474
|
"score": 1,
|
|
1475
1475
|
"summary": "retrieved expected evidence",
|
|
@@ -1532,7 +1532,7 @@
|
|
|
1532
1532
|
"results": [
|
|
1533
1533
|
{
|
|
1534
1534
|
"system": "Audrey",
|
|
1535
|
-
"durationMs":
|
|
1535
|
+
"durationMs": 15,
|
|
1536
1536
|
"passed": true,
|
|
1537
1537
|
"score": 1,
|
|
1538
1538
|
"summary": "retrieved expected evidence",
|
|
@@ -1543,7 +1543,7 @@
|
|
|
1543
1543
|
},
|
|
1544
1544
|
{
|
|
1545
1545
|
"system": "Vector Only",
|
|
1546
|
-
"durationMs":
|
|
1546
|
+
"durationMs": 0,
|
|
1547
1547
|
"passed": true,
|
|
1548
1548
|
"score": 1,
|
|
1549
1549
|
"summary": "retrieved expected evidence",
|
|
@@ -1593,7 +1593,7 @@
|
|
|
1593
1593
|
"results": [
|
|
1594
1594
|
{
|
|
1595
1595
|
"system": "Audrey",
|
|
1596
|
-
"durationMs":
|
|
1596
|
+
"durationMs": 14,
|
|
1597
1597
|
"passed": true,
|
|
1598
1598
|
"score": 1,
|
|
1599
1599
|
"summary": "correct abstention",
|
|
@@ -1602,7 +1602,7 @@
|
|
|
1602
1602
|
},
|
|
1603
1603
|
{
|
|
1604
1604
|
"system": "Vector Only",
|
|
1605
|
-
"durationMs":
|
|
1605
|
+
"durationMs": 0,
|
|
1606
1606
|
"passed": false,
|
|
1607
1607
|
"score": 0.5,
|
|
1608
1608
|
"summary": "no leak, but retrieved tangential context",
|
|
@@ -1649,7 +1649,7 @@
|
|
|
1649
1649
|
"results": [
|
|
1650
1650
|
{
|
|
1651
1651
|
"system": "Audrey",
|
|
1652
|
-
"durationMs":
|
|
1652
|
+
"durationMs": 16,
|
|
1653
1653
|
"passed": true,
|
|
1654
1654
|
"score": 1,
|
|
1655
1655
|
"summary": "retrieved expected evidence",
|
|
@@ -1768,7 +1768,7 @@
|
|
|
1768
1768
|
"results": [
|
|
1769
1769
|
{
|
|
1770
1770
|
"system": "Audrey",
|
|
1771
|
-
"durationMs":
|
|
1771
|
+
"durationMs": 13,
|
|
1772
1772
|
"passed": true,
|
|
1773
1773
|
"score": 1,
|
|
1774
1774
|
"summary": "correct abstention",
|
|
@@ -1882,7 +1882,7 @@
|
|
|
1882
1882
|
"results": [
|
|
1883
1883
|
{
|
|
1884
1884
|
"system": "Audrey",
|
|
1885
|
-
"durationMs":
|
|
1885
|
+
"durationMs": 15,
|
|
1886
1886
|
"passed": true,
|
|
1887
1887
|
"score": 1,
|
|
1888
1888
|
"summary": "correct abstention",
|
|
@@ -1935,7 +1935,7 @@
|
|
|
1935
1935
|
"results": [
|
|
1936
1936
|
{
|
|
1937
1937
|
"system": "Audrey",
|
|
1938
|
-
"durationMs":
|
|
1938
|
+
"durationMs": 17,
|
|
1939
1939
|
"passed": true,
|
|
1940
1940
|
"score": 1,
|
|
1941
1941
|
"summary": "retrieved expected evidence",
|
|
@@ -1946,7 +1946,7 @@
|
|
|
1946
1946
|
},
|
|
1947
1947
|
{
|
|
1948
1948
|
"system": "Vector Only",
|
|
1949
|
-
"durationMs":
|
|
1949
|
+
"durationMs": 1,
|
|
1950
1950
|
"passed": false,
|
|
1951
1951
|
"score": 0,
|
|
1952
1952
|
"summary": "missed target evidence",
|
|
@@ -1996,7 +1996,7 @@
|
|
|
1996
1996
|
"results": [
|
|
1997
1997
|
{
|
|
1998
1998
|
"system": "Audrey",
|
|
1999
|
-
"durationMs":
|
|
1999
|
+
"durationMs": 18,
|
|
2000
2000
|
"passed": true,
|
|
2001
2001
|
"score": 1,
|
|
2002
2002
|
"summary": "retrieved expected evidence",
|
|
@@ -2007,7 +2007,7 @@
|
|
|
2007
2007
|
},
|
|
2008
2008
|
{
|
|
2009
2009
|
"system": "Vector Only",
|
|
2010
|
-
"durationMs":
|
|
2010
|
+
"durationMs": 0,
|
|
2011
2011
|
"passed": false,
|
|
2012
2012
|
"score": 0,
|
|
2013
2013
|
"summary": "missed target evidence",
|
|
@@ -2058,7 +2058,7 @@
|
|
|
2058
2058
|
"results": [
|
|
2059
2059
|
{
|
|
2060
2060
|
"system": "Audrey",
|
|
2061
|
-
"durationMs":
|
|
2061
|
+
"durationMs": 20,
|
|
2062
2062
|
"passed": true,
|
|
2063
2063
|
"score": 1,
|
|
2064
2064
|
"summary": "matched all required signals",
|
|
@@ -2116,7 +2116,7 @@
|
|
|
2116
2116
|
"results": [
|
|
2117
2117
|
{
|
|
2118
2118
|
"system": "Audrey",
|
|
2119
|
-
"durationMs":
|
|
2119
|
+
"durationMs": 14,
|
|
2120
2120
|
"passed": true,
|
|
2121
2121
|
"score": 1,
|
|
2122
2122
|
"summary": "matched all required signals",
|
|
@@ -2151,7 +2151,7 @@
|
|
|
2151
2151
|
},
|
|
2152
2152
|
{
|
|
2153
2153
|
"system": "Recent Window",
|
|
2154
|
-
"durationMs":
|
|
2154
|
+
"durationMs": 0,
|
|
2155
2155
|
"passed": false,
|
|
2156
2156
|
"score": 0,
|
|
2157
2157
|
"summary": "missed required signals: decision:block, warning:must_follow, reflex:block",
|
|
@@ -2174,12 +2174,12 @@
|
|
|
2174
2174
|
"results": [
|
|
2175
2175
|
{
|
|
2176
2176
|
"system": "Audrey",
|
|
2177
|
-
"durationMs":
|
|
2177
|
+
"durationMs": 15,
|
|
2178
2178
|
"passed": true,
|
|
2179
2179
|
"score": 1,
|
|
2180
2180
|
"summary": "matched all required signals",
|
|
2181
2181
|
"topResults": [
|
|
2182
|
-
"guard_hardened:replay_rejected error:guard receipt already has an outcome:
|
|
2182
|
+
"guard_hardened:replay_rejected error:guard receipt already has an outcome: 01KX68PZ5QNVH4SM1NQ0ZEVHTW",
|
|
2183
2183
|
"decision:caution verdict:caution risk:0.55 Caution: 1 memory signal, 1 medium severity found before acting.",
|
|
2184
2184
|
"warning:recent_failure severity:medium npm test failed 1x recently: Vitest failed with spawn EPERM Before re-running npm test, check what changed since the last failure."
|
|
2185
2185
|
],
|
|
@@ -2237,7 +2237,7 @@
|
|
|
2237
2237
|
"score": 1,
|
|
2238
2238
|
"summary": "matched all required signals",
|
|
2239
2239
|
"topResults": [
|
|
2240
|
-
"guard_hardened:non_guard_receipt_rejected error:not a guard receipt:
|
|
2240
|
+
"guard_hardened:non_guard_receipt_rejected error:not a guard receipt: 01KX68PZ643S3MRQMYPJ2PK7B3",
|
|
2241
2241
|
"decision:go verdict:clear risk:0 No relevant memory risks, prior failures, or must-follow procedures were found."
|
|
2242
2242
|
],
|
|
2243
2243
|
"retrievalSummary": "guard_hardened:non_guard_receipt_rejected error:not a guard receipt: 01K | decision:go verdict:clear risk:0 No relevant memory risks, prior failure"
|
|
@@ -123,8 +123,10 @@ Metrics:
|
|
|
123
123
|
- Why tool annotations are hints, not policy guarantees.
|
|
124
124
|
- What Audrey borrows from graph memory without adding a graph database to the core.
|
|
125
125
|
- Limitations:
|
|
126
|
-
-
|
|
127
|
-
|
|
126
|
+
- Audrey 1.1 applies lifecycle hooks for Claude Code and Codex, but it can
|
|
127
|
+
inspect only the events and tool paths emitted by each trusted host.
|
|
128
|
+
- Hooks start short-lived Audrey processes; a persistent local runtime and
|
|
129
|
+
measured host-version compatibility gates remain production work.
|
|
128
130
|
- Validation lineage is bound to exact preflight event evidence, but feedback
|
|
129
131
|
does not yet tune risk scoring.
|
|
130
132
|
- Local comparative GuardBench numbers exist; no external-system numbers yet.
|
|
@@ -134,7 +136,7 @@ Metrics:
|
|
|
134
136
|
|
|
135
137
|
- Agent memory should be judged by whether it changes future actions, not just whether it retrieves relevant text.
|
|
136
138
|
- Audrey Guard demonstrates a practical local loop for using memory as a pre-action control layer.
|
|
137
|
-
- The next publishable milestone is live external-adapter GuardBench output plus
|
|
139
|
+
- The next publishable milestone is live external-adapter GuardBench output plus measured real-host coverage and a persistent hook runtime.
|
|
138
140
|
|
|
139
141
|
## Figures and Tables
|
|
140
142
|
|
|
@@ -168,6 +170,7 @@ Metrics:
|
|
|
168
170
|
- MCP tool annotations and trust model: https://modelcontextprotocol.io/specification/2025-11-25/server/tools and https://modelcontextprotocol.io/specification/2025-11-25/schema
|
|
169
171
|
- MCP annotation risk vocabulary: https://blog.modelcontextprotocol.io/posts/2026-03-16-tool-annotations/
|
|
170
172
|
- Claude Code hooks: https://code.claude.com/docs/en/hooks
|
|
173
|
+
- Codex hooks: https://developers.openai.com/codex/hooks
|
|
171
174
|
- Mem0 token-efficient memory algorithm: https://mem0.ai/blog/mem0-the-token-efficient-memory-algorithm
|
|
172
175
|
- MemOS: https://huggingface.co/papers/2507.03724
|
|
173
176
|
- MCP Security Bench: https://huggingface.co/papers/2510.15994
|
|
@@ -84,11 +84,13 @@ The JSON walker redacts sensitive keys and values recursively. If a value sits u
|
|
|
84
84
|
|
|
85
85
|
## MCP, CLI, and REST Surfaces
|
|
86
86
|
|
|
87
|
-
The MCP server registers
|
|
87
|
+
The MCP server registers 22 tools: `memory_dream`, `memory_encode`, `memory_recall`, `memory_consolidate`, `memory_introspect`, `memory_resolve_truth`, `memory_export`, `memory_import`, `memory_forget`, `memory_validate`, `memory_decay`, `memory_status`, `memory_reflect`, `memory_greeting`, `memory_observe_tool`, `memory_recent_failures`, `memory_capsule`, `memory_preflight`, `memory_guard_before`, `memory_guard_after`, `memory_reflexes`, and `memory_promote` (Ledger: E32). The Guard-relevant MCP surface is `memory_observe_tool`, `memory_recent_failures`, `memory_capsule`, `memory_preflight`, `memory_guard_before`, `memory_guard_after`, and `memory_reflexes`, with `memory_validate` supporting closed-loop validation and REST or CLI impact reporting supporting aggregate impact inspection (Ledger: E16-E19, E32-E34).
|
|
88
88
|
|
|
89
|
-
The CLI recognizes `install`, `uninstall`, `mcp-config`, `hook-config`, `demo`, `guard`, `reembed`, `dream`, `greeting`, `reflect`, `serve`, `status`, `doctor`, `observe-tool`, `promote`, and `impact` (Ledger: E34). The `guard` subcommand
|
|
89
|
+
The CLI recognizes `install`, `uninstall`, `mcp-config`, `hook-config`, `demo`, `guard`, `guard-after`, `hook`, `reembed`, `dream`, `greeting`, `reflect`, `serve`, `status`, `doctor`, `observe-tool`, `promote`, and `impact` (Ledger: E34). The `guard` subcommand remains available for explicit checks, while the host-facing `hook` subcommand normalizes current Claude Code and Codex lifecycle payloads. `audrey install --host auto` discovers installed supported CLIs, registers the MCP server, and applies host-specific lifecycle hooks from a stable Node and Audrey entrypoint. Generated settings preserve unrelated hooks, replace older Audrey-owned handlers, write backups before changing non-empty files, and are idempotent. Claude Code supports local, project, and user hook scopes; Codex supports project and user scopes and requires one-time review of non-managed hooks through `/hooks` (Ledger: E26, E43).
|
|
90
90
|
|
|
91
|
-
The
|
|
91
|
+
The generated lifecycle covers session start, user prompt submission, guarded pre-tool use, correlated post-tool outcomes, post-compaction, and turn stop. Session and prompt hooks inject bounded, agent-scoped memory context. Retrieval queries are bounded before embedding: large prompts and edits contribute redacted previews, lengths, and hashes rather than unbounded bodies, while exact Guard identity digests the full normalized, redacted action. Pre-tool hooks create Guard receipts, and post-tool hooks close the matching receipt by `session_id + tool_use_id`; sanitized failures may become durable memories. Claude Code exposes an explicit failure event. Current Codex Bash hooks can omit exit status, so Audrey records an opaque result as `unknown` unless structured fields or response text establish success or failure. Stop and post-compaction hooks run consolidation only when due. Audrey fails open on hook-runtime errors by default, with explicit fail-closed operation available through `AUDREY_HOOK_FAIL_CLOSED=1`. This is lifecycle integration, not a complete enforcement boundary: Audrey can inspect only the events and tool paths emitted by each host, and the short-lived hook process still pays provider startup cost instead of using a persistent daemon (Ledger: E43, E44).
|
|
92
|
+
|
|
93
|
+
The REST sidecar exposes routes for health, encode, recall, validate, mark-used, capsule, preflight, Guard before/after receipts, reflexes, consolidate, dream, introspect, impact, resolve-truth, export, import, forget, decay, status, reflect, and greeting (Ledger: E33). The sidecar defaults to loopback binding, refuses non-loopback binds without `AUDREY_API_KEY` unless `AUDREY_ALLOW_NO_AUTH=1`, and emits an explicit warning when that no-auth override is used (Ledger: E35). Export, import, and forget are disabled unless `AUDREY_ENABLE_ADMIN_TOOLS=1` (Ledger: E33).
|
|
92
94
|
|
|
93
95
|
## Configuration
|
|
94
96
|
|
|
@@ -24,14 +24,14 @@ These numbers measure Audrey's local call path under an in-process mock embeddin
|
|
|
24
24
|
|
|
25
25
|
## Behavioral Regression Result
|
|
26
26
|
|
|
27
|
-
The current `benchmarks/output/summary.json` was generated on 2026-
|
|
27
|
+
The current `benchmarks/output/summary.json` was generated on 2026-07-10T15:00:37.705Z with command `node benchmarks/run.js --provider mock --dimensions 64` (Ledger: E24). It reports:
|
|
28
28
|
|
|
29
29
|
| System | Score Percent | Pass Rate | Average Duration Ms |
|
|
30
30
|
|---|---:|---:|---:|
|
|
31
|
-
| Audrey | 100 | 100 |
|
|
32
|
-
| Vector Only | 41.66666666666667 | 25 | 0.
|
|
31
|
+
| Audrey | 100 | 100 | 16.25 |
|
|
32
|
+
| Vector Only | 41.66666666666667 | 25 | 0.25 |
|
|
33
33
|
| Keyword + Recency | 41.66666666666667 | 25 | 0.5833333333333334 |
|
|
34
|
-
| Recent Window | 37.5 | 25 | 0
|
|
34
|
+
| Recent Window | 37.5 | 25 | 0 |
|
|
35
35
|
|
|
36
36
|
This output is a regression-gate result. The baselines are toy local baselines used to catch retrieval and lifecycle regressions in the Audrey codebase. They are not external systems, not tuned competitor implementations, and not GuardBench baselines (Ledger: E23-E24). The current suite covers retrieval and operation families such as information extraction, knowledge updates, multi-session reasoning, conflict resolution, procedural learning, privacy boundary, overwrite, delete-and-abstain, semantic merge, and procedural merge (Ledger: E23-E24).
|
|
37
37
|
|
|
@@ -55,7 +55,7 @@ It reports local adapters only, not external-system comparisons (Ledger: E46):
|
|
|
55
55
|
| Evidence recall | 100% |
|
|
56
56
|
| Redaction leaks | 0 |
|
|
57
57
|
| Recall-degradation detection | 100% |
|
|
58
|
-
| Guard latency p50 / p95 | 3.
|
|
58
|
+
| Guard latency p50 / p95 | 3.501 ms / 20.658 ms |
|
|
59
59
|
| Published artifact raw-secret leaks | 0 |
|
|
60
60
|
| Audrey Guard decision accuracy | 100% |
|
|
61
61
|
| No-memory decision accuracy | 10% |
|
|
@@ -46,7 +46,7 @@ Reflex generation is deterministic, not adaptive. Reflexes are mapped from prefl
|
|
|
46
46
|
|
|
47
47
|
## Open Problems
|
|
48
48
|
|
|
49
|
-
Host hook
|
|
49
|
+
Host hook coverage and process model. Audrey 1.1 generates, applies, and removes lifecycle hooks for current Claude Code and Codex CLIs; the shared adapter injects bounded context, runs Guard before selected side-effectful tools, correlates post-tool outcomes, and performs due-only maintenance (Ledger: E43). This closes the configuration gap, not the enforcement gap. Hook execution still depends on host trust and on the host emitting a supported event for the relevant tool path. Alternate or incompletely intercepted host tool paths remain outside Audrey's view. Each hook also starts a short-lived Audrey process, so the default local embedding provider can pay cold-start cost repeatedly. Production follow-up is a persistent local runtime, measured compatibility gates against supported host versions, and organization-managed deployment that binds tenant identity and enforcement policy outside a caller-controlled routing header. Claude Code's documented hook surface remains an example of the underlying host boundary [@anthropic2026claudecodehooks].
|
|
50
50
|
|
|
51
51
|
Validation lineage is implemented but not yet policy-adaptive. Audrey can bind validation events to the exact preflight event, evidence IDs, and action key that produced a decision, and rejects mismatched evidence claims (Ledger: E44). The next step is using that closed-loop signal to tune warning priority and recommendation wording without giving the model direct control over policy.
|
|
52
52
|
|