kibi-cli 2.13.0 → 2.15.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 (114) hide show
  1. package/dist/engine.d.ts.map +1 -1
  2. package/dist/engine.js +5 -2
  3. package/dist/intent-search.d.ts.map +1 -1
  4. package/dist/intent-search.js +16 -4
  5. package/dist/operations/bootstrap/candidate-helpers.d.ts +5 -0
  6. package/dist/operations/bootstrap/candidate-helpers.d.ts.map +1 -1
  7. package/dist/operations/bootstrap/candidate-helpers.js +8 -0
  8. package/dist/operations/bootstrap/candidates.d.ts +12 -1
  9. package/dist/operations/bootstrap/candidates.d.ts.map +1 -1
  10. package/dist/operations/bootstrap/candidates.js +41 -7
  11. package/dist/operations/bootstrap/discovery-evidence.d.ts.map +1 -1
  12. package/dist/operations/bootstrap/discovery-evidence.js +8 -0
  13. package/dist/operations/bootstrap/discovery.d.ts.map +1 -1
  14. package/dist/operations/bootstrap/discovery.js +6 -1
  15. package/dist/operations/bootstrap/generate.d.ts.map +1 -1
  16. package/dist/operations/bootstrap/generate.js +18 -5
  17. package/dist/operations/bootstrap/guidance-actions.d.ts +2 -1
  18. package/dist/operations/bootstrap/guidance-actions.d.ts.map +1 -1
  19. package/dist/operations/bootstrap/guidance-actions.js +10 -1
  20. package/dist/operations/bootstrap/guidance.d.ts +2 -0
  21. package/dist/operations/bootstrap/guidance.d.ts.map +1 -1
  22. package/dist/operations/bootstrap/guidance.js +1 -1
  23. package/dist/operations/bootstrap/plugin-offers.d.ts +16 -0
  24. package/dist/operations/bootstrap/plugin-offers.d.ts.map +1 -0
  25. package/dist/operations/bootstrap/plugin-offers.js +66 -0
  26. package/dist/operations/bootstrap/presentation.d.ts +2 -0
  27. package/dist/operations/bootstrap/presentation.d.ts.map +1 -1
  28. package/dist/operations/bootstrap/presentation.js +19 -5
  29. package/dist/operations/bootstrap/types.d.ts +8 -0
  30. package/dist/operations/bootstrap/types.d.ts.map +1 -1
  31. package/dist/operations/modeling/predicate-applicability.d.ts.map +1 -1
  32. package/dist/operations/modeling/predicate-applicability.js +27 -1
  33. package/dist/operations/modeling/predicate-applyplan.d.ts.map +1 -1
  34. package/dist/operations/modeling/predicate-applyplan.js +9 -5
  35. package/dist/operations/modeling/predicate-binding-hints.d.ts +10 -0
  36. package/dist/operations/modeling/predicate-binding-hints.d.ts.map +1 -1
  37. package/dist/operations/modeling/predicate-binding-hints.js +112 -16
  38. package/dist/operations/modeling/predicate-bindings.d.ts +16 -0
  39. package/dist/operations/modeling/predicate-bindings.d.ts.map +1 -1
  40. package/dist/operations/modeling/predicate-bindings.js +40 -1
  41. package/dist/operations/modeling/predicate-catalog-5.d.ts +2 -2
  42. package/dist/operations/modeling/predicate-catalog-5.js +2 -2
  43. package/dist/operations/modeling/predicate-catalog-6.d.ts +9 -0
  44. package/dist/operations/modeling/predicate-catalog-6.d.ts.map +1 -0
  45. package/dist/operations/modeling/predicate-catalog-6.js +106 -0
  46. package/dist/operations/modeling/predicate-catalog.d.ts.map +1 -1
  47. package/dist/operations/modeling/predicate-catalog.js +2 -0
  48. package/dist/operations/modeling/predicate-usage-hints-4.d.ts.map +1 -1
  49. package/dist/operations/modeling/predicate-usage-hints-4.js +32 -0
  50. package/dist/operations/modeling/suggest-predicates.d.ts.map +1 -1
  51. package/dist/operations/modeling/suggest-predicates.js +48 -17
  52. package/dist/operations/mutation/contradictions.d.ts +8 -0
  53. package/dist/operations/mutation/contradictions.d.ts.map +1 -1
  54. package/dist/operations/mutation/contradictions.js +13 -0
  55. package/dist/operations/mutation/source-authoring.d.ts +13 -0
  56. package/dist/operations/mutation/source-authoring.d.ts.map +1 -1
  57. package/dist/operations/mutation/source-authoring.js +70 -2
  58. package/dist/operations/mutation/upsert.d.ts.map +1 -1
  59. package/dist/operations/mutation/upsert.js +9 -3
  60. package/dist/operations/mutation/validate-upsert.d.ts.map +1 -1
  61. package/dist/operations/mutation/validate-upsert.js +30 -4
  62. package/dist/operations/semantic-advisor/ingestion-boundary.d.ts.map +1 -1
  63. package/dist/operations/semantic-advisor/ingestion-boundary.js +20 -1
  64. package/dist/plugins/approved-source-analyzers.generated.d.ts +5 -5
  65. package/dist/plugins/approved-source-analyzers.generated.js +5 -5
  66. package/dist/plugins/check-policies.d.ts +24 -0
  67. package/dist/plugins/check-policies.d.ts.map +1 -0
  68. package/dist/plugins/check-policies.js +73 -0
  69. package/dist/plugins/registry.d.ts.map +1 -1
  70. package/dist/plugins/registry.js +10 -1
  71. package/dist/prolog.d.ts.map +1 -1
  72. package/dist/prolog.js +8 -1
  73. package/dist/provenance-stub.d.ts +15 -0
  74. package/dist/provenance-stub.d.ts.map +1 -0
  75. package/dist/provenance-stub.js +30 -0
  76. package/dist/public/operations/catalog.d.ts +1 -1
  77. package/dist/public/operations/check-executor.d.ts.map +1 -1
  78. package/dist/public/operations/check-executor.js +3 -0
  79. package/dist/public/operations/check-policy-rules.d.ts +49 -0
  80. package/dist/public/operations/check-policy-rules.d.ts.map +1 -0
  81. package/dist/public/operations/check-policy-rules.js +305 -0
  82. package/dist/public/operations/contracts.d.ts.map +1 -1
  83. package/dist/public/operations/contracts.js +5 -0
  84. package/dist/public/operations/source-relationship-parity.d.ts.map +1 -1
  85. package/dist/public/operations/source-relationship-parity.js +16 -1
  86. package/dist/public/operations/specs/check-rules.generated.d.ts +1 -1
  87. package/dist/public/operations/specs/check-rules.generated.d.ts.map +1 -1
  88. package/dist/public/operations/specs/check-rules.generated.js +3 -1
  89. package/dist/public/operations/specs/check.d.ts +1 -1
  90. package/dist/public/operations/specs/reporting.d.ts +9 -0
  91. package/dist/public/operations/specs/reporting.d.ts.map +1 -1
  92. package/dist/public/operations/specs/reporting.js +6 -2
  93. package/dist/public/skills/kibi-bootstrap/SKILL.md +3 -3
  94. package/dist/public/skills/kibi-usage/SKILL.md +81 -5
  95. package/dist/public/skills/kibi-usage/resources/ui-requirements.md +42 -3
  96. package/dist/report/html-report.d.ts.map +1 -1
  97. package/dist/report/html-report.js +13 -2
  98. package/dist/search-answer.d.ts.map +1 -1
  99. package/dist/search-answer.js +7 -0
  100. package/dist/search-ranking.d.ts.map +1 -1
  101. package/dist/search-ranking.js +9 -1
  102. package/dist/utils/rule-registry.generated.d.ts +10 -0
  103. package/dist/utils/rule-registry.generated.d.ts.map +1 -1
  104. package/dist/utils/rule-registry.generated.js +12 -0
  105. package/package.json +4 -4
  106. package/src/public/operations/check-executor.ts +7 -0
  107. package/src/public/operations/check-policy-rules.ts +462 -0
  108. package/src/public/operations/contracts.ts +6 -0
  109. package/src/public/operations/source-relationship-parity.ts +17 -2
  110. package/src/public/operations/specs/check-rules.generated.ts +3 -1
  111. package/src/public/operations/specs/reporting.ts +13 -2
  112. package/src/public/skills/kibi-bootstrap/SKILL.md +3 -3
  113. package/src/public/skills/kibi-usage/SKILL.md +81 -5
  114. package/src/public/skills/kibi-usage/resources/ui-requirements.md +42 -3
