agent-recall-core 3.4.35 → 3.4.36

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.
Files changed (67) hide show
  1. package/dist/index.d.ts +7 -8
  2. package/dist/index.d.ts.map +1 -1
  3. package/dist/index.js +15 -8
  4. package/dist/index.js.map +1 -1
  5. package/dist/prompts/consolidation-prompt.d.ts +1 -1
  6. package/dist/prompts/consolidation-prompt.d.ts.map +1 -1
  7. package/dist/prompts/consolidation-prompt.js +1 -1
  8. package/dist/storage/ab-experiment.d.ts +184 -0
  9. package/dist/storage/ab-experiment.d.ts.map +1 -0
  10. package/dist/storage/ab-experiment.js +294 -0
  11. package/dist/storage/ab-experiment.js.map +1 -0
  12. package/dist/storage/classification.d.ts +7 -3
  13. package/dist/storage/classification.d.ts.map +1 -1
  14. package/dist/storage/classification.js +13 -9
  15. package/dist/storage/classification.js.map +1 -1
  16. package/dist/storage/corrections.d.ts +84 -2
  17. package/dist/storage/corrections.d.ts.map +1 -1
  18. package/dist/storage/corrections.js +183 -2
  19. package/dist/storage/corrections.js.map +1 -1
  20. package/dist/supabase/config.d.ts +18 -0
  21. package/dist/supabase/config.d.ts.map +1 -1
  22. package/dist/supabase/config.js +6 -0
  23. package/dist/supabase/config.js.map +1 -1
  24. package/dist/supabase/sync.d.ts +1 -1
  25. package/dist/supabase/sync.d.ts.map +1 -1
  26. package/dist/supabase/sync.js +55 -0
  27. package/dist/supabase/sync.js.map +1 -1
  28. package/dist/tools-logic/check-action.d.ts.map +1 -1
  29. package/dist/tools-logic/check-action.js +30 -1
  30. package/dist/tools-logic/check-action.js.map +1 -1
  31. package/dist/tools-logic/local-archive-backend.d.ts +33 -0
  32. package/dist/tools-logic/local-archive-backend.d.ts.map +1 -0
  33. package/dist/tools-logic/local-archive-backend.js +124 -0
  34. package/dist/tools-logic/local-archive-backend.js.map +1 -0
  35. package/dist/tools-logic/memory-backend.d.ts +74 -0
  36. package/dist/tools-logic/memory-backend.d.ts.map +1 -0
  37. package/dist/tools-logic/memory-backend.js +172 -0
  38. package/dist/tools-logic/memory-backend.js.map +1 -0
  39. package/dist/tools-logic/prior-builder.d.ts.map +1 -1
  40. package/dist/tools-logic/prior-builder.js +34 -1
  41. package/dist/tools-logic/prior-builder.js.map +1 -1
  42. package/dist/tools-logic/recognition-builder.d.ts +8 -2
  43. package/dist/tools-logic/recognition-builder.d.ts.map +1 -1
  44. package/dist/tools-logic/recognition-builder.js +1 -1
  45. package/dist/tools-logic/recognition-builder.js.map +1 -1
  46. package/dist/tools-logic/session-end-reflect.js +1 -1
  47. package/dist/tools-logic/session-end-reflect.js.map +1 -1
  48. package/dist/tools-logic/session-end.d.ts +9 -0
  49. package/dist/tools-logic/session-end.d.ts.map +1 -1
  50. package/dist/tools-logic/session-end.js +109 -52
  51. package/dist/tools-logic/session-end.js.map +1 -1
  52. package/dist/tools-logic/session-start-lite.d.ts.map +1 -1
  53. package/dist/tools-logic/session-start-lite.js +1 -2
  54. package/dist/tools-logic/session-start-lite.js.map +1 -1
  55. package/dist/tools-logic/session-start.d.ts +37 -4
  56. package/dist/tools-logic/session-start.d.ts.map +1 -1
  57. package/dist/tools-logic/session-start.js +305 -81
  58. package/dist/tools-logic/session-start.js.map +1 -1
  59. package/dist/tools-logic/smart-remember.js +8 -9
  60. package/dist/tools-logic/smart-remember.js.map +1 -1
  61. package/dist/types.d.ts +1 -1
  62. package/dist/types.js +1 -1
  63. package/dist/vector/embedding.d.ts +8 -0
  64. package/dist/vector/embedding.d.ts.map +1 -1
  65. package/dist/vector/embedding.js +9 -1
  66. package/dist/vector/embedding.js.map +1 -1
  67. package/package.json +2 -2
