@pome-sh/cli 0.18.0 → 0.20.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.
Files changed (151) hide show
  1. package/dist/build-info.json +3 -3
  2. package/dist/src/capture-server/index.js +1 -1
  3. package/dist/src/runner/mergeAdapterSignals.d.ts +23 -0
  4. package/dist/src/runner/mergeAdapterSignals.js +45 -3
  5. package/dist/src/scaffolds/mcp-loop/loop.js +3 -3
  6. package/node_modules/@hono/node-server/README.md +47 -1
  7. package/node_modules/@hono/node-server/dist/early-hints.cjs +35 -0
  8. package/node_modules/@hono/node-server/dist/early-hints.d.cts +16 -0
  9. package/node_modules/@hono/node-server/dist/early-hints.d.mts +16 -0
  10. package/node_modules/@hono/node-server/dist/early-hints.mjs +33 -0
  11. package/node_modules/@hono/node-server/dist/index.cjs +10 -6
  12. package/node_modules/@hono/node-server/dist/index.mjs +10 -6
  13. package/node_modules/@hono/node-server/package.json +14 -3
  14. package/node_modules/@pome-sh/sdk/dist/check-state-path.d.ts +71 -0
  15. package/node_modules/@pome-sh/sdk/dist/check-state-path.js +200 -0
  16. package/node_modules/@pome-sh/sdk/dist/check-state-path.js.map +1 -0
  17. package/node_modules/@pome-sh/sdk/dist/checks.d.ts +2 -0
  18. package/node_modules/@pome-sh/sdk/dist/checks.js +5 -0
  19. package/node_modules/@pome-sh/sdk/dist/checks.js.map +1 -1
  20. package/node_modules/@pome-sh/sdk/dist/recorder.d.ts +10 -1
  21. package/node_modules/@pome-sh/sdk/dist/recorder.js +11 -2
  22. package/node_modules/@pome-sh/sdk/dist/recorder.js.map +1 -1
  23. package/node_modules/@pome-sh/sdk/package.json +4 -4
  24. package/node_modules/@pome-sh/shared-types/dist/otel/event-schema.d.ts +111 -24
  25. package/node_modules/@pome-sh/shared-types/dist/otel/fixtures/data.js +3 -3
  26. package/node_modules/@pome-sh/shared-types/dist/otel/fixtures/data.js.map +1 -1
  27. package/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.d.ts +6 -3
  28. package/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.js +7 -2
  29. package/node_modules/@pome-sh/shared-types/dist/otel/legacy-shim.js.map +1 -1
  30. package/node_modules/@pome-sh/shared-types/dist/otel/map-span.js +1 -1
  31. package/node_modules/@pome-sh/shared-types/dist/otel/map-span.js.map +1 -1
  32. package/node_modules/@pome-sh/shared-types/dist/otel/span-event.d.ts +68 -4
  33. package/node_modules/@pome-sh/shared-types/dist/otel/span-event.js +19 -5
  34. package/node_modules/@pome-sh/shared-types/dist/otel/span-event.js.map +1 -1
  35. package/node_modules/@pome-sh/shared-types/dist/recorder-events.d.ts +60 -28
  36. package/node_modules/@pome-sh/shared-types/dist/recorder-events.js +81 -10
  37. package/node_modules/@pome-sh/shared-types/dist/recorder-events.js.map +1 -1
  38. package/node_modules/@pome-sh/shared-types/package.json +1 -1
  39. package/node_modules/@pome-sh/shared-types/trace-contract.json +49 -1
  40. package/node_modules/@pome-sh/twin-github/dist/src/check-issues.js +35 -9
  41. package/node_modules/@pome-sh/twin-github/dist/src/check-issues.js.map +1 -1
  42. package/node_modules/@pome-sh/twin-github/dist/src/check-pulls.js +21 -5
  43. package/node_modules/@pome-sh/twin-github/dist/src/check-pulls.js.map +1 -1
  44. package/node_modules/@pome-sh/twin-github/dist/src/check-repos.d.ts +3 -0
  45. package/node_modules/@pome-sh/twin-github/dist/src/check-repos.js +111 -6
  46. package/node_modules/@pome-sh/twin-github/dist/src/check-repos.js.map +1 -1
  47. package/node_modules/@pome-sh/twin-github/dist/src/check-state.d.ts +21 -1
  48. package/node_modules/@pome-sh/twin-github/dist/src/check-state.js +77 -10
  49. package/node_modules/@pome-sh/twin-github/dist/src/check-state.js.map +1 -1
  50. package/node_modules/@pome-sh/twin-github/dist/src/checks.d.ts +2 -0
  51. package/node_modules/@pome-sh/twin-github/dist/src/checks.js +5 -1
  52. package/node_modules/@pome-sh/twin-github/dist/src/checks.js.map +1 -1
  53. package/node_modules/@pome-sh/twin-github/package.json +6 -6
  54. package/node_modules/@pome-sh/twin-gmail/CHANGELOG.md +36 -0
  55. package/node_modules/@pome-sh/twin-gmail/dist/src/check-drafts.js +19 -4
  56. package/node_modules/@pome-sh/twin-gmail/dist/src/check-drafts.js.map +1 -1
  57. package/node_modules/@pome-sh/twin-gmail/dist/src/check-labels.js +15 -4
  58. package/node_modules/@pome-sh/twin-gmail/dist/src/check-labels.js.map +1 -1
  59. package/node_modules/@pome-sh/twin-gmail/dist/src/check-messages.js +19 -3
  60. package/node_modules/@pome-sh/twin-gmail/dist/src/check-messages.js.map +1 -1
  61. package/node_modules/@pome-sh/twin-gmail/dist/src/check-state.d.ts +26 -1
  62. package/node_modules/@pome-sh/twin-gmail/dist/src/check-state.js +52 -16
  63. package/node_modules/@pome-sh/twin-gmail/dist/src/check-state.js.map +1 -1
  64. package/node_modules/@pome-sh/twin-gmail/package.json +5 -5
  65. package/node_modules/@pome-sh/twin-linear/CHANGELOG.md +36 -0
  66. package/node_modules/@pome-sh/twin-linear/dist/src/check-comments.js +15 -3
  67. package/node_modules/@pome-sh/twin-linear/dist/src/check-comments.js.map +1 -1
  68. package/node_modules/@pome-sh/twin-linear/dist/src/check-issues.js +31 -4
  69. package/node_modules/@pome-sh/twin-linear/dist/src/check-issues.js.map +1 -1
  70. package/node_modules/@pome-sh/twin-linear/dist/src/check-state.d.ts +27 -2
  71. package/node_modules/@pome-sh/twin-linear/dist/src/check-state.js +73 -20
  72. package/node_modules/@pome-sh/twin-linear/dist/src/check-state.js.map +1 -1
  73. package/node_modules/@pome-sh/twin-linear/package.json +5 -5
  74. package/node_modules/@pome-sh/twin-slack/dist/src/check-messages.js +28 -7
  75. package/node_modules/@pome-sh/twin-slack/dist/src/check-messages.js.map +1 -1
  76. package/node_modules/@pome-sh/twin-slack/dist/src/check-secrets.js +16 -3
  77. package/node_modules/@pome-sh/twin-slack/dist/src/check-secrets.js.map +1 -1
  78. package/node_modules/@pome-sh/twin-slack/dist/src/check-state.d.ts +26 -1
  79. package/node_modules/@pome-sh/twin-slack/dist/src/check-state.js +31 -4
  80. package/node_modules/@pome-sh/twin-slack/dist/src/check-state.js.map +1 -1
  81. package/node_modules/@pome-sh/twin-slack/package.json +6 -6
  82. package/node_modules/@pome-sh/twin-stripe/dist/src/check-payments.d.ts +1 -1
  83. package/node_modules/@pome-sh/twin-stripe/dist/src/check-payments.js +16 -0
  84. package/node_modules/@pome-sh/twin-stripe/dist/src/check-payments.js.map +1 -1
  85. package/node_modules/@pome-sh/twin-stripe/dist/src/check-refunds.js +11 -3
  86. package/node_modules/@pome-sh/twin-stripe/dist/src/check-refunds.js.map +1 -1
  87. package/node_modules/@pome-sh/twin-stripe/dist/src/check-state.d.ts +25 -1
  88. package/node_modules/@pome-sh/twin-stripe/dist/src/check-state.js +31 -3
  89. package/node_modules/@pome-sh/twin-stripe/dist/src/check-state.js.map +1 -1
  90. package/node_modules/@pome-sh/twin-stripe/package.json +6 -6
  91. package/node_modules/hono/dist/cjs/context.js +28 -13
  92. package/node_modules/hono/dist/cjs/helper/proxy/index.js +4 -0
  93. package/node_modules/hono/dist/cjs/hono-base.js +3 -2
  94. package/node_modules/hono/dist/cjs/jsx/base.js +27 -23
  95. package/node_modules/hono/dist/cjs/jsx/hooks/index.js +16 -13
  96. package/node_modules/hono/dist/cjs/middleware/cache/index.js +103 -8
  97. package/node_modules/hono/dist/cjs/middleware/compress/index.js +5 -0
  98. package/node_modules/hono/dist/cjs/middleware/cors/index.js +2 -2
  99. package/node_modules/hono/dist/cjs/middleware/etag/index.js +1 -1
  100. package/node_modules/hono/dist/cjs/middleware/jwk/jwk.js +9 -4
  101. package/node_modules/hono/dist/cjs/middleware/jwt/jwt.js +9 -4
  102. package/node_modules/hono/dist/cjs/middleware/language/language.js +10 -6
  103. package/node_modules/hono/dist/cjs/middleware/method-not-allowed/index.js +90 -0
  104. package/node_modules/hono/dist/cjs/request.js +6 -8
  105. package/node_modules/hono/dist/cjs/router/reg-exp-router/node.js +55 -56
  106. package/node_modules/hono/dist/cjs/router/reg-exp-router/router.js +64 -85
  107. package/node_modules/hono/dist/cjs/router/reg-exp-router/trie.js +13 -5
  108. package/node_modules/hono/dist/cjs/router.js +1 -1
  109. package/node_modules/hono/dist/cjs/utils/cookie.js +3 -2
  110. package/node_modules/hono/dist/cjs/utils/url.js +7 -7
  111. package/node_modules/hono/dist/context.js +28 -13
  112. package/node_modules/hono/dist/helper/proxy/index.js +4 -0
  113. package/node_modules/hono/dist/hono-base.js +3 -2
  114. package/node_modules/hono/dist/jsx/base.js +27 -23
  115. package/node_modules/hono/dist/jsx/hooks/index.js +16 -13
  116. package/node_modules/hono/dist/middleware/cache/index.js +103 -8
  117. package/node_modules/hono/dist/middleware/compress/index.js +5 -0
  118. package/node_modules/hono/dist/middleware/cors/index.js +2 -2
  119. package/node_modules/hono/dist/middleware/etag/index.js +1 -1
  120. package/node_modules/hono/dist/middleware/jwk/jwk.js +9 -4
  121. package/node_modules/hono/dist/middleware/jwt/jwt.js +9 -4
  122. package/node_modules/hono/dist/middleware/language/language.js +10 -6
  123. package/node_modules/hono/dist/middleware/method-not-allowed/index.js +68 -0
  124. package/node_modules/hono/dist/request.js +7 -9
  125. package/node_modules/hono/dist/router/reg-exp-router/node.js +55 -56
  126. package/node_modules/hono/dist/router/reg-exp-router/router.js +64 -85
  127. package/node_modules/hono/dist/router/reg-exp-router/trie.js +13 -5
  128. package/node_modules/hono/dist/router.js +1 -1
  129. package/node_modules/hono/dist/types/client/types.d.ts +1 -1
  130. package/node_modules/hono/dist/types/hono-base.d.ts +4 -3
  131. package/node_modules/hono/dist/types/jsx/base.d.ts +4 -2
  132. package/node_modules/hono/dist/types/jsx/dom/index.d.ts +5 -5
  133. package/node_modules/hono/dist/types/jsx/dom/intrinsic-element/components.d.ts +2 -2
  134. package/node_modules/hono/dist/types/jsx/dom/server.d.ts +5 -5
  135. package/node_modules/hono/dist/types/jsx/hooks/index.d.ts +8 -6
  136. package/node_modules/hono/dist/types/jsx/index.d.ts +5 -5
  137. package/node_modules/hono/dist/types/middleware/cache/index.d.ts +6 -4
  138. package/node_modules/hono/dist/types/middleware/cors/index.d.ts +1 -1
  139. package/node_modules/hono/dist/types/middleware/jsx-renderer/index.d.ts +2 -2
  140. package/node_modules/hono/dist/types/middleware/jwk/jwk.d.ts +2 -0
  141. package/node_modules/hono/dist/types/middleware/jwt/jwt.d.ts +2 -0
  142. package/node_modules/hono/dist/types/middleware/method-not-allowed/index.d.ts +49 -0
  143. package/node_modules/hono/dist/types/router/reg-exp-router/node.d.ts +1 -1
  144. package/node_modules/hono/dist/types/router/reg-exp-router/trie.d.ts +2 -1
  145. package/node_modules/hono/dist/types/router.d.ts +1 -1
  146. package/node_modules/hono/dist/types/utils/headers.d.ts +2 -2
  147. package/node_modules/hono/dist/types/utils/url.d.ts +1 -0
  148. package/node_modules/hono/dist/utils/cookie.js +4 -3
  149. package/node_modules/hono/dist/utils/url.js +5 -6
  150. package/node_modules/hono/package.json +10 -3
  151. package/package.json +21 -21
