| Default | 20583 | 923 | 21506 | 68547 | 95.7% | | 16732 | 18754 | 89.2% | |
| src/accountlinking/classifier.js | 141 | 0 | 141 | 525 | 100% | | 155 | 156 | 99.3% | |
| src/accountlinking/defaultRules.js | 2 | 0 | 2 | 40 | 100% | | 0 | 0 | | |
| src/accountlinking/engine.helpers.js | 80 | 0 | 80 | 284 | 100% | | 79 | 79 | 100% | |
| src/accountlinking/engine.js | 131 | 8 | 139 | 505 | 94.2% | | 117 | 125 | 93.6% | |
| src/accountlinking/fold.js | 5 | 0 | 5 | 54 | 100% | | 4 | 4 | 100% | |
| src/accountlinking/guardEvidence.js | 30 | 0 | 30 | 138 | 100% | | 28 | 29 | 96.5% | |
| src/accountlinking/initials.js | 23 | 0 | 23 | 144 | 100% | | 35 | 35 | 100% | |
| src/accountlinking/nameClaim.js | 62 | 0 | 62 | 327 | 100% | | 54 | 55 | 98.1% | |
| src/accountlinking/nameKeys.js | 14 | 0 | 14 | 74 | 100% | | 10 | 10 | 100% | |
| src/accountlinking/orphanQuery.js | 10 | 0 | 10 | 111 | 100% | | 3 | 3 | 100% | |
| src/accountlinking/rulesMerge.js | 10 | 0 | 10 | 79 | 100% | | 8 | 8 | 100% | |
| src/accountlinking/staleNameOnlyLinks.js | 25 | 0 | 25 | 170 | 100% | | 17 | 18 | 94.4% | |
| src/app.js | 100 | 7 | 107 | 489 | 93.4% | | 32 | 54 | 59.2% | |
| src/auth/contextOwner.js | 33 | 0 | 33 | 143 | 100% | | 22 | 22 | 100% | |
| src/auth/contextOwnerScope.js | 43 | 0 | 43 | 160 | 100% | | 46 | 46 | 100% | |
| src/auth/contextOwnerSetting.js | 24 | 0 | 24 | 72 | 100% | | 12 | 12 | 100% | |
| src/auth/ownerAccess/annotate.js | 27 | 0 | 27 | 54 | 100% | | 32 | 32 | 100% | |
| src/auth/ownerAccess/endpoints.js | 25 | 0 | 25 | 125 | 100% | | 12 | 12 | 100% | |
| src/auth/ownerAccess/index.js | 0 | 0 | 0 | 0 | | | 0 | 0 | | |
| src/auth/ownerAccess/matrixFilter.js | 60 | 0 | 60 | 137 | 100% | | 81 | 82 | 98.7% | |
| src/auth/ownerAccess/ownerAccess.js | 44 | 0 | 44 | 114 | 100% | | 28 | 28 | 100% | |
| src/auth/ownerAccess/responses.js | 8 | 0 | 8 | 31 | 100% | | 10 | 11 | 90.9% | |
| src/auth/ownerAccess/tiers.js | 41 | 0 | 41 | 168 | 100% | | 14 | 14 | 100% | |
| src/auth/permissionManifest.js | 3 | 0 | 3 | 76 | 100% | | 0 | 0 | | |
| src/auth/permissions.js | 17 | 0 | 17 | 103 | 100% | | 10 | 10 | 100% | |
| src/auth/readTokens.js | 29 | 0 | 29 | 115 | 100% | | 19 | 19 | 100% | |
| src/auth/resolveMe.js | 32 | 0 | 32 | 131 | 100% | | 34 | 34 | 100% | |
| src/auth/shareTokens.js | 4 | 0 | 4 | 32 | 100% | | 3 | 3 | 100% | |
| src/bootstrap.js | 65 | 81 | 146 | 422 | 44.5% | | 28 | 54 | 51.8% | |
| src/cli/auth-config.js | 75 | 7 | 82 | 211 | 91.4% | | 56 | 60 | 93.3% | |
| src/cli/rotate-master-key.js | 42 | 4 | 46 | 109 | 91.3% | | 22 | 23 | 95.6% | |
| src/config/authConfig.js | 49 | 8 | 57 | 232 | 85.9% | | 41 | 55 | 74.5% | |
| src/config/fileSecrets.js | 13 | 0 | 13 | 48 | 100% | | 12 | 12 | 100% | |
| src/config/loadFileSecrets.js | 2 | 0 | 2 | 8 | 100% | | 2 | 2 | 100% | |
| src/contextAssistant/prompt.js | 16 | 0 | 16 | 134 | 100% | | 7 | 8 | 87.5% | |
| src/contextAssistant/service.js | 43 | 0 | 43 | 187 | 100% | | 41 | 48 | 85.4% | |
| src/contexts/adjustments/afterSync.js | 3 | 0 | 3 | 13 | 100% | | 4 | 4 | 100% | |
| src/contexts/adjustments/apply.js | 59 | 5 | 64 | 141 | 92.1% | | 45 | 75 | 60% | |
| src/contexts/adjustments/applyCommon.js | 20 | 1 | 21 | 48 | 95.2% | | 14 | 21 | 66.6% | |
| src/contexts/adjustments/applySplit.js | 30 | 13 | 43 | 101 | 69.7% | | 20 | 39 | 51.2% | |
| src/contexts/adjustments/attention.js | 36 | 10 | 46 | 113 | 78.2% | | 22 | 39 | 56.4% | |
| src/contexts/adjustments/detect.js | 10 | 0 | 10 | 32 | 100% | | 15 | 15 | 100% | |
| src/contexts/adjustments/ops.js | 79 | 1 | 80 | 141 | 98.7% | | 96 | 106 | 90.5% | |
| src/contexts/adjustments/service.js | 81 | 0 | 81 | 180 | 100% | | 58 | 78 | 74.3% | |
| src/contexts/adjustments/treeKey.js | 25 | 0 | 25 | 76 | 100% | | 40 | 44 | 90.9% | |
| src/contexts/adjustments/treeStore.js | 21 | 0 | 21 | 78 | 100% | | 20 | 22 | 90.9% | |
| src/contexts/adjustments/undo.js | 9 | 18 | 27 | 71 | 33.3% | | 4 | 26 | 15.3% | |
| src/contexts/adjustments/view.js | 56 | 4 | 60 | 145 | 93.3% | | 51 | 72 | 70.8% | |
| src/contexts/assignmentCounts.js | 14 | 0 | 14 | 106 | 100% | | 4 | 4 | 100% | |
| src/contexts/changeRequests.js | 58 | 0 | 58 | 191 | 100% | | 58 | 59 | 98.3% | |
| src/contexts/contextFilters.js | 35 | 1 | 36 | 134 | 97.2% | | 26 | 32 | 81.2% | |
| src/contexts/cycleGuard.js | 6 | 0 | 6 | 73 | 100% | | 4 | 4 | 100% | |
| src/contexts/interviews/aliasHints.js | 83 | 0 | 83 | 165 | 100% | | 64 | 70 | 91.4% | |
| src/contexts/interviews/claims.js | 121 | 0 | 121 | 271 | 100% | | 143 | 144 | 99.3% | |
| src/contexts/interviews/contradictions.js | 116 | 0 | 116 | 270 | 100% | | 187 | 197 | 94.9% | |
| src/contexts/interviews/decide.js | 109 | 0 | 109 | 263 | 100% | | 120 | 123 | 97.5% | |
| src/contexts/interviews/extract.js | 130 | 3 | 133 | 289 | 97.7% | | 113 | 119 | 94.9% | |
| src/contexts/interviews/firstNames.js | 40 | 0 | 40 | 150 | 100% | | 20 | 20 | 100% | |
| src/contexts/interviews/leftSignal.js | 19 | 0 | 19 | 74 | 100% | | 37 | 39 | 94.8% | |
| src/contexts/interviews/memberFacts.js | 45 | 0 | 45 | 135 | 100% | | 87 | 96 | 90.6% | |
| src/contexts/interviews/memberOverrides.js | 31 | 0 | 31 | 132 | 100% | | 39 | 40 | 97.5% | |
| src/contexts/interviews/nameSpan.js | 30 | 0 | 30 | 67 | 100% | | 22 | 24 | 91.6% | |
| src/contexts/interviews/overrideRows.js | 8 | 0 | 8 | 24 | 100% | | 6 | 6 | 100% | |
| src/contexts/interviews/people.js | 76 | 0 | 76 | 243 | 100% | | 124 | 124 | 100% | |
| src/contexts/interviews/peopleLoad.js | 44 | 0 | 44 | 127 | 100% | | 27 | 29 | 93.1% | |
| src/contexts/interviews/prompt.js | 16 | 0 | 16 | 115 | 100% | | 16 | 16 | 100% | |
| src/contexts/interviews/quoteOffsets.js | 30 | 0 | 30 | 60 | 100% | | 26 | 28 | 92.8% | |
| src/contexts/interviews/relevance.js | 10 | 0 | 10 | 51 | 100% | | 20 | 22 | 90.9% | |
| src/contexts/interviews/roles.js | 36 | 0 | 36 | 111 | 100% | | 49 | 51 | 96% | |
| src/contexts/interviews/sentences.js | 46 | 0 | 46 | 125 | 100% | | 55 | 58 | 94.8% | |
| src/contexts/interviews/service.js | 96 | 0 | 96 | 226 | 100% | | 117 | 119 | 98.3% | |
| src/contexts/interviews/sourceText.js | 14 | 0 | 14 | 56 | 100% | | 16 | 16 | 100% | |
| src/contexts/interviews/store.js | 63 | 3 | 66 | 443 | 95.4% | | 42 | 46 | 91.3% | |
| src/contexts/interviews/subjects.js | 69 | 1 | 70 | 166 | 98.5% | | 56 | 58 | 96.5% | |
| src/contexts/interviews/timelineEvents.js | 58 | 0 | 58 | 135 | 100% | | 68 | 70 | 97.1% | |
| src/contexts/interviews/transcript.js | 87 | 0 | 87 | 188 | 100% | | 82 | 85 | 96.4% | |
| src/contexts/memberCounts.js | 14 | 0 | 14 | 112 | 100% | | 7 | 7 | 100% | |
| src/contexts/memberReferences.js | 27 | 0 | 27 | 163 | 100% | | 14 | 14 | 100% | |
| src/contexts/orgKnowledge/manual.js | 39 | 0 | 39 | 107 | 100% | | 48 | 51 | 94.1% | |
| src/contexts/orgKnowledge/objects.js | 20 | 0 | 20 | 90 | 100% | | 12 | 13 | 92.3% | |
| src/contexts/plugins/ad-ou-from-dn.js | 29 | 18 | 47 | 132 | 61.7% | | 17 | 26 | 65.3% | |
| src/contexts/plugins/context-recipe.js | 26 | 0 | 26 | 104 | 100% | | 12 | 15 | 80% | |
| src/contexts/plugins/department-from-principal.js | 19 | 0 | 19 | 76 | 100% | | 14 | 14 | 100% | |
| src/contexts/plugins/entra-group-category-tree.js | 26 | 0 | 26 | 76 | 100% | | 19 | 21 | 90.4% | |
| src/contexts/plugins/manager-hierarchy.helpers.js | 60 | 0 | 60 | 151 | 100% | | 58 | 58 | 100% | |
| src/contexts/plugins/manager-hierarchy.js | 31 | 0 | 31 | 168 | 100% | | 12 | 14 | 85.7% | |
| src/contexts/plugins/manager-hierarchy.layout.js | 66 | 0 | 66 | 132 | 100% | | 54 | 57 | 94.7% | |
| src/contexts/plugins/manager-hierarchy.options.js | 30 | 0 | 30 | 102 | 100% | | 54 | 56 | 96.4% | |
| src/contexts/plugins/orphaned-accounts.js | 15 | 0 | 15 | 61 | 100% | | 2 | 2 | 100% | |
| src/contexts/plugins/principal-type-tree.js | 33 | 0 | 33 | 100 | 100% | | 29 | 30 | 96.6% | |
| src/contexts/plugins/registry.js | 2 | 0 | 2 | 42 | 100% | | 2 | 2 | 100% | |
| src/contexts/plugins/resource-cluster/index.js | 30 | 0 | 30 | 136 | 100% | | 16 | 18 | 88.8% | |
| src/contexts/plugins/resource-cluster/tokenize.js | 28 | 0 | 28 | 128 | 100% | | 19 | 20 | 95% | |
| src/contexts/plugins/resource-type-tree.js | 69 | 6 | 75 | 190 | 92% | | 47 | 49 | 95.9% | |
| src/contexts/plugins/risky-consent.js | 68 | 4 | 72 | 215 | 94.4% | | 43 | 56 | 76.7% | |
| src/contexts/plugins/riskyAppFeed.js | 35 | 0 | 35 | 86 | 100% | | 31 | 33 | 93.9% | |
| src/contexts/plugins/riskyConsentRiskMap.js | 16 | 0 | 16 | 106 | 100% | | 21 | 23 | 91.3% | |
| src/contexts/plugins/runner.helpers.js | 50 | 0 | 50 | 109 | 100% | | 32 | 32 | 100% | |
| src/contexts/plugins/runner.js | 106 | 18 | 124 | 440 | 85.4% | | 76 | 100 | 76% | |
| src/contexts/plugins/scope-hierarchy.js | 37 | 2 | 39 | 130 | 94.8% | | 28 | 34 | 82.3% | |
| src/contexts/plugins/system-membership-principals.js | 1 | 0 | 1 | 11 | 100% | | 0 | 0 | | |
| src/contexts/plugins/system-membership-resources.js | 1 | 0 | 1 | 10 | 100% | | 0 | 0 | | |
| src/contexts/plugins/system-membership.helpers.js | 25 | 0 | 25 | 93 | 100% | | 14 | 15 | 93.3% | |
| src/contexts/plugins/types.js | 0 | 0 | 0 | 0 | | | 0 | 0 | | |
| src/contexts/recipe/matches.js | 61 | 0 | 61 | 178 | 100% | | 33 | 35 | 94.2% | |
| src/contexts/recipe/recipe.js | 60 | 0 | 60 | 171 | 100% | | 63 | 65 | 96.9% | |
| src/contexts/recipe/relatedWords.js | 30 | 0 | 30 | 80 | 100% | | 21 | 23 | 91.3% | |
| src/contexts/resourceMemberFacts.js | 10 | 0 | 10 | 50 | 100% | | 12 | 12 | 100% | |
| src/contexts/roleSuggestion.js | 35 | 0 | 35 | 138 | 100% | | 28 | 28 | 100% | |
| src/contexts/seedAlgorithms.js | 8 | 0 | 8 | 48 | 100% | | 6 | 10 | 60% | |
| src/contexts/timeline/unitEvents.js | 151 | 1 | 152 | 316 | 99.3% | | 195 | 238 | 81.9% | |
| src/contexts/timeline/unitTimeline.js | 66 | 0 | 66 | 222 | 100% | | 37 | 41 | 90.2% | |
| src/contexts/upload/aiRefine.js | 39 | 0 | 39 | 115 | 100% | | 23 | 28 | 82.1% | |
| src/contexts/upload/cellValues.js | 24 | 0 | 24 | 67 | 100% | | 32 | 32 | 100% | |
| src/contexts/upload/diff.js | 16 | 0 | 16 | 42 | 100% | | 20 | 20 | 100% | |
| src/contexts/upload/drafts.js | 34 | 0 | 34 | 86 | 100% | | 24 | 26 | 92.3% | |
| src/contexts/upload/guess.js | 59 | 1 | 60 | 159 | 98.3% | | 56 | 61 | 91.8% | |
| src/contexts/upload/lists.js | 23 | 0 | 23 | 95 | 100% | | 16 | 16 | 100% | |
| src/contexts/upload/mapping.js | 43 | 0 | 43 | 76 | 100% | | 43 | 43 | 100% | |
| src/contexts/upload/members.js | 64 | 0 | 64 | 182 | 100% | | 54 | 55 | 98.1% | |
| src/contexts/upload/parse.js | 88 | 1 | 89 | 183 | 98.8% | | 98 | 102 | 96% | |
| src/contexts/upload/plan.js | 51 | 0 | 51 | 113 | 100% | | 47 | 47 | 100% | |
| src/contexts/upload/profile.js | 24 | 0 | 24 | 74 | 100% | | 19 | 21 | 90.4% | |
| src/contexts/upload/records.js | 50 | 0 | 50 | 148 | 100% | | 32 | 32 | 100% | |
| src/contexts/upload/service.js | 101 | 0 | 101 | 248 | 100% | | 81 | 92 | 88% | |
| src/contexts/workbench/investigationDraft.js | 97 | 0 | 97 | 225 | 100% | | 135 | 135 | 100% | |
| src/contexts/workbench/investigations.js | 85 | 0 | 85 | 260 | 100% | | 51 | 54 | 94.4% | |
| src/contexts/workbench/load.js | 55 | 0 | 55 | 185 | 100% | | 16 | 16 | 100% | |
| src/contexts/workbench/model.js | 105 | 1 | 106 | 233 | 99% | | 128 | 135 | 94.8% | |
| src/contexts/workbench/proposedMatrix.js | 2 | 0 | 2 | 23 | 100% | | 0 | 0 | | |
| src/contexts/workbench/resourceContexts.js | 16 | 0 | 16 | 52 | 100% | | 8 | 8 | 100% | |
| src/crawlerManifests.js | 37 | 1 | 38 | 130 | 97.3% | | 26 | 29 | 89.6% | |
| src/db/__mocks__/connection.js | 0 | 5 | 5 | 29 | 0% | | 0 | 0 | | |
| src/db/columnCache.js | 115 | 0 | 115 | 443 | 100% | | 64 | 68 | 94.1% | |
| src/db/connection.js | 34 | 25 | 59 | 158 | 57.6% | | 23 | 49 | 46.9% | |
| src/db/connectionDefaults.js | 7 | 0 | 7 | 30 | 100% | | 10 | 10 | 100% | |
| src/db/matrixHelpers.js | 17 | 0 | 17 | 70 | 100% | | 28 | 28 | 100% | |
| src/db/migrate.js | 64 | 6 | 70 | 207 | 91.4% | | 24 | 27 | 88.8% | |
| src/db/queryHelpers.js | 5 | 0 | 5 | 43 | 100% | | 0 | 0 | | |
| src/db/schemaErrors.js | 2 | 0 | 2 | 19 | 100% | | 2 | 2 | 100% | |
| src/db/sqlParams.js | 7 | 0 | 7 | 47 | 100% | | 0 | 0 | | |
| src/db/valueCache.js | 35 | 0 | 35 | 114 | 100% | | 23 | 23 | 100% | |
| src/docs/docsStructure.js | 97 | 2 | 99 | 236 | 97.9% | | 51 | 64 | 79.6% | |
| src/effectiveAccess/engine.helpers.js | 42 | 0 | 42 | 108 | 100% | | 46 | 46 | 100% | |
| src/effectiveAccess/engine.js | 118 | 0 | 118 | 405 | 100% | | 65 | 74 | 87.8% | |
| src/effectiveAccess/lru.js | 12 | 0 | 12 | 33 | 100% | | 4 | 4 | 100% | |
| src/effectiveAccess/policies.js | 23 | 0 | 23 | 88 | 100% | | 30 | 30 | 100% | |
| src/export/excelWorkbook.js | 62 | 0 | 62 | 166 | 100% | | 6 | 6 | 100% | |
| src/export/exportBaseUrl.js | 18 | 0 | 18 | 71 | 100% | | 21 | 22 | 95.4% | |
| src/export/queryTemplates.js | 10 | 0 | 10 | 195 | 100% | | 4 | 4 | 100% | |
| src/featureFlags.js | 35 | 0 | 35 | 154 | 100% | | 26 | 26 | 100% | |
| src/ingest/contextOwners.js | 18 | 0 | 18 | 245 | 100% | | 28 | 28 | 100% | |
| src/ingest/crawlerPresence.js | 22 | 0 | 22 | 83 | 100% | | 25 | 25 | 100% | |
| src/ingest/deleteByKeys.js | 49 | 0 | 49 | 120 | 100% | | 48 | 49 | 97.9% | |
| src/ingest/engine.js | 130 | 3 | 133 | 453 | 97.7% | | 118 | 125 | 94.4% | |
| src/ingest/initialLoad.js | 16 | 0 | 16 | 64 | 100% | | 16 | 16 | 100% | |
| src/ingest/managerLinks.js | 17 | 0 | 17 | 109 | 100% | | 33 | 33 | 100% | |
| src/ingest/normalization.js | 88 | 3 | 91 | 313 | 96.7% | | 88 | 92 | 95.6% | |
| src/ingest/reconcileStale.js | 36 | 0 | 36 | 126 | 100% | | 43 | 47 | 91.4% | |
| src/ingest/sessions.js | 80 | 17 | 97 | 264 | 82.4% | | 59 | 72 | 81.9% | |
| src/ingest/stages.js | 147 | 1 | 148 | 403 | 99.3% | | 114 | 121 | 94.2% | |
| src/ingest/systemBoundary.js | 49 | 0 | 49 | 224 | 100% | | 53 | 53 | 100% | |
| src/ingest/tempTableHelpers.js | 18 | 0 | 18 | 43 | 100% | | 10 | 10 | 100% | |
| src/ingest/tombstonePurge.js | 7 | 0 | 7 | 28 | 100% | | 6 | 6 | 100% | |
| src/ingest/validation.helpers.js | 81 | 0 | 81 | 238 | 100% | | 107 | 107 | 100% | |
| src/ingest/validation.js | 30 | 0 | 30 | 515 | 100% | | 11 | 11 | 100% | |
| src/ingest/viewRefresh.js | 47 | 0 | 47 | 109 | 100% | | 25 | 25 | 100% | |
| src/lib/attributeLabels.js | 69 | 0 | 69 | 210 | 100% | | 59 | 61 | 96.7% | |
| src/lib/capabilityId.js | 7 | 0 | 7 | 51 | 100% | | 8 | 8 | 100% | |
| src/lib/cappedBody.js | 16 | 0 | 16 | 30 | 100% | | 11 | 11 | 100% | |
| src/lib/contextCategories.js | 4 | 0 | 4 | 50 | 100% | | 4 | 4 | 100% | |
| src/lib/contextNameMatch.js | 29 | 0 | 29 | 73 | 100% | | 25 | 28 | 89.2% | |
| src/lib/crawlerAuditLogCap.js | 8 | 0 | 8 | 39 | 100% | | 15 | 15 | 100% | |
| src/lib/crawlerJobQueue.js | 9 | 0 | 9 | 59 | 100% | | 9 | 9 | 100% | |
| src/lib/dateOnly.js | 3 | 0 | 3 | 13 | 100% | | 9 | 9 | 100% | |
| src/lib/entitySearch.js | 58 | 0 | 58 | 155 | 100% | | 76 | 78 | 97.4% | |
| src/lib/extKeys.js | 11 | 0 | 11 | 58 | 100% | | 13 | 13 | 100% | |
| src/lib/httpJson.js | 22 | 0 | 22 | 62 | 100% | | 11 | 13 | 84.6% | |
| src/lib/jobConfig.js | 4 | 0 | 4 | 25 | 100% | | 6 | 6 | 100% | |
| src/lib/jsonb.js | 5 | 0 | 5 | 19 | 100% | | 4 | 4 | 100% | |
| src/lib/lastSignInFilter.js | 13 | 0 | 13 | 67 | 100% | | 14 | 14 | 100% | |
| src/lib/listParams.js | 8 | 0 | 8 | 18 | 100% | | 8 | 8 | 100% | |
| src/lib/listSort.js | 5 | 0 | 5 | 34 | 100% | | 9 | 9 | 100% | |
| src/lib/nameMatch.js | 67 | 0 | 67 | 142 | 100% | | 41 | 41 | 100% | |
| src/lib/oneLineForLog.js | 1 | 0 | 1 | 12 | 100% | | 2 | 2 | 100% | |
| src/lib/orgKnowledge.js | 9 | 0 | 9 | 40 | 100% | | 8 | 8 | 100% | |
| src/lib/ownershipTypes.js | 5 | 0 | 5 | 50 | 100% | | 0 | 0 | | |
| src/lib/principalActivity.js | 7 | 0 | 7 | 70 | 100% | | 3 | 3 | 100% | |
| src/lib/principalTypes.js | 1 | 0 | 1 | 6 | 100% | | 0 | 0 | | |
| src/lib/referenceFilters.js | 55 | 0 | 55 | 226 | 100% | | 44 | 44 | 100% | |
| src/lib/repoRoot.js | 10 | 0 | 10 | 39 | 100% | | 5 | 5 | 100% | |
| src/lib/resourceOwners.js | 39 | 0 | 39 | 155 | 100% | | 44 | 50 | 88% | |
| src/lib/resourceVisibility.js | 11 | 0 | 11 | 55 | 100% | | 10 | 10 | 100% | |
| src/lib/serializedRunner.js | 20 | 0 | 20 | 49 | 100% | | 13 | 13 | 100% | |
| src/lib/ssrfGuard.js | 81 | 0 | 81 | 195 | 100% | | 116 | 121 | 95.8% | |
| src/lib/syncVersion.js | 7 | 0 | 7 | 46 | 100% | | 7 | 8 | 87.5% | |
| src/lib/systemFilter.js | 11 | 0 | 11 | 58 | 100% | | 12 | 12 | 100% | |
| src/lib/tagRoot.js | 3 | 0 | 3 | 15 | 100% | | 0 | 0 | | |
| src/lib/throttledTouch.js | 11 | 0 | 11 | 40 | 100% | | 8 | 9 | 88.8% | |
| src/lib/uploadCapacity.js | 30 | 0 | 30 | 87 | 100% | | 32 | 33 | 96.9% | |
| src/lib/userOf.js | 2 | 0 | 2 | 8 | 100% | | 6 | 6 | 100% | |
| src/llm/providers.js | 66 | 79 | 145 | 382 | 45.5% | | 69 | 174 | 39.6% | |
| src/llm/riskPrompts.js | 35 | 2 | 37 | 250 | 94.5% | | 21 | 26 | 80.7% | |
| src/llm/scraper.js | 69 | 10 | 79 | 233 | 87.3% | | 47 | 59 | 79.6% | |
| src/llm/service.js | 28 | 25 | 53 | 162 | 52.8% | | 18 | 47 | 38.2% | |
| src/lookups/registry.js | 8 | 0 | 8 | 36 | 100% | | 4 | 4 | 100% | |
| src/lookups/sources/access-review-fields.js | 28 | 0 | 28 | 111 | 100% | | 21 | 23 | 91.3% | |
| src/lookups/sources/application-permissions.js | 13 | 0 | 13 | 72 | 100% | | 16 | 16 | 100% | |
| src/lookups/sources/contextLookup.js | 12 | 0 | 12 | 63 | 100% | | 9 | 9 | 100% | |
| src/lookups/sources/index.js | 1 | 0 | 1 | 14 | 100% | | 0 | 0 | | |
| src/lookups/sources/resource-contexts.js | 0 | 0 | 0 | 0 | | | 0 | 0 | | |
| src/lookups/sources/unit-contexts.js | 0 | 0 | 0 | 0 | | | 0 | 0 | | |
| src/lookups/types.js | 0 | 0 | 0 | 0 | | | 0 | 0 | | |
| src/matrix/attrExpr.js | 9 | 0 | 9 | 33 | 100% | | 14 | 14 | 100% | |
| src/matrix/attributeCut.js | 33 | 0 | 33 | 138 | 100% | | 22 | 25 | 88% | |
| src/matrix/contextRollup.js | 57 | 0 | 57 | 310 | 100% | | 65 | 70 | 92.8% | |
| src/matrix/filterSql.js | 75 | 7 | 82 | 238 | 91.4% | | 69 | 82 | 84.1% | |
| src/matrix/inheritedAccess.js | 164 | 0 | 164 | 432 | 100% | | 86 | 110 | 78.1% | |
| src/matrix/resourceContexts.js | 15 | 0 | 15 | 62 | 100% | | 13 | 13 | 100% | |
| src/matrix/rollupBuilders.js | 22 | 0 | 22 | 130 | 100% | | 24 | 24 | 100% | |
| src/matrix/scopeHistory.js | 75 | 0 | 75 | 345 | 100% | | 73 | 75 | 97.3% | |
| src/mcp/audit.js | 12 | 0 | 12 | 47 | 100% | | 17 | 17 | 100% | |
| src/mcp/auth.js | 35 | 0 | 35 | 98 | 100% | | 28 | 28 | 100% | |
| src/mcp/ownerScope.js | 11 | 0 | 11 | 59 | 100% | | 12 | 13 | 92.3% | |
| src/mcp/resource.js | 11 | 0 | 11 | 60 | 100% | | 5 | 5 | 100% | |
| src/mcp/result.js | 18 | 0 | 18 | 62 | 100% | | 20 | 20 | 100% | |
| src/mcp/router.js | 16 | 3 | 19 | 53 | 84.2% | | 4 | 6 | 66.6% | |
| src/mcp/server.js | 26 | 0 | 26 | 92 | 100% | | 24 | 25 | 96% | |
| src/mcp/tools/identity.js | 30 | 0 | 30 | 103 | 100% | | 28 | 31 | 90.3% | |
| src/mcp/tools/photos.js | 26 | 0 | 26 | 77 | 100% | | 18 | 18 | 100% | |
| src/mcp/tools/query.js | 46 | 0 | 46 | 199 | 100% | | 55 | 55 | 100% | |
| src/mcp/tools/reports.js | 30 | 0 | 30 | 116 | 100% | | 23 | 24 | 95.8% | |
| src/middleware/auth.js | 76 | 7 | 83 | 258 | 91.5% | | 57 | 63 | 90.4% | |
| src/middleware/contextOwnerMode.js | 47 | 0 | 47 | 118 | 100% | | 34 | 34 | 100% | |
| src/middleware/crawlerAuth.helpers.js | 10 | 0 | 10 | 53 | 100% | | 18 | 18 | 100% | |
| src/middleware/crawlerAuth.js | 74 | 2 | 76 | 218 | 97.3% | | 49 | 57 | 85.9% | |
| src/middleware/crawlerAuthFailureLimiter.js | 23 | 0 | 23 | 64 | 100% | | 19 | 19 | 100% | |
| src/middleware/perfMetrics.js | 19 | 4 | 23 | 79 | 82.6% | | 8 | 12 | 66.6% | |
| src/middleware/rateLimitKeys.js | 21 | 0 | 21 | 58 | 100% | | 32 | 32 | 100% | |
| src/middleware/requestOriginGuard.js | 68 | 0 | 68 | 185 | 100% | | 63 | 64 | 98.4% | |
| src/mock/data.js | 55 | 0 | 55 | 185 | 100% | | 17 | 18 | 94.4% | |
| src/nlreports/assistantHttp.js | 47 | 3 | 50 | 142 | 94% | | 45 | 48 | 93.7% | |
| src/nlreports/autofix.activity.js | 50 | 0 | 50 | 155 | 100% | | 89 | 110 | 80.9% | |
| src/nlreports/autofix.followup.js | 26 | 0 | 26 | 58 | 100% | | 40 | 48 | 83.3% | |
| src/nlreports/autofix.js | 252 | 1 | 253 | 702 | 99.6% | | 364 | 408 | 89.2% | |
| src/nlreports/caller.js | 10 | 1 | 11 | 139 | 90.9% | | 14 | 19 | 73.6% | |
| src/nlreports/catalog.js | 87 | 0 | 87 | 784 | 100% | | 2 | 2 | 100% | |
| src/nlreports/catalogPayload.js | 9 | 0 | 9 | 39 | 100% | | 6 | 6 | 100% | |
| src/nlreports/compare.js | 88 | 7 | 95 | 210 | 92.6% | | 61 | 77 | 79.2% | |
| src/nlreports/compile.js | 115 | 1 | 116 | 335 | 99.1% | | 114 | 116 | 98.2% | |
| src/nlreports/contradictions.js | 59 | 0 | 59 | 181 | 100% | | 81 | 86 | 94.1% | |
| src/nlreports/conversations.js | 20 | 10 | 30 | 268 | 66.6% | | 57 | 76 | 75% | |
| src/nlreports/explain.js | 39 | 5 | 44 | 106 | 88.6% | | 36 | 42 | 85.7% | |
| src/nlreports/extFields.js | 44 | 0 | 44 | 176 | 100% | | 31 | 34 | 91.1% | |
| src/nlreports/followUp.js | 83 | 0 | 83 | 346 | 100% | | 131 | 145 | 90.3% | |
| src/nlreports/language.js | 8 | 0 | 8 | 47 | 100% | | 11 | 11 | 100% | |
| src/nlreports/llamacpp.js | 50 | 0 | 50 | 181 | 100% | | 50 | 69 | 72.4% | |
| src/nlreports/llm.js | 8 | 0 | 8 | 25 | 100% | | 2 | 7 | 28.5% | |
| src/nlreports/ollama.js | 20 | 4 | 24 | 79 | 83.3% | | 29 | 34 | 85.2% | |
| src/nlreports/prompt.js | 42 | 0 | 42 | 391 | 100% | | 14 | 14 | 100% | |
| src/nlreports/references.js | 120 | 1 | 121 | 302 | 99.1% | | 98 | 100 | 98% | |
| src/nlreports/savedReports.js | 55 | 2 | 57 | 151 | 96.4% | | 56 | 61 | 91.8% | |
| src/nlreports/scope.js | 10 | 0 | 10 | 62 | 100% | | 10 | 10 | 100% | |
| src/nlreports/sentinels.js | 16 | 0 | 16 | 94 | 100% | | 33 | 34 | 97% | |
| src/nlreports/service.js | 216 | 1 | 217 | 662 | 99.5% | | 229 | 254 | 90.1% | |
| src/nlreports/settings.js | 4 | 1 | 5 | 21 | 80% | | 4 | 4 | 100% | |
| src/nlreports/spec.js | 197 | 5 | 202 | 486 | 97.5% | | 220 | 240 | 91.6% | |
| src/nlreports/state.js | 25 | 0 | 25 | 103 | 100% | | 12 | 12 | 100% | |
| src/nlreports/terms.js | 121 | 0 | 121 | 324 | 100% | | 129 | 133 | 96.9% | |
| src/nlreports/warmup.js | 24 | 0 | 24 | 87 | 100% | | 14 | 15 | 93.3% | |
| src/ontology/__tests__/miniOntology.js | 13 | 0 | 13 | 156 | 100% | | 4 | 6 | 66.6% | |
| src/ontology/checks/contexts.js | 62 | 0 | 62 | 126 | 100% | | 54 | 54 | 100% | |
| src/ontology/checks/crawlers.js | 49 | 0 | 49 | 98 | 100% | | 31 | 32 | 96.8% | |
| src/ontology/checks/dbSchema.js | 41 | 0 | 41 | 90 | 100% | | 27 | 28 | 96.4% | |
| src/ontology/checks/implementation.js | 84 | 0 | 84 | 164 | 100% | | 64 | 68 | 94.1% | |
| src/ontology/checks/integrity.js | 131 | 0 | 131 | 250 | 100% | | 123 | 125 | 98.4% | |
| src/ontology/checks/knownGaps.js | 15 | 0 | 15 | 39 | 100% | | 12 | 12 | 100% | |
| src/ontology/checks/templates.js | 63 | 0 | 63 | 127 | 100% | | 37 | 39 | 94.8% | |
| src/ontology/cli.js | 73 | 0 | 73 | 166 | 100% | | 42 | 45 | 93.3% | |
| src/ontology/contextTypeUsage.js | 26 | 0 | 26 | 70 | 100% | | 10 | 10 | 100% | |
| src/ontology/docsDiagrams.js | 75 | 0 | 75 | 146 | 100% | | 55 | 56 | 98.2% | |
| src/ontology/example.js | 108 | 0 | 108 | 203 | 100% | | 103 | 106 | 97.1% | |
| src/ontology/mermaid.js | 49 | 0 | 49 | 136 | 100% | | 27 | 29 | 93.1% | |
| src/ontology/model.js | 75 | 0 | 75 | 255 | 100% | | 75 | 79 | 94.9% | |
| src/ontology/referenceDoc.js | 65 | 0 | 65 | 141 | 100% | | 49 | 52 | 94.2% | |
| src/ontology/registry.js | 6 | 0 | 6 | 62 | 100% | | 0 | 0 | | |
| src/ontology/typeDiagrams.js | 28 | 0 | 28 | 54 | 100% | | 22 | 24 | 91.6% | |
| src/ontology/typeOrigins.js | 21 | 0 | 21 | 51 | 100% | | 20 | 20 | 100% | |
| src/ontology/vocabulary.js | 14 | 0 | 14 | 63 | 100% | | 6 | 6 | 100% | |
| src/perf/collector.js | 54 | 0 | 54 | 139 | 100% | | 14 | 16 | 87.5% | |
| src/perf/sqlTimer.js | 12 | 0 | 12 | 35 | 100% | | 9 | 11 | 81.8% | |
| src/postCrawlJobs.js | 1 | 7 | 8 | 28 | 12.5% | | 0 | 1 | 0% | |
| src/reports/accessReviewFields.js | 47 | 0 | 47 | 131 | 100% | | 42 | 42 | 100% | |
| src/reports/activityWindow.js | 27 | 0 | 27 | 187 | 100% | | 17 | 17 | 100% | |
| src/reports/appPermissionRisk.js | 21 | 0 | 21 | 137 | 100% | | 18 | 18 | 100% | |
| src/reports/appRiskData.js | 38 | 0 | 38 | 168 | 100% | | 51 | 53 | 96.2% | |
| src/reports/appRiskPermissions.js | 15 | 0 | 15 | 61 | 100% | | 16 | 16 | 100% | |
| src/reports/appRiskRules.js | 112 | 0 | 112 | 312 | 100% | | 143 | 152 | 94% | |
| src/reports/attributeColumns.js | 36 | 0 | 36 | 93 | 100% | | 30 | 30 | 100% | |
| src/reports/contextDetails.js | 57 | 0 | 57 | 189 | 100% | | 55 | 55 | 100% | |
| src/reports/export.js | 119 | 0 | 119 | 384 | 100% | | 97 | 111 | 87.3% | |
| src/reports/heldEntitlements.js | 8 | 0 | 8 | 75 | 100% | | 1 | 2 | 50% | |
| src/reports/humanReview.js | 12 | 0 | 12 | 86 | 100% | | 11 | 11 | 100% | |
| src/reports/registry.js | 20 | 0 | 20 | 78 | 100% | | 24 | 24 | 100% | |
| src/reports/run.js | 4 | 0 | 4 | 25 | 100% | | 13 | 13 | 100% | |
| src/reports/templates/access-outside-roles.js | 9 | 0 | 9 | 76 | 100% | | 6 | 6 | 100% | |
| src/reports/templates/access-review-adoption.js | 56 | 0 | 56 | 390 | 100% | | 80 | 85 | 94.1% | |
| src/reports/templates/access-reviewer-response.js | 58 | 0 | 58 | 298 | 100% | | 59 | 59 | 100% | |
| src/reports/templates/application-access-review.js | 139 | 0 | 139 | 590 | 100% | | 66 | 71 | 92.9% | |
| src/reports/templates/disabled-accounts-with-access.js | 4 | 0 | 4 | 52 | 100% | | 0 | 0 | | |
| src/reports/templates/empty-groups.js | 4 | 0 | 4 | 53 | 100% | | 0 | 0 | | |
| src/reports/templates/high-risk-application-permissions.js | 35 | 0 | 35 | 202 | 100% | | 39 | 42 | 92.8% | |
| src/reports/templates/index.js | 1 | 0 | 1 | 25 | 100% | | 0 | 0 | | |
| src/reports/templates/missing-managers.js | 5 | 0 | 5 | 68 | 100% | | 0 | 0 | | |
| src/reports/templates/never-signed-in.js | 6 | 0 | 6 | 58 | 100% | | 0 | 0 | | |
| src/reports/templates/orphaned-accounts.js | 5 | 0 | 5 | 45 | 100% | | 0 | 0 | | |
| src/reports/templates/privileged-accounts.js | 7 | 0 | 7 | 88 | 100% | | 4 | 4 | 100% | |
| src/reports/templates/risky-applications.js | 44 | 0 | 44 | 172 | 100% | | 53 | 62 | 85.4% | |
| src/reports/templates/stale-accounts.js | 6 | 0 | 6 | 57 | 100% | | 0 | 0 | | |
| src/reports/templates/stale-guest-accounts.js | 13 | 0 | 13 | 89 | 100% | | 11 | 11 | 100% | |
| src/reports/templates/unit-members.js | 77 | 1 | 78 | 232 | 98.7% | | 53 | 55 | 96.3% | |
| src/reports/types.js | 0 | 0 | 0 | 0 | | | 0 | 0 | | |
| src/reports/unitClaims.js | 58 | 0 | 58 | 165 | 100% | | 63 | 64 | 98.4% | |
| src/reports/unitMembers.js | 10 | 0 | 10 | 111 | 100% | | 5 | 5 | 100% | |
| src/reports/views.js | 65 | 0 | 65 | 181 | 100% | | 81 | 82 | 98.7% | |
| src/reports/xlsxCharts.js | 79 | 0 | 79 | 177 | 100% | | 41 | 45 | 91.1% | |
| src/reports/xlsxPivots.js | 115 | 0 | 115 | 277 | 100% | | 79 | 80 | 98.7% | |
| src/riskscoring/engine.helpers.js | 61 | 0 | 61 | 128 | 100% | | 41 | 43 | 95.3% | |
| src/riskscoring/engine.js | 249 | 32 | 281 | 877 | 88.6% | | 140 | 184 | 76% | |
| src/riskscoring/scoringRunGuard.js | 2 | 0 | 2 | 16 | 100% | | 0 | 0 | | |
| src/riskscoring/tiers.js | 6 | 0 | 6 | 17 | 100% | | 10 | 10 | 100% | |
| src/routes/accountLinking.js | 53 | 1 | 54 | 132 | 98.1% | | 32 | 36 | 88.8% | |
| src/routes/admin.js | 7 | 0 | 7 | 31 | 100% | | 0 | 0 | | |
| src/routes/admin/curatedData.js | 37 | 0 | 37 | 95 | 100% | | 15 | 15 | 100% | |
| src/routes/admin/curatedExport.js | 26 | 0 | 26 | 92 | 100% | | 17 | 18 | 94.4% | |
| src/routes/admin/curatedImport.js | 82 | 2 | 84 | 215 | 97.6% | | 56 | 70 | 80% | |
| src/routes/admin/dashboard.js | 26 | 2 | 28 | 140 | 92.8% | | 18 | 22 | 81.8% | |
| src/routes/admin/maintenance.js | 72 | 7 | 79 | 220 | 91.1% | | 30 | 35 | 85.7% | |
| src/routes/admin/mcp.js | 7 | 0 | 7 | 22 | 100% | | 0 | 0 | | |
| src/routes/admin/riskConfig.js | 22 | 0 | 22 | 98 | 100% | | 13 | 19 | 68.4% | |
| src/routes/admin/settings.js | 18 | 2 | 20 | 66 | 90% | | 25 | 27 | 92.5% | |
| src/routes/attributeLabels.js | 11 | 0 | 11 | 32 | 100% | | 6 | 6 | 100% | |
| src/routes/authRoles.js | 59 | 1 | 60 | 209 | 98.3% | | 45 | 50 | 90% | |
| src/routes/bulkLists.js | 84 | 4 | 88 | 286 | 95.4% | | 36 | 38 | 94.7% | |
| src/routes/categories.js | 145 | 2 | 147 | 405 | 98.6% | | 109 | 119 | 91.5% | |
| src/routes/contextAssistant.js | 88 | 7 | 95 | 201 | 92.6% | | 54 | 65 | 83% | |
| src/routes/contextOwnerAccess.js | 16 | 0 | 16 | 46 | 100% | | 9 | 10 | 90% | |
| src/routes/contextPlugins.js | 85 | 0 | 85 | 210 | 100% | | 41 | 53 | 77.3% | |
| src/routes/contexts.js | 13 | 0 | 13 | 54 | 100% | | 0 | 0 | | |
| src/routes/contexts/changeRequests.js | 8 | 0 | 8 | 27 | 100% | | 4 | 4 | 100% | |
| src/routes/contexts/crud.js | 72 | 0 | 72 | 194 | 100% | | 56 | 69 | 81.1% | |
| src/routes/contexts/crudHelpers.js | 50 | 1 | 51 | 112 | 98% | | 72 | 76 | 94.7% | |
| src/routes/contexts/interviews.js | 73 | 6 | 79 | 206 | 92.4% | | 53 | 60 | 88.3% | |
| src/routes/contexts/members.js | 61 | 0 | 61 | 157 | 100% | | 46 | 55 | 83.6% | |
| src/routes/contexts/read.js | 128 | 1 | 129 | 437 | 99.2% | | 112 | 121 | 92.5% | |
| src/routes/contexts/references.js | 12 | 0 | 12 | 30 | 100% | | 8 | 8 | 100% | |
| src/routes/contexts/relationships.js | 44 | 0 | 44 | 114 | 100% | | 33 | 36 | 91.6% | |
| src/routes/contexts/roles.js | 79 | 0 | 79 | 198 | 100% | | 57 | 60 | 95% | |
| src/routes/contexts/shared.js | 6 | 0 | 6 | 25 | 100% | | 0 | 0 | | |
| src/routes/contexts/trees.js | 50 | 1 | 51 | 100 | 98% | | 32 | 39 | 82% | |
| src/routes/contexts/uploads.js | 31 | 2 | 33 | 99 | 93.9% | | 19 | 24 | 79.1% | |
| src/routes/contexts/workbench.js | 28 | 2 | 30 | 69 | 93.3% | | 21 | 22 | 95.4% | |
| src/routes/contexts/workbenchInvestigations.js | 28 | 0 | 28 | 80 | 100% | | 8 | 10 | 80% | |
| src/routes/crawlerFiles.js | 139 | 13 | 152 | 374 | 91.4% | | 68 | 84 | 80.9% | |
| src/routes/crawlers.js | 0 | 0 | 0 | 0 | | | 0 | 0 | | |
| src/routes/crawlers/admin.js | 92 | 12 | 104 | 268 | 88.4% | | 70 | 82 | 85.3% | |
| src/routes/crawlers/crawlerGuards.js | 15 | 0 | 15 | 46 | 100% | | 12 | 12 | 100% | |
| src/routes/crawlers/selfService.js | 156 | 24 | 180 | 451 | 86.6% | | 109 | 159 | 68.5% | |
| src/routes/crawlers/shared.js | 6 | 0 | 6 | 24 | 100% | | 0 | 0 | | |
| src/routes/dataExport.js | 44 | 0 | 44 | 109 | 100% | | 27 | 28 | 96.4% | |
| src/routes/details.js | 4 | 0 | 4 | 25 | 100% | | 0 | 0 | | |
| src/routes/details/accessPackage.js | 75 | 1 | 76 | 222 | 98.6% | | 17 | 30 | 56.6% | |
| src/routes/details/accessPackageDetail.js | 57 | 0 | 57 | 188 | 100% | | 51 | 61 | 83.6% | |
| src/routes/details/group.js | 44 | 0 | 44 | 120 | 100% | | 12 | 18 | 66.6% | |
| src/routes/details/groupDetail.js | 21 | 0 | 21 | 67 | 100% | | 8 | 12 | 66.6% | |
| src/routes/details/shared.js | 15 | 0 | 15 | 61 | 100% | | 10 | 10 | 100% | |
| src/routes/details/user.js | 88 | 0 | 88 | 277 | 100% | | 31 | 44 | 70.4% | |
| src/routes/details/userActivity.js | 4 | 0 | 4 | 54 | 100% | | 2 | 2 | 100% | |
| src/routes/details/userDetail.js | 54 | 0 | 54 | 182 | 100% | | 20 | 32 | 62.5% | |
| src/routes/effectiveAccess.js | 25 | 4 | 29 | 71 | 86.2% | | 31 | 35 | 88.5% | |
| src/routes/governance.js | 34 | 14 | 48 | 192 | 70.8% | | 20 | 30 | 66.6% | |
| src/routes/identities.js | 4 | 0 | 4 | 24 | 100% | | 0 | 0 | | |
| src/routes/identities/detail.js | 70 | 2 | 72 | 244 | 97.2% | | 23 | 28 | 82.1% | |
| src/routes/identities/detailData.js | 24 | 0 | 24 | 115 | 100% | | 9 | 14 | 64.2% | |
| src/routes/identities/list.js | 47 | 3 | 50 | 168 | 94% | | 16 | 20 | 80% | |
| src/routes/identities/listQuery.js | 55 | 2 | 57 | 153 | 96.4% | | 35 | 40 | 87.5% | |
| src/routes/identities/overrides.js | 23 | 4 | 27 | 67 | 85.1% | | 16 | 18 | 88.8% | |
| src/routes/identities/shared.js | 18 | 0 | 18 | 43 | 100% | | 8 | 8 | 100% | |
| src/routes/ingest.js | 5 | 0 | 5 | 29 | 100% | | 0 | 0 | | |
| src/routes/ingest/contextLinks.js | 56 | 0 | 56 | 155 | 100% | | 39 | 40 | 97.5% | |
| src/routes/ingest/dataPlane.js | 30 | 0 | 30 | 82 | 100% | | 53 | 53 | 100% | |
| src/routes/ingest/handlers.js | 148 | 4 | 152 | 421 | 97.3% | | 84 | 96 | 87.5% | |
| src/routes/ingest/helpers.js | 90 | 4 | 94 | 284 | 95.7% | | 118 | 122 | 96.7% | |
| src/routes/ingest/matrixViews.js | 106 | 10 | 116 | 422 | 91.3% | | 67 | 75 | 89.3% | |
| src/routes/ingest/stages.js | 77 | 2 | 79 | 181 | 97.4% | | 46 | 57 | 80.7% | |
| src/routes/jobs.js | 3 | 0 | 3 | 21 | 100% | | 0 | 0 | | |
| src/routes/jobs/configs.js | 83 | 14 | 97 | 204 | 85.5% | | 44 | 61 | 72.1% | |
| src/routes/jobs/helpers.js | 88 | 0 | 88 | 249 | 100% | | 95 | 98 | 96.9% | |
| src/routes/jobs/runs.js | 111 | 20 | 131 | 317 | 84.7% | | 57 | 75 | 76% | |
| src/routes/jobs/urlPolicy.js | 14 | 0 | 14 | 60 | 100% | | 10 | 10 | 100% | |
| src/routes/llm.js | 30 | 32 | 62 | 142 | 48.3% | | 16 | 38 | 42.1% | |
| src/routes/lookups.js | 31 | 0 | 31 | 90 | 100% | | 22 | 26 | 84.6% | |
| src/routes/matrix.js | 86 | 13 | 99 | 284 | 86.8% | | 44 | 68 | 64.7% | |
| src/routes/matrix/data.js | 302 | 7 | 309 | 877 | 97.7% | | 164 | 197 | 83.2% | |
| src/routes/matrix/savedFilterHistory.js | 44 | 0 | 44 | 143 | 100% | | 53 | 59 | 89.8% | |
| src/routes/matrix/savedFilters.js | 69 | 12 | 81 | 196 | 85.1% | | 48 | 65 | 73.8% | |
| src/routes/matrix/scope.js | 59 | 33 | 92 | 263 | 64.1% | | 23 | 62 | 37% | |
| src/routes/matrix/shared.js | 83 | 3 | 86 | 366 | 96.5% | | 91 | 98 | 92.8% | |
| src/routes/matrix/shareLinking.js | 7 | 0 | 7 | 46 | 100% | | 2 | 2 | 100% | |
| src/routes/matrix/shareRecipients.js | 22 | 0 | 22 | 86 | 100% | | 25 | 26 | 96.1% | |
| src/routes/matrix/shares.js | 107 | 0 | 107 | 383 | 100% | | 85 | 90 | 94.4% | |
| src/routes/nlReports.js | 134 | 18 | 152 | 427 | 88.1% | | 125 | 148 | 84.4% | |
| src/routes/orgChart.js | 27 | 0 | 27 | 87 | 100% | | 14 | 16 | 87.5% | |
| src/routes/perf.js | 29 | 0 | 29 | 89 | 100% | | 15 | 18 | 83.3% | |
| src/routes/permissions.js | 5 | 0 | 5 | 26 | 100% | | 0 | 0 | | |
| src/routes/permissions/accessPackages.js | 19 | 2 | 21 | 127 | 90.4% | | 5 | 8 | 62.5% | |
| src/routes/permissions/grid.js | 29 | 0 | 29 | 93 | 100% | | 10 | 10 | 100% | |
| src/routes/permissions/gridQuery.js | 129 | 8 | 137 | 472 | 94.1% | | 63 | 85 | 74.1% | |
| src/routes/permissions/nestedGroups.js | 33 | 0 | 33 | 161 | 100% | | 18 | 20 | 90% | |
| src/routes/permissions/shared.js | 4 | 0 | 4 | 15 | 100% | | 2 | 2 | 100% | |
| src/routes/permissions/syncLog.js | 29 | 0 | 29 | 92 | 100% | | 14 | 14 | 100% | |
| src/routes/permissions/userColumns.js | 24 | 1 | 25 | 76 | 96% | | 16 | 19 | 84.2% | |
| src/routes/preferences.js | 8 | 23 | 31 | 80 | 25.8% | | 1 | 18 | 5.5% | |
| src/routes/recentChanges.js | 4 | 0 | 4 | 26 | 100% | | 0 | 0 | | |
| src/routes/recentChanges/changes.js | 50 | 0 | 50 | 145 | 100% | | 12 | 16 | 75% | |
| src/routes/recentChanges/classify.js | 84 | 0 | 84 | 175 | 100% | | 114 | 130 | 87.6% | |
| src/routes/recentChanges/diff.js | 60 | 0 | 60 | 167 | 100% | | 30 | 32 | 93.7% | |
| src/routes/recentChanges/shared.js | 31 | 5 | 36 | 109 | 86.1% | | 41 | 52 | 78.8% | |
| src/routes/recentChanges/snapshot.js | 78 | 2 | 80 | 254 | 97.5% | | 72 | 79 | 91.1% | |
| src/routes/recentChanges/timeline.js | 172 | 4 | 176 | 432 | 97.7% | | 171 | 199 | 85.9% | |
| src/routes/reports.js | 35 | 2 | 37 | 114 | 94.5% | | 11 | 13 | 84.6% | |
| src/routes/reportViews.js | 38 | 0 | 38 | 89 | 100% | | 24 | 30 | 80% | |
| src/routes/resources.js | 116 | 10 | 126 | 345 | 92% | | 42 | 52 | 80.7% | |
| src/routes/resources/detail.js | 42 | 2 | 44 | 147 | 95.4% | | 16 | 28 | 57.1% | |
| src/routes/resources/list.js | 35 | 0 | 35 | 91 | 100% | | 26 | 26 | 100% | |
| src/routes/riskProfiles.js | 217 | 0 | 217 | 456 | 100% | | 127 | 155 | 81.9% | |
| src/routes/riskProfiles/helpers.js | 34 | 0 | 34 | 103 | 100% | | 47 | 53 | 88.6% | |
| src/routes/riskScores.js | 3 | 0 | 3 | 20 | 100% | | 0 | 0 | | |
| src/routes/riskScores/entity.js | 87 | 9 | 96 | 228 | 90.6% | | 59 | 70 | 84.2% | |
| src/routes/riskScores/list.js | 41 | 2 | 43 | 133 | 95.3% | | 26 | 30 | 86.6% | |
| src/routes/riskScores/shared.js | 28 | 3 | 31 | 74 | 90.3% | | 23 | 26 | 88.4% | |
| src/routes/riskScores/summary.js | 23 | 0 | 23 | 100 | 100% | | 20 | 20 | 100% | |
| src/routes/riskScoringRuns.js | 37 | 1 | 38 | 83 | 97.3% | | 21 | 23 | 91.3% | |
| src/routes/systems.js | 84 | 0 | 84 | 227 | 100% | | 40 | 46 | 86.9% | |
| src/routes/tags.js | 3 | 0 | 3 | 22 | 100% | | 0 | 0 | | |
| src/routes/tags/crud.js | 147 | 0 | 147 | 340 | 100% | | 107 | 118 | 90.6% | |
| src/routes/tags/entities.js | 148 | 6 | 154 | 392 | 96.1% | | 56 | 64 | 87.5% | |
| src/routes/tags/shared.js | 20 | 0 | 20 | 63 | 100% | | 14 | 14 | 100% | |
| src/routes/updates.js | 56 | 12 | 68 | 213 | 82.3% | | 51 | 53 | 96.2% | |
| src/scheduler.js | 79 | 24 | 103 | 378 | 76.6% | | 74 | 80 | 92.5% | |
| src/secrets/crawlerSecrets.js | 52 | 0 | 52 | 136 | 100% | | 27 | 28 | 96.4% | |
| src/secrets/masterKeyStore.js | 83 | 0 | 83 | 200 | 100% | | 47 | 48 | 97.9% | |
| src/secrets/migrateCrawlerSecrets.js | 29 | 1 | 30 | 75 | 96.6% | | 11 | 11 | 100% | |
| src/secrets/vault.js | 83 | 3 | 86 | 257 | 96.5% | | 28 | 30 | 93.3% | |
| src/startupState.js | 18 | 0 | 18 | 61 | 100% | | 4 | 4 | 100% | |
| src/updates/channel.js | 12 | 0 | 12 | 35 | 100% | | 20 | 20 | 100% | |
| src/updates/checkForUpdates.js | 26 | 0 | 26 | 96 | 100% | | 25 | 26 | 96.1% | |
| src/updates/componentVersions.js | 19 | 0 | 19 | 93 | 100% | | 36 | 36 | 100% | |
| src/updates/detect.js | 36 | 0 | 36 | 79 | 100% | | 24 | 31 | 77.4% | |
| src/updates/job.js | 7 | 0 | 7 | 19 | 100% | | 0 | 0 | | |
| src/updates/versionCompare.js | 34 | 0 | 34 | 67 | 100% | | 53 | 54 | 98.1% | |
| src/version.js | 9 | 0 | 9 | 31 | 100% | | 6 | 6 | 100% | |