@lucern/contracts 1.0.16 → 1.0.17

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 (116) hide show
  1. package/CHANGELOG.md +3 -0
  2. package/dist/api-enums.contract.d.ts +2 -2
  3. package/dist/api-enums.contract.js +2 -8
  4. package/dist/api-enums.contract.js.map +1 -1
  5. package/dist/context-pack.contract.d.ts +27 -7
  6. package/dist/context-pack.contract.js.map +1 -1
  7. package/dist/function-registry/beliefs.js +109 -115
  8. package/dist/function-registry/beliefs.js.map +1 -1
  9. package/dist/function-registry/coding.js +68 -91
  10. package/dist/function-registry/coding.js.map +1 -1
  11. package/dist/function-registry/context.js +68 -91
  12. package/dist/function-registry/context.js.map +1 -1
  13. package/dist/function-registry/contracts.js +68 -91
  14. package/dist/function-registry/contracts.js.map +1 -1
  15. package/dist/function-registry/coordination.js +68 -91
  16. package/dist/function-registry/coordination.js.map +1 -1
  17. package/dist/function-registry/edges.js +68 -91
  18. package/dist/function-registry/edges.js.map +1 -1
  19. package/dist/function-registry/evidence.js +182 -125
  20. package/dist/function-registry/evidence.js.map +1 -1
  21. package/dist/function-registry/graph.js +68 -91
  22. package/dist/function-registry/graph.js.map +1 -1
  23. package/dist/function-registry/helpers.js +68 -91
  24. package/dist/function-registry/helpers.js.map +1 -1
  25. package/dist/function-registry/identity.js +68 -91
  26. package/dist/function-registry/identity.js.map +1 -1
  27. package/dist/function-registry/index.js +68 -91
  28. package/dist/function-registry/index.js.map +1 -1
  29. package/dist/function-registry/judgments.js +68 -91
  30. package/dist/function-registry/judgments.js.map +1 -1
  31. package/dist/function-registry/legacy.js +68 -91
  32. package/dist/function-registry/legacy.js.map +1 -1
  33. package/dist/function-registry/lenses.js +68 -91
  34. package/dist/function-registry/lenses.js.map +1 -1
  35. package/dist/function-registry/manifest.d.ts +3 -3
  36. package/dist/function-registry/manifest.js +3 -3
  37. package/dist/function-registry/manifest.js.map +1 -1
  38. package/dist/function-registry/nodes.js +68 -91
  39. package/dist/function-registry/nodes.js.map +1 -1
  40. package/dist/function-registry/ontologies.js +68 -91
  41. package/dist/function-registry/ontologies.js.map +1 -1
  42. package/dist/function-registry/pipeline.js +68 -91
  43. package/dist/function-registry/pipeline.js.map +1 -1
  44. package/dist/function-registry/questions.js +68 -91
  45. package/dist/function-registry/questions.js.map +1 -1
  46. package/dist/function-registry/tasks.js +68 -91
  47. package/dist/function-registry/tasks.js.map +1 -1
  48. package/dist/function-registry/topics.js +68 -91
  49. package/dist/function-registry/topics.js.map +1 -1
  50. package/dist/function-registry/worktrees.js +68 -91
  51. package/dist/function-registry/worktrees.js.map +1 -1
  52. package/dist/generated/convexSchemas.js +2 -2
  53. package/dist/generated/convexSchemas.js.map +1 -1
  54. package/dist/index.d.ts +4 -4
  55. package/dist/index.js +162 -130
  56. package/dist/index.js.map +1 -1
  57. package/dist/manifests/invariant-manifest.d.ts +1 -1
  58. package/dist/manifests/invariants/index.d.ts +1 -1
  59. package/dist/manifests/invariants/index.js +1 -1
  60. package/dist/manifests/invariants/index.js.map +1 -1
  61. package/dist/manifests/invariants/inv-1-beliefs-append-only.d.ts +1 -1
  62. package/dist/manifests/invariants/inv-14-no-silent-transitions.d.ts +1 -1
  63. package/dist/manifests/invariants/manifest-1-projections-declare-audit.d.ts +1 -1
  64. package/dist/manifests/invariants/manifest-1-projections-declare-audit.js +1 -1
  65. package/dist/manifests/invariants/manifest-1-projections-declare-audit.js.map +1 -1
  66. package/dist/projections/{modulate-confidence.projection.d.ts → append-sl-scoring.projection.d.ts} +69 -69
  67. package/dist/projections/{modulate-confidence.projection.js → append-sl-scoring.projection.js} +14 -14
  68. package/dist/projections/append-sl-scoring.projection.js.map +1 -0
  69. package/dist/projections/check-convex-args-shape.js +88 -29
  70. package/dist/projections/check-convex-args-shape.js.map +1 -1
  71. package/dist/projections/create-evidence.projection.js +76 -17
  72. package/dist/projections/create-evidence.projection.js.map +1 -1
  73. package/dist/projections/index.d.ts +47 -47
  74. package/dist/projections/index.js +88 -29
  75. package/dist/projections/index.js.map +1 -1
  76. package/dist/proof-attestation.json +3 -3
  77. package/dist/schemas/index.js +6 -4
  78. package/dist/schemas/index.js.map +1 -1
  79. package/dist/schemas/manifest.d.ts +110 -60
  80. package/dist/schemas/manifest.js +6 -4
  81. package/dist/schemas/manifest.js.map +1 -1
  82. package/dist/schemas/tables/kernel/intelligence.d.ts +20 -10
  83. package/dist/schemas/tables/kernel/intelligence.js +4 -2
  84. package/dist/schemas/tables/kernel/intelligence.js.map +1 -1
  85. package/dist/schemas/tables/kernel/spine.d.ts +2 -2
  86. package/dist/schemas/tables/kernel/spine.js +2 -2
  87. package/dist/schemas/tables/kernel/spine.js.map +1 -1
  88. package/dist/schemas.values.js +6 -4
  89. package/dist/schemas.values.js.map +1 -1
  90. package/dist/sdk-methods.contract.d.ts +6 -16
  91. package/dist/sdk-tools.contract.js +65 -88
  92. package/dist/sdk-tools.contract.js.map +1 -1
  93. package/dist/sdk-tools.contract.registry.js +65 -88
  94. package/dist/sdk-tools.contract.registry.js.map +1 -1
  95. package/dist/sdk-tools.contract.values.js +65 -88
  96. package/dist/sdk-tools.contract.values.js.map +1 -1
  97. package/dist/tool-contracts.d.ts +1 -1
  98. package/dist/tool-contracts.graph.js +3 -3
  99. package/dist/tool-contracts.graph.js.map +1 -1
  100. package/dist/tool-contracts.intelligence-evidence.js +7 -7
  101. package/dist/tool-contracts.intelligence-evidence.js.map +1 -1
  102. package/dist/tool-contracts.js +66 -89
  103. package/dist/tool-contracts.js.map +1 -1
  104. package/dist/tool-contracts.lifecycle.d.ts +2 -2
  105. package/dist/tool-contracts.lifecycle.js +49 -68
  106. package/dist/tool-contracts.lifecycle.js.map +1 -1
  107. package/dist/tool-contracts.pipeline-coordination.js +1 -1
  108. package/dist/tool-contracts.pipeline-coordination.js.map +1 -1
  109. package/dist/tool-contracts.questions-listing.js +5 -9
  110. package/dist/tool-contracts.questions-listing.js.map +1 -1
  111. package/dist/{tool-contracts.values-BhxfrXS5.d.ts → tool-contracts.values-CCoI3qQY.d.ts} +3 -3
  112. package/dist/tool-contracts.values.d.ts +1 -1
  113. package/dist/tool-contracts.values.js +66 -89
  114. package/dist/tool-contracts.values.js.map +1 -1
  115. package/package.json +1 -1
  116. package/dist/projections/modulate-confidence.projection.js.map +0 -1
@@ -1,10 +1,10 @@
1
1
  import { z } from 'zod';
2
2
  import { ProjectionRegistry } from '../projections/index.js';
3
3
  import '../projections/projection-dsl.js';
4
+ import '../projections/append-sl-scoring.projection.js';
4
5
  import '../projections/create-evidence.projection.js';
