@mmnto/cli 1.117.0 → 1.118.1

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 (58) hide show
  1. package/dist/adapters/github-cli-project.d.ts +4 -2
  2. package/dist/adapters/github-cli-project.d.ts.map +1 -1
  3. package/dist/adapters/github-cli-project.js +26 -3
  4. package/dist/adapters/github-cli-project.js.map +1 -1
  5. package/dist/adapters/github-cli-project.test.d.ts +2 -0
  6. package/dist/adapters/github-cli-project.test.d.ts.map +1 -0
  7. package/dist/adapters/github-cli-project.test.js +80 -0
  8. package/dist/adapters/github-cli-project.test.js.map +1 -0
  9. package/dist/commands/bootstrap-wiring.test.js +28 -0
  10. package/dist/commands/bootstrap-wiring.test.js.map +1 -1
  11. package/dist/commands/init-templates.d.ts +6 -6
  12. package/dist/commands/init-templates.d.ts.map +1 -1
  13. package/dist/commands/init-templates.js +11 -8
  14. package/dist/commands/init-templates.js.map +1 -1
  15. package/dist/commands/init.test.js +54 -6
  16. package/dist/commands/init.test.js.map +1 -1
  17. package/dist/commands/install-hooks.d.ts.map +1 -1
  18. package/dist/commands/install-hooks.js +12 -1
  19. package/dist/commands/install-hooks.js.map +1 -1
  20. package/dist/commands/lint.js +1 -1
  21. package/dist/commands/lint.js.map +1 -1
  22. package/dist/commands/orient.test.js +21 -0
  23. package/dist/commands/orient.test.js.map +1 -1
  24. package/dist/commands/pre-push-gate-matrix.test.d.ts +17 -0
  25. package/dist/commands/pre-push-gate-matrix.test.d.ts.map +1 -0
  26. package/dist/commands/pre-push-gate-matrix.test.js +135 -0
  27. package/dist/commands/pre-push-gate-matrix.test.js.map +1 -0
  28. package/dist/commands/shield-admission.test.d.ts +14 -0
  29. package/dist/commands/shield-admission.test.d.ts.map +1 -0
  30. package/dist/commands/shield-admission.test.js +301 -0
  31. package/dist/commands/shield-admission.test.js.map +1 -0
  32. package/dist/commands/shield-classify.d.ts +10 -0
  33. package/dist/commands/shield-classify.d.ts.map +1 -1
  34. package/dist/commands/shield-classify.js +19 -1
  35. package/dist/commands/shield-classify.js.map +1 -1
  36. package/dist/commands/shield-covariate.test.js +3 -0
  37. package/dist/commands/shield-covariate.test.js.map +1 -1
  38. package/dist/commands/shield-estimate.js +5 -5
  39. package/dist/commands/shield-estimate.js.map +1 -1
  40. package/dist/commands/shield-estimate.test.js +7 -3
  41. package/dist/commands/shield-estimate.test.js.map +1 -1
  42. package/dist/commands/shield-nonreview.test.d.ts +12 -14
  43. package/dist/commands/shield-nonreview.test.d.ts.map +1 -1
  44. package/dist/commands/shield-nonreview.test.js +228 -42
  45. package/dist/commands/shield-nonreview.test.js.map +1 -1
  46. package/dist/commands/shield.d.ts +116 -1
  47. package/dist/commands/shield.d.ts.map +1 -1
  48. package/dist/commands/shield.js +439 -116
  49. package/dist/commands/shield.js.map +1 -1
  50. package/dist/git.d.ts +20 -2
  51. package/dist/git.d.ts.map +1 -1
  52. package/dist/git.js +11 -4
  53. package/dist/git.js.map +1 -1
  54. package/dist/git.test.js +58 -18
  55. package/dist/git.test.js.map +1 -1
  56. package/dist/index.js +2 -1
  57. package/dist/index.js.map +1 -1
  58. package/package.json +2 -2
@@ -2911,13 +2911,61 @@ describe('Distributed skill constants match source-of-truth (mmnto-ai/totem#1890
2911
2911
  const expected = DISTRIBUTED_CLAUDE_SKILLS.map((s) => `!.agents/skills/${s.name}/`).sort();
2912
2912
  expect(actual).toEqual(expected);
2913
2913
  });
