slopless 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (193) hide show
  1. package/README.md +64 -0
  2. package/dist/families/metrics/avg-sentence-length.js +22 -0
  3. package/dist/families/metrics/avg-sentence-length.js.map +1 -0
  4. package/dist/families/metrics/coleman-liau.js +27 -0
  5. package/dist/families/metrics/coleman-liau.js.map +1 -0
  6. package/dist/families/metrics/flesch-kincaid.js +27 -0
  7. package/dist/families/metrics/flesch-kincaid.js.map +1 -0
  8. package/dist/families/metrics/gunning-fog.js +27 -0
  9. package/dist/families/metrics/gunning-fog.js.map +1 -0
  10. package/dist/families/metrics/paragraph-length.js +21 -0
  11. package/dist/families/metrics/paragraph-length.js.map +1 -0
  12. package/dist/families/metrics/word-repetition.js +46 -0
  13. package/dist/families/metrics/word-repetition.js.map +1 -0
  14. package/dist/families/orthography/colon-dramatic.js +117 -0
  15. package/dist/families/orthography/colon-dramatic.js.map +1 -0
  16. package/dist/families/orthography/em-dashes.js +41 -0
  17. package/dist/families/orthography/em-dashes.js.map +1 -0
  18. package/dist/families/orthography/exclamation-density.js +51 -0
  19. package/dist/families/orthography/exclamation-density.js.map +1 -0
  20. package/dist/families/orthography/fake-timestamps.js +103 -0
  21. package/dist/families/orthography/fake-timestamps.js.map +1 -0
  22. package/dist/families/orthography/sentence-case.js +66 -0
  23. package/dist/families/orthography/sentence-case.js.map +1 -0
  24. package/dist/families/orthography/smart-quotes.js +53 -0
  25. package/dist/families/orthography/smart-quotes.js.map +1 -0
  26. package/dist/families/phrases/cliches.js +17 -0
  27. package/dist/families/phrases/cliches.js.map +1 -0
  28. package/dist/families/phrases/corporate-speak.js +23 -0
  29. package/dist/families/phrases/corporate-speak.js.map +1 -0
  30. package/dist/families/phrases/data/cliches.json +699 -0
  31. package/dist/families/phrases/data/corporate-speak.json +27 -0
  32. package/dist/families/phrases/data/prohibited-phrases.json +8 -0
  33. package/dist/families/phrases/data/skunked-terms.json +10 -0
  34. package/dist/families/phrases/data/uncomparables.json +57 -0
  35. package/dist/families/phrases/humble-bragger.js +26 -0
  36. package/dist/families/phrases/humble-bragger.js.map +1 -0
  37. package/dist/families/phrases/jargon-faker.js +84 -0
  38. package/dist/families/phrases/jargon-faker.js.map +1 -0
  39. package/dist/families/phrases/llm-disclaimer.js +54 -0
  40. package/dist/families/phrases/llm-disclaimer.js.map +1 -0
  41. package/dist/families/phrases/prohibited-phrases.js +17 -0
  42. package/dist/families/phrases/prohibited-phrases.js.map +1 -0
  43. package/dist/families/phrases/skunked-terms.js +23 -0
  44. package/dist/families/phrases/skunked-terms.js.map +1 -0
  45. package/dist/families/phrases/uncomparables.js +78 -0
  46. package/dist/families/phrases/uncomparables.js.map +1 -0
  47. package/dist/families/semantic-thinness/patterns/abstract-contrast.json +85 -0
  48. package/dist/families/semantic-thinness/patterns/abstract-metaphor-claim.json +112 -0
  49. package/dist/families/semantic-thinness/patterns/body-emotion-shorthand.json +77 -0
  50. package/dist/families/semantic-thinness/patterns/body-knows.json +80 -0
  51. package/dist/families/semantic-thinness/patterns/deictic-summary.json +109 -0
  52. package/dist/families/semantic-thinness/patterns/empty-atmosphere-shift.json +70 -0
  53. package/dist/families/semantic-thinness/patterns/empty-emotional-weather.json +104 -0
  54. package/dist/families/semantic-thinness/patterns/empty-scene-state.json +117 -0
  55. package/dist/families/semantic-thinness/patterns/empty-scene-transition.json +98 -0
  56. package/dist/families/semantic-thinness/patterns/gaze-choreography.json +87 -0
  57. package/dist/families/semantic-thinness/patterns/generic-lesson-extraction.json +82 -0
  58. package/dist/families/semantic-thinness/patterns/generic-pressure-or-stakes.json +107 -0
  59. package/dist/families/semantic-thinness/patterns/generic-realization.json +113 -0
  60. package/dist/families/semantic-thinness/patterns/hollow-significance.json +103 -0
  61. package/dist/families/semantic-thinness/patterns/low-information-physical-blocking.json +113 -0
  62. package/dist/families/semantic-thinness/patterns/point-is-frame.json +81 -0
  63. package/dist/families/semantic-thinness/patterns/real-work-begins.json +66 -0
  64. package/dist/families/semantic-thinness/patterns/silence-as-actor.json +69 -0
  65. package/dist/families/semantic-thinness/patterns/something-shifted.json +73 -0
  66. package/dist/families/semantic-thinness/patterns/truth-answer-moves.json +75 -0
  67. package/dist/families/semantic-thinness/patterns/vague-connective-payoff.json +90 -0
  68. package/dist/families/semantic-thinness/patterns/vague-threshold-change.json +98 -0
  69. package/dist/families/semantic-thinness/private/pattern-data-a.js +15 -0
  70. package/dist/families/semantic-thinness/private/pattern-data-a.js.map +1 -0
  71. package/dist/families/semantic-thinness/private/pattern-data-b.js +15 -0
  72. package/dist/families/semantic-thinness/private/pattern-data-b.js.map +1 -0
  73. package/dist/families/semantic-thinness/private/pattern-data-c.js +9 -0
  74. package/dist/families/semantic-thinness/private/pattern-data-c.js.map +1 -0
  75. package/dist/families/semantic-thinness/private/pattern-data-d.js +17 -0
  76. package/dist/families/semantic-thinness/private/pattern-data-d.js.map +1 -0
  77. package/dist/families/semantic-thinness/private/pattern-data.js +11 -0
  78. package/dist/families/semantic-thinness/private/pattern-data.js.map +1 -0
  79. package/dist/families/semantic-thinness/private/pattern-matcher.js +172 -0
  80. package/dist/families/semantic-thinness/private/pattern-matcher.js.map +1 -0
  81. package/dist/families/semantic-thinness/semantic-thinness.js +25 -0
  82. package/dist/families/semantic-thinness/semantic-thinness.js.map +1 -0
  83. package/dist/families/syntactic-patterns/authority/authority-padding.js +81 -0
  84. package/dist/families/syntactic-patterns/authority/authority-padding.js.map +1 -0
  85. package/dist/families/syntactic-patterns/closers/affirmation-closers.js +48 -0
  86. package/dist/families/syntactic-patterns/closers/affirmation-closers.js.map +1 -0
  87. package/dist/families/syntactic-patterns/closers/boilerplate-conclusion.js +131 -0
  88. package/dist/families/syntactic-patterns/closers/boilerplate-conclusion.js.map +1 -0
  89. package/dist/families/syntactic-patterns/closers/false-question.js +30 -0
  90. package/dist/families/syntactic-patterns/closers/false-question.js.map +1 -0
  91. package/dist/families/syntactic-patterns/closers/summative-closer.js +33 -0
  92. package/dist/families/syntactic-patterns/closers/summative-closer.js.map +1 -0
  93. package/dist/families/syntactic-patterns/contrast/blame-reframe.js +59 -0
  94. package/dist/families/syntactic-patterns/contrast/blame-reframe.js.map +1 -0
  95. package/dist/families/syntactic-patterns/contrast/contrastive-aphorism.js +203 -0
  96. package/dist/families/syntactic-patterns/contrast/contrastive-aphorism.js.map +1 -0
  97. package/dist/families/syntactic-patterns/contrast/negation-reframe.js +20 -0
  98. package/dist/families/syntactic-patterns/contrast/negation-reframe.js.map +1 -0
  99. package/dist/families/syntactic-patterns/contrast/private/negation-reframe-matcher.js +218 -0
  100. package/dist/families/syntactic-patterns/contrast/private/negation-reframe-matcher.js.map +1 -0
  101. package/dist/families/syntactic-patterns/contrast/private/negation-reframe-parts.js +136 -0
  102. package/dist/families/syntactic-patterns/contrast/private/negation-reframe-parts.js.map +1 -0
  103. package/dist/families/syntactic-patterns/generalization/softening-language.js +143 -0
  104. package/dist/families/syntactic-patterns/generalization/softening-language.js.map +1 -0
  105. package/dist/families/syntactic-patterns/generalization/universalizing-claims.js +137 -0
  106. package/dist/families/syntactic-patterns/generalization/universalizing-claims.js.map +1 -0
  107. package/dist/families/syntactic-patterns/lead-ins/boilerplate-framing.js +104 -0
  108. package/dist/families/syntactic-patterns/lead-ins/boilerplate-framing.js.map +1 -0
  109. package/dist/families/syntactic-patterns/lead-ins/generic-signposting.js +230 -0
  110. package/dist/families/syntactic-patterns/lead-ins/generic-signposting.js.map +1 -0
  111. package/dist/families/syntactic-patterns/lead-ins/lesson-framing.js +76 -0
  112. package/dist/families/syntactic-patterns/lead-ins/lesson-framing.js.map +1 -0
  113. package/dist/families/syntactic-patterns/lead-ins/llm-openers.js +24 -0
  114. package/dist/families/syntactic-patterns/lead-ins/llm-openers.js.map +1 -0
  115. package/dist/families/syntactic-patterns/lead-ins/observer-guidance.js +95 -0
  116. package/dist/families/syntactic-patterns/lead-ins/observer-guidance.js.map +1 -0
  117. package/dist/families/syntactic-patterns/llm-artifacts/response-wrapper.js +106 -0
  118. package/dist/families/syntactic-patterns/llm-artifacts/response-wrapper.js.map +1 -0
  119. package/dist/families/syntactic-patterns/repetition/demonstrative-emphasis.js +251 -0
  120. package/dist/families/syntactic-patterns/repetition/demonstrative-emphasis.js.map +1 -0
  121. package/dist/families/syntactic-patterns/repetition/empty-emphasis.js +108 -0
  122. package/dist/families/syntactic-patterns/repetition/empty-emphasis.js.map +1 -0
  123. package/dist/families/syntactic-patterns/repetition/fragment-stacking.js +306 -0
  124. package/dist/families/syntactic-patterns/repetition/fragment-stacking.js.map +1 -0
  125. package/dist/families/syntactic-patterns/repetition/triple-repeat.js +149 -0
  126. package/dist/families/syntactic-patterns/repetition/triple-repeat.js.map +1 -0
  127. package/dist/families/term-policy/recommended-terms.js +87 -0
  128. package/dist/families/term-policy/recommended-terms.js.map +1 -0
  129. package/dist/families/term-policy/required-terms.js +32 -0
  130. package/dist/families/term-policy/required-terms.js.map +1 -0
  131. package/dist/families/words/data/prohibited-words.json +12 -0
  132. package/dist/families/words/data/simplicity-pairs.json +7 -0
  133. package/dist/families/words/hedge-stacking.js +43 -0
  134. package/dist/families/words/hedge-stacking.js.map +1 -0
  135. package/dist/families/words/llm-vocabulary.js +33 -0
  136. package/dist/families/words/llm-vocabulary.js.map +1 -0
  137. package/dist/families/words/prohibited-words.js +17 -0
  138. package/dist/families/words/prohibited-words.js.map +1 -0
  139. package/dist/families/words/simplicity.js +27 -0
  140. package/dist/families/words/simplicity.js.map +1 -0
  141. package/dist/index.js +26 -0
  142. package/dist/index.js.map +1 -0
  143. package/dist/presets/everything.js +52 -0
  144. package/dist/presets/everything.js.map +1 -0
  145. package/dist/registries/metrics.js +15 -0
  146. package/dist/registries/metrics.js.map +1 -0
  147. package/dist/registries/orthography.js +15 -0
  148. package/dist/registries/orthography.js.map +1 -0
  149. package/dist/registries/phrases.js +19 -0
  150. package/dist/registries/phrases.js.map +1 -0
  151. package/dist/registries/semantic-thinness.js +5 -0
  152. package/dist/registries/semantic-thinness.js.map +1 -0
  153. package/dist/registries/syntactic-patterns/authority.js +5 -0
  154. package/dist/registries/syntactic-patterns/authority.js.map +1 -0
  155. package/dist/registries/syntactic-patterns/closers.js +11 -0
  156. package/dist/registries/syntactic-patterns/closers.js.map +1 -0
  157. package/dist/registries/syntactic-patterns/contrast.js +9 -0
  158. package/dist/registries/syntactic-patterns/contrast.js.map +1 -0
  159. package/dist/registries/syntactic-patterns/generalization.js +7 -0
  160. package/dist/registries/syntactic-patterns/generalization.js.map +1 -0
  161. package/dist/registries/syntactic-patterns/lead-ins.js +13 -0
  162. package/dist/registries/syntactic-patterns/lead-ins.js.map +1 -0
  163. package/dist/registries/syntactic-patterns/llm-artifacts.js +5 -0
  164. package/dist/registries/syntactic-patterns/llm-artifacts.js.map +1 -0
  165. package/dist/registries/syntactic-patterns/repetition.js +11 -0
  166. package/dist/registries/syntactic-patterns/repetition.js.map +1 -0
  167. package/dist/registries/syntactic-patterns.js +17 -0
  168. package/dist/registries/syntactic-patterns.js.map +1 -0
  169. package/dist/registries/term-policy.js +7 -0
  170. package/dist/registries/term-policy.js.map +1 -0
  171. package/dist/registries/words.js +11 -0
  172. package/dist/registries/words.js.map +1 -0
  173. package/dist/shared/matchers/phrases.js +71 -0
  174. package/dist/shared/matchers/phrases.js.map +1 -0
  175. package/dist/shared/matchers/prose-patterns.js +104 -0
  176. package/dist/shared/matchers/prose-patterns.js.map +1 -0
  177. package/dist/shared/text/document.js +18 -0
  178. package/dist/shared/text/document.js.map +1 -0
  179. package/dist/shared/text/normalize.js +30 -0
  180. package/dist/shared/text/normalize.js.map +1 -0
  181. package/dist/shared/text/quotes.js +20 -0
  182. package/dist/shared/text/quotes.js.map +1 -0
  183. package/dist/shared/text/sections.js +119 -0
  184. package/dist/shared/text/sections.js.map +1 -0
  185. package/dist/shared/text/sentences.js +79 -0
  186. package/dist/shared/text/sentences.js.map +1 -0
  187. package/dist/shared/text/tokens.js +18 -0
  188. package/dist/shared/text/tokens.js.map +1 -0
  189. package/dist/shared/text/traverse.js +10 -0
  190. package/dist/shared/text/traverse.js.map +1 -0
  191. package/dist/shared/text/whitespace.js +25 -0
  192. package/dist/shared/text/whitespace.js.map +1 -0
  193. package/package.json +115 -0
