@mmnto/totem 1.53.4 → 1.53.6

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.
@@ -18,7 +18,7 @@ import * as fs from 'node:fs';
18
18
  import * as os from 'node:os';
19
19
  import * as path from 'node:path';
20
20
  import { afterEach, beforeEach, describe, expect, it } from 'vitest';
21
- import { deriveCohortRepoId, detectVersionPinnedContract, packageNameForContract, resolveCohortFloor, } from './parity-detect.js';
21
+ import { deriveCohortRepoId, detectGeneratedArtifactContract, detectManualAttestationContract, detectMechanicalContract, detectVersionPinnedContract, extractManagedBlock, hashManagedBlock, normalizeManagedBlock, packageNameForContract, parseForkMarker, resolveCohortFloor, } from './parity-detect.js';
22
22
  import { cleanTmpDir } from './test-utils.js';
23
23
  let tmpRoot;
24
24
  beforeEach(() => {
@@ -271,4 +271,503 @@ describe('detectVersionPinnedContract', () => {
271
271
  expect(verdict.message).toMatch(/version|pin|floor|install/i);
272
272
  });
273
273
  });
274
+ // ─── Mechanical content-equality detector (mmnto-ai/totem#2073) ──
275
+ const MARKERS = { start: '<!-- totem:skill-start -->', end: '<!-- totem:skill-end -->' };
276
+ /**
277
+ * Build a distributed skill artifact: a managed block between the markers, with
278
+ * an optional `fork` marker placed AFTER the end marker (user-customization
279
+ * territory — outside the compared block, so the marker itself never drifts).
280
+ */
281
+ function skillFile(body, opts = {}) {
282
+ const trailer = opts.fork !== undefined ? `\n${opts.fork}\n` : '';
283
+ return `---\nname: x\n---\n\n${MARKERS.start}\n${body}\n${MARKERS.end}\n${trailer}`;
284
+ }
285
+ /** Write a consumer artifact at `<tmpRoot>/<rel>`; returns the absolute path. */
286
+ function writeArtifact(rel, content) {
287
+ const abs = path.join(tmpRoot, rel);
288
+ fs.mkdirSync(path.dirname(abs), { recursive: true });
289
+ fs.writeFileSync(abs, content, 'utf-8');
290
+ return abs;
291
+ }
292
+ /** Base mechanical context; canonicalBlock + consumerPath default to a known artifact. */
293
+ function mechCtx(over = {}) {
294
+ return {
295
+ canonicalBlock: 'CANONICAL BODY\nline two',
296
+ consumerPath: path.join(tmpRoot, '.claude/skills/x/SKILL.md'),
297
+ markers: MARKERS,
298
+ ...over,
299
+ };
300
+ }
301
+ describe('normalizeManagedBlock', () => {
302
+ it('collapses CRLF and lone CR to LF', () => {
303
+ expect(normalizeManagedBlock('a\r\nb\rc')).toBe('a\nb\nc');
304
+ });
305
+ it('strips trailing whitespace per line and trims surrounding blank lines', () => {
306
+ expect(normalizeManagedBlock('\n\na \nb\t\n\n')).toBe('a\nb');
307
+ });
308
+ });
309
+ describe('extractManagedBlock', () => {
310
+ it('returns the content between the first start and the following end marker', () => {
311
+ expect(extractManagedBlock(`pre ${MARKERS.start}INNER${MARKERS.end} post`, MARKERS)).toBe('INNER');
312
+ });
313
+ it('returns undefined when either marker is absent', () => {
314
+ expect(extractManagedBlock(`only ${MARKERS.start} no end`, MARKERS)).toBeUndefined();
315
+ expect(extractManagedBlock('no markers at all', MARKERS)).toBeUndefined();
316
+ });
317
+ });
318
+ describe('parseForkMarker', () => {
319
+ it('parses reason/owner/attested, whitespace-tolerant', () => {
320
+ expect(parseForkMarker('<!-- totem:fork reason="x y" owner="me" attested="2026-06-03" -->')).toEqual({ reason: 'x y', owner: 'me', attested: '2026-06-03' });
321
+ });
322
+ it('returns an empty object for a bare marker, undefined when absent', () => {
323
+ expect(parseForkMarker('<!-- totem:fork -->')).toEqual({});
324
+ expect(parseForkMarker('no marker here')).toBeUndefined();
325
+ });
326
+ it('matches a fork marker authored across multiple lines (dotAll)', () => {
327
+ expect(parseForkMarker('<!-- totem:fork\n reason="multi line"\n owner="me"\n-->')).toEqual({
328
+ reason: 'multi line',
329
+ owner: 'me',
330
+ });
331
+ });
332
+ });
333
+ describe('detectMechanicalContract', () => {
334
+ it('pass — consumer block equals canonical after normalization', () => {
335
+ const consumerPath = writeArtifact('.claude/skills/x/SKILL.md', skillFile('CANONICAL BODY\nline two'));
336
+ expect(detectMechanicalContract(mechCtx({ consumerPath })).status).toBe('pass');
337
+ });
338
+ it('pass — CRLF consumer vs LF canonical, otherwise identical (win32 guard, req #3)', () => {
339
+ const crlf = skillFile('CANONICAL BODY\nline two').replace(/\n/g, '\r\n');
340
+ const consumerPath = writeArtifact('.claude/skills/x/SKILL.md', crlf);
341
+ expect(detectMechanicalContract(mechCtx({ consumerPath })).status).toBe('pass');
342
+ });
343
+ it('pass — a trailing-whitespace-only difference normalizes equal', () => {
344
+ const consumerPath = writeArtifact('.claude/skills/x/SKILL.md', skillFile('CANONICAL BODY \nline two\t'));
345
+ expect(detectMechanicalContract(mechCtx({ consumerPath })).status).toBe('pass');
346
+ });
347
+ it('warn — drift with no fork marker, reporting the consumer content-hash', () => {
348
+ const consumerPath = writeArtifact('.claude/skills/x/SKILL.md', skillFile('DRIFTED BODY'));
349
+ const v = detectMechanicalContract(mechCtx({ consumerPath }));
350
+ expect(v.status).toBe('warn');
351
+ expect(v.message).toMatch(/drift/i);
352
+ expect(v.message).toContain(hashManagedBlock(normalizeManagedBlock('DRIFTED BODY')));
353
+ });
354
+ it('info — drift WITH a fork marker is an attested intentional fork, never warn (req #7)', () => {
355
+ const consumerPath = writeArtifact('.claude/skills/x/SKILL.md', skillFile('DRIFTED BODY', {
356
+ fork: '<!-- totem:fork reason="local override" owner="satur8d" attested="2026-06-03" -->',
357
+ }));
358
+ const v = detectMechanicalContract(mechCtx({ consumerPath }));
359
+ expect(v.status).toBe('info');
360
+ expect(v.message).toMatch(/intentional fork/i);
361
+ expect(v.message).toContain('2026-06-03');
362
+ });
363
+ it('pass — a fork marker present but content actually matching is still pass (no false fork)', () => {
364
+ const consumerPath = writeArtifact('.claude/skills/x/SKILL.md', skillFile('CANONICAL BODY\nline two', { fork: '<!-- totem:fork reason="x" -->' }));
365
+ expect(detectMechanicalContract(mechCtx({ consumerPath })).status).toBe('pass');
366
+ });
367
+ it('unknown — an unresolvable canonical is never rendered pass (Stale-Doctor-Paradox guard)', () => {
368
+ const consumerPath = writeArtifact('.claude/skills/x/SKILL.md', skillFile('whatever'));
369
+ const v = detectMechanicalContract(mechCtx({ consumerPath, canonicalBlock: undefined }));
370
+ expect(v.status).toBe('unknown');
371
+ expect(v.status).not.toBe('pass');
372
+ });
373
+ it('pass — a legitimately EMPTY canonical block is compared, not conflated with unknown', () => {
374
+ // Markers present but no content on both sides → equal → pass, NOT unknown
375
+ // (empty `''` is distinct from an unresolvable `undefined`).
376
+ const consumerPath = writeArtifact('.claude/skills/x/SKILL.md', skillFile(''));
377
+ const v = detectMechanicalContract(mechCtx({ consumerPath, canonicalBlock: '' }));
378
+ expect(v.status).toBe('pass');
379
+ });
380
+ it('skip — consumer artifact absent (cohort permits absence), distinct from drift', () => {
381
+ const v = detectMechanicalContract(mechCtx({ consumerPath: path.join(tmpRoot, 'nope/SKILL.md') }));
382
+ expect(v.status).toBe('skip');
383
+ });
384
+ it('warn — a present file with markers stripped is unmanaged drift, not pass', () => {
385
+ const consumerPath = writeArtifact('.claude/skills/x/SKILL.md', 'no markers, just text');
386
+ const v = detectMechanicalContract(mechCtx({ consumerPath }));
387
+ expect(v.status).toBe('warn');
388
+ expect(v.message).toMatch(/markers absent|unmanaged/i);
389
+ });
390
+ it('info — a marker-stripped file carrying a totem:fork marker is an intentional fork, not drift', () => {
391
+ const consumerPath = writeArtifact('.claude/skills/x/SKILL.md', 'heavily customized, no skill markers\n<!-- totem:fork reason="full rewrite" attested="2026-06-03" -->');
392
+ const v = detectMechanicalContract(mechCtx({ consumerPath }));
393
+ expect(v.status).toBe('info');
394
+ expect(v.message).toMatch(/intentional fork/i);
395
+ });
396
+ it('never emits fail and degrades a missing read to skip (detector invariant)', () => {
397
+ const v = detectMechanicalContract(mechCtx({ readFile: () => undefined }));
398
+ expect(v.status).toBe('skip');
399
+ expect(v.status).not.toBe('fail');
400
+ });
401
+ it('binary self-report (req #5) — names the resolving @mmnto/cli in the verdict', () => {
402
+ const consumerPath = writeArtifact('.claude/skills/x/SKILL.md', skillFile('CANONICAL BODY\nline two'));
403
+ const v = detectMechanicalContract(mechCtx({ consumerPath, binary: { version: '1.53.5', path: '/usr/local/bin/totem' } }));
404
+ expect(v.message).toContain('@mmnto/cli@1.53.5');
405
+ });
406
+ });
407
+ // ─── Generated-artifact (git-hooks) content-equality detector (mmnto-ai/totem#2073) ──
408
+ const PREPUSH_MARKER = '[totem] pre-push hook';
409
+ const POSTMERGE_MARKER = '[totem] post-merge hook';
410
+ const POSTMERGE_END = '[totem] end post-merge';
411
+ /** A totem-OWNED whole-file hook (pre-push style — start marker only, no end). */
412
+ function ownedPrePush(body) {
413
+ return `#!/bin/sh\n# ${PREPUSH_MARKER} — stateless enforcement.\n${body}\n`;
414
+ }
415
+ /** A totem-OWNED whole-file hook with start + end markers (post-merge style). */
416
+ function ownedPostMerge(body) {
417
+ return `#!/bin/sh\n# ${POSTMERGE_MARKER} — background re-index.\n${body}\n# ${POSTMERGE_END}\n`;
418
+ }
419
+ /** A user's own hook with the totem block APPENDED (shebang stripped, post-merge style). */
420
+ function appendedPostMerge(userBody, totemBody) {
421
+ return `#!/usr/bin/env bash\n${userBody}\n\n# ${POSTMERGE_MARKER} — background re-index.\n${totemBody}\n# ${POSTMERGE_END}\n`;
422
+ }
423
+ /** A user's own hook with the totem block APPENDED (pre-push style — no end marker). */
424
+ function appendedPrePush(userBody, totemBody) {
425
+ return `#!/usr/bin/env bash\n${userBody}\n\n# ${PREPUSH_MARKER} — stateless enforcement.\n${totemBody}\n`;
426
+ }
427
+ /** Base context for a pre-push (no end marker) artifact at `.git/hooks/pre-push`. */
428
+ function genCtx(over = {}) {
429
+ return {
430
+ canonicalContent: ownedPrePush('echo current'),
431
+ consumerPath: path.join(tmpRoot, '.git/hooks/pre-push'),
432
+ ownershipMarker: PREPUSH_MARKER,
433
+ ...over,
434
+ };
435
+ }
436
+ describe('detectGeneratedArtifactContract', () => {
437
+ it('pass — totem-owned hook equals the regenerated canonical', () => {
438
+ const consumerPath = writeArtifact('.git/hooks/pre-push', ownedPrePush('echo current'));
439
+ expect(detectGeneratedArtifactContract(genCtx({ consumerPath })).status).toBe('pass');
440
+ });
441
+ it('pass — CRLF consumer vs LF canonical, otherwise identical (win32 checkout guard)', () => {
442
+ const consumerPath = writeArtifact('.git/hooks/pre-push', ownedPrePush('echo current').replace(/\n/g, '\r\n'));
443
+ expect(detectGeneratedArtifactContract(genCtx({ consumerPath })).status).toBe('pass');
444
+ });
445
+ it('warn — a hook frozen at an older generator (stale pre-#2053 resolve order) is drift (the mmnto-ai/totem#1854 keystone)', () => {
446
+ // The detection half of mmnto-ai/totem#1854: a consumer sitting on an old hook the
447
+ // current generator would no longer emit MUST surface as drift, not a false pass.
448
+ const stale = ownedPrePush('if command -v totem; then TOTEM_CMD="totem"; fi');
449
+ const current = ownedPrePush('if [ -f node_modules/@mmnto/cli/dist/index.js ]; then :; fi');
450
+ const consumerPath = writeArtifact('.git/hooks/pre-push', stale);
451
+ const v = detectGeneratedArtifactContract(genCtx({ consumerPath, canonicalContent: current }));
452
+ expect(v.status).toBe('warn');
453
+ expect(v.message).toMatch(/drift/i);
454
+ });
455
+ it('pass — parameterized canonical: an npm-flavored hook matches an npm-flavored canonical (no false drift)', () => {
456
+ // The detector compares against a canonical regenerated with THIS repo's package
457
+ // manager (npx), so an npm consumer never reads as drift against a pnpm canonical.
458
+ const npm = ownedPrePush('TOTEM_CMD="npx @mmnto/cli"');
459
+ const consumerPath = writeArtifact('.git/hooks/pre-push', npm);
460
+ expect(detectGeneratedArtifactContract(genCtx({ consumerPath, canonicalContent: npm })).status).toBe('pass');
461
+ });
462
+ it('info — an owned hook that drifted but carries a totem:fork marker is an attested fork, not warn', () => {
463
+ const consumerPath = writeArtifact('.git/hooks/pre-push', ownedPrePush('echo drifted\n# <!-- totem:fork reason="local gate" owner="satur8d" attested="2026-06-04" -->'));
464
+ const v = detectGeneratedArtifactContract(genCtx({ consumerPath }));
465
+ expect(v.status).toBe('info');
466
+ expect(v.message).toMatch(/intentional fork/i);
467
+ expect(v.message).toContain('2026-06-04');
468
+ });
469
+ it('skip — hook absent (cohort permits absence), distinct from drift', () => {
470
+ const v = detectGeneratedArtifactContract(genCtx({ consumerPath: path.join(tmpRoot, '.git/hooks/nope') }));
471
+ expect(v.status).toBe('skip');
472
+ expect(v.message).toMatch(/not installed|permits absence/i);
473
+ });
474
+ it('skip — a present hook with NO totem marker is a pure user hook, not drift (presence semantics)', () => {
475
+ const consumerPath = writeArtifact('.git/hooks/pre-push', '#!/bin/sh\necho my own hook\n');
476
+ const v = detectGeneratedArtifactContract(genCtx({ consumerPath }));
477
+ expect(v.status).toBe('skip');
478
+ expect(v.message).toMatch(/not totem-managed|permits absence/i);
479
+ // Must NOT be a warn — totem simply is not installed here.
480
+ expect(v.status).not.toBe('warn');
481
+ });
482
+ it('unknown — an unregenerable canonical is never rendered pass (Stale-Doctor-Paradox guard)', () => {
483
+ const consumerPath = writeArtifact('.git/hooks/pre-push', ownedPrePush('echo current'));
484
+ const v = detectGeneratedArtifactContract(genCtx({ consumerPath, canonicalContent: undefined }));
485
+ expect(v.status).toBe('unknown');
486
+ expect(v.status).not.toBe('pass');
487
+ });
488
+ it('pass — appended post-merge: totem region current within a user-managed hook (diff is user content)', () => {
489
+ const consumerPath = writeArtifact('.git/hooks/post-merge', appendedPostMerge('echo user pre-step', 'sync incremental'));
490
+ const v = detectGeneratedArtifactContract({
491
+ canonicalContent: ownedPostMerge('sync incremental'),
492
+ consumerPath,
493
+ ownershipMarker: POSTMERGE_MARKER,
494
+ endMarker: POSTMERGE_END,
495
+ });
496
+ expect(v.status).toBe('pass');
497
+ expect(v.message).toMatch(/totem block current/i);
498
+ });
499
+ it('warn — appended post-merge: the totem region itself drifted', () => {
500
+ const consumerPath = writeArtifact('.git/hooks/post-merge', appendedPostMerge('echo user pre-step', 'sync OLD'));
501
+ const v = detectGeneratedArtifactContract({
502
+ canonicalContent: ownedPostMerge('sync NEW'),
503
+ consumerPath,
504
+ ownershipMarker: POSTMERGE_MARKER,
505
+ endMarker: POSTMERGE_END,
506
+ });
507
+ expect(v.status).toBe('warn');
508
+ expect(v.message).toMatch(/drift/i);
509
+ });
510
+ it('unknown — totem block appended in a user pre-push hook (no end marker) cannot be isolated', () => {
511
+ const consumerPath = writeArtifact('.git/hooks/pre-push', appendedPrePush('echo user pre-step', 'echo current'));
512
+ const v = detectGeneratedArtifactContract(genCtx({ consumerPath }));
513
+ expect(v.status).toBe('unknown');
514
+ expect(v.message).toMatch(/cannot isolate|embedded/i);
515
+ // Never a false warn — claim-class-tight.
516
+ expect(v.status).not.toBe('warn');
517
+ });
518
+ it('info — an appended (no-end-marker) hook carrying a totem:fork marker is an attested fork, not unknown', () => {
519
+ const consumerPath = writeArtifact('.git/hooks/pre-push', appendedPrePush('echo user', 'echo custom\n# <!-- totem:fork reason="vendored" attested="2026-06-04" -->'));
520
+ const v = detectGeneratedArtifactContract(genCtx({ consumerPath }));
521
+ expect(v.status).toBe('info');
522
+ expect(v.message).toMatch(/intentional fork/i);
523
+ });
524
+ it('never emits fail and degrades a missing read to skip (detector invariant)', () => {
525
+ const v = detectGeneratedArtifactContract(genCtx({ readFile: () => undefined }));
526
+ expect(v.status).toBe('skip');
527
+ expect(v.status).not.toBe('fail');
528
+ });
529
+ it('binary self-report (req #5) — names the resolving @mmnto/cli in the verdict', () => {
530
+ const consumerPath = writeArtifact('.git/hooks/pre-push', ownedPrePush('echo current'));
531
+ const v = detectGeneratedArtifactContract(genCtx({ consumerPath, binary: { version: '1.53.5', path: '/usr/local/bin/totem' } }));
532
+ expect(v.message).toContain('@mmnto/cli@1.53.5');
533
+ });
534
+ it('warn — a fork marker in the USER preamble does NOT suppress totem-block drift (region-scoped, Greptile)', () => {
535
+ // Appended post-merge: the totem region drifted, but the fork marker sits in the
536
+ // user's OWN preamble (outside the totem block) — it must not demote warn → info.
537
+ const consumerPath = writeArtifact('.git/hooks/post-merge', appendedPostMerge('echo user step\n# <!-- totem:fork reason="my own preamble" owner="someone" -->', 'sync OLD'));
538
+ const v = detectGeneratedArtifactContract({
539
+ canonicalContent: ownedPostMerge('sync NEW'),
540
+ consumerPath,
541
+ ownershipMarker: POSTMERGE_MARKER,
542
+ endMarker: POSTMERGE_END,
543
+ });
544
+ expect(v.status).toBe('warn');
545
+ expect(v.status).not.toBe('info');
546
+ });
547
+ it('info — a fork marker INSIDE the totem region is a genuine attestation', () => {
548
+ const consumerPath = writeArtifact('.git/hooks/post-merge', appendedPostMerge('echo user step', 'sync OLD\n# <!-- totem:fork reason="vendored sync" attested="2026-06-04" -->'));
549
+ const v = detectGeneratedArtifactContract({
550
+ canonicalContent: ownedPostMerge('sync NEW'),
551
+ consumerPath,
552
+ ownershipMarker: POSTMERGE_MARKER,
553
+ endMarker: POSTMERGE_END,
554
+ });
555
+ expect(v.status).toBe('info');
556
+ expect(v.message).toMatch(/intentional fork/i);
557
+ });
558
+ it('unknown — endMarker set but the canonical lacks its end marker is unprovable, never a false warn (Greptile)', () => {
559
+ // A regenerated canonical missing its own end marker (generator/marker misconfig)
560
+ // must not fall through to an owned-file `warn` — the comparison is unprovable.
561
+ const canonicalNoEnd = `#!/bin/sh\n# ${POSTMERGE_MARKER} — background re-index.\nsync\n`;
562
+ const consumerPath = writeArtifact('.git/hooks/post-merge', ownedPostMerge('sync'));
563
+ const v = detectGeneratedArtifactContract({
564
+ canonicalContent: canonicalNoEnd,
565
+ consumerPath,
566
+ ownershipMarker: POSTMERGE_MARKER,
567
+ endMarker: POSTMERGE_END,
568
+ });
569
+ expect(v.status).toBe('unknown');
570
+ expect(v.status).not.toBe('warn');
571
+ expect(v.message).toMatch(/canonical hook region|unprovable/i);
572
+ });
573
+ // ── whole-file JS SessionStart hooks (mmnto-ai/totem#2073 orientation slice) ──
574
+ // The `// [totem] auto-generated` marker OPENS the file (no shell shebang), so
575
+ // isOwnedGeneratedFile must treat it as OWNED — a drifted JS hook is `warn`, not
576
+ // `unknown`. This exercises the generalization the orientation slice adds.
577
+ const SESSION_MARKER = '// [totem] auto-generated';
578
+ function ownedSessionStart(body) {
579
+ return `${SESSION_MARKER} — SessionStart hook\nconst { execSync } = require('child_process');\n${body}\n`;
580
+ }
581
+ it('pass — owned whole-file JS SessionStart equals canonical (marker opens the file, no shebang)', () => {
582
+ const consumerPath = writeArtifact('.claude/hooks/SessionStart.cjs', ownedSessionStart('run();'));
583
+ const v = detectGeneratedArtifactContract(genCtx({
584
+ consumerPath,
585
+ canonicalContent: ownedSessionStart('run();'),
586
+ ownershipMarker: SESSION_MARKER,
587
+ }));
588
+ expect(v.status).toBe('pass');
589
+ });
590
+ it('warn — a drifted owned JS SessionStart is drift, NOT unknown (the orientation-slice keystone)', () => {
591
+ const consumerPath = writeArtifact('.gemini/hooks/SessionStart.js', ownedSessionStart('runOld();'));
592
+ const v = detectGeneratedArtifactContract(genCtx({
593
+ consumerPath,
594
+ canonicalContent: ownedSessionStart('runNew();'),
595
+ ownershipMarker: SESSION_MARKER,
596
+ }));
597
+ expect(v.status).toBe('warn');
598
+ expect(v.status).not.toBe('unknown');
599
+ expect(v.message).toMatch(/drift/i);
600
+ });
601
+ it('unknown — a JS file with USER content before the marker is appended, not owned (preserved)', () => {
602
+ const consumerPath = writeArtifact('.claude/hooks/SessionStart.cjs', `// my own preamble\nconsole.log('user');\n${ownedSessionStart('run();')}`);
603
+ const v = detectGeneratedArtifactContract(genCtx({
604
+ consumerPath,
605
+ canonicalContent: ownedSessionStart('run();'),
606
+ ownershipMarker: SESSION_MARKER,
607
+ }));
608
+ expect(v.status).toBe('unknown');
609
+ expect(v.status).not.toBe('warn');
610
+ });
611
+ it('skip — a present JS file with no totem marker is a user hook (presence semantics, not drift)', () => {
612
+ const consumerPath = writeArtifact('.gemini/hooks/SessionStart.js', `console.log('my own session start');\n`);
613
+ const v = detectGeneratedArtifactContract(genCtx({ consumerPath, ownershipMarker: SESSION_MARKER }));
614
+ expect(v.status).toBe('skip');
615
+ expect(v.status).not.toBe('warn');
616
+ });
617
+ it('SessionStart absence + drift copy names the artifact + totem init, never the git-hook installer (Greptile #2082)', () => {
618
+ // Absent → skip copy + remediation must NOT point at the git-hook installer.
619
+ const absent = detectGeneratedArtifactContract(genCtx({
620
+ consumerPath: path.join(tmpRoot, '.claude/hooks/SessionStart.cjs'),
621
+ ownershipMarker: SESSION_MARKER,
622
+ artifactLabel: 'SessionStart hook',
623
+ installCommand: 'totem init',
624
+ }));
625
+ expect(absent.status).toBe('skip');
626
+ expect(absent.message).toContain('SessionStart hook');
627
+ expect(absent.remediation).toContain('totem init');
628
+ expect(absent.remediation).not.toMatch(/totem hook install/i);
629
+ // Drifted owned → warn remediation points at totem init, not totem hook install.
630
+ const consumerPath = writeArtifact('.gemini/hooks/SessionStart.js', ownedSessionStart('old();'));
631
+ const drifted = detectGeneratedArtifactContract(genCtx({
632
+ consumerPath,
633
+ canonicalContent: ownedSessionStart('new();'),
634
+ ownershipMarker: SESSION_MARKER,
635
+ artifactLabel: 'SessionStart hook',
636
+ installCommand: 'totem init',
637
+ }));
638
+ expect(drifted.status).toBe('warn');
639
+ expect(drifted.remediation).toContain('totem init');
640
+ expect(drifted.remediation).not.toMatch(/totem hook install/i);
641
+ });
642
+ });
643
+ // ─── detectManualAttestationContract (mmnto-ai/totem#2073 manual-attestation slice) ──
644
+ describe('detectManualAttestationContract', () => {
645
+ /** A vendor-SDK manual-attestation coupling (`package` set → local pin readable). */
646
+ function vendorContract(over = {}) {
647
+ return {
648
+ id: 'google-genai-coupling',
649
+ dimension: 'dependency-cohort',
650
+ canonicalSource: null,
651
+ detectionMethod: "doctor surfaces each consumer's pin + last-attested; flags staleness only",
652
+ expectedValueOrDerivation: 'tracked for coupling visibility; cohort floor is a pending decision',
653
+ tractability: 'manual-attestation',
654
+ trackingIssue: 'mmnto-ai/totem#2018',
655
+ package: '@google/genai',
656
+ ...over,
657
+ };
658
+ }
659
+ /** A doctrine manual-attestation row (no `package`; cross-repo canonical). */
660
+ function doctrineContract(over = {}) {
661
+ return {
662
+ id: 'governance-doctrine',
663
+ dimension: 'doctrine',
664
+ canonicalSource: 'mmnto-ai/totem-strategy:AGENTS.md',
665
+ detectionMethod: 'doctor surfaces "last attested <date/SHA>" and flags staleness only',
666
+ expectedValueOrDerivation: 'tracked for doctrine-currency visibility; the mechanical pin is a pending deliverable',
667
+ tractability: 'manual-attestation',
668
+ trackingIssue: 'mmnto-ai/totem-strategy#511',
669
+ ...over,
670
+ };
671
+ }
672
+ function maCtx(over = {}) {
673
+ return { cwd: tmpRoot, repoId: 'totem', ...over };
674
+ }
675
+ /** A read seam that throws — proves the doctrine-row path performs NO package.json read. */
676
+ const throwingRead = () => {
677
+ throw new Error('readPackageJson must not be called on the doctrine-row path');
678
+ };
679
+ // ── Vendor-SDK sub-class ──
680
+ it('vendor-SDK: declared + installed → info naming pkg, range, installed version, no-floor', () => {
681
+ writeConsumerPkg(tmpRoot, { '@google/genai': '^0.3.0' });
682
+ writeInstalled(tmpRoot, '@google/genai', '0.3.1');
683
+ const v = detectManualAttestationContract(vendorContract(), maCtx());
684
+ expect(v.status).toBe('info');
685
+ expect(v.message).toContain('@google/genai');
686
+ expect(v.message).toContain('^0.3.0');
687
+ expect(v.message).toContain('installed 0.3.1');
688
+ expect(v.message).toMatch(/no cohort floor|attest only/i);
689
+ });
690
+ it('vendor-SDK: applicable consumer but package NOT declared → skip, NOT warn (vendor spread permitted)', () => {
691
+ writeConsumerPkg(tmpRoot, { 'some-other-dep': '^1.0.0' });
692
+ const v = detectManualAttestationContract(vendorContract(), maCtx());
693
+ expect(v.status).toBe('skip');
694
+ expect(v.status).not.toBe('warn');
695
+ expect(v.message).toMatch(/not present here|vendor spread/i);
696
+ });
697
+ it('vendor-SDK: an unparseable declared range → info with installed unresolved (never throws, never warn)', () => {
698
+ writeConsumerPkg(tmpRoot, { '@google/genai': 'not-a-range' });
699
+ const v = detectManualAttestationContract(vendorContract(), maCtx());
700
+ expect(v.status).toBe('info');
701
+ expect(v.status).not.toBe('warn');
702
+ expect(v.message).toContain('installed: unresolved');
703
+ });
704
+ it('vendor-SDK with no consumer package.json at all → skip, never throws (production honest-absent reader)', () => {
705
+ // tmpRoot has no package.json written this case.
706
+ const v = detectManualAttestationContract(vendorContract(), maCtx());
707
+ expect(v.status).toBe('skip');
708
+ });
709
+ // ── consumers-scope guard (verbatim parity with detectVersionPinnedContract) ──
710
+ it('consumers scope: repo not in consumers → skip cohort-permits-absence', () => {
711
+ const v = detectManualAttestationContract(vendorContract({
712
+ id: 'anthropic-sdk-coupling',
713
+ package: '@anthropic-ai/sdk',
714
+ consumers: ['totem', 'liquid-city'],
715
+ }), maCtx({ repoId: 'totem-status' }));
716
+ expect(v.status).toBe('skip');
717
+ expect(v.message).toMatch(/cohort permits absence/i);
718
+ });
719
+ it('consumers scope: repoId unresolvable on a scoped contract → skip (cannot determine applicability)', () => {
720
+ const v = detectManualAttestationContract(vendorContract({ consumers: ['totem'] }), maCtx({ repoId: undefined }));
721
+ expect(v.status).toBe('skip');
722
+ expect(v.message).toMatch(/cannot determine applicability/i);
723
+ });
724
+ // ── Doctrine sub-class (zero I/O — local-read-only) ──
725
+ it('doctrine row: info naming canonicalSource + tracking issue + not-recorded; performs ZERO package.json read', () => {
726
+ const v = detectManualAttestationContract(doctrineContract(),
727
+ // A throwing read seam proves the doctrine path never touches package.json.
728
+ maCtx({ readPackageJson: throwingRead }));
729
+ expect(v.status).toBe('info');
730
+ expect(v.message).toContain('mmnto-ai/totem-strategy:AGENTS.md');
731
+ expect(v.message).toContain('mmnto-ai/totem-strategy#511');
732
+ expect(v.message).toMatch(/last attested: not recorded/i);
733
+ });
734
+ it('doctrine row with a null canonicalSource → info with the no-external-source phrasing', () => {
735
+ const v = detectManualAttestationContract(doctrineContract({ canonicalSource: null }), maCtx({ readPackageJson: throwingRead }));
736
+ expect(v.status).toBe('info');
737
+ expect(v.message).toMatch(/no external canonical source/i);
738
+ });
739
+ // ── attested seam (forward-compat for the strategy `last-attested:` follow-on) ──
740
+ it('attested date supplied → message reports it; status stays info (staleness is a message refinement, not a status)', () => {
741
+ const v = detectManualAttestationContract(doctrineContract(), maCtx({ attested: '2026-06-04', readPackageJson: throwingRead }));
742
+ expect(v.status).toBe('info');
743
+ expect(v.message).toContain('last attested 2026-06-04');
744
+ });
745
+ // ── Claim-class ceiling KEYSTONE: info|skip ONLY, never pass/warn/fail/unknown ──
746
+ it('claim-class ceiling: across every input shape the verdict is ONLY info or skip', () => {
747
+ writeConsumerPkg(tmpRoot, { '@google/genai': '^0.3.0' });
748
+ const verdicts = [
749
+ // vendor declared (resolves via minVersion fallback) → info
750
+ detectManualAttestationContract(vendorContract(), maCtx()),
751
+ // vendor not declared → skip
752
+ detectManualAttestationContract(vendorContract({ package: '@not/installed' }), maCtx()),
753
+ // vendor invalid range → info (installed unresolved)
754
+ detectManualAttestationContract(vendorContract({ package: '@google/genai' }), maCtx({ readPackageJson: () => ({ dependencies: { '@google/genai': '@@bad@@' } }) })),
755
+ // not-a-consumer → skip
756
+ detectManualAttestationContract(vendorContract({ consumers: ['liquid-city'] }), maCtx({ repoId: 'totem-status' })),
757
+ // repoId unresolvable on a scoped contract → skip
758
+ detectManualAttestationContract(vendorContract({ consumers: ['totem'] }), maCtx({ repoId: undefined })),
759
+ // doctrine row → info
760
+ detectManualAttestationContract(doctrineContract(), maCtx({ readPackageJson: throwingRead })),
761
+ // doctrine null source → info
762
+ detectManualAttestationContract(doctrineContract({ canonicalSource: null }), maCtx({ readPackageJson: throwingRead })),
763
+ ];
764
+ for (const v of verdicts) {
765
+ expect(['info', 'skip']).toContain(v.status);
766
+ expect(v.status).not.toBe('pass');
767
+ expect(v.status).not.toBe('warn');
768
+ expect(v.status).not.toBe('fail');
769
+ expect(v.status).not.toBe('unknown');
770
+ }
771
+ });
772
+ });
274
773
  //# sourceMappingURL=parity-detect.test.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"parity-detect.test.js","sourceRoot":"","sources":["../src/parity-detect.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parity-detect.test.js","sourceRoot":"","sources":["../src/parity-detect.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mmnto/totem",
3
- "version": "1.53.4",
3
+ "version": "1.53.6",
4
4
  "description": "Persistent memory and context layer for AI agents",
5
5
  "type": "module",
6
6
  "engines": {