5
6
  import '../projections/list-beliefs.projection.js';
6
7
  import '../projections/list-tasks.projection.js';
7
- import '../projections/modulate-confidence.projection.js';
8
8
 
9
9
  type InvariantId = string;
10
10
  type CheckerKind = "ast" | "manifest" | "runtime";
@@ -5,10 +5,10 @@ export { MANIFEST_1_PROJECTIONS_DECLARE_AUDIT } from './manifest-1-projections-d
5
5
  import 'zod';
6
6
  import '../../projections/index.js';
7
7
  import '../../projections/projection-dsl.js';
8
+ import '../../projections/append-sl-scoring.projection.js';
8
9
  import '../../projections/create-evidence.projection.js';
9
10
  import '../../projections/list-beliefs.projection.js';
10
11
  import '../../projections/list-tasks.projection.js';
11
- import '../../projections/modulate-confidence.projection.js';
12
12
 
13
13
  declare const invariants: readonly [InvariantRule, InvariantRule, InvariantRule];
14
14
 
@@ -174,7 +174,7 @@ var MANIFEST_1_PROJECTIONS_DECLARE_AUDIT = {
174
174
  evaluate: async (ctx) => {
175
175
  const violations = [];
176
176
  for (const [name, projection] of Object.entries(ctx.projections)) {
177
- if (!/^(create|modulate|fork|update)_/.test(name)) {
177
+ if (!/^(append|create|fork|update)_/.test(name)) {
178
178
  continue;
179
179
  }
180
180
  const shape = objectShape(projection.inputSchema);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/manifests/invariants/ast-utils.ts","../../../src/manifests/invariants/inv-1-beliefs-append-only.ts","../../../src/manifests/invariants/inv-14-no-silent-transitions.ts","../../../src/manifests/invariants/manifest-1-projections-declare-audit.ts","../../../src/manifests/invariants/index.ts"],"names":["ts","join"],"mappings":"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","file":"index.js","sourcesContent":["import { readFileSync, readdirSync, statSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport ts from \"typescript\";\n\nexport type SourceUnit = {\n filePath: string;\n text: string;\n sourceFile: ts.SourceFile;\n};\n\nexport function collectTsFiles(root: string): string[] {\n const entries: string[] = [];\n for (const name of readdirSync(root)) {\n const path = join(root, name);\n const stat = statSync(path);\n if (stat.isDirectory()) {\n if (name === \"node_modules\" || name === \"dist\" || name === \".next\") {\n continue;\n }\n entries.push(...collectTsFiles(path));\n } else if (name.endsWith(\".ts\") && !name.endsWith(\".d.ts\")) {\n entries.push(path);\n }\n }\n return entries;\n}\n\nexport function readSource(filePath: string): SourceUnit {\n const text = readFileSync(filePath, \"utf8\");\n return {\n filePath,\n text,\n sourceFile: ts.createSourceFile(filePath, text, ts.ScriptTarget.Latest, true),\n };\n}\n\nexport function walk(node: ts.Node, visit: (node: ts.Node) => void): void {\n visit(node);\n node.forEachChild((child) => walk(child, visit));\n}\n\nexport function isDbCall(node: ts.Node, method: string): node is ts.CallExpression {\n if (!ts.isCallExpression(node)) {\n return false;\n }\n const expression = node.expression;\n if (!ts.isPropertyAccessExpression(expression)) {\n return false;\n }\n if (expression.name.text !== method) {\n return false;\n }\n return expression.expression.getText().endsWith(\".db\");\n}\n\nexport function lineRef(unit: SourceUnit, node: ts.Node): string {\n const { line } = unit.sourceFile.getLineAndCharacterOfPosition(node.getStart());\n return `${unit.filePath}:${line + 1}`;\n}\n","import { join } from \"node:path\";\nimport ts from \"typescript\";\nimport type { InvariantRule } from \"../invariant-manifest.js\";\nimport { collectTsFiles, isDbCall, lineRef, readSource, walk } from \"./ast-utils.js\";\n\nfunction isBeliefWriteCandidate(node: ts.CallExpression): boolean {\n const [target, patch] = node.arguments;\n const targetText = target?.getText() ?? \"\";\n const patchText = patch?.getText() ?? \"\";\n\n if (!/belief/i.test(targetText)) {\n return false;\n }\n\n return /canonicalText|formulation|confidence|beliefStatus/.test(patchText);\n}\n\nfunction getEnclosingFunctionName(node: ts.Node): string | undefined {\n let current: ts.Node | undefined = node;\n while (current) {\n if (ts.isFunctionDeclaration(current) && current.name) {\n return current.name.text;\n }\n if (\n (ts.isFunctionExpression(current) || ts.isArrowFunction(current)) &&\n ts.isVariableDeclaration(current.parent) &&\n ts.isIdentifier(current.parent.name)\n ) {\n return current.parent.name.text;\n }\n current = current.parent;\n }\n return undefined;\n}\n\nfunction isEvidenceBackedSubjectiveLogicPatch(\n node: ts.CallExpression\n): boolean {\n const [, patch] = node.arguments;\n const patchText = patch?.getText() ?? \"\";\n const functionName = getEnclosingFunctionName(node) ?? \"\";\n\n return (\n /SubjectiveLogic/.test(functionName) &&\n /confidence/.test(patchText) &&\n /slOperator\\s*:\\s*[\"']evidence_accumulation[\"']/.test(patchText)\n );\n}\n\nexport const INV_1_BELIEFS_APPEND_ONLY: InvariantRule = {\n invariant: \"INV-1: beliefs append-only\",\n description: \"Scored beliefs cannot be patched or deleted; they must fork.\",\n checker: \"ast\",\n severity: \"block_publish\",\n evaluate: async (ctx) => {\n const root = join(ctx.repoRoot, \"packages/reasoning-kernel/src/adapters\");\n const violations: string[] = [];\n\n for (const filePath of collectTsFiles(root)) {\n if (filePath.endsWith(\".test.ts\")) {\n continue;\n }\n const unit = readSource(filePath);\n walk(unit.sourceFile, (node) => {\n if (\n isDbCall(node, \"patch\") &&\n isBeliefWriteCandidate(node) &&\n !isEvidenceBackedSubjectiveLogicPatch(node)\n ) {\n violations.push(lineRef(unit, node));\n }\n if (isDbCall(node, \"delete\") && /belief/i.test(node.getText())) {\n violations.push(lineRef(unit, node));\n }\n });\n }\n\n return violations.length === 0\n ? { status: \"passed\", evidenceRefs: [] }\n : {\n status: \"failed\",\n evidenceRefs: violations,\n reason: `${violations.length} unwrapped belief writes found`,\n };\n },\n};\n","import { join } from \"node:path\";\nimport type { InvariantRule } from \"../invariant-manifest.js\";\nimport { collectTsFiles, isDbCall, lineRef, readSource, walk } from \"./ast-utils.js\";\n\nconst EPISTEMIC_TABLES = [\n \"epistemicNodes\",\n \"epistemicEdges\",\n \"beliefConfidence\",\n \"questions\",\n \"answers\",\n \"contradictions\",\n];\n\nexport const INV_14_NO_SILENT_TRANSITIONS: InvariantRule = {\n invariant: \"INV-14: no silent state transitions\",\n description:\n \"Epistemic state transitions must co-locate an epistemicAudit insert in the same implementation file.\",\n checker: \"ast\",\n severity: \"block_publish\",\n evaluate: async (ctx) => {\n const root = join(ctx.repoRoot, \"packages/reasoning-kernel/src/adapters\");\n const violations: string[] = [];\n\n for (const filePath of collectTsFiles(root)) {\n if (filePath.endsWith(\".test.ts\")) {\n continue;\n }\n const unit = readSource(filePath);\n if (unit.text.includes(\"epistemicAudit\")) {\n continue;\n }\n\n walk(unit.sourceFile, (node) => {\n if (!isDbCall(node, \"patch\")) {\n return;\n }\n const text = node.getText();\n const touchesEpistemicState =\n EPISTEMIC_TABLES.some((table) => text.includes(`\"${table}\"`)) ||\n /\\b(belief|question|answer|contradiction|edge)\\w*Id\\b/i.test(text);\n const carriesAuditIntent =\n /\\b(epistemicAudit|rationale|reason|audit)\\b/i.test(text);\n if (touchesEpistemicState && !carriesAuditIntent) {\n violations.push(lineRef(unit, node));\n }\n });\n }\n\n return violations.length === 0\n ? { status: \"passed\", evidenceRefs: [] }\n : {\n status: \"failed\",\n evidenceRefs: violations,\n reason: `${violations.length} epistemic writes lack local audit evidence`,\n };\n },\n};\n","import type { z } from \"zod\";\nimport type { InvariantRule } from \"../invariant-manifest.js\";\n\nfunction objectShape(schema: z.ZodTypeAny): Record<string, unknown> | undefined {\n let current = schema;\n while (current._def.typeName === \"ZodEffects\") {\n current = (current._def as { schema: z.ZodTypeAny }).schema;\n }\n\n const def = current._def as { shape?: unknown };\n if (typeof def.shape === \"function\") {\n return def.shape() as Record<string, unknown>;\n }\n if (def.shape && typeof def.shape === \"object\") {\n return def.shape as Record<string, unknown>;\n }\n return undefined;\n}\n\nexport const MANIFEST_1_PROJECTIONS_DECLARE_AUDIT: InvariantRule = {\n invariant: \"MANIFEST-1: kernel projections declare epistemicAudit\",\n description:\n \"Kernel mutation projections must carry a rationale so audit evidence can explain the transition.\",\n checker: \"manifest\",\n severity: \"block_publish\",\n evaluate: async (ctx) => {\n const violations: string[] = [];\n\n for (const [name, projection] of Object.entries(ctx.projections)) {\n if (!/^(create|modulate|fork|update)_/.test(name)) {\n continue;\n }\n const shape = objectShape(projection.inputSchema);\n if (!shape || !(\"rationale\" in shape)) {\n violations.push(`projection '${name}' missing 'rationale' field`);\n }\n }\n\n return violations.length === 0\n ? { status: \"passed\", evidenceRefs: [] }\n : {\n status: \"failed\",\n evidenceRefs: violations,\n reason: `${violations.length} projections missing audit rationale`,\n };\n },\n};\n","import { INV_1_BELIEFS_APPEND_ONLY } from \"./inv-1-beliefs-append-only.js\";\nimport { INV_14_NO_SILENT_TRANSITIONS } from \"./inv-14-no-silent-transitions.js\";\nimport { MANIFEST_1_PROJECTIONS_DECLARE_AUDIT } from \"./manifest-1-projections-declare-audit.js\";\n\nexport const invariants = [\n INV_1_BELIEFS_APPEND_ONLY,\n INV_14_NO_SILENT_TRANSITIONS,\n MANIFEST_1_PROJECTIONS_DECLARE_AUDIT,\n] as const;\n\nexport { INV_1_BELIEFS_APPEND_ONLY } from \"./inv-1-beliefs-append-only.js\";\nexport { INV_14_NO_SILENT_TRANSITIONS } from \"./inv-14-no-silent-transitions.js\";\nexport { MANIFEST_1_PROJECTIONS_DECLARE_AUDIT } from \"./manifest-1-projections-declare-audit.js\";\n"]}
1
+ {"version":3,"sources":["../../../src/manifests/invariants/ast-utils.ts","../../../src/manifests/invariants/inv-1-beliefs-append-only.ts","../../../src/manifests/invariants/inv-14-no-silent-transitions.ts","../../../src/manifests/invariants/manifest-1-projections-declare-audit.ts","../../../src/manifests/invariants/index.ts"],"names":["ts","join"],"mappings":"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","file":"index.js","sourcesContent":["import { readFileSync, readdirSync, statSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport ts from \"typescript\";\n\nexport type SourceUnit = {\n filePath: string;\n text: string;\n sourceFile: ts.SourceFile;\n};\n\nexport function collectTsFiles(root: string): string[] {\n const entries: string[] = [];\n for (const name of readdirSync(root)) {\n const path = join(root, name);\n const stat = statSync(path);\n if (stat.isDirectory()) {\n if (name === \"node_modules\" || name === \"dist\" || name === \".next\") {\n continue;\n }\n entries.push(...collectTsFiles(path));\n } else if (name.endsWith(\".ts\") && !name.endsWith(\".d.ts\")) {\n entries.push(path);\n }\n }\n return entries;\n}\n\nexport function readSource(filePath: string): SourceUnit {\n const text = readFileSync(filePath, \"utf8\");\n return {\n filePath,\n text,\n sourceFile: ts.createSourceFile(filePath, text, ts.ScriptTarget.Latest, true),\n };\n}\n\nexport function walk(node: ts.Node, visit: (node: ts.Node) => void): void {\n visit(node);\n node.forEachChild((child) => walk(child, visit));\n}\n\nexport function isDbCall(node: ts.Node, method: string): node is ts.CallExpression {\n if (!ts.isCallExpression(node)) {\n return false;\n }\n const expression = node.expression;\n if (!ts.isPropertyAccessExpression(expression)) {\n return false;\n }\n if (expression.name.text !== method) {\n return false;\n }\n return expression.expression.getText().endsWith(\".db\");\n}\n\nexport function lineRef(unit: SourceUnit, node: ts.Node): string {\n const { line } = unit.sourceFile.getLineAndCharacterOfPosition(node.getStart());\n return `${unit.filePath}:${line + 1}`;\n}\n","import { join } from \"node:path\";\nimport ts from \"typescript\";\nimport type { InvariantRule } from \"../invariant-manifest.js\";\nimport { collectTsFiles, isDbCall, lineRef, readSource, walk } from \"./ast-utils.js\";\n\nfunction isBeliefWriteCandidate(node: ts.CallExpression): boolean {\n const [target, patch] = node.arguments;\n const targetText = target?.getText() ?? \"\";\n const patchText = patch?.getText() ?? \"\";\n\n if (!/belief/i.test(targetText)) {\n return false;\n }\n\n return /canonicalText|formulation|confidence|beliefStatus/.test(patchText);\n}\n\nfunction getEnclosingFunctionName(node: ts.Node): string | undefined {\n let current: ts.Node | undefined = node;\n while (current) {\n if (ts.isFunctionDeclaration(current) && current.name) {\n return current.name.text;\n }\n if (\n (ts.isFunctionExpression(current) || ts.isArrowFunction(current)) &&\n ts.isVariableDeclaration(current.parent) &&\n ts.isIdentifier(current.parent.name)\n ) {\n return current.parent.name.text;\n }\n current = current.parent;\n }\n return undefined;\n}\n\nfunction isEvidenceBackedSubjectiveLogicPatch(\n node: ts.CallExpression\n): boolean {\n const [, patch] = node.arguments;\n const patchText = patch?.getText() ?? \"\";\n const functionName = getEnclosingFunctionName(node) ?? \"\";\n\n return (\n /SubjectiveLogic/.test(functionName) &&\n /confidence/.test(patchText) &&\n /slOperator\\s*:\\s*[\"']evidence_accumulation[\"']/.test(patchText)\n );\n}\n\nexport const INV_1_BELIEFS_APPEND_ONLY: InvariantRule = {\n invariant: \"INV-1: beliefs append-only\",\n description: \"Scored beliefs cannot be patched or deleted; they must fork.\",\n checker: \"ast\",\n severity: \"block_publish\",\n evaluate: async (ctx) => {\n const root = join(ctx.repoRoot, \"packages/reasoning-kernel/src/adapters\");\n const violations: string[] = [];\n\n for (const filePath of collectTsFiles(root)) {\n if (filePath.endsWith(\".test.ts\")) {\n continue;\n }\n const unit = readSource(filePath);\n walk(unit.sourceFile, (node) => {\n if (\n isDbCall(node, \"patch\") &&\n isBeliefWriteCandidate(node) &&\n !isEvidenceBackedSubjectiveLogicPatch(node)\n ) {\n violations.push(lineRef(unit, node));\n }\n if (isDbCall(node, \"delete\") && /belief/i.test(node.getText())) {\n violations.push(lineRef(unit, node));\n }\n });\n }\n\n return violations.length === 0\n ? { status: \"passed\", evidenceRefs: [] }\n : {\n status: \"failed\",\n evidenceRefs: violations,\n reason: `${violations.length} unwrapped belief writes found`,\n };\n },\n};\n","import { join } from \"node:path\";\nimport type { InvariantRule } from \"../invariant-manifest.js\";\nimport { collectTsFiles, isDbCall, lineRef, readSource, walk } from \"./ast-utils.js\";\n\nconst EPISTEMIC_TABLES = [\n \"epistemicNodes\",\n \"epistemicEdges\",\n \"beliefConfidence\",\n \"questions\",\n \"answers\",\n \"contradictions\",\n];\n\nexport const INV_14_NO_SILENT_TRANSITIONS: InvariantRule = {\n invariant: \"INV-14: no silent state transitions\",\n description:\n \"Epistemic state transitions must co-locate an epistemicAudit insert in the same implementation file.\",\n checker: \"ast\",\n severity: \"block_publish\",\n evaluate: async (ctx) => {\n const root = join(ctx.repoRoot, \"packages/reasoning-kernel/src/adapters\");\n const violations: string[] = [];\n\n for (const filePath of collectTsFiles(root)) {\n if (filePath.endsWith(\".test.ts\")) {\n continue;\n }\n const unit = readSource(filePath);\n if (unit.text.includes(\"epistemicAudit\")) {\n continue;\n }\n\n walk(unit.sourceFile, (node) => {\n if (!isDbCall(node, \"patch\")) {\n return;\n }\n const text = node.getText();\n const touchesEpistemicState =\n EPISTEMIC_TABLES.some((table) => text.includes(`\"${table}\"`)) ||\n /\\b(belief|question|answer|contradiction|edge)\\w*Id\\b/i.test(text);\n const carriesAuditIntent =\n /\\b(epistemicAudit|rationale|reason|audit)\\b/i.test(text);\n if (touchesEpistemicState && !carriesAuditIntent) {\n violations.push(lineRef(unit, node));\n }\n });\n }\n\n return violations.length === 0\n ? { status: \"passed\", evidenceRefs: [] }\n : {\n status: \"failed\",\n evidenceRefs: violations,\n reason: `${violations.length} epistemic writes lack local audit evidence`,\n };\n },\n};\n","import type { z } from \"zod\";\nimport type { InvariantRule } from \"../invariant-manifest.js\";\n\nfunction objectShape(schema: z.ZodTypeAny): Record<string, unknown> | undefined {\n let current = schema;\n while (current._def.typeName === \"ZodEffects\") {\n current = (current._def as { schema: z.ZodTypeAny }).schema;\n }\n\n const def = current._def as { shape?: unknown };\n if (typeof def.shape === \"function\") {\n return def.shape() as Record<string, unknown>;\n }\n if (def.shape && typeof def.shape === \"object\") {\n return def.shape as Record<string, unknown>;\n }\n return undefined;\n}\n\nexport const MANIFEST_1_PROJECTIONS_DECLARE_AUDIT: InvariantRule = {\n invariant: \"MANIFEST-1: kernel projections declare epistemicAudit\",\n description:\n \"Kernel mutation projections must carry a rationale so audit evidence can explain the transition.\",\n checker: \"manifest\",\n severity: \"block_publish\",\n evaluate: async (ctx) => {\n const violations: string[] = [];\n\n for (const [name, projection] of Object.entries(ctx.projections)) {\n if (!/^(append|create|fork|update)_/.test(name)) {\n continue;\n }\n const shape = objectShape(projection.inputSchema);\n if (!shape || !(\"rationale\" in shape)) {\n violations.push(`projection '${name}' missing 'rationale' field`);\n }\n }\n\n return violations.length === 0\n ? { status: \"passed\", evidenceRefs: [] }\n : {\n status: \"failed\",\n evidenceRefs: violations,\n reason: `${violations.length} projections missing audit rationale`,\n };\n },\n};\n","import { INV_1_BELIEFS_APPEND_ONLY } from \"./inv-1-beliefs-append-only.js\";\nimport { INV_14_NO_SILENT_TRANSITIONS } from \"./inv-14-no-silent-transitions.js\";\nimport { MANIFEST_1_PROJECTIONS_DECLARE_AUDIT } from \"./manifest-1-projections-declare-audit.js\";\n\nexport const invariants = [\n INV_1_BELIEFS_APPEND_ONLY,\n INV_14_NO_SILENT_TRANSITIONS,\n MANIFEST_1_PROJECTIONS_DECLARE_AUDIT,\n] as const;\n\nexport { INV_1_BELIEFS_APPEND_ONLY } from \"./inv-1-beliefs-append-only.js\";\nexport { INV_14_NO_SILENT_TRANSITIONS } from \"./inv-14-no-silent-transitions.js\";\nexport { MANIFEST_1_PROJECTIONS_DECLARE_AUDIT } from \"./manifest-1-projections-declare-audit.js\";\n"]}
@@ -2,10 +2,10 @@ import { InvariantRule } from '../invariant-manifest.js';
2
2
  import 'zod';
3
3
  import '../../projections/index.js';
4
4
  import '../../projections/projection-dsl.js';
5
+ import '../../projections/append-sl-scoring.projection.js';
5
6
  import '../../projections/create-evidence.projection.js';
6
7
  import '../../projections/list-beliefs.projection.js';
7
8
  import '../../projections/list-tasks.projection.js';
8
- import '../../projections/modulate-confidence.projection.js';
9
9
 
10
10
  declare const INV_1_BELIEFS_APPEND_ONLY: InvariantRule;
11
11
 
@@ -2,10 +2,10 @@ import { InvariantRule } from '../invariant-manifest.js';
2
2
  import 'zod';
3
3
  import '../../projections/index.js';
4
4
  import '../../projections/projection-dsl.js';
5
+ import '../../projections/append-sl-scoring.projection.js';
5
6
  import '../../projections/create-evidence.projection.js';
6
7
  import '../../projections/list-beliefs.projection.js';
7
8
  import '../../projections/list-tasks.projection.js';
8
- import '../../projections/modulate-confidence.projection.js';
9
9
 
10
10
  declare const INV_14_NO_SILENT_TRANSITIONS: InvariantRule;
11
11
 
@@ -2,10 +2,10 @@ import { InvariantRule } from '../invariant-manifest.js';
2
2
  import 'zod';
3
3
  import '../../projections/index.js';
4
4
  import '../../projections/projection-dsl.js';
5
+ import '../../projections/append-sl-scoring.projection.js';
5
6
  import '../../projections/create-evidence.projection.js';
6
7
  import '../../projections/list-beliefs.projection.js';
7
8
  import '../../projections/list-tasks.projection.js';
8
- import '../../projections/modulate-confidence.projection.js';
9
9
 
10
10
  declare const MANIFEST_1_PROJECTIONS_DECLARE_AUDIT: InvariantRule;
11
11
 
@@ -21,7 +21,7 @@ var MANIFEST_1_PROJECTIONS_DECLARE_AUDIT = {
21
21
  evaluate: async (ctx) => {
22
22
  const violations = [];
23
23
  for (const [name, projection] of Object.entries(ctx.projections)) {
24
- if (!/^(create|modulate|fork|update)_/.test(name)) {
24
+ if (!/^(append|create|fork|update)_/.test(name)) {
25
25
  continue;
26
26
  }
27
27
  const shape = objectShape(projection.inputSchema);
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../src/manifests/invariants/manifest-1-projections-declare-audit.ts"],"names":[],"mappings":";AAGA,SAAS,YAAY,MAAA,EAA2D;AAC9E,EAAA,IAAI,OAAA,GAAU,MAAA;AACd,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,QAAA,KAAa,YAAA,EAAc;AAC7C,IAAA,OAAA,GAAW,QAAQ,IAAA,CAAkC,MAAA;AAAA,EACvD;AAEA,EAAA,MAAM,MAAM,OAAA,CAAQ,IAAA;AACpB,EAAA,IAAI,OAAO,GAAA,CAAI,KAAA,KAAU,UAAA,EAAY;AACnC,IAAA,OAAO,IAAI,KAAA,EAAM;AAAA,EACnB;AACA,EAAA,IAAI,GAAA,CAAI,KAAA,IAAS,OAAO,GAAA,CAAI,UAAU,QAAA,EAAU;AAC9C,IAAA,OAAO,GAAA,CAAI,KAAA;AAAA,EACb;AACA,EAAA,OAAO,MAAA;AACT;AAEO,IAAM,oCAAA,GAAsD;AAAA,EACjE,SAAA,EAAW,uDAAA;AAAA,EACX,WAAA,EACE,kGAAA;AAAA,EACF,OAAA,EAAS,UAAA;AAAA,EACT,QAAA,EAAU,eAAA;AAAA,EACV,QAAA,EAAU,OAAO,GAAA,KAAQ;AACvB,IAAA,MAAM,aAAuB,EAAC;AAE9B,IAAA,KAAA,MAAW,CAAC,MAAM,UAAU,CAAA,IAAK,OAAO,OAAA,CAAQ,GAAA,CAAI,WAAW,CAAA,EAAG;AAChE,MAAA,IAAI,CAAC,iCAAA,CAAkC,IAAA,CAAK,IAAI,CAAA,EAAG;AACjD,QAAA;AAAA,MACF;AACA,MAAA,MAAM,KAAA,GAAQ,WAAA,CAAY,UAAA,CAAW,WAAW,CAAA;AAChD,MAAA,IAAI,CAAC,KAAA,IAAS,EAAE,WAAA,IAAe,KAAA,CAAA,EAAQ;AACrC,QAAA,UAAA,CAAW,IAAA,CAAK,CAAA,YAAA,EAAe,IAAI,CAAA,2BAAA,CAA6B,CAAA;AAAA,MAClE;AAAA,IACF;AAEA,IAAA,OAAO,UAAA,CAAW,WAAW,CAAA,GACzB,EAAE,QAAQ,QAAA,EAAU,YAAA,EAAc,EAAC,EAAE,GACrC;AAAA,MACE,MAAA,EAAQ,QAAA;AAAA,MACR,YAAA,EAAc,UAAA;AAAA,MACd,MAAA,EAAQ,CAAA,EAAG,UAAA,CAAW,MAAM,CAAA,oCAAA;AAAA,KAC9B;AAAA,EACN;AACF","file":"manifest-1-projections-declare-audit.js","sourcesContent":["import type { z } from \"zod\";\nimport type { InvariantRule } from \"../invariant-manifest.js\";\n\nfunction objectShape(schema: z.ZodTypeAny): Record<string, unknown> | undefined {\n let current = schema;\n while (current._def.typeName === \"ZodEffects\") {\n current = (current._def as { schema: z.ZodTypeAny }).schema;\n }\n\n const def = current._def as { shape?: unknown };\n if (typeof def.shape === \"function\") {\n return def.shape() as Record<string, unknown>;\n }\n if (def.shape && typeof def.shape === \"object\") {\n return def.shape as Record<string, unknown>;\n }\n return undefined;\n}\n\nexport const MANIFEST_1_PROJECTIONS_DECLARE_AUDIT: InvariantRule = {\n invariant: \"MANIFEST-1: kernel projections declare epistemicAudit\",\n description:\n \"Kernel mutation projections must carry a rationale so audit evidence can explain the transition.\",\n checker: \"manifest\",\n severity: \"block_publish\",\n evaluate: async (ctx) => {\n const violations: string[] = [];\n\n for (const [name, projection] of Object.entries(ctx.projections)) {\n if (!/^(create|modulate|fork|update)_/.test(name)) {\n continue;\n }\n const shape = objectShape(projection.inputSchema);\n if (!shape || !(\"rationale\" in shape)) {\n violations.push(`projection '${name}' missing 'rationale' field`);\n }\n }\n\n return violations.length === 0\n ? { status: \"passed\", evidenceRefs: [] }\n : {\n status: \"failed\",\n evidenceRefs: violations,\n reason: `${violations.length} projections missing audit rationale`,\n };\n },\n};\n"]}
1
+ {"version":3,"sources":["../../../src/manifests/invariants/manifest-1-projections-declare-audit.ts"],"names":[],"mappings":";AAGA,SAAS,YAAY,MAAA,EAA2D;AAC9E,EAAA,IAAI,OAAA,GAAU,MAAA;AACd,EAAA,OAAO,OAAA,CAAQ,IAAA,CAAK,QAAA,KAAa,YAAA,EAAc;AAC7C,IAAA,OAAA,GAAW,QAAQ,IAAA,CAAkC,MAAA;AAAA,EACvD;AAEA,EAAA,MAAM,MAAM,OAAA,CAAQ,IAAA;AACpB,EAAA,IAAI,OAAO,GAAA,CAAI,KAAA,KAAU,UAAA,EAAY;AACnC,IAAA,OAAO,IAAI,KAAA,EAAM;AAAA,EACnB;AACA,EAAA,IAAI,GAAA,CAAI,KAAA,IAAS,OAAO,GAAA,CAAI,UAAU,QAAA,EAAU;AAC9C,IAAA,OAAO,GAAA,CAAI,KAAA;AAAA,EACb;AACA,EAAA,OAAO,MAAA;AACT;AAEO,IAAM,oCAAA,GAAsD;AAAA,EACjE,SAAA,EAAW,uDAAA;AAAA,EACX,WAAA,EACE,kGAAA;AAAA,EACF,OAAA,EAAS,UAAA;AAAA,EACT,QAAA,EAAU,eAAA;AAAA,EACV,QAAA,EAAU,OAAO,GAAA,KAAQ;AACvB,IAAA,MAAM,aAAuB,EAAC;AAE9B,IAAA,KAAA,MAAW,CAAC,MAAM,UAAU,CAAA,IAAK,OAAO,OAAA,CAAQ,GAAA,CAAI,WAAW,CAAA,EAAG;AAChE,MAAA,IAAI,CAAC,+BAAA,CAAgC,IAAA,CAAK,IAAI,CAAA,EAAG;AAC/C,QAAA;AAAA,MACF;AACA,MAAA,MAAM,KAAA,GAAQ,WAAA,CAAY,UAAA,CAAW,WAAW,CAAA;AAChD,MAAA,IAAI,CAAC,KAAA,IAAS,EAAE,WAAA,IAAe,KAAA,CAAA,EAAQ;AACrC,QAAA,UAAA,CAAW,IAAA,CAAK,CAAA,YAAA,EAAe,IAAI,CAAA,2BAAA,CAA6B,CAAA;AAAA,MAClE;AAAA,IACF;AAEA,IAAA,OAAO,UAAA,CAAW,WAAW,CAAA,GACzB,EAAE,QAAQ,QAAA,EAAU,YAAA,EAAc,EAAC,EAAE,GACrC;AAAA,MACE,MAAA,EAAQ,QAAA;AAAA,MACR,YAAA,EAAc,UAAA;AAAA,MACd,MAAA,EAAQ,CAAA,EAAG,UAAA,CAAW,MAAM,CAAA,oCAAA;AAAA,KAC9B;AAAA,EACN;AACF","file":"manifest-1-projections-declare-audit.js","sourcesContent":["import type { z } from \"zod\";\nimport type { InvariantRule } from \"../invariant-manifest.js\";\n\nfunction objectShape(schema: z.ZodTypeAny): Record<string, unknown> | undefined {\n let current = schema;\n while (current._def.typeName === \"ZodEffects\") {\n current = (current._def as { schema: z.ZodTypeAny }).schema;\n }\n\n const def = current._def as { shape?: unknown };\n if (typeof def.shape === \"function\") {\n return def.shape() as Record<string, unknown>;\n }\n if (def.shape && typeof def.shape === \"object\") {\n return def.shape as Record<string, unknown>;\n }\n return undefined;\n}\n\nexport const MANIFEST_1_PROJECTIONS_DECLARE_AUDIT: InvariantRule = {\n invariant: \"MANIFEST-1: kernel projections declare epistemicAudit\",\n description:\n \"Kernel mutation projections must carry a rationale so audit evidence can explain the transition.\",\n checker: \"manifest\",\n severity: \"block_publish\",\n evaluate: async (ctx) => {\n const violations: string[] = [];\n\n for (const [name, projection] of Object.entries(ctx.projections)) {\n if (!/^(append|create|fork|update)_/.test(name)) {\n continue;\n }\n const shape = objectShape(projection.inputSchema);\n if (!shape || !(\"rationale\" in shape)) {\n violations.push(`projection '${name}' missing 'rationale' field`);\n }\n }\n\n return violations.length === 0\n ? { status: \"passed\", evidenceRefs: [] }\n : {\n status: \"failed\",\n evidenceRefs: violations,\n reason: `${violations.length} projections missing audit rationale`,\n };\n },\n};\n"]}
@@ -1,7 +1,7 @@
1
1
  import { ProjectionDef } from './projection-dsl.js';
2
2
  import { z } from 'zod';
3
3
 
4
- declare const modulateConfidenceInputSchema: z.ZodEffects<z.ZodObject<{
4
+ declare const appendSlScoringInputSchema: z.ZodEffects<z.ZodObject<{
5
5
  nodeId: z.ZodOptional<z.ZodString>;
6
6
  beliefNodeId: z.ZodOptional<z.ZodString>;
7
7
  worktreeId: z.ZodOptional<z.ZodString>;
@@ -54,19 +54,22 @@ declare const modulateConfidenceInputSchema: z.ZodEffects<z.ZodObject<{
54
54
  trustedBypassAccessCheck: z.ZodOptional<z.ZodBoolean>;
55
55
  }, "strip", z.ZodTypeAny, {
56
56
  rationale: string;
57
- trigger: "evidence_added" | "evidence_removed" | "contradiction_detected" | "contradiction_resolved" | "agent_assessment" | "worktree_outcome" | "worktree_completed" | "fusion" | "discount" | "deduction" | "answer_recorded" | "backfill_synthetic";
57
+ trigger: "evidence_added" | "evidence_removed" | "contradiction_detected" | "contradiction_resolved" | "agent_assessment" | "worktree_outcome" | "worktree_completed" | "fusion" | "discount" | "deduction" | "backfill_synthetic" | "answer_recorded";
58
58
  belief?: number | undefined;
59
59
  baseRate?: number | undefined;
60
60
  nodeId?: string | undefined;
61
61
  disbelief?: number | undefined;
62
62
  uncertainty?: number | undefined;
63
- worktreeId?: string | undefined;
63
+ provenance?: {
64
+ evidence?: string | undefined;
65
+ question?: string | undefined;
66
+ contradiction?: string | undefined;
67
+ worktree?: string | undefined;
68
+ answer?: string | undefined;
69
+ } | undefined;
64
70
  triggeringEvidenceId?: string | undefined;
65
- triggeringQuestionId?: string | undefined;
66
- triggeringAnswerId?: string | undefined;
67
- triggeringContradictionId?: string | undefined;
68
- triggeringWorktreeId?: string | undefined;
69
71
  beliefNodeId?: string | undefined;
72
+ worktreeId?: string | undefined;
70
73
  trustedBypassAccessCheck?: boolean | undefined;
71
74
  opinion?: {
72
75
  belief: number;
@@ -74,28 +77,28 @@ declare const modulateConfidenceInputSchema: z.ZodEffects<z.ZodObject<{
74
77
  disbelief: number;
75
78
  uncertainty: number;
76
79
  } | undefined;
77
- provenance?: {
78
- evidence?: string | undefined;
79
- question?: string | undefined;
80
- contradiction?: string | undefined;
81
- worktree?: string | undefined;
82
- answer?: string | undefined;
83
- } | undefined;
80
+ triggeringQuestionId?: string | undefined;
81
+ triggeringAnswerId?: string | undefined;
82
+ triggeringContradictionId?: string | undefined;
83
+ triggeringWorktreeId?: string | undefined;
84
84
  }, {
85
85
  rationale: string;
86
- trigger: "evidence_added" | "evidence_removed" | "contradiction_detected" | "contradiction_resolved" | "agent_assessment" | "worktree_outcome" | "worktree_completed" | "fusion" | "discount" | "deduction" | "answer_recorded" | "backfill_synthetic";
86
+ trigger: "evidence_added" | "evidence_removed" | "contradiction_detected" | "contradiction_resolved" | "agent_assessment" | "worktree_outcome" | "worktree_completed" | "fusion" | "discount" | "deduction" | "backfill_synthetic" | "answer_recorded";
87
87
  belief?: number | undefined;
88
88
  baseRate?: number | undefined;
89
89
  nodeId?: string | undefined;
90
90
  disbelief?: number | undefined;
91
91
  uncertainty?: number | undefined;
92
- worktreeId?: string | undefined;
92
+ provenance?: {
93
+ evidence?: string | undefined;
94
+ question?: string | undefined;
95
+ contradiction?: string | undefined;
96
+ worktree?: string | undefined;
97
+ answer?: string | undefined;
98
+ } | undefined;
93
99
  triggeringEvidenceId?: string | undefined;
94
- triggeringQuestionId?: string | undefined;
95
- triggeringAnswerId?: string | undefined;
96
- triggeringContradictionId?: string | undefined;
97
- triggeringWorktreeId?: string | undefined;
98
100
  beliefNodeId?: string | undefined;
101
+ worktreeId?: string | undefined;
99
102
  trustedBypassAccessCheck?: boolean | undefined;
100
103
  opinion?: {
101
104
  belief: number;
@@ -103,28 +106,28 @@ declare const modulateConfidenceInputSchema: z.ZodEffects<z.ZodObject<{
103
106
  disbelief: number;
104
107
  uncertainty: number;
105
108
  } | undefined;
106
- provenance?: {
107
- evidence?: string | undefined;
108
- question?: string | undefined;
109
- contradiction?: string | undefined;
110
- worktree?: string | undefined;
111
- answer?: string | undefined;
112
- } | undefined;
109
+ triggeringQuestionId?: string | undefined;
110
+ triggeringAnswerId?: string | undefined;
111
+ triggeringContradictionId?: string | undefined;
112
+ triggeringWorktreeId?: string | undefined;
113
113
  }>, {
114
114
  rationale: string;
115
- trigger: "evidence_added" | "evidence_removed" | "contradiction_detected" | "contradiction_resolved" | "agent_assessment" | "worktree_outcome" | "worktree_completed" | "fusion" | "discount" | "deduction" | "answer_recorded" | "backfill_synthetic";
115
+ trigger: "evidence_added" | "evidence_removed" | "contradiction_detected" | "contradiction_resolved" | "agent_assessment" | "worktree_outcome" | "worktree_completed" | "fusion" | "discount" | "deduction" | "backfill_synthetic" | "answer_recorded";
116
116
  belief?: number | undefined;
117
117
  baseRate?: number | undefined;
118
118
  nodeId?: string | undefined;
119
119
  disbelief?: number | undefined;
120
120
  uncertainty?: number | undefined;
121
- worktreeId?: string | undefined;
121
+ provenance?: {
122
+ evidence?: string | undefined;
123
+ question?: string | undefined;
124
+ contradiction?: string | undefined;
125
+ worktree?: string | undefined;
126
+ answer?: string | undefined;
127
+ } | undefined;
122
128
  triggeringEvidenceId?: string | undefined;
123
- triggeringQuestionId?: string | undefined;
124
- triggeringAnswerId?: string | undefined;
125
- triggeringContradictionId?: string | undefined;
126
- triggeringWorktreeId?: string | undefined;
127
129
  beliefNodeId?: string | undefined;
130
+ worktreeId?: string | undefined;
128
131
  trustedBypassAccessCheck?: boolean | undefined;
129
132
  opinion?: {
130
133
  belief: number;
@@ -132,28 +135,28 @@ declare const modulateConfidenceInputSchema: z.ZodEffects<z.ZodObject<{
132
135
  disbelief: number;
133
136
  uncertainty: number;
134
137
  } | undefined;
135
- provenance?: {
136
- evidence?: string | undefined;
137
- question?: string | undefined;
138
- contradiction?: string | undefined;
139
- worktree?: string | undefined;
140
- answer?: string | undefined;
141
- } | undefined;
138
+ triggeringQuestionId?: string | undefined;
139
+ triggeringAnswerId?: string | undefined;
140
+ triggeringContradictionId?: string | undefined;
141
+ triggeringWorktreeId?: string | undefined;
142
142
  }, {
143
143
  rationale: string;
144
- trigger: "evidence_added" | "evidence_removed" | "contradiction_detected" | "contradiction_resolved" | "agent_assessment" | "worktree_outcome" | "worktree_completed" | "fusion" | "discount" | "deduction" | "answer_recorded" | "backfill_synthetic";
144
+ trigger: "evidence_added" | "evidence_removed" | "contradiction_detected" | "contradiction_resolved" | "agent_assessment" | "worktree_outcome" | "worktree_completed" | "fusion" | "discount" | "deduction" | "backfill_synthetic" | "answer_recorded";
145
145
  belief?: number | undefined;
146
146
  baseRate?: number | undefined;
147
147
  nodeId?: string | undefined;
148
148
  disbelief?: number | undefined;
149
149
  uncertainty?: number | undefined;
150
- worktreeId?: string | undefined;
150
+ provenance?: {
151
+ evidence?: string | undefined;
152
+ question?: string | undefined;
153
+ contradiction?: string | undefined;
154
+ worktree?: string | undefined;
155
+ answer?: string | undefined;
156
+ } | undefined;
151
157
  triggeringEvidenceId?: string | undefined;
152
- triggeringQuestionId?: string | undefined;
153
- triggeringAnswerId?: string | undefined;
154
- triggeringContradictionId?: string | undefined;
155
- triggeringWorktreeId?: string | undefined;
156
158
  beliefNodeId?: string | undefined;
159
+ worktreeId?: string | undefined;
157
160
  trustedBypassAccessCheck?: boolean | undefined;
158
161
  opinion?: {
159
162
  belief: number;
@@ -161,30 +164,30 @@ declare const modulateConfidenceInputSchema: z.ZodEffects<z.ZodObject<{
161
164
  disbelief: number;
162
165
  uncertainty: number;
163
166
  } | undefined;
164
- provenance?: {
165
- evidence?: string | undefined;
166
- question?: string | undefined;
167
- contradiction?: string | undefined;
168
- worktree?: string | undefined;
169
- answer?: string | undefined;
170
- } | undefined;
167
+ triggeringQuestionId?: string | undefined;
168
+ triggeringAnswerId?: string | undefined;
169
+ triggeringContradictionId?: string | undefined;
170
+ triggeringWorktreeId?: string | undefined;
171
171
  }>;
172
- type ModulateConfidenceProjectionInput = z.infer<typeof modulateConfidenceInputSchema>;
173
- declare const modulateConfidenceProjection: ProjectionDef<{
172
+ type AppendSlScoringProjectionInput = z.infer<typeof appendSlScoringInputSchema>;
173
+ declare const appendSlScoringProjection: ProjectionDef<{
174
174
  rationale: string;
175
- trigger: "evidence_added" | "evidence_removed" | "contradiction_detected" | "contradiction_resolved" | "agent_assessment" | "worktree_outcome" | "worktree_completed" | "fusion" | "discount" | "deduction" | "answer_recorded" | "backfill_synthetic";
175
+ trigger: "evidence_added" | "evidence_removed" | "contradiction_detected" | "contradiction_resolved" | "agent_assessment" | "worktree_outcome" | "worktree_completed" | "fusion" | "discount" | "deduction" | "backfill_synthetic" | "answer_recorded";
176
176
  belief?: number | undefined;
177
177
  baseRate?: number | undefined;
178
178
  nodeId?: string | undefined;
179
179
  disbelief?: number | undefined;
180
180
  uncertainty?: number | undefined;
181
- worktreeId?: string | undefined;
181
+ provenance?: {
182
+ evidence?: string | undefined;
183
+ question?: string | undefined;
184
+ contradiction?: string | undefined;
185
+ worktree?: string | undefined;
186
+ answer?: string | undefined;
187
+ } | undefined;
182
188
  triggeringEvidenceId?: string | undefined;
183
- triggeringQuestionId?: string | undefined;
184
- triggeringAnswerId?: string | undefined;
185
- triggeringContradictionId?: string | undefined;
186
- triggeringWorktreeId?: string | undefined;
187
189
  beliefNodeId?: string | undefined;
190
+ worktreeId?: string | undefined;
188
191
  trustedBypassAccessCheck?: boolean | undefined;
189
192
  opinion?: {
190
193
  belief: number;
@@ -192,13 +195,10 @@ declare const modulateConfidenceProjection: ProjectionDef<{
192
195
  disbelief: number;
193
196
  uncertainty: number;
194
197
  } | undefined;
195
- provenance?: {
196
- evidence?: string | undefined;
197
- question?: string | undefined;
198
- contradiction?: string | undefined;
199
- worktree?: string | undefined;
200
- answer?: string | undefined;
201
- } | undefined;
198
+ triggeringQuestionId?: string | undefined;
199
+ triggeringAnswerId?: string | undefined;
200
+ triggeringContradictionId?: string | undefined;
201
+ triggeringWorktreeId?: string | undefined;
202
202
  }, {
203
203
  nodeId: string;
204
204
  worktreeId: string | undefined;
@@ -216,4 +216,4 @@ declare const modulateConfidenceProjection: ProjectionDef<{
216
216
  trustedBypassAccessCheck: boolean;
217
217
  }>;
218
218
 
219
- export { type ModulateConfidenceProjectionInput, modulateConfidenceInputSchema, modulateConfidenceProjection };
219
+ export { type AppendSlScoringProjectionInput, appendSlScoringInputSchema, appendSlScoringProjection };
@@ -1,14 +1,14 @@
1
1
  import { v } from 'convex/values';
2
2
  import { z } from 'zod';
3
3
 
4
- // src/projections/modulate-confidence.projection.ts
4
+ // src/projections/append-sl-scoring.projection.ts
5
5
 
6
6
  // src/projections/projection-dsl.ts
7
7
  function defineProjection(def) {
8
8
  return def;
9
9
  }
10
10
 
11
- // src/projections/modulate-confidence.projection.ts
11
+ // src/projections/append-sl-scoring.projection.ts
12
12
  var confidenceTriggerSchema = z.enum([
13
13
  "evidence_added",
14
14
  "evidence_removed",
@@ -36,7 +36,7 @@ var slOpinionProjectionSchema = z.object({
36
36
  uncertainty: z.number(),
37
37
  baseRate: z.number()
38
38
  });
39
- var modulateConfidenceInputObjectSchema = z.object({
39
+ var appendSlScoringInputObjectSchema = z.object({
40
40
  nodeId: z.string().optional(),
41
41
  beliefNodeId: z.string().optional(),
42
42
  worktreeId: z.string().optional(),
@@ -55,23 +55,23 @@ var modulateConfidenceInputObjectSchema = z.object({
55
55
  rationale: z.string(),
56
56
  trustedBypassAccessCheck: z.boolean().optional()
57
57
  });
58
- var modulateConfidenceInputSchema = modulateConfidenceInputObjectSchema.superRefine((input, ctx) => {
58
+ var appendSlScoringInputSchema = appendSlScoringInputObjectSchema.superRefine((input, ctx) => {
59
59
  if (hasProvenance(input)) {
60
60
  return;
61
61
  }
62
62
  ctx.addIssue({
63
63
  code: z.ZodIssueCode.custom,
64
- message: "modulate_confidence requires evidence, question, answer, contradiction, or worktree provenance",
64
+ message: "append_sl_scoring requires evidence, question, answer, contradiction, or worktree provenance",
65
65
  path: ["provenance"]
66
66
  });
67
67
  });
68
- var modulateConfidenceProjection = defineProjection({
69
- contractName: "modulate_confidence",
70
- inputSchema: modulateConfidenceInputSchema,
68
+ var appendSlScoringProjection = defineProjection({
69
+ contractName: "append_sl_scoring",
70
+ inputSchema: appendSlScoringInputSchema,
71
71
  project: (input) => {
72
72
  const nodeId = input.beliefNodeId ?? input.nodeId;
73
73
  if (!nodeId) {
74
- throw new Error("modulate_confidence requires beliefNodeId or nodeId");
74
+ throw new Error("append_sl_scoring requires beliefNodeId or nodeId");
75
75
  }
76
76
  const opinion = input.opinion ?? {
77
77
  belief: requireNumber(input.belief, "belief"),
@@ -128,14 +128,14 @@ var modulateConfidenceProjection = defineProjection({
128
128
  });
129
129
  function requireNumber(value, field) {
130
130
  if (value === void 0) {
131
- throw new Error(`modulate_confidence requires ${field}`);
131
+ throw new Error(`append_sl_scoring requires ${field}`);
132
132
  }
133
133
  return value;
134
134
  }
135
135
  function assertProvenance(input) {
136
136
  if (!hasProvenance(input)) {
137
137
  throw new Error(
138
- "modulate_confidence requires evidence, question, answer, contradiction, or worktree provenance"
138
+ "append_sl_scoring requires evidence, question, answer, contradiction, or worktree provenance"
139
139
  );
140
140
  }
141
141
  }
@@ -143,6 +143,6 @@ function hasProvenance(input) {
143
143
  return input.trigger === "backfill_synthetic" || Boolean(input.provenance && Object.values(input.provenance).some(Boolean)) || Boolean(input.triggeringEvidenceId) || Boolean(input.triggeringQuestionId) || Boolean(input.triggeringAnswerId) || Boolean(input.triggeringContradictionId) || Boolean(input.triggeringWorktreeId);
144
144
  }
145
145
 
146
- export { modulateConfidenceInputSchema, modulateConfidenceProjection };
147
- //# sourceMappingURL=modulate-confidence.projection.js.map
148
- //# sourceMappingURL=modulate-confidence.projection.js.map
146
+ export { appendSlScoringInputSchema, appendSlScoringProjection };
147
+ //# sourceMappingURL=append-sl-scoring.projection.js.map
148
+ //# sourceMappingURL=append-sl-scoring.projection.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/projections/projection-dsl.ts","../../src/projections/append-sl-scoring.projection.ts"],"names":[],"mappings":"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","file":"append-sl-scoring.projection.js","sourcesContent":["import type { z } from \"zod\";\n\nexport interface ProjectionDef<TInput, TConvexArgs> {\n contractName: string;\n inputSchema: z.ZodSchema<TInput>;\n project: (input: TInput) => TConvexArgs;\n convexArgsValidator: unknown;\n}\n\nexport function defineProjection<I, C>(\n def: ProjectionDef<I, C>\n): ProjectionDef<I, C> {\n return def;\n}\n","import { v } from \"convex/values\";\nimport { z } from \"zod\";\nimport { defineProjection } from \"./projection-dsl.js\";\n\nconst confidenceTriggerSchema = z.enum([\n \"evidence_added\",\n \"evidence_removed\",\n \"contradiction_resolved\",\n \"agent_assessment\",\n \"worktree_outcome\",\n \"worktree_completed\",\n \"contradiction_detected\",\n \"answer_recorded\",\n \"fusion\",\n \"discount\",\n \"deduction\",\n \"backfill_synthetic\",\n]);\n\nconst provenanceSchema = z.object({\n evidence: z.string().optional(),\n question: z.string().optional(),\n answer: z.string().optional(),\n contradiction: z.string().optional(),\n worktree: z.string().optional(),\n});\n\nconst slOpinionProjectionSchema = z.object({\n belief: z.number(),\n disbelief: z.number(),\n uncertainty: z.number(),\n baseRate: z.number(),\n});\n\nconst appendSlScoringInputObjectSchema = z.object({\n nodeId: z.string().optional(),\n beliefNodeId: z.string().optional(),\n worktreeId: z.string().optional(),\n opinion: slOpinionProjectionSchema.optional(),\n belief: z.number().optional(),\n disbelief: z.number().optional(),\n uncertainty: z.number().optional(),\n baseRate: z.number().optional(),\n trigger: confidenceTriggerSchema,\n provenance: provenanceSchema.optional(),\n triggeringEvidenceId: z.string().optional(),\n triggeringQuestionId: z.string().optional(),\n triggeringAnswerId: z.string().optional(),\n triggeringContradictionId: z.string().optional(),\n triggeringWorktreeId: z.string().optional(),\n rationale: z.string(),\n trustedBypassAccessCheck: z.boolean().optional(),\n});\n\nexport const appendSlScoringInputSchema =\n appendSlScoringInputObjectSchema.superRefine((input, ctx) => {\n if (hasProvenance(input)) {\n return;\n }\n\n ctx.addIssue({\n code: z.ZodIssueCode.custom,\n message:\n \"append_sl_scoring requires evidence, question, answer, contradiction, or worktree provenance\",\n path: [\"provenance\"],\n });\n });\n\nexport type AppendSlScoringProjectionInput = z.infer<\n typeof appendSlScoringInputSchema\n>;\n\nexport const appendSlScoringProjection = defineProjection({\n contractName: \"append_sl_scoring\",\n inputSchema: appendSlScoringInputSchema,\n project: (input: AppendSlScoringProjectionInput) => {\n const nodeId = input.beliefNodeId ?? input.nodeId;\n if (!nodeId) {\n throw new Error(\"append_sl_scoring requires beliefNodeId or nodeId\");\n }\n\n const opinion = input.opinion ?? {\n belief: requireNumber(input.belief, \"belief\"),\n disbelief: requireNumber(input.disbelief, \"disbelief\"),\n uncertainty: requireNumber(input.uncertainty, \"uncertainty\"),\n baseRate: requireNumber(input.baseRate, \"baseRate\"),\n };\n assertProvenance(input);\n\n return {\n nodeId,\n worktreeId: input.worktreeId,\n belief: opinion.belief,\n disbelief: opinion.disbelief,\n uncertainty: opinion.uncertainty,\n baseRate: opinion.baseRate,\n trigger:\n input.trigger === \"answer_recorded\"\n ? \"agent_assessment\"\n : input.trigger,\n triggeringEvidenceId:\n input.provenance?.evidence ?? input.triggeringEvidenceId,\n triggeringQuestionId:\n input.provenance?.question ?? input.triggeringQuestionId,\n triggeringAnswerId: input.provenance?.answer ?? input.triggeringAnswerId,\n triggeringContradictionId:\n input.provenance?.contradiction ?? input.triggeringContradictionId,\n triggeringWorktreeId:\n input.provenance?.worktree ?? input.triggeringWorktreeId,\n rationale: input.rationale,\n trustedBypassAccessCheck: input.trustedBypassAccessCheck ?? true,\n };\n },\n convexArgsValidator: v.object({\n nodeId: v.string(),\n worktreeId: v.optional(v.string()),\n belief: v.number(),\n disbelief: v.number(),\n uncertainty: v.number(),\n baseRate: v.number(),\n trigger: v.union(\n v.literal(\"evidence_added\"),\n v.literal(\"evidence_removed\"),\n v.literal(\"worktree_completed\"),\n v.literal(\"contradiction_detected\"),\n v.literal(\"contradiction_resolved\"),\n v.literal(\"agent_assessment\"),\n v.literal(\"worktree_outcome\"),\n v.literal(\"fusion\"),\n v.literal(\"discount\"),\n v.literal(\"deduction\"),\n v.literal(\"backfill_synthetic\"),\n ),\n triggeringEvidenceId: v.optional(v.string()),\n triggeringQuestionId: v.optional(v.string()),\n triggeringAnswerId: v.optional(v.string()),\n triggeringContradictionId: v.optional(v.string()),\n triggeringWorktreeId: v.optional(v.string()),\n rationale: v.string(),\n trustedBypassAccessCheck: v.optional(v.boolean()),\n }),\n});\n\nfunction requireNumber(value: number | undefined, field: string): number {\n if (value === undefined) {\n throw new Error(`append_sl_scoring requires ${field}`);\n }\n return value;\n}\n\nfunction assertProvenance(input: AppendSlScoringProjectionInput): void {\n if (!hasProvenance(input)) {\n throw new Error(\n \"append_sl_scoring requires evidence, question, answer, contradiction, or worktree provenance\",\n );\n }\n}\n\nfunction hasProvenance(input: AppendSlScoringProjectionInput): boolean {\n return (\n input.trigger === \"backfill_synthetic\" ||\n Boolean(input.provenance && Object.values(input.provenance).some(Boolean)) ||\n Boolean(input.triggeringEvidenceId) ||\n Boolean(input.triggeringQuestionId) ||\n Boolean(input.triggeringAnswerId) ||\n Boolean(input.triggeringContradictionId) ||\n Boolean(input.triggeringWorktreeId)\n );\n}\n"]}