@@ -30,6 +30,7 @@ import { getDreamHealth } from "../storage/dream-health.js";
30
30
  import { readBehaviorPolicies, recordPolicyLoad } from "../storage/behavior-policies.js";
31
31
  import { buildRecognition } from "./recognition-builder.js";
32
32
  import { runStoreDoctor, storeDoctorBanner } from "./store-doctor.js";
33
+ import { isExperimentEnabled, assignArm, logABResult, warnForcedWithoutEnabled, } from "../storage/ab-experiment.js";
33
34
  /** Slice text at the nearest word boundary, avoiding mid-word truncation. */
34
35
  function sliceAtWord(text, maxLen) {
35
36
  if (text.length <= maxLen)
@@ -38,6 +39,105 @@ function sliceAtWord(text, maxLen) {
38
39
  const lastSpace = sliced.lastIndexOf(" ");
39
40
  return lastSpace > maxLen * 0.6 ? sliced.slice(0, lastSpace) : sliced;
40
41
  }
42
+ /**
43
+ * Project a full CorrectionRecord to the slim payload shape.
44
+ *
45
+ * KPI counters (retrieved_count, heeded_count, precision, proof_confidence, etc.)
46
+ * are stripped — they are internal bookkeeping and add ~60 tokens per correction
47
+ * without helping the LLM act. The agent reads `rule` + `severity` to comply.
48
+ *
49
+ * `context` is included only when it contains materially more text than `rule`
50
+ * (i.e. len > rule.len + 20 chars). When rule == context (the common case),
51
+ * omitting context saves ~50% of per-correction payload.
52
+ */
53
+ function toSlimCorrection(c) {
54
+ const slim = {
55
+ id: c.id,
56
+ severity: c.severity,
57
+ rule: c.rule,
58
+ };
59
+ const ctx = (c.context ?? "").trim();
60
+ const rule = (c.rule ?? "").trim();
61
+ // Include context only when it adds ≥20 chars of additional content.
62
+ if (ctx && ctx !== rule && ctx.length > rule.length + 20) {
63
+ slim.context = sliceAtWord(ctx, 300);
64
+ }
65
+ return slim;
66
+ }
67
+ /**
68
+ * Hard per-section budget cap for the session_start payload.
69
+ *
70
+ * BUDGET BASIS: the `*_total` budgets are measured against the JSON-SERIALIZED
71
+ * length of each item (`JSON.stringify(item).length` summed per section), NOT
72
+ * raw field chars — so keys, quotes, and escapes count against the budget.
73
+ * Per-field limits (`correction_rule`, `insights_title`, …) ARE raw char caps
74
+ * applied to the field text before serialization.
75
+ *
76
+ * Token estimate: chars / 4 (conservative; real tokenizer would give ~same for English prose).
77
+ * P0 corrections ALWAYS survive the cap regardless of position — they are the
78
+ * highest-priority behavioral rules and must never be silently trimmed. When
79
+ * P0s alone exceed corrections_total, the section intentionally exceeds its
80
+ * budget (see applyCorrectionBudget).
81
+ *
82
+ * Budget allocation (serialized chars — divide by 4 for token equiv):
83
+ * corrections: 1200 (~300 tokens) — P0s always kept, may overflow on dense P0s
84
+ * insights: 700 (~175 tokens)
85
+ * active_rooms: 500 (~125 tokens)
86
+ * recent_captures: 550 (~140 tokens)
87
+ * recent briefs: 300+250 raw chars (today+yesterday, per-field caps)
88
+ * behavior_rules: per-field caps only (when≤100, do≤120 raw chars)
89
+ * other sections: unbounded (already small or absent-when-empty)
90
+ *
91
+ * Total: ~6000 serialized chars → ~1500 tokens (target: ≤1500 tokens median).
92
+ */
93
+ const SECTION_CHAR_LIMITS = {
94
+ correction_rule: 120, // per item rule field (raw chars)
95
+ correction_context: 250, // per item context field (raw chars, only when included)
96
+ corrections_total: 1200, // total serialized corrections budget (JSON chars)
97
+ insights_title: 180, // per insight title (raw chars)
98
+ insights_total: 700, // total insights budget (JSON chars)
99
+ rooms_one_liner: 160, // per room one_liner (raw chars)
100
+ rooms_total: 500, // total rooms budget (JSON chars)
101
+ recent_today: 300, // today brief (raw chars)
102
+ recent_yesterday: 250, // yesterday brief (raw chars)
103
+ capture_question: 80, // per capture question (raw chars)
104
+ capture_answer: 180, // per capture answer (raw chars)
105
+ captures_total: 550, // total captures budget (JSON chars)
106
+ rule_when: 100, // behavior rule when (raw chars)
107
+ rule_do: 120, // behavior rule do (raw chars)
108
+ };
109
+ /** Apply per-section char limits to slim corrections, respecting P0 priority. */
110
+ function applyCorrectionBudget(corrections) {
111
+ // P0s are unconditionally included (they are the non-negotiable behavioral rules).
112
+ // P1s fill remaining budget. Both categories are already ranked by rankCorrections.
113
+ const p0s = corrections.filter(c => c.severity === "p0");
114
+ const p1s = corrections.filter(c => c.severity !== "p0");
115
+ const trimmedP0s = p0s.map(c => ({
116
+ ...c,
117
+ rule: sliceAtWord(c.rule, SECTION_CHAR_LIMITS.correction_rule),
118
+ context: c.context ? sliceAtWord(c.context, SECTION_CHAR_LIMITS.correction_context) : undefined,
119
+ }));
120
+ // INTENTIONAL P0 OVERFLOW: P0s always survive — when the trimmed P0s alone
121
+ // exceed corrections_total, `budget` goes NEGATIVE, zero P1s are admitted,
122
+ // and the section EXCEEDS its cap. P0 completeness beats the byte budget:
123
+ // silently dropping a non-negotiable behavioral rule is worse than a fat
124
+ // payload. Controlled, not accidental — covered by the P0-overflow test.
125
+ let budget = SECTION_CHAR_LIMITS.corrections_total - JSON.stringify(trimmedP0s).length;
126
+ const trimmedP1s = [];
127
+ for (const c of p1s) {
128
+ const trimmed = {
129
+ ...c,
130
+ rule: sliceAtWord(c.rule, SECTION_CHAR_LIMITS.correction_rule),
131
+ context: c.context ? sliceAtWord(c.context, SECTION_CHAR_LIMITS.correction_context) : undefined,
132
+ };
133
+ const itemSize = JSON.stringify(trimmed).length;
134
+ if (budget - itemSize < 0)
135
+ break; // no room left for P1s
136
+ trimmedP1s.push(trimmed);
137
+ budget -= itemSize;
138
+ }
139
+ return [...trimmedP0s, ...trimmedP1s];
140
+ }
41
141
  /**
42
142
  * Strip markdown ATX headers from a journal fragment before embedding it into
43
143
  * a card field. `extractSection(content, "next")` returns the section heading
@@ -60,6 +160,25 @@ export async function sessionStart(input) {
60
160
  resetOwnedFiles();
61
161
  const slug = await resolveProject(input.project);
62
162
  ensurePalaceInitialized(slug);
163
+ // C4 A/B experiment — assign the arm FIRST so every correction-derived
164
+ // section below can gate on it. OFF semantics (orchestrator ruling
165
+ // 2026-07-03): "this agent has no correction memory today" — corrections,
166
+ // watch_for, predicted_risks, blind_spots, mirror_available, the alignment
167
+ // KPI block, and correction-derived recognition tendencies are ALL
168
+ // absent/empty in OFF payloads. Insights/rooms/captures (journal lineage)
169
+ // stay in both arms — v1 manipulates corrections only.
170
+ //
171
+ // When AR_AB_ENABLED is not set (default), abAssignment is null and every
172
+ // session gets full injection as before — no degradation, no ledger write.
173
+ // AR_AB_FORCE without AR_AB_ENABLED=1 is a loud no-op (stderr warning).
174
+ let abAssignment = null;
175
+ if (isExperimentEnabled()) {
176
+ abAssignment = assignArm(slug);
177
+ }
178
+ else {
179
+ warnForcedWithoutEnabled();
180
+ }
181
+ const abArm = abAssignment?.arm ?? null;
63
182
  // 1. Identity — first meaningful lines, skipping YAML frontmatter keys and empty template stubs
64
183
  const rawIdentity = readIdentity(slug);
65
184
  const identityLines = rawIdentity.split("\n").filter((l) => {
@@ -193,48 +312,58 @@ export async function sessionStart(input) {
193
312
  const content = fs.readFileSync(path.join(dir, file), "utf-8");
194
313
  const brief = extractSection(content, "brief");
195
314
  const raw = brief ? brief : content.split("\n").slice(0, 3).join(" ");
196
- const entry = sliceAtWord(stripMarkdownHeaders(raw), 400);
315
+ const entry = sliceAtWord(stripMarkdownHeaders(raw), SECTION_CHAR_LIMITS.recent_today);
197
316
  todayBrief = todayBrief ? `${todayBrief} | ${entry}` : entry;
198
317
  }
199
318
  else if (d === yesterday && !yesterdayBrief) {
200
319
  const content = fs.readFileSync(path.join(dir, file), "utf-8");
201
320
  const brief = extractSection(content, "brief");
202
321
  const raw = brief ? brief : content.split("\n").slice(0, 3).join(" ");
203
- yesterdayBrief = sliceAtWord(stripMarkdownHeaders(raw), 400);
322
+ yesterdayBrief = sliceAtWord(stripMarkdownHeaders(raw), SECTION_CHAR_LIMITS.recent_yesterday);
204
323
  }
205
324
  else if (d < yesterday) {
206
325
  olderCount++;
207
326
  }
208
327
  }
209
328
  }
210
- // 6. Watch for — predictive warnings from past corrections
211
- const alignLog = readAlignmentLog(slug);
212
- const watch_for = extractWatchPatterns(alignLog, 2);
213
- // 8b. Decision calibration warnings
214
- const calibration = computeDecisionCalibration(slug);
215
- for (const cal of calibration) {
216
- watch_for.push({
217
- pattern: cal.pattern,
218
- frequency: cal.sample_size,
219
- suggestion: cal.suggestion,
220
- });
329
+ // 6. Watch for — predictive warnings from past corrections.
330
+ // A/B OFF arm: suppressed entirely (correction-derived; ruling 2026-07-03).
331
+ const watch_for = [];
332
+ if (abArm !== "off") {
333
+ const alignLog = readAlignmentLog(slug);
334
+ watch_for.push(...extractWatchPatterns(alignLog, 2));
335
+ // 8b. Decision calibration warnings
336
+ const calibration = computeDecisionCalibration(slug);
337
+ for (const cal of calibration) {
338
+ watch_for.push({
339
+ pattern: cal.pattern,
340
+ frequency: cal.sample_size,
341
+ suggestion: cal.suggestion,
342
+ });
343
+ }
221
344
  }
222
345
  // 7. P0 corrections — always-load behavioral rules (max 10).
223
346
  // P5: rank by severity → proof_confidence → recency → proof_count so the most
224
347
  // authoritative, evidence-backed rules win the cap (was: arbitrary newest-10).
225
- const corrections = rankCorrections(readP0Corrections(slug), 10);
348
+ // We read the FULL records for outcome tracking, then slim them for the payload.
349
+ const rawCorrections = rankCorrections(readP0Corrections(slug), 10);
226
350
  // P0-B: auto-record "retrieved" outcome for each surfaced correction.
227
351
  // Automaticity Law: only automatic instrumentation captures real data.
228
352
  // Guard: fire at most once per correction per calendar day — prevents
229
353
  // double-counting if session_start is called twice in the same session
230
354
  // (e.g. on reconnect or tool retry).
231
- {
355
+ //
356
+ // A/B: "retrieved" is ONLY recorded when the correction is actually injected
357
+ // (arm ON or experiment disabled). In the OFF arm the agent never sees the
358
+ // corrections — recording "retrieved" would falsely inflate the precision
359
+ // numerator and corrupt the KPI that measures injection effectiveness.
360
+ if (abArm !== "off") {
232
361
  // Local-TZ date for the 1/day guard (Sprint-0 review: toISOString is UTC,
233
362
  // which breaks the guard for users in UTC+5..+14 — e.g. 07:50 local in UTC+8
234
363
  // is "yesterday" in UTC). "sv" locale formats as YYYY-MM-DD.
235
364
  const todayStr = new Date().toLocaleDateString("sv");
236
365
  const nowISO = new Date().toISOString();
237
- for (const c of corrections) {
366
+ for (const c of rawCorrections) {
238
367
  if (c.last_retrieved && new Date(c.last_retrieved).toLocaleDateString("sv") === todayStr)
239
368
  continue; // already counted today
240
369
  try {
@@ -251,6 +380,11 @@ export async function sessionStart(input) {
251
380
  }
252
381
  }
253
382
  }
383
+ // Slim corrections: strip KPI fields, keep only what the LLM acts on.
384
+ // applyCorrectionBudget ensures P0s always survive the total char cap.
385
+ // A/B OFF arm: corrections is an empty array — the agent never sees them.
386
+ const correctionsSlim = applyCorrectionBudget(rawCorrections.map(toSlimCorrection));
387
+ const corrections = abArm === "off" ? [] : correctionsSlim;
254
388
  // 8. Resume block — structured re-entry briefing for returning sessions
255
389
  const sessionsCount = olderCount + (yesterdayBrief ? 1 : 0) + (todayBrief ? 1 : 0);
256
390
  let resume = null;
@@ -309,8 +443,11 @@ export async function sessionStart(input) {
309
443
  // internals, so "non-empty" is precise rather than `active_rooms.length > 0`.
310
444
  const hasPalaceContent = allRooms.some((r) => countRoomEntries(slug, r.slug) > 0);
311
445
  const hasCaptures = recentCaptures.length > 0 || hasCaptureLogs(slug);
446
+ // A/B: use correctionsSlim (pre-suppression), NOT the arm-gated `corrections`,
447
+ // so empty-state detection is arm-independent — an OFF-arm session on a
448
+ // corrections-only project must not flash the "No memory found" banner.
312
449
  const isEmpty = !resume &&
313
- corrections.length === 0 &&
450
+ correctionsSlim.length === 0 &&
314
451
  !todayBrief && !yesterdayBrief &&
315
452
  olderCount === 0 &&
316
453
  !hasCaptures &&
@@ -332,20 +469,23 @@ export async function sessionStart(input) {
332
469
  // Wrapped in try/catch so a corrupt or unreadable corrections dir never
333
470
  // breaks session orientation. Null when no outcome data exists yet
334
471
  // (retrieved === 0) — no fake claims.
472
+ // A/B OFF arm: suppressed (correction-derived KPI; ruling 2026-07-03).
335
473
  let alignment = null;
336
- try {
337
- const kpis = getCorrectionKPIs(slug);
338
- if (kpis.retrieved > 0) {
339
- alignment = {
340
- precision: kpis.precision,
341
- retrieved: kpis.retrieved,
342
- heeded: kpis.heeded,
343
- recurred: kpis.recurred,
344
- };
474
+ if (abArm !== "off") {
475
+ try {
476
+ const kpis = getCorrectionKPIs(slug);
477
+ if (kpis.retrieved > 0) {
478
+ alignment = {
479
+ precision: kpis.precision,
480
+ retrieved: kpis.retrieved,
481
+ heeded: kpis.heeded,
482
+ recurred: kpis.recurred,
483
+ };
484
+ }
485
+ }
486
+ catch {
487
+ // alignment remains null — session_start must always succeed
345
488
  }
346
- }
347
- catch {
348
- // alignment remains null — session_start must always succeed
349
489
  }
350
490
  // Dream cron health — surface when broken for ≥2 nights
351
491
  const dreamHealthRaw = getDreamHealth();
@@ -385,58 +525,70 @@ export async function sessionStart(input) {
385
525
  // — never break orientation. Derivation runs async in consolidation; here we
386
526
  // only READ the profile and run the (synchronous) predictor over the active
387
527
  // phase goal + latest `## Next` trajectory.
528
+ // A/B OFF arm: blind_spots + predicted_risks are correction-derived —
529
+ // suppressed entirely (ruling 2026-07-03). The predictor is not even run.
388
530
  let blindSpots = [];
389
- let predictedRisks = [];
390
- try {
391
- const profile = readBlindSpots(slug);
392
- if (profile) {
393
- blindSpots = profile.blind_spots.slice(0, 2).map((b) => ({
394
- tendency: sliceAtWord(b.tendency, 160),
395
- severity: b.severity,
396
- evidence_count: b.evidence_count,
397
- }));
398
- }
399
- }
400
- catch {
401
- blindSpots = [];
402
- }
403
- try {
404
- const planParts = [];
405
- if (pipeline?.active_phase_goal)
406
- planParts.push(pipeline.active_phase_goal);
407
- if (resume?.last_trajectory)
408
- planParts.push(resume.last_trajectory);
409
- const planText = planParts.join(". ").trim();
410
- if (planText) {
411
- const pred = await predictCorrection({ plan: planText, project: slug });
412
- if (pred.likelihood !== "low" && pred.top_risks.length > 0) {
413
- predictedRisks = pred.top_risks.slice(0, 2).map((r) => ({
414
- tendency: sliceAtWord(r.tendency, 160),
415
- likelihood: pred.likelihood,
416
- matched: r.matched,
531
+ // predicted_risks is optional — undefined when empty (absent from JSON, saves ~20 bytes/project).
532
+ let predictedRisks;
533
+ if (abArm !== "off") {
534
+ try {
535
+ const profile = readBlindSpots(slug);
536
+ if (profile) {
537
+ blindSpots = profile.blind_spots.slice(0, 2).map((b) => ({
538
+ tendency: sliceAtWord(b.tendency, 160),
539
+ severity: b.severity,
540
+ evidence_count: b.evidence_count,
417
541
  }));
418
542
  }
419
543
  }
420
- }
421
- catch {
422
- predictedRisks = [];
544
+ catch {
545
+ blindSpots = [];
546
+ }
547
+ try {
548
+ const planParts = [];
549
+ if (pipeline?.active_phase_goal)
550
+ planParts.push(pipeline.active_phase_goal);
551
+ if (resume?.last_trajectory)
552
+ planParts.push(resume.last_trajectory);
553
+ const planText = planParts.join(". ").trim();
554
+ if (planText) {
555
+ const pred = await predictCorrection({ plan: planText, project: slug });
556
+ if (pred.likelihood !== "low" && pred.top_risks.length > 0) {
557
+ predictedRisks = pred.top_risks.slice(0, 2).map((r) => ({
558
+ tendency: sliceAtWord(r.tendency, 160),
559
+ likelihood: pred.likelihood,
560
+ matched: r.matched,
561
+ }));
562
+ }
563
+ }
564
+ }
565
+ catch {
566
+ predictedRisks = undefined;
567
+ }
423
568
  }
424
569
  // Loop 9 — cheap pointer to The Mirror. We do NOT assemble the reflection on
425
570
  // the hot path; we only note it EXISTS when there is real data to reflect (a
426
571
  // stored blind-spots profile OR ≥1 active correction). Best-effort: a failure
427
572
  // here leaves the pointer null and never breaks orientation.
573
+ // A/B OFF arm: suppressed — the pointer names correction counts (correction-
574
+ // derived). With corrections=[] and blindSpots=[] it would self-suppress
575
+ // anyway, but the explicit gate keeps the contract robust to future edits.
428
576
  let mirrorAvailable;
429
- try {
430
- const hasProfile = blindSpots.length > 0;
431
- const activeCorrections = corrections.filter((c) => c.active !== false).length;
432
- if (hasProfile || activeCorrections > 0) {
433
- mirrorAvailable =
434
- `The Mirror is available — run \`ar mirror --project ${slug}\` to see, and correct, ` +
435
- `what I've noticed about how you think (${activeCorrections} corrections grounding it).`;
577
+ if (abArm !== "off") {
578
+ try {
579
+ const hasProfile = blindSpots.length > 0;
580
+ // corrections is now SlimCorrection[] (no `active` field) — count length directly.
581
+ // All surfaced corrections are already active (readP0Corrections filters inactive).
582
+ const activeCorrections = corrections.length;
583
+ if (hasProfile || activeCorrections > 0) {
584
+ mirrorAvailable =
585
+ `The Mirror is available — run \`ar mirror --project ${slug}\` to see, and correct, ` +
586
+ `what I've noticed about how you think (${activeCorrections} corrections grounding it).`;
587
+ }
588
+ }
589
+ catch {
590
+ mirrorAvailable = undefined;
436
591
  }
437
- }
438
- catch {
439
- mirrorAvailable = undefined;
440
592
  }
441
593
  // Loop 4 — real-time recognition snapshot. Pure-local assembler over the
442
594
  // already-resolved slug (no re-detection ⇒ no git shell-out on the hot path).
@@ -453,32 +605,104 @@ export async function sessionStart(input) {
453
605
  person: { tendencies: [], caveat: "" },
454
606
  };
455
607
  }
456
- return {
608
+ // A/B OFF arm: recognition.person tendencies derive from the blind-spots
609
+ // profile (corrections lineage) — strip the person block regardless of
610
+ // content (ruling 2026-07-03). who/can_do/project are NOT correction-derived
611
+ // and stay.
612
+ if (abArm === "off" && recognition.person) {
613
+ const { person: _correctionDerived, ...rest } = recognition;
614
+ recognition = rest;
615
+ }
616
+ // Apply per-section char budgets to insights and rooms.
617
+ const insightsBudgeted = (() => {
618
+ let budget = SECTION_CHAR_LIMITS.insights_total;
619
+ const out = [];
620
+ for (const i of insights) {
621
+ const trimmed = { ...i, title: sliceAtWord(i.title, SECTION_CHAR_LIMITS.insights_title) };
622
+ const size = JSON.stringify(trimmed).length;
623
+ if (budget - size < 0)
624
+ break;
625
+ out.push(trimmed);
626
+ budget -= size;
627
+ }
628
+ return out;
629
+ })();
630
+ const roomsBudgeted = (() => {
631
+ let budget = SECTION_CHAR_LIMITS.rooms_total;
632
+ const out = [];
633
+ for (const r of active_rooms) {
634
+ const trimmed = { ...r, one_liner: sliceAtWord(r.one_liner, SECTION_CHAR_LIMITS.rooms_one_liner) };
635
+ const size = JSON.stringify(trimmed).length;
636
+ if (budget - size < 0)
637
+ break;
638
+ out.push(trimmed);
639
+ budget -= size;
640
+ }
641
+ return out;
642
+ })();
643
+ // recent_captures: suppress "Auto-captured" label (not useful), apply budget.
644
+ const capturesBudgeted = (() => {
645
+ let budget = SECTION_CHAR_LIMITS.captures_total;
646
+ const out = [];
647
+ for (const c of recentCaptures) {
648
+ // Suppress generic "Auto-captured" question — it adds no signal for the agent.
649
+ const q = c.question && c.question !== "Auto-captured"
650
+ ? sliceAtWord(c.question, SECTION_CHAR_LIMITS.capture_question)
651
+ : "";
652
+ const a = sliceAtWord(c.answer, SECTION_CHAR_LIMITS.capture_answer);
653
+ const item = { date: c.date, question: q, answer: a };
654
+ const size = JSON.stringify(item).length;
655
+ if (budget - size < 0)
656
+ break;
657
+ out.push(item);
658
+ budget -= size;
659
+ }
660
+ return out;
661
+ })();
662
+ // behavior_rules: apply per-field char limits to when/do.
663
+ const rulesBudgeted = behaviorRules.map((r) => ({
664
+ ...r,
665
+ when: sliceAtWord(r.when, SECTION_CHAR_LIMITS.rule_when),
666
+ do: sliceAtWord(r.do, SECTION_CHAR_LIMITS.rule_do),
667
+ }));
668
+ const result = {
457
669
  project: slug,
458
670
  identity,
459
- insights,
460
- active_rooms,
671
+ insights: insightsBudgeted,
672
+ active_rooms: roomsBudgeted,
461
673
  cross_project,
462
674
  recent: { today: todayBrief, yesterday: yesterdayBrief, older_count: olderCount },
463
- recent_captures: recentCaptures.map((c) => ({
464
- date: c.date,
465
- question: sliceAtWord(c.question, 120),
466
- answer: sliceAtWord(c.answer, 200),
467
- })),
675
+ recent_captures: capturesBudgeted,
468
676
  watch_for,
469
677
  corrections,
470
678
  resume,
471
- behavior_rules: behaviorRules,
679
+ behavior_rules: rulesBudgeted,
472
680
  dream_health: dreamHealth,
473
681
  store_doctor: storeDoctorLine,
474
682
  pipeline,
475
683
  alignment,
476
684
  blind_spots: blindSpots,
477
- predicted_risks: predictedRisks,
478
- recognition,
685
+ // Omit predicted_risks entirely when empty — absent from JSON saves bytes.
686
+ predicted_risks: predictedRisks && predictedRisks.length > 0 ? predictedRisks : undefined,
687
+ // Suppress recognition.person when tendencies is empty — the caveat string alone
688
+ // wastes ~70 bytes with no actionable content. RecognitionPayload.person is
689
+ // optional (absent-when-empty contract); destructuring drops the key entirely.
690
+ recognition: recognition.person && recognition.person.tendencies.length === 0
691
+ ? (({ person: _omitEmptyPerson, ...rest }) => rest)(recognition)
692
+ : recognition,
479
693
  mirror_available: mirrorAvailable,
480
694
  empty_state: isEmpty ? "No memory found for this project. Try: bootstrap_scan() to import existing projects, or start working and use remember() to save decisions." : undefined,
695
+ // C4: ab_arm is included only when the experiment is running (saves bytes otherwise).
696
+ ab_arm: abArm ?? undefined,
481
697
  };
698
+ // C4: fill in the injected_count + payload_tokens in the ledger row now that
699
+ // we know the final payload shape. Best-effort — never delays the return.
700
+ if (abAssignment) {
701
+ const injectedCount = corrections.length; // 0 for OFF arm
702
+ const payloadTokens = Math.round(JSON.stringify(corrections).length / 4);
703
+ logABResult(slug, abAssignment.session_key, injectedCount, payloadTokens);
704
+ }
705
+ return result;
482
706
  }
483
707
  async function autoBackfill(project) {
484
708
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"session-start.js","sourceRoot":"","sources":["../../src/tools-logic/session-start.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-start.js","sourceRoot":"","sources":["../../src/tools-logic/session-start.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,6 @@ import { consistencyCheck } from "../helpers/consistency.js";
10
10
  import { scanForConflicts, formatConflictWarning } from "../helpers/conflict-scan.js";
11
11
  import { journalCapture } from "./journal-capture.js";
12
12
  import { palaceWrite } from "./palace-write.js";
13
- import { knowledgeWrite } from "./knowledge-write.js";
14
13
  import { awarenessUpdate } from "./awareness-update.js";
15
14
  import { getRoot } from "../types.js";
16
15
  const ROUTE_SIGNALS = {
@@ -153,14 +152,14 @@ export async function smartRemember(input) {
153
152
  break;
154
153
  }
155
154
  case "knowledge_write": {
156
- // Extract title from first sentence or first line
157
- const firstLine = input.content.split(/[.\n]/)[0]?.trim() ?? "Auto-captured lesson";
158
- result = await knowledgeWrite({
159
- category: slugResult.contentType,
160
- title: firstLine.slice(0, 80),
161
- what_happened: input.content,
162
- root_cause: "See content",
163
- fix: "See content",
155
+ // purity-census-2026-07-05: standalone knowledge/ dir is a write-only graveyard —
156
+ // nothing reads it (knowledge_read MCP tool deprecated; session_start does not surface it).
157
+ // New writes route to journal instead (the alive store that IS read back).
158
+ // Existing files on disk are untouched. To recall old knowledge entries, open
159
+ // ~/.agent-recall/projects/<name>/knowledge/ directly or use palace/rooms/knowledge/.
160
+ result = await journalCapture({
161
+ question: "Auto-captured lesson",
162
+ answer: input.content,
164
163
  project: input.project,
165
164
  });
166
165
  break;