From 8d9779b771413d449d915f7bed3ee4a1ab3d2971 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 30 Apr 2026 21:21:30 +0000 Subject: [PATCH 1/4] Plan counterpart staging identity fix Agent-Logs-Url: https://github.com/DHCross/Shipyard/sessions/bd1e4e3a-b5f9-4f5d-a4a8-681bc34c2943 Co-authored-by: DHCross <45954119+DHCross@users.noreply.github.com> --- .../sherlog-velocity/data/active-session.json | 8 +- .../sherlog-velocity/data/gap-history.jsonl | 1 + vessel/sherlog-velocity/data/self-model.json | 2493 +++++++++-------- .../sherlog-velocity/data/session-log.jsonl | 1 + 4 files changed, 1282 insertions(+), 1221 deletions(-) diff --git a/vessel/sherlog-velocity/data/active-session.json b/vessel/sherlog-velocity/data/active-session.json index 6cfb2d89..c58aec21 100644 --- a/vessel/sherlog-velocity/data/active-session.json +++ b/vessel/sherlog-velocity/data/active-session.json @@ -1,9 +1,9 @@ { - "feature": "Add Symbolic Moment Doctrine to Retrieval Corpus", + "feature": "Counterpart staging identity bug", "type": "discovery", - "startTime": "2026-04-29T08:28:10.223Z", + "startTime": "2026-04-30T21:20:10.754Z", "notes": [], - "branch": "main", - "startHead": "07cd195c2b59c9f24428878bdac840d93d22bec2", + "branch": "copilot/fix-staging-identity-bug", + "startHead": "c7f6e8a121daa51581e5bceacda38e196b209d02", "cwd": "." } \ No newline at end of file diff --git a/vessel/sherlog-velocity/data/gap-history.jsonl b/vessel/sherlog-velocity/data/gap-history.jsonl index b71948d1..cde92e85 100644 --- a/vessel/sherlog-velocity/data/gap-history.jsonl +++ b/vessel/sherlog-velocity/data/gap-history.jsonl @@ -817,3 +817,4 @@ {"version":1,"feature":"Refined Retrieval Seam Patch","feature_key":"refined-retrieval-seam-patch","timestamp":"2026-04-29T08:14:34.073Z","timestamp_epoch":1777450474,"day_epoch":1777420800,"gaps":["workspace_integrity","stale_context","architectural_limit_exceeded","complexity_hotspot","type_safety_risk","arch_monolith","hygiene_complexity_hotspot","hygiene_any_abuse"],"ranked_gaps":[{"gap":"workspace_integrity","base_weight":8,"salience_weight":8,"persistence_boost":0,"streak":0,"occurrences":0,"age_days":0,"last_seen":null},{"gap":"stale_context","base_weight":7,"salience_weight":7,"persistence_boost":0,"streak":0,"occurrences":0,"age_days":0,"last_seen":null},{"gap":"architectural_limit_exceeded","base_weight":6,"salience_weight":6,"persistence_boost":0,"streak":0,"occurrences":0,"age_days":0,"last_seen":null},{"gap":"complexity_hotspot","base_weight":5,"salience_weight":5,"persistence_boost":0,"streak":0,"occurrences":0,"age_days":0,"last_seen":null},{"gap":"type_safety_risk","base_weight":4,"salience_weight":4,"persistence_boost":0,"streak":0,"occurrences":0,"age_days":0,"last_seen":null},{"gap":"arch_monolith","base_weight":3,"salience_weight":3,"persistence_boost":0,"streak":0,"occurrences":0,"age_days":0,"last_seen":null},{"gap":"hygiene_complexity_hotspot","base_weight":2,"salience_weight":2,"persistence_boost":0,"streak":0,"occurrences":0,"age_days":0,"last_seen":null},{"gap":"hygiene_any_abuse","base_weight":1,"salience_weight":1,"persistence_boost":0,"streak":0,"occurrences":0,"age_days":0,"last_seen":null}]} {"version":1,"feature":"Black Feather Ledger","feature_key":"black-feather-ledger","timestamp":"2026-04-29T22:45:03.725Z","timestamp_epoch":1777502703,"day_epoch":1777420800,"gaps":["documentation","stale_context","architectural_limit_exceeded","complexity_hotspot","arch_monolith","hygiene_complexity_hotspot"],"ranked_gaps":[{"gap":"documentation","base_weight":6,"salience_weight":6,"persistence_boost":0,"streak":0,"occurrences":0,"age_days":0,"last_seen":null},{"gap":"stale_context","base_weight":5,"salience_weight":5,"persistence_boost":0,"streak":0,"occurrences":0,"age_days":0,"last_seen":null},{"gap":"architectural_limit_exceeded","base_weight":4,"salience_weight":4,"persistence_boost":0,"streak":0,"occurrences":0,"age_days":0,"last_seen":null},{"gap":"complexity_hotspot","base_weight":3,"salience_weight":3,"persistence_boost":0,"streak":0,"occurrences":0,"age_days":0,"last_seen":null},{"gap":"arch_monolith","base_weight":2,"salience_weight":2,"persistence_boost":0,"streak":0,"occurrences":0,"age_days":0,"last_seen":null},{"gap":"hygiene_complexity_hotspot","base_weight":1,"salience_weight":1,"persistence_boost":0,"streak":0,"occurrences":0,"age_days":0,"last_seen":null}]} {"version":1,"feature":"Temporal Aperture Doctrine + Dashboard Aperture Transparency","feature_key":"temporal-aperture-doctrine-dashboard-aperture-transparency","timestamp":"2026-04-30T06:59:05.288Z","timestamp_epoch":1777532345,"day_epoch":1777507200,"gaps":["stale_context","type_safety_risk","architectural_limit_exceeded","complexity_hotspot","hygiene_any_abuse","arch_monolith","hygiene_complexity_hotspot"],"ranked_gaps":[{"gap":"stale_context","base_weight":7,"salience_weight":7,"persistence_boost":0,"streak":0,"occurrences":0,"age_days":0,"last_seen":null},{"gap":"type_safety_risk","base_weight":6,"salience_weight":6,"persistence_boost":0,"streak":0,"occurrences":0,"age_days":0,"last_seen":null},{"gap":"architectural_limit_exceeded","base_weight":5,"salience_weight":5,"persistence_boost":0,"streak":0,"occurrences":0,"age_days":0,"last_seen":null},{"gap":"complexity_hotspot","base_weight":4,"salience_weight":4,"persistence_boost":0,"streak":0,"occurrences":0,"age_days":0,"last_seen":null},{"gap":"hygiene_any_abuse","base_weight":3,"salience_weight":3,"persistence_boost":0,"streak":0,"occurrences":0,"age_days":0,"last_seen":null},{"gap":"arch_monolith","base_weight":2,"salience_weight":2,"persistence_boost":0,"streak":0,"occurrences":0,"age_days":0,"last_seen":null},{"gap":"hygiene_complexity_hotspot","base_weight":1,"salience_weight":1,"persistence_boost":0,"streak":0,"occurrences":0,"age_days":0,"last_seen":null}]} +{"version":1,"feature":"Counterpart staging identity bug","feature_key":"counterpart-staging-identity-bug","timestamp":"2026-04-30T21:19:43.540Z","timestamp_epoch":1777583983,"day_epoch":1777507200,"gaps":["stale_context","type_safety_risk","architectural_limit_exceeded","complexity_hotspot","hygiene_any_abuse","arch_monolith","hygiene_complexity_hotspot"],"ranked_gaps":[{"gap":"stale_context","base_weight":7,"salience_weight":7,"persistence_boost":0,"streak":0,"occurrences":0,"age_days":0,"last_seen":null},{"gap":"type_safety_risk","base_weight":6,"salience_weight":6,"persistence_boost":0,"streak":0,"occurrences":0,"age_days":0,"last_seen":null},{"gap":"architectural_limit_exceeded","base_weight":5,"salience_weight":5,"persistence_boost":0,"streak":0,"occurrences":0,"age_days":0,"last_seen":null},{"gap":"complexity_hotspot","base_weight":4,"salience_weight":4,"persistence_boost":0,"streak":0,"occurrences":0,"age_days":0,"last_seen":null},{"gap":"hygiene_any_abuse","base_weight":3,"salience_weight":3,"persistence_boost":0,"streak":0,"occurrences":0,"age_days":0,"last_seen":null},{"gap":"arch_monolith","base_weight":2,"salience_weight":2,"persistence_boost":0,"streak":0,"occurrences":0,"age_days":0,"last_seen":null},{"gap":"hygiene_complexity_hotspot","base_weight":1,"salience_weight":1,"persistence_boost":0,"streak":0,"occurrences":0,"age_days":0,"last_seen":null}]} diff --git a/vessel/sherlog-velocity/data/self-model.json b/vessel/sherlog-velocity/data/self-model.json index 190431bf..43784f47 100644 --- a/vessel/sherlog-velocity/data/self-model.json +++ b/vessel/sherlog-velocity/data/self-model.json @@ -1,7 +1,7 @@ { "version": 1, - "generated_at": "2026-04-30T06:59:08.753Z", - "repo_root": "/Users/dancross/Dev/GitHub/Shipyard", + "generated_at": "2026-04-30T21:19:44.054Z", + "repo_root": "/home/runner/work/Shipyard/Shipyard", "source_roots": [ "vessel/src", "vessel/src/app", @@ -9,13 +9,13 @@ "vessel/src/lib/server" ], "summary": { - "total_modules": 404, - "total_edges": 954, - "fragile_file_count": 35, - "contract_anchor_count": 47, + "total_modules": 409, + "total_edges": 968, + "fragile_file_count": 19, + "contract_anchor_count": 49, "zone_coverage_pct": 100 }, - "narrative": "This codebase contains:\n- 138 lib files, 111 test files, 76 route files, 51 component files, 17 page files, 6 hook files, 5 source files\n- 954 internal dependency edges\n- 35 files with elevated fragility\n- 404 of 404 files mapped to declared zones (0 unmapped)\n- Contract anchor surfaces: intent_contract, governor_contract, repair_contract, scope_contract", + "narrative": "This codebase contains:\n- 140 lib files, 113 test files, 77 route files, 51 component files, 17 page files, 6 hook files, 5 source files\n- 968 internal dependency edges\n- 19 files with elevated fragility\n- 409 of 409 files mapped to declared zones (0 unmapped)\n- Contract anchor surfaces: intent_contract, governor_contract, repair_contract, scope_contract", "modules": [ { "path": "vessel/src/hooks/useOracleChat.ts", @@ -54,17 +54,130 @@ ], "export_count": 29, "import_count": 16, - "churn": 23, + "churn": 0, "fragility": { - "score": 7, + "score": 5, "label": "high" }, "zone": "Vessel Src Zone" }, + { + "path": "vessel/src/lib/vaultSync.ts", + "role": "lib", + "lines": 2163, + "exports": [ + "prepareForSignOut", + "resetSyncGuard", + "clearLocalVault", + "getVaultOwnerUid", + "stampVaultOwnerUid", + "buildAstroPosterForProfile", + "vaultProfileToBirthInput", + "getLocalVaultSnapshot", + "getRelationshipContextHint", + "upsertRelationshipHistoryEntry", + "applyCloudVaultToLocal", + "getLatestSavedLocation", + "getAllSavedLocations", + "rememberSavedLocation", + "loadPrimaryProfileInput", + "listVaultProfiles", + "getVaultProfileById", + "getPlannerVaultSnapshot", + "savePrimaryProfileInput", + "listPlannerReflections", + "getPlannerReflection", + "savePlannerReflection", + "listPlannerTasks", + "savePlannerTask", + "updatePlannerTaskState", + "upsertVaultProfile", + "deleteVaultProfile", + "setProfileCurrentLocation", + "promoteBirthLocationAsCurrent", + "getVaultPosterByProfileId", + "getBlueprintPosterRegenerationNotice", + "isBlueprintSparse", + "generatePosterForProfile", + "ensureVaultPosterForProfile", + "appendRuntimeEvents", + "scheduleBackgroundVaultSync", + "syncVaultNow", + "recoverVaultFromCloud", + "getConstitutionalCalibrations", + "upsertConstitutionalCalibration", + "KEYS", + "VAULT_SYNC_EVENT", + "StagingRole", + "DataProvenance", + "LivingStatus", + "BirthProfileInput", + "ProfileCurrentLocation", + "PlannerReflectionFit", + "PlannerReflection", + "PlannerTaskCategory", + "PlannerTaskState", + "PlannerTaskBlock", + "VaultProfile", + "VaultPoster", + "RuntimeSystemEvent", + "PlannerVaultSnapshot", + "SavedLocation", + "RelationshipParticipant", + "RelationshipHistoryEntry" + ], + "export_count": 59, + "import_count": 9, + "churn": 0, + "fragility": { + "score": 4, + "label": "medium" + }, + "zone": "Vessel Src Lib Zone" + }, + { + "path": "vessel/src/lib/raven/constellationVault.ts", + "role": "lib", + "lines": 806, + "exports": [ + "getConstellationEntries", + "upsertConstellationEntry", + "removeConstellationEntry", + "buildWrapUpArtifacts", + "convertPoeticIndexCardToArtifact", + "storePoeticIndexCard", + "captureSingleMessageArtifacts", + "CONSTELLATION_VAULT_EVENT", + "SessionSummaryArtifact", + "InsightCardArtifact", + "SymbolLogic", + "LoadQuality", + "ForceTempo", + "ForceReading", + "SystemLoad", + "EngineSnapshot", + "VisibleLayer", + "DataLayer", + "PoeticIndexCardArtifact", + "CapturedArtifacts", + "ConstellationArtifact", + "ConstellationEntry", + "SessionMessageForConstellation", + "SessionStateForConstellation" + ], + "export_count": 24, + "import_count": 4, + "churn": 0, + "fragility": { + "score": 4, + "label": "medium" + }, + "zone": "Vessel Src Lib Zone" + }, { "path": "vessel/src/lib/raven/symbolicMomentFrontstage.ts", "role": "lib", - "lines": 1297, + "lines": 1371, "exports": [ "validateInternalSymbolicMomentStructure", "validateSymbolicMomentPreTestimony", @@ -90,11 +203,11 @@ "StructuredSymbolicMomentResult" ], "export_count": 22, - "import_count": 5, - "churn": 42, + "import_count": 6, + "churn": 0, "fragility": { - "score": 6, - "label": "high" + "score": 4, + "label": "medium" }, "zone": "Vessel Src Lib Zone" }, @@ -171,10 +284,102 @@ ], "export_count": 65, "import_count": 8, - "churn": 20, + "churn": 0, "fragility": { - "score": 6, - "label": "high" + "score": 4, + "label": "medium" + }, + "zone": "Vessel Src App Zone" + }, + { + "path": "vessel/src/app/api/raven-chat/llmProvider.ts", + "role": "route", + "lines": 902, + "exports": [ + "isThinkingModel", + "resolveGeminiEndpoint", + "geminiChatFetch", + "estimateLlmTokens", + "estimateLlmInputTokens", + "sleep", + "resetLimiterWindowIfNeeded", + "reserveLlmPermit", + "markLlmBackpressure", + "clearLlmBackpressure", + "callLLM", + "callLLMStream", + "hasConfiguredLlmKey", + "LLM_WINDOW_MS", + "LLM_RPM_LIMIT", + "LLM_TPM_LIMIT", + "LLM_MAX_INFLIGHT", + "LLM_FAILOVER_JITTER_MIN_MS", + "LLM_FAILOVER_JITTER_MAX_MS", + "MIN_EMERGENCY_OUTPUT_TOKENS", + "GEMINI_THINKING_OVERHEAD_TOKENS", + "llmLimiterState", + "GeminiEndpoint" + ], + "export_count": 23, + "import_count": 8, + "churn": 0, + "fragility": { + "score": 4, + "label": "medium" + }, + "zone": "Vessel Src App Zone" + }, + { + "path": "vessel/src/app/api/raven-chat/requestParsing.ts", + "role": "route", + "lines": 824, + "exports": [ + "normalizeRelationalContext", + "inferRelationalContext", + "hasFullChartCoordinates", + "toCoreProfile", + "asTrimmedText", + "isChatRole", + "asPromptMode", + "toApertureMode", + "extractLiveLocationQuery", + "hasUSStateHint", + "countryCodeHint", + "summarizeProfileArchitecture", + "parseBirthDateParts", + "parseBirthTimeParts", + "profileInputToBlueprintShape", + "toCognitiveVoiceContext", + "isValidCoordinatePair", + "hasAnyCoordinateAnchor", + "parseChatRequest", + "sanitizeProfile", + "sanitizeConstitutionalCalibrationRecord", + "mergeHydratedProfile", + "needsVaultHydration", + "selectVaultProfileForHydration", + "hydrateProfilesFromVault", + "pickVaultSavedLocationAnchor", + "hydrateProfileFromVault", + "hasPersistedCurrentLocation", + "hasLiveCoordinateData", + "asObjectRecord", + "toIsoDateFromParts", + "toIsoTimeFromParts", + "toNumericText", + "normalizeCountryCode", + "inferCountryCodeFromLabel", + "isGovernorState", + "hasBirthContext", + "US_STATE_CODES", + "US_STATE_NAMES" + ], + "export_count": 39, + "import_count": 12, + "churn": 0, + "fragility": { + "score": 4, + "label": "medium" }, "zone": "Vessel Src App Zone" }, @@ -231,10 +436,10 @@ ], "export_count": 45, "import_count": 11, - "churn": 20, + "churn": 0, "fragility": { - "score": 6, - "label": "high" + "score": 4, + "label": "medium" }, "zone": "Vessel Src App Zone" }, @@ -256,17 +461,17 @@ ], "export_count": 10, "import_count": 37, - "churn": 30, + "churn": 0, "fragility": { - "score": 5, - "label": "high" + "score": 3, + "label": "medium" }, "zone": "Vessel Src Zone" }, { "path": "vessel/src/lib/v3MathBrain.ts", "role": "lib", - "lines": 1213, + "lines": 1254, "exports": [ "buildV3MathTelemetry", "toV3MathPromptContext", @@ -284,193 +489,17 @@ ], "export_count": 13, "import_count": 0, - "churn": 16, + "churn": 0, "fragility": { - "score": 5, - "label": "high" + "score": 3, + "label": "medium" }, "zone": "Vessel Src Lib Zone" }, { - "path": "vessel/src/lib/raven/symbolicMomentComposer.ts", + "path": "vessel/src/lib/raven/doctrineManifest.ts", "role": "lib", - "lines": 1769, - "exports": [ - "resolveLoadTier", - "buildSymbolicMomentPayload", - "composeSymbolicMomentNarrative", - "sanitizeUserFacingNarrative", - "composeNamedStormNarrative", - "AspectType", - "ParsedDriver", - "NarrativeSignature", - "LunarContext", - "LocationContext", - "SymbolicMomentNarrative", - "LoadTier", - "NamedStormNarrative", - "SymbolicMomentPayload" - ], - "export_count": 14, - "import_count": 3, - "churn": 14, - "fragility": { - "score": 5, - "label": "high" - }, - "zone": "Vessel Src Lib Zone" - }, - { - "path": "vessel/src/app/page.tsx", - "role": "page", - "lines": 5709, - "exports": [ - "App" - ], - "export_count": 1, - "import_count": 44, - "churn": 35, - "fragility": { - "score": 5, - "label": "high" - }, - "zone": "Vessel Src App Zone" - }, - { - "path": "vessel/src/app/api/raven-chat/route.ts", - "role": "route", - "lines": 2831, - "exports": [ - "POST", - "maxDuration", - "dynamic" - ], - "export_count": 3, - "import_count": 69, - "churn": 80, - "fragility": { - "score": 5, - "label": "high" - }, - "zone": "Vessel Src App Zone" - }, - { - "path": "vessel/src/lib/vaultSync.ts", - "role": "lib", - "lines": 2163, - "exports": [ - "prepareForSignOut", - "resetSyncGuard", - "clearLocalVault", - "getVaultOwnerUid", - "stampVaultOwnerUid", - "buildAstroPosterForProfile", - "vaultProfileToBirthInput", - "getLocalVaultSnapshot", - "getRelationshipContextHint", - "upsertRelationshipHistoryEntry", - "applyCloudVaultToLocal", - "getLatestSavedLocation", - "getAllSavedLocations", - "rememberSavedLocation", - "loadPrimaryProfileInput", - "listVaultProfiles", - "getVaultProfileById", - "getPlannerVaultSnapshot", - "savePrimaryProfileInput", - "listPlannerReflections", - "getPlannerReflection", - "savePlannerReflection", - "listPlannerTasks", - "savePlannerTask", - "updatePlannerTaskState", - "upsertVaultProfile", - "deleteVaultProfile", - "setProfileCurrentLocation", - "promoteBirthLocationAsCurrent", - "getVaultPosterByProfileId", - "getBlueprintPosterRegenerationNotice", - "isBlueprintSparse", - "generatePosterForProfile", - "ensureVaultPosterForProfile", - "appendRuntimeEvents", - "scheduleBackgroundVaultSync", - "syncVaultNow", - "recoverVaultFromCloud", - "getConstitutionalCalibrations", - "upsertConstitutionalCalibration", - "KEYS", - "VAULT_SYNC_EVENT", - "StagingRole", - "DataProvenance", - "LivingStatus", - "BirthProfileInput", - "ProfileCurrentLocation", - "PlannerReflectionFit", - "PlannerReflection", - "PlannerTaskCategory", - "PlannerTaskState", - "PlannerTaskBlock", - "VaultProfile", - "VaultPoster", - "RuntimeSystemEvent", - "PlannerVaultSnapshot", - "SavedLocation", - "RelationshipParticipant", - "RelationshipHistoryEntry" - ], - "export_count": 59, - "import_count": 9, - "churn": 5, - "fragility": { - "score": 4, - "label": "medium" - }, - "zone": "Vessel Src Lib Zone" - }, - { - "path": "vessel/src/lib/raven/constellationVault.ts", - "role": "lib", - "lines": 806, - "exports": [ - "getConstellationEntries", - "upsertConstellationEntry", - "removeConstellationEntry", - "buildWrapUpArtifacts", - "convertPoeticIndexCardToArtifact", - "storePoeticIndexCard", - "captureSingleMessageArtifacts", - "CONSTELLATION_VAULT_EVENT", - "SessionSummaryArtifact", - "InsightCardArtifact", - "SymbolLogic", - "LoadQuality", - "ForceTempo", - "ForceReading", - "SystemLoad", - "EngineSnapshot", - "VisibleLayer", - "DataLayer", - "PoeticIndexCardArtifact", - "CapturedArtifacts", - "ConstellationArtifact", - "ConstellationEntry", - "SessionMessageForConstellation", - "SessionStateForConstellation" - ], - "export_count": 24, - "import_count": 4, - "churn": 4, - "fragility": { - "score": 4, - "label": "medium" - }, - "zone": "Vessel Src Lib Zone" - }, - { - "path": "vessel/src/lib/raven/doctrineManifest.ts", - "role": "lib", - "lines": 1055, + "lines": 1098, "exports": [ "getDoctrineManifestEntryBySourceFile", "getDoctrineManifestEntriesByBundle", @@ -494,9 +523,9 @@ ], "export_count": 19, "import_count": 1, - "churn": 8, + "churn": 0, "fragility": { - "score": 4, + "score": 3, "label": "medium" }, "zone": "Vessel Src Lib Zone" @@ -543,42 +572,42 @@ ], "export_count": 34, "import_count": 0, - "churn": 7, + "churn": 0, "fragility": { - "score": 4, + "score": 3, "label": "medium" }, "zone": "Vessel Src Lib Zone" }, { - "path": "vessel/src/lib/raven/persona-law.ts", + "path": "vessel/src/lib/raven/protocolEngine.ts", "role": "lib", - "lines": 482, + "lines": 1426, "exports": [ - "buildKernelPrompt", - "RAVEN_IDENTITY", - "CONSTITUTIONAL_AXIOMS", - "SIGNAL_PATH", - "VOICE_KERNEL", - "GROUNDING_AND_COMPRESSION_PROTOCOL", - "CONVERSATIONAL_PRINCIPLE", - "UX_CONSTITUTION", - "RESONANT_FIELD_DOCTRINE", - "SOVEREIGNTY_LAW", - "SOVEREIGNTY_VALIDATION", - "LANGUAGE_GOVERNOR", - "PATTERN_SURFACE_GOVERNOR", - "MIRROR_FLOW_TIERS", - "RAVEN_INSTRUMENT_RESPONSE_LAW", - "MAP_FIRST_SEQUENCING_LAW", - "EPISTEMIC_BRIDGE_AND_CITATION_LAW", - "EPISTEMIC_INTEGRITY_LAW" + "shouldUnlockInDepth", + "validateFrontstagePatternTitle", + "passesFrontstageValidation", + "detectSignals", + "resolveProtocolInjectionBudget", + "applyInjectionTokenBudget", + "injectProtocols", + "formatRetrievedDoctrineContext", + "formatInjectionForPrompt", + "TIER_CONTENT_POLICY", + "OutputDepthTier", + "FrontstagePatternValidation", + "DetectedSignal", + "ProtocolInjectionBudget", + "InjectionResult", + "RetrievedDoctrineSnippet", + "DoctrineAuthorityLabel", + "InjectionContext" ], "export_count": 18, - "import_count": 0, - "churn": 13, + "import_count": 5, + "churn": 0, "fragility": { - "score": 4, + "score": 3, "label": "medium" }, "zone": "Vessel Src Lib Zone" @@ -609,9 +638,38 @@ ], "export_count": 18, "import_count": 7, - "churn": 10, + "churn": 0, "fragility": { - "score": 4, + "score": 3, + "label": "medium" + }, + "zone": "Vessel Src Lib Zone" + }, + { + "path": "vessel/src/lib/raven/symbolicMomentComposer.ts", + "role": "lib", + "lines": 1779, + "exports": [ + "resolveLoadTier", + "buildSymbolicMomentPayload", + "composeSymbolicMomentNarrative", + "sanitizeUserFacingNarrative", + "composeNamedStormNarrative", + "AspectType", + "ParsedDriver", + "NarrativeSignature", + "LunarContext", + "LocationContext", + "SymbolicMomentNarrative", + "LoadTier", + "NamedStormNarrative", + "SymbolicMomentPayload" + ], + "export_count": 14, + "import_count": 4, + "churn": 0, + "fragility": { + "score": 3, "label": "medium" }, "zone": "Vessel Src Lib Zone" @@ -665,393 +723,68 @@ "BirthTimeAuditEntry", "BirthTimeRecord" ], - "export_count": 43, - "import_count": 2, - "churn": 8, - "fragility": { - "score": 4, - "label": "medium" - }, - "zone": "Vessel Src Lib Zone" - }, - { - "path": "vessel/src/lib/raven/__tests__/responseRenderer.test.ts", - "role": "test", - "lines": 814, - "export_count": 0, - "import_count": 1, - "churn": 16, - "fragility": { - "score": 4, - "label": "medium" - }, - "zone": "Vessel Src Lib Zone" - }, - { - "path": "vessel/src/components/AlignmentCorridor.tsx", - "role": "component", - "lines": 1581, - "exports": [ - "AlignmentCorridor", - "CorridorSynastryAspect", - "CorridorTransitDriverSet", - "CorridorTransitDrivers", - "RelationalFallbackNotice", - "OracleBalanceTagPayload", - "SubjectContext", - "SessionSignatureData" - ], - "export_count": 8, - "import_count": 5, - "churn": 14, - "fragility": { - "score": 4, - "label": "medium" - }, - "zone": "Vessel Src Zone" - }, - { - "path": "vessel/src/app/api/raven-chat/llmProvider.ts", - "role": "route", - "lines": 902, - "exports": [ - "isThinkingModel", - "resolveGeminiEndpoint", - "geminiChatFetch", - "estimateLlmTokens", - "estimateLlmInputTokens", - "sleep", - "resetLimiterWindowIfNeeded", - "reserveLlmPermit", - "markLlmBackpressure", - "clearLlmBackpressure", - "callLLM", - "callLLMStream", - "hasConfiguredLlmKey", - "LLM_WINDOW_MS", - "LLM_RPM_LIMIT", - "LLM_TPM_LIMIT", - "LLM_MAX_INFLIGHT", - "LLM_FAILOVER_JITTER_MIN_MS", - "LLM_FAILOVER_JITTER_MAX_MS", - "MIN_EMERGENCY_OUTPUT_TOKENS", - "GEMINI_THINKING_OVERHEAD_TOKENS", - "llmLimiterState", - "GeminiEndpoint" - ], - "export_count": 23, - "import_count": 8, - "churn": 5, - "fragility": { - "score": 4, - "label": "medium" - }, - "zone": "Vessel Src App Zone" - }, - { - "path": "vessel/src/app/api/raven-chat/requestParsing.ts", - "role": "route", - "lines": 824, - "exports": [ - "normalizeRelationalContext", - "inferRelationalContext", - "hasFullChartCoordinates", - "toCoreProfile", - "asTrimmedText", - "isChatRole", - "asPromptMode", - "toApertureMode", - "extractLiveLocationQuery", - "hasUSStateHint", - "countryCodeHint", - "summarizeProfileArchitecture", - "parseBirthDateParts", - "parseBirthTimeParts", - "profileInputToBlueprintShape", - "toCognitiveVoiceContext", - "isValidCoordinatePair", - "hasAnyCoordinateAnchor", - "parseChatRequest", - "sanitizeProfile", - "sanitizeConstitutionalCalibrationRecord", - "mergeHydratedProfile", - "needsVaultHydration", - "selectVaultProfileForHydration", - "hydrateProfilesFromVault", - "pickVaultSavedLocationAnchor", - "hydrateProfileFromVault", - "hasPersistedCurrentLocation", - "hasLiveCoordinateData", - "asObjectRecord", - "toIsoDateFromParts", - "toIsoTimeFromParts", - "toNumericText", - "normalizeCountryCode", - "inferCountryCodeFromLabel", - "isGovernorState", - "hasBirthContext", - "US_STATE_CODES", - "US_STATE_NAMES" - ], - "export_count": 39, - "import_count": 12, - "churn": 3, - "fragility": { - "score": 4, - "label": "medium" - }, - "zone": "Vessel Src App Zone" - }, - { - "path": "vessel/src/lib/wovenReportCore.ts", - "role": "lib", - "lines": 4637, - "exports": [ - "parseRetryAfterHeaderMs", - "deriveCognitiveArchitectureFromNatal", - "runTwoClockDriftModules", - "runSoloMirrorReport", - "runSoloBalanceMeterReport", - "runRelationalMirrorReport", - "runPolyadicMirrorReport", - "runRelationalBalanceMeterReport" - ], - "export_count": 8, - "import_count": 7, - "churn": 11, - "fragility": { - "score": 3, - "label": "medium" - }, - "zone": "Vessel Src Lib Zone" - }, - { - "path": "vessel/src/lib/raven/fieldReportVoiceContract.ts", - "role": "lib", - "lines": 442, - "exports": [ - "findFieldReportVoiceContractViolations", - "hasFieldReportVoiceContractDrift", - "validateSymbolicImage" - ], - "export_count": 3, - "import_count": 0, - "churn": 17, - "fragility": { - "score": 3, - "label": "medium" - }, - "zone": "Vessel Src Lib Zone" - }, - { - "path": "vessel/src/lib/raven/protocolEngine.ts", - "role": "lib", - "lines": 1426, - "exports": [ - "shouldUnlockInDepth", - "validateFrontstagePatternTitle", - "passesFrontstageValidation", - "detectSignals", - "resolveProtocolInjectionBudget", - "applyInjectionTokenBudget", - "injectProtocols", - "formatRetrievedDoctrineContext", - "formatInjectionForPrompt", - "TIER_CONTENT_POLICY", - "OutputDepthTier", - "FrontstagePatternValidation", - "DetectedSignal", - "ProtocolInjectionBudget", - "InjectionResult", - "RetrievedDoctrineSnippet", - "DoctrineAuthorityLabel", - "InjectionContext" - ], - "export_count": 18, - "import_count": 5, - "churn": 6, - "fragility": { - "score": 3, - "label": "medium" - }, - "zone": "Vessel Src Lib Zone" - }, - { - "path": "vessel/src/lib/raven/sessionMachine.ts", - "role": "lib", - "lines": 751, - "exports": [ - "createSession", - "sessionReducer", - "getRecommendedPhase", - "checkGate", - "maybeAdvancePhase", - "detectResonance", - "detectCalibrationConfirmations", - "buildSessionContext", - "sealSession", - "REJECTED_READING_DIGEST_CAP", - "DISCUSSED_DRIVER_CAP", - "ASSISTANT_RENDER_HASH_CAP" - ], - "export_count": 12, - "import_count": 2, - "churn": 9, - "fragility": { - "score": 3, - "label": "medium" - }, - "zone": "Vessel Src Lib Zone" - }, - { - "path": "vessel/src/lib/raven/__tests__/symbolicMomentComposer.test.ts", - "role": "test", - "lines": 427, - "export_count": 0, - "import_count": 1, - "churn": 14, - "fragility": { - "score": 3, - "label": "medium" - }, - "zone": "Vessel Src Lib Zone" - }, - { - "path": "vessel/src/lib/raven/__tests__/symbolicMomentFrontstage.test.ts", - "role": "test", - "lines": 460, - "export_count": 0, - "import_count": 2, - "churn": 32, - "fragility": { - "score": 3, - "label": "medium" - }, - "zone": "Vessel Src Lib Zone" - }, - { - "path": "vessel/src/lib/black-feather/bflEngine.ts", - "role": "lib", - "lines": 504, - "exports": [ - "reduceToRange", - "computeBalanceMeter", - "canonicalJson", - "computeLockHash", - "computeBaselineSeed", - "generateLedger", - "SIGN_INDEX", - "SIGNS", - "PLANETS", - "PLANETARY_WEIGHTS", - "ASPECT_WEIGHTS", - "MAX_ORBS", - "ASPECT_NAMES", - "SOURCE_EXACTNESS", - "CANDIDATE_W", - "DEFAULT_ROUTE_CYCLE", - "ROUTE_CYCLE_VERSION", - "PUBLIC_BASELINE_SALT", - "RouteTag", - "DrawConfig", - "BalanceMeter", - "DreamWitness", - "Candidate", - "Panel", - "LockObject", - "LedgerEntry", - "EphemerisResult", - "GenerateOptions" - ], - "export_count": 28, - "import_count": 1, - "churn": 2, - "fragility": { - "score": 3, - "label": "medium" - }, - "zone": "Vessel Src Lib Zone" - }, - { - "path": "vessel/src/components/ProfileVault.tsx", - "role": "component", - "lines": 2755, - "exports": [ - "ProfileVault" - ], - "export_count": 1, - "import_count": 8, - "churn": 10, - "fragility": { - "score": 3, - "label": "medium" - }, - "zone": "Vessel Src Zone" - }, - { - "path": "vessel/src/components/chat/BalanceMeterPill.tsx", - "role": "component", - "lines": 510, - "exports": [ - "BalanceMeterPill" - ], - "export_count": 1, - "import_count": 4, - "churn": 13, - "fragility": { - "score": 3, - "label": "medium" - }, - "zone": "Vessel Src Zone" - }, - { - "path": "vessel/src/components/chat/DownloadSessionButton.tsx", - "role": "component", - "lines": 1578, - "exports": [ - "buildSessionDebugExportPayload", - "buildSessionPipelineDebugExportPayload", - "buildSessionExportPayload", - "DownloadSessionButton" - ], - "export_count": 4, + "export_count": 43, "import_count": 2, - "churn": 9, + "churn": 0, "fragility": { "score": 3, "label": "medium" }, - "zone": "Vessel Src Zone" + "zone": "Vessel Src Lib Zone" }, { - "path": "vessel/src/components/chat/SessionFlightRecorder.tsx", - "role": "component", - "lines": 1593, + "path": "vessel/src/lib/black-feather/bflEngine.ts", + "role": "lib", + "lines": 504, "exports": [ - "describeRuntimeEvent", - "SessionFlightRecorder", - "FlightRecorderArchiveRun" + "reduceToRange", + "computeBalanceMeter", + "canonicalJson", + "computeLockHash", + "computeBaselineSeed", + "generateLedger", + "SIGN_INDEX", + "SIGNS", + "PLANETS", + "PLANETARY_WEIGHTS", + "ASPECT_WEIGHTS", + "MAX_ORBS", + "ASPECT_NAMES", + "SOURCE_EXACTNESS", + "CANDIDATE_W", + "DEFAULT_ROUTE_CYCLE", + "ROUTE_CYCLE_VERSION", + "PUBLIC_BASELINE_SALT", + "RouteTag", + "DrawConfig", + "BalanceMeter", + "DreamWitness", + "Candidate", + "Panel", + "LockObject", + "LedgerEntry", + "EphemerisResult", + "GenerateOptions" ], - "export_count": 3, - "import_count": 8, - "churn": 11, + "export_count": 28, + "import_count": 1, + "churn": 0, "fragility": { "score": 3, "label": "medium" }, - "zone": "Vessel Src Zone" + "zone": "Vessel Src Lib Zone" }, { - "path": "vessel/src/app/api/raven-chat/enrichmentPhase.ts", - "role": "route", - "lines": 364, + "path": "vessel/src/app/page.tsx", + "role": "page", + "lines": 5709, "exports": [ - "runEnrichmentPhase", - "EnrichmentResult" + "App" ], - "export_count": 2, - "import_count": 19, - "churn": 13, + "export_count": 1, + "import_count": 44, + "churn": 0, "fragility": { "score": 3, "label": "medium" @@ -1059,69 +792,17 @@ "zone": "Vessel Src App Zone" }, { - "path": "vessel/src/app/api/raven-chat/promptLines.ts", + "path": "vessel/src/app/api/raven-chat/route.ts", "role": "route", - "lines": 436, + "lines": 2882, "exports": [ - "buildPromptLines", - "PromptLinesConfig", - "PromptLinesResult" + "POST", + "maxDuration", + "dynamic" ], "export_count": 3, - "import_count": 6, - "churn": 46, - "fragility": { - "score": 3, - "label": "medium" - }, - "zone": "Vessel Src App Zone" - }, - { - "path": "vessel/src/app/api/raven-chat/protocolRules.ts", - "role": "route", - "lines": 517, - "exports": [ - "detectCalibrationReAsk", - "needsProtocolRepair", - "buildRepairDirective", - "classifyLlmFailure", - "buildExpectedBlock", - "buildLlmFallbackReply", - "buildSymbolicMomentsUnavailableReply", - "buildDailyLimitReply", - "buildCognitiveStructureStatusReply", - "buildSealClosureReply", - "sanitizeRelationalMappingError", - "formatRelationalFallbackEndpointLabel", - "formatRetryWindowLabel", - "buildRelationalFallbackSnapshot", - "buildRelationalFallbackSnapshotFromReport", - "applyRelationalFallbackLead", - "needsConcreteRetry", - "parseLabeledMetric", - "getTelemetryRangeViolations", - "hasUnverifiedLiveLocationClaim" - ], - "export_count": 20, - "import_count": 14, - "churn": 11, - "fragility": { - "score": 3, - "label": "medium" - }, - "zone": "Vessel Src App Zone" - }, - { - "path": "vessel/src/app/api/raven-chat/userBlockBuilder.ts", - "role": "route", - "lines": 440, - "exports": [ - "buildUserBlocks", - "UserBlocksConfig" - ], - "export_count": 2, - "import_count": 14, - "churn": 18, + "import_count": 70, + "churn": 0, "fragility": { "score": 3, "label": "medium" @@ -1227,6 +908,29 @@ }, "zone": "Vessel Src Lib Zone" }, + { + "path": "vessel/src/lib/wovenReportCore.ts", + "role": "lib", + "lines": 4637, + "exports": [ + "parseRetryAfterHeaderMs", + "deriveCognitiveArchitectureFromNatal", + "runTwoClockDriftModules", + "runSoloMirrorReport", + "runSoloBalanceMeterReport", + "runRelationalMirrorReport", + "runPolyadicMirrorReport", + "runRelationalBalanceMeterReport" + ], + "export_count": 8, + "import_count": 7, + "churn": 0, + "fragility": { + "score": 2, + "label": "low" + }, + "zone": "Vessel Src Lib Zone" + }, { "path": "vessel/src/lib/raven/adviceLadderRuntime.ts", "role": "lib", @@ -1259,7 +963,7 @@ { "path": "vessel/src/lib/raven/affirmativeDomain.ts", "role": "lib", - "lines": 244, + "lines": 252, "exports": [ "getActiveOperations", "AUTHORITY_DOMAINS", @@ -1303,8 +1007,8 @@ "LeanWovenMapEnvelope" ], "export_count": 40, - "import_count": 0, - "churn": 5, + "import_count": 1, + "churn": 0, "fragility": { "score": 2, "label": "low" @@ -1314,7 +1018,7 @@ { "path": "vessel/src/lib/raven/affirmativeRuntime.ts", "role": "lib", - "lines": 542, + "lines": 563, "exports": [ "executeModule", "transitionGovernor", @@ -1330,7 +1034,7 @@ ], "export_count": 11, "import_count": 1, - "churn": 4, + "churn": 0, "fragility": { "score": 2, "label": "low" @@ -1370,15 +1074,32 @@ "zone": "Vessel Src Lib Zone" }, { - "path": "vessel/src/lib/raven/fieldReportRepairFallback.ts", + "path": "vessel/src/lib/raven/persona-law.ts", "role": "lib", - "lines": 247, + "lines": 482, "exports": [ - "buildFieldReportVoiceDriftFallback" + "buildKernelPrompt", + "RAVEN_IDENTITY", + "CONSTITUTIONAL_AXIOMS", + "SIGNAL_PATH", + "VOICE_KERNEL", + "GROUNDING_AND_COMPRESSION_PROTOCOL", + "CONVERSATIONAL_PRINCIPLE", + "UX_CONSTITUTION", + "RESONANT_FIELD_DOCTRINE", + "SOVEREIGNTY_LAW", + "SOVEREIGNTY_VALIDATION", + "LANGUAGE_GOVERNOR", + "PATTERN_SURFACE_GOVERNOR", + "MIRROR_FLOW_TIERS", + "RAVEN_INSTRUMENT_RESPONSE_LAW", + "MAP_FIRST_SEQUENCING_LAW", + "EPISTEMIC_BRIDGE_AND_CITATION_LAW", + "EPISTEMIC_INTEGRITY_LAW" ], - "export_count": 1, - "import_count": 3, - "churn": 18, + "export_count": 18, + "import_count": 0, + "churn": 0, "fragility": { "score": 2, "label": "low" @@ -1386,33 +1107,26 @@ "zone": "Vessel Src Lib Zone" }, { - "path": "vessel/src/lib/raven/localLexicon.ts", + "path": "vessel/src/lib/raven/sessionMachine.ts", "role": "lib", - "lines": 299, + "lines": 751, "exports": [ - "getChamberDomain", - "getChamberDomainOptions", - "getChamberAnchor", - "getChamberHouseNumber", - "getChamberByHouseNumber", - "formatChamberDomainRegistry", - "buildRavenLexiconBridge", - "RAVEN_PLANETARY_ANCHORS", - "RAVEN_PRESSURE_SIGNATURES", - "RAVEN_ASPECT_ANCHORS", - "RAVEN_PIOS_TERMS", - "RAVEN_HOUSE_BRIDGE", - "CHAMBER_DOMAIN_OPTIONS_MAP", - "CHAMBER_DOMAIN_MAP", - "CHAMBER_ANCHOR_MAP", - "CHAMBER_HOUSE_NUMBER_MAP", - "RAVEN_LOCAL_SKY_FRAME", - "RavenHouseBridge", - "ChamberName" + "createSession", + "sessionReducer", + "getRecommendedPhase", + "checkGate", + "maybeAdvancePhase", + "detectResonance", + "detectCalibrationConfirmations", + "buildSessionContext", + "sealSession", + "REJECTED_READING_DIGEST_CAP", + "DISCUSSED_DRIVER_CAP", + "ASSISTANT_RENDER_HASH_CAP" ], - "export_count": 19, - "import_count": 0, - "churn": 8, + "export_count": 12, + "import_count": 2, + "churn": 0, "fragility": { "score": 2, "label": "low" @@ -1429,51 +1143,26 @@ "pickVariant", "computeSymbolicMomentSeed", "getVoiceVariants", - "getSilhouetteVariants", - "getLandingVariants", - "getVerificationVariants", - "listAllPressureSignatures", - "selectVoiceVariant", - "selectSilhouetteVariant", - "selectLandingVariant", - "selectVerificationVariant", - "assertCoreVariantSafe", - "PressureSignature", - "SymbolicMomentBuilder", - "SymbolicMomentSeedInput", - "SelectVoiceArgs", - "SelectSilhouetteArgs", - "SelectLandingArgs", - "SelectVerificationArgs" - ], - "export_count": 21, - "import_count": 1, - "churn": 6, - "fragility": { - "score": 2, - "label": "low" - }, - "zone": "Vessel Src Lib Zone" - }, - { - "path": "vessel/src/lib/raven/turnContinuity.ts", - "role": "lib", - "lines": 408, - "exports": [ - "buildCommittedMapPromptBlock", - "classifyTurnContinuityType", - "buildTurnContinuityPayload", - "buildTurnContinuityPromptBlock", - "TurnContinuityHistoryEntry", - "TurnContinuityType", - "TurnContinuityUserMove", - "TurnContinuityEmpathyMode", - "TurnContinuityAcknowledgmentPriority", - "TurnContinuityPayload" + "getSilhouetteVariants", + "getLandingVariants", + "getVerificationVariants", + "listAllPressureSignatures", + "selectVoiceVariant", + "selectSilhouetteVariant", + "selectLandingVariant", + "selectVerificationVariant", + "assertCoreVariantSafe", + "PressureSignature", + "SymbolicMomentBuilder", + "SymbolicMomentSeedInput", + "SelectVoiceArgs", + "SelectSilhouetteArgs", + "SelectLandingArgs", + "SelectVerificationArgs" ], - "export_count": 10, - "import_count": 2, - "churn": 8, + "export_count": 21, + "import_count": 1, + "churn": 0, "fragility": { "score": 2, "label": "low" @@ -1545,6 +1234,19 @@ }, "zone": "Vessel Src Lib Zone" }, + { + "path": "vessel/src/lib/raven/__tests__/responseRenderer.test.ts", + "role": "test", + "lines": 814, + "export_count": 0, + "import_count": 1, + "churn": 0, + "fragility": { + "score": 2, + "label": "low" + }, + "zone": "Vessel Src Lib Zone" + }, { "path": "vessel/src/lib/blueprint/blueprintBuilder.ts", "role": "lib", @@ -1565,15 +1267,22 @@ "zone": "Vessel Src Lib Zone" }, { - "path": "vessel/src/components/shipyard/VelocityPanel.tsx", + "path": "vessel/src/components/AlignmentCorridor.tsx", "role": "component", - "lines": 875, + "lines": 1553, "exports": [ - "VelocityPanel" + "AlignmentCorridor", + "CorridorSynastryAspect", + "CorridorTransitDriverSet", + "CorridorTransitDrivers", + "RelationalFallbackNotice", + "OracleBalanceTagPayload", + "SubjectContext", + "SessionSignatureData" ], - "export_count": 1, - "import_count": 0, - "churn": 2, + "export_count": 8, + "import_count": 6, + "churn": 0, "fragility": { "score": 2, "label": "low" @@ -1581,15 +1290,15 @@ "zone": "Vessel Src Zone" }, { - "path": "vessel/src/components/reports/StructuralLoadScatter.tsx", + "path": "vessel/src/components/ProfileVault.tsx", "role": "component", - "lines": 525, + "lines": 2755, "exports": [ - "StructuralLoadScatter" + "ProfileVault" ], "export_count": 1, - "import_count": 1, - "churn": 12, + "import_count": 8, + "churn": 0, "fragility": { "score": 2, "label": "low" @@ -1597,15 +1306,15 @@ "zone": "Vessel Src Zone" }, { - "path": "vessel/src/components/reports/WovenMapTab.tsx", + "path": "vessel/src/components/shipyard/VelocityPanel.tsx", "role": "component", - "lines": 433, + "lines": 1012, "exports": [ - "WovenMapTab" + "VelocityPanel" ], "export_count": 1, - "import_count": 1, - "churn": 8, + "import_count": 0, + "churn": 0, "fragility": { "score": 2, "label": "low" @@ -1613,16 +1322,18 @@ "zone": "Vessel Src Zone" }, { - "path": "vessel/src/components/chat/ChatInput.tsx", + "path": "vessel/src/components/chat/DownloadSessionButton.tsx", "role": "component", - "lines": 699, + "lines": 1578, "exports": [ - "ChatInput", - "ChatInputHandle" + "buildSessionDebugExportPayload", + "buildSessionPipelineDebugExportPayload", + "buildSessionExportPayload", + "DownloadSessionButton" ], - "export_count": 2, - "import_count": 3, - "churn": 9, + "export_count": 4, + "import_count": 2, + "churn": 0, "fragility": { "score": 2, "label": "low" @@ -1630,12 +1341,17 @@ "zone": "Vessel Src Zone" }, { - "path": "vessel/src/components/chat/__tests__/DownloadSessionButton.test.ts", - "role": "test", - "lines": 538, - "export_count": 0, - "import_count": 3, - "churn": 7, + "path": "vessel/src/components/chat/SessionFlightRecorder.tsx", + "role": "component", + "lines": 1593, + "exports": [ + "describeRuntimeEvent", + "SessionFlightRecorder", + "FlightRecorderArchiveRun" + ], + "export_count": 3, + "import_count": 8, + "churn": 0, "fragility": { "score": 2, "label": "low" @@ -1645,14 +1361,14 @@ { "path": "vessel/src/app/planner/page.tsx", "role": "page", - "lines": 1366, + "lines": 1363, "exports": [ "dynamic", "PlannerPage" ], "export_count": 2, "import_count": 5, - "churn": 3, + "churn": 0, "fragility": { "score": 2, "label": "low" @@ -1694,13 +1410,14 @@ { "path": "vessel/src/app/api/raven-chat/astrologyApi.ts", "role": "route", - "lines": 487, + "lines": 575, "exports": [ "fetchWithTimeout", "raceWithBudget", "firstAddressText", "resolveLiveLocation", "fetchAstrologyContext", + "fetchNowPulseContext", "fetchPulseOverlay", "resolveRelocationAnchor", "resolveBirthLocationAnchor", @@ -1712,7 +1429,7 @@ "UPSTREAM_BUDGET_MS", "PULSE_CACHE_TTL_MS" ], - "export_count": 15, + "export_count": 16, "import_count": 9, "churn": 0, "fragility": { @@ -1722,26 +1439,34 @@ "zone": "Vessel Src App Zone" }, { - "path": "vessel/src/app/api/raven-chat/sherlogTelemetry.ts", + "path": "vessel/src/app/api/raven-chat/protocolRules.ts", "role": "route", - "lines": 221, + "lines": 517, "exports": [ - "parseSherlogSummaryText", - "formatCreatorMirrorVelocityStatus", - "formatCreatorMirrorRepair", - "readLatestSherlogTelemetryFromRunsRoot", - "readLatestSherlogTelemetry", - "buildOfflineCreatorMirrorTelemetry", - "resolvePrimaryCreatorOperatorLabel", - "isCreatorMirrorAuthorized", - "isCreatorModeTriggerMessage", - "isCreatorAstrologyV3OptInMessage", - "PRIMARY_CREATOR_EMAIL", - "PRIMARY_CREATOR_LABEL" + "detectCalibrationReAsk", + "needsProtocolRepair", + "buildRepairDirective", + "classifyLlmFailure", + "buildExpectedBlock", + "buildLlmFallbackReply", + "buildSymbolicMomentsUnavailableReply", + "buildDailyLimitReply", + "buildCognitiveStructureStatusReply", + "buildSealClosureReply", + "sanitizeRelationalMappingError", + "formatRelationalFallbackEndpointLabel", + "formatRetryWindowLabel", + "buildRelationalFallbackSnapshot", + "buildRelationalFallbackSnapshotFromReport", + "applyRelationalFallbackLead", + "needsConcreteRetry", + "parseLabeledMetric", + "getTelemetryRangeViolations", + "hasUnverifiedLiveLocationClaim" ], - "export_count": 12, - "import_count": 5, - "churn": 9, + "export_count": 20, + "import_count": 14, + "churn": 0, "fragility": { "score": 2, "label": "low" @@ -1781,7 +1506,7 @@ ], "export_count": 25, "import_count": 7, - "churn": 3, + "churn": 0, "fragility": { "score": 2, "label": "low" @@ -1820,32 +1545,13 @@ "lines": 562, "export_count": 0, "import_count": 4, - "churn": 4, + "churn": 0, "fragility": { "score": 1, "label": "low" }, "zone": "Vessel Src Zone" }, - { - "path": "vessel/src/lib/chatGlossary.ts", - "role": "lib", - "lines": 247, - "exports": [ - "splitGlossaryText", - "CHAT_GLOSSARY", - "ChatGlossaryEntry", - "ChatGlossaryTextPart" - ], - "export_count": 4, - "import_count": 0, - "churn": 7, - "fragility": { - "score": 1, - "label": "low" - }, - "zone": "Vessel Src Lib Zone" - }, { "path": "vessel/src/lib/natalExport.ts", "role": "lib", @@ -1858,25 +1564,7 @@ ], "export_count": 4, "import_count": 1, - "churn": 4, - "fragility": { - "score": 1, - "label": "low" - }, - "zone": "Vessel Src Lib Zone" - }, - { - "path": "vessel/src/lib/planner.ts", - "role": "lib", - "lines": 320, - "exports": [ - "buildPlannerResponse", - "SoloBalanceMeterResult", - "PlannerResponse" - ], - "export_count": 3, - "import_count": 2, - "churn": 7, + "churn": 0, "fragility": { "score": 1, "label": "low" @@ -1894,7 +1582,7 @@ ], "export_count": 3, "import_count": 1, - "churn": 2, + "churn": 0, "fragility": { "score": 1, "label": "low" @@ -1924,25 +1612,6 @@ }, "zone": "Vessel Src Lib Zone" }, - { - "path": "vessel/src/lib/stripe.ts", - "role": "lib", - "lines": 42, - "exports": [ - "getStripe", - "STRIPE_ENABLED", - "STRIPE_PRO_PRICE_ID", - "STRIPE_WEBHOOK_SECRET" - ], - "export_count": 4, - "import_count": 0, - "churn": 8, - "fragility": { - "score": 1, - "label": "low" - }, - "zone": "Vessel Src Lib Zone" - }, { "path": "vessel/src/lib/raven/authorityLampRouter.ts", "role": "lib", @@ -2010,6 +1679,24 @@ }, "zone": "Vessel Src Lib Zone" }, + { + "path": "vessel/src/lib/raven/fieldReportVoiceContract.ts", + "role": "lib", + "lines": 442, + "exports": [ + "findFieldReportVoiceContractViolations", + "hasFieldReportVoiceContractDrift", + "validateSymbolicImage" + ], + "export_count": 3, + "import_count": 0, + "churn": 0, + "fragility": { + "score": 1, + "label": "low" + }, + "zone": "Vessel Src Lib Zone" + }, { "path": "vessel/src/lib/raven/geminiModelSelection.ts", "role": "lib", @@ -2041,6 +1728,40 @@ }, "zone": "Vessel Src Lib Zone" }, + { + "path": "vessel/src/lib/raven/localLexicon.ts", + "role": "lib", + "lines": 299, + "exports": [ + "getChamberDomain", + "getChamberDomainOptions", + "getChamberAnchor", + "getChamberHouseNumber", + "getChamberByHouseNumber", + "formatChamberDomainRegistry", + "buildRavenLexiconBridge", + "RAVEN_PLANETARY_ANCHORS", + "RAVEN_PRESSURE_SIGNATURES", + "RAVEN_ASPECT_ANCHORS", + "RAVEN_PIOS_TERMS", + "RAVEN_HOUSE_BRIDGE", + "CHAMBER_DOMAIN_OPTIONS_MAP", + "CHAMBER_DOMAIN_MAP", + "CHAMBER_ANCHOR_MAP", + "CHAMBER_HOUSE_NUMBER_MAP", + "RAVEN_LOCAL_SKY_FRAME", + "RavenHouseBridge", + "ChamberName" + ], + "export_count": 19, + "import_count": 0, + "churn": 0, + "fragility": { + "score": 1, + "label": "low" + }, + "zone": "Vessel Src Lib Zone" + }, { "path": "vessel/src/lib/raven/semanticDepth.ts", "role": "lib", @@ -2058,8 +1779,33 @@ "SemanticDepthSource", "SemanticDepthResolution" ], - "export_count": 11, - "import_count": 1, + "export_count": 11, + "import_count": 1, + "churn": 0, + "fragility": { + "score": 1, + "label": "low" + }, + "zone": "Vessel Src Lib Zone" + }, + { + "path": "vessel/src/lib/raven/turnContinuity.ts", + "role": "lib", + "lines": 462, + "exports": [ + "buildCommittedMapPromptBlock", + "classifyTurnContinuityType", + "buildTurnContinuityPayload", + "buildTurnContinuityPromptBlock", + "TurnContinuityHistoryEntry", + "TurnContinuityType", + "TurnContinuityUserMove", + "TurnContinuityEmpathyMode", + "TurnContinuityAcknowledgmentPriority", + "TurnContinuityPayload" + ], + "export_count": 10, + "import_count": 3, "churn": 0, "fragility": { "score": 1, @@ -2099,7 +1845,7 @@ ], "export_count": 1, "import_count": 4, - "churn": 4, + "churn": 0, "fragility": { "score": 1, "label": "low" @@ -2130,7 +1876,7 @@ ], "export_count": 16, "import_count": 1, - "churn": 5, + "churn": 0, "fragility": { "score": 1, "label": "low" @@ -2163,7 +1909,7 @@ ], "export_count": 18, "import_count": 0, - "churn": 2, + "churn": 0, "fragility": { "score": 1, "label": "low" @@ -2189,12 +1935,25 @@ "zone": "Vessel Src Lib Zone" }, { - "path": "vessel/src/lib/raven/__tests__/fieldReportVoiceContract.test.ts", + "path": "vessel/src/lib/raven/__tests__/sst.test.ts", "role": "test", - "lines": 224, + "lines": 508, + "export_count": 0, + "import_count": 6, + "churn": 0, + "fragility": { + "score": 1, + "label": "low" + }, + "zone": "Vessel Src Lib Zone" + }, + { + "path": "vessel/src/lib/raven/__tests__/symbolicMomentComposer.test.ts", + "role": "test", + "lines": 436, "export_count": 0, "import_count": 1, - "churn": 12, + "churn": 0, "fragility": { "score": 1, "label": "low" @@ -2202,12 +1961,12 @@ "zone": "Vessel Src Lib Zone" }, { - "path": "vessel/src/lib/raven/__tests__/sst.test.ts", + "path": "vessel/src/lib/raven/__tests__/symbolicMomentFrontstage.test.ts", "role": "test", - "lines": 508, + "lines": 463, "export_count": 0, - "import_count": 6, - "churn": 3, + "import_count": 2, + "churn": 0, "fragility": { "score": 1, "label": "low" @@ -2276,7 +2035,7 @@ ], "export_count": 11, "import_count": 0, - "churn": 2, + "churn": 0, "fragility": { "score": 1, "label": "low" @@ -2289,30 +2048,13 @@ "lines": 401, "export_count": 0, "import_count": 2, - "churn": 4, + "churn": 0, "fragility": { "score": 1, "label": "low" }, "zone": "Vessel Src Lib Zone" }, - { - "path": "vessel/src/hooks/useFlightRecorderData.ts", - "role": "hook", - "lines": 63, - "exports": [ - "useFlightRecorderData", - "FlightRecorderData" - ], - "export_count": 2, - "import_count": 4, - "churn": 7, - "fragility": { - "score": 1, - "label": "low" - }, - "zone": "Vessel Src Zone" - }, { "path": "vessel/src/components/Auth.tsx", "role": "component", @@ -2371,7 +2113,7 @@ ], "export_count": 1, "import_count": 7, - "churn": 6, + "churn": 0, "fragility": { "score": 1, "label": "low" @@ -2394,6 +2136,38 @@ }, "zone": "Vessel Src Zone" }, + { + "path": "vessel/src/components/reports/StructuralLoadScatter.tsx", + "role": "component", + "lines": 525, + "exports": [ + "StructuralLoadScatter" + ], + "export_count": 1, + "import_count": 1, + "churn": 0, + "fragility": { + "score": 1, + "label": "low" + }, + "zone": "Vessel Src Zone" + }, + { + "path": "vessel/src/components/reports/WovenMapTab.tsx", + "role": "component", + "lines": 433, + "exports": [ + "WovenMapTab" + ], + "export_count": 1, + "import_count": 1, + "churn": 0, + "fragility": { + "score": 1, + "label": "low" + }, + "zone": "Vessel Src Zone" + }, { "path": "vessel/src/components/raven/insight-cards/InsightCardDisplay.tsx", "role": "component", @@ -2411,15 +2185,15 @@ "zone": "Vessel Src Zone" }, { - "path": "vessel/src/components/chat/AlignmentCorridorReadout.tsx", + "path": "vessel/src/components/chat/BalanceMeterPill.tsx", "role": "component", - "lines": 322, + "lines": 544, "exports": [ - "AlignmentCorridorReadout" + "BalanceMeterPill" ], "export_count": 1, - "import_count": 8, - "churn": 7, + "import_count": 4, + "churn": 0, "fragility": { "score": 1, "label": "low" @@ -2427,15 +2201,16 @@ "zone": "Vessel Src Zone" }, { - "path": "vessel/src/components/chat/FlightRecorderSidebar.tsx", + "path": "vessel/src/components/chat/ChatInput.tsx", "role": "component", - "lines": 254, + "lines": 699, "exports": [ - "FlightRecorderSidebar" + "ChatInput", + "ChatInputHandle" ], - "export_count": 1, - "import_count": 5, - "churn": 8, + "export_count": 2, + "import_count": 3, + "churn": 0, "fragility": { "score": 1, "label": "low" @@ -2452,7 +2227,20 @@ ], "export_count": 2, "import_count": 6, - "churn": 6, + "churn": 0, + "fragility": { + "score": 1, + "label": "low" + }, + "zone": "Vessel Src Zone" + }, + { + "path": "vessel/src/components/chat/__tests__/DownloadSessionButton.test.ts", + "role": "test", + "lines": 538, + "export_count": 0, + "import_count": 3, + "churn": 0, "fragility": { "score": 1, "label": "low" @@ -2523,17 +2311,16 @@ "zone": "Vessel Src App Zone" }, { - "path": "vessel/src/app/api/raven-chat/generationIntegrity.ts", + "path": "vessel/src/app/api/raven-chat/enrichmentPhase.ts", "role": "route", - "lines": 270, + "lines": 364, "exports": [ - "resolveReplyIntegrity", - "ReplyIntegrityInput", - "ReplyIntegrityResolution" + "runEnrichmentPhase", + "EnrichmentResult" ], - "export_count": 3, - "import_count": 2, - "churn": 7, + "export_count": 2, + "import_count": 19, + "churn": 0, "fragility": { "score": 1, "label": "low" @@ -2541,19 +2328,17 @@ "zone": "Vessel Src App Zone" }, { - "path": "vessel/src/app/api/raven-chat/operatorSwitchboard.ts", + "path": "vessel/src/app/api/raven-chat/promptLines.ts", "role": "route", - "lines": 266, + "lines": 445, "exports": [ - "resolveOperatorSwitchboardCommand", - "buildOperatorSwitchboardHelpMessage", - "OPERATOR_SWITCHBOARD_COMMANDS", - "OperatorSwitchboardCategory", - "OperatorSwitchboardCommand" + "buildPromptLines", + "PromptLinesConfig", + "PromptLinesResult" ], - "export_count": 5, - "import_count": 1, - "churn": 12, + "export_count": 3, + "import_count": 6, + "churn": 0, "fragility": { "score": 1, "label": "low" @@ -2561,31 +2346,26 @@ "zone": "Vessel Src App Zone" }, { - "path": "vessel/src/app/api/raven-chat/systemBlockBuilder.ts", + "path": "vessel/src/app/api/raven-chat/sherlogTelemetry.ts", "role": "route", - "lines": 400, + "lines": 221, "exports": [ - "buildAuthorityHierarchyBlock", - "buildSystemBlocks", - "buildLivePrecedenceOverride", - "SystemBlocksConfig" + "parseSherlogSummaryText", + "formatCreatorMirrorVelocityStatus", + "formatCreatorMirrorRepair", + "readLatestSherlogTelemetryFromRunsRoot", + "readLatestSherlogTelemetry", + "buildOfflineCreatorMirrorTelemetry", + "resolvePrimaryCreatorOperatorLabel", + "isCreatorMirrorAuthorized", + "isCreatorModeTriggerMessage", + "isCreatorAstrologyV3OptInMessage", + "PRIMARY_CREATOR_EMAIL", + "PRIMARY_CREATOR_LABEL" ], - "export_count": 4, - "import_count": 12, - "churn": 8, - "fragility": { - "score": 1, - "label": "low" - }, - "zone": "Vessel Src App Zone" - }, - { - "path": "vessel/src/app/api/raven-chat/__tests__/generationIntegrity.test.ts", - "role": "test", - "lines": 232, - "export_count": 0, - "import_count": 1, - "churn": 8, + "export_count": 12, + "import_count": 5, + "churn": 0, "fragility": { "score": 1, "label": "low" @@ -2593,12 +2373,16 @@ "zone": "Vessel Src App Zone" }, { - "path": "vessel/src/app/api/raven-chat/__tests__/intentDetection.test.ts", - "role": "test", - "lines": 309, - "export_count": 0, - "import_count": 1, - "churn": 9, + "path": "vessel/src/app/api/raven-chat/userBlockBuilder.ts", + "role": "route", + "lines": 447, + "exports": [ + "buildUserBlocks", + "UserBlocksConfig" + ], + "export_count": 2, + "import_count": 15, + "churn": 0, "fragility": { "score": 1, "label": "low" @@ -2731,7 +2515,7 @@ "lines": 184, "export_count": 0, "import_count": 2, - "churn": 3, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -2783,7 +2567,7 @@ "lines": 55, "export_count": 0, "import_count": 1, - "churn": 2, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -2796,7 +2580,7 @@ "lines": 34, "export_count": 0, "import_count": 0, - "churn": 6, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -2874,7 +2658,7 @@ "lines": 31, "export_count": 0, "import_count": 1, - "churn": 2, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -2900,7 +2684,7 @@ "lines": 63, "export_count": 0, "import_count": 0, - "churn": 4, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -3028,7 +2812,7 @@ { "path": "vessel/src/lib/bestAstrologyProxy.ts", "role": "lib", - "lines": 195, + "lines": 198, "exports": [ "normalizeBestAstrologyProxyRequest", "forwardBestAstrologyRequest" @@ -3042,6 +2826,25 @@ }, "zone": "Vessel Src Lib Zone" }, + { + "path": "vessel/src/lib/chatGlossary.ts", + "role": "lib", + "lines": 242, + "exports": [ + "splitGlossaryText", + "CHAT_GLOSSARY", + "ChatGlossaryEntry", + "ChatGlossaryTextPart" + ], + "export_count": 4, + "import_count": 0, + "churn": 0, + "fragility": { + "score": 0, + "label": "low" + }, + "zone": "Vessel Src Lib Zone" + }, { "path": "vessel/src/lib/firebase.ts", "role": "lib", @@ -3089,7 +2892,7 @@ ], "export_count": 1, "import_count": 0, - "churn": 2, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -3106,8 +2909,26 @@ "canBackfillBirthLocation", "mapFriendlyAuthErrorMessage" ], - "export_count": 4, - "import_count": 0, + "export_count": 4, + "import_count": 0, + "churn": 0, + "fragility": { + "score": 0, + "label": "low" + }, + "zone": "Vessel Src Lib Zone" + }, + { + "path": "vessel/src/lib/planner.ts", + "role": "lib", + "lines": 320, + "exports": [ + "buildPlannerResponse", + "SoloBalanceMeterResult", + "PlannerResponse" + ], + "export_count": 3, + "import_count": 2, "churn": 0, "fragility": { "score": 0, @@ -3131,7 +2952,7 @@ ], "export_count": 8, "import_count": 0, - "churn": 6, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -3209,7 +3030,26 @@ ], "export_count": 3, "import_count": 0, - "churn": 2, + "churn": 0, + "fragility": { + "score": 0, + "label": "low" + }, + "zone": "Vessel Src Lib Zone" + }, + { + "path": "vessel/src/lib/stripe.ts", + "role": "lib", + "lines": 42, + "exports": [ + "getStripe", + "STRIPE_ENABLED", + "STRIPE_PRO_PRICE_ID", + "STRIPE_WEBHOOK_SECRET" + ], + "export_count": 4, + "import_count": 0, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -3299,7 +3139,7 @@ ], "export_count": 1, "import_count": 1, - "churn": 5, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -3340,7 +3180,7 @@ ], "export_count": 2, "import_count": 4, - "churn": 5, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -3356,7 +3196,7 @@ ], "export_count": 1, "import_count": 0, - "churn": 5, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -3373,7 +3213,7 @@ ], "export_count": 2, "import_count": 2, - "churn": 2, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -3454,7 +3294,7 @@ ], "export_count": 6, "import_count": 3, - "churn": 3, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -3518,6 +3358,27 @@ }, "zone": "Vessel Src Lib Zone" }, + { + "path": "vessel/src/lib/raven/dashboardApertureValidation.ts", + "role": "lib", + "lines": 81, + "exports": [ + "validateDashboardApertureSurface", + "DashboardMetricDescriptor", + "DashboardZoneDescriptor", + "DashboardApertureSurface", + "DashboardValidationIssue", + "DashboardValidationResult" + ], + "export_count": 6, + "import_count": 1, + "churn": 0, + "fragility": { + "score": 0, + "label": "low" + }, + "zone": "Vessel Src Lib Zone" + }, { "path": "vessel/src/lib/raven/degradedReplyBuilders.ts", "role": "lib", @@ -3531,7 +3392,7 @@ ], "export_count": 5, "import_count": 1, - "churn": 6, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -3557,6 +3418,22 @@ }, "zone": "Vessel Src Lib Zone" }, + { + "path": "vessel/src/lib/raven/fieldReportRepairFallback.ts", + "role": "lib", + "lines": 247, + "exports": [ + "buildFieldReportVoiceDriftFallback" + ], + "export_count": 1, + "import_count": 3, + "churn": 0, + "fragility": { + "score": 0, + "label": "low" + }, + "zone": "Vessel Src Lib Zone" + }, { "path": "vessel/src/lib/raven/fieldScope.ts", "role": "lib", @@ -3588,7 +3465,7 @@ ], "export_count": 2, "import_count": 0, - "churn": 2, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -3622,7 +3499,7 @@ ], "export_count": 3, "import_count": 0, - "churn": 6, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -3661,7 +3538,7 @@ ], "export_count": 3, "import_count": 1, - "churn": 5, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -3718,7 +3595,7 @@ ], "export_count": 6, "import_count": 0, - "churn": 5, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -3737,7 +3614,7 @@ ], "export_count": 4, "import_count": 0, - "churn": 4, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -3864,7 +3741,7 @@ { "path": "vessel/src/lib/raven/sealedArtifact.ts", "role": "lib", - "lines": 171, + "lines": 191, "exports": [ "hashGeometry", "buildProfileFingerprint", @@ -3876,8 +3753,8 @@ "SealedSymbolicArtifact" ], "export_count": 8, - "import_count": 1, - "churn": 4, + "import_count": 2, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -3912,7 +3789,7 @@ ], "export_count": 3, "import_count": 0, - "churn": 3, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -3968,7 +3845,7 @@ { "path": "vessel/src/lib/raven/symbolicMomentIntent.ts", "role": "lib", - "lines": 259, + "lines": 260, "exports": [ "classifySymbolicMomentTurn", "hasStructuredSymbolicMomentArtifact", @@ -3979,7 +3856,7 @@ ], "export_count": 6, "import_count": 0, - "churn": 4, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -3998,7 +3875,7 @@ ], "export_count": 4, "import_count": 0, - "churn": 2, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -4063,6 +3940,31 @@ }, "zone": "Vessel Src Lib Zone" }, + { + "path": "vessel/src/lib/raven/temporalAperture.ts", + "role": "lib", + "lines": 312, + "exports": [ + "resolveTemporalAperture", + "hasApertureDeclaration", + "ensureApertureDeclaration", + "validateApertureNarrative", + "serializeApertureForPrompt", + "TemporalAperture", + "TemporalApertureSource", + "TemporalApertureRange", + "TemporalApertureContext", + "TemporalApertureValidationResult" + ], + "export_count": 10, + "import_count": 0, + "churn": 0, + "fragility": { + "score": 0, + "label": "low" + }, + "zone": "Vessel Src Lib Zone" + }, { "path": "vessel/src/lib/raven/tokenGovernor.ts", "role": "lib", @@ -4114,7 +4016,7 @@ ], "export_count": 1, "import_count": 1, - "churn": 4, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -4234,7 +4136,7 @@ ], "export_count": 1, "import_count": 1, - "churn": 2, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -4308,7 +4210,7 @@ ], "export_count": 3, "import_count": 3, - "churn": 3, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -4547,7 +4449,7 @@ ], "export_count": 6, "import_count": 2, - "churn": 2, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -4624,7 +4526,7 @@ "lines": 204, "export_count": 0, "import_count": 3, - "churn": 4, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -4709,6 +4611,19 @@ }, "zone": "Vessel Src Lib Zone" }, + { + "path": "vessel/src/lib/raven/__tests__/dashboardApertureValidation.test.ts", + "role": "test", + "lines": 48, + "export_count": 0, + "import_count": 1, + "churn": 0, + "fragility": { + "score": 0, + "label": "low" + }, + "zone": "Vessel Src Lib Zone" + }, { "path": "vessel/src/lib/raven/__tests__/doctrineManifest.test.ts", "role": "test", @@ -4748,6 +4663,19 @@ }, "zone": "Vessel Src Lib Zone" }, + { + "path": "vessel/src/lib/raven/__tests__/fieldReportVoiceContract.test.ts", + "role": "test", + "lines": 224, + "export_count": 0, + "import_count": 1, + "churn": 0, + "fragility": { + "score": 0, + "label": "low" + }, + "zone": "Vessel Src Lib Zone" + }, { "path": "vessel/src/lib/raven/__tests__/fieldScope.test.ts", "role": "test", @@ -4793,7 +4721,7 @@ "lines": 282, "export_count": 0, "import_count": 1, - "churn": 3, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -4806,7 +4734,7 @@ "lines": 99, "export_count": 0, "import_count": 2, - "churn": 3, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -4858,7 +4786,7 @@ "lines": 212, "export_count": 0, "import_count": 1, - "churn": 2, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -5008,6 +4936,19 @@ }, "zone": "Vessel Src Lib Zone" }, + { + "path": "vessel/src/lib/raven/__tests__/temporalAperture.test.ts", + "role": "test", + "lines": 122, + "export_count": 0, + "import_count": 2, + "churn": 0, + "fragility": { + "score": 0, + "label": "low" + }, + "zone": "Vessel Src Lib Zone" + }, { "path": "vessel/src/lib/raven/__tests__/tokenGovernor.test.ts", "role": "test", @@ -5024,10 +4965,10 @@ { "path": "vessel/src/lib/raven/__tests__/turnContinuity.test.ts", "role": "test", - "lines": 198, + "lines": 218, "export_count": 0, "import_count": 1, - "churn": 6, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -5268,10 +5209,10 @@ { "path": "vessel/src/lib/__tests__/sealedArtifact.test.ts", "role": "test", - "lines": 287, + "lines": 314, "export_count": 0, "import_count": 2, - "churn": 4, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -5281,7 +5222,7 @@ { "path": "vessel/src/lib/__tests__/v3MathBrain.test.ts", "role": "test", - "lines": 155, + "lines": 173, "export_count": 0, "import_count": 1, "churn": 0, @@ -5307,6 +5248,23 @@ }, "zone": "Vessel Src Zone" }, + { + "path": "vessel/src/hooks/useFlightRecorderData.ts", + "role": "hook", + "lines": 63, + "exports": [ + "useFlightRecorderData", + "FlightRecorderData" + ], + "export_count": 2, + "import_count": 4, + "churn": 0, + "fragility": { + "score": 0, + "label": "low" + }, + "zone": "Vessel Src Zone" + }, { "path": "vessel/src/hooks/useTextMeasure.ts", "role": "hook", @@ -5381,7 +5339,7 @@ ], "export_count": 1, "import_count": 3, - "churn": 5, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -5517,6 +5475,22 @@ }, "zone": "Vessel Src Zone" }, + { + "path": "vessel/src/components/chat/AlignmentCorridorReadout.tsx", + "role": "component", + "lines": 326, + "exports": [ + "AlignmentCorridorReadout" + ], + "export_count": 1, + "import_count": 8, + "churn": 0, + "fragility": { + "score": 0, + "label": "low" + }, + "zone": "Vessel Src Zone" + }, { "path": "vessel/src/components/chat/ChatDashboardLayout.tsx", "role": "component", @@ -5591,7 +5565,7 @@ ], "export_count": 1, "import_count": 4, - "churn": 3, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -5662,6 +5636,22 @@ }, "zone": "Vessel Src Zone" }, + { + "path": "vessel/src/components/chat/FlightRecorderSidebar.tsx", + "role": "component", + "lines": 254, + "exports": [ + "FlightRecorderSidebar" + ], + "export_count": 1, + "import_count": 5, + "churn": 0, + "fragility": { + "score": 0, + "label": "low" + }, + "zone": "Vessel Src Zone" + }, { "path": "vessel/src/components/chat/InstrumentMenu.tsx", "role": "component", @@ -5727,7 +5717,7 @@ ], "export_count": 5, "import_count": 0, - "churn": 5, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -5776,7 +5766,7 @@ ], "export_count": 1, "import_count": 1, - "churn": 2, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -5808,7 +5798,7 @@ ], "export_count": 1, "import_count": 2, - "churn": 3, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -5915,7 +5905,7 @@ "lines": 118, "export_count": 0, "import_count": 1, - "churn": 2, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -5928,7 +5918,7 @@ "lines": 127, "export_count": 0, "import_count": 3, - "churn": 3, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -5989,7 +5979,7 @@ ], "export_count": 1, "import_count": 1, - "churn": 2, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -6015,7 +6005,7 @@ { "path": "vessel/src/components/__tests__/AlignmentCorridor.session.test.tsx", "role": "test", - "lines": 187, + "lines": 199, "export_count": 0, "import_count": 2, "churn": 0, @@ -6164,7 +6154,7 @@ ], "export_count": 1, "import_count": 2, - "churn": 4, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -6316,7 +6306,7 @@ ], "export_count": 4, "import_count": 3, - "churn": 4, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -6381,7 +6371,7 @@ ], "export_count": 1, "import_count": 2, - "churn": 2, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -6461,7 +6451,7 @@ ], "export_count": 1, "import_count": 1, - "churn": 2, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -6534,6 +6524,22 @@ }, "zone": "Vessel Src App Zone" }, + { + "path": "vessel/src/app/api/sherlog/dependency/route.ts", + "role": "route", + "lines": 28, + "exports": [ + "GET" + ], + "export_count": 1, + "import_count": 1, + "churn": 0, + "fragility": { + "score": 0, + "label": "low" + }, + "zone": "Vessel Src App Zone" + }, { "path": "vessel/src/app/api/sherlog/config/route.ts", "role": "route", @@ -6718,7 +6724,25 @@ ], "export_count": 2, "import_count": 2, - "churn": 3, + "churn": 0, + "fragility": { + "score": 0, + "label": "low" + }, + "zone": "Vessel Src App Zone" + }, + { + "path": "vessel/src/app/api/raven-chat/generationIntegrity.ts", + "role": "route", + "lines": 270, + "exports": [ + "resolveReplyIntegrity", + "ReplyIntegrityInput", + "ReplyIntegrityResolution" + ], + "export_count": 3, + "import_count": 2, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -6736,7 +6760,7 @@ ], "export_count": 3, "import_count": 1, - "churn": 2, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -6761,6 +6785,26 @@ }, "zone": "Vessel Src App Zone" }, + { + "path": "vessel/src/app/api/raven-chat/operatorSwitchboard.ts", + "role": "route", + "lines": 266, + "exports": [ + "resolveOperatorSwitchboardCommand", + "buildOperatorSwitchboardHelpMessage", + "OPERATOR_SWITCHBOARD_COMMANDS", + "OperatorSwitchboardCategory", + "OperatorSwitchboardCommand" + ], + "export_count": 5, + "import_count": 1, + "churn": 0, + "fragility": { + "score": 0, + "label": "low" + }, + "zone": "Vessel Src App Zone" + }, { "path": "vessel/src/app/api/raven-chat/polyadicRouting.ts", "role": "route", @@ -6773,7 +6817,7 @@ ], "export_count": 4, "import_count": 2, - "churn": 3, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -6811,7 +6855,7 @@ ], "export_count": 7, "import_count": 0, - "churn": 6, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -6855,7 +6899,7 @@ ], "export_count": 5, "import_count": 10, - "churn": 4, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -6905,7 +6949,7 @@ ], "export_count": 2, "import_count": 4, - "churn": 5, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -6921,7 +6965,26 @@ ], "export_count": 1, "import_count": 1, - "churn": 4, + "churn": 0, + "fragility": { + "score": 0, + "label": "low" + }, + "zone": "Vessel Src App Zone" + }, + { + "path": "vessel/src/app/api/raven-chat/systemBlockBuilder.ts", + "role": "route", + "lines": 400, + "exports": [ + "buildAuthorityHierarchyBlock", + "buildSystemBlocks", + "buildLivePrecedenceOverride", + "SystemBlocksConfig" + ], + "export_count": 4, + "import_count": 12, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -6948,15 +7011,15 @@ { "path": "vessel/src/app/api/raven-chat/upstreamContext.ts", "role": "route", - "lines": 167, + "lines": 189, "exports": [ "fetchUpstreamContext", "UpstreamContextConfig", "UpstreamContextResult" ], "export_count": 3, - "import_count": 8, - "churn": 6, + "import_count": 9, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -6995,7 +7058,7 @@ "lines": 208, "export_count": 0, "import_count": 1, - "churn": 5, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -7008,7 +7071,33 @@ "lines": 150, "export_count": 0, "import_count": 3, - "churn": 5, + "churn": 0, + "fragility": { + "score": 0, + "label": "low" + }, + "zone": "Vessel Src App Zone" + }, + { + "path": "vessel/src/app/api/raven-chat/__tests__/generationIntegrity.test.ts", + "role": "test", + "lines": 232, + "export_count": 0, + "import_count": 1, + "churn": 0, + "fragility": { + "score": 0, + "label": "low" + }, + "zone": "Vessel Src App Zone" + }, + { + "path": "vessel/src/app/api/raven-chat/__tests__/intentDetection.test.ts", + "role": "test", + "lines": 309, + "export_count": 0, + "import_count": 1, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -7018,10 +7107,10 @@ { "path": "vessel/src/app/api/raven-chat/__tests__/promptLines.test.ts", "role": "test", - "lines": 165, + "lines": 177, "export_count": 0, "import_count": 1, - "churn": 5, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -7034,7 +7123,7 @@ "lines": 168, "export_count": 0, "import_count": 1, - "churn": 5, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -7047,7 +7136,7 @@ "lines": 304, "export_count": 0, "import_count": 5, - "churn": 5, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -7073,7 +7162,7 @@ "lines": 176, "export_count": 0, "import_count": 1, - "churn": 3, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -7099,7 +7188,7 @@ "lines": 52, "export_count": 0, "import_count": 1, - "churn": 4, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -7112,7 +7201,7 @@ "lines": 72, "export_count": 0, "import_count": 0, - "churn": 3, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -7135,10 +7224,10 @@ { "path": "vessel/src/app/api/raven-chat/__tests__/userBlockBuilder.test.ts", "role": "test", - "lines": 287, + "lines": 304, "export_count": 0, "import_count": 2, - "churn": 3, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -7171,7 +7260,7 @@ ], "export_count": 2, "import_count": 6, - "churn": 2, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -7269,7 +7358,7 @@ ], "export_count": 1, "import_count": 6, - "churn": 2, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -7285,7 +7374,7 @@ ], "export_count": 1, "import_count": 2, - "churn": 4, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -7331,7 +7420,7 @@ ], "export_count": 2, "import_count": 2, - "churn": 2, + "churn": 0, "fragility": { "score": 0, "label": "low" @@ -8091,6 +8180,11 @@ "to": "./adviceLadder", "resolved_to": "vessel/src/lib/raven/adviceLadder.ts" }, + { + "from": "vessel/src/lib/raven/affirmativeDomain.ts", + "to": "./temporalAperture", + "resolved_to": "vessel/src/lib/raven/temporalAperture.ts" + }, { "from": "vessel/src/lib/raven/affirmativeRuntime.ts", "to": "./affirmativeDomain", @@ -8171,6 +8265,11 @@ "to": "./relationshipMapping", "resolved_to": "vessel/src/lib/raven/relationshipMapping.ts" }, + { + "from": "vessel/src/lib/raven/dashboardApertureValidation.ts", + "to": "./temporalAperture", + "resolved_to": "vessel/src/lib/raven/temporalAperture.ts" + }, { "from": "vessel/src/lib/raven/degradedReplyBuilders.ts", "to": "./corridorSnapshot", @@ -8286,6 +8385,11 @@ "to": "../v3MathBrain", "resolved_to": "vessel/src/lib/v3MathBrain.ts" }, + { + "from": "vessel/src/lib/raven/sealedArtifact.ts", + "to": "./temporalAperture", + "resolved_to": "vessel/src/lib/raven/temporalAperture.ts" + }, { "from": "vessel/src/lib/raven/semanticDepth.ts", "to": "./localLexicon", @@ -8316,6 +8420,11 @@ "to": "./symbolicMomentTranslation", "resolved_to": "vessel/src/lib/raven/symbolicMomentTranslation.ts" }, + { + "from": "vessel/src/lib/raven/symbolicMomentComposer.ts", + "to": "./temporalAperture", + "resolved_to": "vessel/src/lib/raven/temporalAperture.ts" + }, { "from": "vessel/src/lib/raven/symbolicMomentComposer.ts", "to": "./frontstageLinter", @@ -8341,6 +8450,11 @@ "to": "./frontstageBackstageGuard", "resolved_to": "vessel/src/lib/raven/frontstageBackstageGuard.ts" }, + { + "from": "vessel/src/lib/raven/symbolicMomentFrontstage.ts", + "to": "./temporalAperture", + "resolved_to": "vessel/src/lib/raven/temporalAperture.ts" + }, { "from": "vessel/src/lib/raven/symbolicMomentFrontstage.ts", "to": "../v3MathBrain", @@ -8366,6 +8480,11 @@ "to": "../ravenPersona", "resolved_to": "vessel/src/lib/ravenPersona.ts" }, + { + "from": "vessel/src/lib/raven/turnContinuity.ts", + "to": "./temporalAperture", + "resolved_to": "vessel/src/lib/raven/temporalAperture.ts" + }, { "from": "vessel/src/lib/raven/turnContinuity.ts", "to": "./relationalIntent", @@ -8846,6 +8965,11 @@ "to": "../relationshipMapping", "resolved_to": "vessel/src/lib/raven/relationshipMapping.ts" }, + { + "from": "vessel/src/lib/raven/__tests__/dashboardApertureValidation.test.ts", + "to": "../dashboardApertureValidation", + "resolved_to": "vessel/src/lib/raven/dashboardApertureValidation.ts" + }, { "from": "vessel/src/lib/raven/__tests__/doctrineManifest.test.ts", "to": "../doctrineManifest", @@ -9036,6 +9160,16 @@ "to": "../telemetryInterpretation", "resolved_to": "vessel/src/lib/raven/telemetryInterpretation.ts" }, + { + "from": "vessel/src/lib/raven/__tests__/temporalAperture.test.ts", + "to": "../temporalAperture", + "resolved_to": "vessel/src/lib/raven/temporalAperture.ts" + }, + { + "from": "vessel/src/lib/raven/__tests__/temporalAperture.test.ts", + "to": "../symbolicMomentIntent", + "resolved_to": "vessel/src/lib/raven/symbolicMomentIntent.ts" + }, { "from": "vessel/src/lib/raven/__tests__/tokenGovernor.test.ts", "to": "../tokenGovernor", @@ -9371,6 +9505,11 @@ "to": "@/lib/ui/commandHelper", "resolved_to": "vessel/src/lib/ui/commandHelper.ts" }, + { + "from": "vessel/src/components/AlignmentCorridor.tsx", + "to": "@/lib/raven/temporalAperture", + "resolved_to": "vessel/src/lib/raven/temporalAperture.ts" + }, { "from": "vessel/src/components/AstroPosterCard.tsx", "to": "../lib/vaultSync", @@ -10576,6 +10715,11 @@ "to": "../lib", "resolved_to": "vessel/src/app/api/sherlog/lib.ts" }, + { + "from": "vessel/src/app/api/sherlog/dependency/route.ts", + "to": "../lib", + "resolved_to": "vessel/src/app/api/sherlog/lib.ts" + }, { "from": "vessel/src/app/api/sherlog/config/route.ts", "to": "../lib", @@ -11541,6 +11685,11 @@ "to": "@/lib/raven/frontstageBackstageGuard", "resolved_to": "vessel/src/lib/raven/frontstageBackstageGuard.ts" }, + { + "from": "vessel/src/app/api/raven-chat/route.ts", + "to": "@/lib/raven/temporalAperture", + "resolved_to": "vessel/src/lib/raven/temporalAperture.ts" + }, { "from": "vessel/src/app/api/raven-chat/sealGuard.ts", "to": "../../../lib/raven/types", @@ -11806,6 +11955,11 @@ "to": "@/lib/raven/sealedArtifact", "resolved_to": "vessel/src/lib/raven/sealedArtifact.ts" }, + { + "from": "vessel/src/app/api/raven-chat/upstreamContext.ts", + "to": "@/lib/raven/temporalAperture", + "resolved_to": "vessel/src/lib/raven/temporalAperture.ts" + }, { "from": "vessel/src/app/api/raven-chat/upstreamContext.ts", "to": "@/lib/v3MathBrain", @@ -11906,6 +12060,11 @@ "to": "../../../lib/raven/symbolicMomentComposer", "resolved_to": "vessel/src/lib/raven/symbolicMomentComposer.ts" }, + { + "from": "vessel/src/app/api/raven-chat/userBlockBuilder.ts", + "to": "../../../lib/raven/temporalAperture", + "resolved_to": "vessel/src/lib/raven/temporalAperture.ts" + }, { "from": "vessel/src/app/api/raven-chat/__tests__/circumstanceDisclosure.test.ts", "to": "../circumstanceDisclosure", @@ -12250,248 +12409,136 @@ "fragile_files": [ { "path": "vessel/src/hooks/useOracleChat.ts", - "score": 7, - "label": "high", - "lines": 2554, - "churn": 23 - }, - { - "path": "vessel/src/lib/raven/symbolicMomentFrontstage.ts", - "score": 6, - "label": "high", - "lines": 1297, - "churn": 42 - }, - { - "path": "vessel/src/app/api/raven-chat/intentDetection.ts", - "score": 6, - "label": "high", - "lines": 1270, - "churn": 20 - }, - { - "path": "vessel/src/app/api/raven-chat/sessionState.ts", - "score": 6, - "label": "high", - "lines": 1201, - "churn": 20 - }, - { - "path": "vessel/src/test/api-smoke.test.ts", - "score": 5, - "label": "high", - "lines": 3556, - "churn": 30 - }, - { - "path": "vessel/src/lib/v3MathBrain.ts", - "score": 5, - "label": "high", - "lines": 1213, - "churn": 16 - }, - { - "path": "vessel/src/lib/raven/symbolicMomentComposer.ts", - "score": 5, - "label": "high", - "lines": 1769, - "churn": 14 - }, - { - "path": "vessel/src/app/page.tsx", - "score": 5, - "label": "high", - "lines": 5709, - "churn": 35 - }, - { - "path": "vessel/src/app/api/raven-chat/route.ts", "score": 5, "label": "high", - "lines": 2831, - "churn": 80 + "lines": 2554, + "churn": 0 }, { "path": "vessel/src/lib/vaultSync.ts", "score": 4, "label": "medium", "lines": 2163, - "churn": 5 + "churn": 0 }, { "path": "vessel/src/lib/raven/constellationVault.ts", "score": 4, "label": "medium", "lines": 806, - "churn": 4 - }, - { - "path": "vessel/src/lib/raven/doctrineManifest.ts", - "score": 4, - "label": "medium", - "lines": 1055, - "churn": 8 - }, - { - "path": "vessel/src/lib/raven/instrumentLedger.ts", - "score": 4, - "label": "medium", - "lines": 535, - "churn": 7 - }, - { - "path": "vessel/src/lib/raven/persona-law.ts", - "score": 4, - "label": "medium", - "lines": 482, - "churn": 13 - }, - { - "path": "vessel/src/lib/raven/responseRenderer.ts", - "score": 4, - "label": "medium", - "lines": 874, - "churn": 10 - }, - { - "path": "vessel/src/lib/raven/types.ts", - "score": 4, - "label": "medium", - "lines": 419, - "churn": 8 + "churn": 0 }, { - "path": "vessel/src/lib/raven/__tests__/responseRenderer.test.ts", + "path": "vessel/src/lib/raven/symbolicMomentFrontstage.ts", "score": 4, "label": "medium", - "lines": 814, - "churn": 16 + "lines": 1371, + "churn": 0 }, { - "path": "vessel/src/components/AlignmentCorridor.tsx", + "path": "vessel/src/app/api/raven-chat/intentDetection.ts", "score": 4, "label": "medium", - "lines": 1581, - "churn": 14 + "lines": 1270, + "churn": 0 }, { "path": "vessel/src/app/api/raven-chat/llmProvider.ts", "score": 4, "label": "medium", "lines": 902, - "churn": 5 + "churn": 0 }, { "path": "vessel/src/app/api/raven-chat/requestParsing.ts", "score": 4, "label": "medium", "lines": 824, - "churn": 3 - }, - { - "path": "vessel/src/lib/wovenReportCore.ts", - "score": 3, - "label": "medium", - "lines": 4637, - "churn": 11 - }, - { - "path": "vessel/src/lib/raven/fieldReportVoiceContract.ts", - "score": 3, - "label": "medium", - "lines": 442, - "churn": 17 - }, - { - "path": "vessel/src/lib/raven/protocolEngine.ts", - "score": 3, - "label": "medium", - "lines": 1426, - "churn": 6 + "churn": 0 }, { - "path": "vessel/src/lib/raven/sessionMachine.ts", - "score": 3, + "path": "vessel/src/app/api/raven-chat/sessionState.ts", + "score": 4, "label": "medium", - "lines": 751, - "churn": 9 + "lines": 1201, + "churn": 0 }, { - "path": "vessel/src/lib/raven/__tests__/symbolicMomentComposer.test.ts", + "path": "vessel/src/test/api-smoke.test.ts", "score": 3, "label": "medium", - "lines": 427, - "churn": 14 + "lines": 3556, + "churn": 0 }, { - "path": "vessel/src/lib/raven/__tests__/symbolicMomentFrontstage.test.ts", + "path": "vessel/src/lib/v3MathBrain.ts", "score": 3, "label": "medium", - "lines": 460, - "churn": 32 + "lines": 1254, + "churn": 0 }, { - "path": "vessel/src/lib/black-feather/bflEngine.ts", + "path": "vessel/src/lib/raven/doctrineManifest.ts", "score": 3, "label": "medium", - "lines": 504, - "churn": 2 + "lines": 1098, + "churn": 0 }, { - "path": "vessel/src/components/ProfileVault.tsx", + "path": "vessel/src/lib/raven/instrumentLedger.ts", "score": 3, "label": "medium", - "lines": 2755, - "churn": 10 + "lines": 535, + "churn": 0 }, { - "path": "vessel/src/components/chat/BalanceMeterPill.tsx", + "path": "vessel/src/lib/raven/protocolEngine.ts", "score": 3, "label": "medium", - "lines": 510, - "churn": 13 + "lines": 1426, + "churn": 0 }, { - "path": "vessel/src/components/chat/DownloadSessionButton.tsx", + "path": "vessel/src/lib/raven/responseRenderer.ts", "score": 3, "label": "medium", - "lines": 1578, - "churn": 9 + "lines": 874, + "churn": 0 }, { - "path": "vessel/src/components/chat/SessionFlightRecorder.tsx", + "path": "vessel/src/lib/raven/symbolicMomentComposer.ts", "score": 3, "label": "medium", - "lines": 1593, - "churn": 11 + "lines": 1779, + "churn": 0 }, { - "path": "vessel/src/app/api/raven-chat/enrichmentPhase.ts", + "path": "vessel/src/lib/raven/types.ts", "score": 3, "label": "medium", - "lines": 364, - "churn": 13 + "lines": 419, + "churn": 0 }, { - "path": "vessel/src/app/api/raven-chat/promptLines.ts", + "path": "vessel/src/lib/black-feather/bflEngine.ts", "score": 3, "label": "medium", - "lines": 436, - "churn": 46 + "lines": 504, + "churn": 0 }, { - "path": "vessel/src/app/api/raven-chat/protocolRules.ts", + "path": "vessel/src/app/page.tsx", "score": 3, "label": "medium", - "lines": 517, - "churn": 11 + "lines": 5709, + "churn": 0 }, { - "path": "vessel/src/app/api/raven-chat/userBlockBuilder.ts", + "path": "vessel/src/app/api/raven-chat/route.ts", "score": 3, "label": "medium", - "lines": 440, - "churn": 18 + "lines": 2882, + "churn": 0 } ], "dependency_hubs": [ @@ -12612,6 +12659,12 @@ "governor_contract" ] }, + { + "path": "vessel/src/lib/raven/temporalAperture.ts", + "anchors": [ + "intent_contract" + ] + }, { "path": "vessel/src/lib/raven/tokenGovernor.ts", "anchors": [ @@ -12642,6 +12695,12 @@ "governor_contract" ] }, + { + "path": "vessel/src/lib/raven/__tests__/temporalAperture.test.ts", + "anchors": [ + "intent_contract" + ] + }, { "path": "vessel/src/lib/raven/__tests__/tokenGovernor.test.ts", "anchors": [ @@ -12836,8 +12895,8 @@ } ], "zone_ownership": { - "total": 404, - "covered": 404, + "total": 409, + "covered": 409, "unmapped": 0, "zones": [ { @@ -12868,12 +12927,12 @@ { "name": "Vessel Src App Zone", "belief": "TODO: Describe what this zone governs.", - "file_count": 112 + "file_count": 113 }, { "name": "Vessel Src Lib Zone", "belief": "TODO: Describe what this zone governs.", - "file_count": 187 + "file_count": 191 }, { "name": "Vessel Src Zone", @@ -12895,64 +12954,64 @@ "churn_window_days": 14, "churn_hotspots": [ { - "file": "vessel/src/app/api/raven-chat/route.ts", - "commits": 80 + "file": ".replit_integration_files/server/replit_integrations/batch/index.ts", + "commits": 1 }, { - "file": "vessel/src/app/api/raven-chat/promptLines.ts", - "commits": 46 + "file": ".replit_integration_files/server/replit_integrations/batch/utils.ts", + "commits": 1 }, { - "file": "vessel/src/lib/raven/symbolicMomentFrontstage.ts", - "commits": 42 + "file": ".replit_integration_files/server/replit_integrations/chat/index.ts", + "commits": 1 }, { - "file": "vessel/src/app/page.tsx", - "commits": 35 + "file": ".replit_integration_files/server/replit_integrations/chat/routes.ts", + "commits": 1 }, { - "file": "vessel/src/lib/raven/__tests__/symbolicMomentFrontstage.test.ts", - "commits": 32 + "file": ".replit_integration_files/server/replit_integrations/chat/storage.ts", + "commits": 1 }, { - "file": "vessel/src/test/api-smoke.test.ts", - "commits": 30 + "file": ".replit_integration_files/server/replit_integrations/image/client.ts", + "commits": 1 }, { - "file": "vessel/src/hooks/useOracleChat.ts", - "commits": 23 + "file": ".replit_integration_files/server/replit_integrations/image/index.ts", + "commits": 1 }, { - "file": "vessel/src/app/api/raven-chat/intentDetection.ts", - "commits": 20 + "file": ".replit_integration_files/server/replit_integrations/image/routes.ts", + "commits": 1 }, { - "file": "vessel/src/app/api/raven-chat/sessionState.ts", - "commits": 20 + "file": ".replit_integration_files/shared/models/chat.ts", + "commits": 1 }, { - "file": "vessel/src/app/api/raven-chat/userBlockBuilder.ts", - "commits": 18 + "file": "Research/audits/audit_bundle.ts", + "commits": 1 }, { - "file": "vessel/src/lib/raven/fieldReportRepairFallback.ts", - "commits": 18 + "file": "Research/hurricane_retrodiction/scripts/reproduce_michael.js", + "commits": 1 }, { - "file": "vessel/src/lib/raven/fieldReportVoiceContract.ts", - "commits": 17 + "file": "Research/hurricane_retrodiction/scripts/verify_michael_live.js", + "commits": 1 }, { - "file": "vessel/src/lib/raven/__tests__/responseRenderer.test.ts", - "commits": 16 + "file": "Research/scripts/research_correlation.js", + "commits": 1 }, { - "file": "vessel/src/lib/v3MathBrain.ts", - "commits": 16 + "file": "Research/scripts/research_mood_correlation.js", + "commits": 1 }, { - "file": "vessel/src/components/AlignmentCorridor.tsx", - "commits": 14 + "file": "Research/tests_and_simulations/generate_regression_freeze_frame.test.js", + "commits": 1 } ] } diff --git a/vessel/sherlog-velocity/data/session-log.jsonl b/vessel/sherlog-velocity/data/session-log.jsonl index 6416b37e..ae909d5e 100644 --- a/vessel/sherlog-velocity/data/session-log.jsonl +++ b/vessel/sherlog-velocity/data/session-log.jsonl @@ -2,3 +2,4 @@ {"feature":"Auth Vault Persistence & UX Hardening","type":"implementation","startTime":"2026-03-24T18:58:44.133Z","notes":[{"timestamp":"2026-03-24T18:58:46.855Z","text":"Fixed signOutGuard blocking data sync post-logout"},{"timestamp":"2026-03-24T18:58:49.924Z","text":"Implemented server-side email recovery for Google UID mismatches"},{"timestamp":"2026-03-24T18:58:50.309Z","text":"ProfileVault TypeScript build error resolved"},{"timestamp":"2026-03-24T18:58:51.235Z","text":"Removed redundant properties from raven-chat API"}],"branch":"main","startHead":"4e9ccaa007c78a8808cde56cc840e9810814e5af","cwd":"vessel","endTime":"2026-03-24T18:59:17.770Z","durationSeconds":33.637,"endBranch":"main","endHead":"4e9ccaa007c78a8808cde56cc840e9810814e5af","intelligence":{"code_survival":{"available":false,"reason":"no_committed_additions","lookback_sessions":5,"analyzed_sessions":0,"lines_added":0,"lines_survived":0,"lines_rewritten":0,"survival_rate":null,"hotspots":[]},"net_synergy":{"available":true,"reason":null,"lookback_sessions":8,"delivery_sessions":2,"rework_sessions":0,"net_sessions":2,"discovery_sessions":0,"debugging_sessions":0,"momentum":"positive"},"frustration_index":{"available":true,"reason":null,"commit_window":30,"recent_commits":30,"score":22,"level":"low","keyword_hits":11,"odd_hour_commits":1,"short_subject_commits":1,"subject_length_delta":9.9,"keyword_breakdown":{"fix":11}}}} {"feature":"Symbolic Moment Payload Wiring","type":"implementation","startTime":"2026-04-28T07:25:27.421Z","notes":[{"timestamp":"2026-04-28T07:35:02.476Z","text":"Wired sealed Symbolic Moment payload into Field Report prompt context, preserved LLM frontstage prose, kept Zone 2 audit sealing, and added payload regression coverage."}],"branch":"main","startHead":"1fd478992b1df36d4f46e0420cb55fd4d7b5d9eb","cwd":".","endTime":"2026-04-28T07:35:06.640Z","durationSeconds":579.219,"endBranch":"main","endHead":"1fd478992b1df36d4f46e0420cb55fd4d7b5d9eb","intelligence":{"code_survival":{"available":false,"reason":"no_committed_additions","lookback_sessions":5,"analyzed_sessions":0,"lines_added":0,"lines_survived":0,"lines_rewritten":0,"survival_rate":null,"hotspots":[]},"net_synergy":{"available":true,"reason":null,"lookback_sessions":8,"delivery_sessions":3,"rework_sessions":0,"net_sessions":3,"discovery_sessions":0,"debugging_sessions":0,"momentum":"positive"},"frustration_index":{"available":true,"reason":null,"commit_window":30,"recent_commits":30,"score":23,"level":"low","keyword_hits":12,"odd_hour_commits":1,"short_subject_commits":0,"subject_length_delta":17.1,"keyword_breakdown":{"fix":12}}}} {"feature":"Monthly reading slash command","type":"discovery","startTime":"2026-04-29T01:04:41.354Z","notes":[{"timestamp":"2026-04-29T01:06:50.513Z","text":"Implemented /month and /monthly as Symbolic Moment range aliases; dateUtils now resolves named month windows like April or May 2027."}],"branch":"main","startHead":"ab26c24b8d7acf9dabf9d9746eea8c7dfeafd5ca","cwd":".","endTime":"2026-04-29T01:06:50.659Z","durationSeconds":129.305,"endBranch":"main","endHead":"ab26c24b8d7acf9dabf9d9746eea8c7dfeafd5ca","intelligence":{"code_survival":{"available":false,"reason":"no_committed_additions","lookback_sessions":5,"analyzed_sessions":0,"lines_added":0,"lines_survived":0,"lines_rewritten":0,"survival_rate":null,"hotspots":[]},"net_synergy":{"available":true,"reason":null,"lookback_sessions":8,"delivery_sessions":4,"rework_sessions":0,"net_sessions":4,"discovery_sessions":1,"debugging_sessions":0,"momentum":"positive"},"frustration_index":{"available":true,"reason":null,"commit_window":30,"recent_commits":30,"score":28,"level":"low","keyword_hits":14,"odd_hour_commits":3,"short_subject_commits":0,"subject_length_delta":18.1,"keyword_breakdown":{"fix":14}}}} +{"feature":"Add Symbolic Moment Doctrine to Retrieval Corpus","type":"discovery","startTime":"2026-04-29T08:28:10.223Z","notes":[],"branch":"main","startHead":"07cd195c2b59c9f24428878bdac840d93d22bec2","cwd":".","endTime":"2026-04-30T21:20:10.542Z","durationSeconds":132720.319,"endBranch":"copilot/fix-staging-identity-bug","endHead":"c7f6e8a121daa51581e5bceacda38e196b209d02","intelligence":{"code_survival":{"available":false,"reason":"no_committed_additions","lookback_sessions":5,"analyzed_sessions":0,"lines_added":0,"lines_survived":0,"lines_rewritten":0,"survival_rate":null,"hotspots":[]},"net_synergy":{"available":true,"reason":null,"lookback_sessions":8,"delivery_sessions":5,"rework_sessions":0,"net_sessions":5,"discovery_sessions":2,"debugging_sessions":0,"momentum":"positive"},"frustration_index":{"available":true,"reason":null,"commit_window":30,"recent_commits":2,"score":60,"level":"high","keyword_hits":2,"odd_hour_commits":0,"short_subject_commits":0,"subject_length_delta":-33,"keyword_breakdown":{"fix":2}}}} From 5d0759066fbf6e0a5ffc2295078cf21febdf3ce8 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 30 Apr 2026 21:25:03 +0000 Subject: [PATCH 2/4] Fix staged counterpart identity fallback Agent-Logs-Url: https://github.com/DHCross/Shipyard/sessions/bd1e4e3a-b5f9-4f5d-a4a8-681bc34c2943 Co-authored-by: DHCross <45954119+DHCross@users.noreply.github.com> --- .../sherlog-velocity/data/active-session.json | 7 ++- .../__tests__/counterpartProvenance.test.ts | 46 +++++++++++++++++++ .../__tests__/requestParsing.test.ts | 14 ++++++ .../api/raven-chat/counterpartProvenance.ts | 20 +++++++- vessel/src/app/api/raven-chat/entityGuard.ts | 2 + .../src/app/api/raven-chat/requestParsing.ts | 2 + vessel/src/app/api/raven-chat/route.ts | 5 ++ vessel/src/app/api/raven-chat/types.ts | 2 + vessel/src/hooks/useOracleChat.ts | 2 + .../__tests__/stagedProfileSnapshot.test.ts | 25 ++++++++++ vessel/src/lib/raven/stagedProfileSnapshot.ts | 27 +++++++++-- 11 files changed, 146 insertions(+), 6 deletions(-) diff --git a/vessel/sherlog-velocity/data/active-session.json b/vessel/sherlog-velocity/data/active-session.json index c58aec21..eb221352 100644 --- a/vessel/sherlog-velocity/data/active-session.json +++ b/vessel/sherlog-velocity/data/active-session.json @@ -2,7 +2,12 @@ "feature": "Counterpart staging identity bug", "type": "discovery", "startTime": "2026-04-30T21:20:10.754Z", - "notes": [], + "notes": [ + { + "timestamp": "2026-04-30T21:22:59.600Z", + "text": "Focused tests pass for counterpartProvenance and stagedProfileSnapshot; requestParsing test cannot load because dependencies are not installed (firebase-admin/app missing)." + } + ], "branch": "copilot/fix-staging-identity-bug", "startHead": "c7f6e8a121daa51581e5bceacda38e196b209d02", "cwd": "." diff --git a/vessel/src/app/api/raven-chat/__tests__/counterpartProvenance.test.ts b/vessel/src/app/api/raven-chat/__tests__/counterpartProvenance.test.ts index 708c95b4..3642e2c4 100644 --- a/vessel/src/app/api/raven-chat/__tests__/counterpartProvenance.test.ts +++ b/vessel/src/app/api/raven-chat/__tests__/counterpartProvenance.test.ts @@ -1,6 +1,9 @@ import assert from 'node:assert/strict'; import test from 'node:test'; +import { + applyCounterpartEntityGuard, +} from '../entityGuard'; import { buildCounterpartProvenanceRepairReply, detectCounterpartProvenanceRepairTurn, @@ -68,6 +71,49 @@ test('builds a deterministic provenance repair reply anchored to the staged pair assert.match(reply, /anchored to DH Cross and Alex/i); }); +test('does not deny the active counterpart when the challenged name matches the staged pair', () => { + const reply = buildCounterpartProvenanceRepairReply({ + anchorName: 'DH Cross', + activeCounterpartName: 'Stephie', + challengedName: 'Stephie', + }); + + assert.match(reply, /Correction: Stephie is the active staged counterpart in this session\./); + assert.match(reply, /anchored to DH Cross and Stephie/i); + assert.doesNotMatch(reply, /Stephie is not a staged profile/i); + assert.doesNotMatch(reply, /the staged counterpart/i); + assert.doesNotMatch(reply, /active staged counterpart here is the staged counterpart/i); +}); + +test('returns a repair message instead of a placeholder when an active staged slot has no display name', () => { + const reply = buildCounterpartProvenanceRepairReply({ + anchorName: 'DH Cross', + activeCounterpartName: null, + stagedCounterpartPresent: true, + challengedName: 'Stephie', + }); + + assert.match(reply, /active staged counterpart slot/i); + assert.match(reply, /display name did not survive/i); + assert.doesNotMatch(reply, /Stephie is not a staged profile/i); + assert.doesNotMatch(reply, /active staged counterpart here is the staged counterpart/i); +}); + +test('entity guard does not substitute a placeholder identity for an unnamed staged slot', () => { + const result = applyCounterpartEntityGuard({ + reply: 'The shared field with Stephie is moving through DH Cross.', + allowedNames: ['DH Cross'], + anchorName: 'DH Cross', + activeCounterpartName: null, + stagedCounterpartPresent: true, + }); + + assert.deepEqual(result.unauthorizedNames, ['Stephie']); + assert.match(result.reply, /display name did not survive/i); + assert.doesNotMatch(result.reply, /Stephie is not a staged profile/i); + assert.doesNotMatch(result.reply, /active staged counterpart here is the staged counterpart/i); +}); + test('falls back to a generic repair lead when the challenged token is not a real name', () => { const reply = buildCounterpartProvenanceRepairReply({ anchorName: 'DH Cross', diff --git a/vessel/src/app/api/raven-chat/__tests__/requestParsing.test.ts b/vessel/src/app/api/raven-chat/__tests__/requestParsing.test.ts index 96a49966..e1438d6f 100644 --- a/vessel/src/app/api/raven-chat/__tests__/requestParsing.test.ts +++ b/vessel/src/app/api/raven-chat/__tests__/requestParsing.test.ts @@ -124,6 +124,20 @@ test('sanitizeProfile preserves staging metadata fields for profile freshness tr assert.equal(profile.confirmedThisTurn, true); }); +test('sanitizeProfile preserves staged counterpart display and canonical names for identity repair', () => { + const profile = sanitizeProfile({ + profileId: 'counterpart-1', + name: 'the staged counterpart', + displayName: 'Stephie', + canonicalName: 'Stephanie Cross', + role: 'OBSERVER', + }); + + assert.equal(profile.name, 'the staged counterpart'); + assert.equal(profile.displayName, 'Stephie'); + assert.equal(profile.canonicalName, 'Stephanie Cross'); +}); + test('sanitizeProfile sanitizes stagedAtTurnIndex to non-negative integer', () => { const profile = sanitizeProfile({ profileId: 'test-1', diff --git a/vessel/src/app/api/raven-chat/counterpartProvenance.ts b/vessel/src/app/api/raven-chat/counterpartProvenance.ts index a746d3e0..dd07175c 100644 --- a/vessel/src/app/api/raven-chat/counterpartProvenance.ts +++ b/vessel/src/app/api/raven-chat/counterpartProvenance.ts @@ -109,6 +109,8 @@ const NON_NAME_RELATIONAL_TOKENS = new Set([ 'Itself', ]); +const GENERIC_COUNTERPART_LABEL_PATTERN = /^(?:the\s+)?(?:active\s+)?(?:staged\s+)?counterpart$|^profile\s+\d+$|^unknown$/i; + function isNonNameRelationalToken(candidate: string): boolean { return candidate .split(/\s+/) @@ -121,6 +123,11 @@ function normalizeName(value: string): string { return value.trim().toLowerCase().replace(/'s$/, '').replace(/s'$/, 's').replace(/[.,;:!?)]+$/, ''); } +function isUsableCounterpartName(value: string | null | undefined): value is string { + const normalized = String(value || '').trim(); + return normalized.length > 0 && !GENERIC_COUNTERPART_LABEL_PATTERN.test(normalized); +} + function buildAllowedNameSet(names: readonly string[]): Set { const allowed = new Set(); for (const rawName of names) { @@ -224,12 +231,23 @@ export function detectCounterpartProvenanceRepairTurn(input: { export function buildCounterpartProvenanceRepairReply(input: { anchorName: string | null; activeCounterpartName: string | null; + stagedCounterpartPresent?: boolean; challengedName?: string | null; unauthorizedNames?: readonly string[]; }): string { const anchorName = input.anchorName?.trim() || 'the anchor'; - const activeCounterpartName = input.activeCounterpartName?.trim() || 'the staged counterpart'; + const activeCounterpartName = isUsableCounterpartName(input.activeCounterpartName) + ? input.activeCounterpartName.trim() + : null; const challengedName = input.challengedName?.trim() || input.unauthorizedNames?.[0]?.trim() || null; + if (!activeCounterpartName) { + return input.stagedCounterpartPresent + ? `I can see an active staged counterpart slot in this session, but its display name did not survive into the prompt. I need that staged profile restaged or repaired before I continue the pair, rather than substituting a placeholder identity.` + : `I do not have a named staged counterpart active in this session. Stage the counterpart again and I will keep the field anchored to ${anchorName} and that named profile.`; + } + if (challengedName && normalizeName(challengedName) === normalizeName(activeCounterpartName)) { + return `Correction: ${activeCounterpartName} is the active staged counterpart in this session. I should keep the field anchored to ${anchorName} and ${activeCounterpartName}.`; + } const firstLine = challengedName && !isNonNameRelationalToken(challengedName) ? `${challengedName} is not a staged profile in this session.` : 'That name is not part of the staged field for this session.'; diff --git a/vessel/src/app/api/raven-chat/entityGuard.ts b/vessel/src/app/api/raven-chat/entityGuard.ts index b28051ba..8b5ad973 100644 --- a/vessel/src/app/api/raven-chat/entityGuard.ts +++ b/vessel/src/app/api/raven-chat/entityGuard.ts @@ -15,6 +15,7 @@ export function applyCounterpartEntityGuard(input: { allowedNames: readonly string[]; anchorName: string | null; activeCounterpartName: string | null; + stagedCounterpartPresent?: boolean; eventStore?: InMemoryEventStore; }): CounterpartEntityGuardResult { const unauthorizedNames = findUnauthorizedCounterpartNames(input.reply, input.allowedNames); @@ -42,6 +43,7 @@ export function applyCounterpartEntityGuard(input: { reply: buildCounterpartProvenanceRepairReply({ anchorName: input.anchorName, activeCounterpartName: input.activeCounterpartName, + stagedCounterpartPresent: input.stagedCounterpartPresent, unauthorizedNames, }), unauthorizedNames, diff --git a/vessel/src/app/api/raven-chat/requestParsing.ts b/vessel/src/app/api/raven-chat/requestParsing.ts index c53d7822..8ea3f5bc 100644 --- a/vessel/src/app/api/raven-chat/requestParsing.ts +++ b/vessel/src/app/api/raven-chat/requestParsing.ts @@ -480,6 +480,8 @@ export function sanitizeProfile(input: unknown): Profile { return { profileId: asTrimmedText(profile.profileId, 160) || asTrimmedText(profile.id, 160), name: asTrimmedText(profile.name, 120), + displayName: asTrimmedText(profile.displayName, 120), + canonicalName: asTrimmedText(profile.canonicalName, 120), livingStatus: (() => { const raw = asTrimmedText(profile.livingStatus, 24).toLowerCase(); if (raw === 'living' || raw === 'deceased' || raw === 'unknown') return raw; diff --git a/vessel/src/app/api/raven-chat/route.ts b/vessel/src/app/api/raven-chat/route.ts index 4899326f..4c3b3d5d 100644 --- a/vessel/src/app/api/raven-chat/route.ts +++ b/vessel/src/app/api/raven-chat/route.ts @@ -664,6 +664,9 @@ async function runRavenChatPipeline(request: Request): Promise { } const hasKnownLocation = Boolean(liveLocation) || hasPersistedCurrentLocation(profile); const stagedProfileNames = stagedProfileSnapshot.rosterNames; + const stagedCounterpartSlotPresent = stagedProfiles.some( + (candidate) => String(candidate.role || '').trim().toUpperCase() !== 'SELF', + ) || Boolean(stagedProfileSnapshot.activeCounterpart); const polyadicCounterpartProfiles = stagedProfiles.filter( (candidate) => String(candidate.role || '').trim().toUpperCase() !== 'SELF', ); @@ -856,6 +859,7 @@ async function runRavenChatPipeline(request: Request): Promise { const reply = buildCounterpartProvenanceRepairReply({ anchorName: profile.name || anchorLabel, activeCounterpartName: stagedProfileSnapshot.activeCounterpartName, + stagedCounterpartPresent: stagedCounterpartSlotPresent, challengedName: counterpartProvenanceRepair.challengedName, }); applyTelemetryInfrastructureEvent( @@ -2568,6 +2572,7 @@ async function runRavenChatPipeline(request: Request): Promise { ].filter(Boolean), anchorName: profile.name || anchorLabel, activeCounterpartName: stagedProfileSnapshot.activeCounterpartName, + stagedCounterpartPresent: stagedCounterpartSlotPresent, eventStore, }).reply; const integrity = resolveReplyIntegrity({ diff --git a/vessel/src/app/api/raven-chat/types.ts b/vessel/src/app/api/raven-chat/types.ts index 626f520c..d0f9eaf5 100644 --- a/vessel/src/app/api/raven-chat/types.ts +++ b/vessel/src/app/api/raven-chat/types.ts @@ -40,6 +40,8 @@ export type BlindMirrorServerPayload = { export type Profile = { profileId?: string; name?: string; + displayName?: string; + canonicalName?: string; birthDate?: string; birthTime?: string; birthTimeRecord?: BirthTimeRecord | null; diff --git a/vessel/src/hooks/useOracleChat.ts b/vessel/src/hooks/useOracleChat.ts index 31124d16..97ecfcd5 100644 --- a/vessel/src/hooks/useOracleChat.ts +++ b/vessel/src/hooks/useOracleChat.ts @@ -463,6 +463,8 @@ function profileToApiPayload(profile: VaultProfile | null, role?: StagingRole) { return { profileId: resolvedProfile.id, name: resolvedProfile.name, + displayName: resolvedProfile.name, + canonicalName: resolvedProfile.name, birthDate: `${String(year).padStart(4, '0')}-${String(month).padStart(2, '0')}-${String(day).padStart(2, '0')}`, birthTime: operationalBirthTime || '', latitude: hasValidNatalCoordinates ? String(birthData.latitude) : '', diff --git a/vessel/src/lib/raven/__tests__/stagedProfileSnapshot.test.ts b/vessel/src/lib/raven/__tests__/stagedProfileSnapshot.test.ts index 047e0337..47e43ced 100644 --- a/vessel/src/lib/raven/__tests__/stagedProfileSnapshot.test.ts +++ b/vessel/src/lib/raven/__tests__/stagedProfileSnapshot.test.ts @@ -68,6 +68,31 @@ test('staged profile snapshot excludes names the user has denied so a hallucinat assert.deepEqual(snapshot.excludedNames, ['April']); }); +test('staged profile snapshot recovers counterpart identity from displayName and rejects generic placeholders', () => { + const snapshot = buildStagedProfileSnapshot([ + { profileId: 'self', name: 'DH Cross', role: 'SELF' }, + { profileId: 'counterpart_stephie', name: 'the staged counterpart', displayName: 'Stephie', role: 'OBSERVER' }, + { profileId: 'counterpart_generic', name: 'Profile 3', displayName: 'the staged counterpart', role: 'OBSERVER' }, + ]); + + assert.deepEqual(snapshot.rosterNames, ['DH Cross', 'Stephie']); + assert.deepEqual(snapshot.counterpartNames, ['Stephie']); + assert.equal(snapshot.activeCounterpartName, 'Stephie'); + assert.ok(snapshot.excludedNames.includes('counterpart_generic')); +}); + +test('staged profile snapshot does not activate an unnamed counterpart slot', () => { + const snapshot = buildStagedProfileSnapshot([ + { profileId: 'self', name: 'DH Cross', role: 'SELF' }, + { profileId: 'counterpart_missing_name', name: 'the staged counterpart', role: 'OBSERVER' }, + ]); + + assert.deepEqual(snapshot.counterpartNames, []); + assert.equal(snapshot.activeCounterpart, null); + assert.equal(snapshot.activeCounterpartName, null); + assert.ok(snapshot.excludedNames.includes('counterpart_missing_name')); +}); + test('staged profile snapshot drops entries with confirmedThisTurn=false while preserving legacy callers that omit the flag', () => { const snapshot = buildStagedProfileSnapshot([ { profileId: 'self', name: 'Primary Anchor', role: 'SELF' }, diff --git a/vessel/src/lib/raven/stagedProfileSnapshot.ts b/vessel/src/lib/raven/stagedProfileSnapshot.ts index 9c073fc5..389c9205 100644 --- a/vessel/src/lib/raven/stagedProfileSnapshot.ts +++ b/vessel/src/lib/raven/stagedProfileSnapshot.ts @@ -1,6 +1,8 @@ export type StageableProfile = { profileId?: string; name?: string; + displayName?: string; + canonicalName?: string; role?: string; livingStatus?: 'living' | 'deceased' | 'unknown'; /** @@ -70,9 +72,20 @@ function normalizeRoleLabel(value: string | undefined): 'SELF' | 'OBSERVER' | 'U return 'UNSPECIFIED'; } -function displayNameForProfile(profile: StageableProfile, index: number): string { - const name = String(profile.name || '').trim(); - return name || `Profile ${index + 1}`; +const GENERIC_COUNTERPART_LABEL_PATTERN = /^(?:the\s+)?(?:active\s+)?(?:staged\s+)?counterpart$|^profile\s+\d+$|^unknown$/i; + +export function isGenericStagedCounterpartLabel(value: string | null | undefined): boolean { + const normalized = String(value || '').trim(); + return !normalized || GENERIC_COUNTERPART_LABEL_PATTERN.test(normalized); +} + +function displayNameForProfile(profile: StageableProfile, index: number, roleLabel: 'SELF' | 'OBSERVER' | 'UNSPECIFIED'): string { + const candidates = [profile.canonicalName, profile.displayName, profile.name] + .map((value) => String(value || '').trim()) + .filter((value) => value.length > 0); + const resolved = candidates.find((value) => !isGenericStagedCounterpartLabel(value)) || ''; + if (resolved) return resolved; + return roleLabel === 'SELF' ? `Profile ${index + 1}` : ''; } export function buildStagedProfileSnapshot( @@ -93,11 +106,17 @@ export function buildStagedProfileSnapshot( const rawOrdered = profiles.map((profile, originalIndex) => ({ profile, originalIndex, - displayName: displayNameForProfile(profile, originalIndex), roleLabel: normalizeRoleLabel(profile.role), + })).map((entry) => ({ + ...entry, + displayName: displayNameForProfile(entry.profile, entry.originalIndex, entry.roleLabel), })); const orderedProfiles = rawOrdered.filter((entry) => { + if (!entry.displayName) { + excludedNames.push(entry.profile.profileId || 'unnamed staged counterpart'); + return false; + } const nameKey = entry.displayName.trim().toLowerCase(); if (nameKey && deniedNormalized.has(nameKey)) { excludedNames.push(entry.displayName); From f3bffb743dd14d370e73d99bd8883a02181687b6 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 30 Apr 2026 21:45:12 +0000 Subject: [PATCH 3/4] Deduplicate staged counterpart identity guard Agent-Logs-Url: https://github.com/DHCross/Shipyard/sessions/bd1e4e3a-b5f9-4f5d-a4a8-681bc34c2943 Co-authored-by: DHCross <45954119+DHCross@users.noreply.github.com> --- .../src/app/api/raven-chat/counterpartProvenance.ts | 11 +++-------- vessel/src/lib/raven/counterpartIdentity.ts | 10 ++++++++++ vessel/src/lib/raven/stagedProfileSnapshot.ts | 9 ++------- 3 files changed, 15 insertions(+), 15 deletions(-) create mode 100644 vessel/src/lib/raven/counterpartIdentity.ts diff --git a/vessel/src/app/api/raven-chat/counterpartProvenance.ts b/vessel/src/app/api/raven-chat/counterpartProvenance.ts index dd07175c..f777b6cd 100644 --- a/vessel/src/app/api/raven-chat/counterpartProvenance.ts +++ b/vessel/src/app/api/raven-chat/counterpartProvenance.ts @@ -1,3 +1,5 @@ +import { isUsableCounterpartDisplayName } from '../../../lib/raven/counterpartIdentity'; + const HUMAN_NAME_PATTERN = /\b([A-Z][a-z]+(?:\s+[A-Z][a-z]+)*)\b/g; const RELATIONAL_NAME_PATTERNS = [ @@ -109,8 +111,6 @@ const NON_NAME_RELATIONAL_TOKENS = new Set([ 'Itself', ]); -const GENERIC_COUNTERPART_LABEL_PATTERN = /^(?:the\s+)?(?:active\s+)?(?:staged\s+)?counterpart$|^profile\s+\d+$|^unknown$/i; - function isNonNameRelationalToken(candidate: string): boolean { return candidate .split(/\s+/) @@ -123,11 +123,6 @@ function normalizeName(value: string): string { return value.trim().toLowerCase().replace(/'s$/, '').replace(/s'$/, 's').replace(/[.,;:!?)]+$/, ''); } -function isUsableCounterpartName(value: string | null | undefined): value is string { - const normalized = String(value || '').trim(); - return normalized.length > 0 && !GENERIC_COUNTERPART_LABEL_PATTERN.test(normalized); -} - function buildAllowedNameSet(names: readonly string[]): Set { const allowed = new Set(); for (const rawName of names) { @@ -236,7 +231,7 @@ export function buildCounterpartProvenanceRepairReply(input: { unauthorizedNames?: readonly string[]; }): string { const anchorName = input.anchorName?.trim() || 'the anchor'; - const activeCounterpartName = isUsableCounterpartName(input.activeCounterpartName) + const activeCounterpartName = isUsableCounterpartDisplayName(input.activeCounterpartName) ? input.activeCounterpartName.trim() : null; const challengedName = input.challengedName?.trim() || input.unauthorizedNames?.[0]?.trim() || null; diff --git a/vessel/src/lib/raven/counterpartIdentity.ts b/vessel/src/lib/raven/counterpartIdentity.ts new file mode 100644 index 00000000..7efefa28 --- /dev/null +++ b/vessel/src/lib/raven/counterpartIdentity.ts @@ -0,0 +1,10 @@ +const GENERIC_COUNTERPART_LABEL_PATTERN = /^(?:the\s+)?(?:active\s+)?(?:staged\s+)?counterpart$|^profile\s+\d+$|^unknown$/i; + +export function isGenericStagedCounterpartLabel(value: string | null | undefined): boolean { + const normalized = String(value || '').trim(); + return !normalized || GENERIC_COUNTERPART_LABEL_PATTERN.test(normalized); +} + +export function isUsableCounterpartDisplayName(value: string | null | undefined): value is string { + return !isGenericStagedCounterpartLabel(value); +} diff --git a/vessel/src/lib/raven/stagedProfileSnapshot.ts b/vessel/src/lib/raven/stagedProfileSnapshot.ts index 389c9205..af75c1ca 100644 --- a/vessel/src/lib/raven/stagedProfileSnapshot.ts +++ b/vessel/src/lib/raven/stagedProfileSnapshot.ts @@ -1,3 +1,5 @@ +import { isGenericStagedCounterpartLabel } from './counterpartIdentity'; + export type StageableProfile = { profileId?: string; name?: string; @@ -72,13 +74,6 @@ function normalizeRoleLabel(value: string | undefined): 'SELF' | 'OBSERVER' | 'U return 'UNSPECIFIED'; } -const GENERIC_COUNTERPART_LABEL_PATTERN = /^(?:the\s+)?(?:active\s+)?(?:staged\s+)?counterpart$|^profile\s+\d+$|^unknown$/i; - -export function isGenericStagedCounterpartLabel(value: string | null | undefined): boolean { - const normalized = String(value || '').trim(); - return !normalized || GENERIC_COUNTERPART_LABEL_PATTERN.test(normalized); -} - function displayNameForProfile(profile: StageableProfile, index: number, roleLabel: 'SELF' | 'OBSERVER' | 'UNSPECIFIED'): string { const candidates = [profile.canonicalName, profile.displayName, profile.name] .map((value) => String(value || '').trim()) From 58f87ed93b227b2443ec6d0b646a65bd89b5c2d1 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Thu, 30 Apr 2026 21:46:52 +0000 Subject: [PATCH 4/4] Close counterpart identity Sherlog session Agent-Logs-Url: https://github.com/DHCross/Shipyard/sessions/bd1e4e3a-b5f9-4f5d-a4a8-681bc34c2943 Co-authored-by: DHCross <45954119+DHCross@users.noreply.github.com> --- vessel/sherlog-velocity/data/active-session.json | 14 -------------- vessel/sherlog-velocity/data/session-log.jsonl | 1 + 2 files changed, 1 insertion(+), 14 deletions(-) delete mode 100644 vessel/sherlog-velocity/data/active-session.json diff --git a/vessel/sherlog-velocity/data/active-session.json b/vessel/sherlog-velocity/data/active-session.json deleted file mode 100644 index eb221352..00000000 --- a/vessel/sherlog-velocity/data/active-session.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "feature": "Counterpart staging identity bug", - "type": "discovery", - "startTime": "2026-04-30T21:20:10.754Z", - "notes": [ - { - "timestamp": "2026-04-30T21:22:59.600Z", - "text": "Focused tests pass for counterpartProvenance and stagedProfileSnapshot; requestParsing test cannot load because dependencies are not installed (firebase-admin/app missing)." - } - ], - "branch": "copilot/fix-staging-identity-bug", - "startHead": "c7f6e8a121daa51581e5bceacda38e196b209d02", - "cwd": "." -} \ No newline at end of file diff --git a/vessel/sherlog-velocity/data/session-log.jsonl b/vessel/sherlog-velocity/data/session-log.jsonl index ae909d5e..103b6258 100644 --- a/vessel/sherlog-velocity/data/session-log.jsonl +++ b/vessel/sherlog-velocity/data/session-log.jsonl @@ -3,3 +3,4 @@ {"feature":"Symbolic Moment Payload Wiring","type":"implementation","startTime":"2026-04-28T07:25:27.421Z","notes":[{"timestamp":"2026-04-28T07:35:02.476Z","text":"Wired sealed Symbolic Moment payload into Field Report prompt context, preserved LLM frontstage prose, kept Zone 2 audit sealing, and added payload regression coverage."}],"branch":"main","startHead":"1fd478992b1df36d4f46e0420cb55fd4d7b5d9eb","cwd":".","endTime":"2026-04-28T07:35:06.640Z","durationSeconds":579.219,"endBranch":"main","endHead":"1fd478992b1df36d4f46e0420cb55fd4d7b5d9eb","intelligence":{"code_survival":{"available":false,"reason":"no_committed_additions","lookback_sessions":5,"analyzed_sessions":0,"lines_added":0,"lines_survived":0,"lines_rewritten":0,"survival_rate":null,"hotspots":[]},"net_synergy":{"available":true,"reason":null,"lookback_sessions":8,"delivery_sessions":3,"rework_sessions":0,"net_sessions":3,"discovery_sessions":0,"debugging_sessions":0,"momentum":"positive"},"frustration_index":{"available":true,"reason":null,"commit_window":30,"recent_commits":30,"score":23,"level":"low","keyword_hits":12,"odd_hour_commits":1,"short_subject_commits":0,"subject_length_delta":17.1,"keyword_breakdown":{"fix":12}}}} {"feature":"Monthly reading slash command","type":"discovery","startTime":"2026-04-29T01:04:41.354Z","notes":[{"timestamp":"2026-04-29T01:06:50.513Z","text":"Implemented /month and /monthly as Symbolic Moment range aliases; dateUtils now resolves named month windows like April or May 2027."}],"branch":"main","startHead":"ab26c24b8d7acf9dabf9d9746eea8c7dfeafd5ca","cwd":".","endTime":"2026-04-29T01:06:50.659Z","durationSeconds":129.305,"endBranch":"main","endHead":"ab26c24b8d7acf9dabf9d9746eea8c7dfeafd5ca","intelligence":{"code_survival":{"available":false,"reason":"no_committed_additions","lookback_sessions":5,"analyzed_sessions":0,"lines_added":0,"lines_survived":0,"lines_rewritten":0,"survival_rate":null,"hotspots":[]},"net_synergy":{"available":true,"reason":null,"lookback_sessions":8,"delivery_sessions":4,"rework_sessions":0,"net_sessions":4,"discovery_sessions":1,"debugging_sessions":0,"momentum":"positive"},"frustration_index":{"available":true,"reason":null,"commit_window":30,"recent_commits":30,"score":28,"level":"low","keyword_hits":14,"odd_hour_commits":3,"short_subject_commits":0,"subject_length_delta":18.1,"keyword_breakdown":{"fix":14}}}} {"feature":"Add Symbolic Moment Doctrine to Retrieval Corpus","type":"discovery","startTime":"2026-04-29T08:28:10.223Z","notes":[],"branch":"main","startHead":"07cd195c2b59c9f24428878bdac840d93d22bec2","cwd":".","endTime":"2026-04-30T21:20:10.542Z","durationSeconds":132720.319,"endBranch":"copilot/fix-staging-identity-bug","endHead":"c7f6e8a121daa51581e5bceacda38e196b209d02","intelligence":{"code_survival":{"available":false,"reason":"no_committed_additions","lookback_sessions":5,"analyzed_sessions":0,"lines_added":0,"lines_survived":0,"lines_rewritten":0,"survival_rate":null,"hotspots":[]},"net_synergy":{"available":true,"reason":null,"lookback_sessions":8,"delivery_sessions":5,"rework_sessions":0,"net_sessions":5,"discovery_sessions":2,"debugging_sessions":0,"momentum":"positive"},"frustration_index":{"available":true,"reason":null,"commit_window":30,"recent_commits":2,"score":60,"level":"high","keyword_hits":2,"odd_hour_commits":0,"short_subject_commits":0,"subject_length_delta":-33,"keyword_breakdown":{"fix":2}}}} +{"feature":"Counterpart staging identity bug","type":"discovery","startTime":"2026-04-30T21:20:10.754Z","notes":[{"timestamp":"2026-04-30T21:22:59.600Z","text":"Focused tests pass for counterpartProvenance and stagedProfileSnapshot; requestParsing test cannot load because dependencies are not installed (firebase-admin/app missing)."}],"branch":"copilot/fix-staging-identity-bug","startHead":"c7f6e8a121daa51581e5bceacda38e196b209d02","cwd":".","endTime":"2026-04-30T21:46:45.337Z","durationSeconds":1594.583,"endBranch":"copilot/fix-staging-identity-bug","endHead":"f3bffb743dd14d370e73d99bd8883a02181687b6","intelligence":{"code_survival":{"available":false,"reason":"no_committed_additions","lookback_sessions":5,"analyzed_sessions":0,"lines_added":0,"lines_survived":0,"lines_rewritten":0,"survival_rate":null,"hotspots":[]},"net_synergy":{"available":true,"reason":null,"lookback_sessions":8,"delivery_sessions":6,"rework_sessions":1,"net_sessions":5,"discovery_sessions":3,"debugging_sessions":0,"momentum":"positive"},"frustration_index":{"available":true,"reason":null,"commit_window":30,"recent_commits":5,"score":49,"level":"moderate","keyword_hits":4,"odd_hour_commits":0,"short_subject_commits":0,"subject_length_delta":-24.8,"keyword_breakdown":{"fix":4}}}}