@lucern/contracts 1.0.42 → 1.0.44

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.
@@ -12,15 +12,15 @@ var KERNEL_SCHEMA_TABLES = {
12
12
  "beliefEvidenceLinks": defineTable(v.object({ "beliefId": v.string(), "confidence": v.optional(v.number()), "createdAt": v.number(), "createdBy": v.string(), "insightId": v.string(), "rationale": v.optional(v.string()), "relation": v.union(v.literal("supports"), v.literal("contradicts")), "status": v.optional(v.union(v.literal("suggested"), v.literal("approved"), v.literal("dismissed"))) })).index("by_beliefId", ["beliefId"]).index("by_insightId", ["insightId"]).index("by_relation", ["beliefId", "relation"]).index("by_status", ["status"]),
13
13
  "beliefHistory": defineTable(v.object({ "beliefId": v.string(), "justification": v.optional(v.string()), "newStatus": v.string(), "previousStatus": v.optional(v.string()), "timestamp": v.number(), "triggeredByEvidenceIds": v.optional(v.array(v.string())), "triggeredByUserId": v.optional(v.string()) })).index("by_beliefId", ["beliefId"]),
14
14
  "beliefScenarios": defineTable(v.object({ "assumedState": v.union(v.literal("false"), v.literal("true"), v.literal("weakened"), v.literal("strengthened")), "cascadeEffects": v.array(v.object({ "beliefId": v.string(), "beliefText": v.string(), "currentConfidence": v.string(), "projectedConfidence": v.string(), "reason": v.string() })), "createdAt": v.number(), "createdBy": v.string(), "description": v.string(), "keyInsights": v.array(v.string()), "pillarImpacts": v.optional(v.array(v.object({ "impactLevel": v.string(), "pillar": v.string(), "reason": v.string() }))), "recommendedActions": v.optional(v.array(v.object({ "action": v.string(), "priority": v.string(), "rationale": v.string() }))), "scenarioType": v.union(v.literal("falsification"), v.literal("strengthening"), v.literal("alternative"), v.literal("collapse"), v.literal("critical_path")), "sourceChatId": v.optional(v.id("chats")), "sourceMessageId": v.optional(v.id("messages")), "sourceWorktreeId": v.optional(v.string()), "testedBeliefId": v.string(), "thesisImpact": v.union(v.literal("thesis_fails"), v.literal("thesis_weakens"), v.literal("pillar_fails"), v.literal("localized"), v.literal("minimal")), "title": v.string(), "topicId": v.optional(v.string()) })).index("by_topicId", ["topicId"]).index("by_topic_scenarioType", ["topicId", "scenarioType"]).index("by_topic_thesisImpact", ["topicId", "thesisImpact"]).index("by_testedBelief", ["testedBeliefId"]).index("by_sourceWorktreeId", ["sourceWorktreeId"]),
15
- "beliefVotes": defineTable(v.object({ "beliefId": v.id("epistemicNodes"), "comment": v.optional(v.string()), "confidence": v.number(), "createdAt": v.number(), "createdBy": v.string(), "decisionEventId": v.id("decisionEvents"), "domainCategory": v.optional(v.string()), "effectiveWeight": v.optional(v.number()), "isHingeVote": v.optional(v.boolean()), "policyTraceId": v.optional(v.string()), "probability": v.optional(v.number()), "stakeholderGroupId": v.optional(v.id("stakeholderGroups")), "status": v.union(v.literal("active"), v.literal("superseded"), v.literal("withdrawn")), "supersededByVoteId": v.optional(v.id("beliefVotes")), "supersedesVoteId": v.optional(v.id("beliefVotes")), "tenantId": v.optional(v.string()), "topicId": v.optional(v.string()), "updatedAt": v.number(), "voteDirection": v.union(v.literal("support"), v.literal("oppose"), v.literal("abstain"), v.literal("uncertain")), "voterPrincipalId": v.string(), "voterRole": v.optional(v.union(v.literal("owner"), v.literal("facilitator"), v.literal("decision_maker"), v.literal("advisor"), v.literal("observer"), v.literal("recorder"))), "voterUserId": v.optional(v.string()), "weightingInput": v.optional(v.record(v.string(), v.any())), "weightingModelVersion": v.string(), "workspaceId": v.optional(v.string()) })).index("by_decisionEventId", ["decisionEventId"]).index("by_topicId", ["topicId"]).index("by_decision_belief", ["decisionEventId", "beliefId"]).index("by_decision_belief_voter", ["decisionEventId", "beliefId", "voterPrincipalId"]).index("by_decision_status", ["decisionEventId", "status"]).index("by_supersedesVoteId", ["supersedesVoteId"]),
15
+ "beliefVotes": defineTable(v.object({ "beliefId": v.string(), "comment": v.optional(v.string()), "confidence": v.number(), "createdAt": v.number(), "createdBy": v.string(), "decisionEventId": v.id("decisionEvents"), "domainCategory": v.optional(v.string()), "effectiveWeight": v.optional(v.number()), "isHingeVote": v.optional(v.boolean()), "policyTraceId": v.optional(v.string()), "probability": v.optional(v.number()), "stakeholderGroupId": v.optional(v.id("stakeholderGroups")), "status": v.union(v.literal("active"), v.literal("superseded"), v.literal("withdrawn")), "supersededByVoteId": v.optional(v.id("beliefVotes")), "supersedesVoteId": v.optional(v.id("beliefVotes")), "tenantId": v.optional(v.string()), "topicId": v.optional(v.string()), "updatedAt": v.number(), "voteDirection": v.union(v.literal("support"), v.literal("oppose"), v.literal("abstain"), v.literal("uncertain")), "voterPrincipalId": v.string(), "voterRole": v.optional(v.union(v.literal("owner"), v.literal("facilitator"), v.literal("decision_maker"), v.literal("advisor"), v.literal("observer"), v.literal("recorder"))), "voterUserId": v.optional(v.string()), "weightingInput": v.optional(v.record(v.string(), v.any())), "weightingModelVersion": v.string(), "workspaceId": v.optional(v.string()) })).index("by_decisionEventId", ["decisionEventId"]).index("by_topicId", ["topicId"]).index("by_decision_belief", ["decisionEventId", "beliefId"]).index("by_decision_belief_voter", ["decisionEventId", "beliefId", "voterPrincipalId"]).index("by_decision_status", ["decisionEventId", "status"]).index("by_supersedesVoteId", ["supersedesVoteId"]),
16
16
  "calibrationScores": defineTable(v.object({ "createdAt": v.number(), "decisionEventId": v.optional(v.id("decisionEvents")), "inputCount": v.optional(v.number()), "metadata": v.optional(v.record(v.string(), v.any())), "principalId": v.string(), "score": v.number(), "scoreType": v.union(v.literal("confidence_alignment"), v.literal("outcome_accuracy"), v.literal("weighting_alignment"), v.literal("readiness_alignment"), v.literal("brier")), "snapshotId": v.optional(v.id("decisionSnapshots")), "tenantId": v.optional(v.string()), "topicId": v.optional(v.string()), "windowEndAt": v.optional(v.number()), "windowStartAt": v.optional(v.number()), "workspaceId": v.optional(v.string()) })).index("by_principal_createdAt", ["principalId", "createdAt"]).index("by_topicId", ["topicId"]).index("by_topic_principal_createdAt", ["topicId", "principalId", "createdAt"]).index("by_decisionEventId", ["decisionEventId"]).index("by_snapshotId", ["snapshotId"]).index("by_tenant_createdAt", ["tenantId", "createdAt"]),
17
17
  "contractEvaluations": defineTable(v.object({ "beliefConfidenceId": v.optional(v.id("beliefConfidence")), "beliefNodeId": v.string(), "confidenceAfter": v.optional(v.number()), "confidenceBefore": v.optional(v.number()), "confidenceDelta": v.optional(v.number()), "contractId": v.string(), "evaluatedAt": v.number(), "evaluator": v.string(), "modulationApplied": v.boolean(), "modulationRationale": v.optional(v.string()), "result": v.union(v.literal("confirmed"), v.literal("disconfirmed"), v.literal("partial"), v.literal("expired"), v.literal("error"), v.literal("inconclusive")), "resultData": v.optional(v.union(v.string(), v.number(), v.boolean(), v.null(), v.record(v.string(), v.any()), v.array(v.any()))), "topicId": v.optional(v.string()), "trigger": v.string() })).index("by_contract", ["contractId"]).index("by_contract_time", ["contractId", "evaluatedAt"]).index("by_belief", ["beliefNodeId"]).index("by_result", ["result"]).index("by_time", ["evaluatedAt"]).index("by_topic_time", ["topicId", "evaluatedAt"]),
18
18
  "contradictions": defineTable(v.object({ "aiAnalysis": v.optional(v.object({ "analyzedAt": v.number(), "confidenceInAnalysis": v.number(), "likelyExplanation": v.string(), "suggestedResolution": v.string(), "summary": v.string() })), "beliefId": v.string(), "blockingReason": v.optional(v.string()), "blocksDecisionFinalization": v.optional(v.boolean()), "contradictingInsightIds": v.array(v.string()), "createdBy": v.string(), "detectedAt": v.number(), "detectionMethod": v.optional(v.union(v.literal("semantic"), v.literal("keyword"), v.literal("manual"), v.literal("agent"))), "globalId": v.string(), "lastReviewedAt": v.optional(v.number()), "resolution": v.optional(v.object({ "beliefUpdate": v.string(), "reasoning": v.string(), "resolvedBy": v.string(), "verdict": v.string() })), "resolutionStatus": v.union(v.literal("unresolved"), v.literal("investigating"), v.literal("accepted_as_permanent"), v.literal("resolved_by_fork"), v.literal("resolved_by_evidence"), v.literal("resolved_by_reinterpretation"), v.literal("superseded")), "resolutionWorktreeId": v.optional(v.string()), "resolvedAt": v.optional(v.number()), "resultingBeliefIds": v.optional(v.array(v.string())), "severity": v.union(v.literal("critical"), v.literal("significant"), v.literal("minor")), "similarityScore": v.optional(v.number()), "status": v.optional(v.union(v.literal("unresolved"), v.literal("investigating"), v.literal("resolved_support"), v.literal("resolved_contra"), v.literal("belief_forked"))), "supportingInsightIds": v.array(v.string()), "topicId": v.optional(v.string()) })).index("by_globalId", ["globalId"]).index("by_topicId", ["topicId"]).index("by_topic_resolutionStatus", ["topicId", "resolutionStatus"]).index("by_topic_status", ["topicId", "status"]).index("by_topic_severity", ["topicId", "severity"]).index("by_topic_blocking", ["topicId", "blocksDecisionFinalization"]).index("by_beliefId", ["beliefId"]),
19
- "crossProjectConnections": defineTable(v.object({ "acceptedEdgeId": v.optional(v.id("epistemicEdges")), "createdAt": v.number(), "decidedAt": v.optional(v.number()), "decision": v.union(v.literal("pending"), v.literal("accepted"), v.literal("declined")), "declineCategory": v.optional(v.union(v.literal("not_relevant"), v.literal("too_generic"), v.literal("already_known"), v.literal("different_context"), v.literal("wrong_relationship"), v.literal("premature"), v.literal("other"))), "declineReason": v.optional(v.string()), "matchSignals": v.object({ "beliefTextSimilarity": v.number(), "ontologyOverlap": v.boolean(), "sharedFunctions": v.optional(v.array(v.string())), "sharedThemeNames": v.optional(v.array(v.string())), "sharedValueChains": v.optional(v.array(v.string())), "themeOverlap": v.boolean(), "themeSimilarity": v.optional(v.number()) }), "rationale": v.string(), "semanticSimilarity": v.number(), "sourceNodeId": v.id("epistemicNodes"), "sourceProjectId": v.optional(v.string()), "sourceTopicId": v.optional(v.id("topics")), "suggestedEdgeType": v.string(), "suggestedWeight": v.optional(v.number()), "surfacedDuring": v.union(v.literal("worktree_clustering"), v.literal("chat"), v.literal("morning_brief"), v.literal("manual")), "targetNodeId": v.id("epistemicNodes"), "targetProjectId": v.optional(v.string()), "targetTopicId": v.optional(v.id("topics")), "userId": v.string(), "worktreeId": v.optional(v.string()) })).index("by_source_project", ["sourceProjectId"]).index("by_sourceTopicId", ["sourceTopicId"]).index("by_target_project", ["targetProjectId"]).index("by_targetTopicId", ["targetTopicId"]).index("by_source_node", ["sourceNodeId"]).index("by_decision", ["decision"]).index("by_user_decision", ["userId", "decision"]),
19
+ "crossProjectConnections": defineTable(v.object({ "acceptedEdgeId": v.optional(v.string()), "createdAt": v.number(), "decidedAt": v.optional(v.number()), "decision": v.union(v.literal("pending"), v.literal("accepted"), v.literal("declined")), "declineCategory": v.optional(v.union(v.literal("not_relevant"), v.literal("too_generic"), v.literal("already_known"), v.literal("different_context"), v.literal("wrong_relationship"), v.literal("premature"), v.literal("other"))), "declineReason": v.optional(v.string()), "matchSignals": v.object({ "beliefTextSimilarity": v.number(), "ontologyOverlap": v.boolean(), "sharedFunctions": v.optional(v.array(v.string())), "sharedThemeNames": v.optional(v.array(v.string())), "sharedValueChains": v.optional(v.array(v.string())), "themeOverlap": v.boolean(), "themeSimilarity": v.optional(v.number()) }), "rationale": v.string(), "semanticSimilarity": v.number(), "sourceNodeId": v.string(), "sourceProjectId": v.optional(v.string()), "sourceTopicId": v.optional(v.string()), "suggestedEdgeType": v.string(), "suggestedWeight": v.optional(v.number()), "surfacedDuring": v.union(v.literal("worktree_clustering"), v.literal("chat"), v.literal("morning_brief"), v.literal("manual")), "targetNodeId": v.string(), "targetProjectId": v.optional(v.string()), "targetTopicId": v.optional(v.string()), "userId": v.string(), "worktreeId": v.optional(v.string()) })).index("by_source_project", ["sourceProjectId"]).index("by_sourceTopicId", ["sourceTopicId"]).index("by_target_project", ["targetProjectId"]).index("by_targetTopicId", ["targetTopicId"]).index("by_source_node", ["sourceNodeId"]).index("by_decision", ["decision"]).index("by_user_decision", ["userId", "decision"]),
20
20
  "decisionComputedSummaries": defineTable(v.object({ "computedAt": v.number(), "computedBy": v.optional(v.string()), "createdAt": v.number(), "decisionEventId": v.id("decisionEvents"), "inputHash": v.optional(v.string()), "payload": v.record(v.string(), v.any()), "policyTraceId": v.optional(v.string()), "schemaVersion": v.string(), "status": v.union(v.literal("draft"), v.literal("current"), v.literal("superseded")), "summaryKind": v.union(v.literal("contradiction_map"), v.literal("hinge_fragility"), v.literal("certainty_map"), v.literal("unknown_concentration"), v.literal("risk_ledger_draft"), v.literal("readiness_breakdown"), v.literal("quorum_suggestion"), v.literal("vote_weighting"), v.literal("cross_group_divergence"), v.literal("cross_theme_concentration")), "supersededBySummaryId": v.optional(v.id("decisionComputedSummaries")), "tenantId": v.optional(v.string()), "topicId": v.optional(v.string()), "updatedAt": v.number(), "workspaceId": v.optional(v.string()) })).index("by_decisionEventId", ["decisionEventId"]).index("by_topicId", ["topicId"]).index("by_topic_kind_createdAt", ["topicId", "summaryKind", "computedAt"]).index("by_decision_kind_createdAt", ["decisionEventId", "summaryKind", "computedAt"]).index("by_decision_status", ["decisionEventId", "status"]),
21
21
  "decisionEvents": defineTable(v.object({ "advisoryReadinessFactors": v.optional(v.record(v.string(), v.any())), "advisoryReadinessScore": v.optional(v.number()), "anonymizationClass": v.optional(v.union(v.literal("none"), v.literal("standard"), v.literal("strict"))), "audienceLabel": v.optional(v.string()), "createdAt": v.number(), "createdBy": v.string(), "eventKey": v.string(), "eventType": v.union(v.literal("investment"), v.literal("deal"), v.literal("portfolio"), v.literal("strategy"), v.literal("operations"), v.literal("other")), "exportClass": v.optional(v.union(v.literal("public_safe"), v.literal("client_safe"), v.literal("internal_only"))), "finalizedAt": v.optional(v.number()), "metadata": v.optional(v.record(v.string(), v.any())), "outcome": v.optional(v.union(v.literal("approve"), v.literal("conditional"), v.literal("defer"), v.literal("reject"), v.literal("reopen_on_trigger"))), "ownerPrincipalId": v.optional(v.string()), "policyTags": v.optional(v.array(v.string())), "policyTraceId": v.optional(v.string()), "projectId": v.optional(v.string()), "riskConfirmedAt": v.optional(v.number()), "scheduledAt": v.optional(v.number()), "sensitivityTier": v.optional(v.union(v.literal("low"), v.literal("medium"), v.literal("high"))), "snapshotLockedAt": v.optional(v.number()), "startedAt": v.optional(v.number()), "status": v.union(v.literal("draft"), v.literal("pre_ic_preparing"), v.literal("pre_ic_ready"), v.literal("ic_in_session"), v.literal("risk_confirmed"), v.literal("snapshot_locked"), v.literal("finalized"), v.literal("reopened"), v.literal("superseded")), "summary": v.optional(v.string()), "supersededByDecisionEventId": v.optional(v.id("decisionEvents")), "supersedesDecisionEventId": v.optional(v.id("decisionEvents")), "tenantId": v.optional(v.string()), "title": v.string(), "topicId": v.optional(v.string()), "updatedAt": v.number(), "updatedBy": v.optional(v.string()), "weightingModelVersion": v.string(), "weightingParameters": v.optional(v.record(v.string(), v.any())), "workspaceId": v.optional(v.string()) })).index("by_eventKey", ["eventKey"]).index("by_topicId", ["topicId"]).index("by_topic_status", ["topicId", "status"]).index("by_topic_updatedAt", ["topicId", "updatedAt"]).index("by_status_scheduledAt", ["status", "scheduledAt"]).index("by_supersedesDecisionEventId", ["supersedesDecisionEventId"]).index("by_supersededByDecisionEventId", ["supersededByDecisionEventId"]),
22
22
  "decisionParticipants": defineTable(v.object({ "calibrationWeight": v.optional(v.number()), "createdAt": v.number(), "createdBy": v.string(), "decisionEventId": v.id("decisionEvents"), "metadata": v.optional(v.record(v.string(), v.any())), "principalId": v.string(), "role": v.union(v.literal("owner"), v.literal("facilitator"), v.literal("decision_maker"), v.literal("advisor"), v.literal("observer"), v.literal("recorder")), "stakeholderGroupId": v.optional(v.id("stakeholderGroups")), "status": v.union(v.literal("active"), v.literal("invited"), v.literal("removed")), "tenantId": v.optional(v.string()), "topicId": v.optional(v.string()), "updatedAt": v.number(), "userId": v.optional(v.string()), "weight": v.optional(v.number()), "workspaceId": v.optional(v.string()) })).index("by_decisionEventId", ["decisionEventId"]).index("by_topicId", ["topicId"]).index("by_decision_principal", ["decisionEventId", "principalId"]).index("by_decision_role", ["decisionEventId", "role"]).index("by_group", ["stakeholderGroupId"]),
23
- "decisionRiskLedger": defineTable(v.object({ "confirmationMetadata": v.optional(v.record(v.string(), v.any())), "confirmedAt": v.optional(v.number()), "confirmedBy": v.optional(v.string()), "createdAt": v.number(), "createdBy": v.string(), "decisionEventId": v.id("decisionEvents"), "impactBand": v.union(v.literal("very_low"), v.literal("low"), v.literal("medium"), v.literal("high"), v.literal("very_high")), "metadata": v.optional(v.record(v.string(), v.any())), "monitoringPlan": v.optional(v.string()), "ownerPrincipalId": v.optional(v.string()), "probabilityBand": v.union(v.literal("very_low"), v.literal("low"), v.literal("medium"), v.literal("high"), v.literal("very_high")), "relatedBeliefId": v.optional(v.id("epistemicNodes")), "riskDescription": v.string(), "riskType": v.string(), "status": v.union(v.literal("draft"), v.literal("confirmed"), v.literal("resolved"), v.literal("dismissed")), "tenantId": v.optional(v.string()), "topicId": v.optional(v.string()), "triggerCondition": v.optional(v.string()), "updatedAt": v.number(), "workspaceId": v.optional(v.string()) })).index("by_decisionEventId", ["decisionEventId"]).index("by_topicId", ["topicId"]).index("by_topic_status", ["topicId", "status"]).index("by_decision_status", ["decisionEventId", "status"]),
23
+ "decisionRiskLedger": defineTable(v.object({ "confirmationMetadata": v.optional(v.record(v.string(), v.any())), "confirmedAt": v.optional(v.number()), "confirmedBy": v.optional(v.string()), "createdAt": v.number(), "createdBy": v.string(), "decisionEventId": v.id("decisionEvents"), "impactBand": v.union(v.literal("very_low"), v.literal("low"), v.literal("medium"), v.literal("high"), v.literal("very_high")), "metadata": v.optional(v.record(v.string(), v.any())), "monitoringPlan": v.optional(v.string()), "ownerPrincipalId": v.optional(v.string()), "probabilityBand": v.union(v.literal("very_low"), v.literal("low"), v.literal("medium"), v.literal("high"), v.literal("very_high")), "relatedBeliefId": v.optional(v.string()), "riskDescription": v.string(), "riskType": v.string(), "status": v.union(v.literal("draft"), v.literal("confirmed"), v.literal("resolved"), v.literal("dismissed")), "tenantId": v.optional(v.string()), "topicId": v.optional(v.string()), "triggerCondition": v.optional(v.string()), "updatedAt": v.number(), "workspaceId": v.optional(v.string()) })).index("by_decisionEventId", ["decisionEventId"]).index("by_topicId", ["topicId"]).index("by_topic_status", ["topicId", "status"]).index("by_decision_status", ["decisionEventId", "status"]),
24
24
  "decisionSnapshots": defineTable(v.object({ "anonymizationClass": v.optional(v.union(v.literal("none"), v.literal("standard"), v.literal("strict"))), "audienceLabel": v.optional(v.string()), "createdAt": v.number(), "decisionEventId": v.id("decisionEvents"), "exportClass": v.optional(v.union(v.literal("public_safe"), v.literal("client_safe"), v.literal("internal_only"))), "lineageParentDecisionEventId": v.optional(v.id("decisionEvents")), "lineageParentSnapshotId": v.optional(v.id("decisionSnapshots")), "lockedAt": v.number(), "lockedBy": v.string(), "metadata": v.optional(v.record(v.string(), v.any())), "outcome": v.optional(v.union(v.literal("approve"), v.literal("conditional"), v.literal("defer"), v.literal("reject"), v.literal("reopen_on_trigger"))), "ownerPrincipalId": v.optional(v.string()), "payload": v.record(v.string(), v.any()), "payloadHash": v.string(), "policyTags": v.optional(v.array(v.string())), "policyTraceId": v.optional(v.string()), "sensitivityTier": v.optional(v.union(v.literal("low"), v.literal("medium"), v.literal("high"))), "snapshotLabel": v.optional(v.string()), "tenantId": v.optional(v.string()), "topicId": v.optional(v.string()), "version": v.number(), "weightingModelVersion": v.string(), "weightingParameters": v.optional(v.record(v.string(), v.any())), "workspaceId": v.optional(v.string()) })).index("by_decisionEventId", ["decisionEventId"]).index("by_topicId", ["topicId"]).index("by_topic_lockedAt", ["topicId", "lockedAt"]).index("by_decision_version", ["decisionEventId", "version"]).index("by_decision_lockedAt", ["decisionEventId", "lockedAt"]).index("by_payloadHash", ["payloadHash"]),
25
25
  "deliberationContributions": defineTable(v.object({ "answer": v.string(), "confidence": v.number(), "contradictionHypotheses": v.array(v.string()), "createdAt": v.number(), "escalationQuestions": v.array(v.string()), "modelKey": v.optional(v.string()), "parsedResponse": v.optional(v.any()), "principalId": v.string(), "projectId": v.optional(v.string()), "promptName": v.optional(v.string()), "rawResponse": v.string(), "reasoningChain": v.array(v.string()), "role": v.union(v.literal("support"), v.literal("oppose"), v.literal("uncertain"), v.literal("synthesize")), "sessionId": v.id("deliberationSessions"), "slot": v.string(), "topicId": v.optional(v.string()), "traceId": v.optional(v.string()), "uncertaintyZones": v.array(v.object({ "explanation": v.string(), "label": v.string() })), "updatedAt": v.number() })).index("by_sessionId", ["sessionId"]).index("by_topicId", ["topicId"]).index("by_session_slot", ["sessionId", "slot"]),
26
26
  "deliberationSessions": defineTable(v.object({ "completedAt": v.optional(v.number()), "contextBrief": v.optional(v.string()), "contextSnapshot": v.optional(v.any()), "contradictionIds": v.array(v.string()), "createdAt": v.number(), "createdBy": v.string(), "error": v.optional(v.string()), "escalationQuestionIds": v.array(v.string()), "linkedBeliefNodeId": v.optional(v.string()), "modelSlots": v.array(v.string()), "outcomeSummary": v.optional(v.any()), "principalId": v.string(), "projectId": v.optional(v.string()), "question": v.string(), "replayBaseline": v.optional(v.any()), "replayBaselineAt": v.number(), "replayDelta": v.optional(v.any()), "replayHeadAt": v.optional(v.number()), "status": v.union(v.literal("running"), v.literal("completed"), v.literal("failed")), "tenantId": v.optional(v.string()), "topicId": v.optional(v.string()), "traceId": v.optional(v.string()), "uncertaintyZones": v.array(v.object({ "explanation": v.string(), "label": v.string(), "slots": v.array(v.string()) })), "updatedAt": v.number(), "workspaceId": v.optional(v.string()) })).index("by_topicId", ["topicId"]).index("by_status", ["status"]).index("by_topic_status", ["topicId", "status"]).index("by_createdBy", ["createdBy"]),
@@ -29,8 +29,8 @@ var KERNEL_SCHEMA_TABLES = {
29
29
  "epistemicContracts": defineTable(v.object({ "beliefNodeId": v.string(), "compositeOf": v.optional(v.array(v.string())), "compositeOperator": v.optional(v.union(v.literal("all"), v.literal("any"), v.literal("majority"))), "condition": v.object({ "evaluator": v.string(), "evaluatorConfig": v.optional(v.union(v.string(), v.number(), v.boolean(), v.null(), v.record(v.string(), v.any()), v.array(v.any()))), "expression": v.string() }), "conditionType": v.union(v.literal("assertion"), v.literal("temporal"), v.literal("evidential"), v.literal("threshold"), v.literal("composite")), "contractId": v.string(), "createdAt": v.number(), "createdBy": v.string(), "deadline": v.optional(v.number()), "description": v.optional(v.string()), "direction": v.union(v.literal("confirms"), v.literal("falsifies")), "evaluationCount": v.optional(v.number()), "evaluationSchedule": v.union(v.literal("on_demand"), v.literal("on_evidence"), v.literal("periodic"), v.literal("event_driven")), "inheritedAt": v.optional(v.number()), "inheritedFromBeliefNodeId": v.optional(v.string()), "inheritedFromContractId": v.optional(v.string()), "lastEvaluatedAt": v.optional(v.number()), "lineageSource": v.union(v.literal("declared"), v.literal("inherited")), "modulation": v.object({ "onConfirmed": v.object({ "ceiling": v.optional(v.number()), "delta": v.number() }), "onDisconfirmed": v.object({ "delta": v.number(), "floor": v.optional(v.number()) }), "onExpired": v.optional(v.object({ "delta": v.number() })), "onPartial": v.optional(v.object({ "delta": v.number(), "threshold": v.number() })) }), "periodicIntervalMs": v.optional(v.number()), "status": v.union(v.literal("active"), v.literal("satisfied"), v.literal("violated"), v.literal("expired"), v.literal("suspended"), v.literal("archived")), "title": v.string(), "topicId": v.optional(v.string()), "updatedAt": v.number() })).index("by_contractId", ["contractId"]).index("by_belief", ["beliefNodeId"]).index("by_status", ["status"]).index("by_evaluator", ["condition.evaluator"]).index("by_topic", ["topicId"]).index("by_schedule", ["evaluationSchedule"]),
30
30
  "epistemicEdges": defineTable(v.object({ "analogyBasis": v.optional(v.string()), "analogyStrength": v.optional(v.number()), "anonymizationClass": v.optional(v.union(v.literal("none"), v.literal("standard"), v.literal("strict"))), "audienceLabel": v.optional(v.string()), "blocking": v.optional(v.boolean()), "causal": v.optional(v.boolean()), "conditionalA": v.optional(v.object({ "a": v.number(), "b": v.number(), "d": v.number(), "u": v.number() })), "conditionalNotA": v.optional(v.object({ "a": v.number(), "b": v.number(), "d": v.number(), "u": v.number() })), "confidence": v.optional(v.number()), "constraint": v.optional(v.string()), "containment": v.optional(v.string()), "context": v.optional(v.string()), "createdAt": v.number(), "createdBy": v.string(), "defeatType": v.optional(v.union(v.literal("rebuts"), v.literal("undercuts"), v.literal("undermines"))), "derivation": v.optional(v.string()), "derivationType": v.optional(v.string()), "disanalogies": v.optional(v.array(v.string())), "domainNamespace": v.optional(v.string()), "edgeTier": v.optional(v.string()), "edgeType": v.union(v.literal("supports"), v.literal("informs"), v.literal("depends_on"), v.literal("derived_from"), v.literal("contains"), v.literal("tests"), v.literal("supersedes"), v.literal("responds_to"), v.literal("belongs_to"), v.literal("relates_to_thesis"), v.literal("works_at"), v.literal("invested_in"), v.literal("competes_with"), v.literal("participates_in"), v.literal("founded_by"), v.literal("evaluates"), v.literal("performs"), v.literal("function_in"), v.literal("impacts"), v.literal("raised_from"), v.literal("mentioned_in"), v.literal("perspective_on"), v.literal("plays_theme"), v.literal("answers"), v.literal("explores"), v.literal("qualifies"), v.literal("based_on"), v.literal("based_on_belief"), v.literal("based_on_question"), v.literal("blocked_by_contradiction"), v.literal("informed_by_theme"), v.literal("same_as"), v.literal("reinforces"), v.literal("parent_of"), v.literal("child_of"), v.literal("falsified_by"), v.literal("exclusive_with"), v.literal("collapses_if"), v.literal("cascade_from"), v.literal("counterfactual_of"), v.literal("cascade_to"), v.literal("mutually_exclusive"), v.literal("correlates_with"), v.literal("amplifies"), v.literal("precondition_for"), v.literal("in_tension_with"), v.literal("strengthened_by"), v.literal("weakened_by"), v.literal("alternative_to"), v.literal("subsumes"), v.literal("validated_by"), v.literal("required_for"), v.literal("blocks"), v.literal("prerequisite_for"), v.literal("parallel_to"), v.literal("corroborates"), v.literal("extends"), v.literal("same_source_as"), v.literal("same_theme_as"), v.literal("assumes"), v.literal("would_predict"), v.literal("analogous_to"), v.literal("independent_of"), v.literal("implements"), v.literal("violates"), v.literal("co_changes_with"), v.literal("migrating_from"), v.literal("migrating_to"), v.literal("scoped_by"), v.literal("about_entity"), v.literal("entity_referenced_in"), v.literal("contradicts"), v.literal("cites"), v.literal("summarizes"), v.literal("related_to"), v.literal("partially_answers"), v.literal("refines"), v.literal("branches_from"), v.literal("extracted_from")), "endDate": v.optional(v.number()), "evidence": v.optional(v.string()), "exportClass": v.optional(v.union(v.literal("internal_only"), v.literal("client_safe"), v.literal("public_safe"), v.literal("restricted"))), "fromLayer": v.optional(v.union(v.literal("L4"), v.literal("L3"), v.literal("L2"), v.literal("L1"), v.literal("ontological"), v.literal("organizational"))), "fromNodeId": v.string(), "fromNodeType": v.optional(v.string()), "globalId": v.string(), "implicit": v.optional(v.boolean()), "interrogation": v.optional(v.string()), "keywords": v.optional(v.array(v.string())), "logicalRole": v.optional(v.union(v.literal("necessary"), v.literal("sufficient"), v.literal("necessary_sufficient"), v.literal("contributory"), v.literal("corroborative"))), "metadata": v.optional(v.record(v.string(), v.any())), "normalization": v.optional(v.string()), "ownerPrincipalId": v.optional(v.string()), "policyTags": v.optional(v.array(v.string())), "predictionFulfilled": v.optional(v.boolean()), "predictionFulfilledAt": v.optional(v.number()), "predictionFulfilledBy": v.optional(v.string()), "projectId": v.optional(v.string()), "propagation": v.optional(v.string()), "reasoningMethod": v.optional(v.union(v.literal("deductive"), v.literal("inductive"), v.literal("abductive"), v.literal("analogical"), v.literal("causal"), v.literal("correlational"), v.literal("testimonial"), v.literal("statistical"), v.literal("implicit"), v.literal("pattern_match"))), "sensitivityTier": v.optional(v.union(v.literal("low"), v.literal("medium"), v.literal("high"), v.literal("restricted"))), "sourceGlobalId": v.optional(v.string()), "startDate": v.optional(v.number()), "surpriseScore": v.optional(v.number()), "targetGlobalId": v.optional(v.string()), "temporalClass": v.optional(v.union(v.literal("structural"), v.literal("cyclical"), v.literal("transient"), v.literal("point_in_time"))), "tenantId": v.optional(v.string()), "toLayer": v.optional(v.union(v.literal("L4"), v.literal("L3"), v.literal("L2"), v.literal("L1"), v.literal("ontological"), v.literal("organizational"))), "toNodeId": v.optional(v.string()), "toNodeType": v.optional(v.string()), "topicId": v.optional(v.string()), "updatedAt": v.optional(v.number()), "validFrom": v.optional(v.number()), "validUntil": v.optional(v.number()), "weight": v.optional(v.number()), "workspaceId": v.optional(v.string()) })).index("by_globalId", ["globalId"]).index("by_from", ["fromNodeId"]).index("by_to", ["toNodeId"]).index("by_from_type", ["fromNodeId", "edgeType"]).index("by_to_type", ["toNodeId", "edgeType"]).index("by_topic", ["topicId"]).index("by_tenantId", ["tenantId"]).index("by_workspaceId", ["workspaceId"]).index("by_tenant_workspace", ["tenantId", "workspaceId"]).index("by_audienceLabel", ["audienceLabel"]).index("by_sensitivityTier", ["sensitivityTier"]).index("by_exportClass", ["exportClass"]).index("by_type", ["edgeType"]).index("by_from_to", ["fromNodeId", "toNodeId"]).index("by_fromLayer", ["fromLayer"]).index("by_toLayer", ["toLayer"]).index("by_layer_pair", ["fromLayer", "toLayer"]).index("by_source_global_id", ["sourceGlobalId"]).index("by_target_global_id", ["targetGlobalId"]).index("by_reasoning_method", ["edgeType", "reasoningMethod"]).index("by_logical_role", ["edgeType", "logicalRole"]).index("by_temporal_class", ["temporalClass", "validUntil"]).index("by_surprise", ["edgeType", "surpriseScore"]),
31
31
  "epistemicIdentityBackfillMappings": defineTable(v.object({ "backfilledAt": v.optional(v.number()), "canonicalField": v.literal("globalId"), "canonicalUuid": v.string(), "createdAt": v.number(), "entityTable": v.union(v.literal("epistemicNodes"), v.literal("epistemicEdges"), v.literal("worktrees"), v.literal("tasks"), v.literal("contradictions")), "legacyField": v.union(v.literal("_id"), v.literal("nodeId"), v.literal("edgeId"), v.literal("beliefId"), v.literal("evidenceId"), v.literal("insightId"), v.literal("questionId"), v.literal("topicId"), v.literal("worktreeId"), v.literal("taskId"), v.literal("contradictionId"), v.literal("globalId"), v.literal("fromNodeId"), v.literal("toNodeId"), v.literal("targetBeliefIds"), v.literal("targetQuestionIds")), "legacyId": v.string(), "mappingId": v.string(), "metadata": v.optional(v.record(v.string(), v.any())), "migrationRunId": v.string(), "notes": v.optional(v.string()), "source": v.union(v.literal("gv2_backfill"), v.literal("operator_review"), v.literal("seed_manifest"), v.literal("dry_run"), v.literal("repair")), "status": v.union(v.literal("pending"), v.literal("backfilled"), v.literal("verified"), v.literal("orphaned"), v.literal("superseded")), "updatedAt": v.number(), "verifiedAt": v.optional(v.number()) })).index("by_entity_legacy", ["entityTable", "legacyId"]).index("by_entity_canonical", ["entityTable", "canonicalUuid"]).index("by_legacy", ["legacyId"]).index("by_canonical", ["canonicalUuid"]).index("by_status", ["status"]).index("by_migration_status", ["migrationRunId", "status"]),
32
- "epistemicNodeEmbeddings": defineTable(v.object({ "confidence": v.optional(v.number()), "contentHash": v.optional(v.string()), "createdAt": v.number(), "createdBy": v.string(), "embeddedAt": v.optional(v.number()), "embedding": v.array(v.float64()), "embeddingModel": v.optional(v.string()), "hasAnswer": v.optional(v.boolean()), "importance": v.optional(v.union(v.literal("critical"), v.literal("high"), v.literal("medium"), v.literal("low"))), "nodeId": v.id("epistemicNodes"), "nodeType": v.union(v.literal("decision"), v.literal("belief"), v.literal("question"), v.literal("theme"), v.literal("deal"), v.literal("topic"), v.literal("claim"), v.literal("evidence"), v.literal("synthesis"), v.literal("answer"), v.literal("atomic_fact"), v.literal("excerpt"), v.literal("source"), v.literal("company"), v.literal("person"), v.literal("investor"), v.literal("function"), v.literal("value_chain")), "tenantId": v.optional(v.string()), "textPreview": v.optional(v.string()), "topicId": v.optional(v.string()), "updatedAt": v.optional(v.number()), "vectorDimensions": v.optional(v.number()), "workspaceId": v.optional(v.string()) })).index("by_nodeId", ["nodeId"]).index("by_topicId_nodeId", ["topicId", "nodeId"]).index("by_topicId_type", ["topicId", "nodeType"]).index("by_topicId", ["topicId"]).vectorIndex("by_embedding", { vectorField: "embedding", dimensions: 1024, filterFields: ["nodeType", "createdBy", "topicId"] }),
33
- "epistemicNodes": defineTable(v.object({ "aiProvider": v.optional(v.string()), "anonymizationClass": v.optional(v.union(v.literal("none"), v.literal("standard"), v.literal("strict"))), "answerQuality": v.optional(v.union(v.literal("definitive"), v.literal("strong"), v.literal("moderate"), v.literal("weak"), v.literal("speculative"), v.literal("unanswered"))), "audienceLabel": v.optional(v.string()), "beliefStatus": v.optional(v.union(v.literal("assumption"), v.literal("hypothesis"), v.literal("active"), v.literal("superseded"), v.literal("resolved_true"), v.literal("resolved_false"))), "beliefType": v.optional(v.string()), "canonicalText": v.string(), "confidence": v.optional(v.number()), "consensusConfidence": v.optional(v.number()), "consensusSource": v.optional(v.string()), "consensusView": v.optional(v.union(v.literal("aligned"), v.literal("ahead_of"), v.literal("contrarian"), v.literal("orthogonal"), v.literal("unknown"))), "content": v.optional(v.string()), "contentHash": v.string(), "contentType": v.optional(v.string()), "createdAt": v.number(), "createdBy": v.string(), "decisionOutcome": v.optional(v.union(v.literal("pending"), v.literal("successful"), v.literal("unsuccessful"), v.literal("mixed"), v.literal("unknown"))), "decisionType": v.optional(v.union(v.literal("invest"), v.literal("pass"), v.literal("follow_on"), v.literal("exit"), v.literal("deep_dive"), v.literal("monitor"), v.literal("deprioritize"), v.literal("thesis_adopt"), v.literal("thesis_revise"), v.literal("thesis_abandon"))), "domain": v.optional(v.string()), "epistemicLayer": v.optional(v.union(v.literal("L4"), v.literal("L3"), v.literal("L2"), v.literal("L1"), v.literal("ontological"), v.literal("organizational"))), "epistemicStatus": v.optional(v.union(v.literal("assumption"), v.literal("hypothesis"), v.literal("active"), v.literal("superseded"), v.literal("resolved_true"), v.literal("resolved_false"))), "evidenceRelation": v.optional(v.union(v.literal("supports"), v.literal("contradicts"))), "exportClass": v.optional(v.union(v.literal("internal_only"), v.literal("client_safe"), v.literal("public_safe"), v.literal("restricted"))), "externalIds": v.optional(v.object({ "crunchbase": v.optional(v.string()), "linkedin": v.optional(v.string()), "pitchbook": v.optional(v.string()), "twitter": v.optional(v.string()), "website": v.optional(v.string()) })), "externalSourceType": v.optional(v.string()), "extractedFromNodeId": v.optional(v.id("epistemicNodes")), "extractionLangfuseTraceId": v.optional(v.string()), "extractionModel": v.optional(v.string()), "extractionPromptName": v.optional(v.string()), "extractionPromptVersion": v.optional(v.number()), "extractionTemperature": v.optional(v.number()), "globalId": v.string(), "groundingConfidence": v.optional(v.number()), "groundingEndOffset": v.optional(v.number()), "groundingMatchedText": v.optional(v.string()), "groundingRejectionReason": v.optional(v.string()), "groundingStartOffset": v.optional(v.number()), "groundingVerified": v.optional(v.boolean()), "informationAsymmetry": v.optional(v.union(v.literal("proprietary"), v.literal("early"), v.literal("common"))), "kind": v.optional(v.string()), "metadata": v.optional(v.record(v.string(), v.any())), "methodology": v.optional(v.union(v.literal("primary_research"), v.literal("expert_interview"), v.literal("customer_interview"), v.literal("field_observation"), v.literal("proprietary_data"), v.literal("desk_research"), v.literal("regulatory_filing"), v.literal("news_article"), v.literal("academic_paper"), v.literal("ai_synthesis"), v.literal("ai_extraction"))), "nodeType": v.union(v.literal("decision"), v.literal("belief"), v.literal("question"), v.literal("theme"), v.literal("deal"), v.literal("topic"), v.literal("claim"), v.literal("evidence"), v.literal("synthesis"), v.literal("answer"), v.literal("atomic_fact"), v.literal("excerpt"), v.literal("source"), v.literal("company"), v.literal("person"), v.literal("investor"), v.literal("function"), v.literal("value_chain")), "ownerPrincipalId": v.optional(v.string()), "policyTags": v.optional(v.array(v.string())), "predictionMeta": v.optional(v.object({ "actualVsPredicted": v.optional(v.string()), "confidenceAtPrediction": v.optional(v.number()), "expectedBy": v.optional(v.number()), "isPrediction": v.boolean(), "outcome": v.optional(v.union(v.literal("pending"), v.literal("confirmed"), v.literal("disconfirmed"), v.literal("partial"), v.literal("expired"))), "outcomeEvidenceId": v.optional(v.string()), "outcomeRecordedAt": v.optional(v.number()), "registeredAt": v.number() })), "projectId": v.optional(v.string()), "publicationStatus": v.optional(v.union(v.literal("unpublished"), v.literal("published"), v.literal("suppressed"))), "publishedAt": v.optional(v.number()), "publishedBy": v.optional(v.string()), "questionPriority": v.optional(v.union(v.literal("critical"), v.literal("high"), v.literal("medium"), v.literal("low"))), "questionType": v.optional(v.union(v.literal("validation"), v.literal("falsification"), v.literal("assumption_probe"), v.literal("prediction_test"), v.literal("counterfactual"), v.literal("discovery"), v.literal("clarification"), v.literal("comparison"), v.literal("causal"), v.literal("mechanism"), v.literal("general"))), "reversibility": v.optional(v.union(v.literal("irreversible"), v.literal("hard_to_reverse"), v.literal("reversible"), v.literal("trivial"))), "sensitivityTier": v.optional(v.union(v.literal("low"), v.literal("medium"), v.literal("high"), v.literal("restricted"))), "signedImpact": v.optional(v.number()), "sourceDescription": v.optional(v.string()), "sourceQuality": v.optional(v.union(v.literal("primary"), v.literal("analyzed"), v.literal("secondary"), v.literal("tertiary"), v.literal("unknown"))), "sourceQuestionId": v.optional(v.string()), "sourceRef": v.optional(v.string()), "sourceType": v.union(v.literal("human"), v.literal("ai_extracted"), v.literal("ai_generated"), v.literal("imported"), v.literal("system"), v.literal("verified"), v.literal("proprietary")), "sourceUrl": v.optional(v.string()), "status": v.union(v.literal("active"), v.literal("superseded"), v.literal("archived"), v.literal("deleted")), "subtype": v.optional(v.string()), "supersededBy": v.optional(v.id("epistemicNodes")), "syncError": v.optional(v.string()), "syncStatus": v.optional(v.union(v.literal("synced"), v.literal("pending_edges"), v.literal("edge_creation_failed"))), "tags": v.optional(v.array(v.string())), "targetBeliefGlobalId": v.optional(v.string()), "targetBeliefId": v.optional(v.string()), "temporalNature": v.optional(v.union(v.literal("factual"), v.literal("forecast"), v.literal("unknown"))), "tenantId": v.optional(v.string()), "themeConviction": v.optional(v.union(v.literal("high"), v.literal("medium"), v.literal("low"), v.literal("negative"))), "themeStatus": v.optional(v.union(v.literal("emerging"), v.literal("active"), v.literal("mature"), v.literal("declining"), v.literal("archived"))), "title": v.optional(v.string()), "topicId": v.optional(v.string()), "updatedAt": v.number(), "verificationStatus": v.optional(v.union(v.literal("unverified"), v.literal("human_verified"), v.literal("ai_verified"), v.literal("contradicted"), v.literal("outdated"))), "workspaceId": v.optional(v.string()) })).index("by_globalId", ["globalId"]).index("by_contentHash", ["contentHash"]).index("by_nodeType", ["nodeType"]).index("by_subtype", ["nodeType", "subtype"]).index("by_domain", ["domain"]).index("by_topic", ["topicId"]).index("by_topic_type", ["topicId", "nodeType"]).index("by_tenantId", ["tenantId"]).index("by_workspaceId", ["workspaceId"]).index("by_tenant_workspace", ["tenantId", "workspaceId"]).index("by_audienceLabel", ["audienceLabel"]).index("by_sensitivityTier", ["sensitivityTier"]).index("by_exportClass", ["exportClass"]).index("by_status", ["status"]).index("by_sourceType", ["sourceType"]).index("by_verification", ["verificationStatus"]).index("by_layer", ["epistemicLayer"]).index("by_layer_type", ["epistemicLayer", "nodeType"]).index("by_syncStatus", ["syncStatus"]).index("by_belief_status", ["nodeType", "beliefStatus"]).index("by_epistemic_status", ["nodeType", "epistemicStatus"]).index("by_temporal_nature", ["nodeType", "temporalNature"]).index("by_methodology", ["nodeType", "methodology"]).index("by_information_asymmetry", ["nodeType", "informationAsymmetry"]).index("by_evidence_relation", ["nodeType", "evidenceRelation"]).index("by_target_belief", ["nodeType", "targetBeliefId"]).index("by_source_quality", ["nodeType", "sourceQuality"]).index("by_source_ref", ["nodeType", "sourceRef"]).index("by_reversibility", ["nodeType", "reversibility"]).index("by_questionType", ["nodeType", "questionType"]).index("by_questionPriority", ["nodeType", "questionPriority"]).searchIndex("search_canonicalText", { searchField: "canonicalText", filterFields: ["nodeType", "topicId", "topicId", "status"] }),
32
+ "epistemicNodeEmbeddings": defineTable(v.object({ "confidence": v.optional(v.number()), "contentHash": v.optional(v.string()), "createdAt": v.number(), "createdBy": v.string(), "embeddedAt": v.optional(v.number()), "embedding": v.array(v.float64()), "embeddingModel": v.optional(v.string()), "hasAnswer": v.optional(v.boolean()), "importance": v.optional(v.union(v.literal("critical"), v.literal("high"), v.literal("medium"), v.literal("low"))), "nodeId": v.string(), "nodeType": v.union(v.literal("decision"), v.literal("belief"), v.literal("question"), v.literal("theme"), v.literal("deal"), v.literal("topic"), v.literal("claim"), v.literal("evidence"), v.literal("synthesis"), v.literal("answer"), v.literal("atomic_fact"), v.literal("excerpt"), v.literal("source"), v.literal("company"), v.literal("person"), v.literal("investor"), v.literal("function"), v.literal("value_chain")), "tenantId": v.optional(v.string()), "textPreview": v.optional(v.string()), "topicId": v.optional(v.string()), "updatedAt": v.optional(v.number()), "vectorDimensions": v.optional(v.number()), "workspaceId": v.optional(v.string()) })).index("by_nodeId", ["nodeId"]).index("by_topicId_nodeId", ["topicId", "nodeId"]).index("by_topicId_type", ["topicId", "nodeType"]).index("by_topicId", ["topicId"]).vectorIndex("by_embedding", { vectorField: "embedding", dimensions: 1024, filterFields: ["nodeType", "createdBy", "topicId", "tenantId", "workspaceId"] }),
33
+ "epistemicNodes": defineTable(v.object({ "aiProvider": v.optional(v.string()), "anonymizationClass": v.optional(v.union(v.literal("none"), v.literal("standard"), v.literal("strict"))), "answerQuality": v.optional(v.union(v.literal("definitive"), v.literal("strong"), v.literal("moderate"), v.literal("weak"), v.literal("speculative"), v.literal("unanswered"))), "audienceLabel": v.optional(v.string()), "beliefStatus": v.optional(v.union(v.literal("assumption"), v.literal("hypothesis"), v.literal("active"), v.literal("superseded"), v.literal("resolved_true"), v.literal("resolved_false"))), "beliefType": v.optional(v.string()), "canonicalText": v.string(), "confidence": v.optional(v.number()), "consensusConfidence": v.optional(v.number()), "consensusSource": v.optional(v.string()), "consensusView": v.optional(v.union(v.literal("aligned"), v.literal("ahead_of"), v.literal("contrarian"), v.literal("orthogonal"), v.literal("unknown"))), "content": v.optional(v.string()), "contentHash": v.string(), "contentType": v.optional(v.string()), "createdAt": v.number(), "createdBy": v.string(), "decisionOutcome": v.optional(v.union(v.literal("pending"), v.literal("successful"), v.literal("unsuccessful"), v.literal("mixed"), v.literal("unknown"))), "decisionType": v.optional(v.union(v.literal("invest"), v.literal("pass"), v.literal("follow_on"), v.literal("exit"), v.literal("deep_dive"), v.literal("monitor"), v.literal("deprioritize"), v.literal("thesis_adopt"), v.literal("thesis_revise"), v.literal("thesis_abandon"))), "domain": v.optional(v.string()), "epistemicLayer": v.optional(v.union(v.literal("L4"), v.literal("L3"), v.literal("L2"), v.literal("L1"), v.literal("ontological"), v.literal("organizational"))), "epistemicStatus": v.optional(v.union(v.literal("assumption"), v.literal("hypothesis"), v.literal("active"), v.literal("superseded"), v.literal("resolved_true"), v.literal("resolved_false"))), "evidenceRelation": v.optional(v.union(v.literal("supports"), v.literal("contradicts"))), "exportClass": v.optional(v.union(v.literal("internal_only"), v.literal("client_safe"), v.literal("public_safe"), v.literal("restricted"))), "externalIds": v.optional(v.object({ "crunchbase": v.optional(v.string()), "linkedin": v.optional(v.string()), "pitchbook": v.optional(v.string()), "twitter": v.optional(v.string()), "website": v.optional(v.string()) })), "externalSourceType": v.optional(v.string()), "extractedFromNodeId": v.optional(v.string()), "extractionLangfuseTraceId": v.optional(v.string()), "extractionModel": v.optional(v.string()), "extractionPromptName": v.optional(v.string()), "extractionPromptVersion": v.optional(v.number()), "extractionTemperature": v.optional(v.number()), "globalId": v.string(), "groundingConfidence": v.optional(v.number()), "groundingEndOffset": v.optional(v.number()), "groundingMatchedText": v.optional(v.string()), "groundingRejectionReason": v.optional(v.string()), "groundingStartOffset": v.optional(v.number()), "groundingVerified": v.optional(v.boolean()), "informationAsymmetry": v.optional(v.union(v.literal("proprietary"), v.literal("early"), v.literal("common"))), "kind": v.optional(v.string()), "metadata": v.optional(v.record(v.string(), v.any())), "methodology": v.optional(v.union(v.literal("primary_research"), v.literal("expert_interview"), v.literal("customer_interview"), v.literal("field_observation"), v.literal("proprietary_data"), v.literal("desk_research"), v.literal("regulatory_filing"), v.literal("news_article"), v.literal("academic_paper"), v.literal("ai_synthesis"), v.literal("ai_extraction"))), "nodeType": v.union(v.literal("decision"), v.literal("belief"), v.literal("question"), v.literal("theme"), v.literal("deal"), v.literal("topic"), v.literal("claim"), v.literal("evidence"), v.literal("synthesis"), v.literal("answer"), v.literal("atomic_fact"), v.literal("excerpt"), v.literal("source"), v.literal("company"), v.literal("person"), v.literal("investor"), v.literal("function"), v.literal("value_chain")), "ownerPrincipalId": v.optional(v.string()), "policyTags": v.optional(v.array(v.string())), "predictionMeta": v.optional(v.object({ "actualVsPredicted": v.optional(v.string()), "confidenceAtPrediction": v.optional(v.number()), "expectedBy": v.optional(v.number()), "isPrediction": v.boolean(), "outcome": v.optional(v.union(v.literal("pending"), v.literal("confirmed"), v.literal("disconfirmed"), v.literal("partial"), v.literal("expired"))), "outcomeEvidenceId": v.optional(v.string()), "outcomeRecordedAt": v.optional(v.number()), "registeredAt": v.number() })), "projectId": v.optional(v.string()), "publicationStatus": v.optional(v.union(v.literal("unpublished"), v.literal("published"), v.literal("suppressed"))), "publishedAt": v.optional(v.number()), "publishedBy": v.optional(v.string()), "questionPriority": v.optional(v.union(v.literal("critical"), v.literal("high"), v.literal("medium"), v.literal("low"))), "questionType": v.optional(v.union(v.literal("validation"), v.literal("falsification"), v.literal("assumption_probe"), v.literal("prediction_test"), v.literal("counterfactual"), v.literal("discovery"), v.literal("clarification"), v.literal("comparison"), v.literal("causal"), v.literal("mechanism"), v.literal("general"))), "reversibility": v.optional(v.union(v.literal("irreversible"), v.literal("hard_to_reverse"), v.literal("reversible"), v.literal("trivial"))), "sensitivityTier": v.optional(v.union(v.literal("low"), v.literal("medium"), v.literal("high"), v.literal("restricted"))), "signedImpact": v.optional(v.number()), "sourceDescription": v.optional(v.string()), "sourceQuality": v.optional(v.union(v.literal("primary"), v.literal("analyzed"), v.literal("secondary"), v.literal("tertiary"), v.literal("unknown"))), "sourceQuestionId": v.optional(v.string()), "sourceRef": v.optional(v.string()), "sourceType": v.union(v.literal("human"), v.literal("ai_extracted"), v.literal("ai_generated"), v.literal("imported"), v.literal("system"), v.literal("verified"), v.literal("proprietary")), "sourceUrl": v.optional(v.string()), "status": v.union(v.literal("active"), v.literal("superseded"), v.literal("archived"), v.literal("deleted")), "subtype": v.optional(v.string()), "supersededBy": v.optional(v.string()), "syncError": v.optional(v.string()), "syncStatus": v.optional(v.union(v.literal("synced"), v.literal("pending_edges"), v.literal("edge_creation_failed"))), "tags": v.optional(v.array(v.string())), "targetBeliefGlobalId": v.optional(v.string()), "targetBeliefId": v.optional(v.string()), "temporalNature": v.optional(v.union(v.literal("factual"), v.literal("forecast"), v.literal("unknown"))), "tenantId": v.optional(v.string()), "themeConviction": v.optional(v.union(v.literal("high"), v.literal("medium"), v.literal("low"), v.literal("negative"))), "themeStatus": v.optional(v.union(v.literal("emerging"), v.literal("active"), v.literal("mature"), v.literal("declining"), v.literal("archived"))), "title": v.optional(v.string()), "topicId": v.optional(v.string()), "updatedAt": v.number(), "verificationStatus": v.optional(v.union(v.literal("unverified"), v.literal("human_verified"), v.literal("ai_verified"), v.literal("contradicted"), v.literal("outdated"))), "workspaceId": v.optional(v.string()) })).index("by_globalId", ["globalId"]).index("by_contentHash", ["contentHash"]).index("by_nodeType", ["nodeType"]).index("by_subtype", ["nodeType", "subtype"]).index("by_domain", ["domain"]).index("by_topic", ["topicId"]).index("by_topic_type", ["topicId", "nodeType"]).index("by_tenantId", ["tenantId"]).index("by_workspaceId", ["workspaceId"]).index("by_tenant_workspace", ["tenantId", "workspaceId"]).index("by_audienceLabel", ["audienceLabel"]).index("by_sensitivityTier", ["sensitivityTier"]).index("by_exportClass", ["exportClass"]).index("by_status", ["status"]).index("by_sourceType", ["sourceType"]).index("by_verification", ["verificationStatus"]).index("by_layer", ["epistemicLayer"]).index("by_layer_type", ["epistemicLayer", "nodeType"]).index("by_syncStatus", ["syncStatus"]).index("by_belief_status", ["nodeType", "beliefStatus"]).index("by_epistemic_status", ["nodeType", "epistemicStatus"]).index("by_temporal_nature", ["nodeType", "temporalNature"]).index("by_methodology", ["nodeType", "methodology"]).index("by_information_asymmetry", ["nodeType", "informationAsymmetry"]).index("by_evidence_relation", ["nodeType", "evidenceRelation"]).index("by_target_belief", ["nodeType", "targetBeliefId"]).index("by_source_quality", ["nodeType", "sourceQuality"]).index("by_source_ref", ["nodeType", "sourceRef"]).index("by_reversibility", ["nodeType", "reversibility"]).index("by_questionType", ["nodeType", "questionType"]).index("by_questionPriority", ["nodeType", "questionPriority"]).searchIndex("search_canonicalText", { searchField: "canonicalText", filterFields: ["nodeType", "topicId", "topicId", "status"] }),
34
34
  "graphAnalysisCache": defineTable(v.object({ "analysisVersion": v.string(), "analyzedAt": v.number(), "changesSinceRefresh": v.number(), "findings": v.array(v.object({ "category": v.union(v.literal("structural_risk"), v.literal("evidence_gap"), v.literal("reasoning_flaw"), v.literal("staleness"), v.literal("opportunity"), v.literal("propagation_risk"), v.literal("epistemology"), v.literal("temporal"), v.literal("semantic_gap")), "description": v.string(), "detector": v.string(), "id": v.string(), "importance": v.optional(v.number()), "nodeIds": v.array(v.string()), "nodeLabels": v.array(v.string()), "severity": v.union(v.literal("critical"), v.literal("warning"), v.literal("info")), "title": v.string(), "totalCount": v.optional(v.number()) })), "healthScore": v.number(), "isStale": v.boolean(), "killerQueryResults": v.optional(v.object({ "anchoringBias": v.optional(v.array(v.any())), "confirmationBias": v.optional(v.array(v.any())), "contradictionTensions": v.optional(v.array(v.any())), "knowledgeFrontier": v.optional(v.array(v.any())), "minimumFalsificationSet": v.optional(v.union(v.string(), v.number(), v.boolean(), v.null(), v.record(v.string(), v.any()), v.array(v.any()))), "missingQuestions": v.optional(v.array(v.any())), "nonConsensusBeliefs": v.optional(v.array(v.any())), "portfolioConviction": v.optional(v.array(v.any())), "reasoningDepth": v.optional(v.array(v.any())), "sourceConcentration": v.optional(v.array(v.any())), "staleThemes": v.optional(v.array(v.any())) })), "lastGraphChange": v.optional(v.number()), "stats": v.object({ "algebraicConnectivity": v.number(), "averageResilience": v.number(), "beliefs": v.number(), "beliefStatus": v.optional(v.object({ "active": v.number(), "assumption": v.number(), "hypothesis": v.number(), "resolved_false": v.number(), "resolved_true": v.number(), "superseded": v.number() })), "bridgeNodeCount": v.number(), "coherenceScore": v.number(), "communityCount": v.number(), "cycleCount": v.number(), "evidence": v.number(), "evidenceTemporalNature": v.optional(v.object({ "factual": v.number(), "forecast": v.number(), "unknown": v.number() })), "orphanCount": v.number(), "overconfidentCount": v.number(), "propagationRisks": v.number(), "questions": v.number(), "sccCount": v.number(), "temporalDecayCount": v.number(), "tensionPairs": v.number(), "totalEdges": v.number(), "totalNodes": v.number(), "ungroundedCount": v.number() }), "topicId": v.optional(v.string()) })).index("by_topic", ["topicId"]).index("by_topic_stale", ["topicId", "isStale"]).index("by_analyzedAt", ["analyzedAt"]),
35
35
  "graphAnalysisResults": defineTable(v.object({ "analysisText": v.string(), "archivedAt": v.optional(v.number()), "createdAt": v.number(), "customQuery": v.optional(v.string()), "findingId": v.optional(v.string()), "findingSnapshot": v.optional(v.object({ "category": v.string(), "description": v.string(), "nodeIds": v.array(v.string()), "nodeLabels": v.array(v.string()), "severity": v.string(), "title": v.string() })), "mode": v.union(v.literal("explain"), v.literal("query")), "modelId": v.optional(v.string()), "status": v.union(v.literal("active"), v.literal("archived"), v.literal("deleted")), "topicId": v.optional(v.string()), "userId": v.string() })).index("by_topicId", ["topicId"]).index("by_topic_user", ["topicId", "userId"]).index("by_topic_finding", ["topicId", "findingId"]).index("by_topic_status", ["topicId", "status"]).index("by_createdAt", ["createdAt"]),
36
36
  "graphSuggestions": defineTable(v.object({ "actedAt": v.optional(v.number()), "analysisResultId": v.id("graphAnalysisResults"), "createdAt": v.number(), "errorMessage": v.optional(v.string()), "payload": v.union(v.string(), v.number(), v.boolean(), v.null(), v.record(v.string(), v.any()), v.array(v.any())), "priority": v.union(v.literal("critical"), v.literal("high"), v.literal("medium"), v.literal("low")), "rationale": v.string(), "resultNodeId": v.optional(v.string()), "secondaryNodeId": v.optional(v.string()), "status": v.union(v.literal("pending"), v.literal("accepted"), v.literal("declined"), v.literal("failed"), v.literal("superseded")), "suggestionHash": v.string(), "suggestionType": v.string(), "targetNodeId": v.optional(v.string()), "title": v.string(), "topicId": v.optional(v.string()), "userId": v.string() })).index("by_analysis", ["analysisResultId"]).index("by_suggestion_hash", ["topicId", "suggestionHash"]).index("by_topicId", ["topicId"]).index("by_topic_user", ["topicId", "userId"]).index("by_topic_status", ["topicId", "status"]).index("by_createdAt", ["createdAt"]),
@@ -56,7 +56,7 @@ var KERNEL_SCHEMA_TABLES = {
56
56
  "tasks": defineTable(v.object({ "assigneeId": v.optional(v.string()), "attachments": v.optional(v.array(v.object({ "capturedAsEvidence": v.optional(v.boolean()), "capturedAt": v.optional(v.number()), "capturedInsightId": v.optional(v.string()), "content": v.string(), "createdAt": v.number(), "createdBy": v.string(), "id": v.string(), "metadata": v.optional(v.object({ "capturedAsEvidence": v.optional(v.boolean()), "capturedAt": v.optional(v.number()), "capturedImpact": v.optional(v.number()), "capturedInsightId": v.optional(v.string()), "continueOnFailure": v.optional(v.boolean()), "dependsOnStepIds": v.optional(v.array(v.string())), "editable": v.optional(v.boolean()), "executionTool": v.optional(v.string()), "experts": v.optional(v.array(v.object({ "expertise": v.string(), "potentialSources": v.array(v.string()), "questions": v.array(v.string()), "searchStrategy": v.optional(v.string()) }))), "expertSearchAt": v.optional(v.number()), "expertSearchResults": v.optional(v.array(v.any())), "factChecker": v.optional(v.object({ "claimsToVerify": v.array(v.string()), "sourcesToCheck": v.array(v.string()), "verificationCriteria": v.array(v.string()) })), "fileName": v.optional(v.string()), "fileSize": v.optional(v.number()), "fileUrl": v.optional(v.string()), "frameworkType": v.optional(v.string()), "generatedPersonas": v.optional(v.array(v.any())), "items": v.optional(v.array(v.object({ "completed": v.boolean(), "id": v.string(), "text": v.string() }))), "linkedBeliefId": v.optional(v.string()), "linkedCallScriptId": v.optional(v.string()), "linkedQuestionId": v.optional(v.string()), "mappedQuestions": v.optional(v.array(v.object({ "answered": v.optional(v.boolean()), "answerExcerpt": v.optional(v.string()), "answerTimestamp": v.optional(v.string()), "capturedAsInsight": v.optional(v.boolean()), "category": v.optional(v.string()), "id": v.string(), "insightId": v.optional(v.string()), "linkedBeliefId": v.optional(v.string()), "linkedQuestionId": v.optional(v.string()), "priority": v.optional(v.union(v.literal("must_ask"), v.literal("nice_to_have"))), "questionText": v.string() }))), "metrics": v.optional(v.array(v.object({ "currentValue": v.optional(v.string()), "frequency": v.string(), "metric": v.string(), "source": v.string() }))), "personas": v.optional(v.array(v.object({ "company": v.string(), "rationale": v.string(), "role": v.string(), "title": v.string() }))), "personasGeneratedAt": v.optional(v.number()), "researchCitations": v.optional(v.array(v.union(v.string(), v.object({ "snippet": v.optional(v.string()), "title": v.optional(v.string()), "url": v.string() })))), "researchCompletedAt": v.optional(v.number()), "researchResult": v.optional(v.string()), "researchStatus": v.optional(v.union(v.literal("pending"), v.literal("running"), v.literal("completed"), v.literal("failed"))), "runCondition": v.optional(v.string()), "stepFailureReason": v.optional(v.string()), "stepLastRunAt": v.optional(v.number()), "stepOutputData": v.optional(v.string()), "stepOutputSummary": v.optional(v.string()), "stepRunCount": v.optional(v.number()), "stepStatus": v.optional(v.union(v.literal("pending"), v.literal("running"), v.literal("completed"), v.literal("failed"), v.literal("skipped"))), "tools": v.optional(v.array(v.object({ "purpose": v.string(), "suggestedQuery": v.string(), "tool": v.string() }))), "variables": v.optional(v.array(v.string())), "workflowOrder": v.optional(v.number()), "workflowStepId": v.optional(v.string()) })), "title": v.string(), "type": v.union(v.literal("call_script"), v.literal("email_template"), v.literal("research_plan"), v.literal("framework"), v.literal("checklist"), v.literal("note"), v.literal("file"), v.literal("transcript")) }))), "blockedBy": v.optional(v.array(v.string())), "blockedReason": v.optional(v.string()), "blocks": v.optional(v.array(v.string())), "comments": v.optional(v.array(v.object({ "content": v.string(), "createdAt": v.number(), "id": v.string(), "userId": v.string() }))), "completedAt": v.optional(v.number()), "completedBy": v.optional(v.string()), "createdAt": v.number(), "createdBy": v.string(), "description": v.optional(v.string()), "dueDate": v.optional(v.number()), "executionCompletedAt": v.optional(v.number()), "executionError": v.optional(v.string()), "executionOrder": v.optional(v.number()), "executionResults": v.optional(v.union(v.string(), v.number(), v.boolean(), v.null(), v.record(v.string(), v.any()), v.array(v.any()))), "executionStartedAt": v.optional(v.number()), "executionStatus": v.optional(v.union(v.literal("pending"), v.literal("running"), v.literal("completed"), v.literal("failed"))), "executionType": v.optional(v.union(v.literal("research_search"), v.literal("find_news"), v.literal("identify_experts"), v.literal("market_research"), v.literal("generate_primer"), v.literal("verify_claim"), v.literal("manual"), v.literal("mcp_research"), v.literal("mcp_web_search"), v.literal("mcp_capture"), v.literal("mcp_network_search"))), "globalId": v.string(), "linkedBeliefId": v.optional(v.string()), "linkedChatId": v.optional(v.string()), "linkedQuestionId": v.optional(v.string()), "linkedWorktreeId": v.optional(v.string()), "mcpDatasetIds": v.optional(v.array(v.string())), "mcpExecutionId": v.optional(v.string()), "mcpSkillIds": v.optional(v.array(v.string())), "priority": v.union(v.literal("urgent"), v.literal("high"), v.literal("medium"), v.literal("low")), "sortOrder": v.optional(v.number()), "status": v.union(v.literal("todo"), v.literal("in_progress"), v.literal("blocked"), v.literal("done")), "subtasks": v.optional(v.array(v.object({ "completed": v.boolean(), "completedAt": v.optional(v.number()), "id": v.string(), "title": v.string() }))), "tags": v.optional(v.array(v.string())), "taskType": v.optional(v.union(v.literal("general"), v.literal("find_evidence"), v.literal("verify_claim"), v.literal("research"), v.literal("review"), v.literal("interview"), v.literal("analysis"), v.literal("track_metrics"))), "tenantId": v.optional(v.string()), "title": v.string(), "topicId": v.optional(v.string()), "updatedAt": v.number(), "workspaceId": v.optional(v.string()) })).index("by_globalId", ["globalId"]).index("by_topicId", ["topicId"]).index("by_topicId_status", ["topicId", "status"]).index("by_tenantId", ["tenantId"]).index("by_workspaceId", ["workspaceId"]).index("by_worktreeId", ["linkedWorktreeId"]).index("by_beliefId", ["linkedBeliefId"]).index("by_questionId", ["linkedQuestionId"]).index("by_status", ["status"]).index("by_assigneeId", ["assigneeId"]).index("by_dueDate", ["dueDate"]).index("by_priority", ["priority"]).index("by_executionType", ["executionType"]).index("by_executionStatus", ["executionStatus"]),
57
57
  "topics": defineTable(v.object({ "createdAt": v.number(), "createdBy": v.string(), "depth": v.number(), "description": v.optional(v.string()), "globalId": v.string(), "graphScopeProjectId": v.optional(v.string()), "metadata": v.optional(v.any()), "name": v.string(), "ontologyId": v.optional(v.id("ontologyDefinitions")), "ownerPrincipalId": v.optional(v.string()), "parentTopicId": v.optional(v.string()), "path": v.array(v.string()), "status": v.union(v.literal("active"), v.literal("archived"), v.literal("watching")), "tenantId": v.optional(v.string()), "type": v.string(), "updatedAt": v.number(), "visibility": v.optional(v.union(v.literal("private"), v.literal("team"), v.literal("firm"), v.literal("external"), v.literal("public"))), "workspaceId": v.optional(v.string()) })).index("by_globalId", ["globalId"]).index("by_parent", ["parentTopicId"]).index("by_type", ["type"]).index("by_graph_scope_project", ["graphScopeProjectId"]).index("by_tenant", ["tenantId"]).index("by_workspaceId", ["workspaceId"]).index("by_tenant_workspace", ["tenantId", "workspaceId"]).index("by_ownerPrincipalId", ["ownerPrincipalId"]).index("by_ontology", ["ontologyId"]).index("by_path", ["path"]).searchIndex("search_name", { searchField: "name", filterFields: ["tenantId", "type"] }),
58
58
  "workflowDefinitions": defineTable(v.object({ "createdAt": v.number(), "createdBy": v.string(), "description": v.optional(v.string()), "displayName": v.string(), "metadata": v.optional(v.record(v.string(), v.any())), "name": v.string(), "status": v.union(v.literal("draft"), v.literal("active"), v.literal("deprecated")), "tenantId": v.string(), "updatedAt": v.number(), "version": v.number() })).index("by_tenant", ["tenantId"]).index("by_tenant_name", ["tenantId", "name"]).index("by_tenant_status", ["tenantId", "status"]),
59
- "workflowPullRequests": defineTable(v.object({ "createdAt": v.number(), "createdBy": v.string(), "metadata": v.optional(v.record(v.string(), v.any())), "resolvedAt": v.optional(v.number()), "resolvedBy": v.optional(v.string()), "reviewers": v.optional(v.array(v.string())), "status": v.union(v.literal("pending_review"), v.literal("changes_requested"), v.literal("approved"), v.literal("blocked")), "summary": v.string(), "topicId": v.optional(v.string()), "updatedAt": v.number(), "worktreeId": v.id("worktrees") })).index("by_worktreeId", ["worktreeId"]).index("by_status", ["status"]).index("by_topicId", ["topicId"]).index("by_topic_status", ["topicId", "status"]),
59
+ "workflowPullRequests": defineTable(v.object({ "createdAt": v.number(), "createdBy": v.string(), "metadata": v.optional(v.record(v.string(), v.any())), "resolvedAt": v.optional(v.number()), "resolvedBy": v.optional(v.string()), "reviewers": v.optional(v.array(v.string())), "status": v.union(v.literal("pending_review"), v.literal("changes_requested"), v.literal("approved"), v.literal("blocked")), "summary": v.string(), "topicId": v.optional(v.string()), "updatedAt": v.number(), "worktreeId": v.string() })).index("by_worktreeId", ["worktreeId"]).index("by_status", ["status"]).index("by_topicId", ["topicId"]).index("by_topic_status", ["topicId", "status"]),
60
60
  "workflowStages": defineTable(v.object({ "createdAt": v.number(), "description": v.optional(v.string()), "displayName": v.string(), "entryConditions": v.optional(v.record(v.string(), v.any())), "exitConditions": v.optional(v.record(v.string(), v.any())), "gateRules": v.optional(v.record(v.string(), v.any())), "isOptional": v.optional(v.boolean()), "metadata": v.optional(v.record(v.string(), v.any())), "name": v.string(), "order": v.number(), "updatedAt": v.number(), "workflowDefinitionId": v.id("workflowDefinitions") })).index("by_workflow", ["workflowDefinitionId"]).index("by_workflow_order", ["workflowDefinitionId", "order"]),
61
61
  "worktreeBeliefCluster": defineTable(v.object({ "addedAt": v.number(), "beliefId": v.string(), "cascadeText": v.optional(v.string()), "confidenceDelta": v.optional(v.number()), "counterfactualText": v.optional(v.string()), "dependencyText": v.optional(v.string()), "finalConfidence": v.optional(v.number()), "finalEvidenceCount": v.optional(v.number()), "initialConfidence": v.optional(v.number()), "initialEvidenceCount": v.optional(v.number()), "llmAssessedAt": v.optional(v.number()), "llmCertainty": v.optional(v.number()), "llmEvidenceScores": v.optional(v.string()), "llmReasoning": v.optional(v.string()), "llmValence": v.optional(v.number()), "relationDescription": v.optional(v.string()), "relationType": v.union(v.literal("primary"), v.literal("counterfactual"), v.literal("dependency"), v.literal("cascade"), v.literal("conditional"), v.literal("supporting"), v.literal("contradicting"), v.literal("alternative"), v.literal("prerequisite")), "updatedAt": v.number(), "worktreeId": v.string() })).index("by_worktree", ["worktreeId"]).index("by_belief", ["beliefId"]).index("by_worktree_relation", ["worktreeId", "relationType"]),
62
62
  "worktrees": defineTable(v.object({ "beliefFocus": v.optional(v.string()), "beliefRefinement": v.optional(v.object({ "checklist": v.optional(v.object({ "hasMeasurableCriteria": v.boolean(), "hasSpecificClaim": v.boolean(), "hasTestability": v.boolean(), "hasTimeframe": v.boolean() })), "isRefined": v.boolean(), "measurableCriteria": v.optional(v.string()), "originalText": v.optional(v.string()), "refinedAt": v.optional(v.number()), "refinedBy": v.optional(v.string()), "refinedText": v.optional(v.string()), "testingCriteria": v.optional(v.string()), "timeframe": v.optional(v.string()) })), "beliefRefinements": v.optional(v.array(v.any())), "blocks": v.optional(v.array(v.string())), "branchThesis": v.optional(v.object({ "approvedAt": v.optional(v.number()), "approvedBy": v.optional(v.string()), "content": v.string(), "generatedAt": v.optional(v.number()), "generationMetadata": v.optional(v.object({ "langfuseTraceId": v.optional(v.string()), "modelUsed": v.string(), "promptName": v.string() })), "memoContent": v.optional(v.string()), "status": v.union(v.literal("ai_draft"), v.literal("user_draft"), v.literal("final")) })), "campaign": v.optional(v.number()), "chatId": v.optional(v.string()), "clusterStatus": v.optional(v.object({ "conditionalsByType": v.optional(v.object({ "cascades": v.number(), "counterfactuals": v.number(), "dependencies": v.number(), "other": v.number() })), "hasCascades": v.boolean(), "hasCounterfactuals": v.boolean(), "hasDependencies": v.boolean(), "mappingCompletedAt": v.optional(v.number()), "mappingCompletedBy": v.optional(v.string()), "totalConditionals": v.number() })), "confidenceImpact": v.optional(v.union(v.literal("high"), v.literal("medium"), v.literal("low"))), "createdAt": v.optional(v.number()), "createdBy": v.string(), "decisionGate": v.optional(v.object({ "decidedAt": v.optional(v.number()), "decidedBy": v.optional(v.string()), "goCriteria": v.array(v.string()), "noGoSignals": v.array(v.string()), "verdict": v.optional(v.union(v.literal("go"), v.literal("no_go"), v.literal("pivot"), v.literal("pending"))), "verdictRationale": v.optional(v.string()) })), "decisionsReached": v.optional(v.array(v.string())), "dependsOn": v.optional(v.array(v.string())), "dismissedReason": v.optional(v.string()), "durationWeeks": v.number(), "endDate": v.number(), "endingConfidence": v.optional(v.object({ "beliefConfidences": v.array(v.object({ "beliefId": v.string(), "confidence": v.number() })), "overall": v.number() })), "epistemicChain": v.optional(v.object({ "capturedAt": v.number(), "capturedBy": v.string(), "clusterEdges": v.array(v.object({ "createdAt": v.optional(v.number()), "edgeId": v.optional(v.string()), "edgeType": v.string(), "sourceId": v.string(), "targetId": v.string(), "weight": v.optional(v.number()) })), "confidenceHistory": v.optional(v.array(v.object({ "beliefId": v.string(), "recentChanges": v.array(v.object({ "confidence": v.optional(v.string()), "timestamp": v.optional(v.number()), "trigger": v.optional(v.string()) })) }))), "evidence": v.array(v.object({ "createdAt": v.optional(v.number()), "id": v.string(), "sourceType": v.optional(v.string()), "text": v.string(), "verificationStatus": v.optional(v.string()), "verified": v.boolean() })), "outcome": v.object({ "confidenceChange": v.number(), "endingConfidence": v.number(), "startingConfidence": v.number(), "summary": v.string(), "verdict": v.string() }), "primaryBelief": v.optional(v.object({ "confidenceScore": v.optional(v.number()), "criticality": v.optional(v.string()), "endingConfidence": v.number(), "endingConfidenceLabel": v.optional(v.string()), "id": v.string(), "startingConfidence": v.number(), "startingConfidenceLabel": v.optional(v.string()), "status": v.optional(v.string()), "text": v.string() })), "questions": v.array(v.object({ "answer": v.optional(v.string()), "answeredAt": v.optional(v.number()), "answeredBy": v.optional(v.string()), "answerStatus": v.optional(v.string()), "evidenceCount": v.number(), "id": v.string(), "priority": v.optional(v.string()), "status": v.string(), "text": v.string() })), "relatedBeliefs": v.optional(v.array(v.object({ "confidence": v.optional(v.string()), "confidenceScore": v.optional(v.number()), "id": v.string(), "text": v.optional(v.string()) }))), "tasksCompleted": v.optional(v.number()), "topicId": v.optional(v.string()), "totalTasks": v.optional(v.number()), "worktreeId": v.string() })), "epistemicOrigin": v.optional(v.string()), "evidenceReviewState": v.optional(v.object({ "evidenceGaps": v.array(v.string()), "evidenceQuestionMapping": v.optional(v.array(v.object({ "coverageNote": v.optional(v.string()), "evidenceId": v.string(), "questionIds": v.array(v.string()) }))), "existingEvidenceReviewed": v.boolean(), "reviewCompletedAt": v.optional(v.number()), "reviewCompletedBy": v.optional(v.string()), "strengthAreas": v.array(v.string()) })), "evidenceSignals": v.optional(v.array(v.object({ "collected": v.boolean(), "notes": v.optional(v.string()), "progress": v.optional(v.string()), "signal": v.string() }))), "gate": v.optional(v.string()), "generatedAt": v.optional(v.number()), "generatedBy": v.optional(v.string()), "globalId": v.string(), "hypothesis": v.optional(v.string()), "index": v.number(), "keyFindings": v.optional(v.array(v.string())), "keyQuestions": v.optional(v.array(v.object({ "answer": v.optional(v.string()), "answerConfidence": v.optional(v.union(v.literal("high"), v.literal("medium"), v.literal("low"))), "linkedQuestionId": v.optional(v.string()), "question": v.string(), "status": v.union(v.literal("open"), v.literal("answered"), v.literal("forked")) }))), "lane": v.optional(v.string()), "laneOrderInCampaign": v.optional(v.number()), "linkedCallIds": v.optional(v.array(v.string())), "linkedDeepResearchIds": v.optional(v.array(v.string())), "linkedDocumentIds": v.optional(v.array(v.string())), "linkedEvidenceIds": v.optional(v.array(v.string())), "linkedNewsIds": v.optional(v.array(v.string())), "linkedPrimerIds": v.optional(v.array(v.string())), "metadata": v.optional(v.any()), "name": v.string(), "nextSteps": v.optional(v.array(v.string())), "notes": v.optional(v.array(v.object({ "content": v.string(), "createdAt": v.number(), "createdBy": v.string(), "id": v.string(), "linkedBeliefId": v.optional(v.string()), "linkedQuestionId": v.optional(v.string()), "linkedTaskId": v.optional(v.string()) }))), "objective": v.string(), "orderInLane": v.optional(v.number()), "outcome": v.optional(v.object({ "confidenceChange": v.number(), "summary": v.string(), "verdict": v.union(v.literal("validated"), v.literal("invalidated"), v.literal("forked"), v.literal("inconclusive")), "whatChanged": v.string() })), "ownerPrincipalId": v.optional(v.string()), "phase": v.optional(v.string()), "phaseHistory": v.optional(v.array(v.object({ "completedAt": v.optional(v.number()), "completedBy": v.optional(v.string()), "enteredAt": v.number(), "pausedAt": v.optional(v.number()), "phase": v.string(), "resumedAt": v.optional(v.number()) }))), "priority": v.optional(v.number()), "questionsCoverage": v.optional(v.object({ "clusterNodesCovered": v.number(), "coveragePercent": v.number(), "gapsIdentified": v.optional(v.array(v.string())), "totalQuestions": v.number() })), "rationale": v.optional(v.string()), "researchEfficiency": v.optional(v.object({ "clusterCoverage": v.number(), "efficiencyScore": v.number(), "questionsPerTask": v.number(), "totalTasks": v.number() })), "retrospective": v.optional(v.object({ "confidenceChange": v.number(), "lessonsLearned": v.array(v.string()), "whatDidnt": v.array(v.string()), "whatWorked": v.array(v.string()) })), "sourceProposalId": v.optional(v.string()), "startDate": v.number(), "startingConfidence": v.optional(v.object({ "beliefConfidences": v.array(v.object({ "beliefId": v.string(), "confidence": v.number() })), "overall": v.number() })), "status": v.union(v.literal("suggested"), v.literal("planning"), v.literal("active"), v.literal("paused"), v.literal("completed"), v.literal("dismissed"), v.literal("abandoned")), "synthesisState": v.optional(v.object({ "originalBeliefIds": v.array(v.string()), "synthesisComplete": v.boolean(), "synthesisCompletedAt": v.optional(v.number()), "synthesisCompletedBy": v.optional(v.string()), "synthesisRationale": v.optional(v.string()), "synthesizedBeliefIds": v.array(v.string()) })), "targetBeliefIds": v.array(v.string()), "targetBranch": v.optional(v.string()), "targetQuestionIds": v.array(v.string()), "tasks": v.optional(v.union(v.string(), v.number(), v.boolean(), v.null(), v.record(v.string(), v.any()), v.array(v.any()))), "tenantId": v.optional(v.string()), "thesisReportId": v.optional(v.string()), "topicId": v.optional(v.string()), "triggerReason": v.optional(v.string()), "updatedAt": v.optional(v.number()), "userId": v.optional(v.string()), "workspaceId": v.optional(v.string()), "worktreeScope": v.optional(v.union(v.literal("belief"), v.literal("branch"))), "worktreeType": v.optional(v.string()) })).index("by_globalId", ["globalId"]).index("by_topicId", ["topicId"]).index("by_topicId_status", ["topicId", "status"]).index("by_tenantId", ["tenantId"]).index("by_workspaceId", ["workspaceId"]).index("by_tenant_workspace", ["tenantId", "workspaceId"]).index("by_ownerPrincipalId", ["ownerPrincipalId"]).index("by_topicId_index", ["topicId", "index"]).index("by_worktreeType", ["topicId", "worktreeType"]).index("by_topicId_priority", ["topicId", "priority"]).index("by_topicId_campaign_lane_order", ["topicId", "campaign", "laneOrderInCampaign", "orderInLane"]).index("by_topicId_lane_order", ["topicId", "lane", "orderInLane"]).index("by_topicId_branch", ["topicId", "targetBranch"]).index("by_topicId_scope", ["topicId", "worktreeScope"])
@@ -1927,7 +1927,9 @@
1927
1927
  "filterFields": [
1928
1928
  "nodeType",
1929
1929
  "createdBy",
1930
- "topicId"
1930
+ "topicId",
1931
+ "tenantId",
1932
+ "workspaceId"
1931
1933
  ]
1932
1934
  }
1933
1935
  ],
package/dist/index.js CHANGED
@@ -2636,7 +2636,7 @@ var beliefVotes = defineTable({
2636
2636
  "recorder"
2637
2637
  ]).optional(),
2638
2638
  stakeholderGroupId: idOf("stakeholderGroups").optional(),
2639
- beliefId: idOf("epistemicNodes"),
2639
+ beliefId: z.string(),
2640
2640
  domainCategory: z.string().optional(),
2641
2641
  voteDirection: z.enum(["support", "oppose", "abstain", "uncertain"]),
2642
2642
  confidence: z.number(),
@@ -2914,7 +2914,7 @@ var decisionRiskLedger = defineTable({
2914
2914
  workspaceId: z.string().optional(),
2915
2915
  riskType: z.string(),
2916
2916
  riskDescription: z.string(),
2917
- relatedBeliefId: idOf("epistemicNodes").optional(),
2917
+ relatedBeliefId: z.string().optional(),
2918
2918
  probabilityBand: z.enum(["very_low", "low", "medium", "high", "very_high"]),
2919
2919
  impactBand: z.enum(["very_low", "low", "medium", "high", "very_high"]),
2920
2920
  ownerPrincipalId: z.string().optional(),
@@ -3110,7 +3110,11 @@ var epistemicNodeEmbeddings = defineTable({
3110
3110
  component: "kernel",
3111
3111
  category: "embedding",
3112
3112
  shape: z.object({
3113
- nodeId: idOf("epistemicNodes"),
3113
+ // Canonical UUIDv7 globalId of the embedded node (not a Convex Id). Every
3114
+ // cross-row reference in the graph is the node's globalId, resolved via the
3115
+ // `by_globalId` index — see resolveNodeGlobalId/resolveNodeDocSoft. This
3116
+ // keeps embeddings stable across extract/rebuild and carbon-copies.
3117
+ nodeId: z.string(),
3114
3118
  tenantId: z.string().optional(),
3115
3119
  workspaceId: z.string().optional(),
3116
3120
  topicId: z.string().optional(),
@@ -3165,7 +3169,13 @@ var epistemicNodeEmbeddings = defineTable({
3165
3169
  name: "by_embedding",
3166
3170
  vectorField: "embedding",
3167
3171
  dimensions: 1024,
3168
- filterFields: ["nodeType", "createdBy", "topicId"]
3172
+ filterFields: [
3173
+ "nodeType",
3174
+ "createdBy",
3175
+ "topicId",
3176
+ "tenantId",
3177
+ "workspaceId"
3178
+ ]
3169
3179
  }
3170
3180
  ]
3171
3181
  });
@@ -3911,11 +3921,12 @@ var crossProjectConnections = defineTable({
3911
3921
  category: "intelligence",
3912
3922
  shape: z.object({
3913
3923
  sourceProjectId: z.string().optional(),
3914
- sourceTopicId: idOf("topics").optional(),
3915
- sourceNodeId: idOf("epistemicNodes"),
3924
+ // globalId references (UUIDv7), resolved via by_globalId — not Convex Ids.
3925
+ sourceTopicId: z.string().optional(),
3926
+ sourceNodeId: z.string(),
3916
3927
  targetProjectId: z.string().optional(),
3917
- targetTopicId: idOf("topics").optional(),
3918
- targetNodeId: idOf("epistemicNodes"),
3928
+ targetTopicId: z.string().optional(),
3929
+ targetNodeId: z.string(),
3919
3930
  semanticSimilarity: z.number(),
3920
3931
  matchSignals: z.object({
3921
3932
  beliefTextSimilarity: z.number(),
@@ -3930,7 +3941,7 @@ var crossProjectConnections = defineTable({
3930
3941
  suggestedWeight: z.number().optional(),
3931
3942
  rationale: z.string(),
3932
3943
  decision: z.enum(["pending", "accepted", "declined"]),
3933
- acceptedEdgeId: idOf("epistemicEdges").optional(),
3944
+ acceptedEdgeId: z.string().optional(),
3934
3945
  declineReason: z.string().optional(),
3935
3946
  declineCategory: z.enum([
3936
3947
  "not_relevant",
@@ -12167,7 +12178,7 @@ var epistemicNodes = defineTable({
12167
12178
  ]),
12168
12179
  externalSourceType: z.string().optional(),
12169
12180
  aiProvider: z.string().optional(),
12170
- extractedFromNodeId: idOf("epistemicNodes").optional(),
12181
+ extractedFromNodeId: z.string().optional(),
12171
12182
  extractionModel: z.string().optional(),
12172
12183
  extractionPromptName: z.string().optional(),
12173
12184
  extractionPromptVersion: z.number().optional(),
@@ -12188,7 +12199,7 @@ var epistemicNodes = defineTable({
12188
12199
  "outdated"
12189
12200
  ]).optional(),
12190
12201
  status: z.enum(["active", "superseded", "archived", "deleted"]),
12191
- supersededBy: idOf("epistemicNodes").optional(),
12202
+ supersededBy: z.string().optional(),
12192
12203
  topicId: z.string().optional(),
12193
12204
  projectId: z.string().optional(),
12194
12205
  createdBy: z.string(),
@@ -12610,7 +12621,7 @@ var workflowPullRequests = defineTable({
12610
12621
  category: "workflow",
12611
12622
  shape: z.object({
12612
12623
  topicId: z.string().optional(),
12613
- worktreeId: idOf("worktrees"),
12624
+ worktreeId: z.string(),
12614
12625
  status: z.enum([
12615
12626
  "pending_review",
12616
12627
  "changes_requested",
@@ -41,5 +41,5 @@
41
41
  "convex-validators",
42
42
  "proof-attestation"
43
43
  ],
44
- "signedAt": 1782487237336
44
+ "signedAt": 1782518235270
45
45
  }
@@ -1912,7 +1912,7 @@ var beliefVotes = defineTable({
1912
1912
  "recorder"
1913
1913
  ]).optional(),
1914
1914
  stakeholderGroupId: idOf("stakeholderGroups").optional(),
1915
- beliefId: idOf("epistemicNodes"),
1915
+ beliefId: z.string(),
1916
1916
  domainCategory: z.string().optional(),
1917
1917
  voteDirection: z.enum(["support", "oppose", "abstain", "uncertain"]),
1918
1918
  confidence: z.number(),
@@ -2190,7 +2190,7 @@ var decisionRiskLedger = defineTable({
2190
2190
  workspaceId: z.string().optional(),
2191
2191
  riskType: z.string(),
2192
2192
  riskDescription: z.string(),
2193
- relatedBeliefId: idOf("epistemicNodes").optional(),
2193
+ relatedBeliefId: z.string().optional(),
2194
2194
  probabilityBand: z.enum(["very_low", "low", "medium", "high", "very_high"]),
2195
2195
  impactBand: z.enum(["very_low", "low", "medium", "high", "very_high"]),
2196
2196
  ownerPrincipalId: z.string().optional(),
@@ -2386,7 +2386,11 @@ var epistemicNodeEmbeddings = defineTable({
2386
2386
  component: "kernel",
2387
2387
  category: "embedding",
2388
2388
  shape: z.object({
2389
- nodeId: idOf("epistemicNodes"),
2389
+ // Canonical UUIDv7 globalId of the embedded node (not a Convex Id). Every
2390
+ // cross-row reference in the graph is the node's globalId, resolved via the
2391
+ // `by_globalId` index — see resolveNodeGlobalId/resolveNodeDocSoft. This
2392
+ // keeps embeddings stable across extract/rebuild and carbon-copies.
2393
+ nodeId: z.string(),
2390
2394
  tenantId: z.string().optional(),
2391
2395
  workspaceId: z.string().optional(),
2392
2396
  topicId: z.string().optional(),
@@ -2441,7 +2445,13 @@ var epistemicNodeEmbeddings = defineTable({
2441
2445
  name: "by_embedding",
2442
2446
  vectorField: "embedding",
2443
2447
  dimensions: 1024,
2444
- filterFields: ["nodeType", "createdBy", "topicId"]
2448
+ filterFields: [
2449
+ "nodeType",
2450
+ "createdBy",
2451
+ "topicId",
2452
+ "tenantId",
2453
+ "workspaceId"
2454
+ ]
2445
2455
  }
2446
2456
  ]
2447
2457
  });
@@ -3187,11 +3197,12 @@ var crossProjectConnections = defineTable({
3187
3197
  category: "intelligence",
3188
3198
  shape: z.object({
3189
3199
  sourceProjectId: z.string().optional(),
3190
- sourceTopicId: idOf("topics").optional(),
3191
- sourceNodeId: idOf("epistemicNodes"),
3200
+ // globalId references (UUIDv7), resolved via by_globalId — not Convex Ids.
3201
+ sourceTopicId: z.string().optional(),
3202
+ sourceNodeId: z.string(),
3192
3203
  targetProjectId: z.string().optional(),
3193
- targetTopicId: idOf("topics").optional(),
3194
- targetNodeId: idOf("epistemicNodes"),
3204
+ targetTopicId: z.string().optional(),
3205
+ targetNodeId: z.string(),
3195
3206
  semanticSimilarity: z.number(),
3196
3207
  matchSignals: z.object({
3197
3208
  beliefTextSimilarity: z.number(),
@@ -3206,7 +3217,7 @@ var crossProjectConnections = defineTable({
3206
3217
  suggestedWeight: z.number().optional(),
3207
3218
  rationale: z.string(),
3208
3219
  decision: z.enum(["pending", "accepted", "declined"]),
3209
- acceptedEdgeId: idOf("epistemicEdges").optional(),
3220
+ acceptedEdgeId: z.string().optional(),
3210
3221
  declineReason: z.string().optional(),
3211
3222
  declineCategory: z.enum([
3212
3223
  "not_relevant",
@@ -10686,7 +10697,7 @@ var epistemicNodes = defineTable({
10686
10697
  ]),
10687
10698
  externalSourceType: z.string().optional(),
10688
10699
  aiProvider: z.string().optional(),
10689
- extractedFromNodeId: idOf("epistemicNodes").optional(),
10700
+ extractedFromNodeId: z.string().optional(),
10690
10701
  extractionModel: z.string().optional(),
10691
10702
  extractionPromptName: z.string().optional(),
10692
10703
  extractionPromptVersion: z.number().optional(),
@@ -10707,7 +10718,7 @@ var epistemicNodes = defineTable({
10707
10718
  "outdated"
10708
10719
  ]).optional(),
10709
10720
  status: z.enum(["active", "superseded", "archived", "deleted"]),
10710
- supersededBy: idOf("epistemicNodes").optional(),
10721
+ supersededBy: z.string().optional(),
10711
10722
  topicId: z.string().optional(),
10712
10723
  projectId: z.string().optional(),
10713
10724
  createdBy: z.string(),
@@ -11129,7 +11140,7 @@ var workflowPullRequests = defineTable({
11129
11140
  category: "workflow",
11130
11141
  shape: z.object({
11131
11142
  topicId: z.string().optional(),
11132
- worktreeId: idOf("worktrees"),
11143
+ worktreeId: z.string(),
11133
11144
  status: z.enum([
11134
11145
  "pending_review",
11135
11146
  "changes_requested",