2914
- // The covariate PR-line is a versioned contract (format v1) consumed by a
2915
- // measurement pilot (Prop 304 R2, mmnto-ai/totem#2106). Its shape is grep-able
2916
- // and MUST NOT drift without a spec amendment — lock the exact template string
2917
- // + the v1 do-not-alter marker into the canonical skill content.
2918
- it('REVIEW_LOOP_SKILL_CONTENT carries the exact covariate line format v1 contract', () => {
2914
+ // The covariate PR-line is a versioned contract consumed by a measurement
2915
+ // pilot (Prop 304 R2, mmnto-ai/totem#2106). Its shapes are grep-able and
2916
+ // MUST NOT drift without a spec amendment — lock the exact template strings
2917
+ // + the do-not-alter marker into the canonical skill content. v1.1 added the
2918
+ // additive ADMISSION form under the mmnto-ai/totem#2473 design (operator-
2919
+ // approved 2026-08-14) — this pin fired on that amendment exactly as
2920
+ // intended, and was updated WITH the spec amendment, never around it.
2921
+ it('REVIEW_LOOP_SKILL_CONTENT carries the exact covariate line format v1.1 contract (both shapes)', () => {
2919
2922
  expect(REVIEW_LOOP_SKILL_CONTENT).toContain('local-lane: <verdictHash8> round=<n> settled=<true|false> lanes=<completed>/<attempted>');
2920
- expect(REVIEW_LOOP_SKILL_CONTENT).toContain('covariate line format v1 — do not alter without a spec amendment');
2923
+ expect(REVIEW_LOOP_SKILL_CONTENT).toContain('local-lane: not-applicable (<reason>) recorded=<recordHash8> at=<createdAt>');
2924
+ expect(REVIEW_LOOP_SKILL_CONTENT).toContain('covariate line format v1.1 — do not alter without a spec amendment');
2925
+ });
2926
+ // The crown-gate + S0 fold (strategy#488 R-table, operator-ruled 2026-08-13/14)
2927
+ // is load-bearing distributed procedure — pin its tokens + ordering the same
2928
+ // way the ecl-gc step is pinned (a byte-lock alone lets both sides reword
2929
+ // together; falsification-leg MINOR-9 on the fold round).
2930
+ it('SIGNOFF/SIGNON constants carry the crown-gate + S0 fold (tokens + ordering)', () => {
2931
+ // Signoff: the gate derives FIRST (step 0 precedes step 1), distinguishes
2932
+ // un-bussed from vacant, crown-scopes step 4 by name, and carries the
2933
+ // own-owed-edges journal rule with the self-held→live asymmetry.
2934
+ expect(SIGNOFF_SKILL_CONTENT).toContain('Crown gate — derive FIRST');
2935
+ // Pin the NORMATIVE arms, not just tokens (re-arm MINOR-4: a token pin
2936
+ // lets a later edit keep the word and invert the rule under green CI).
2937
+ expect(SIGNOFF_SKILL_CONTENT).toContain('**non-cohort consumer**: the crown gate does not apply');
2938
+ expect(SIGNOFF_SKILL_CONTENT).toContain('crown **vacant** (fail-closed — the ruled default)');
2939
+ expect(SIGNOFF_SKILL_CONTENT).toContain('CROWN ONLY where the crown gate applies');
2940
+ expect(SIGNOFF_SKILL_CONTENT).toContain('every OTHER managed step (1–3, 5–6) still runs');
2941
+ expect(SIGNOFF_SKILL_CONTENT).toContain('a skipped note-to-self THERE and a LIVE edge in yours');
2942
+ // Step 0 is the FIRST numbered step (not a demotable preamble) and
2943
+ // precedes step 1.
2944
+ expect(SIGNOFF_SKILL_CONTENT).toMatch(/\n0\. \*\*Crown gate — derive FIRST/);
2945
+ expect(SIGNOFF_SKILL_CONTENT.indexOf('Crown gate — derive FIRST')).toBeLessThan(SIGNOFF_SKILL_CONTENT.indexOf('1. **Update memory.**'));
2946
+ // Signon: seat-anchored poll + the S0 residual check, truthful about what
2947
+ // the 1.117.0 gate mechanized and what the hook actually guarantees.
2948
+ expect(SIGNON_SKILL_CONTENT).toContain('seat-anchored');
2949
+ expect(SIGNON_SKILL_CONTENT).toContain('S0 identity check');
2950
+ expect(SIGNON_SKILL_CONTENT).toContain('Self agents:');
2951
+ // Pin the exact-seat wording and the foreign-seat STOP arm verbatim (CR on
2952
+ // #2643: label pins alone let the safety branch vanish under green CI).
2953
+ expect(SIGNON_SKILL_CONTENT).toContain("the banner's `Self agents:` line must name exactly your seat");
2954
+ expect(SIGNON_SKILL_CONTENT).toContain('A banner naming a FOREIGN seat = STOP: act on nothing served, propagate nothing from it, fix the identity, re-poll.');
2955
+ // Hook-seat mismatch fail-closed + the signoff-side identity check (CR
2956
+ // majors 1-2 on #2643).
2957
+ expect(SIGNON_SKILL_CONTENT).toContain('On a hook-seat MISMATCH');
2958
+ expect(SIGNON_SKILL_CONTENT).toContain('consume NONE of the injected material');
2959
+ expect(SIGNOFF_SKILL_CONTENT).toContain('the signon S0 check applies at signoff too');
2960
+ expect(SIGNOFF_SKILL_CONTENT).toContain('must not make this session the crown');
2961
+ expect(SIGNON_SKILL_CONTENT).toContain('exit 2');
2962
+ expect(SIGNON_SKILL_CONTENT).toContain('--as <your-seat>');
2963
+ expect(SIGNON_SKILL_CONTENT).toContain('the seat it is CONFIGURED for');
2964
+ // The gated-poll claim is scoped to the LISTING with the warning-line
2965
+ // limit named (re-arm MATERIAL-B: an unqualified "not an exposure" was
2966
+ // falsified by the CLI's own named unclassifiable-file limit).
2967
+ expect(SIGNON_SKILL_CONTENT).toContain("A GATED poll's LISTING is broadcast-only");
2968
+ expect(SIGNON_SKILL_CONTENT).toContain('propagate nothing from a gated poll');
2921
2969
  });
2922
2970
  // rev-6 item 4: the consolidated round-disposition comment is a CONCRETE, executable
2923
2971
  // step — it EXECUTES `totem review --covariate` inside the comment-assembly flow, so the