@@ -1,3 +1,4 @@
1
+ import { isProvenanceStubCandidate } from "./candidates.js";
1
2
  import { buildGuidance } from "./guidance.js";
2
3
  import { INTENT_CLAIM_KINDS, KNOWLEDGE_SOURCE_AUTHORITIES, KNOWLEDGE_SOURCE_KINDS, bootstrapPlanHash, } from "./types.js";
3
4
  function strings(values) {
@@ -153,7 +154,7 @@ function claimAccounting(declared, candidates, suppressed) {
153
154
  return [{ source, declared: count, planned, existing, filtered }];
154
155
  });
155
156
  }
156
- // implements REQ-KIBI-BOOTSTRAP-PLAN, REQ-bootstrap-discovered-candidate-budget
157
+ // implements REQ-KIBI-BOOTSTRAP-PLAN, REQ-bootstrap-discovered-candidate-budget, REQ-bootstrap-provenance-stubs
157
158
  export function presentBootstrap(input) {
158
159
  const declaredContext = normalizeBootstrapContext(input.bootstrapContext);
159
160
  const guidance = buildGuidance({
@@ -163,6 +164,7 @@ export function presentBootstrap(input) {
163
164
  candidates: input.candidates,
164
165
  signals: input.sourceOnlySignals,
165
166
  warnings: input.discoverySummary.scanWarnings,
167
+ offers: input.pluginOffers ?? [],
166
168
  });
167
169
  const confidenceLevel = String(guidance.confidence.level);
168
170
  const bindingDiagnostics = strings(input.bindingDiagnostics);
@@ -183,9 +185,20 @@ export function presentBootstrap(input) {
183
185
  const suppressionSummary = suppressedTotal > 0
184
186
  ? ` Suppressed ${suppressedTotal} candidate(s) by reason: ${suppression.map((row) => `${row.reason} ${row.count}`).join(", ")}.`
185
187
  : "";
186
- const limitSummary = suppression.some((row) => row.reason === "over_limit")
187
- ? " Discovered candidates over maxCandidates are over_limit; raise the limit or narrow entityTypes. Declared intent claims do not count against it."
188
+ // Stubs are counted apart from candidates with a claim so nobody raises
189
+ // maxCandidates to admit entries that state nothing.
190
+ const provenanceStubs = input.candidates.filter(isProvenanceStubCandidate);
191
+ const overLimitRows = input.suppressedCandidates.filter((row) => row.reason === "over_limit");
192
+ const overLimitStubs = overLimitRows.filter((row) => row.provenanceStub === true).length;
193
+ const limitSummary = overLimitRows.length > 0
194
+ ? ` Discovered candidates over maxCandidates are over_limit (${overLimitStubs} of ${overLimitRows.length} are provenance stubs that state no claim); raise the limit only for the ${overLimitRows.length - overLimitStubs} with a claim, or narrow entityTypes. Declared intent claims do not count against it.`
188
195
  : "";
196
+ const discoverySummary = {
197
+ ...input.discoverySummary,
198
+ candidatesWithClaims: input.candidates.length - provenanceStubs.length,
199
+ provenanceStubs: provenanceStubs.length,
200
+ suppressedProvenanceStubs: overLimitStubs,
201
+ };
189
202
  const tldr = (confidenceLevel === "low" && !input.activation.applyBlocked
190
203
  ? `Low-confidence bootstrap (${String(guidance.confidence.score)}): review diagnostics before proceeding. ${baseTldr}`
191
204
  : baseTldr) +
@@ -279,7 +292,7 @@ export function presentBootstrap(input) {
279
292
  declaredContext,
280
293
  contextQuestions: contextQuestions.slice(0, 4),
281
294
  confidence: guidance.confidence,
282
- discoverySummary: input.discoverySummary,
295
+ discoverySummary,
283
296
  candidates: input.candidates,
284
297
  actions,
285
298
  sourceWrites: [],
@@ -311,8 +324,9 @@ export function presentBootstrap(input) {
311
324
  tldr,
312
325
  promptBlock: guidance.promptBlock,
313
326
  recommendedActions: guidance.actions,
327
+ pluginOffers: input.pluginOffers ?? [],
314
328
  declaredContext,
315
- discoverySummary: input.discoverySummary,
329
+ discoverySummary,
316
330
  candidates: input.candidates,
317
331
  actions,
318
332
  sourceWrites: [],
@@ -1,4 +1,5 @@
1
1
  import type { OperationResult } from "../../public/operations/types.js";
2
+ import type { PluginOffer } from "./plugin-offers.js";
2
3
  export declare function bootstrapPlanHash(plan: Readonly<Record<string, unknown>>): string;
3
4
  /** Bind a freshly initialized, not-yet-synced branch to its exact source state. */
4
5
  export declare function bootstrapEmptyKbSnapshotId(input: {
@@ -130,9 +131,16 @@ export type DiscoverySummary = {
130
131
  readonly excludedRoots: readonly string[];
131
132
  readonly truncated: boolean;
132
133
  readonly scanWarnings: readonly string[];
134
+ /** Planned discovered or declared candidates that state a claim. */
135
+ readonly candidatesWithClaims?: number;
136
+ /** Planned provider facts that only record provenance (no claim). */
137
+ readonly provenanceStubs?: number;
138
+ /** Provenance stubs suppressed as over_limit; no reason to raise the cap. */
139
+ readonly suppressedProvenanceStubs?: number;
133
140
  };
134
141
  export type DiscoveryResult = {
135
142
  readonly activation: ActivationPolicy;
143
+ readonly pluginOffers: readonly PluginOffer[];
136
144
  readonly evidence: readonly BootstrapEvidence[];
137
145
  readonly ignoredSources: readonly string[];
138
146
  readonly summary: DiscoverySummary;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/operations/bootstrap/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/operations/bootstrap/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"predicate-applicability.d.ts","sourceRoot":"","sources":["../../../src/operations/modeling/predicate-applicability.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,qBAAqB,EAE3B,MAAM,uBAAuB,CAAC;AAG/B,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAC5C,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAC9C,eAAO,MAAM,qBAAqB,OAAO,CAAC;AA2U1C,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,qBAAqB,EAC7B,IAAI,EAAE,MAAM,GACX,qBAAqB,CA2EvB"}
1
+ {"version":3,"file":"predicate-applicability.d.ts","sourceRoot":"","sources":["../../../src/operations/modeling/predicate-applicability.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,qBAAqB,EAE3B,MAAM,uBAAuB,CAAC;AAG/B,eAAO,MAAM,uBAAuB,OAAO,CAAC;AAC5C,eAAO,MAAM,0BAA0B,MAAM,CAAC;AAC9C,eAAO,MAAM,qBAAqB,OAAO,CAAC;AAqW1C,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,kBAAkB,EAAE,MAAM,CAAC;CACrC;AAED;;;;GAIG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,qBAAqB,EAC7B,IAAI,EAAE,MAAM,GACX,qBAAqB,CA2EvB"}
@@ -163,7 +163,11 @@ const INTENT_RULES = {
163
163
  [/use|avoid/i],
164
164
  [/api|apis|code|framework|hook|pattern|signal|schema|type|computed/i],
165
165
  ],
166
- prohibited: [/user|admin|access|permission|mfa|customer/i],
166
+ // On-screen views and visual patterns are UI design claims (ui_pattern,
167
+ // same_pattern), not developer coding standards.
168
+ prohibited: [
169
+ /user|admin|access|permission|mfa|customer|\bviews?\b|screens?|timeline/i,
170
+ ],
167
171
  },
168
172
  release_gate_rule: {
169
173
  allOf: [
@@ -263,6 +267,28 @@ const INTENT_RULES = {
263
267
  ],
264
268
  prohibited: [/deletion|soft\s+delete/i],
265
269
  },
270
+ ui_pattern: {
271
+ allOf: [
272
+ [/pattern|timeline|card|list|grid|carousel|table|layout|design/i],
273
+ [/use|show|present|render|display|design/i],
274
+ ],
275
+ prohibited: [/aligned\s+with|colou?r|hex|font/i],
276
+ },
277
+ same_pattern: {
278
+ allOf: [
279
+ [/same|consistent|match|identical|one\s+\w+\s+for/i],
280
+ [/both|each|every|variant|role|view|presentation/i],
281
+ ],
282
+ },
283
+ pattern_marker: {
284
+ allOf: [[/marker|marked|class|test\s*id|data-testid|selector/i]],
285
+ },
286
+ ui_container: {
287
+ allOf: [
288
+ [/container|panel|sheet|pane|region/i],
289
+ [/scroll|overflow|half[- ]page|full[- ]height|clip/i],
290
+ ],
291
+ },
266
292
  };
267
293
  function round(value) {
268
294
  return Math.round(Math.max(0, Math.min(0.98, value)) * 100) / 100;
@@ -1 +1 @@
1
- {"version":3,"file":"predicate-applyplan.d.ts","sourceRoot":"","sources":["../../../src/operations/modeling/predicate-applyplan.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAEV,wBAAwB,EACxB,wBAAwB,EACxB,mBAAmB,EACnB,0BAA0B,EAC1B,qBAAqB,EACtB,MAAM,sBAAsB,CAAC;AAQ9B,wBAAgB,eAAe,CAC7B,MAAM,EAAE,wBAAwB,EAChC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,gBAAgB,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM,EACvD,YAAY,CAAC,EAAE,QAAQ,GAAG,MAAM,EAChC,WAAW,CAAC,EAAE;IACZ,WAAW,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IACtC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,wBAAwB,CAAC;IAC3C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC,GACA,mBAAmB,CA4JrB;AAGD,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,mBAAmB,EAC/B,IAAI,EAAE,qBAAqB,GAC1B,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA0ChC;AAGD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,SAAS,CAAC,EAAE,MAAM,EAClB,mBAAmB,GAAE,SAAS,MAAM,EAAO,GAC1C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAuBhC;AAoBD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,qBAAqB,GAC1B,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAwBhC;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,0BAA0B,CAoE5B"}
1
+ {"version":3,"file":"predicate-applyplan.d.ts","sourceRoot":"","sources":["../../../src/operations/modeling/predicate-applyplan.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAEV,wBAAwB,EACxB,wBAAwB,EACxB,mBAAmB,EACnB,0BAA0B,EAC1B,qBAAqB,EACtB,MAAM,sBAAsB,CAAC;AAQ9B,wBAAgB,eAAe,CAC7B,MAAM,EAAE,wBAAwB,EAChC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,gBAAgB,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAM,EACvD,YAAY,CAAC,EAAE,QAAQ,GAAG,MAAM,EAChC,WAAW,CAAC,EAAE;IACZ,WAAW,CAAC,EAAE,UAAU,GAAG,UAAU,CAAC;IACtC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,eAAe,CAAC,EAAE,wBAAwB,CAAC;IAC3C,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACzC,GACA,mBAAmB,CAgKrB;AAGD,wBAAgB,uBAAuB,CACrC,UAAU,EAAE,mBAAmB,EAC/B,IAAI,EAAE,qBAAqB,GAC1B,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA0ChC;AAGD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,SAAS,CAAC,EAAE,MAAM,EAClB,mBAAmB,GAAE,SAAS,MAAM,EAAO,GAC1C,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAuBhC;AAoBD;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,qBAAqB,GAC1B,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAwBhC;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,GACd,0BAA0B,CAoE5B"}
@@ -1,11 +1,11 @@
1
1
  import { semanticClaimKey } from "../semantic-advisor/clauses.js";
2
2
  import { exactLauncherPredicateArgs } from "../semantic-advisor/predicate-rules-launcher.js";
3
- import { aggregateBindingProvenance, bindingCanBeApplied, classifyBinding, isGenericPlaceholder, } from "./predicate-bindings.js";
3
+ import { aggregateBindingProvenance, bindingCanBeApplied, classifyBinding, isGenericPlaceholder, isParticipantArgumentType, } from "./predicate-bindings.js";
4
4
  import { inferArgs } from "./predicate-inference.js";
5
5
  import { schemaForCandidate } from "./predicate-loader.js";
6
6
  import { hashId } from "./predicate-utils.js";
7
7
  import { applyArgumentRewrites, predicateArgumentConformance, } from "./predicate-vocabulary.js";
8
- // implements REQ-mcp-suggest-predicates, REQ-model-predicates-requirement-subject-v2, REQ-model-predicates-binding-clauses
8
+ // implements REQ-mcp-suggest-predicates, REQ-model-predicates-requirement-subject-v2, REQ-model-predicates-binding-clauses, REQ-model-predicates-participant-not-subject
9
9
  export function buildSuggestion(schema, text, subject, score, argumentBindings = {}, polarityHint, diagnostics) {
10
10
  const inferredArgs = inferArgs(schema, text, subject);
11
11
  const canonicalLauncherArgs = exactLauncherPredicateArgs(schema.predicate_name, text);
@@ -43,13 +43,17 @@ export function buildSuggestion(schema, text, subject, score, argumentBindings =
43
43
  const undeclaredArguments = new Set(conformance.undeclared.map((value) => value.argumentName));
44
44
  // A schema without a `subject` argument may still lead with the hinted
45
45
  // subject (inference put it there): that value is the agent's reviewed
46
- // value, even when the schema names its first argument after it.
46
+ // value, even when the schema names its first argument after it. A
47
+ // participant argument (actor, role, owner) is the exception: the subject
48
+ // is what the claim is about, never who acts on it.
47
49
  const hintedFirstArgument = explicitSubject &&
48
50
  subjectArgument < 0 &&
49
51
  !hasExactBinding(schema.argument_names[0] ?? "") &&
50
- predicateArgs[0] === subject
52
+ predicateArgs[0] === subject &&
53
+ !isParticipantArgumentType(schema.argument_types[0])
51
54
  ? 0
52
55
  : -1;
56
+ const constrainedSubjects = diagnostics?.constrainedSubjects ?? [];
53
57
  const bindingProvenanceByArgument = Object.fromEntries(schema.argument_names.map((name, index) => [
54
58
  name,
55
59
  index === reviewedSubjectArgument && !undeclaredArguments.has(name)
@@ -67,12 +71,12 @@ export function buildSuggestion(schema, text, subject, score, argumentBindings =
67
71
  argumentNames: schema.argument_names,
68
72
  argumentType: schema.argument_types[index],
69
73
  constants: schema.argument_constants?.[name],
74
+ constrainedSubjects,
70
75
  }),
71
76
  ]));
72
77
  // The subject the planned predicate fact is about, when the requirement
73
78
  // constrains subjects: the `subject` argument's value, or for a schema
74
79
  // without one the reviewed subject, recorded as the fact's subject_key.
75
- const constrainedSubjects = diagnostics?.constrainedSubjects ?? [];
76
80
  const subjectKey = constrainedSubjects.length === 0
77
81
  ? null
78
82
  : subjectArgument >= 0
@@ -6,6 +6,16 @@ import type { BindingHint, PredicateSuggestion } from "./predicate-types.js";
6
6
  * instead of guessing.
7
7
  */
8
8
  export declare function buildBindingHints(candidate: PredicateSuggestion, text: string, requirementSubjects?: readonly string[]): BindingHint[];
9
+ /**
10
+ * The unbound participant arguments (`actor`, `actor_scope`, `role`,
11
+ * `owner`) of a candidate that the claim names no participant for: the
12
+ * current value is empty or a placeholder, the requirement's subject key, or
13
+ * a clause of the claim that opens with a gerund (an activity, not a
14
+ * participant), and none of the argument's declared constants or schema
15
+ * example values occurs in the claim text. The agent cannot bind such an
16
+ * argument from the claim, so the schema does not fit the claim.
17
+ */
18
+ export declare function unnamedParticipantArguments(candidate: PredicateSuggestion, text: string, requirementSubjects?: readonly string[]): string[];
9
19
  /** One line per hint for the text summary: `name (type, e.g. a, b)`. */
10
20
  export declare function describeBindingHints(hints: readonly BindingHint[]): string;
11
21
  //# sourceMappingURL=predicate-binding-hints.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"predicate-binding-hints.d.ts","sourceRoot":"","sources":["../../../src/operations/modeling/predicate-binding-hints.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AA0D7E;;;;;GAKG;AAEH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,mBAAmB,EAC9B,IAAI,EAAE,MAAM,EACZ,mBAAmB,GAAE,SAAS,MAAM,EAAO,GAC1C,WAAW,EAAE,CA6Df;AAED,wEAAwE;AACxE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,GAAG,MAAM,CAW1E"}
1
+ {"version":3,"file":"predicate-binding-hints.d.ts","sourceRoot":"","sources":["../../../src/operations/modeling/predicate-binding-hints.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,WAAW,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAoF7E;;;;;GAKG;AAEH,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE,mBAAmB,EAC9B,IAAI,EAAE,MAAM,EACZ,mBAAmB,GAAE,SAAS,MAAM,EAAO,GAC1C,WAAW,EAAE,CA6Df;AAqCD;;;;;;;;GAQG;AAEH,wBAAgB,2BAA2B,CACzC,SAAS,EAAE,mBAAmB,EAC9B,IAAI,EAAE,MAAM,EACZ,mBAAmB,GAAE,SAAS,MAAM,EAAO,GAC1C,MAAM,EAAE,CA8BV;AAED,wEAAwE;AACxE,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,GAAG,MAAM,CAW1E"}
@@ -1,4 +1,5 @@
1
- import { bindingCanBeApplied, clauseBindingReason, isGenericPlaceholder, nameOrStopWordReason, } from "./predicate-bindings.js";
1
+ import { bindingCanBeApplied, clauseBindingReason, isGenericPlaceholder, isParticipantArgumentType, nameOrStopWordReason, subjectKeyParticipantReason, } from "./predicate-bindings.js";
2
+ import { escapeRegExp } from "./predicate-utils.js";
2
3
  const MAX_EXAMPLES = 5;
3
4
  /** Split `name(a, b(c), d)` into its top-level arguments, or [] when it is not a call. */
4
5
  function exampleArguments(example) {
@@ -25,9 +26,21 @@ function exampleArguments(example) {
25
26
  args.push(current.trim());
26
27
  return args.filter(Boolean);
27
28
  }
28
- function unboundReason(candidate, name, value, text) {
29
+ /**
30
+ * What to do when the claim names no participant for an actor-like argument:
31
+ * the requirement's subject key is not a participant, and a schema whose
32
+ * actor the claim never names does not fit the claim.
33
+ */
34
+ // implements REQ-model-predicates-participant-not-subject
35
+ function noParticipantGuidance(type) {
36
+ return `The claim names no ${type}. Bind the participant the claim names (a noun of at most 3 words), never the requirement's subject key; if the claim names no ${type}, this schema does not fit the claim: record_ontology_gap instead.`;
37
+ }
38
+ // implements REQ-model-predicates-participant-not-subject
39
+ function unboundReason(candidate, name, value, text, requirementSubjects) {
29
40
  const schema = candidate.schema;
30
41
  const provenance = candidate.binding_provenance_by_argument[name];
42
+ const type = schema.argument_types[schema.argument_names.indexOf(name)];
43
+ const participant = isParticipantArgumentType(type);
31
44
  const nameReason = nameOrStopWordReason(value, {
32
45
  argumentName: name,
33
46
  argumentNames: schema.argument_names,
@@ -36,14 +49,25 @@ function unboundReason(candidate, name, value, text) {
36
49
  });
37
50
  if (nameReason !== null)
38
51
  return `The value "${value}" is not a binding: ${nameReason}.`;
52
+ const subjectReason = subjectKeyParticipantReason(value, {
53
+ argumentType: type,
54
+ constants: schema.argument_constants?.[name],
55
+ constrainedSubjects: requirementSubjects,
56
+ });
57
+ if (subjectReason !== null)
58
+ return `The value "${value}" is not a binding: ${subjectReason}. ${noParticipantGuidance(String(type))}`;
39
59
  const clauseReason = clauseBindingReason(value, {
40
- argumentType: schema.argument_types[schema.argument_names.indexOf(name)],
60
+ argumentType: type,
41
61
  constants: schema.argument_constants?.[name],
42
62
  });
43
63
  if (clauseReason !== null)
44
- return `The value "${value}" is not a binding: ${clauseReason}. Bind a noun of at most 3 words, or the requirement's subject key.`;
64
+ return participant
65
+ ? `The value "${value}" is not a binding: ${clauseReason}. Bind a noun of at most 3 words. ${noParticipantGuidance(String(type))}`
66
+ : `The value "${value}" is not a binding: ${clauseReason}. Bind a noun of at most 3 words, or the requirement's subject key.`;
45
67
  if (!value.trim() || isGenericPlaceholder(value))
46
- return "The claim text names no value for this argument.";
68
+ return participant
69
+ ? noParticipantGuidance(String(type))
70
+ : "The claim text names no value for this argument.";
47
71
  if (provenance === "inferred")
48
72
  return `The value "${value}" was inferred and does not appear in the claim text; confirm it or pass the exact value.`;
49
73
  if (schema.argument_constants?.[name])
@@ -56,7 +80,7 @@ function unboundReason(candidate, name, value, text) {
56
80
  * current value was not accepted, so the agent binds from the claim text
57
81
  * instead of guessing.
58
82
  */
59
- // implements REQ-model-predicates-binding-placeholders, REQ-model-predicates-requirement-subject-v2, REQ-model-predicates-binding-clauses
83
+ // implements REQ-model-predicates-binding-placeholders, REQ-model-predicates-requirement-subject-v2, REQ-model-predicates-binding-clauses, REQ-model-predicates-participant-not-subject
60
84
  export function buildBindingHints(candidate, text, requirementSubjects = []) {
61
85
  const schema = candidate.schema;
62
86
  const parsedExamples = schema.examples.map(exampleArguments);
@@ -80,16 +104,15 @@ export function buildBindingHints(candidate, text, requirementSubjects = []) {
80
104
  const exampleValues = parsedExamples
81
105
  .map((args) => args[position])
82
106
  .filter((value) => typeof value === "string");
83
- // The subject keys the requirement already constrains come first, so
84
- // the predicate and the subject fact use one identifier for the subject.
107
+ // The subject keys the requirement already constrains come first for
108
+ // the subject argument, and for an entity argument of a schema without
109
+ // one, so the predicate and the subject fact use one identifier for the
110
+ // subject. A participant argument (actor, role, owner) never gets them:
111
+ // the subject is what the claim is about, not who acts on it.
112
+ const offersSubjects = name === "subject" ||
113
+ (!namesSubject && schema.argument_types[position] === "entity");
85
114
  const examples = Array.from(new Set([
86
- ...(name === "subject" ||
87
- (!namesSubject &&
88
- clauseBindingReason(candidate.predicate_args[position] ?? "", {
89
- argumentType: schema.argument_types[position],
90
- }) !== null)
91
- ? requirementSubjects
92
- : []),
115
+ ...(offersSubjects ? requirementSubjects : []),
93
116
  ...(constants ?? []),
94
117
  ...exampleValues,
95
118
  ])).slice(0, MAX_EXAMPLES);
@@ -108,10 +131,83 @@ export function buildBindingHints(candidate, text, requirementSubjects = []) {
108
131
  candidate.subject_pairing === "unpaired" &&
109
132
  bindingCanBeApplied(candidate.binding_provenance_by_argument[name] ?? "placeholder")
110
133
  ? `The value "${current}" is not a subject the requirement constrains (${requirementSubjects.join(", ")}), so kb_check would not pair the predicate with the subject fact. Bind one of them.`
111
- : unboundReason(candidate, name, current, text),
134
+ : unboundReason(candidate, name, current, text, requirementSubjects),
112
135
  };
113
136
  });
114
137
  }
138
+ /**
139
+ * Whether the claim text names `value`: its words in order, any separator,
140
+ * with a plural ending allowed on the last word (`guest` names `guests`).
141
+ */
142
+ // implements REQ-model-predicates-participant-not-subject
143
+ function claimNamesValue(text, value) {
144
+ const words = value
145
+ .toLowerCase()
146
+ .split(/[\s_.-]+/)
147
+ .filter(Boolean);
148
+ if (words.length === 0)
149
+ return false;
150
+ // Lookarounds instead of \b: a value may start or end with a symbol
151
+ // (`svc(ci)`, `c++`), where a word boundary never matches.
152
+ return new RegExp(`(?<!\\w)${words.map(escapeRegExp).join("[\\s_-]+")}(?:e?s)?(?!\\w)`, "i").test(text);
153
+ }
154
+ /**
155
+ * Whether a clause lifted from the claim describes an action rather than a
156
+ * participant: it opens with a gerund ("Discarding a draft while …"). A
157
+ * clause that opens with a noun ("Administrators who were granted …") may
158
+ * still name the participant in its first words, so it is left to the agent.
159
+ */
160
+ // implements REQ-model-predicates-participant-not-subject
161
+ function clauseIsActivity(clause) {
162
+ const head = clause
163
+ .toLowerCase()
164
+ .split(/[\s_-]+/)
165
+ .find(Boolean) ?? "";
166
+ return head.length > 4 && head.endsWith("ing");
167
+ }
168
+ /**
169
+ * The unbound participant arguments (`actor`, `actor_scope`, `role`,
170
+ * `owner`) of a candidate that the claim names no participant for: the
171
+ * current value is empty or a placeholder, the requirement's subject key, or
172
+ * a clause of the claim that opens with a gerund (an activity, not a
173
+ * participant), and none of the argument's declared constants or schema
174
+ * example values occurs in the claim text. The agent cannot bind such an
175
+ * argument from the claim, so the schema does not fit the claim.
176
+ */
177
+ // implements REQ-model-predicates-participant-not-subject
178
+ export function unnamedParticipantArguments(candidate, text, requirementSubjects = []) {
179
+ const schema = candidate.schema;
180
+ const parsedExamples = schema.examples.map(exampleArguments);
181
+ return candidate.unbound_arguments.filter((name) => {
182
+ const position = schema.argument_names.indexOf(name);
183
+ if (position < 0)
184
+ return false;
185
+ const type = schema.argument_types[position];
186
+ if (!isParticipantArgumentType(type))
187
+ return false;
188
+ const constants = schema.argument_constants?.[name];
189
+ const current = candidate.predicate_args[position] ?? "";
190
+ const unnamed = !current.trim() ||
191
+ isGenericPlaceholder(current) ||
192
+ subjectKeyParticipantReason(current, {
193
+ argumentType: type,
194
+ constants,
195
+ constrainedSubjects: requirementSubjects,
196
+ }) !== null ||
197
+ (clauseBindingReason(current, { argumentType: type, constants }) !==
198
+ null &&
199
+ clauseIsActivity(current));
200
+ if (!unnamed)
201
+ return false;
202
+ const known = [
203
+ ...(constants ?? []),
204
+ ...parsedExamples
205
+ .map((args) => args[position])
206
+ .filter((value) => typeof value === "string"),
207
+ ];
208
+ return !known.some((value) => claimNamesValue(text, value));
209
+ });
210
+ }
115
211
  /** One line per hint for the text summary: `name (type, e.g. a, b)`. */
116
212
  export function describeBindingHints(hints) {
117
213
  return hints
@@ -18,6 +18,13 @@ export type BindingContext = Readonly<{
18
18
  * "launcher" in "The launcher must ...").
19
19
  */
20
20
  text?: string | undefined;
21
+ /**
22
+ * The subject keys the requirement constrains. A participant argument
23
+ * (`actor`, `actor_scope`, `role`, `owner`) bound to one of them names no
24
+ * participant: the predicate fact already carries that key as its
25
+ * subject_key, so the binding would be vacuous.
26
+ */
27
+ constrainedSubjects?: readonly string[] | undefined;
21
28
  }>;
22
29
  /**
23
30
  * Why a value only stands in for a binding, or null when it can be a reviewed
@@ -25,6 +32,15 @@ export type BindingContext = Readonly<{
25
32
  * word. Declared constants and the booleans `true`/`false` always pass.
26
33
  */
27
34
  export declare function nameOrStopWordReason(value: string, context?: BindingContext): string | null;
35
+ /** Whether an argument type names a participant (who acts or owns). */
36
+ export declare function isParticipantArgumentType(type: string | undefined): boolean;
37
+ /**
38
+ * Why a value bound to a participant argument is the requirement's subject
39
+ * key rather than a participant, or null. Explicit bindings are judged too:
40
+ * `actor = <subject key>` would complete a predicate whose actor says
41
+ * nothing the fact's subject_key does not already say.
42
+ */
43
+ export declare function subjectKeyParticipantReason(value: string, context?: BindingContext): string | null;
28
44
  /** The most words a value of a naming argument may have. */
29
45
  export declare const MAX_NAMING_BINDING_WORDS = 3;
30
46
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"predicate-bindings.d.ts","sourceRoot":"","sources":["../../../src/operations/modeling/predicate-bindings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAgH9D,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAW3D;AAgED,iEAAiE;AACjE,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED,sDAAsD;AACtD,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IACpC,qCAAqC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,sEAAsE;IACtE,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC1C,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CAC3B,CAAC,CAAC;AAiBH;;;;GAIG;AAEH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,cAAmB,GAC3B,MAAM,GAAG,IAAI,CAYf;AAgBD,4DAA4D;AAC5D,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C;;;;;;;GAOG;AAEH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,cAAmB,GAC3B,MAAM,GAAG,IAAI,CAOf;AAGD,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,OAAO,EACjB,SAAS,UAAQ,EACjB,OAAO,GAAE,cAAmB,GAC3B,iBAAiB,CAsBnB;AAUD,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,iBAAiB,EAAE,GACnC,iBAAiB,CAQnB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAIrE"}
1
+ {"version":3,"file":"predicate-bindings.d.ts","sourceRoot":"","sources":["../../../src/operations/modeling/predicate-bindings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAgH9D,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAW3D;AAgED,iEAAiE;AACjE,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMlD;AAED,sDAAsD;AACtD,MAAM,MAAM,cAAc,GAAG,QAAQ,CAAC;IACpC,qCAAqC;IACrC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,yCAAyC;IACzC,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,sEAAsE;IACtE,SAAS,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;IAC1C,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAClC;;;;OAIG;IACH,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1B;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,SAAS,MAAM,EAAE,GAAG,SAAS,CAAC;CACrD,CAAC,CAAC;AAiBH;;;;GAIG;AAEH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,cAAmB,GAC3B,MAAM,GAAG,IAAI,CAYf;AA2BD,uEAAuE;AAEvE,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAE3E;AAED;;;;;GAKG;AAEH,wBAAgB,2BAA2B,CACzC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,cAAmB,GAC3B,MAAM,GAAG,IAAI,CAUf;AAED,4DAA4D;AAC5D,eAAO,MAAM,wBAAwB,IAAI,CAAC;AAE1C;;;;;;;GAOG;AAEH,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,cAAmB,GAC3B,MAAM,GAAG,IAAI,CAOf;AAGD,wBAAgB,eAAe,CAC7B,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,OAAO,EACjB,SAAS,UAAQ,EACjB,OAAO,GAAE,cAAmB,GAC3B,iBAAiB,CA0BnB;AAUD,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,iBAAiB,EAAE,GACnC,iBAAiB,CAQnB;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,iBAAiB,GAAG,OAAO,CAIrE"}
@@ -222,6 +222,41 @@ const NAMING_ARGUMENT_TYPES = new Set([
222
222
  "role",
223
223
  "component",
224
224
  ]);
225
+ /**
226
+ * Argument types that name who acts or owns. The requirement's subject key
227
+ * is what the claim is about, not a participant, so it never binds them.
228
+ */
229
+ const PARTICIPANT_ARGUMENT_TYPES = new Set([
230
+ "actor",
231
+ "actor_scope",
232
+ "role",
233
+ "owner",
234
+ ]);
235
+ /** Whether an argument type names a participant (who acts or owns). */
236
+ // implements REQ-model-predicates-participant-not-subject
237
+ export function isParticipantArgumentType(type) {
238
+ return PARTICIPANT_ARGUMENT_TYPES.has(type ? bindingToken(type) : "");
239
+ }
240
+ /**
241
+ * Why a value bound to a participant argument is the requirement's subject
242
+ * key rather than a participant, or null. Explicit bindings are judged too:
243
+ * `actor = <subject key>` would complete a predicate whose actor says
244
+ * nothing the fact's subject_key does not already say.
245
+ */
246
+ // implements REQ-model-predicates-participant-not-subject
247
+ export function subjectKeyParticipantReason(value, context = {}) {
248
+ if (!isParticipantArgumentType(context.argumentType))
249
+ return null;
250
+ if (matchesConstant(value, context))
251
+ return null;
252
+ const token = bindingToken(value);
253
+ if (token === "")
254
+ return null;
255
+ const subject = (context.constrainedSubjects ?? []).find((key) => bindingToken(key) === token);
256
+ if (subject === undefined)
257
+ return null;
258
+ return `"${value}" is the requirement's subject key ${subject}, which the predicate fact already carries as its subject_key, so it names no ${bindingToken(context.argumentType ?? "")}`;
259
+ }
225
260
  /** The most words a value of a naming argument may have. */
226
261
  export const MAX_NAMING_BINDING_WORDS = 3;
227
262
  /**
@@ -244,13 +279,17 @@ export function clauseBindingReason(value, context = {}) {
244
279
  return null;
245
280
  return `it is a ${words.length}-word clause of the claim, not a short name for this ${type}`;
246
281
  }
247
- // implements REQ-mcp-suggest-predicates, REQ-model-predicates-binding-placeholders, REQ-model-predicates-binding-clauses
282
+ // implements REQ-mcp-suggest-predicates, REQ-model-predicates-binding-placeholders, REQ-model-predicates-binding-clauses, REQ-model-predicates-participant-not-subject
248
283
  export function classifyBinding(value, text, explicit, canonical = false, context = {}) {
249
284
  const normalized = value.trim();
250
285
  // A value that only repeats an argument name or a stop word is unbound
251
286
  // however it was supplied or extracted.
252
287
  if (nameOrStopWordReason(normalized, { ...context, text }) !== null)
253
288
  return "placeholder";
289
+ // The subject key is what the claim is about; as an actor, role or owner
290
+ // it is a vacuous binding, explicit or not.
291
+ if (subjectKeyParticipantReason(normalized, context) !== null)
292
+ return "placeholder";
254
293
  const constant = matchesConstant(normalized, context);
255
294
  if (canonical && (constant || !isGenericPlaceholder(normalized)))
256
295
  return "extracted";
@@ -1,7 +1,7 @@
1
1
  import type { PredicateSchemaCandidate } from "./predicate-types.js";
2
2
  /**
3
- * Predicate families added from consumer escalation evidence (Align
4
- * dogfooding, 2026-08/09): fail-closed authorization, deployment
3
+ * Predicate families added from consumer escalation evidence (test
4
+ * project dogfooding, 2026-08/09): fail-closed authorization, deployment
5
5
  * preconditions, migration sequencing, diagnostic visibility, mutation
6
6
  * authority, request deduplication, async boundaries, canonical
7
7
  * identifiers, responsive breakpoints, and operational pauses.
@@ -1,6 +1,6 @@
1
1
  /**
2
- * Predicate families added from consumer escalation evidence (Align
3
- * dogfooding, 2026-08/09): fail-closed authorization, deployment
2
+ * Predicate families added from consumer escalation evidence (test
3
+ * project dogfooding, 2026-08/09): fail-closed authorization, deployment
4
4
  * preconditions, migration sequencing, diagnostic visibility, mutation
5
5
  * authority, request deduplication, async boundaries, canonical
6
6
  * identifiers, responsive breakpoints, and operational pauses.
@@ -0,0 +1,9 @@
1
+ import type { PredicateSchemaCandidate } from "./predicate-types.js";
2
+ /**
3
+ * UI design patterns: which visual pattern a concept uses, which variants
4
+ * must share it, which code markers make it recognisable, and the layout
5
+ * shell it sits in. `kibi-plugin-ui` enforces these through its check policy;
6
+ * without that plugin they are ordinary predicates.
7
+ */
8
+ export declare const PREDICATE_CATALOG_6: PredicateSchemaCandidate[];
9
+ //# sourceMappingURL=predicate-catalog-6.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"predicate-catalog-6.d.ts","sourceRoot":"","sources":["../../../src/operations/modeling/predicate-catalog-6.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,sBAAsB,CAAC;AAErE;;;;;GAKG;AAEH,eAAO,MAAM,mBAAmB,EAAE,wBAAwB,EAsGzD,CAAC"}