@@ -0,0 +1,66 @@
1
+ {
2
+ "id": "real-work-begins",
3
+ "class": "work-payoff",
4
+ "purpose": "Catch payoff lines that announce the real, deeper, actual, or hard work beginning without naming the concrete work.",
5
+ "matchMode": "contains",
6
+ "maxTokens": 80,
7
+ "templates": [
8
+ "{workSubject} {startVerb}.",
9
+ "{workSubject} {startVerb} when {genericSubject} {abstractAction}.",
10
+ "{workSubject} {startVerb} after {abstractEvent} {fadesVerb}.",
11
+ "where {workSubject} {startVerb}."
12
+ ],
13
+ "slots": {
14
+ "workSubject": [
15
+ "the real work",
16
+ "the actual work",
17
+ "the deeper work",
18
+ "the hard work",
19
+ "the honest work",
20
+ "the inner work"
21
+ ],
22
+ "startVerb": ["begins", "starts", "happens", "lives"],
23
+ "genericSubject": ["we", "you", "they", "people", "the team"],
24
+ "abstractAction": [
25
+ "start naming what matters",
26
+ "stop hiding behind noise",
27
+ "learn to listen",
28
+ "choose clarity",
29
+ "do the hard thing",
30
+ "tell the truth",
31
+ "return to the practice"
32
+ ],
33
+ "abstractEvent": [
34
+ "the excitement",
35
+ "the noise",
36
+ "the moment",
37
+ "the launch",
38
+ "the drama",
39
+ "the ceremony"
40
+ ],
41
+ "fadesVerb": ["fades", "settles", "ends", "passes"]
42
+ },
43
+ "rejectIf": [
44
+ "sentence names concrete work items",
45
+ "sentence refers to a literal job starting at a time or place",
46
+ "sentence includes a specific deliverable"
47
+ ],
48
+ "positiveExamples": [
49
+ "The real work begins.",
50
+ "The real work begins when we stop hiding behind noise.",
51
+ "The deeper work starts after the excitement fades.",
52
+ "That is where the real work begins.",
53
+ "The hard work happens when people choose clarity.",
54
+ "The inner work begins when you return to the practice."
55
+ ],
56
+ "negativeExamples": [
57
+ "The real work begins at 8:30 with the masonry crew.",
58
+ "The hard work starts when Cassia carries the ladder to the wall.",
59
+ "The actual work begins after the build script finishes compiling.",
60
+ "The team starts work after the client signs the invoice."
61
+ ],
62
+ "notes": [
63
+ "This phrase was rare but very high precision in the generated corpus.",
64
+ "Contains-mode is required because it often appears after a comma."
65
+ ]
66
+ }
@@ -0,0 +1,69 @@
1
+ {
2
+ "id": "silence-as-actor",
3
+ "class": "abstract-atmosphere",
4
+ "purpose": "Catch silence and quiet treated as abstract actors or emotional objects instead of concrete sound, source, or action.",
5
+ "matchMode": "contains",
6
+ "maxTokens": 80,
7
+ "templates": [
8
+ "{silenceSubject} {linkingVerb} not {thinState}.",
9
+ "{silenceSubject} {linkingVerb} {thinState}.",
10
+ "{deicticSubject} only made {silenceSubject} feel {thinState}.",
11
+ "{placeSubject} had gone quiet in {mannerFrame}.",
12
+ "{humanSubject} could make {silenceSubject} feel {thinState}."
13
+ ],
14
+ "slots": {
15
+ "silenceSubject": [
16
+ "the silence",
17
+ "silence",
18
+ "the quiet",
19
+ "the room",
20
+ "the office",
21
+ "the house",
22
+ "the hall"
23
+ ],
24
+ "linkingVerb": ["was", "felt", "became", "seemed", "looked"],
25
+ "thinState": [
26
+ "empty",
27
+ "crowded",
28
+ "deliberate",
29
+ "arranged",
30
+ "heavy",
31
+ "strange",
32
+ "loud",
33
+ "busy",
34
+ "complete"
35
+ ],
36
+ "deicticSubject": ["this", "that", "it"],
37
+ "placeSubject": ["the office", "the room", "the house", "the hall"],
38
+ "mannerFrame": [
39
+ "the way offices do",
40
+ "the way rooms do",
41
+ "the way old houses do",
42
+ "the way halls do"
43
+ ],
44
+ "humanSubject": ["she", "he", "they", "we", "the woman", "the man"]
45
+ },
46
+ "rejectIf": [
47
+ "sentence identifies a concrete sound source",
48
+ "sentence describes acoustic measurement or recording",
49
+ "sentence uses quiet as a direct instruction"
50
+ ],
51
+ "positiveExamples": [
52
+ "The silence was not empty.",
53
+ "The silence felt arranged.",
54
+ "This only made the silence feel deliberate.",
55
+ "The office had gone quiet in the way offices do.",
56
+ "She could make silence feel crowded.",
57
+ "The room felt busy."
58
+ ],
59
+ "negativeExamples": [
60
+ "The room was quiet enough to hear the loose hinge scrape.",
61
+ "The office went quiet after the fire alarm stopped.",
62
+ "Keep quiet until Marius reaches the gate.",
63
+ "The recording measured the silence at 28 decibels."
64
+ ],
65
+ "notes": [
66
+ "This overlaps with empty-scene-state but targets personified atmosphere specifically.",
67
+ "It is common in wellness and literary slop."
68
+ ]
69
+ }
@@ -0,0 +1,73 @@
1
+ {
2
+ "id": "something-shifted",
3
+ "class": "vague-change",
4
+ "purpose": "Catch vague change declarations that say something shifted, changed, moved, or crossed a line without naming the concrete change.",
5
+ "matchMode": "contains",
6
+ "maxTokens": 80,
7
+ "templates": [
8
+ "{genericSubject} {changeVerb}.",
9
+ "{genericSubject} had {changeVerb}.",
10
+ "{genericSubject} in {abstractContainer} had {changeVerb}.",
11
+ "{concreteSubject} did not {changeVerb}, but {genericSubject} in it did.",
12
+ "{genericSubject} {changeVerb} when {genericSubject} {abstractAction}."
13
+ ],
14
+ "slots": {
15
+ "genericSubject": [
16
+ "something",
17
+ "everything",
18
+ "the room",
19
+ "the day",
20
+ "the moment",
21
+ "the arrangement",
22
+ "the energy",
23
+ "the air",
24
+ "the story"
25
+ ],
26
+ "changeVerb": ["shifted", "changed", "moved", "turned", "crossed a line"],
27
+ "abstractContainer": [
28
+ "it",
29
+ "the room",
30
+ "the day",
31
+ "the arrangement",
32
+ "the moment",
33
+ "the house"
34
+ ],
35
+ "concreteSubject": [
36
+ "the room",
37
+ "the house",
38
+ "the day",
39
+ "the market",
40
+ "the office"
41
+ ],
42
+ "abstractAction": [
43
+ "stopped trying",
44
+ "started listening",
45
+ "chose differently",
46
+ "named the truth",
47
+ "let go"
48
+ ]
49
+ },
50
+ "rejectIf": [
51
+ "sentence names what changed",
52
+ "sentence describes a concrete object moving",
53
+ "sentence includes a date, number, measurement, or physical direction"
54
+ ],
55
+ "positiveExamples": [
56
+ "Something had shifted.",
57
+ "Everything changed.",
58
+ "Something in the room had shifted.",
59
+ "The room did not change, but something in it did.",
60
+ "Something shifted when she stopped trying.",
61
+ "The air had changed."
62
+ ],
63
+ "negativeExamples": [
64
+ "The market shifted three stalls west after the fire.",
65
+ "The room changed when Arden opened the shutters.",
66
+ "The line crossed the river at the stone bridge.",
67
+ "The air changed after the storm front reached the harbor."
68
+ ],
69
+ "notes": [
70
+ "This is one of the highest-value generated slop families.",
71
+ "Rejecting concrete physical movement is the main false-positive gate."
72
+ ]
73
+ }
@@ -0,0 +1,75 @@
1
+ {
2
+ "id": "truth-answer-moves",
3
+ "class": "abstract-revelation",
4
+ "purpose": "Catch truth, answer, pattern, or meaning moving or arriving as an abstract object without naming the fact.",
5
+ "matchMode": "contains",
6
+ "maxTokens": 80,
7
+ "templates": [
8
+ "{truthSubject} {emergenceVerb}.",
9
+ "{truthSubject} starts {motionVerb}.",
10
+ "{truthSubject} began to {motionVerb}.",
11
+ "{truthSubject} {arrivalVerb} as {abstractForm}.",
12
+ "{humanSubject} checked whether {truthSubject} would be allowed to {thinAction}."
13
+ ],
14
+ "slots": {
15
+ "truthSubject": [
16
+ "the truth",
17
+ "the answer",
18
+ "the pattern",
19
+ "the meaning",
20
+ "the lesson",
21
+ "the point"
22
+ ],
23
+ "emergenceVerb": [
24
+ "surfaces",
25
+ "surfaced",
26
+ "arrives",
27
+ "arrived",
28
+ "appears",
29
+ "appeared",
30
+ "emerges",
31
+ "emerged"
32
+ ],
33
+ "motionVerb": [
34
+ "move",
35
+ "moving around",
36
+ "take shape",
37
+ "show itself",
38
+ "surface",
39
+ "arrive"
40
+ ],
41
+ "arrivalVerb": ["comes", "came", "arrives", "arrived"],
42
+ "abstractForm": [
43
+ "a body sensation",
44
+ "a feeling",
45
+ "a knowing",
46
+ "a quiet answer",
47
+ "a small signal"
48
+ ],
49
+ "humanSubject": ["he", "she", "they", "we", "people"],
50
+ "thinAction": ["stay small", "come out", "be seen", "matter", "arrive"]
51
+ },
52
+ "rejectIf": [
53
+ "sentence states the actual truth or answer",
54
+ "sentence uses answer as a response to a concrete question",
55
+ "sentence names the evidence that produced the answer"
56
+ ],
57
+ "positiveExamples": [
58
+ "Eventually the truth surfaces.",
59
+ "The answer arrives as a body sensation.",
60
+ "The meaning arrives later.",
61
+ "The truth starts moving around.",
62
+ "The answer began to take shape.",
63
+ "She checked whether the truth would be allowed to stay small."
64
+ ],
65
+ "negativeExamples": [
66
+ "The answer arrived by email at 9:14.",
67
+ "The truth is that the latch was opened with Rory's spare key.",
68
+ "The pattern emerged after Cassia sorted the footprints by size.",
69
+ "He answered the guard's question before noon."
70
+ ],
71
+ "notes": [
72
+ "This pattern is high precision in generated slop but must reject concrete answers.",
73
+ "It pairs with generic-realization but catches abstract subject movement."
74
+ ]
75
+ }
@@ -0,0 +1,90 @@
1
+ {
2
+ "id": "vague-connective-payoff",
3
+ "class": "connective-payoff",
4
+ "purpose": "Catch connective payoff sentences that signal a conclusion without adding the conclusion.",
5
+ "templates": [
6
+ "{payoffOpener} {payoffComplement}.",
7
+ "{payoffOpener} where {genericWork} {startVerb}.",
8
+ "{payoffOpener} why {genericSubject} {importanceVerb}.",
9
+ "{payoffOpener} how {genericChange} {startVerb}."
10
+ ],
11
+ "slots": {
12
+ "payoffOpener": [
13
+ "and that is",
14
+ "and this is",
15
+ "that is",
16
+ "this is",
17
+ "which is",
18
+ "which is why",
19
+ "that is why",
20
+ "this is why",
21
+ "that is where",
22
+ "this is where",
23
+ "that is how",
24
+ "this is how"
25
+ ],
26
+ "payoffComplement": [
27
+ "where the work begins",
28
+ "where change starts",
29
+ "where things shift",
30
+ "why it matters",
31
+ "why this matters",
32
+ "how change starts",
33
+ "how the work begins",
34
+ "the point",
35
+ "the part that matters",
36
+ "the real work"
37
+ ],
38
+ "genericWork": [
39
+ "the work",
40
+ "change",
41
+ "the process",
42
+ "the practice",
43
+ "the repair",
44
+ "the lesson",
45
+ "the answer"
46
+ ],
47
+ "startVerb": ["begins", "starts", "happens", "shows up", "takes root"],
48
+ "genericSubject": [
49
+ "it",
50
+ "this",
51
+ "that",
52
+ "the work",
53
+ "the lesson",
54
+ "the process",
55
+ "the change"
56
+ ],
57
+ "importanceVerb": ["matters", "works", "sticks", "lasts", "changes things"],
58
+ "genericChange": [
59
+ "change",
60
+ "repair",
61
+ "progress",
62
+ "growth",
63
+ "trust",
64
+ "clarity"
65
+ ]
66
+ },
67
+ "rejectIf": [
68
+ "sentence contains the concrete conclusion after the payoff opener",
69
+ "previous sentence provides a precise referent and payoff sentence is a short valid summary",
70
+ "sentence includes a concrete actor, action, object, number, date, or named source"
71
+ ],
72
+ "positiveExamples": [
73
+ "And that is where the work begins.",
74
+ "That is why it matters.",
75
+ "This is how change starts.",
76
+ "That is where things shift.",
77
+ "This is the part that matters.",
78
+ "Which is why the work begins there."
79
+ ],
80
+ "negativeExamples": [
81
+ "That is why the repayment job must run before the invoice export.",
82
+ "This is how the parser maps the sentence offset back to the original paragraph.",
83
+ "That is where the nurse found the missing inhaler.",
84
+ "This is why the clinic added a second intake desk in 2024."
85
+ ],
86
+ "notes": [
87
+ "This overlaps with generic signposting and closers.",
88
+ "Previous-sentence referent checks are required before activation."
89
+ ]
90
+ }
@@ -0,0 +1,98 @@
1
+ {
2
+ "id": "vague-threshold-change",
3
+ "class": "threshold-change",
4
+ "purpose": "Catch vague threshold or evaluation changes without named scale, cause, or concrete state.",
5
+ "templates": [
6
+ "{genericSubject} {thresholdVerb} {evaluativeComplement}.",
7
+ "{genericSubject} {thresholdVerb} {comparativeComplement}.",
8
+ "{genericSubject} {feelingVerb} {evaluativeComplement}.",
9
+ "{genericSubject} {thresholdVerb} {weakDegree} {evaluativeComplement}."
10
+ ],
11
+ "slots": {
12
+ "genericSubject": [
13
+ "things",
14
+ "everything",
15
+ "something",
16
+ "it",
17
+ "this",
18
+ "that",
19
+ "the work",
20
+ "the process",
21
+ "the conversation",
22
+ "the situation",
23
+ "the day",
24
+ "the moment",
25
+ "the path",
26
+ "the choice"
27
+ ],
28
+ "thresholdVerb": [
29
+ "got",
30
+ "became",
31
+ "grew",
32
+ "turned",
33
+ "seemed",
34
+ "stayed",
35
+ "remained"
36
+ ],
37
+ "feelingVerb": ["felt", "looked", "sounded", "seemed"],
38
+ "evaluativeComplement": [
39
+ "different",
40
+ "better",
41
+ "worse",
42
+ "harder",
43
+ "easier",
44
+ "clearer",
45
+ "messier",
46
+ "heavier",
47
+ "lighter",
48
+ "stranger",
49
+ "simpler",
50
+ "complicated",
51
+ "possible",
52
+ "real"
53
+ ],
54
+ "comparativeComplement": [
55
+ "more real",
56
+ "more possible",
57
+ "more complicated",
58
+ "less certain",
59
+ "less simple",
60
+ "harder to ignore",
61
+ "easier to see",
62
+ "clearer than before"
63
+ ],
64
+ "weakDegree": [
65
+ "a little",
66
+ "somewhat",
67
+ "kind of",
68
+ "more",
69
+ "less",
70
+ "slightly",
71
+ "quietly"
72
+ ]
73
+ },
74
+ "rejectIf": [
75
+ "sentence names the scale or metric that changed",
76
+ "sentence names a concrete cause",
77
+ "sentence includes a concrete before or after state",
78
+ "sentence includes a number, date, named actor, or specific event"
79
+ ],
80
+ "positiveExamples": [
81
+ "Things got harder.",
82
+ "Everything became clearer.",
83
+ "Something felt different.",
84
+ "The work became more complicated.",
85
+ "The situation got worse.",
86
+ "It felt more real."
87
+ ],
88
+ "negativeExamples": [
89
+ "The build got slower after the cache key changed.",
90
+ "Everything became clearer when the audit log showed the missing request.",
91
+ "The situation got worse after three nurses called in sick.",
92
+ "The work became more complicated because the API added pagination."
93
+ ],
94
+ "notes": [
95
+ "This pattern must reject concrete cause and metric information.",
96
+ "It is similar to empty scene transition but centered on evaluation thresholds."
97
+ ]
98
+ }
@@ -0,0 +1,15 @@
1
+ import abstractContrast from "../patterns/abstract-contrast.json" with { type: "json" };
2
+ import abstractMetaphorClaim from "../patterns/abstract-metaphor-claim.json" with { type: "json" };
3
+ import emptyEmotionalWeather from "../patterns/empty-emotional-weather.json" with { type: "json" };
4
+ import emptySceneState from "../patterns/empty-scene-state.json" with { type: "json" };
5
+ import emptySceneTransition from "../patterns/empty-scene-transition.json" with { type: "json" };
6
+ import genericLessonExtraction from "../patterns/generic-lesson-extraction.json" with { type: "json" };
7
+ export const semanticThinnessPatternSetA = [
8
+ abstractContrast,
9
+ abstractMetaphorClaim,
10
+ emptyEmotionalWeather,
11
+ emptySceneState,
12
+ emptySceneTransition,
13
+ genericLessonExtraction
14
+ ];
15
+ //# sourceMappingURL=pattern-data-a.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pattern-data-a.js","sourceRoot":"","sources":["../../../../src/families/semantic-thinness/private/pattern-data-a.ts"],"names":[],"mappings":"AAAA,OAAO,gBAAgB,MAAM,oCAAoC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACxF,OAAO,qBAAqB,MAAM,0CAA0C,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACnG,OAAO,qBAAqB,MAAM,0CAA0C,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACnG,OAAO,eAAe,MAAM,oCAAoC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACvF,OAAO,oBAAoB,MAAM,yCAAyC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACjG,OAAO,uBAAuB,MAAM,4CAA4C,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAGvG,MAAM,CAAC,MAAM,2BAA2B,GAAuC;IAC7E,gBAAgB;IAChB,qBAAqB;IACrB,qBAAqB;IACrB,eAAe;IACf,oBAAoB;IACpB,uBAAuB;CACxB,CAAC"}
@@ -0,0 +1,15 @@
1
+ import genericPressureOrStakes from "../patterns/generic-pressure-or-stakes.json" with { type: "json" };
2
+ import genericRealization from "../patterns/generic-realization.json" with { type: "json" };
3
+ import hollowSignificance from "../patterns/hollow-significance.json" with { type: "json" };
4
+ import lowInformationPhysicalBlocking from "../patterns/low-information-physical-blocking.json" with { type: "json" };
5
+ import vagueConnectivePayoff from "../patterns/vague-connective-payoff.json" with { type: "json" };
6
+ import vagueThresholdChange from "../patterns/vague-threshold-change.json" with { type: "json" };
7
+ export const semanticThinnessPatternSetB = [
8
+ genericPressureOrStakes,
9
+ genericRealization,
10
+ hollowSignificance,
11
+ lowInformationPhysicalBlocking,
12
+ vagueConnectivePayoff,
13
+ vagueThresholdChange
14
+ ];
15
+ //# sourceMappingURL=pattern-data-b.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pattern-data-b.js","sourceRoot":"","sources":["../../../../src/families/semantic-thinness/private/pattern-data-b.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,MAAM,6CAA6C,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACxG,OAAO,kBAAkB,MAAM,sCAAsC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC5F,OAAO,kBAAkB,MAAM,sCAAsC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC5F,OAAO,8BAA8B,MAAM,oDAAoD,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACtH,OAAO,qBAAqB,MAAM,0CAA0C,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACnG,OAAO,oBAAoB,MAAM,yCAAyC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAGjG,MAAM,CAAC,MAAM,2BAA2B,GAAuC;IAC7E,uBAAuB;IACvB,kBAAkB;IAClB,kBAAkB;IAClB,8BAA8B;IAC9B,qBAAqB;IACrB,oBAAoB;CACrB,CAAC"}
@@ -0,0 +1,9 @@
1
+ import bodyEmotionShorthand from "../patterns/body-emotion-shorthand.json" with { type: "json" };
2
+ import emptyAtmosphereShift from "../patterns/empty-atmosphere-shift.json" with { type: "json" };
3
+ import gazeChoreography from "../patterns/gaze-choreography.json" with { type: "json" };
4
+ export const semanticThinnessPatternSetC = [
5
+ bodyEmotionShorthand,
6
+ emptyAtmosphereShift,
7
+ gazeChoreography
8
+ ];
9
+ //# sourceMappingURL=pattern-data-c.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pattern-data-c.js","sourceRoot":"","sources":["../../../../src/families/semantic-thinness/private/pattern-data-c.ts"],"names":[],"mappings":"AAAA,OAAO,oBAAoB,MAAM,yCAAyC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACjG,OAAO,oBAAoB,MAAM,yCAAyC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACjG,OAAO,gBAAgB,MAAM,oCAAoC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAGxF,MAAM,CAAC,MAAM,2BAA2B,GAAuC;IAC7E,oBAAoB;IACpB,oBAAoB;IACpB,gBAAgB;CACjB,CAAC"}
@@ -0,0 +1,17 @@
1
+ import bodyKnows from "../patterns/body-knows.json" with { type: "json" };
2
+ import deicticSummary from "../patterns/deictic-summary.json" with { type: "json" };
3
+ import pointIsFrame from "../patterns/point-is-frame.json" with { type: "json" };
4
+ import realWorkBegins from "../patterns/real-work-begins.json" with { type: "json" };
5
+ import silenceAsActor from "../patterns/silence-as-actor.json" with { type: "json" };
6
+ import somethingShifted from "../patterns/something-shifted.json" with { type: "json" };
7
+ import truthAnswerMoves from "../patterns/truth-answer-moves.json" with { type: "json" };
8
+ export const semanticThinnessPatternSetD = [
9
+ bodyKnows,
10
+ deicticSummary,
11
+ pointIsFrame,
12
+ realWorkBegins,
13
+ silenceAsActor,
14
+ somethingShifted,
15
+ truthAnswerMoves
16
+ ];
17
+ //# sourceMappingURL=pattern-data-d.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pattern-data-d.js","sourceRoot":"","sources":["../../../../src/families/semantic-thinness/private/pattern-data-d.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,6BAA6B,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAC1E,OAAO,cAAc,MAAM,kCAAkC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACpF,OAAO,YAAY,MAAM,iCAAiC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACjF,OAAO,cAAc,MAAM,mCAAmC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACrF,OAAO,cAAc,MAAM,mCAAmC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACrF,OAAO,gBAAgB,MAAM,oCAAoC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACxF,OAAO,gBAAgB,MAAM,qCAAqC,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AAGzF,MAAM,CAAC,MAAM,2BAA2B,GAAuC;IAC7E,SAAS;IACT,cAAc;IACd,YAAY;IACZ,cAAc;IACd,cAAc;IACd,gBAAgB;IAChB,gBAAgB;CACjB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { semanticThinnessPatternSetA } from "./pattern-data-a.js";
2
+ import { semanticThinnessPatternSetB } from "./pattern-data-b.js";
3
+ import { semanticThinnessPatternSetC } from "./pattern-data-c.js";
4
+ import { semanticThinnessPatternSetD } from "./pattern-data-d.js";
5
+ export const semanticThinnessPatterns = [
6
+ ...semanticThinnessPatternSetA,
7
+ ...semanticThinnessPatternSetB,
8
+ ...semanticThinnessPatternSetC,
9
+ ...semanticThinnessPatternSetD
10
+ ];
11
+ //# sourceMappingURL=pattern-data.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pattern-data.js","sourceRoot":"","sources":["../../../../src/families/semantic-thinness/private/pattern-data.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAClE,OAAO,EAAE,2BAA2B,EAAE,MAAM,qBAAqB,CAAC;AAElE,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,GAAG,2BAA2B;IAC9B,GAAG,2BAA2B;IAC9B,GAAG,2BAA2B;IAC9B,GAAG,2BAA2B;CAC/B,CAAC"}