@@ -1 +1 @@
1
- {"version":3,"file":"check-state.js","sourceRoot":"","sources":["../../src/check-state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check-state.js","sourceRoot":"","sources":["../../src/check-state.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pome-sh/twin-gmail",
3
- "version": "0.3.0",
3
+ "version": "0.3.3",
4
4
  "description": "Deterministic Gmail-shaped twin for agent testing — SQLite-backed domain core.",
5
5
  "private": false,
6
6
  "type": "module",
@@ -47,10 +47,10 @@
47
47
  "access": "public"
48
48
  },
49
49
  "dependencies": {
50
- "@hono/node-server": "^2.0.10",
51
- "@pome-sh/sdk": "0.10.0",
52
- "hono": "^4.12.31",
53
- "zod": "^4.1.13"
50
+ "@hono/node-server": "^2.1.0",
51
+ "@pome-sh/sdk": "0.11.1",
52
+ "hono": "^4.13.0",
53
+ "zod": "^4.4.3"
54
54
  },
55
55
  "keywords": [
56
56
  "gmail",
@@ -1,5 +1,41 @@
1
1
  # @pome-sh/twin-linear — CHANGELOG
2
2
 
3
+
4
+ ## 0.3.3 — 2026-08-04
5
+
6
+ Dependency-only patch (#302): `hono` `^4.12.31` → `^4.13.0`, `zod` `^4.1.13` → `^4.4.3`, `@hono/node-server` `^2.0.10` → `^2.1.0`.
7
+ No source file changed and `npm run test:contract` is green, so the surface is
8
+ identical — this exists so the npm artifact stops differing from `main`, which is
9
+ the staleness the publish skip-guard cannot see.
10
+
11
+ ## 0.3.2 — 2026-08-04
12
+
13
+ - Re-pinned to `@pome-sh/sdk@0.11.0` for the F-1200 parent-vocabulary
14
+ change: a recorded row now carries `parent_event_id` rather than `parent_id`.
15
+ No change to this twin's own surface — `npm run test:contract` is green.
16
+
17
+ ## 0.3.1 — 2026-08-03
18
+
19
+ Every state-reading check says where it looked (F-1197).
20
+
21
+ - 7 declarations now fill `CheckOutcome.evidenceStatePaths` (new in
22
+ `@pome-sh/sdk` 0.10.1) with RFC 6901 pointers into this twin's exported tree.
23
+ - `check-state.ts`'s resolvers return the pointer they walked. `Resolved<T>`'s
24
+ found arm gains `path`; its missing arm gains an optional `searched`, naming
25
+ the collection a failed lookup scanned.
26
+ - `checks-contract.test.ts` gains the citation gate and an EMPTY
27
+ `HONEST_UNCITED_CHECKS` ledger.
28
+
29
+ A failed lookup cites too, and that is the half worth knowing about. A title that resolves to nothing, or to two issues, is the refusal task 26 turns on.
30
+ So the honest citation on that arm is not the row — there is none — but the list:
31
+ *this is where I looked, see for yourself that it is not in it.*
32
+
33
+ Requires `@pome-sh/sdk` 0.10.1: the declarations call `statePath` /
34
+ `childStatePath`, which 0.10.0 does not export.
35
+
36
+ No sentence, template, substrate or check id changed, so `checksDigest` is
37
+ identical and no criterion re-binds.
38
+
3
39
  ## 0.3.0 — 2026-08-02
4
40
 
5
41
  **BREAKING RELEASE — read this before upgrading.** Two things a consumer must
@@ -16,7 +16,7 @@
16
16
  // sentence cannot reach into the seed for an identifier it never typed.
17
17
  import { defineCheck, VACUITY_SENTINEL } from "@pome-sh/sdk/checks";
18
18
  import { commentNeedle, issueTitle, teamKey } from "./check-params.js";
19
- import { resolveComments, resolveIssue, unresolved } from "./check-state.js";
19
+ import { COMMENTS_PATH, resolveComments, resolveIssue, unresolved } from "./check-state.js";
20
20
  import { deltaWorld, finalWorld, issueRow, linearState } from "./check-worlds.js";
21
21
  export const issueCommentContains = defineCheck({
22
22
  id: "linear.issue-comment-contains",
@@ -59,6 +59,7 @@ export const issueCommentContains = defineCheck({
59
59
  reason: hit
60
60
  ? `a comment contains "${needle}"`
61
61
  : `no comment contains "${needle}" (${comments.found.length} comment(s) scanned)`,
62
+ evidenceStatePaths: [comments.path],
62
63
  };
63
64
  },
64
65
  });
@@ -93,12 +94,18 @@ export const issueThreadedReply = defineCheck({
93
94
  // consumer that forgets gets a named skip rather than a vacuous pass.
94
95
  if (seed === null)
95
96
  return { passed: false, reason: "seed_missing", status: "skipped" };
97
+ // SEED-side refusals cite nothing, deliberately. `unresolved` carries the
98
+ // pointer the lookup walked, and these two walked the SEED — a pointer
99
+ // always addresses `final` (see the sdk's `check-state-path.ts`), so passing
100
+ // one through here would send a reader into the tree the report does not
101
+ // render, at a path that may well resolve to something unrelated. Dropping
102
+ // the citation is the honest degradation; the reason still names the miss.
96
103
  const seedIssue = resolveIssue(seed, team, title);
97
104
  if ("missing" in seedIssue)
98
- return unresolved(seedIssue);
105
+ return unresolved({ ...seedIssue, searched: undefined });
99
106
  const seedComments = resolveComments(seed, seedIssue.found);
100
107
  if ("missing" in seedComments)
101
- return unresolved(seedComments);
108
+ return unresolved({ ...seedComments, searched: undefined });
102
109
  const seeded = new Set(seedComments.found.map((c) => c.id).filter((id) => typeof id === "string"));
103
110
  const finalIssue = resolveIssue(final, team, title);
104
111
  if ("missing" in finalIssue)
@@ -111,6 +118,11 @@ export const issueThreadedReply = defineCheck({
111
118
  passed: replies.length > 0,
112
119
  reason: `${replies.length} repl${replies.length === 1 ? "y" : "ies"} to a seeded comment ` +
113
120
  `(${seeded.size} seeded comment(s), ${finalComments.found.length} at finish)`,
121
+ // The FINAL comment list only. This is a delta over two trees and the
122
+ // reader has one on screen; a pointer into the seed would send them to the
123
+ // tree the report does not render (see the sdk's `check-state-path.ts`).
124
+ // The reason carries the seed side.
125
+ evidenceStatePaths: [COMMENTS_PATH],
114
126
  };
115
127
  },
116
128
  });
@@ -1 +1 @@
1
- {"version":3,"file":"check-comments.js","sourceRoot":"","sources":["../../src/check-comments.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check-comments.js","sourceRoot":"","sources":["../../src/check-comments.ts"],"names":[],"mappings":"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"}
@@ -32,7 +32,7 @@
32
32
  // Recorded as this migration's one narrowing rather than absorbed.
33
33
  import { defineCheck, VACUITY_SENTINEL, VACUITY_SENTINEL_NUMBER } from "@pome-sh/sdk/checks";
34
34
  import { estimatePoints, issueTitle, labelName, teamKey, userRef, workflowStateName, } from "./check-params.js";
35
- import { resolveIssue, resolveLabelNames, resolveUserLabels, resolveWorkflowStateName, unresolved, } from "./check-state.js";
35
+ import { fieldPath, resolveIssue, resolveLabelNames, resolveUserLabels, resolveWorkflowStateName, unresolved, USERS_PATH, } from "./check-state.js";
36
36
  import { finalWorld, issueRow, linearState } from "./check-worlds.js";
37
37
  export const issueExists = defineCheck({
38
38
  id: "linear.issue-exists",
@@ -65,7 +65,13 @@ export const issueExists = defineCheck({
65
65
  // Echoing the title is safe HERE and only here: this check declares it as
66
66
  // its subject, so the engine skipped the criterion as `subject_redacted`
67
67
  // before reaching this line if a redactor would have destroyed it.
68
- return { passed: true, reason: `an issue titled "${title}" exists in \`${team}\`` };
68
+ // The ROW itself: here the lookup IS the assertion, so the address the
69
+ // resolution walked to is exactly what produced the verdict (F-1197).
70
+ return {
71
+ passed: true,
72
+ reason: `an issue titled "${title}" exists in \`${team}\``,
73
+ evidenceStatePaths: [issue.path],
74
+ };
69
75
  },
70
76
  });
71
77
  export const issueState = defineCheck({
@@ -107,6 +113,11 @@ export const issueState = defineCheck({
107
113
  return {
108
114
  passed: name.found.toLowerCase() === state.toLowerCase(),
109
115
  reason: `issue state is "${name.found}" (wanted "${state}")`,
116
+ // BOTH ends of trap 1's join. An issue has no state string — it has a
117
+ // `stateId` into the team's own workflow catalog — so a reader handed only
118
+ // the issue row would find an opaque id, and one handed only the catalog
119
+ // row would not know which issue pointed at it.
120
+ evidenceStatePaths: [fieldPath(issue.path, issue.found, "stateId"), name.path],
110
121
  };
111
122
  },
112
123
  });
@@ -138,6 +149,8 @@ export const issueHasLabel = defineCheck({
138
149
  return {
139
150
  passed: names.found.has(label.toLowerCase()),
140
151
  reason: `issue carries ${names.found.size} label(s) (wanted "${label}")`,
152
+ // Trap 2's join, both ends: `labelIds` on the row, names in the catalog.
153
+ evidenceStatePaths: [fieldPath(issue.path, issue.found, "labelIds"), names.path],
141
154
  };
142
155
  },
143
156
  });
@@ -172,6 +185,11 @@ export const issueEstimate = defineCheck({
172
185
  return {
173
186
  passed: actual === Number(estimate),
174
187
  reason: `issue estimate is ${actual === null ? "unset" : actual} (wanted ${estimate})`,
188
+ // `fieldPath`, not a bare `…/estimate`: an UNSET estimate is the verdict
189
+ // this check exists to deliver, and on an export that omits the column
190
+ // entirely a pointer at it would resolve to nothing — stripping the
191
+ // affordance from exactly the row a reader wants to open.
192
+ evidenceStatePaths: [fieldPath(issue.path, issue.found, "estimate")],
175
193
  };
176
194
  },
177
195
  });
@@ -199,12 +217,21 @@ export const issueAssignee = defineCheck({
199
217
  if ("missing" in issue)
200
218
  return unresolved(issue);
201
219
  const labels = resolveUserLabels(final, issue.found.assigneeId);
202
- if (labels.length === 0)
203
- return { passed: false, reason: "issue has no assignee" };
220
+ // The issue row on both arms. An unassigned issue has no user row to point
221
+ // at, so citing `/users` only when one resolved would make the citation's
222
+ // PRESENCE track the verdict — and its absence would start reading as
223
+ // "unassigned", which is a verdict class the pointer must not encode.
224
+ const assignment = [fieldPath(issue.path, issue.found, "assigneeId")];
225
+ if (labels.length === 0) {
226
+ return { passed: false, reason: "issue has no assignee", evidenceStatePaths: assignment };
227
+ }
228
+ if (final.users != null)
229
+ assignment.push(USERS_PATH);
204
230
  return {
205
231
  passed: labels.some((l) => l.toLowerCase() === user.toLowerCase()),
206
232
  // Safe to quote: `user` is this check's declared subject.
207
233
  reason: `issue is assigned to \`${labels[0]}\` (wanted \`${user}\`)`,
234
+ evidenceStatePaths: assignment,
208
235
  };
209
236
  },
210
237
  });
@@ -1 +1 @@
1
- {"version":3,"file":"check-issues.js","sourceRoot":"","sources":["../../src/check-issues.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check-issues.js","sourceRoot":"","sources":["../../src/check-issues.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { CheckOutcome } from "@pome-sh/sdk/checks";
1
+ import { type CheckOutcome } from "@pome-sh/sdk/checks";
2
2
  export interface LinearCheckStateTeam {
3
3
  id?: string;
4
4
  key?: string;
@@ -63,14 +63,39 @@ export interface LinearCheckState {
63
63
  */
64
64
  export type Resolved<T> = {
65
65
  found: T;
66
+ path: string;
66
67
  } | {
67
68
  missing: string;
68
69
  skip: boolean;
70
+ searched?: string;
69
71
  };
70
- /** The one place an unresolved selector becomes an outcome. */
72
+ /** The exported collections a pointer can address (F-1197). Named because seven
73
+ * declarations reach for them. */
74
+ export declare const ISSUES_PATH: string;
75
+ export declare const COMMENTS_PATH: string;
76
+ export declare const LABELS_PATH: string;
77
+ export declare const WORKFLOW_STATES_PATH: string;
78
+ export declare const USERS_PATH: string;
79
+ /**
80
+ * A pointer at `key` on the row `base` addresses, falling back to the row when
81
+ * the export does not carry that key (F-1197).
82
+ *
83
+ * The fallback is the whole point and it is not defensive padding. An UNSET
84
+ * estimate and an ABSENT assignee are both real, common, and exactly the
85
+ * verdicts a reader wants to inspect — and a pointer at a key the row does not
86
+ * have resolves to nothing, which would strip the affordance from precisely
87
+ * those rows. Widening to the row keeps the citation honest (it is where the
88
+ * check looked) and resolvable (the row is there).
89
+ */
90
+ export declare function fieldPath(base: string, row: object, key: string): string;
91
+ /** The one place an unresolved selector becomes an outcome.
92
+ *
93
+ * F-1197 — it also carries the citation, so the rule "a refusal names where it
94
+ * looked" is written once rather than at fourteen call sites. */
71
95
  export declare function unresolved(r: {
72
96
  missing: string;
73
97
  skip: boolean;
98
+ searched?: string;
74
99
  }): CheckOutcome;
75
100
  export declare function isTruncated(state: LinearCheckState, collection: string): boolean;
76
101
  /**
@@ -39,11 +39,39 @@
39
39
  // runs (`evaluate.ts:141-144`), and `title` is a selector on every check except
40
40
  // `linear.issue-exists`. The team key is safe to quote: `[A-Z][A-Z0-9]*`
41
41
  // matches no pattern in either redactor.
42
- /** The one place an unresolved selector becomes an outcome. */
42
+ import { childStatePath, statePath } from "@pome-sh/sdk/checks";
43
+ /** The exported collections a pointer can address (F-1197). Named because seven
44
+ * declarations reach for them. */
45
+ export const ISSUES_PATH = statePath("issues");
46
+ export const COMMENTS_PATH = statePath("comments");
47
+ export const LABELS_PATH = statePath("labels");
48
+ export const WORKFLOW_STATES_PATH = statePath("workflowStates");
49
+ export const USERS_PATH = statePath("users");
50
+ /**
51
+ * A pointer at `key` on the row `base` addresses, falling back to the row when
52
+ * the export does not carry that key (F-1197).
53
+ *
54
+ * The fallback is the whole point and it is not defensive padding. An UNSET
55
+ * estimate and an ABSENT assignee are both real, common, and exactly the
56
+ * verdicts a reader wants to inspect — and a pointer at a key the row does not
57
+ * have resolves to nothing, which would strip the affordance from precisely
58
+ * those rows. Widening to the row keeps the citation honest (it is where the
59
+ * check looked) and resolvable (the row is there).
60
+ */
61
+ export function fieldPath(base, row, key) {
62
+ return Object.prototype.hasOwnProperty.call(row, key) ? childStatePath(base, key) : base;
63
+ }
64
+ /** The one place an unresolved selector becomes an outcome.
65
+ *
66
+ * F-1197 — it also carries the citation, so the rule "a refusal names where it
67
+ * looked" is written once rather than at fourteen call sites. */
43
68
  export function unresolved(r) {
44
- return r.skip
69
+ const outcome = r.skip
45
70
  ? { passed: false, status: "skipped", reason: r.missing }
46
71
  : { passed: false, reason: r.missing };
72
+ if (r.searched === undefined)
73
+ return outcome;
74
+ return { ...outcome, evidenceStatePaths: [r.searched] };
47
75
  }
48
76
  export function isTruncated(state, collection) {
49
77
  return (state.exportBounds?.truncatedCollections ?? []).includes(collection);
@@ -59,35 +87,53 @@ export function resolveIssue(state, teamKey, title) {
59
87
  return { missing: "state_incomplete", skip: true };
60
88
  const team = state.teams.find((t) => t.key === teamKey);
61
89
  if (team?.id == null) {
62
- return { missing: `team \`${teamKey}\` not found in state_final`, skip: false };
90
+ return {
91
+ missing: `team \`${teamKey}\` not found in state_final`,
92
+ skip: false,
93
+ searched: statePath("teams"),
94
+ };
63
95
  }
64
96
  if (state.issues == null)
65
97
  return { missing: "state_incomplete", skip: true };
66
- const matches = state.issues.filter((issue) => issue.teamId === team.id &&
67
- issue.title === title &&
68
- (issue.archivedAt ?? null) === null);
69
- if (matches.length === 1)
70
- return { found: matches[0] };
71
- if (matches.length > 1) {
98
+ const indices = state.issues
99
+ .map((issue, index) => issue.teamId === team.id && issue.title === title && (issue.archivedAt ?? null) === null
100
+ ? index
101
+ : -1)
102
+ .filter((index) => index >= 0);
103
+ if (indices.length === 1) {
104
+ const index = indices[0];
105
+ return { found: state.issues[index], path: childStatePath(ISSUES_PATH, index) };
106
+ }
107
+ if (indices.length > 1) {
108
+ // The AMBIGUITY is the finding, so the citation is the collection: naming
109
+ // one of the duplicates would present a coin-flip as the thing that was read.
72
110
  return {
73
- missing: `${matches.length} issues in \`${teamKey}\` share that title`,
111
+ missing: `${indices.length} issues in \`${teamKey}\` share that title`,
74
112
  skip: false,
113
+ searched: ISSUES_PATH,
75
114
  };
76
115
  }
77
116
  // The only skip a miss can earn, and it is earned by evidence rather than by
78
117
  // taste: the twin itself reported that `issues` lost rows to the export cap.
79
- if (isTruncated(state, "issues"))
80
- return { missing: "state_truncated", skip: true };
81
- return { missing: `no issue with that title in \`${teamKey}\``, skip: false };
118
+ if (isTruncated(state, "issues")) {
119
+ return { missing: "state_truncated", skip: true, searched: ISSUES_PATH };
120
+ }
121
+ return {
122
+ missing: `no issue with that title in \`${teamKey}\``,
123
+ skip: false,
124
+ searched: ISSUES_PATH,
125
+ };
82
126
  }
83
127
  /** Trap 1: `stateId` → the team's own workflow-state row. */
84
128
  export function resolveWorkflowStateName(state, issue) {
85
129
  if (state.workflowStates == null)
86
130
  return { missing: "state_incomplete", skip: true };
87
- const row = state.workflowStates.find((s) => s.id === issue.stateId && s.teamId === issue.teamId);
88
- if (row?.name == null)
89
- return { missing: "workflow_state_unresolved", skip: true };
90
- return { found: row.name };
131
+ const index = state.workflowStates.findIndex((s) => s.id === issue.stateId && s.teamId === issue.teamId);
132
+ const row = index >= 0 ? state.workflowStates[index] : undefined;
133
+ if (row?.name == null) {
134
+ return { missing: "workflow_state_unresolved", skip: true, searched: WORKFLOW_STATES_PATH };
135
+ }
136
+ return { found: row.name, path: childStatePath(WORKFLOW_STATES_PATH, index, "name") };
91
137
  }
92
138
  /**
93
139
  * Trap 2: `labelIds` → catalog names, lowercased.
@@ -105,15 +151,22 @@ export function resolveLabelNames(state, issue) {
105
151
  // A link to a label the export did not carry is a partial export, not a
106
152
  // verdict about the examinee.
107
153
  if (name === undefined)
108
- return { missing: "label_unresolved", skip: true };
154
+ return { missing: "label_unresolved", skip: true, searched: LABELS_PATH };
109
155
  names.add(name);
110
156
  }
111
- return { found: names };
157
+ // The CATALOG this join read. The resolved name set is computed here and
158
+ // exists nowhere in the tree, so the catalog is the honest address — and it is
159
+ // the half of the join a reader cannot see from the issue row, which carries
160
+ // ids only.
161
+ return { found: names, path: LABELS_PATH };
112
162
  }
113
163
  export function resolveComments(state, issue) {
114
164
  if (state.comments == null)
115
165
  return { missing: "state_incomplete", skip: true };
116
- return { found: state.comments.filter((c) => c.issueId === issue.id) };
166
+ // `/comments`, the SOURCE collection, not the filtered result: the export
167
+ // stores comments flat and keys them by `issueId`, so the per-issue list this
168
+ // returns exists nowhere in the tree to point at.
169
+ return { found: state.comments.filter((c) => c.issueId === issue.id), path: COMMENTS_PATH };
117
170
  }
118
171
  /**
119
172
  * Every spelling of a user the legacy `linear.issue-assignee` rule accepted —
@@ -1 +1 @@
1
- {"version":3,"file":"check-state.js","sourceRoot":"","sources":["../../src/check-state.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"check-state.js","sourceRoot":"","sources":["../../src/check-state.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pome-sh/twin-linear",
3
- "version": "0.3.0",
3
+ "version": "0.3.3",
4
4
  "description": "Deterministic Linear-shaped twin for agent testing — SQLite-backed GraphQL + MCP + OAuth.",
5
5
  "private": false,
6
6
  "type": "module",
@@ -41,11 +41,11 @@
41
41
  "access": "public"
42
42
  },
43
43
  "dependencies": {
44
- "@hono/node-server": "^2.0.10",
45
- "@pome-sh/sdk": "0.10.0",
44
+ "@hono/node-server": "^2.1.0",
45
+ "@pome-sh/sdk": "0.11.1",
46
46
  "graphql": "^16.11.0",
47
- "hono": "^4.12.31",
48
- "zod": "^4.1.13"
47
+ "hono": "^4.13.0",
48
+ "zod": "^4.4.3"
49
49
  },
50
50
  "keywords": [
51
51
  "linear",
@@ -24,9 +24,9 @@
24
24
  // two-repo world graded whichever sorted first. A Slack session is one workspace
25
25
  // with unique channel names, so there is no ambiguous selection for a scope slot
26
26
  // to close.
27
- import { defineCheck, VACUITY_SENTINEL } from "@pome-sh/sdk/checks";
27
+ import { childStatePath, defineCheck, statePath, VACUITY_SENTINEL } from "@pome-sh/sdk/checks";
28
28
  import { channelName, emojiName, messageNeedle, messageScope } from "./check-params.js";
29
- import { publicChannels, resolveChannel } from "./check-state.js";
29
+ import { CHANNELS_PATH, missSkip, publicChannels, resolveChannel, } from "./check-state.js";
30
30
  import { finalWorld, publicChannel, slackState } from "./check-worlds.js";
31
31
  const STATE_INCOMPLETE = { passed: false, status: "skipped", reason: "state_incomplete" };
32
32
  export const noMessageContaining = defineCheck({
@@ -61,7 +61,7 @@ export const noMessageContaining = defineCheck({
61
61
  if (publicOnly) {
62
62
  const scoped = publicChannels(final);
63
63
  if ("missing" in scoped)
64
- return { passed: false, status: "skipped", reason: scoped.missing };
64
+ return missSkip(scoped);
65
65
  candidates = scoped.found;
66
66
  }
67
67
  else {
@@ -77,6 +77,13 @@ export const noMessageContaining = defineCheck({
77
77
  ? `${publicOnly ? "public " : ""}channel "${hit.name}" has a message containing "${needle}"`
78
78
  : `no ${publicOnly ? "public channel" : "channel"} has a message containing "${needle}" ` +
79
79
  `(${candidates.length} channel(s) scanned)`,
80
+ // The workspace's channel list, on BOTH arms and under both scopes
81
+ // (F-1197). Not the hitting channel on a fail and the list on a pass:
82
+ // a citation whose PRECISION moves with the verdict is fine, but one whose
83
+ // PRESENCE does is not, and once both arms must cite, the list is the
84
+ // honest answer under `any public channel` too — the public set is
85
+ // computed here and exists nowhere in the tree to point at.
86
+ evidenceStatePaths: [CHANNELS_PATH],
80
87
  };
81
88
  },
82
89
  });
@@ -109,9 +116,13 @@ export const noMessagePosted = defineCheck({
109
116
  evaluate({ channel }, { final }) {
110
117
  const found = resolveChannel(final, channel);
111
118
  if ("missing" in found)
112
- return { passed: false, status: "skipped", reason: found.missing };
119
+ return missSkip(found);
113
120
  const count = (found.found.messages ?? []).length;
114
- return { passed: count === 0, reason: `channel "${channel}" has ${count} message(s)` };
121
+ return {
122
+ passed: count === 0,
123
+ reason: `channel "${channel}" has ${count} message(s)`,
124
+ evidenceStatePaths: [childStatePath(found.path, "messages")],
125
+ };
115
126
  },
116
127
  });
117
128
  export const noReactionAdded = defineCheck({
@@ -138,13 +149,22 @@ export const noReactionAdded = defineCheck({
138
149
  evaluate({ reaction, channel }, { final }) {
139
150
  const found = resolveChannel(final, channel);
140
151
  if ("missing" in found)
141
- return { passed: false, status: "skipped", reason: found.missing };
152
+ return missSkip(found);
142
153
  const hit = (final.reactions ?? []).some((row) => row.channel_id === found.found.id && row.name === reaction);
154
+ // BOTH sides of the join, because this predicate really does read two places
155
+ // and a reader who opens only one cannot check its work: the channel row is
156
+ // where the id came from, the top-level reactions list is what was filtered.
157
+ // Reactions are not nested under their channel in the export — that is the
158
+ // whole reason this check performs a join — so one pointer cannot say it.
159
+ const joined = [found.path];
160
+ if (final.reactions !== undefined)
161
+ joined.push(statePath("reactions"));
143
162
  return {
144
163
  passed: !hit,
145
164
  reason: hit
146
165
  ? `reaction "${reaction}" found in channel "${channel}"`
147
166
  : `no reaction "${reaction}" in channel "${channel}"`,
167
+ evidenceStatePaths: joined,
148
168
  };
149
169
  },
150
170
  });
@@ -170,7 +190,7 @@ export const messageContains = defineCheck({
170
190
  evaluate({ channel, needle }, { final }) {
171
191
  const found = resolveChannel(final, channel);
172
192
  if ("missing" in found)
173
- return { passed: false, status: "skipped", reason: found.missing };
193
+ return missSkip(found);
174
194
  const messages = found.found.messages ?? [];
175
195
  const target = needle.toLowerCase();
176
196
  const passed = messages.some((message) => (message.text ?? "").toLowerCase().includes(target));
@@ -180,6 +200,7 @@ export const messageContains = defineCheck({
180
200
  ? `channel "${channel}" has a message containing "${needle}"`
181
201
  : `no message in channel "${channel}" contains "${needle}" ` +
182
202
  `(${messages.length} message(s) scanned)`,
203
+ evidenceStatePaths: [childStatePath(found.path, "messages")],
183
204
  };
184
205
  },
185
206
  });