Files
LambdaMail/.wolf/anatomy-index.json
T

19694 lines
579 KiB
JSON

{
"version": 1,
"meta": {
"lastScanned": "2026-10-22T19:44:13.602Z",
"fileCount": 440,
"hits": 0,
"misses": 0,
"renderedHash": "4c74546f856ca02c0dd5eeb8a90c610c161275126dc91d9fc7f169a6424d61d6",
"storeUpdatedAt": "2026-10-22T19:44:13.627Z",
"rootHash": "d8862ac30fea5b61"
},
"files": {
".github/workflows/ci.yml": {
"description": "CI: CI",
"tokens": 2438,
"hash": "6c726813e25592ee",
"size": 8535,
"mtimeMs": 1787397529469.2144,
"updatedAt": "2026-10-06T11:06:20.841Z",
"source": "scan",
"importance": 0.0144
},
".github/workflows/release.yml": {
"description": "CI: Release",
"tokens": 1863,
"hash": "2807c0a181b06985",
"size": 6519,
"mtimeMs": 1785692139305.374,
"updatedAt": "2026-10-06T11:06:20.842Z",
"source": "scan",
"importance": 0.0144
},
".gitignore": {
"description": "Git ignore rules",
"tokens": 277,
"hash": "3301027e4578d04e",
"size": 1037,
"mtimeMs": 1788778069441.6716,
"updatedAt": "2026-10-06T11:06:20.842Z",
"source": "scan",
"importance": 0.0144
},
".trivyignore": {
"description": "Findings that have been assessed and deliberately accepted.",
"tokens": 211,
"hash": "086e96cfd209780d",
"size": 790,
"mtimeMs": 1787397483064.9219,
"updatedAt": "2026-10-06T11:06:20.842Z",
"source": "scan",
"importance": 0.0144
},
"CLAUDE.md": {
"description": "OpenWolf",
"tokens": 99,
"hash": "074d6b42b583729a",
"size": 395,
"mtimeMs": 1791284775282.7249,
"updatedAt": "2026-10-06T11:06:20.842Z",
"source": "scan",
"importance": 0.0144
},
"config/rspamd/actions.conf": {
"description": "Score thresholds from PLAN.md section 10.1. The principle behind them is",
"tokens": 108,
"hash": "997da1d5eb2d54f9",
"size": 405,
"mtimeMs": 1785635482520.1724,
"updatedAt": "2026-10-06T11:06:20.843Z",
"source": "scan",
"importance": 0.0181
},
"config/rspamd/logging.inc": {
"description": "",
"tokens": 10,
"hash": "5e34af32b6cbb124",
"size": 34,
"mtimeMs": 1785635482520.2253,
"updatedAt": "2026-10-06T11:06:20.844Z",
"source": "scan",
"importance": 0.0144
},
"config/rspamd/options.inc": {
"description": "DNS resolution is needed for RBL, SPF and DKIM lookups.",
"tokens": 33,
"hash": "280d53ae02c1e9d1",
"size": 121,
"mtimeMs": 1785635482520.2253,
"updatedAt": "2026-10-06T11:06:20.844Z",
"source": "scan",
"importance": 0.0144
},
"config/rspamd/ratelimit.conf": {
"description": "Rate limiting of PLAN.md section 5.2.",
"tokens": 408,
"hash": "c37c19abd0aa6b90",
"size": 1530,
"mtimeMs": 1785668486700.7197,
"updatedAt": "2026-10-06T11:06:20.844Z",
"source": "scan",
"importance": 0.0144
},
"config/rspamd/worker-normal.inc": {
"description": "The protocols service reaches Rspamd over the internal network only; the",
"tokens": 40,
"hash": "abfc9851ef69b44d",
"size": 148,
"mtimeMs": 1785635482520.2253,
"updatedAt": "2026-10-06T11:06:20.844Z",
"source": "scan",
"importance": 0.0144
},
"docker-compose.build.yaml": {
"description": "Development overlay: builds the images from source instead of pulling them.",
"tokens": 260,
"hash": "e862c03c258b9a59",
"size": 908,
"mtimeMs": 1785692122263.221,
"updatedAt": "2026-10-06T11:06:20.844Z",
"source": "scan",
"importance": 0.0144
},
"docker-compose.yaml": {
"description": "Docker Compose services",
"tokens": 5222,
"hash": "d6d3729e516bd862",
"size": 18275,
"mtimeMs": 1788807731559.9775,
"updatedAt": "2026-10-06T11:06:20.844Z",
"source": "scan",
"importance": 0.0144
},
"docs/DEPLOYMENT.md": {
"description": "Deploying LambdaMail on Coolify",
"tokens": 2605,
"hash": "23b07b4d184e1730",
"size": 10464,
"mtimeMs": 1785711428683.7927,
"updatedAt": "2026-10-06T11:06:20.845Z",
"source": "scan",
"importance": 0.0144
},
"docs/OPERATIONS.md": {
"description": "Operating LambdaMail",
"tokens": 2229,
"hash": "617a161087828ea6",
"size": 8944,
"mtimeMs": 1785778509187.322,
"updatedAt": "2026-10-06T11:06:20.845Z",
"source": "scan",
"importance": 0.0144
},
"LICENSE": {
"description": "Project license",
"tokens": 287,
"hash": "e780f4e3f551768e",
"size": 1075,
"mtimeMs": 1785635482520.0276,
"updatedAt": "2026-10-06T11:06:20.845Z",
"source": "scan",
"importance": 0.0144
},
"Makefile": {
"description": "Make build targets",
"tokens": 1327,
"hash": "7506c906b1ffbc30",
"size": 4973,
"mtimeMs": 1787399200409.531,
"updatedAt": "2026-10-06T11:06:20.845Z",
"source": "scan",
"importance": 0.0144
},
"migrations/0001_init_schema.down.sql": {
"description": "0001_init_schema.down.sql",
"tokens": 225,
"hash": "6bfb7c7ab5b65af0",
"size": 787,
"mtimeMs": 1785635482520.2253,
"updatedAt": "2026-10-06T11:06:20.845Z",
"source": "scan",
"importance": 0.0144
},
"migrations/0001_init_schema.up.sql": {
"description": "0001_init_schema.up.sql",
"tokens": 5730,
"hash": "b8bcc5da5448ba80",
"size": 20052,
"mtimeMs": 1785635482520.4055,
"updatedAt": "2026-10-06T11:06:20.845Z",
"source": "scan",
"importance": 0.0144
},
"migrations/0002_add_is_system_to_aliases.down.sql": {
"description": "Revert is_system column from aliases table",
"tokens": 29,
"hash": "ed0d47f60dcb0456",
"size": 99,
"mtimeMs": 1785635482520.4055,
"updatedAt": "2026-10-06T11:06:20.845Z",
"source": "scan",
"importance": 0.0144
},
"migrations/0002_add_is_system_to_aliases.up.sql": {
"description": "Add is_system column to aliases table to track mandatory system security aliases",
"tokens": 45,
"hash": "b6258683379a5fdc",
"size": 157,
"mtimeMs": 1785635482520.4055,
"updatedAt": "2026-10-06T11:06:20.845Z",
"source": "scan",
"importance": 0.0144
},
"migrations/0003_create_report_tables.down.sql": {
"description": "",
"tokens": 47,
"hash": "80de1e969b66afb7",
"size": 163,
"mtimeMs": 1785635482520.4055,
"updatedAt": "2026-10-06T11:06:20.846Z",
"source": "scan",
"importance": 0.0144
},
"migrations/0003_create_report_tables.up.sql": {
"description": "0003_create_report_tables.up.sql",
"tokens": 575,
"hash": "549fda0d4b844504",
"size": 2011,
"mtimeMs": 1785635482520.4055,
"updatedAt": "2026-10-06T11:06:20.846Z",
"source": "scan",
"importance": 0.0144
},
"migrations/0004_index_outbound_stale_locks.down.sql": {
"description": "",
"tokens": 14,
"hash": "43223c9fbdf02741",
"size": 47,
"mtimeMs": 1785635482520.4055,
"updatedAt": "2026-10-06T11:06:20.846Z",
"source": "scan",
"importance": 0.0144
},
"migrations/0004_index_outbound_stale_locks.up.sql": {
"description": "Delivery workers claim a job by moving it to SENDING with a lock deadline.",
"tokens": 105,
"hash": "baa10f42842f0201",
"size": 367,
"mtimeMs": 1785635482520.4055,
"updatedAt": "2026-10-06T11:06:20.847Z",
"source": "scan",
"importance": 0.0144
},
"migrations/0005_create_acme_tables.down.sql": {
"description": "",
"tokens": 34,
"hash": "6151953d87fde01a",
"size": 116,
"mtimeMs": 1785635482520.4055,
"updatedAt": "2026-10-06T11:06:20.847Z",
"source": "scan",
"importance": 0.0144
},
"migrations/0005_create_acme_tables.up.sql": {
"description": "Self-managed ACME state (PLAN.md section 8.3, mode B).",
"tokens": 752,
"hash": "0aa695b02e33aa1a",
"size": 2630,
"mtimeMs": 1785635482520.4055,
"updatedAt": "2026-10-06T11:06:20.847Z",
"source": "scan",
"importance": 0.0144
},
"migrations/0006_add_user_settings_and_system_config.down.sql": {
"description": "SQL: 2 alter(s)",
"tokens": 44,
"hash": "103c3bf8fea142c6",
"size": 153,
"mtimeMs": 1785689161515.933,
"updatedAt": "2026-10-06T11:06:20.847Z",
"source": "scan",
"importance": 0.0144
},
"migrations/0006_add_user_settings_and_system_config.up.sql": {
"description": "SQL: tables: system_config, 2 alter(s)",
"tokens": 135,
"hash": "8395986d4cdf6857",
"size": 471,
"mtimeMs": 1785689161515.983,
"updatedAt": "2026-10-06T11:06:20.847Z",
"source": "scan",
"importance": 0.0144
},
"migrations/0007_reconcile_folder_counters.down.sql": {
"description": "Irreversible by nature: this migration replaced incorrect counter values and",
"tokens": 90,
"hash": "2332763d0547e4a2",
"size": 315,
"mtimeMs": 1787249604286.1067,
"updatedAt": "2026-10-06T11:06:20.847Z",
"source": "scan",
"importance": 0.0144
},
"migrations/0007_reconcile_folder_counters.up.sql": {
"description": "Reconcile folders.unread_count and folders.total_count with the messages",
"tokens": 819,
"hash": "da54d4d9ddb6784a",
"size": 2864,
"mtimeMs": 1787249604285.1064,
"updatedAt": "2026-10-06T11:06:20.847Z",
"source": "scan",
"importance": 0.0144
},
"migrations/0008_add_reports_folder.down.sql": {
"description": "Only removes the folder where it is still empty. A Reports folder holding",
"tokens": 94,
"hash": "a23977c7b38c02f7",
"size": 329,
"mtimeMs": 1787315228591.184,
"updatedAt": "2026-10-06T11:06:20.848Z",
"source": "scan",
"importance": 0.0144
},
"migrations/0008_add_reports_folder.up.sql": {
"description": "Give every existing mailbox a Reports folder.",
"tokens": 185,
"hash": "c01f6a6618bcc58f",
"size": 646,
"mtimeMs": 1787315228588.1838,
"updatedAt": "2026-10-06T11:06:20.848Z",
"source": "scan",
"importance": 0.0144
},
"migrations/0009_report_ingestion_idempotency.down.sql": {
"description": "",
"tokens": 30,
"hash": "621d79fa620b8da9",
"size": 102,
"mtimeMs": 1787315393216.618,
"updatedAt": "2026-10-06T11:06:20.848Z",
"source": "scan",
"importance": 0.0144
},
"migrations/0009_report_ingestion_idempotency.up.sql": {
"description": "Make storing a report idempotent, keyed on the reporter and their own id",
"tokens": 425,
"hash": "320ac4e78f25edf2",
"size": 1487,
"mtimeMs": 1787315417511.682,
"updatedAt": "2026-10-06T11:06:20.848Z",
"source": "scan",
"importance": 0.0144
},
"migrations/0010_vacation_reply_log.down.sql": {
"description": "",
"tokens": 12,
"hash": "81ffcfe2d090d24a",
"size": 39,
"mtimeMs": 1787422419521.8015,
"updatedAt": "2026-10-06T11:06:20.848Z",
"source": "scan",
"importance": 0.0144
},
"migrations/0010_vacation_reply_log.up.sql": {
"description": "Who has already been told the mailbox is unattended.",
"tokens": 257,
"hash": "8954550462b77a7e",
"size": 899,
"mtimeMs": 1787422419519.8015,
"updatedAt": "2026-10-06T11:06:20.848Z",
"source": "scan",
"importance": 0.0144
},
"migrations/0011_backfill_markers.down.sql": {
"description": "",
"tokens": 10,
"hash": "fc074b30dfa9a39b",
"size": 32,
"mtimeMs": 1787585011256.0364,
"updatedAt": "2026-10-06T11:06:20.848Z",
"source": "scan",
"importance": 0.0144
},
"migrations/0011_backfill_markers.up.sql": {
"description": "Records one-shot data repairs so they run once rather than on every start.",
"tokens": 176,
"hash": "a0ab5c231b2122e6",
"size": 615,
"mtimeMs": 1787585011255.0364,
"updatedAt": "2026-10-06T11:06:20.848Z",
"source": "scan",
"importance": 0.0144
},
"migrations/0012_mailbox_avatars.down.sql": {
"description": "",
"tokens": 11,
"hash": "64aa33bf273d00dc",
"size": 38,
"mtimeMs": 1788781505182.072,
"updatedAt": "2026-10-06T11:06:20.848Z",
"source": "scan",
"importance": 0.0144
},
"migrations/0012_mailbox_avatars.up.sql": {
"description": "The profile photo a mailbox shows inside LambdaMail.",
"tokens": 256,
"hash": "0460bbe887839880",
"size": 893,
"mtimeMs": 1788781505182.5593,
"updatedAt": "2026-10-06T11:06:20.848Z",
"source": "scan",
"importance": 0.0144
},
"migrations/0013_domain_bimi.down.sql": {
"description": "",
"tokens": 10,
"hash": "1e8f64ffca56231e",
"size": 34,
"mtimeMs": 1788781505182.647,
"updatedAt": "2026-10-06T11:06:20.848Z",
"source": "scan",
"importance": 0.0144
},
"migrations/0013_domain_bimi.up.sql": {
"description": "The BIMI logo a domain publishes, and the certificate that vouches for it.",
"tokens": 188,
"hash": "93f8969e37f23682",
"size": 655,
"mtimeMs": 1788781505182.7427,
"updatedAt": "2026-10-06T11:06:20.848Z",
"source": "scan",
"importance": 0.0144
},
"README.md": {
"description": "Project documentation",
"tokens": 3456,
"hash": "c6fefaffc5dd6cae",
"size": 14009,
"mtimeMs": 1788830725023.0046,
"updatedAt": "2026-10-06T11:06:20.848Z",
"source": "scan",
"importance": 0.0144
},
"scripts/dev-seed.sql": {
"description": "Dev-only fixture data for local SMTP testing. Not a schema migration -",
"tokens": 533,
"hash": "828b747673281f01",
"size": 1863,
"mtimeMs": 1785689161516.0613,
"updatedAt": "2026-10-06T11:06:20.848Z",
"source": "scan",
"importance": 0.0144
},
"scripts/lang-lint.mjs": {
"description": "Fails the build if tracked source contains non-ASCII characters or common",
"tokens": 483,
"hash": "175b90835152afa1",
"size": 1811,
"mtimeMs": 1785635482520.7053,
"updatedAt": "2026-10-06T11:06:20.848Z",
"source": "scan",
"importance": 0.0144
},
"services/auth/Dockerfile": {
"description": "Docker container definition",
"tokens": 408,
"hash": "23ae46fa25d62dae",
"size": 1528,
"mtimeMs": 1785690291764.2104,
"updatedAt": "2026-10-06T11:06:20.849Z",
"source": "scan",
"importance": 0.0144
},
"services/auth/package.json": {
"description": "Node.js package manifest",
"tokens": 138,
"hash": "b0f8b2bbfe6d650f",
"size": 482,
"mtimeMs": 1785689161516.3496,
"updatedAt": "2026-10-06T11:06:20.849Z",
"source": "scan",
"importance": 0.0144
},
"services/auth/src/auth.test.ts": {
"description": "Declares password",
"tokens": 3292,
"hash": "ea5e64b5eee24c1f",
"size": 11522,
"mtimeMs": 1787075233035.2646,
"updatedAt": "2026-10-06T11:06:20.850Z",
"source": "scan",
"imports": [
"services/auth/src/crypto.ts",
"services/auth/src/totp.ts",
"services/auth/src/mfaHelpers.ts",
"services/auth/src/session.ts"
],
"importance": 0.0144
},
"services/auth/src/cli.ts": {
"description": "Operator commands for a fresh deployment.",
"tokens": 2135,
"hash": "ed7ae6509490d1f4",
"size": 7472,
"mtimeMs": 1785763147980.08,
"updatedAt": "2026-10-06T11:06:20.850Z",
"source": "scan",
"symbols": [
{
"name": "fail",
"kind": "fn",
"startLine": 29,
"endLine": 32,
"tokens": 28
},
{
"name": "parseAddress",
"kind": "fn",
"startLine": 34,
"endLine": 38,
"tokens": 87
},
{
"name": "createAdmin",
"kind": "fn",
"startLine": 40,
"endLine": 95,
"tokens": 715
},
{
"name": "resetPassword",
"kind": "fn",
"startLine": 97,
"endLine": 112,
"tokens": 236
},
{
"name": "resetMfa",
"kind": "fn",
"startLine": 128,
"endLine": 148,
"tokens": 266
},
{
"name": "main",
"kind": "fn",
"startLine": 150,
"endLine": 175,
"tokens": 287
}
],
"symbolSource": "ts",
"skeleton": "function fail(message: string): never {\nfunction parseAddress(email: string): { localPart: string; domain: string } {\nasync function createAdmin(email: string, password: string, force: boolean): Promise<void> {\nasync function resetPassword(email: string, password: string): Promise<void> {\nasync function resetMfa(email: string): Promise<void> {\nasync function main(): Promise<void> {",
"imports": [
"services/auth/src/db.ts",
"services/auth/src/crypto.ts"
],
"importance": 0.0144
},
"services/auth/src/crypto.ts": {
"description": "Derives the key-encryption key. Unlike the previous implementation there is",
"tokens": 1465,
"hash": "d889db98e91aeefb",
"size": 5125,
"mtimeMs": 1785777410816.2126,
"updatedAt": "2026-10-06T11:06:20.850Z",
"source": "scan",
"symbols": [
{
"name": "getMasterKey",
"kind": "fn",
"startLine": 21,
"endLine": 29,
"tokens": 94
},
{
"name": "waiting",
"kind": "fn",
"startLine": 47,
"endLine": 47,
"tokens": 11
},
{
"name": "withHashSlot",
"kind": "fn",
"startLine": 49,
"endLine": 62,
"tokens": 124
},
{
"name": "hashPassword",
"kind": "fn",
"startLine": 65,
"endLine": 75,
"tokens": 101
},
{
"name": "verifyPassword",
"kind": "fn",
"startLine": 86,
"endLine": 100,
"tokens": 183
},
{
"name": "encryptSecret",
"kind": "fn",
"startLine": 102,
"endLine": 108,
"tokens": 115
},
{
"name": "decryptSecret",
"kind": "fn",
"startLine": 110,
"endLine": 119,
"tokens": 170
},
{
"name": "safeEqual",
"kind": "fn",
"startLine": 122,
"endLine": 127,
"tokens": 62
}
],
"symbolSource": "ts",
"importance": 0.0488
},
"services/auth/src/db.ts": {
"description": "Lazily opens the shared connection pool. It is lazy so that unit tests which",
"tokens": 266,
"hash": "386c4c9804e452c6",
"size": 929,
"mtimeMs": 1785689161516.6565,
"updatedAt": "2026-10-06T11:06:20.850Z",
"source": "scan",
"importance": 0.0285
},
"services/auth/src/diagnostics.test.ts": {
"description": "Declares UserFacts",
"tokens": 1317,
"hash": "0d090657b251613b",
"size": 4607,
"mtimeMs": 1787574283038.489,
"updatedAt": "2026-10-06T11:06:20.850Z",
"source": "scan",
"symbols": [
{
"name": "user",
"kind": "fn",
"startLine": 6,
"endLine": 20,
"tokens": 99
},
{
"name": "keys",
"kind": "fn",
"startLine": 22,
"endLine": 22,
"tokens": 20
},
{
"name": "statusOf",
"kind": "fn",
"startLine": 23,
"endLine": 24,
"tokens": 35
},
{
"name": "server",
"kind": "fn",
"startLine": 74,
"endLine": 81,
"tokens": 72
}
],
"symbolSource": "ts",
"imports": [
"services/auth/src/diagnostics.ts"
],
"importance": 0.0144
},
"services/auth/src/diagnostics.ts": {
"description": "Checks an operator can run by hand, against the whole server or one user.",
"tokens": 1557,
"hash": "bfbe0920c9ff7428",
"size": 5449,
"mtimeMs": 1787574257845.43,
"updatedAt": "2026-10-06T11:06:20.851Z",
"source": "scan",
"symbols": [
{
"name": "CheckStatus",
"kind": "section",
"startLine": 9,
"endLine": 9,
"tokens": 18
},
{
"name": "Check",
"kind": "section",
"startLine": 11,
"endLine": 18,
"tokens": 71
},
{
"name": "UserFacts",
"kind": "section",
"startLine": 20,
"endLine": 33,
"tokens": 99
},
{
"name": "checkUser",
"kind": "fn",
"startLine": 38,
"endLine": 104,
"tokens": 638
},
{
"name": "ServerFacts",
"kind": "section",
"startLine": 106,
"endLine": 112,
"tokens": 65
},
{
"name": "checkServer",
"kind": "fn",
"startLine": 114,
"endLine": 160,
"tokens": 447
},
{
"name": "overallStatus",
"kind": "fn",
"startLine": 163,
"endLine": 168,
"tokens": 76
}
],
"symbolSource": "ts",
"importance": 0.0295
},
"services/auth/src/health.test.ts": {
"description": "Declares withServer",
"tokens": 470,
"hash": "02929edf5bd0abf7",
"size": 1645,
"mtimeMs": 1785635482520.933,
"updatedAt": "2026-10-06T11:06:20.851Z",
"source": "scan",
"imports": [
"services/auth/src/health.ts"
],
"importance": 0.0144
},
"services/auth/src/health.ts": {
"description": "Builds the /health/live and /health/ready handler shared by the auth and",
"tokens": 215,
"hash": "4e0751ac405a206c",
"size": 751,
"mtimeMs": 1785635482521.343,
"updatedAt": "2026-10-06T11:06:20.851Z",
"source": "scan",
"importance": 0.0328
},
"services/auth/src/imageValidation.test.ts": {
"description": "Declares png",
"tokens": 741,
"hash": "5fd87ad138545c03",
"size": 2593,
"mtimeMs": 1788830725023.8179,
"updatedAt": "2026-10-06T11:06:20.852Z",
"source": "scan",
"symbols": [
{
"name": "png",
"kind": "fn",
"startLine": 4,
"endLine": 4,
"tokens": 27
},
{
"name": "jpeg",
"kind": "fn",
"startLine": 5,
"endLine": 5,
"tokens": 18
},
{
"name": "webp",
"kind": "fn",
"startLine": 6,
"endLine": 6,
"tokens": 31
}
],
"symbolSource": "ts",
"imports": [
"services/auth/src/imageValidation.ts"
],
"importance": 0.0144
},
"services/auth/src/imageValidation.ts": {
"description": "What an uploaded avatar is allowed to be.",
"tokens": 598,
"hash": "c8d2c6aa16a00d0e",
"size": 2091,
"mtimeMs": 1788830725024.844,
"updatedAt": "2026-10-06T11:06:20.852Z",
"source": "scan",
"symbols": [
{
"name": "AvatarType",
"kind": "section",
"startLine": 11,
"endLine": 11,
"tokens": 20
},
{
"name": "Sniffed",
"kind": "section",
"startLine": 13,
"endLine": 15,
"tokens": 16
},
{
"name": "startsWith",
"kind": "fn",
"startLine": 17,
"endLine": 18,
"tokens": 44
},
{
"name": "sniffImage",
"kind": "fn",
"startLine": 27,
"endLine": 41,
"tokens": 141
},
{
"name": "AvatarRejection",
"kind": "section",
"startLine": 43,
"endLine": 43,
"tokens": 21
},
{
"name": "AvatarCheck",
"kind": "section",
"startLine": 45,
"endLine": 49,
"tokens": 30
},
{
"name": "checkAvatar",
"kind": "fn",
"startLine": 52,
"endLine": 62,
"tokens": 134
}
],
"symbolSource": "ts",
"importance": 0.0295
},
"services/auth/src/mfaHelpers.ts": {
"description": "Generates single-use recovery codes. Only the hashes are ever stored, so a",
"tokens": 494,
"hash": "4845667e8009ac10",
"size": 1727,
"mtimeMs": 1785768397826.4392,
"updatedAt": "2026-10-06T11:06:20.852Z",
"source": "scan",
"imports": [
"services/auth/src/crypto.ts"
],
"importance": 0.0203
},
"services/auth/src/pagination.test.ts": {
"description": "Declares at",
"tokens": 661,
"hash": "b78f86539fb17341",
"size": 2313,
"mtimeMs": 1787573680119.6714,
"updatedAt": "2026-10-06T11:06:20.852Z",
"source": "scan",
"symbols": [
{
"name": "at",
"kind": "fn",
"startLine": 4,
"endLine": 4,
"tokens": 16
}
],
"symbolSource": "ts",
"imports": [
"services/auth/src/pagination.ts"
],
"importance": 0.0144
},
"services/auth/src/pagination.ts": {
"description": "Page and filter parameters, read from a URL and made safe for SQL.",
"tokens": 510,
"hash": "d3ca3931bf3bf444",
"size": 1784,
"mtimeMs": 1787573560529.7898,
"updatedAt": "2026-10-06T11:06:20.852Z",
"source": "scan",
"symbols": [
{
"name": "PageRequest",
"kind": "section",
"startLine": 15,
"endLine": 20,
"tokens": 30
},
{
"name": "positiveInt",
"kind": "fn",
"startLine": 26,
"endLine": 33,
"tokens": 102
},
{
"name": "parsePageParams",
"kind": "fn",
"startLine": 35,
"endLine": 40,
"tokens": 109
},
{
"name": "paged",
"kind": "fn",
"startLine": 43,
"endLine": 51,
"tokens": 62
}
],
"symbolSource": "ts",
"importance": 0.0295
},
"services/auth/src/repository.ts": {
"description": "Decides whether this account must present a second factor now.",
"tokens": 14732,
"hash": "f28dc25af4a5e019",
"size": 51559,
"mtimeMs": 1788830725025.3042,
"updatedAt": "2026-10-06T11:06:20.853Z",
"source": "scan",
"symbols": [
{
"name": "MailboxRecord",
"kind": "section",
"startLine": 12,
"endLine": 23,
"tokens": 83
},
{
"name": "LoginOutcome",
"kind": "section",
"startLine": 25,
"endLine": 29,
"tokens": 57
},
{
"name": "findMailboxByEmail",
"kind": "fn",
"startLine": 31,
"endLine": 40,
"tokens": 116
},
{
"name": "hasConfirmedTotp",
"kind": "fn",
"startLine": 42,
"endLine": 48,
"tokens": 82
},
{
"name": "isMfaRequired",
"kind": "fn",
"startLine": 59,
"endLine": 61,
"tokens": 35
},
{
"name": "isMfaEnrollmentRequired",
"kind": "fn",
"startLine": 64,
"endLine": 68,
"tokens": 68
},
{
"name": "authenticate",
"kind": "fn",
"startLine": 77,
"endLine": 108,
"tokens": 323
},
{
"name": "registerFailedLogin",
"kind": "fn",
"startLine": 110,
"endLine": 121,
"tokens": 138
},
{
"name": "startTotpEnrollment",
"kind": "fn",
"startLine": 146,
"endLine": 174,
"tokens": 318
},
{
"name": "resetTotpEnrollment",
"kind": "fn",
"startLine": 183,
"endLine": 185,
"tokens": 51
},
{
"name": "TotpRow",
"kind": "section",
"startLine": 187,
"endLine": 193,
"tokens": 40
},
{
"name": "loadTotp",
"kind": "fn",
"startLine": 195,
"endLine": 202,
"tokens": 96
},
{
"name": "verifyPendingTotp",
"kind": "fn",
"startLine": 214,
"endLine": 225,
"tokens": 138
},
{
"name": "markTotpConfirmed",
"kind": "fn",
"startLine": 228,
"endLine": 233,
"tokens": 65
},
{
"name": "verifyTotpForLogin",
"kind": "fn",
"startLine": 240,
"endLine": 250,
"tokens": 148
},
{
"name": "storeRecoveryCodes",
"kind": "fn",
"startLine": 254,
"endLine": 259,
"tokens": 93
},
{
"name": "consumeRecoveryCode",
"kind": "fn",
"startLine": 266,
"endLine": 288,
"tokens": 289
},
{
"name": "countUnusedRecoveryCodes",
"kind": "fn",
"startLine": 290,
"endLine": 296,
"tokens": 85
},
{
"name": "listAppPasswords",
"kind": "fn",
"startLine": 300,
"endLine": 305,
"tokens": 88
},
{
"name": "createAppPassword",
"kind": "fn",
"startLine": 307,
"endLine": 314,
"tokens": 104
},
{
"name": "deleteAppPassword",
"kind": "fn",
"startLine": 316,
"endLine": 322,
"tokens": 78
},
{
"name": "recordSession",
"kind": "fn",
"startLine": 326,
"endLine": 339,
"tokens": 139
},
{
"name": "setLocale",
"kind": "fn",
"startLine": 341,
"endLine": 343,
"tokens": 55
},
{
"name": "dashboardStats",
"kind": "fn",
"startLine": 351,
"endLine": 379,
"tokens": 456
},
{
"name": "AdminScope",
"kind": "section",
"startLine": 381,
"endLine": 384,
"tokens": 20
},
{
"name": "scopeClause",
"kind": "fn",
"startLine": 389,
"endLine": 392,
"tokens": 66
},
{
"name": "listDomains",
"kind": "fn",
"startLine": 394,
"endLine": 403,
"tokens": 128
},
{
"name": "UserListFilter",
"kind": "section",
"startLine": 405,
"endLine": 411,
"tokens": 40
},
{
"name": "listMailboxes",
"kind": "fn",
"startLine": 420,
"endLine": 467,
"tokens": 495
},
{
"name": "dmarcSummary",
"kind": "fn",
"startLine": 469,
"endLine": 489,
"tokens": 294
}
],
"symbolSource": "ts",
"skeleton": "export interface MailboxRecord {\nexport type LoginOutcome =\nexport async function findMailboxByEmail(email: string): Promise<MailboxRecord | null> {\nexport async function hasConfirmedTotp(mailboxId: string): Promise<boolean> {\nexport async function isMfaRequired(mailbox: MailboxRecord): Promise<boolean> {\nexport function isMfaEnrollmentRequired(mailbox: MailboxRecord): boolean {\nexport async function authenticate(email: string, password: string): Promise<LoginOutcome> {\nasync function registerFailedLogin(mailboxId: string): Promise<void> {\nexport async function startTotpEnrollment(\nexport async function resetTotpEnrollment(mailboxId: string): Promise<void> {\ninterface TotpRow {\nasync function loadTotp(mailboxId: string, status: \"PENDING\" | \"CONFIRMED\"): Promise<TotpRow | null> {\nexport async function verifyPendingTotp(\nexport async function markTotpConfirmed(id: string, step: number): Promise<void> {\nexport async function verifyTotpForLogin(mailboxId: string, code: string): Promise<boolean> {\nexport async function storeRecoveryCodes(mailboxId: string, hashes: string[]): Promise<void> {\nexport async function consumeRecoveryCode(mailboxId: string, code: string, ip: string | null): Promise<boolean> {\nexport async function countUnusedRecoveryCodes(mailboxId: string): Promise<number> {",
"imports": [
"services/auth/src/db.ts",
"services/auth/src/crypto.ts",
"services/auth/src/totp.ts"
],
"importance": 0.0173
},
"services/auth/src/router.test.ts": {
"description": "Enrolls a real second factor and returns the shared secret.",
"tokens": 16096,
"hash": "d51286f73008c107",
"size": 56336,
"mtimeMs": 1788830725025.798,
"updatedAt": "2026-10-06T11:06:20.853Z",
"source": "scan",
"symbols": [
{
"name": "startServer",
"kind": "fn",
"startLine": 27,
"endLine": 40,
"tokens": 115
},
{
"name": "seed",
"kind": "fn",
"startLine": 42,
"endLine": 62,
"tokens": 256
},
{
"name": "userEmail",
"kind": "fn",
"startLine": 64,
"endLine": 64,
"tokens": 18
},
{
"name": "adminEmail",
"kind": "fn",
"startLine": 65,
"endLine": 65,
"tokens": 18
},
{
"name": "post",
"kind": "fn",
"startLine": 67,
"endLine": 77,
"tokens": 114
},
{
"name": "put",
"kind": "fn",
"startLine": 79,
"endLine": 89,
"tokens": 114
},
{
"name": "get",
"kind": "fn",
"startLine": 91,
"endLine": 96,
"tokens": 77
},
{
"name": "enrollTotp",
"kind": "fn",
"startLine": 99,
"endLine": 109,
"tokens": 183
},
{
"name": "adminSession",
"kind": "fn",
"startLine": 119,
"endLine": 131,
"tokens": 188
}
],
"symbolSource": "ts",
"skeleton": "function startServer(): Promise<void> {\nasync function seed(): Promise<void> {\nconst userEmail = () => `user@authtest-${DOMAIN_ID}.invalid`;\nconst adminEmail = () => `admin@authtest-${DOMAIN_ID}.invalid`;\nasync function post(path: string, body: unknown, token?: string) {\nasync function put(path: string, body: unknown, token?: string) {\nasync function get(path: string, token?: string) {\nasync function enrollTotp(mailboxId: string, token: string): Promise<string> {\nasync function adminSession(): Promise<string> {",
"imports": [
"services/auth/src/router.ts",
"services/auth/src/crypto.ts",
"services/auth/src/db.ts",
"services/auth/src/totp.ts"
],
"importance": 0.0144
},
"services/auth/src/router.ts": {
"description": "Cookie scoped to the whole origin: the API lives under /api, so a cookie",
"tokens": 15221,
"hash": "c081eb9e92416477",
"size": 53271,
"mtimeMs": 1788830725026.2295,
"updatedAt": "2026-10-06T11:06:20.854Z",
"source": "scan",
"symbols": [
{
"name": "sessionCookie",
"kind": "fn",
"startLine": 28,
"endLine": 32,
"tokens": 74
},
{
"name": "readBody",
"kind": "fn",
"startLine": 34,
"endLine": 52,
"tokens": 166
},
{
"name": "clientIp",
"kind": "fn",
"startLine": 54,
"endLine": 56,
"tokens": 29
},
{
"name": "isSecureRequest",
"kind": "fn",
"startLine": 60,
"endLine": 62,
"tokens": 37
},
{
"name": "handleApiRequest",
"kind": "fn",
"startLine": 64,
"endLine": 71,
"tokens": 68
},
{
"name": "sendJson",
"kind": "fn",
"startLine": 73,
"endLine": 77,
"tokens": 58
},
{
"name": "extractToken",
"kind": "fn",
"startLine": 79,
"endLine": 96,
"tokens": 187
},
{
"name": "route",
"kind": "fn",
"startLine": 98,
"endLine": 237,
"tokens": 2738
},
{
"name": "readBinaryBody",
"kind": "fn",
"startLine": 245,
"endLine": 261,
"tokens": 142
},
{
"name": "parseJsonBody",
"kind": "fn",
"startLine": 263,
"endLine": 270,
"tokens": 67
},
{
"name": "userSaveAvatar",
"kind": "fn",
"startLine": 281,
"endLine": 309,
"tokens": 270
},
{
"name": "getAvatar",
"kind": "fn",
"startLine": 319,
"endLine": 351,
"tokens": 398
},
{
"name": "userDeleteAvatar",
"kind": "fn",
"startLine": 353,
"endLine": 359,
"tokens": 89
},
{
"name": "login",
"kind": "fn",
"startLine": 363,
"endLine": 435,
"tokens": 960
},
{
"name": "adminStepUp",
"kind": "fn",
"startLine": 446,
"endLine": 487,
"tokens": 532
},
{
"name": "enrolmentGrant",
"kind": "fn",
"startLine": 490,
"endLine": 504,
"tokens": 104
},
{
"name": "issueSession",
"kind": "fn",
"startLine": 519,
"endLine": 571,
"tokens": 500
},
{
"name": "mfaVerify",
"kind": "fn",
"startLine": 573,
"endLine": 607,
"tokens": 466
},
{
"name": "logout",
"kind": "fn",
"startLine": 609,
"endLine": 615,
"tokens": 78
},
{
"name": "me",
"kind": "fn",
"startLine": 629,
"endLine": 640,
"tokens": 148
},
{
"name": "updateLocale",
"kind": "fn",
"startLine": 642,
"endLine": 650,
"tokens": 134
},
{
"name": "totpEnroll",
"kind": "fn",
"startLine": 652,
"endLine": 674,
"tokens": 280
},
{
"name": "totpConfirm",
"kind": "fn",
"startLine": 676,
"endLine": 693,
"tokens": 280
},
{
"name": "appPasswordsList",
"kind": "fn",
"startLine": 695,
"endLine": 697,
"tokens": 48
},
{
"name": "appPasswordCreate",
"kind": "fn",
"startLine": 699,
"endLine": 708,
"tokens": 171
},
{
"name": "appPasswordDelete",
"kind": "fn",
"startLine": 710,
"endLine": 715,
"tokens": 87
},
{
"name": "tokenHash",
"kind": "fn",
"startLine": 719,
"endLine": 721,
"tokens": 43
},
{
"name": "listSessions",
"kind": "fn",
"startLine": 723,
"endLine": 725,
"tokens": 61
},
{
"name": "revokeSession",
"kind": "fn",
"startLine": 727,
"endLine": 732,
"tokens": 83
},
{
"name": "revokeOthers",
"kind": "fn",
"startLine": 734,
"endLine": 737,
"tokens": 72
}
],
"symbolSource": "ts",
"skeleton": "function sessionCookie(name: string, value: string, maxAge: number, secure: boolean): string {\nfunction readBody(req: IncomingMessage): Promise<string> {\nfunction clientIp(req: IncomingMessage): string | null {\nfunction isSecureRequest(): boolean {\nexport function handleApiRequest(req: IncomingMessage, res: ServerResponse): boolean {\nfunction sendJson(res: ServerResponse, statusCode: number, data: unknown): void {\nfunction extractToken(req: IncomingMessage, url: string): string {\nasync function route(req: IncomingMessage, res: ServerResponse, url: string): Promise<void> {\nfunction readBinaryBody(req: IncomingMessage, maxBytes: number): Promise<Buffer> {\nasync function parseJsonBody(req: IncomingMessage): Promise<Record<string, unknown> | null> {\nasync function userSaveAvatar(\nasync function getAvatar(\nasync function userDeleteAvatar(\nasync function login(req: IncomingMessage, res: ServerResponse, surface: \"user\" | \"admin\"): Promise<void> {\nasync function adminStepUp(req: IncomingMessage, res: ServerResponse): Promise<void> {\nfunction enrolmentGrant(mailbox: repo.MailboxRecord): string {\nasync function issueSession(\nasync function mfaVerify(req: IncomingMessage, res: ServerResponse): Promise<void> {\nfunction logout(res: ServerResponse): void {\nasync function me(res: ServerResponse, session: SessionTokenPayload): Promise<void> {",
"imports": [
"services/auth/src/totp.ts",
"services/auth/src/mfaHelpers.ts",
"services/auth/src/session.ts",
"services/auth/src/repository.ts",
"services/auth/src/pagination.ts",
"services/auth/src/imageValidation.ts",
"services/auth/src/diagnostics.ts"
],
"importance": 0.0236
},
"services/auth/src/server.ts": {
"description": "Declares port",
"tokens": 236,
"hash": "1371507baa838191",
"size": 825,
"mtimeMs": 1785670743191.2344,
"updatedAt": "2026-10-06T11:06:20.854Z",
"source": "scan",
"imports": [
"services/auth/src/health.ts",
"services/auth/src/router.ts"
],
"importance": 0.0144
},
"services/auth/src/session.ts": {
"description": "The signing secret. There is deliberately no default.",
"tokens": 1406,
"hash": "1afdc1b5e6b134fb",
"size": 4921,
"mtimeMs": 1787075616724.9885,
"updatedAt": "2026-10-06T11:06:20.854Z",
"source": "scan",
"symbols": [
{
"name": "SessionTokenPayload",
"kind": "section",
"startLine": 3,
"endLine": 29,
"tokens": 365
},
{
"name": "JWT_SECRET",
"kind": "fn",
"startLine": 38,
"endLine": 46,
"tokens": 77
},
{
"name": "base64UrlEncode",
"kind": "fn",
"startLine": 48,
"endLine": 54,
"tokens": 50
},
{
"name": "base64UrlDecode",
"kind": "fn",
"startLine": 56,
"endLine": 60,
"tokens": 60
},
{
"name": "createJwt",
"kind": "fn",
"startLine": 62,
"endLine": 90,
"tokens": 266
},
{
"name": "verifyJwt",
"kind": "fn",
"startLine": 92,
"endLine": 119,
"tokens": 237
},
{
"name": "isSurfaceAuthorized",
"kind": "fn",
"startLine": 121,
"endLine": 137,
"tokens": 187
},
{
"name": "isStepUpMfaRequired",
"kind": "fn",
"startLine": 139,
"endLine": 143,
"tokens": 69
}
],
"symbolSource": "ts",
"importance": 0.0439
},
"services/auth/src/surfaceAccess.test.ts": {
"description": "Which surface a login opens, and what it costs to cross between them.",
"tokens": 1640,
"hash": "14677facd41dded6",
"size": 5740,
"mtimeMs": 1787075616725.0754,
"updatedAt": "2026-10-06T11:06:20.854Z",
"source": "scan",
"imports": [
"services/auth/src/session.ts",
"services/auth/src/surfaceAccess.ts"
],
"importance": 0.0144
},
"services/auth/src/surfaceAccess.ts": {
"description": "Which surface a login opens, and what crossing between them costs.",
"tokens": 712,
"hash": "def6923a32f17be0",
"size": 2492,
"mtimeMs": 1787075616725.1602,
"updatedAt": "2026-10-06T11:06:20.854Z",
"source": "scan",
"symbols": [
{
"name": "Surface",
"kind": "section",
"startLine": 17,
"endLine": 17,
"tokens": 12
},
{
"name": "secondFactorRequired",
"kind": "fn",
"startLine": 28,
"endLine": 30,
"tokens": 28
},
{
"name": "surfacesGrantedBy",
"kind": "fn",
"startLine": 39,
"endLine": 41,
"tokens": 37
},
{
"name": "cookieNameFor",
"kind": "fn",
"startLine": 44,
"endLine": 46,
"tokens": 38
},
{
"name": "stepUpNeedsSecondFactor",
"kind": "fn",
"startLine": 56,
"endLine": 61,
"tokens": 74
}
],
"symbolSource": "ts",
"imports": [
"services/auth/src/session.ts"
],
"importance": 0.0205
},
"services/auth/src/totp.ts": {
"description": "Renders the otpauth:// URI an authenticator app scans.",
"tokens": 1037,
"hash": "d047f1ad3d771260",
"size": 3629,
"mtimeMs": 1785760808165.6528,
"updatedAt": "2026-10-06T11:06:20.854Z",
"source": "scan",
"symbols": [
{
"name": "base32Encode",
"kind": "fn",
"startLine": 5,
"endLine": 21,
"tokens": 115
},
{
"name": "base32Decode",
"kind": "fn",
"startLine": 23,
"endLine": 39,
"tokens": 140
},
{
"name": "getCurrentStep",
"kind": "fn",
"startLine": 41,
"endLine": 43,
"tokens": 41
},
{
"name": "generateHotp",
"kind": "fn",
"startLine": 45,
"endLine": 63,
"tokens": 173
},
{
"name": "generateTotpUri",
"kind": "fn",
"startLine": 66,
"endLine": 70,
"tokens": 99
},
{
"name": "generateTotpSecret",
"kind": "fn",
"startLine": 72,
"endLine": 76,
"tokens": 83
},
{
"name": "verifyTotpCode",
"kind": "fn",
"startLine": 78,
"endLine": 110,
"tokens": 341
}
],
"symbolSource": "ts",
"importance": 0.0283
},
"services/auth/tsconfig.build.json": {
"description": "TypeScript build configuration",
"tokens": 83,
"hash": "a657ee6c4c15f62f",
"size": 289,
"mtimeMs": 1785689161517.313,
"updatedAt": "2026-10-06T11:06:20.854Z",
"source": "scan",
"importance": 0.0144
},
"services/auth/tsconfig.json": {
"description": "TypeScript configuration",
"tokens": 88,
"hash": "f5afcc0c2ccf20a7",
"size": 308,
"mtimeMs": 1785635482521.343,
"updatedAt": "2026-10-06T11:06:20.854Z",
"source": "scan",
"importance": 0.0144
},
"services/auth/vitest.config.ts": {
"description": "Vitest test configuration",
"tokens": 153,
"hash": "60924390cc1a0cd2",
"size": 534,
"mtimeMs": 1785689161517.3784,
"updatedAt": "2026-10-06T11:06:20.854Z",
"source": "scan",
"importance": 0.0144
},
"services/migrations/Dockerfile": {
"description": "Docker container definition",
"tokens": 241,
"hash": "d88fed90d8ad6de3",
"size": 901,
"mtimeMs": 1785692723554.9155,
"updatedAt": "2026-10-06T11:06:20.855Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/.go-arch-lint.yml": {
"description": "health:",
"tokens": 99,
"hash": "6267aade7cb5a743",
"size": 346,
"mtimeMs": 1785635482521.343,
"updatedAt": "2026-10-06T11:06:20.855Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/cmd/lambdamail-protocols/acme_mode.go": {
"description": "tlsaPublisher (26 fields); methods: PublishTlsa",
"tokens": 1204,
"hash": "0293750b8eebf90a",
"size": 4211,
"mtimeMs": 1785635482521.6335,
"updatedAt": "2026-10-06T11:06:20.856Z",
"source": "scan",
"symbols": [
{
"name": "startAcmeManager",
"kind": "fn",
"startLine": 21,
"endLine": 53,
"tokens": 370
},
{
"name": "tlsaPublisher",
"kind": "class",
"startLine": 60,
"endLine": 63,
"tokens": 24
},
{
"name": "PublishTlsa",
"kind": "method",
"startLine": 65,
"endLine": 121,
"tokens": 497
},
{
"name": "entityTlsaRecord",
"kind": "fn",
"startLine": 123,
"endLine": 131,
"tokens": 58
},
{
"name": "equalFoldTrim",
"kind": "fn",
"startLine": 133,
"endLine": 135,
"tokens": 35
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/domain/entity/dkim_key_pair_test.go",
"services/protocols/internal/infrastructure/acme/issuer.go",
"services/protocols/internal/infrastructure/cloudflare/cloudflare_adapter_test.go",
"services/protocols/internal/infrastructure/postgres/acme_repository.go",
"services/protocols/internal/infrastructure/vault/secret_vault_test.go"
],
"importance": 0.0144
},
"services/protocols/cmd/lambdamail-protocols/backfill_attachments.go": {
"description": "Declares attachmentBackfillName",
"tokens": 717,
"hash": "9889e38e6c4805f4",
"size": 2509,
"mtimeMs": 1787585056248.832,
"updatedAt": "2026-10-06T11:06:20.856Z",
"source": "scan",
"symbols": [
{
"name": "backfillAttachmentFlags",
"kind": "fn",
"startLine": 27,
"endLine": 77,
"tokens": 450
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/usecase/apply_rules_test.go",
"services/protocols/internal/infrastructure/diskstorage/local_disk_blob_reader_test.go",
"services/protocols/internal/infrastructure/postgres/acme_repository.go"
],
"importance": 0.0144
},
"services/protocols/cmd/lambdamail-protocols/backfill_reports.go": {
"description": "",
"tokens": 501,
"hash": "02e82f8ad6077207",
"size": 1752,
"mtimeMs": 1787316189116.0356,
"updatedAt": "2026-10-06T11:06:20.856Z",
"source": "scan",
"symbols": [
{
"name": "runBackfillReports",
"kind": "fn",
"startLine": 21,
"endLine": 50,
"tokens": 296
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/usecase/apply_rules_test.go",
"services/protocols/internal/infrastructure/diskstorage/local_disk_blob_reader_test.go",
"services/protocols/internal/infrastructure/postgres/acme_repository.go"
],
"importance": 0.0144
},
"services/protocols/cmd/lambdamail-protocols/bimi_store.go": {
"description": "bimiStore (4 fields); methods: Save, Load, Delete",
"tokens": 256,
"hash": "689cf47dbc50d9dd",
"size": 896,
"mtimeMs": 1788830725026.5217,
"updatedAt": "2026-10-06T11:06:20.856Z",
"source": "scan",
"imports": [
"services/protocols/internal/infrastructure/postgres/acme_repository.go",
"services/protocols/internal/presentation/http/admin_dkim_api.go"
],
"importance": 0.0144
},
"services/protocols/cmd/lambdamail-protocols/config.go": {
"description": "config (52 fields)",
"tokens": 1251,
"hash": "7cf339bfe49c4cfd",
"size": 4376,
"mtimeMs": 1785713002390.445,
"updatedAt": "2026-10-06T11:06:20.856Z",
"source": "scan",
"symbols": [
{
"name": "config",
"kind": "class",
"startLine": 11,
"endLine": 59,
"tokens": 368
},
{
"name": "loadConfig",
"kind": "fn",
"startLine": 61,
"endLine": 109,
"tokens": 614
},
{
"name": "domain",
"kind": "method",
"startLine": 113,
"endLine": 121,
"tokens": 56
},
{
"name": "envOrDefault",
"kind": "fn",
"startLine": 123,
"endLine": 128,
"tokens": 34
},
{
"name": "envInt",
"kind": "fn",
"startLine": 130,
"endLine": 137,
"tokens": 49
},
{
"name": "envBool",
"kind": "fn",
"startLine": 139,
"endLine": 146,
"tokens": 52
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/cmd/lambdamail-protocols/disk_other.go": {
"description": "go:build !unix",
"tokens": 98,
"hash": "a86da2188f8776fd",
"size": 343,
"mtimeMs": 1785635482521.721,
"updatedAt": "2026-10-06T11:06:20.856Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/cmd/lambdamail-protocols/disk_unix.go": {
"description": "go:build unix",
"tokens": 183,
"hash": "883831d16fd4f1ef",
"size": 639,
"mtimeMs": 1785635482521.721,
"updatedAt": "2026-10-06T11:06:20.856Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/cmd/lambdamail-protocols/dns_reconciler.go": {
"description": "domainReconciler (14 fields); methods: ReconcileDomain",
"tokens": 961,
"hash": "5418e8c55566b704",
"size": 3362,
"mtimeMs": 1787496300511.3794,
"updatedAt": "2026-10-06T11:06:20.856Z",
"source": "scan",
"symbols": [
{
"name": "domainReconciler",
"kind": "class",
"startLine": 21,
"endLine": 23,
"tokens": 34
},
{
"name": "ReconcileDomain",
"kind": "method",
"startLine": 25,
"endLine": 48,
"tokens": 217
},
{
"name": "reconcileDomainOnDemand",
"kind": "fn",
"startLine": 55,
"endLine": 92,
"tokens": 431
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/application/usecase/apply_rules_test.go",
"services/protocols/internal/infrastructure/cloudflare/cloudflare_adapter_test.go",
"services/protocols/internal/infrastructure/netdns/mx_resolver.go",
"services/protocols/internal/infrastructure/postgres/acme_repository.go",
"services/protocols/internal/presentation/http/admin_dkim_api.go"
],
"importance": 0.0144
},
"services/protocols/cmd/lambdamail-protocols/main.go": {
"description": "Command lambdamail-protocols is the entry point for the protocols service.",
"tokens": 8598,
"hash": "221f4737f84e88a6",
"size": 30093,
"mtimeMs": 1788830725027.0022,
"updatedAt": "2026-10-06T11:06:20.857Z",
"source": "scan",
"symbols": [
{
"name": "main",
"kind": "fn",
"startLine": 51,
"endLine": 71,
"tokens": 110
},
{
"name": "run",
"kind": "fn",
"startLine": 73,
"endLine": 290,
"tokens": 2996
},
{
"name": "buildCertProvider",
"kind": "fn",
"startLine": 300,
"endLine": 349,
"tokens": 675
},
{
"name": "healthy",
"kind": "fn",
"startLine": 353,
"endLine": 353,
"tokens": 10
},
{
"name": "watcherDegradedCheck",
"kind": "fn",
"startLine": 358,
"endLine": 375,
"tokens": 250
},
{
"name": "relayConfig",
"kind": "fn",
"startLine": 377,
"endLine": 385,
"tokens": 70
},
{
"name": "buildScanner",
"kind": "fn",
"startLine": 387,
"endLine": 400,
"tokens": 142
},
{
"name": "buildPolicyResolver",
"kind": "fn",
"startLine": 404,
"endLine": 420,
"tokens": 242
},
{
"name": "applyMtaStsMode",
"kind": "fn",
"startLine": 422,
"endLine": 431,
"tokens": 127
},
{
"name": "startSMTPListeners",
"kind": "fn",
"startLine": 437,
"endLine": 477,
"tokens": 550
},
{
"name": "startIMAPListeners",
"kind": "fn",
"startLine": 479,
"endLine": 503,
"tokens": 273
},
{
"name": "startPOP3Listeners",
"kind": "fn",
"startLine": 505,
"endLine": 511,
"tokens": 120
},
{
"name": "startManageSieveListener",
"kind": "fn",
"startLine": 513,
"endLine": 515,
"tokens": 70
},
{
"name": "serveImplicitTLS",
"kind": "fn",
"startLine": 520,
"endLine": 526,
"tokens": 62
},
{
"name": "serveInBackground",
"kind": "fn",
"startLine": 531,
"endLine": 538,
"tokens": 70
},
{
"name": "mailTLSConfig",
"kind": "fn",
"startLine": 542,
"endLine": 556,
"tokens": 161
},
{
"name": "runDeliveryWorker",
"kind": "fn",
"startLine": 558,
"endLine": 572,
"tokens": 106
},
{
"name": "runDnsReconciler",
"kind": "fn",
"startLine": 576,
"endLine": 672,
"tokens": 922
},
{
"name": "generateDkimKey",
"kind": "fn",
"startLine": 676,
"endLine": 682,
"tokens": 62
},
{
"name": "runHealthcheck",
"kind": "fn",
"startLine": 684,
"endLine": 697,
"tokens": 109
},
{
"name": "dnsSpecSource",
"kind": "class",
"startLine": 702,
"endLine": 706,
"tokens": 30
},
{
"name": "ExpectedRecords",
"kind": "method",
"startLine": 708,
"endLine": 739,
"tokens": 317
}
],
"symbolSource": "ts",
"skeleton": "func main() {\nfunc run(cfg config) {\nfunc buildCertProvider(ctx context.Context, cfg config, pool *pgxpool.Pool, secretVault *vault.SecretVault, vaultErr error) (port.CertProvider, func() error) {\nfunc healthy() error { return nil }\nfunc watcherDegradedCheck(watcher *tlsprovider.AcmeCertWatcher, cfg config) func() error {\nfunc relayConfig(cfg config) usecase.RelayConfig {\nfunc buildScanner(cfg config) port.ContentScanner {\nfunc buildPolicyResolver(cfg config) port.TLSPolicyResolver {\nfunc applyMtaStsMode(router *httppresentation.Router, cfg config) {\nfunc startSMTPListeners(cfg config, certProvider port.CertProvider, inboundUC *usecase.ProcessInboundEmailUseCase, submissionUC *usecase.ProcessOutboundEmailUseCase) {\nfunc startIMAPListeners(cfg config, certProvider port.CertProvider, imapUseCase *usecase.ImapSessionUseCase) {\nfunc startPOP3Listeners(certProvider port.CertProvider, pop3UseCase *usecase.Pop3SessionUseCase) {\nfunc startManageSieveListener(certProvider port.CertProvider, sieveUseCase *usecase.ManageSieveSessionUseCase) {\nfunc serveImplicitTLS(addr string, tlsConfig *tls.Config, serve func(net.Listener) error) error {\nfunc serveInBackground(name, addr string, serve func() error) {\nfunc mailTLSConfig(certProvider port.CertProvider) *tls.Config {\nfunc runDeliveryWorker(ctx context.Context, worker *usecase.OutboundWorkerUseCase) {\nfunc runDnsReconciler(",
"imports": [
"services/protocols/internal/infrastructure/tls/acme_cert_watcher_test.go",
"services/protocols/internal/presentation/http/admin_dkim_api.go",
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/application/usecase/apply_rules_test.go",
"services/protocols/internal/domain/entity/dkim_key_pair_test.go",
"services/protocols/internal/domain/valueobject/autoconfig_xml_test.go",
"services/protocols/internal/infrastructure/arc/canonical.go",
"services/protocols/internal/infrastructure/clamav/clamav_adapter_test.go",
"services/protocols/internal/infrastructure/cloudflare/cloudflare_adapter_test.go",
"services/protocols/internal/infrastructure/diskstorage/local_disk_blob_reader_test.go",
"services/protocols/internal/infrastructure/dkim/keygen.go",
"services/protocols/internal/infrastructure/mailauth/authenticator_test.go",
"services/protocols/internal/infrastructure/netdns/mx_resolver.go",
"services/protocols/internal/infrastructure/postgres/acme_repository.go",
"config/rspamd/actions.conf",
"services/protocols/internal/infrastructure/tlspolicy/resolver_test.go",
"services/protocols/internal/infrastructure/vault/secret_vault_test.go",
"services/protocols/internal/presentation/imap/backend_test.go",
"services/protocols/internal/presentation/managesieve/conn_test.go",
"services/protocols/internal/presentation/pop3/conn_test.go",
"services/protocols/internal/presentation/smtp/backend_test.go"
],
"importance": 0.0144
},
"services/protocols/cmd/lambdamail-protocols/preflight.go": {
"description": "",
"tokens": 994,
"hash": "290388f5b73171ea",
"size": 3477,
"mtimeMs": 1785635482521.721,
"updatedAt": "2026-10-06T11:06:20.857Z",
"source": "scan",
"symbols": [
{
"name": "runPreflight",
"kind": "fn",
"startLine": 18,
"endLine": 39,
"tokens": 191
},
{
"name": "buildPreflightDeps",
"kind": "fn",
"startLine": 41,
"endLine": 90,
"tokens": 494
},
{
"name": "httpDateTime",
"kind": "fn",
"startLine": 95,
"endLine": 112,
"tokens": 146
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/presentation/http/admin_dkim_api.go",
"services/protocols/internal/application/usecase/apply_rules_test.go",
"services/protocols/internal/infrastructure/tls/acme_cert_watcher_test.go"
],
"importance": 0.0144
},
"services/protocols/Dockerfile": {
"description": "Docker container definition",
"tokens": 312,
"hash": "9667f6631a08b9ac",
"size": 1168,
"mtimeMs": 1785668486701.0144,
"updatedAt": "2026-10-06T11:06:20.857Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/go.mod": {
"description": "Go module definition",
"tokens": 326,
"hash": "39b2974fddd7b9a3",
"size": 1220,
"mtimeMs": 1787396966405.9336,
"updatedAt": "2026-10-06T11:06:20.857Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/go.sum": {
"description": "Go dependency checksums",
"tokens": 2706,
"hash": "e76a2a76c9f0b55a",
"size": 10147,
"mtimeMs": 1787396966405.9336,
"updatedAt": "2026-10-06T11:06:20.858Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/application/port/arc_sealer.go": {
"description": "ArcSealer adds an Authenticated Received Chain set to a message",
"tokens": 222,
"hash": "8c054ee7b4e0e303",
"size": 776,
"mtimeMs": 1785635482522.235,
"updatedAt": "2026-10-06T11:06:20.858Z",
"source": "scan",
"importance": 1
},
"services/protocols/internal/application/port/auth_repository.go": {
"description": "Interface: AuthRepository (2 methods)",
"tokens": 205,
"hash": "aa25154618e92320",
"size": 716,
"mtimeMs": 1785635482522.3005,
"updatedAt": "2026-10-06T11:06:20.858Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/application/port/blob_reader.go": {
"description": "Interface: BlobReader (2 methods)",
"tokens": 65,
"hash": "5e957cdc87eaffed",
"size": 225,
"mtimeMs": 1785635482522.3005,
"updatedAt": "2026-10-06T11:06:20.858Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/application/port/blob_storage.go": {
"description": "Interface: BlobStorage (2 methods)",
"tokens": 152,
"hash": "c7bfcb8c5bd5b14b",
"size": 532,
"mtimeMs": 1785635482522.3005,
"updatedAt": "2026-10-06T11:06:20.858Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/application/port/cert_provider.go": {
"description": "CertProvider supplies the TLS certificate for STARTTLS. Its signature",
"tokens": 104,
"hash": "487e664e07ccd53c",
"size": 363,
"mtimeMs": 1785635482522.3005,
"updatedAt": "2026-10-06T11:06:20.858Z",
"source": "scan",
"imports": [
"services/protocols/internal/infrastructure/tls/acme_cert_watcher_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/port/certificate_store.go": {
"description": "Interface: CertificateStore (8 methods)",
"tokens": 524,
"hash": "d8c239239f742d6c",
"size": 1833,
"mtimeMs": 1785635482522.3005,
"updatedAt": "2026-10-06T11:06:20.859Z",
"source": "scan",
"symbols": [
{
"name": "StoredCertificate",
"kind": "class",
"startLine": 12,
"endLine": 23,
"tokens": 123
},
{
"name": "CertificateStore",
"kind": "class",
"startLine": 27,
"endLine": 44,
"tokens": 274
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/application/port/content_scanner.go": {
"description": "Interface: ContentScanner (2 methods)",
"tokens": 93,
"hash": "2924fbefcc6969f5",
"size": 323,
"mtimeMs": 1785635482522.3005,
"updatedAt": "2026-10-06T11:06:20.859Z",
"source": "scan",
"imports": [
"services/protocols/internal/domain/valueobject/autoconfig_xml_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/port/copy_repository.go": {
"description": "CopiedMessage records one message's UID before and after a COPY/MOVE.",
"tokens": 244,
"hash": "b8a4166d55a8cbc1",
"size": 851,
"mtimeMs": 1785635482522.3005,
"updatedAt": "2026-10-06T11:06:20.859Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/application/port/dkim_repository.go": {
"description": "DkimSigningKey is one active signing key, already decrypted and ready to",
"tokens": 304,
"hash": "09765c37cf3639af",
"size": 1063,
"mtimeMs": 1785635482522.3005,
"updatedAt": "2026-10-06T11:06:20.859Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/application/port/dns_provider.go": {
"description": "Interface: DnsProvider (6 methods)",
"tokens": 168,
"hash": "d153bc9157e80cb1",
"size": 585,
"mtimeMs": 1785635482522.3005,
"updatedAt": "2026-10-06T11:06:20.859Z",
"source": "scan",
"imports": [
"services/protocols/internal/domain/entity/dkim_key_pair_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/port/dns_verifier.go": {
"description": "Interface: DnsVerifier (2 methods)",
"tokens": 190,
"hash": "c0d68724351770d1",
"size": 663,
"mtimeMs": 1785635482522.3005,
"updatedAt": "2026-10-06T11:06:20.859Z",
"source": "scan",
"imports": [
"services/protocols/internal/domain/entity/dkim_key_pair_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/port/expunge_repository.go": {
"description": "ExpungeRepository permanently marks messages as expunged (soft delete -",
"tokens": 208,
"hash": "d1c0509f2c119331",
"size": 728,
"mtimeMs": 1785635482522.3005,
"updatedAt": "2026-10-06T11:06:20.859Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/application/port/flag_repository.go": {
"description": "FlagOp mirrors imap.StoreFlagsOp without importing the imap package here",
"tokens": 222,
"hash": "a50c4e8909720464",
"size": 775,
"mtimeMs": 1785635482522.3005,
"updatedAt": "2026-10-06T11:06:20.860Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/application/port/imap_folder_repository.go": {
"description": "ImapFolderRecord is the IMAP-relevant subset of a folder row.",
"tokens": 185,
"hash": "ace3fb5f03ef6036",
"size": 646,
"mtimeMs": 1785635482522.3005,
"updatedAt": "2026-10-06T11:06:20.860Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/application/port/inbound_message_repository.go": {
"description": "Interface: InboundMessageRepository (2 methods)",
"tokens": 626,
"hash": "6aeebc5c4f7e33e5",
"size": 2191,
"mtimeMs": 1787415911599.8154,
"updatedAt": "2026-10-06T11:06:20.860Z",
"source": "scan",
"symbols": [
{
"name": "PersistInboundMessageInput",
"kind": "class",
"startLine": 11,
"endLine": 33,
"tokens": 263
},
{
"name": "InboundMessageRepository",
"kind": "class",
"startLine": 39,
"endLine": 53,
"tokens": 230
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/application/port/mail_authenticator.go": {
"description": "Interface: MailAuthenticator (2 methods)",
"tokens": 424,
"hash": "29087b2d68b7ee74",
"size": 1481,
"mtimeMs": 1785635482522.3005,
"updatedAt": "2026-10-06T11:06:20.860Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/application/port/mailbox_repository.go": {
"description": "declares the interfaces the application layer depends on.",
"tokens": 386,
"hash": "6f4a3a0079ff0bbb",
"size": 1351,
"mtimeMs": 1785635482522.3005,
"updatedAt": "2026-10-06T11:06:20.860Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/application/port/message_query_repository.go": {
"description": "Interface: MessageQueryRepository (2 methods)",
"tokens": 211,
"hash": "046957cf769ab1fa",
"size": 738,
"mtimeMs": 1785635482522.3005,
"updatedAt": "2026-10-06T11:06:20.860Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/application/port/mx_resolver.go": {
"description": "Interface: MXResolver (2 methods)",
"tokens": 38,
"hash": "c9dba8e8e15caa4e",
"size": 131,
"mtimeMs": 1785635482522.3005,
"updatedAt": "2026-10-06T11:06:20.860Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/application/port/outbound_repository.go": {
"description": "Interface: OutboundRepository (5 methods)",
"tokens": 200,
"hash": "f0deeb88b0890bb1",
"size": 698,
"mtimeMs": 1785635482522.3005,
"updatedAt": "2026-10-06T11:06:20.860Z",
"source": "scan",
"imports": [
"services/protocols/internal/domain/entity/dkim_key_pair_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/port/outbox.go": {
"description": "Interface: OutboxRepository (4 methods)",
"tokens": 237,
"hash": "7cb6272eaad0233e",
"size": 827,
"mtimeMs": 1785689161517.9255,
"updatedAt": "2026-10-06T11:06:20.860Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/application/port/report_repository.go": {
"description": "Interface: ReportRepository (8 methods)",
"tokens": 617,
"hash": "4713b90787d6ea33",
"size": 2158,
"mtimeMs": 1787422396692.923,
"updatedAt": "2026-10-06T11:06:20.860Z",
"source": "scan",
"symbols": [
{
"name": "ReportRepository",
"kind": "class",
"startLine": 13,
"endLine": 16,
"tokens": 52
},
{
"name": "StoredReportMessage",
"kind": "class",
"startLine": 20,
"endLine": 24,
"tokens": 34
},
{
"name": "DeliveredReportStore",
"kind": "class",
"startLine": 28,
"endLine": 34,
"tokens": 112
},
{
"name": "SieveScriptReader",
"kind": "class",
"startLine": 40,
"endLine": 44,
"tokens": 57
},
{
"name": "VacationLog",
"kind": "class",
"startLine": 51,
"endLine": 56,
"tokens": 84
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/domain/entity/dkim_key_pair_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/port/sieve_repository.go": {
"description": "SieveScriptRecord represents a persistent Sieve script row in PostgreSQL.",
"tokens": 238,
"hash": "d97b9a4e12b7ed1f",
"size": 833,
"mtimeMs": 1785635482522.3005,
"updatedAt": "2026-10-06T11:06:20.860Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/application/port/system_alias_repository.go": {
"description": "SystemAliasRepository manages mandatory system security aliases (postmaster, abuse, dmarc, tlsrpt).",
"tokens": 75,
"hash": "4c4a52b527e321e2",
"size": 262,
"mtimeMs": 1785635482522.3005,
"updatedAt": "2026-10-06T11:06:20.860Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/application/port/tls_policy_resolver.go": {
"description": "Interface: TLSPolicyResolver (2 methods)",
"tokens": 203,
"hash": "e7d648b252c6f7cb",
"size": 710,
"mtimeMs": 1785635482522.3005,
"updatedAt": "2026-10-06T11:06:20.860Z",
"source": "scan",
"imports": [
"services/protocols/internal/domain/entity/dkim_key_pair_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/port/webmail_repository.go": {
"description": "Interface: WebmailRepository (13 methods)",
"tokens": 1306,
"hash": "655086f2c69825bd",
"size": 4570,
"mtimeMs": 1787416293370.6328,
"updatedAt": "2026-10-06T11:06:20.861Z",
"source": "scan",
"symbols": [
{
"name": "WebmailFolder",
"kind": "class",
"startLine": 12,
"endLine": 18,
"tokens": 63
},
{
"name": "WebmailMessage",
"kind": "class",
"startLine": 25,
"endLine": 39,
"tokens": 179
},
{
"name": "WebmailMessageBody",
"kind": "class",
"startLine": 42,
"endLine": 46,
"tokens": 36
},
{
"name": "WebmailRepository",
"kind": "class",
"startLine": 54,
"endLine": 75,
"tokens": 450
},
{
"name": "FolderAdmin",
"kind": "class",
"startLine": 94,
"endLine": 100,
"tokens": 107
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/application/usecase/apply_rules_test.go": {
"description": "stubSieveScripts (35 fields); methods: ActiveScriptFor",
"tokens": 2504,
"hash": "1f7fc40f1c669603",
"size": 8762,
"mtimeMs": 1787417842589.425,
"updatedAt": "2026-10-06T11:06:20.861Z",
"source": "scan",
"symbols": [
{
"name": "stubSieveScripts",
"kind": "class",
"startLine": 17,
"endLine": 21,
"tokens": 24
},
{
"name": "ActiveScriptFor",
"kind": "method",
"startLine": 23,
"endLine": 26,
"tokens": 47
},
{
"name": "newRules",
"kind": "fn",
"startLine": 28,
"endLine": 30,
"tokens": 29
},
{
"name": "TestRuleDecidesTheFolder",
"kind": "fn",
"startLine": 34,
"endLine": 42,
"tokens": 112
},
{
"name": "TestMessageWithNoMatchingRuleIsUntouched",
"kind": "fn",
"startLine": 44,
"endLine": 52,
"tokens": 119
},
{
"name": "TestNoScriptMeansNoDecision",
"kind": "fn",
"startLine": 55,
"endLine": 62,
"tokens": 104
},
{
"name": "TestABrokenScriptStillDeliversTheMessage",
"kind": "fn",
"startLine": 67,
"endLine": 74,
"tokens": 108
},
{
"name": "TestAFailingLookupStillDeliversTheMessage",
"kind": "fn",
"startLine": 76,
"endLine": 83,
"tokens": 108
},
{
"name": "TestVacationRepliesToAPerson",
"kind": "fn",
"startLine": 90,
"endLine": 101,
"tokens": 134
},
{
"name": "TestVacationStaysSilentForAList",
"kind": "fn",
"startLine": 105,
"endLine": 113,
"tokens": 113
},
{
"name": "TestVacationStaysSilentForABounce",
"kind": "fn",
"startLine": 115,
"endLine": 124,
"tokens": 120
},
{
"name": "TestRulesAreLookedUpForTheReceivingMailbox",
"kind": "fn",
"startLine": 127,
"endLine": 138,
"tokens": 122
},
{
"name": "TestDeliveryFilesWhereTheRuleSays",
"kind": "fn",
"startLine": 145,
"endLine": 165,
"tokens": 248
},
{
"name": "TestEachRecipientGetsTheirOwnRules",
"kind": "fn",
"startLine": 169,
"endLine": 190,
"tokens": 251
},
{
"name": "TestDiscardAcceptsTheMessageAndFilesNothing",
"kind": "fn",
"startLine": 194,
"endLine": 212,
"tokens": 229
},
{
"name": "TestDeliveryIsUnchangedWithoutRules",
"kind": "fn",
"startLine": 215,
"endLine": 230,
"tokens": 181
},
{
"name": "bytesReader",
"kind": "fn",
"startLine": 233,
"endLine": 233,
"tokens": 21
}
],
"symbolSource": "ts",
"skeleton": "type stubSieveScripts struct {\nfunc (s *stubSieveScripts) ActiveScriptFor(_ context.Context, mailboxID uuid.UUID) (string, error) {\nfunc newRules(scripts *stubSieveScripts) *ApplyRulesUseCase {\nfunc TestRuleDecidesTheFolder(t *testing.T) {\nfunc TestMessageWithNoMatchingRuleIsUntouched(t *testing.T) {\nfunc TestNoScriptMeansNoDecision(t *testing.T) {\nfunc TestABrokenScriptStillDeliversTheMessage(t *testing.T) {\nfunc TestAFailingLookupStillDeliversTheMessage(t *testing.T) {\nfunc TestVacationRepliesToAPerson(t *testing.T) {\nfunc TestVacationStaysSilentForAList(t *testing.T) {\nfunc TestVacationStaysSilentForABounce(t *testing.T) {\nfunc TestRulesAreLookedUpForTheReceivingMailbox(t *testing.T) {\nfunc TestDeliveryFilesWhereTheRuleSays(t *testing.T) {\nfunc TestEachRecipientGetsTheirOwnRules(t *testing.T) {\nfunc TestDiscardAcceptsTheMessageAndFilesNothing(t *testing.T) {\nfunc TestDeliveryIsUnchangedWithoutRules(t *testing.T) {\nfunc bytesReader(s string) io.Reader { return bytes.NewBufferString(s) }",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.1794
},
"services/protocols/internal/application/usecase/apply_rules.go": {
"description": "ApplyRulesUseCase (20 fields); methods: For",
"tokens": 990,
"hash": "0fbcc8babc85cc3c",
"size": 3465,
"mtimeMs": 1787420466489.285,
"updatedAt": "2026-10-06T11:06:20.862Z",
"source": "scan",
"symbols": [
{
"name": "ApplyRulesUseCase",
"kind": "class",
"startLine": 22,
"endLine": 24,
"tokens": 19
},
{
"name": "NewApplyRulesUseCase",
"kind": "fn",
"startLine": 26,
"endLine": 28,
"tokens": 36
},
{
"name": "RuleDecision",
"kind": "class",
"startLine": 31,
"endLine": 42,
"tokens": 139
},
{
"name": "For",
"kind": "method",
"startLine": 50,
"endLine": 86,
"tokens": 299
},
{
"name": "headersOf",
"kind": "fn",
"startLine": 92,
"endLine": 102,
"tokens": 90
},
{
"name": "firstHeader",
"kind": "fn",
"startLine": 105,
"endLine": 111,
"tokens": 43
}
],
"symbolSource": "ts",
"imports": [
"services/webmail/src/app/(user)/user/mail/[folder]/page.tsx",
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/domain/sieve/parser.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/backfill_reports_test.go": {
"description": "stubDeliveredReportStore (35 fields); methods: ListUningestedReports, MoveToReportsFolder, ReadByID",
"tokens": 1565,
"hash": "5497ef40f4d13fba",
"size": 5477,
"mtimeMs": 1787316127470.0635,
"updatedAt": "2026-10-06T11:06:20.862Z",
"source": "scan",
"symbols": [
{
"name": "stubDeliveredReportStore",
"kind": "class",
"startLine": 17,
"endLine": 24,
"tokens": 50
},
{
"name": "ListUningestedReports",
"kind": "method",
"startLine": 26,
"endLine": 36,
"tokens": 80
},
{
"name": "MoveToReportsFolder",
"kind": "method",
"startLine": 38,
"endLine": 44,
"tokens": 57
},
{
"name": "ReadByID",
"kind": "method",
"startLine": 46,
"endLine": 55,
"tokens": 73
},
{
"name": "newBackfill",
"kind": "fn",
"startLine": 57,
"endLine": 60,
"tokens": 63
},
{
"name": "TestBackfillIngestsAReportAlreadyInTheMailbox",
"kind": "fn",
"startLine": 62,
"endLine": 93,
"tokens": 313
},
{
"name": "TestBackfillOverAnEmptyBacklogDoesNothing",
"kind": "fn",
"startLine": 97,
"endLine": 108,
"tokens": 103
},
{
"name": "TestBackfillContinuesPastAnUnreadableReport",
"kind": "fn",
"startLine": 113,
"endLine": 144,
"tokens": 340
},
{
"name": "TestBackfillSurvivesAMissingBlob",
"kind": "fn",
"startLine": 147,
"endLine": 163,
"tokens": 153
},
{
"name": "TestBackfillStopsIfItCannotReadTheBacklog",
"kind": "fn",
"startLine": 167,
"endLine": 172,
"tokens": 92
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/backfill_reports.go": {
"description": "BackfillReportsUseCase (16 fields); methods: Run",
"tokens": 846,
"hash": "43ab4b80f09dd18d",
"size": 2958,
"mtimeMs": 1787316113051.5327,
"updatedAt": "2026-10-06T11:06:20.862Z",
"source": "scan",
"symbols": [
{
"name": "BackfillReportsUseCase",
"kind": "class",
"startLine": 19,
"endLine": 23,
"tokens": 41
},
{
"name": "NewBackfillReportsUseCase",
"kind": "fn",
"startLine": 25,
"endLine": 31,
"tokens": 69
},
{
"name": "BackfillSummary",
"kind": "class",
"startLine": 34,
"endLine": 42,
"tokens": 93
},
{
"name": "Run",
"kind": "method",
"startLine": 50,
"endLine": 89,
"tokens": 370
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/imap_session_test.go": {
"description": "fakeAuthRepository (40 fields); methods: FindByAddress, ListFolders, FindByName, Expunge",
"tokens": 1828,
"hash": "ddaeebae69cda399",
"size": 6395,
"mtimeMs": 1785635482522.9756,
"updatedAt": "2026-10-06T11:06:20.862Z",
"source": "scan",
"symbols": [
{
"name": "fakeAuthRepository",
"kind": "class",
"startLine": 17,
"endLine": 19,
"tokens": 21
},
{
"name": "FindByAddress",
"kind": "method",
"startLine": 21,
"endLine": 27,
"tokens": 55
},
{
"name": "TestImapSessionUseCase_Login_SucceedsForCorrectPassword",
"kind": "fn",
"startLine": 29,
"endLine": 44,
"tokens": 186
},
{
"name": "TestImapSessionUseCase_Login_FailsForWrongPassword",
"kind": "fn",
"startLine": 46,
"endLine": 56,
"tokens": 131
},
{
"name": "TestImapSessionUseCase_Login_FailsForUnknownAddress",
"kind": "fn",
"startLine": 58,
"endLine": 66,
"tokens": 127
},
{
"name": "fakeImapFolderRepository",
"kind": "class",
"startLine": 68,
"endLine": 70,
"tokens": 24
},
{
"name": "ListFolders",
"kind": "method",
"startLine": 72,
"endLine": 78,
"tokens": 64
},
{
"name": "FindByName",
"kind": "method",
"startLine": 80,
"endLine": 86,
"tokens": 57
},
{
"name": "TestImapSessionUseCase_SelectFolder_ReturnsRecordForExistingFolder",
"kind": "fn",
"startLine": 88,
"endLine": 101,
"tokens": 165
},
{
"name": "TestImapSessionUseCase_SelectFolder_ReturnsErrNoSuchFolderWhenMissing",
"kind": "fn",
"startLine": 103,
"endLine": 111,
"tokens": 119
},
{
"name": "fakeExpungeRepository",
"kind": "class",
"startLine": 113,
"endLine": 118,
"tokens": 28
},
{
"name": "Expunge",
"kind": "method",
"startLine": 120,
"endLine": 126,
"tokens": 59
},
{
"name": "fakeCopyRepository",
"kind": "class",
"startLine": 128,
"endLine": 130,
"tokens": 18
},
{
"name": "CopyMessages",
"kind": "method",
"startLine": 132,
"endLine": 134,
"tokens": 43
},
{
"name": "TestImapSessionUseCase_Expunge_DelegatesToRepository",
"kind": "fn",
"startLine": 136,
"endLine": 150,
"tokens": 183
},
{
"name": "fakeFlagRepository",
"kind": "class",
"startLine": 152,
"endLine": 158,
"tokens": 51
},
{
"name": "SetFlags",
"kind": "method",
"startLine": 160,
"endLine": 163,
"tokens": 84
},
{
"name": "TestImapSessionUseCase_SetFlags_DelegatesToRepository",
"kind": "fn",
"startLine": 165,
"endLine": 176,
"tokens": 163
},
{
"name": "TestImapSessionUseCase_CopyMessages_ReturnsRepositoryResult",
"kind": "fn",
"startLine": 178,
"endLine": 189,
"tokens": 156
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/imap_session.go": {
"description": "ImapSessionUseCase (25 fields); methods: SetTrackerManager, GetTrackerManager, Login, ListFolders",
"tokens": 1085,
"hash": "4742bc5de6265257",
"size": 3795,
"mtimeMs": 1785635482522.3005,
"updatedAt": "2026-10-06T11:06:20.862Z",
"source": "scan",
"symbols": [
{
"name": "ImapSessionUseCase",
"kind": "class",
"startLine": 25,
"endLine": 34,
"tokens": 97
},
{
"name": "NewImapSessionUseCase",
"kind": "fn",
"startLine": 36,
"endLine": 47,
"tokens": 149
},
{
"name": "SetTrackerManager",
"kind": "method",
"startLine": 49,
"endLine": 53,
"tokens": 35
},
{
"name": "GetTrackerManager",
"kind": "method",
"startLine": 55,
"endLine": 57,
"tokens": 30
},
{
"name": "Login",
"kind": "method",
"startLine": 59,
"endLine": 75,
"tokens": 120
},
{
"name": "ListFolders",
"kind": "method",
"startLine": 77,
"endLine": 79,
"tokens": 47
},
{
"name": "SelectFolder",
"kind": "method",
"startLine": 81,
"endLine": 90,
"tokens": 82
},
{
"name": "FetchMessages",
"kind": "method",
"startLine": 92,
"endLine": 94,
"tokens": 47
},
{
"name": "ReadBlob",
"kind": "method",
"startLine": 96,
"endLine": 98,
"tokens": 39
},
{
"name": "SetFlags",
"kind": "method",
"startLine": 100,
"endLine": 102,
"tokens": 67
},
{
"name": "Expunge",
"kind": "method",
"startLine": 104,
"endLine": 106,
"tokens": 43
},
{
"name": "CopyMessages",
"kind": "method",
"startLine": 108,
"endLine": 110,
"tokens": 66
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/inbound_auth_test.go": {
"description": "stubAuthenticator (19 fields); methods: Authenticate",
"tokens": 1438,
"hash": "faa083441706756a",
"size": 5031,
"mtimeMs": 1785635482522.9756,
"updatedAt": "2026-10-06T11:06:20.862Z",
"source": "scan",
"symbols": [
{
"name": "stubAuthenticator",
"kind": "class",
"startLine": 15,
"endLine": 18,
"tokens": 27
},
{
"name": "Authenticate",
"kind": "method",
"startLine": 20,
"endLine": 23,
"tokens": 43
},
{
"name": "inboundInput",
"kind": "fn",
"startLine": 25,
"endLine": 35,
"tokens": 116
},
{
"name": "TestUseCase_Handle_PersistsAuthenticationVerdicts",
"kind": "fn",
"startLine": 39,
"endLine": 54,
"tokens": 198
},
{
"name": "TestUseCase_Handle_PrependsAuthenticationResultsHeader",
"kind": "fn",
"startLine": 58,
"endLine": 73,
"tokens": 206
},
{
"name": "TestUseCase_Handle_RejectsOnDmarcFailWithRejectPolicy",
"kind": "fn",
"startLine": 77,
"endLine": 95,
"tokens": 204
},
{
"name": "TestUseCase_Handle_AcceptsOnDmarcFailWithQuarantinePolicy",
"kind": "fn",
"startLine": 99,
"endLine": 112,
"tokens": 165
},
{
"name": "TestUseCase_Handle_PassesPeerIdentityToAuthenticator",
"kind": "fn",
"startLine": 116,
"endLine": 138,
"tokens": 239
},
{
"name": "parseTestIP",
"kind": "fn",
"startLine": 140,
"endLine": 140,
"tokens": 17
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/inbound_scan_headers_test.go": {
"description": "capturingBlobStorage (9 fields); methods: Store, Scan",
"tokens": 882,
"hash": "7a5ef06b82c637c2",
"size": 3087,
"mtimeMs": 1785635482522.9756,
"updatedAt": "2026-10-06T11:06:20.863Z",
"source": "scan",
"symbols": [
{
"name": "capturingBlobStorage",
"kind": "class",
"startLine": 16,
"endLine": 18,
"tokens": 15
},
{
"name": "Store",
"kind": "method",
"startLine": 20,
"endLine": 24,
"tokens": 58
},
{
"name": "stubScanner",
"kind": "class",
"startLine": 26,
"endLine": 28,
"tokens": 17
},
{
"name": "Scan",
"kind": "method",
"startLine": 30,
"endLine": 32,
"tokens": 35
},
{
"name": "TestUseCase_Handle_WritesScanHeadersIntoStoredMessage",
"kind": "fn",
"startLine": 38,
"endLine": 80,
"tokens": 430
},
{
"name": "TestUseCase_Handle_LeavesMessageUntouchedWithoutScanHeaders",
"kind": "fn",
"startLine": 82,
"endLine": 99,
"tokens": 189
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/domain/valueobject/autoconfig_xml_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/inbound_system_message_test.go": {
"description": "junkingScanner (7 fields); methods: Scan",
"tokens": 1144,
"hash": "7fee051806b3a830",
"size": 4004,
"mtimeMs": 1785711428684.0837,
"updatedAt": "2026-10-06T11:06:20.863Z",
"source": "scan",
"symbols": [
{
"name": "junkingScanner",
"kind": "class",
"startLine": 17,
"endLine": 17,
"tokens": 12
},
{
"name": "Scan",
"kind": "method",
"startLine": 19,
"endLine": 27,
"tokens": 88
},
{
"name": "TestSystemGeneratedMessageIsNotSpamFiltered",
"kind": "fn",
"startLine": 37,
"endLine": 65,
"tokens": 316
},
{
"name": "TestOrdinaryMessageIsStillScanned",
"kind": "fn",
"startLine": 70,
"endLine": 94,
"tokens": 274
},
{
"name": "TestDsnDeclaresItselfAutoGenerated",
"kind": "fn",
"startLine": 99,
"endLine": 110,
"tokens": 125
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/domain/valueobject/autoconfig_xml_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/ingest_delivered_reports_test.go": {
"description": "recordingReportRepo (48 fields); methods: SaveDmarcReport, SaveTlsRptReport",
"tokens": 3334,
"hash": "8ebf034ccec5fbd5",
"size": 11668,
"mtimeMs": 1787316127469.6414,
"updatedAt": "2026-10-06T11:06:20.863Z",
"source": "scan",
"symbols": [
{
"name": "recordingReportRepo",
"kind": "class",
"startLine": 21,
"endLine": 25,
"tokens": 32
},
{
"name": "SaveDmarcReport",
"kind": "method",
"startLine": 27,
"endLine": 33,
"tokens": 54
},
{
"name": "SaveTlsRptReport",
"kind": "method",
"startLine": 35,
"endLine": 41,
"tokens": 55
},
{
"name": "gzipped",
"kind": "fn",
"startLine": 44,
"endLine": 55,
"tokens": 75
},
{
"name": "messageWithAttachment",
"kind": "fn",
"startLine": 59,
"endLine": 80,
"tokens": 276
},
{
"name": "newReportIngestor",
"kind": "fn",
"startLine": 91,
"endLine": 93,
"tokens": 45
},
{
"name": "TestTlsRptReportAddressedToTlsRptIsIngested",
"kind": "fn",
"startLine": 95,
"endLine": 114,
"tokens": 190
},
{
"name": "TestDmarcReportAddressedToDmarcIsIngested",
"kind": "fn",
"startLine": 116,
"endLine": 134,
"tokens": 173
},
{
"name": "TestOrdinaryMailIsNotTreatedAsAReport",
"kind": "fn",
"startLine": 138,
"endLine": 154,
"tokens": 168
},
{
"name": "TestUnparseableReportIsRecognisedButNeverFailsDelivery",
"kind": "fn",
"startLine": 159,
"endLine": 175,
"tokens": 180
},
{
"name": "TestStorageFailureDoesNotFailDelivery",
"kind": "fn",
"startLine": 179,
"endLine": 188,
"tokens": 124
},
{
"name": "TestReportAddressMatchingIsCaseInsensitive",
"kind": "fn",
"startLine": 192,
"endLine": 201,
"tokens": 118
},
{
"name": "TestReportWithNoAttachmentDoesNotFail",
"kind": "fn",
"startLine": 205,
"endLine": 217,
"tokens": 123
},
{
"name": "TestDeliveredReportIsIngestedAndFiledInReports",
"kind": "fn",
"startLine": 242,
"endLine": 273,
"tokens": 374
},
{
"name": "TestOrdinaryMailStillReachesTheInbox",
"kind": "fn",
"startLine": 276,
"endLine": 298,
"tokens": 237
},
{
"name": "TestDeliveryIsUnchangedWithoutAnIngestor",
"kind": "fn",
"startLine": 302,
"endLine": 318,
"tokens": 216
}
],
"symbolSource": "ts",
"skeleton": "type recordingReportRepo struct {\nfunc (r *recordingReportRepo) SaveDmarcReport(_ context.Context, report *entity.DmarcReport) error {\nfunc (r *recordingReportRepo) SaveTlsRptReport(_ context.Context, report *entity.TlsRptReport) error {\nfunc gzipped(t *testing.T, payload string) []byte {\nfunc messageWithAttachment(filename, contentType string, content []byte) []byte {\nfunc newReportIngestor(repo *recordingReportRepo) *IngestDeliveredReportsUseCase {\nfunc TestTlsRptReportAddressedToTlsRptIsIngested(t *testing.T) {\nfunc TestDmarcReportAddressedToDmarcIsIngested(t *testing.T) {\nfunc TestOrdinaryMailIsNotTreatedAsAReport(t *testing.T) {\nfunc TestUnparseableReportIsRecognisedButNeverFailsDelivery(t *testing.T) {\nfunc TestStorageFailureDoesNotFailDelivery(t *testing.T) {\nfunc TestReportAddressMatchingIsCaseInsensitive(t *testing.T) {\nfunc TestReportWithNoAttachmentDoesNotFail(t *testing.T) {\nfunc TestDeliveredReportIsIngestedAndFiledInReports(t *testing.T) {\nfunc TestOrdinaryMailStillReachesTheInbox(t *testing.T) {\nfunc TestDeliveryIsUnchangedWithoutAnIngestor(t *testing.T) {",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/domain/entity/dkim_key_pair_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/ingest_delivered_reports.go": {
"description": "IngestDeliveredReportsUseCase (34 fields); methods: Ingest",
"tokens": 1905,
"hash": "4adc9bc0c6621d1a",
"size": 6666,
"mtimeMs": 1787316113038.0015,
"updatedAt": "2026-10-06T11:06:20.864Z",
"source": "scan",
"symbols": [
{
"name": "ReportKind",
"kind": "class",
"startLine": 15,
"endLine": 15,
"tokens": 7
},
{
"name": "IngestDeliveredReportsUseCase",
"kind": "class",
"startLine": 51,
"endLine": 53,
"tokens": 22
},
{
"name": "NewIngestDeliveredReportsUseCase",
"kind": "fn",
"startLine": 55,
"endLine": 57,
"tokens": 46
},
{
"name": "Ingest",
"kind": "method",
"startLine": 68,
"endLine": 114,
"tokens": 470
},
{
"name": "ReportOutcome",
"kind": "class",
"startLine": 123,
"endLine": 126,
"tokens": 18
},
{
"name": "reportKindForAddress",
"kind": "fn",
"startLine": 129,
"endLine": 135,
"tokens": 60
},
{
"name": "reportPayloads",
"kind": "fn",
"startLine": 145,
"endLine": 153,
"tokens": 67
},
{
"name": "collectReportParts",
"kind": "fn",
"startLine": 163,
"endLine": 188,
"tokens": 218
}
],
"symbolSource": "ts",
"imports": [
"services/webmail/src/app/(admin)/admin/dmarc/page.tsx"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/ingest_reports_test.go": {
"description": "fakeReportRepository (8 fields); methods: SaveDmarcReport, SaveTlsRptReport",
"tokens": 612,
"hash": "036dc9128d2ac27a",
"size": 2140,
"mtimeMs": 1785635482522.9756,
"updatedAt": "2026-10-06T11:06:20.864Z",
"source": "scan",
"symbols": [
{
"name": "fakeReportRepository",
"kind": "class",
"startLine": 10,
"endLine": 13,
"tokens": 32
},
{
"name": "SaveDmarcReport",
"kind": "method",
"startLine": 15,
"endLine": 18,
"tokens": 47
},
{
"name": "SaveTlsRptReport",
"kind": "method",
"startLine": 20,
"endLine": 23,
"tokens": 48
},
{
"name": "TestIngestReportsUseCase_IngestDmarcAndTlsRpt",
"kind": "fn",
"startLine": 25,
"endLine": 62,
"tokens": 455
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/domain/entity/dkim_key_pair_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/ingest_reports.go": {
"description": "IngestReportsUseCase (15 fields); methods: IngestDmarc, IngestTlsRpt",
"tokens": 347,
"hash": "a6426e2f0646755f",
"size": 1213,
"mtimeMs": 1785635482522.9756,
"updatedAt": "2026-10-06T11:06:20.864Z",
"source": "scan",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/domain/entity/dkim_key_pair_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/mailbox_tracker_manager.go": {
"description": "MailboxTrackerManager (9 fields); methods: GetTracker, NotifyNumMessages, NotifyMessageFlags, NotifyExpunge",
"tokens": 585,
"hash": "0a9120b2d647b28e",
"size": 2046,
"mtimeMs": 1785635482522.9756,
"updatedAt": "2026-10-06T11:06:20.864Z",
"source": "scan",
"symbols": [
{
"name": "MailboxTrackerManager",
"kind": "class",
"startLine": 13,
"endLine": 16,
"tokens": 31
},
{
"name": "NewMailboxTrackerManager",
"kind": "fn",
"startLine": 18,
"endLine": 22,
"tokens": 43
},
{
"name": "GetTracker",
"kind": "method",
"startLine": 25,
"endLine": 35,
"tokens": 90
},
{
"name": "NotifyNumMessages",
"kind": "method",
"startLine": 38,
"endLine": 46,
"tokens": 55
},
{
"name": "NotifyMessageFlags",
"kind": "method",
"startLine": 49,
"endLine": 61,
"tokens": 117
},
{
"name": "NotifyExpunge",
"kind": "method",
"startLine": 64,
"endLine": 72,
"tokens": 55
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/application/usecase/manage_folders_test.go": {
"description": "stubFolderStore (47 fields); methods: ListFolders, CreateFolder, RenameFolder, DeleteFolder",
"tokens": 2128,
"hash": "0dfb90d34e47fda2",
"size": 7448,
"mtimeMs": 1787417842590.568,
"updatedAt": "2026-10-06T11:06:20.864Z",
"source": "scan",
"symbols": [
{
"name": "stubFolderStore",
"kind": "class",
"startLine": 20,
"endLine": 26,
"tokens": 39
},
{
"name": "ListFolders",
"kind": "method",
"startLine": 28,
"endLine": 30,
"tokens": 35
},
{
"name": "CreateFolder",
"kind": "method",
"startLine": 32,
"endLine": 39,
"tokens": 67
},
{
"name": "RenameFolder",
"kind": "method",
"startLine": 41,
"endLine": 47,
"tokens": 52
},
{
"name": "DeleteFolder",
"kind": "method",
"startLine": 49,
"endLine": 55,
"tokens": 49
},
{
"name": "newFolders",
"kind": "fn",
"startLine": 57,
"endLine": 59,
"tokens": 44
},
{
"name": "standardFolders",
"kind": "fn",
"startLine": 61,
"endLine": 68,
"tokens": 69
},
{
"name": "TestCreatesAFolder",
"kind": "fn",
"startLine": 70,
"endLine": 78,
"tokens": 97
},
{
"name": "TestFolderNameIsTrimmed",
"kind": "fn",
"startLine": 80,
"endLine": 88,
"tokens": 100
},
{
"name": "TestRefusesAnEmptyName",
"kind": "fn",
"startLine": 90,
"endLine": 97,
"tokens": 96
},
{
"name": "TestRefusesADuplicateName",
"kind": "fn",
"startLine": 101,
"endLine": 109,
"tokens": 114
},
{
"name": "TestDuplicateCheckIgnoresCase",
"kind": "fn",
"startLine": 111,
"endLine": 116,
"tokens": 89
},
{
"name": "TestRefusesToTouchTheStandardFolders",
"kind": "fn",
"startLine": 121,
"endLine": 136,
"tokens": 210
},
{
"name": "TestRefusesToTouchTheReportsFolder",
"kind": "fn",
"startLine": 140,
"endLine": 145,
"tokens": 91
},
{
"name": "TestRenamesACustomFolder",
"kind": "fn",
"startLine": 147,
"endLine": 155,
"tokens": 119
},
{
"name": "TestRenameRefusesAnExistingName",
"kind": "fn",
"startLine": 157,
"endLine": 163,
"tokens": 106
},
{
"name": "TestDeletesACustomFolder",
"kind": "fn",
"startLine": 165,
"endLine": 173,
"tokens": 112
},
{
"name": "TestDeletingAFolderThatIsNotThereIsReported",
"kind": "fn",
"startLine": 175,
"endLine": 180,
"tokens": 81
},
{
"name": "TestRefusesADelimiterInTheName",
"kind": "fn",
"startLine": 184,
"endLine": 191,
"tokens": 99
},
{
"name": "TestRefusesAnAbsurdlyLongName",
"kind": "fn",
"startLine": 193,
"endLine": 199,
"tokens": 82
},
{
"name": "TestAcceptsAccentedNames",
"kind": "fn",
"startLine": 202,
"endLine": 207,
"tokens": 81
}
],
"symbolSource": "ts",
"skeleton": "type stubFolderStore struct {\nfunc (s *stubFolderStore) ListFolders(context.Context, string) ([]port.WebmailFolder, error) {\nfunc (s *stubFolderStore) CreateFolder(_ context.Context, _, name string) error {\nfunc (s *stubFolderStore) RenameFolder(_ context.Context, _, from, to string) error {\nfunc (s *stubFolderStore) DeleteFolder(_ context.Context, _, name string) error {\nfunc newFolders(store *stubFolderStore) *ManageFoldersUseCase {\nfunc standardFolders() []port.WebmailFolder {\nfunc TestCreatesAFolder(t *testing.T) {\nfunc TestFolderNameIsTrimmed(t *testing.T) {\nfunc TestRefusesAnEmptyName(t *testing.T) {\nfunc TestRefusesADuplicateName(t *testing.T) {\nfunc TestDuplicateCheckIgnoresCase(t *testing.T) {\nfunc TestRefusesToTouchTheStandardFolders(t *testing.T) {\nfunc TestRefusesToTouchTheReportsFolder(t *testing.T) {\nfunc TestRenamesACustomFolder(t *testing.T) {\nfunc TestRenameRefusesAnExistingName(t *testing.T) {\nfunc TestDeletesACustomFolder(t *testing.T) {\nfunc TestDeletingAFolderThatIsNotThereIsReported(t *testing.T) {\nfunc TestRefusesADelimiterInTheName(t *testing.T) {\nfunc TestRefusesAnAbsurdlyLongName(t *testing.T) {\nfunc TestAcceptsAccentedNames(t *testing.T) {",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/manage_folders.go": {
"description": "ManageFoldersUseCase (52 fields); methods: Create, Rename, Delete",
"tokens": 1304,
"hash": "b46de406e4735cf9",
"size": 4564,
"mtimeMs": 1787416262306.497,
"updatedAt": "2026-10-06T11:06:20.864Z",
"source": "scan",
"symbols": [
{
"name": "ManageFoldersUseCase",
"kind": "class",
"startLine": 16,
"endLine": 19,
"tokens": 27
},
{
"name": "NewManageFoldersUseCase",
"kind": "fn",
"startLine": 21,
"endLine": 23,
"tokens": 51
},
{
"name": "Create",
"kind": "method",
"startLine": 47,
"endLine": 65,
"tokens": 137
},
{
"name": "Rename",
"kind": "method",
"startLine": 67,
"endLine": 92,
"tokens": 188
},
{
"name": "Delete",
"kind": "method",
"startLine": 98,
"endLine": 116,
"tokens": 140
},
{
"name": "mailbox",
"kind": "method",
"startLine": 118,
"endLine": 124,
"tokens": 67
},
{
"name": "findFolder",
"kind": "fn",
"startLine": 126,
"endLine": 133,
"tokens": 63
},
{
"name": "validateFolderName",
"kind": "fn",
"startLine": 136,
"endLine": 158,
"tokens": 184
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/managesieve_session_test.go": {
"description": "fakeSieveRepository (27 fields); methods: GetScript, PutScript, ListScripts, SetActiveScript",
"tokens": 1114,
"hash": "f93f3de9bc29d4f1",
"size": 3899,
"mtimeMs": 1785635482522.9756,
"updatedAt": "2026-10-06T11:06:20.864Z",
"source": "scan",
"symbols": [
{
"name": "fakeSieveRepository",
"kind": "class",
"startLine": 12,
"endLine": 14,
"tokens": 35
},
{
"name": "newFakeSieveRepository",
"kind": "fn",
"startLine": 16,
"endLine": 20,
"tokens": 43
},
{
"name": "GetScript",
"kind": "method",
"startLine": 22,
"endLine": 32,
"tokens": 72
},
{
"name": "PutScript",
"kind": "method",
"startLine": 34,
"endLine": 53,
"tokens": 140
},
{
"name": "ListScripts",
"kind": "method",
"startLine": 55,
"endLine": 65,
"tokens": 82
},
{
"name": "SetActiveScript",
"kind": "method",
"startLine": 67,
"endLine": 77,
"tokens": 69
},
{
"name": "DeleteScript",
"kind": "method",
"startLine": 79,
"endLine": 86,
"tokens": 53
},
{
"name": "RenameScript",
"kind": "method",
"startLine": 88,
"endLine": 98,
"tokens": 74
},
{
"name": "TestManageSieveSessionUseCase_Put_Get_List_SetActive_Delete",
"kind": "fn",
"startLine": 100,
"endLine": 150,
"tokens": 506
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/managesieve_session.go": {
"description": "ManageSieveSessionUseCase (45 fields); methods: Login, PutScript, GetScript, ListScripts",
"tokens": 1011,
"hash": "961cc33ac2e226bc",
"size": 3536,
"mtimeMs": 1785635482522.9756,
"updatedAt": "2026-10-06T11:06:20.864Z",
"source": "scan",
"symbols": [
{
"name": "ManageSieveSessionUseCase",
"kind": "class",
"startLine": 23,
"endLine": 26,
"tokens": 30
},
{
"name": "NewManageSieveSessionUseCase",
"kind": "fn",
"startLine": 28,
"endLine": 33,
"tokens": 61
},
{
"name": "Login",
"kind": "method",
"startLine": 35,
"endLine": 48,
"tokens": 126
},
{
"name": "PutScript",
"kind": "method",
"startLine": 50,
"endLine": 58,
"tokens": 106
},
{
"name": "GetScript",
"kind": "method",
"startLine": 60,
"endLine": 69,
"tokens": 84
},
{
"name": "ListScripts",
"kind": "method",
"startLine": 71,
"endLine": 73,
"tokens": 50
},
{
"name": "SetActive",
"kind": "method",
"startLine": 75,
"endLine": 86,
"tokens": 93
},
{
"name": "DeleteScript",
"kind": "method",
"startLine": 88,
"endLine": 100,
"tokens": 101
},
{
"name": "RenameScript",
"kind": "method",
"startLine": 102,
"endLine": 120,
"tokens": 139
},
{
"name": "CheckScript",
"kind": "method",
"startLine": 122,
"endLine": 127,
"tokens": 61
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/domain/entity/dkim_key_pair_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/message_headers_test.go": {
"description": "TestExtractMessageHeaders_ReadsSubjectSenderAndSnippet, TestExtractMessageHeaders_DecodesEncodedWords, TestExtractMessageHeaders_FlagsMultipartMixe...",
"tokens": 1604,
"hash": "5a1a9c8fd01baac6",
"size": 5612,
"mtimeMs": 1787584828278.8896,
"updatedAt": "2026-10-06T11:06:20.865Z",
"source": "scan",
"symbols": [
{
"name": "TestExtractMessageHeaders_ReadsSubjectSenderAndSnippet",
"kind": "fn",
"startLine": 5,
"endLine": 31,
"tokens": 260
},
{
"name": "TestExtractMessageHeaders_DecodesEncodedWords",
"kind": "fn",
"startLine": 35,
"endLine": 48,
"tokens": 137
},
{
"name": "TestExtractMessageHeaders_FlagsMultipartMixedAsAttachment",
"kind": "fn",
"startLine": 50,
"endLine": 63,
"tokens": 201
},
{
"name": "TestExtractMessageHeaders_SurvivesGarbage",
"kind": "fn",
"startLine": 67,
"endLine": 72,
"tokens": 78
},
{
"name": "TestExtractMessageHeaders_TruncatesWithoutBreakingUTF8",
"kind": "fn",
"startLine": 74,
"endLine": 88,
"tokens": 124
},
{
"name": "TestExtractMessageHeaders_SinglePartAttachmentCounts",
"kind": "fn",
"startLine": 95,
"endLine": 110,
"tokens": 177
},
{
"name": "TestExtractMessageHeaders_AttachmentDetection",
"kind": "fn",
"startLine": 112,
"endLine": 144,
"tokens": 434
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/application/usecase/message_headers.go": {
"description": "MessageHeaders (33 fields)",
"tokens": 1388,
"hash": "81ae8a3cc636e2c6",
"size": 4858,
"mtimeMs": 1787584848508.4407,
"updatedAt": "2026-10-06T11:06:20.865Z",
"source": "scan",
"symbols": [
{
"name": "MessageHeaders",
"kind": "class",
"startLine": 18,
"endLine": 24,
"tokens": 43
},
{
"name": "decodeHeader",
"kind": "fn",
"startLine": 35,
"endLine": 41,
"tokens": 41
},
{
"name": "ExtractMessageHeaders",
"kind": "fn",
"startLine": 48,
"endLine": 80,
"tokens": 308
},
{
"name": "carriesAttachment",
"kind": "fn",
"startLine": 90,
"endLine": 117,
"tokens": 285
},
{
"name": "buildSnippet",
"kind": "fn",
"startLine": 120,
"endLine": 138,
"tokens": 166
},
{
"name": "truncateUTF8",
"kind": "fn",
"startLine": 142,
"endLine": 151,
"tokens": 53
}
],
"symbolSource": "ts",
"imports": [
"services/webmail/src/app/(user)/user/mail/[folder]/page.tsx"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/message_render_test.go": {
"description": "TestRenderMessage_ExtractsHeadersAndText, TestRenderMessage_LeavesDateEmptyWhenHeaderAbsent, TestRenderMessage_PrefersPlainTextAndListsAttachments,...",
"tokens": 1976,
"hash": "c0e29f8c7f65037a",
"size": 6916,
"mtimeMs": 1787075616725.4102,
"updatedAt": "2026-10-06T11:06:20.865Z",
"source": "scan",
"symbols": [
{
"name": "TestRenderMessage_ExtractsHeadersAndText",
"kind": "fn",
"startLine": 10,
"endLine": 27,
"tokens": 161
},
{
"name": "TestRenderMessage_LeavesDateEmptyWhenHeaderAbsent",
"kind": "fn",
"startLine": 31,
"endLine": 36,
"tokens": 74
},
{
"name": "TestRenderMessage_PrefersPlainTextAndListsAttachments",
"kind": "fn",
"startLine": 38,
"endLine": 56,
"tokens": 212
},
{
"name": "TestRenderMessage_FallsBackToRawOnParseFailure",
"kind": "fn",
"startLine": 59,
"endLine": 64,
"tokens": 60
},
{
"name": "TestRenderMessage_ReturnsInlineImagesKeyedByContentID",
"kind": "fn",
"startLine": 70,
"endLine": 90,
"tokens": 248
},
{
"name": "TestRenderMessage_DoesNotListInlineImagesAsAttachments",
"kind": "fn",
"startLine": 94,
"endLine": 105,
"tokens": 164
},
{
"name": "TestRenderMessage_ListsNonImageInlinePartsAsAttachments",
"kind": "fn",
"startLine": 110,
"endLine": 121,
"tokens": 162
},
{
"name": "TestRenderMessage_SkipsOversizedInlineImages",
"kind": "fn",
"startLine": 125,
"endLine": 138,
"tokens": 166
},
{
"name": "TestRenderMessage_RefusesToInlineSvg",
"kind": "fn",
"startLine": 142,
"endLine": 151,
"tokens": 137
},
{
"name": "TestExtractAttachment_FindsInlineNamedParts",
"kind": "fn",
"startLine": 156,
"endLine": 171,
"tokens": 182
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/application/usecase/message_render.go": {
"description": "RenderedMessage (43 fields)",
"tokens": 2160,
"hash": "f4fa5b39a52cf212",
"size": 7560,
"mtimeMs": 1787075616725.3005,
"updatedAt": "2026-10-06T11:06:20.865Z",
"source": "scan",
"symbols": [
{
"name": "RenderedMessage",
"kind": "class",
"startLine": 27,
"endLine": 46,
"tokens": 249
},
{
"name": "RenderMessage",
"kind": "fn",
"startLine": 55,
"endLine": 91,
"tokens": 319
},
{
"name": "collectParts",
"kind": "fn",
"startLine": 95,
"endLine": 148,
"tokens": 450
},
{
"name": "isInlineImageCandidate",
"kind": "fn",
"startLine": 154,
"endLine": 162,
"tokens": 81
},
{
"name": "collectInlineImage",
"kind": "fn",
"startLine": 168,
"endLine": 184,
"tokens": 187
},
{
"name": "ExtractAttachment",
"kind": "fn",
"startLine": 187,
"endLine": 216,
"tokens": 243
}
],
"symbolSource": "ts",
"skeleton": "type RenderedMessage struct {\nfunc RenderMessage(raw []byte, uid uint32) RenderedMessage {\nfunc collectParts(entity *message.Entity, out *RenderedMessage) {\nfunc isInlineImageCandidate(disposition, mediaType, contentID string) bool {\nfunc collectInlineImage(entity *message.Entity, mediaType string, out *RenderedMessage) bool {\nfunc ExtractAttachment(entity *message.Entity, targetName string) ([]byte, string) {",
"imports": [
"services/webmail/src/app/(user)/user/mail/[folder]/page.tsx"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/outbound_dsn_test.go": {
"description": "TestOutboundWorker_PermanentSmtpFailureBouncesImmediately, TestOutboundWorker_TemporarySmtpFailureIsDeferred, TestOutboundWorker_DsnToFanOutSenderD...",
"tokens": 1480,
"hash": "cdca018b31782d2d",
"size": 5178,
"mtimeMs": 1785712539753.1628,
"updatedAt": "2026-10-06T11:06:20.866Z",
"source": "scan",
"symbols": [
{
"name": "startFakeMX",
"kind": "fn",
"startLine": 19,
"endLine": 61,
"tokens": 291
},
{
"name": "newTestJob",
"kind": "fn",
"startLine": 63,
"endLine": 75,
"tokens": 119
},
{
"name": "TestOutboundWorker_PermanentSmtpFailureBouncesImmediately",
"kind": "fn",
"startLine": 79,
"endLine": 103,
"tokens": 218
},
{
"name": "TestOutboundWorker_TemporarySmtpFailureIsDeferred",
"kind": "fn",
"startLine": 106,
"endLine": 130,
"tokens": 215
},
{
"name": "TestOutboundWorker_DsnToFanOutSenderDeliversToEveryTarget",
"kind": "fn",
"startLine": 136,
"endLine": 170,
"tokens": 388
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/domain/entity/dkim_key_pair_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/outbound_local_delivery_test.go": {
"description": "countingMXResolver (9 fields); methods: LookupMX",
"tokens": 1114,
"hash": "a5f716848dd365b6",
"size": 3896,
"mtimeMs": 1785712472154.4202,
"updatedAt": "2026-10-06T11:06:20.866Z",
"source": "scan",
"symbols": [
{
"name": "countingMXResolver",
"kind": "class",
"startLine": 15,
"endLine": 15,
"tokens": 13
},
{
"name": "LookupMX",
"kind": "method",
"startLine": 17,
"endLine": 22,
"tokens": 75
},
{
"name": "newLocalDeliveryJob",
"kind": "fn",
"startLine": 24,
"endLine": 37,
"tokens": 126
},
{
"name": "TestLocalRecipientIsDeliveredWithoutLeavingTheHost",
"kind": "fn",
"startLine": 44,
"endLine": 82,
"tokens": 409
},
{
"name": "TestRemoteRecipientStillGoesOutOverSmtp",
"kind": "fn",
"startLine": 86,
"endLine": 114,
"tokens": 281
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/domain/entity/dkim_key_pair_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/outbound_tls_policy_test.go": {
"description": "stubPolicyResolver (29 fields); methods: Resolve",
"tokens": 1582,
"hash": "2238831b4f9cb720",
"size": 5537,
"mtimeMs": 1785635482522.9756,
"updatedAt": "2026-10-06T11:06:20.866Z",
"source": "scan",
"symbols": [
{
"name": "startPlaintextMX",
"kind": "fn",
"startLine": 17,
"endLine": 70,
"tokens": 364
},
{
"name": "stubPolicyResolver",
"kind": "class",
"startLine": 72,
"endLine": 75,
"tokens": 21
},
{
"name": "Resolve",
"kind": "method",
"startLine": 77,
"endLine": 79,
"tokens": 37
},
{
"name": "runWorkerWithPolicy",
"kind": "fn",
"startLine": 81,
"endLine": 99,
"tokens": 161
},
{
"name": "TestOutboundWorker_DefersRatherThanDowngradeUnderEnforcePolicy",
"kind": "fn",
"startLine": 104,
"endLine": 123,
"tokens": 189
},
{
"name": "TestOutboundWorker_DeliversOpportunisticallyWithoutPolicy",
"kind": "fn",
"startLine": 127,
"endLine": 140,
"tokens": 140
},
{
"name": "TestOutboundWorker_RefusesMxOutsidePolicy",
"kind": "fn",
"startLine": 144,
"endLine": 157,
"tokens": 142
},
{
"name": "TestOutboundWorker_DefersWhenPolicyCannotBeResolved",
"kind": "fn",
"startLine": 161,
"endLine": 174,
"tokens": 136
},
{
"name": "TestOutboundWorker_TestingModePolicyStillDelivers",
"kind": "fn",
"startLine": 177,
"endLine": 190,
"tokens": 148
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/domain/entity/dkim_key_pair_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/outbound_worker_test.go": {
"description": "fakeOutboundRepo (18 fields); methods: Enqueue, FetchNextReady, CountRecipientsSince, UpdateJob",
"tokens": 744,
"hash": "5af9492821e37c4c",
"size": 2601,
"mtimeMs": 1785635482522.9756,
"updatedAt": "2026-10-06T11:06:20.866Z",
"source": "scan",
"symbols": [
{
"name": "fakeOutboundRepo",
"kind": "class",
"startLine": 14,
"endLine": 16,
"tokens": 18
},
{
"name": "Enqueue",
"kind": "method",
"startLine": 18,
"endLine": 21,
"tokens": 38
},
{
"name": "FetchNextReady",
"kind": "method",
"startLine": 23,
"endLine": 31,
"tokens": 93
},
{
"name": "CountRecipientsSince",
"kind": "method",
"startLine": 33,
"endLine": 35,
"tokens": 36
},
{
"name": "UpdateJob",
"kind": "method",
"startLine": 37,
"endLine": 45,
"tokens": 54
},
{
"name": "fakeMXResolver",
"kind": "class",
"startLine": 47,
"endLine": 49,
"tokens": 14
},
{
"name": "LookupMX",
"kind": "method",
"startLine": 51,
"endLine": 53,
"tokens": 30
},
{
"name": "fakeBlobReader",
"kind": "class",
"startLine": 55,
"endLine": 57,
"tokens": 14
},
{
"name": "ReadByID",
"kind": "method",
"startLine": 59,
"endLine": 61,
"tokens": 31
},
{
"name": "TestOutboundWorker_DeferralAndPermanentFailure",
"kind": "fn",
"startLine": 63,
"endLine": 96,
"tokens": 374
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/domain/entity/dkim_key_pair_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/outbound_worker.go": {
"description": "OutboundWorkerUseCase (72 fields); methods: SetRelay, SetPolicyResolver, ProcessBatch",
"tokens": 4121,
"hash": "fac5ed14ccd2df81",
"size": 14423,
"mtimeMs": 1785712492462.385,
"updatedAt": "2026-10-06T11:06:20.866Z",
"source": "scan",
"symbols": [
{
"name": "OutboundWorkerUseCase",
"kind": "class",
"startLine": 27,
"endLine": 36,
"tokens": 90
},
{
"name": "SetRelay",
"kind": "method",
"startLine": 41,
"endLine": 43,
"tokens": 23
},
{
"name": "SetPolicyResolver",
"kind": "method",
"startLine": 49,
"endLine": 51,
"tokens": 33
},
{
"name": "NewOutboundWorkerUseCase",
"kind": "fn",
"startLine": 53,
"endLine": 72,
"tokens": 148
},
{
"name": "ProcessBatch",
"kind": "method",
"startLine": 74,
"endLine": 90,
"tokens": 114
},
{
"name": "processSingleJob",
"kind": "method",
"startLine": 92,
"endLine": 184,
"tokens": 867
},
{
"name": "finishFailed",
"kind": "method",
"startLine": 187,
"endLine": 212,
"tokens": 261
},
{
"name": "smtpReplyCode",
"kind": "fn",
"startLine": 217,
"endLine": 223,
"tokens": 39
},
{
"name": "handleFailure",
"kind": "method",
"startLine": 225,
"endLine": 248,
"tokens": 215
},
{
"name": "sendDsn",
"kind": "method",
"startLine": 250,
"endLine": 286,
"tokens": 343
},
{
"name": "resolvePolicy",
"kind": "method",
"startLine": 290,
"endLine": 295,
"tokens": 79
},
{
"name": "tlsConfigFor",
"kind": "fn",
"startLine": 304,
"endLine": 341,
"tokens": 370
},
{
"name": "deliverToMX",
"kind": "method",
"startLine": 343,
"endLine": 404,
"tokens": 561
},
{
"name": "deliverLocally",
"kind": "method",
"startLine": 416,
"endLine": 445,
"tokens": 256
}
],
"symbolSource": "ts",
"skeleton": "type OutboundWorkerUseCase struct {\nfunc (w *OutboundWorkerUseCase) SetRelay(relay RelayConfig) {\nfunc (w *OutboundWorkerUseCase) SetPolicyResolver(resolver port.TLSPolicyResolver) {\nfunc NewOutboundWorkerUseCase(\nfunc (w *OutboundWorkerUseCase) ProcessBatch(ctx context.Context, workerID string, limit int) (int, error) {\nfunc (w *OutboundWorkerUseCase) processSingleJob(ctx context.Context, job *entity.OutboundJob) {\nfunc (w *OutboundWorkerUseCase) finishFailed(ctx context.Context, job *entity.OutboundJob, lastErr error) {\nfunc smtpReplyCode(err error) int {\nfunc (w *OutboundWorkerUseCase) handleFailure(ctx context.Context, job *entity.OutboundJob, errStr string, isPermanent bool) {\nfunc (w *OutboundWorkerUseCase) sendDsn(ctx context.Context, action valueobject.DsnAction, job *entity.OutboundJob, reason string) {\nfunc (w *OutboundWorkerUseCase) resolvePolicy(ctx context.Context, destinationDomain, mxHost string) (entity.TLSPolicy, error) {\nfunc tlsConfigFor(mxHost string, policy entity.TLSPolicy) *tls.Config {\nfunc (w *OutboundWorkerUseCase) deliverToMX(ctx context.Context, mxHost string, from string, to string, payload []byte, policy entity.TLSPolicy) error {\nfunc (w *OutboundWorkerUseCase) deliverLocally(",
"imports": [
"services/protocols/internal/infrastructure/tls/acme_cert_watcher_test.go",
"services/protocols/internal/presentation/smtp/backend_test.go",
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/domain/entity/dkim_key_pair_test.go",
"services/protocols/internal/domain/valueobject/autoconfig_xml_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/outbox_relay.go": {
"description": "OutboxRelay (16 fields); methods: Run, PublishBatch",
"tokens": 551,
"hash": "07e3450f932db268",
"size": 1927,
"mtimeMs": 1785689161518.2874,
"updatedAt": "2026-10-06T11:06:20.866Z",
"source": "scan",
"symbols": [
{
"name": "OutboxRelay",
"kind": "class",
"startLine": 19,
"endLine": 24,
"tokens": 38
},
{
"name": "NewOutboxRelay",
"kind": "fn",
"startLine": 26,
"endLine": 28,
"tokens": 54
},
{
"name": "Run",
"kind": "method",
"startLine": 31,
"endLine": 45,
"tokens": 80
},
{
"name": "PublishBatch",
"kind": "method",
"startLine": 48,
"endLine": 70,
"tokens": 186
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/pop3_session_test.go": {
"description": "fakeMessageQueryRepository (12 fields); methods: ListMessages",
"tokens": 706,
"hash": "334558608e8074a1",
"size": 2468,
"mtimeMs": 1785635482522.9756,
"updatedAt": "2026-10-06T11:06:20.866Z",
"source": "scan",
"symbols": [
{
"name": "TestPop3SessionUseCase_Login_SucceedsForCorrectPassword",
"kind": "fn",
"startLine": 12,
"endLine": 26,
"tokens": 157
},
{
"name": "TestPop3SessionUseCase_Login_FailsForWrongPassword",
"kind": "fn",
"startLine": 28,
"endLine": 38,
"tokens": 128
},
{
"name": "fakeMessageQueryRepository",
"kind": "class",
"startLine": 40,
"endLine": 42,
"tokens": 21
},
{
"name": "ListMessages",
"kind": "method",
"startLine": 44,
"endLine": 46,
"tokens": 39
},
{
"name": "TestPop3SessionUseCase_GetInbox_ReturnsFolderAndMessages",
"kind": "fn",
"startLine": 48,
"endLine": 64,
"tokens": 191
},
{
"name": "TestPop3SessionUseCase_ExpungeMessages_DelegatesToRepo",
"kind": "fn",
"startLine": 66,
"endLine": 76,
"tokens": 129
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/pop3_session.go": {
"description": "Pop3SessionUseCase (31 fields); methods: Login, GetInbox, ReadBlob, ExpungeMessages",
"tokens": 690,
"hash": "c9f8fd5a48cb11e8",
"size": 2413,
"mtimeMs": 1785635482522.9756,
"updatedAt": "2026-10-06T11:06:20.866Z",
"source": "scan",
"symbols": [
{
"name": "Pop3SessionUseCase",
"kind": "class",
"startLine": 13,
"endLine": 19,
"tokens": 62
},
{
"name": "NewPop3SessionUseCase",
"kind": "fn",
"startLine": 21,
"endLine": 35,
"tokens": 116
},
{
"name": "Login",
"kind": "method",
"startLine": 37,
"endLine": 53,
"tokens": 147
},
{
"name": "GetInbox",
"kind": "method",
"startLine": 55,
"endLine": 68,
"tokens": 160
},
{
"name": "ReadBlob",
"kind": "method",
"startLine": 70,
"endLine": 76,
"tokens": 72
},
{
"name": "ExpungeMessages",
"kind": "method",
"startLine": 78,
"endLine": 86,
"tokens": 86
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/preflight_test.go": {
"description": "TestPreflight_HealthyDeploymentDoesNotBlock, TestPreflight_BlockedPort25IsCriticalAndSuggestsSmarthost, TestPreflight_SmarthostSkipsPort25Check, Te...",
"tokens": 2796,
"hash": "b1d4b2e8c4674156",
"size": 9785,
"mtimeMs": 1785635482522.9756,
"updatedAt": "2026-10-06T11:06:20.866Z",
"source": "scan",
"symbols": [
{
"name": "healthyDeps",
"kind": "fn",
"startLine": 13,
"endLine": 26,
"tokens": 248
},
{
"name": "healthyInput",
"kind": "fn",
"startLine": 28,
"endLine": 35,
"tokens": 58
},
{
"name": "findCheck",
"kind": "fn",
"startLine": 37,
"endLine": 46,
"tokens": 86
},
{
"name": "TestPreflight_HealthyDeploymentDoesNotBlock",
"kind": "fn",
"startLine": 48,
"endLine": 54,
"tokens": 74
},
{
"name": "TestPreflight_BlockedPort25IsCriticalAndSuggestsSmarthost",
"kind": "fn",
"startLine": 57,
"endLine": 73,
"tokens": 191
},
{
"name": "TestPreflight_SmarthostSkipsPort25Check",
"kind": "fn",
"startLine": 77,
"endLine": 92,
"tokens": 153
},
{
"name": "TestPreflight_MissingPtrIsCriticalAndNamesTheProvider",
"kind": "fn",
"startLine": 96,
"endLine": 109,
"tokens": 170
},
{
"name": "TestPreflight_ForwardConfirmedReverseDnsMismatchIsCritical",
"kind": "fn",
"startLine": 111,
"endLine": 120,
"tokens": 133
},
{
"name": "TestPreflight_ListedIpIsCriticalAndNamesTheList",
"kind": "fn",
"startLine": 122,
"endLine": 140,
"tokens": 203
},
{
"name": "TestPreflight_MissingCertificateExplainsTheTraefikRouter",
"kind": "fn",
"startLine": 144,
"endLine": 157,
"tokens": 161
},
{
"name": "TestPreflight_DaneUnderTraefikModeIsRefused",
"kind": "fn",
"startLine": 161,
"endLine": 175,
"tokens": 141
},
{
"name": "TestPreflight_DaneUnderAcmeModePasses",
"kind": "fn",
"startLine": 177,
"endLine": 187,
"tokens": 104
},
{
"name": "TestPreflight_ClockDriftIsHighNotCritical",
"kind": "fn",
"startLine": 191,
"endLine": 206,
"tokens": 184
},
{
"name": "TestPreflight_LowDiskIsMediumSeverity",
"kind": "fn",
"startLine": 208,
"endLine": 218,
"tokens": 120
},
{
"name": "TestPreflight_IPv6WithoutPtrFailsButDisabledIPv6Passes",
"kind": "fn",
"startLine": 222,
"endLine": 243,
"tokens": 234
},
{
"name": "TestPreflight_MissingProbesAreSkippedNotPassed",
"kind": "fn",
"startLine": 246,
"endLine": 257,
"tokens": 129
},
{
"name": "TestReverseIPv4",
"kind": "fn",
"startLine": 259,
"endLine": 266,
"tokens": 79
}
],
"symbolSource": "ts",
"skeleton": "func healthyDeps() PreflightDeps {\nfunc healthyInput() PreflightInput {\nfunc findCheck(t *testing.T, report PreflightReport, substring string) CheckResult {\nfunc TestPreflight_HealthyDeploymentDoesNotBlock(t *testing.T) {\nfunc TestPreflight_BlockedPort25IsCriticalAndSuggestsSmarthost(t *testing.T) {\nfunc TestPreflight_SmarthostSkipsPort25Check(t *testing.T) {\nfunc TestPreflight_MissingPtrIsCriticalAndNamesTheProvider(t *testing.T) {\nfunc TestPreflight_ForwardConfirmedReverseDnsMismatchIsCritical(t *testing.T) {\nfunc TestPreflight_ListedIpIsCriticalAndNamesTheList(t *testing.T) {\nfunc TestPreflight_MissingCertificateExplainsTheTraefikRouter(t *testing.T) {\nfunc TestPreflight_DaneUnderTraefikModeIsRefused(t *testing.T) {\nfunc TestPreflight_DaneUnderAcmeModePasses(t *testing.T) {\nfunc TestPreflight_ClockDriftIsHighNotCritical(t *testing.T) {\nfunc TestPreflight_LowDiskIsMediumSeverity(t *testing.T) {\nfunc TestPreflight_IPv6WithoutPtrFailsButDisabledIPv6Passes(t *testing.T) {\nfunc TestPreflight_MissingProbesAreSkippedNotPassed(t *testing.T) {\nfunc TestReverseIPv4(t *testing.T) {",
"importance": 0.0144
},
"services/protocols/internal/application/usecase/preflight.go": {
"description": "CheckResult (112 fields); methods: Blocking, String, Execute",
"tokens": 3892,
"hash": "d9b80026554a1c73",
"size": 13621,
"mtimeMs": 1785635482522.9756,
"updatedAt": "2026-10-06T11:06:20.867Z",
"source": "scan",
"symbols": [
{
"name": "Severity",
"kind": "class",
"startLine": 13,
"endLine": 13,
"tokens": 6
},
{
"name": "CheckStatus",
"kind": "class",
"startLine": 22,
"endLine": 22,
"tokens": 7
},
{
"name": "CheckResult",
"kind": "class",
"startLine": 31,
"endLine": 40,
"tokens": 94
},
{
"name": "PreflightReport",
"kind": "class",
"startLine": 43,
"endLine": 45,
"tokens": 16
},
{
"name": "Blocking",
"kind": "method",
"startLine": 49,
"endLine": 56,
"tokens": 55
},
{
"name": "String",
"kind": "method",
"startLine": 58,
"endLine": 71,
"tokens": 127
},
{
"name": "PreflightDeps",
"kind": "class",
"startLine": 75,
"endLine": 94,
"tokens": 308
},
{
"name": "PreflightInput",
"kind": "class",
"startLine": 97,
"endLine": 105,
"tokens": 56
},
{
"name": "PreflightUseCase",
"kind": "class",
"startLine": 108,
"endLine": 110,
"tokens": 15
},
{
"name": "NewPreflightUseCase",
"kind": "fn",
"startLine": 112,
"endLine": 114,
"tokens": 30
},
{
"name": "Execute",
"kind": "method",
"startLine": 128,
"endLine": 144,
"tokens": 169
},
{
"name": "checkPort25",
"kind": "method",
"startLine": 146,
"endLine": 167,
"tokens": 244
},
{
"name": "checkReverseDNS",
"kind": "method",
"startLine": 169,
"endLine": 196,
"tokens": 318
},
{
"name": "checkForwardConfirmedReverseDNS",
"kind": "method",
"startLine": 198,
"endLine": 225,
"tokens": 303
},
{
"name": "checkBlocklists",
"kind": "method",
"startLine": 227,
"endLine": 261,
"tokens": 317
},
{
"name": "checkCertificate",
"kind": "method",
"startLine": 263,
"endLine": 278,
"tokens": 184
},
{
"name": "checkDaneRequiresAcmeMode",
"kind": "method",
"startLine": 280,
"endLine": 298,
"tokens": 216
},
{
"name": "checkMtaStsEndpoint",
"kind": "method",
"startLine": 300,
"endLine": 314,
"tokens": 209
},
{
"name": "checkClockDrift",
"kind": "method",
"startLine": 316,
"endLine": 341,
"tokens": 239
},
{
"name": "checkDiskSpace",
"kind": "method",
"startLine": 343,
"endLine": 362,
"tokens": 182
},
{
"name": "checkIPv6Coherence",
"kind": "method",
"startLine": 364,
"endLine": 383,
"tokens": 211
},
{
"name": "passed",
"kind": "fn",
"startLine": 385,
"endLine": 387,
"tokens": 47
},
{
"name": "skipped",
"kind": "fn",
"startLine": 389,
"endLine": 394,
"tokens": 56
},
{
"name": "reverseIPv4",
"kind": "fn",
"startLine": 398,
"endLine": 404,
"tokens": 49
}
],
"symbolSource": "ts",
"skeleton": "type Severity string\ntype CheckStatus string\ntype CheckResult struct {\ntype PreflightReport struct {\nfunc (r PreflightReport) Blocking() bool {\nfunc (r PreflightReport) String() string {\ntype PreflightDeps struct {\ntype PreflightInput struct {\ntype PreflightUseCase struct {\nfunc NewPreflightUseCase(deps PreflightDeps) *PreflightUseCase {\nfunc (uc *PreflightUseCase) Execute(ctx context.Context, input PreflightInput) PreflightReport {\nfunc (uc *PreflightUseCase) checkPort25(ctx context.Context, input PreflightInput) CheckResult {\nfunc (uc *PreflightUseCase) checkReverseDNS(ctx context.Context, input PreflightInput) CheckResult {\nfunc (uc *PreflightUseCase) checkForwardConfirmedReverseDNS(ctx context.Context, input PreflightInput) CheckResult {\nfunc (uc *PreflightUseCase) checkBlocklists(ctx context.Context, input PreflightInput) CheckResult {\nfunc (uc *PreflightUseCase) checkCertificate(input PreflightInput) CheckResult {\nfunc (uc *PreflightUseCase) checkDaneRequiresAcmeMode(input PreflightInput) CheckResult {\nfunc (uc *PreflightUseCase) checkMtaStsEndpoint(ctx context.Context, input PreflightInput) CheckResult {\nfunc (uc *PreflightUseCase) checkClockDrift(ctx context.Context) CheckResult {\nfunc (uc *PreflightUseCase) checkDiskSpace() CheckResult {\nfunc (uc *PreflightUseCase) checkIPv6Coherence(ctx context.Context, input PreflightInput) CheckResult {",
"importance": 0.0144
},
"services/protocols/internal/application/usecase/process_inbound_email_test.go": {
"description": "fakeMailboxRepository (36 fields); methods: FindActiveByAddress, ResolveDeliveryTargets, FindActiveByAddress, ResolveDeliveryTargets",
"tokens": 2332,
"hash": "2bbdeba5c3f4eb22",
"size": 8162,
"mtimeMs": 1785712539733.18,
"updatedAt": "2026-10-06T11:06:20.867Z",
"source": "scan",
"symbols": [
{
"name": "fakeMailboxRepository",
"kind": "class",
"startLine": 14,
"endLine": 16,
"tokens": 23
},
{
"name": "FindActiveByAddress",
"kind": "method",
"startLine": 18,
"endLine": 24,
"tokens": 58
},
{
"name": "ResolveDeliveryTargets",
"kind": "method",
"startLine": 26,
"endLine": 32,
"tokens": 70
},
{
"name": "TestUseCase_ResolveRecipient_ReturnsRecordForActiveMailbox",
"kind": "fn",
"startLine": 34,
"endLine": 48,
"tokens": 173
},
{
"name": "TestUseCase_ResolveRecipient_ReturnsErrRecipientNotFoundForUnknownAddress",
"kind": "fn",
"startLine": 50,
"endLine": 58,
"tokens": 119
},
{
"name": "TestUseCase_ResolveRecipient_ReturnsErrMailboxQuotaExceededWhenFull",
"kind": "fn",
"startLine": 60,
"endLine": 70,
"tokens": 141
},
{
"name": "TestUseCase_ResolveRecipient_ReturnsErrMailboxQuotaExceededWhenAnyFanOutTargetIsFull",
"kind": "fn",
"startLine": 72,
"endLine": 83,
"tokens": 162
},
{
"name": "fakeAliasFanOutRepository",
"kind": "class",
"startLine": 92,
"endLine": 95,
"tokens": 28
},
{
"name": "FindActiveByAddress",
"kind": "method",
"startLine": 97,
"endLine": 99,
"tokens": 39
},
{
"name": "ResolveDeliveryTargets",
"kind": "method",
"startLine": 101,
"endLine": 106,
"tokens": 71
},
{
"name": "stubBlobStorage",
"kind": "class",
"startLine": 108,
"endLine": 111,
"tokens": 18
},
{
"name": "Store",
"kind": "method",
"startLine": 113,
"endLine": 116,
"tokens": 41
},
{
"name": "recordingMessageRepository",
"kind": "class",
"startLine": 121,
"endLine": 127,
"tokens": 74
},
{
"name": "PersistAll",
"kind": "method",
"startLine": 129,
"endLine": 143,
"tokens": 154
},
{
"name": "TestUseCase_Handle_StoresBlobOnceAndPersistsOncePerRecipient",
"kind": "fn",
"startLine": 145,
"endLine": 184,
"tokens": 477
},
{
"name": "TestUseCase_Handle_PropagatesBlobStorageError",
"kind": "fn",
"startLine": 186,
"endLine": 199,
"tokens": 162
},
{
"name": "TestUseCase_Handle_DoesNotPartiallyDeliverOnFanOut",
"kind": "fn",
"startLine": 204,
"endLine": 227,
"tokens": 266
}
],
"symbolSource": "ts",
"skeleton": "type fakeMailboxRepository struct {\nfunc (f *fakeMailboxRepository) FindActiveByAddress(_ context.Context, address string) (*port.MailboxRecord, error) {\nfunc (f *fakeMailboxRepository) ResolveDeliveryTargets(_ context.Context, address string) ([]port.MailboxRecord, error) {\nfunc TestUseCase_ResolveRecipient_ReturnsRecordForActiveMailbox(t *testing.T) {\nfunc TestUseCase_ResolveRecipient_ReturnsErrRecipientNotFoundForUnknownAddress(t *testing.T) {\nfunc TestUseCase_ResolveRecipient_ReturnsErrMailboxQuotaExceededWhenFull(t *testing.T) {\nfunc TestUseCase_ResolveRecipient_ReturnsErrMailboxQuotaExceededWhenAnyFanOutTargetIsFull(t *testing.T) {\ntype fakeAliasFanOutRepository struct {\nfunc (f *fakeAliasFanOutRepository) FindActiveByAddress(_ context.Context, _ string) (*port.MailboxRecord, error) {\nfunc (f *fakeAliasFanOutRepository) ResolveDeliveryTargets(_ context.Context, address string) ([]port.MailboxRecord, error) {\ntype stubBlobStorage struct {\nfunc (s *stubBlobStorage) Store(_ context.Context, r io.Reader) (port.BlobRef, error) {\ntype recordingMessageRepository struct {\nfunc (r *recordingMessageRepository) PersistAll(_ context.Context, inputs []port.PersistInboundMessageInput) ([]int64, error) {\nfunc TestUseCase_Handle_StoresBlobOnceAndPersistsOncePerRecipient(t *testing.T) {\nfunc TestUseCase_Handle_PropagatesBlobStorageError(t *testing.T) {",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/process_inbound_email.go": {
"description": "contains the application's use cases (Clean Architecture layer 2).",
"tokens": 4084,
"hash": "4f96751cf4a0b935",
"size": 14292,
"mtimeMs": 1787422439293.8254,
"updatedAt": "2026-10-06T11:06:20.867Z",
"source": "scan",
"symbols": [
{
"name": "ProcessInboundEmailInput",
"kind": "class",
"startLine": 33,
"endLine": 53,
"tokens": 283
},
{
"name": "ProcessInboundEmailUseCase",
"kind": "class",
"startLine": 59,
"endLine": 74,
"tokens": 163
},
{
"name": "NewProcessInboundEmailUseCase",
"kind": "fn",
"startLine": 76,
"endLine": 78,
"tokens": 74
},
{
"name": "SetRules",
"kind": "method",
"startLine": 82,
"endLine": 84,
"tokens": 27
},
{
"name": "SetReportIngestor",
"kind": "method",
"startLine": 89,
"endLine": 91,
"tokens": 38
},
{
"name": "SetScanner",
"kind": "method",
"startLine": 93,
"endLine": 95,
"tokens": 30
},
{
"name": "SetAuthenticator",
"kind": "method",
"startLine": 97,
"endLine": 99,
"tokens": 38
},
{
"name": "SetArcSealer",
"kind": "method",
"startLine": 103,
"endLine": 105,
"tokens": 29
},
{
"name": "SetTrackerManager",
"kind": "method",
"startLine": 107,
"endLine": 110,
"tokens": 48
},
{
"name": "prependHeaders",
"kind": "fn",
"startLine": 116,
"endLine": 138,
"tokens": 165
},
{
"name": "ResolveRecipient",
"kind": "method",
"startLine": 143,
"endLine": 157,
"tokens": 121
},
{
"name": "Handle",
"kind": "method",
"startLine": 164,
"endLine": 377,
"tokens": 2261
}
],
"symbolSource": "ts",
"skeleton": "type ProcessInboundEmailInput struct {\ntype ProcessInboundEmailUseCase struct {\nfunc NewProcessInboundEmailUseCase(mailboxes port.MailboxRepository, blobs port.BlobStorage, messages port.InboundMessageRepository) *ProcessInboundEmailUseCase {\nfunc (uc *ProcessInboundEmailUseCase) SetRules(rules *ApplyRulesUseCase) {\nfunc (uc *ProcessInboundEmailUseCase) SetReportIngestor(ingestor *IngestDeliveredReportsUseCase) {\nfunc (uc *ProcessInboundEmailUseCase) SetScanner(scanner port.ContentScanner) {\nfunc (uc *ProcessInboundEmailUseCase) SetAuthenticator(authenticator port.MailAuthenticator) {\nfunc (uc *ProcessInboundEmailUseCase) SetArcSealer(sealer port.ArcSealer) {\nfunc (uc *ProcessInboundEmailUseCase) SetTrackerManager(tm *MailboxTrackerManager, folders port.ImapFolderRepository) {\nfunc prependHeaders(payload []byte, headers map[string]string) []byte {\nfunc (uc *ProcessInboundEmailUseCase) ResolveRecipient(ctx context.Context, address string) ([]port.MailboxRecord, error) {\nfunc (uc *ProcessInboundEmailUseCase) Handle(ctx context.Context, input ProcessInboundEmailInput) error {",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/domain/valueobject/autoconfig_xml_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/process_outbound_email_test.go": {
"description": "fakeAuthRepo (31 fields); methods: FindByAddress, CountRecipientsSince, Sign",
"tokens": 1768,
"hash": "f36202b378f38bda",
"size": 6187,
"mtimeMs": 1785635482522.9756,
"updatedAt": "2026-10-06T11:06:20.867Z",
"source": "scan",
"symbols": [
{
"name": "fakeAuthRepo",
"kind": "class",
"startLine": 18,
"endLine": 20,
"tokens": 16
},
{
"name": "FindByAddress",
"kind": "method",
"startLine": 22,
"endLine": 24,
"tokens": 34
},
{
"name": "countingOutboundRepo",
"kind": "class",
"startLine": 26,
"endLine": 29,
"tokens": 21
},
{
"name": "CountRecipientsSince",
"kind": "method",
"startLine": 31,
"endLine": 33,
"tokens": 40
},
{
"name": "recordingSigner",
"kind": "class",
"startLine": 35,
"endLine": 37,
"tokens": 16
},
{
"name": "Sign",
"kind": "method",
"startLine": 39,
"endLine": 42,
"tokens": 64
},
{
"name": "submissionInput",
"kind": "fn",
"startLine": 44,
"endLine": 53,
"tokens": 112
},
{
"name": "TestSubmit_SignsAndEnqueuesOneJobPerRecipient",
"kind": "fn",
"startLine": 57,
"endLine": 95,
"tokens": 441
},
{
"name": "TestSubmit_RefusesWhenHourlyRecipientLimitWouldBeExceeded",
"kind": "fn",
"startLine": 99,
"endLine": 111,
"tokens": 149
},
{
"name": "TestSubmit_AllowsSubmissionExactlyAtTheLimit",
"kind": "fn",
"startLine": 113,
"endLine": 123,
"tokens": 130
},
{
"name": "TestAuthenticate_AcceptsCorrectPasswordAndRejectsWrongOne",
"kind": "fn",
"startLine": 125,
"endLine": 142,
"tokens": 222
},
{
"name": "TestAuthenticate_UnknownMailboxYieldsTheSameError",
"kind": "fn",
"startLine": 146,
"endLine": 152,
"tokens": 98
},
{
"name": "TestAuthorizeSender_RejectsForeignEnvelopeSender",
"kind": "fn",
"startLine": 156,
"endLine": 171,
"tokens": 214
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/domain/entity/dkim_key_pair_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/process_outbound_email.go": {
"description": "ProcessOutboundEmailInput (50 fields); methods: Authenticate, Submit",
"tokens": 1739,
"hash": "8b74c29b04ae7d01",
"size": 6085,
"mtimeMs": 1785635482522.9756,
"updatedAt": "2026-10-06T11:06:20.867Z",
"source": "scan",
"symbols": [
{
"name": "ProcessOutboundEmailInput",
"kind": "class",
"startLine": 42,
"endLine": 51,
"tokens": 76
},
{
"name": "ProcessOutboundEmailUseCase",
"kind": "class",
"startLine": 55,
"endLine": 60,
"tokens": 46
},
{
"name": "NewProcessOutboundEmailUseCase",
"kind": "fn",
"startLine": 62,
"endLine": 69,
"tokens": 81
},
{
"name": "Authenticate",
"kind": "method",
"startLine": 73,
"endLine": 90,
"tokens": 178
},
{
"name": "Submit",
"kind": "method",
"startLine": 99,
"endLine": 147,
"tokens": 382
},
{
"name": "checkSendLimit",
"kind": "method",
"startLine": 152,
"endLine": 167,
"tokens": 171
},
{
"name": "AuthorizeSender",
"kind": "fn",
"startLine": 171,
"endLine": 179,
"tokens": 74
},
{
"name": "recipientDomain",
"kind": "fn",
"startLine": 181,
"endLine": 186,
"tokens": 52
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/domain/entity/dkim_key_pair_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/provision_dkim_keys_test.go": {
"description": "fakeDkimStore (26 fields); methods: FindPublicKey, Insert, FindPublicKey, Insert",
"tokens": 1089,
"hash": "f2d40edf1c36c807",
"size": 3811,
"mtimeMs": 1785635482522.9756,
"updatedAt": "2026-10-06T11:06:20.867Z",
"source": "scan",
"symbols": [
{
"name": "fakeDkimStore",
"kind": "class",
"startLine": 9,
"endLine": 13,
"tokens": 28
},
{
"name": "newFakeDkimStore",
"kind": "fn",
"startLine": 15,
"endLine": 17,
"tokens": 28
},
{
"name": "FindPublicKey",
"kind": "method",
"startLine": 19,
"endLine": 21,
"tokens": 39
},
{
"name": "Insert",
"kind": "method",
"startLine": 23,
"endLine": 30,
"tokens": 80
},
{
"name": "countingGenerator",
"kind": "fn",
"startLine": 32,
"endLine": 37,
"tokens": 61
},
{
"name": "TestProvisionDkimKeys_CreatesBothAlgorithms",
"kind": "fn",
"startLine": 41,
"endLine": 60,
"tokens": 179
},
{
"name": "TestProvisionDkimKeys_IsIdempotent",
"kind": "fn",
"startLine": 64,
"endLine": 89,
"tokens": 231
},
{
"name": "TestProvisionDkimKeys_ReturnsStoredKeyAfterLostRace",
"kind": "fn",
"startLine": 93,
"endLine": 106,
"tokens": 142
},
{
"name": "raceStore",
"kind": "class",
"startLine": 110,
"endLine": 113,
"tokens": 21
},
{
"name": "FindPublicKey",
"kind": "method",
"startLine": 115,
"endLine": 124,
"tokens": 74
},
{
"name": "Insert",
"kind": "method",
"startLine": 126,
"endLine": 128,
"tokens": 39
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/application/usecase/provision_dkim_keys.go": {
"description": "Interface: DkimKeyProvisioner (5 methods)",
"tokens": 1121,
"hash": "9afd6b429c71ad0d",
"size": 3923,
"mtimeMs": 1785759222668.893,
"updatedAt": "2026-10-06T11:06:20.867Z",
"source": "scan",
"symbols": [
{
"name": "DkimKeyProvisioner",
"kind": "class",
"startLine": 12,
"endLine": 15,
"tokens": 67
},
{
"name": "DkimKeyGenerator",
"kind": "class",
"startLine": 18,
"endLine": 18,
"tokens": 30
},
{
"name": "ProvisionDkimKeysOutput",
"kind": "class",
"startLine": 32,
"endLine": 36,
"tokens": 34
},
{
"name": "ProvisionDkimKeysUseCase",
"kind": "class",
"startLine": 42,
"endLine": 45,
"tokens": 28
},
{
"name": "NewProvisionDkimKeysUseCase",
"kind": "fn",
"startLine": 47,
"endLine": 49,
"tokens": 52
},
{
"name": "Execute",
"kind": "method",
"startLine": 51,
"endLine": 71,
"tokens": 164
},
{
"name": "ensure",
"kind": "method",
"startLine": 73,
"endLine": 112,
"tokens": 481
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/application/usecase/relay_test.go": {
"description": "fakeRelay (59 fields)",
"tokens": 3001,
"hash": "daed7337422d6569",
"size": 10501,
"mtimeMs": 1785713018572.3328,
"updatedAt": "2026-10-06T11:06:20.868Z",
"source": "scan",
"symbols": [
{
"name": "fakeRelay",
"kind": "class",
"startLine": 24,
"endLine": 30,
"tokens": 41
},
{
"name": "startFakeRelay",
"kind": "fn",
"startLine": 32,
"endLine": 62,
"tokens": 158
},
{
"name": "serve",
"kind": "method",
"startLine": 64,
"endLine": 133,
"tokens": 508
},
{
"name": "relayWorker",
"kind": "fn",
"startLine": 135,
"endLine": 151,
"tokens": 160
},
{
"name": "TestOutboundWorker_DeliversThroughRelayInsteadOfMX",
"kind": "fn",
"startLine": 155,
"endLine": 196,
"tokens": 372
},
{
"name": "TestOutboundWorker_RefusesRelayCredentialsWithoutStartTLS",
"kind": "fn",
"startLine": 200,
"endLine": 220,
"tokens": 199
},
{
"name": "TestOutboundWorker_UnreachableRelayDefers",
"kind": "fn",
"startLine": 223,
"endLine": 233,
"tokens": 111
},
{
"name": "TestRelayConfig_AddressDefaultsToSubmissionPort",
"kind": "fn",
"startLine": 235,
"endLine": 242,
"tokens": 115
},
{
"name": "TestRelayConfig_SpfInclude",
"kind": "fn",
"startLine": 246,
"endLine": 259,
"tokens": 119
},
{
"name": "atoiOrZero",
"kind": "fn",
"startLine": 261,
"endLine": 270,
"tokens": 46
},
{
"name": "relayTestCertificate",
"kind": "fn",
"startLine": 275,
"endLine": 306,
"tokens": 312
},
{
"name": "TestRelayConfig_SpfIncludeUsesTheConfiguredMechanism",
"kind": "fn",
"startLine": 319,
"endLine": 329,
"tokens": 152
},
{
"name": "TestRelayConfig_SpfMechanismAcceptsBareDomainsAndOtherTerms",
"kind": "fn",
"startLine": 331,
"endLine": 344,
"tokens": 154
},
{
"name": "TestRelayConfig_SpfIncludeEmptyWithoutRelay",
"kind": "fn",
"startLine": 348,
"endLine": 352,
"tokens": 65
}
],
"symbolSource": "ts",
"skeleton": "type fakeRelay struct {\nfunc startFakeRelay(t *testing.T, offerTLS bool) *fakeRelay {\nfunc (f *fakeRelay) serve(conn net.Conn) {\nfunc relayWorker(t *testing.T, relay RelayConfig) (*OutboundWorkerUseCase, *fakeOutboundRepo) {\nfunc TestOutboundWorker_DeliversThroughRelayInsteadOfMX(t *testing.T) {\nfunc TestOutboundWorker_RefusesRelayCredentialsWithoutStartTLS(t *testing.T) {\nfunc TestOutboundWorker_UnreachableRelayDefers(t *testing.T) {\nfunc TestRelayConfig_AddressDefaultsToSubmissionPort(t *testing.T) {\nfunc TestRelayConfig_SpfInclude(t *testing.T) {\nfunc atoiOrZero(s string) int {\nfunc relayTestCertificate(t *testing.T) tls.Certificate {\nfunc TestRelayConfig_SpfIncludeUsesTheConfiguredMechanism(t *testing.T) {\nfunc TestRelayConfig_SpfMechanismAcceptsBareDomainsAndOtherTerms(t *testing.T) {\nfunc TestRelayConfig_SpfIncludeEmptyWithoutRelay(t *testing.T) {",
"imports": [
"services/protocols/internal/infrastructure/tls/acme_cert_watcher_test.go",
"services/protocols/internal/domain/entity/dkim_key_pair_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/relay.go": {
"description": "RelayConfig (42 fields); methods: Configured, Address, SpfInclude",
"tokens": 1588,
"hash": "4f6c3e27e96af839",
"size": 5558,
"mtimeMs": 1785713002383.1174,
"updatedAt": "2026-10-06T11:06:20.868Z",
"source": "scan",
"symbols": [
{
"name": "RelayConfig",
"kind": "class",
"startLine": 20,
"endLine": 34,
"tokens": 166
},
{
"name": "Configured",
"kind": "method",
"startLine": 37,
"endLine": 39,
"tokens": 18
},
{
"name": "Address",
"kind": "method",
"startLine": 42,
"endLine": 48,
"tokens": 41
},
{
"name": "SpfInclude",
"kind": "method",
"startLine": 66,
"endLine": 84,
"tokens": 166
},
{
"name": "authFor",
"kind": "method",
"startLine": 89,
"endLine": 94,
"tokens": 47
},
{
"name": "relayTLSConfig",
"kind": "fn",
"startLine": 100,
"endLine": 106,
"tokens": 48
},
{
"name": "deliverViaRelay",
"kind": "method",
"startLine": 109,
"endLine": 165,
"tokens": 491
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/infrastructure/tls/acme_cert_watcher_test.go",
"services/protocols/internal/presentation/smtp/backend_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/rollover_tlsa_test.go": {
"description": "TestRollover_StableWhenRenewalIsFarAway, TestRollover_StartsWhenRenewalApproaches, TestRollover_PublishesBothAssociationsWhileInFlight, TestRollove...",
"tokens": 2109,
"hash": "1668a48598e51010",
"size": 7381,
"mtimeMs": 1785635482522.9756,
"updatedAt": "2026-10-06T11:06:20.868Z",
"source": "scan",
"symbols": [
{
"name": "rolloverAt",
"kind": "fn",
"startLine": 16,
"endLine": 20,
"tokens": 53
},
{
"name": "contains",
"kind": "fn",
"startLine": 22,
"endLine": 29,
"tokens": 38
},
{
"name": "TestRollover_StableWhenRenewalIsFarAway",
"kind": "fn",
"startLine": 35,
"endLine": 47,
"tokens": 131
},
{
"name": "TestRollover_StartsWhenRenewalApproaches",
"kind": "fn",
"startLine": 50,
"endLine": 59,
"tokens": 92
},
{
"name": "TestRollover_PublishesBothAssociationsWhileInFlight",
"kind": "fn",
"startLine": 64,
"endLine": 83,
"tokens": 209
},
{
"name": "TestRollover_WaitsOutPropagationBeforeRenewing",
"kind": "fn",
"startLine": 87,
"endLine": 107,
"tokens": 240
},
{
"name": "TestRollover_RetiresOldAssociationOnlyAfterPropagation",
"kind": "fn",
"startLine": 111,
"endLine": 136,
"tokens": 276
},
{
"name": "TestRollover_PublishesUnpublishedPendingAssociation",
"kind": "fn",
"startLine": 140,
"endLine": 151,
"tokens": 135
},
{
"name": "TestRollover_ShouldRenewNow",
"kind": "fn",
"startLine": 153,
"endLine": 165,
"tokens": 122
},
{
"name": "TestTlsaDigestForKey_MatchesTheIssuedCertificate",
"kind": "fn",
"startLine": 170,
"endLine": 211,
"tokens": 397
},
{
"name": "TestTlsaDigest_RejectsGarbage",
"kind": "fn",
"startLine": 213,
"endLine": 220,
"tokens": 86
}
],
"symbolSource": "ts",
"skeleton": "func rolloverAt(t *testing.T, now time.Time) *RolloverTlsaUseCase {\nfunc contains(values []string, want string) bool {\nfunc TestRollover_StableWhenRenewalIsFarAway(t *testing.T) {\nfunc TestRollover_StartsWhenRenewalApproaches(t *testing.T) {\nfunc TestRollover_PublishesBothAssociationsWhileInFlight(t *testing.T) {\nfunc TestRollover_WaitsOutPropagationBeforeRenewing(t *testing.T) {\nfunc TestRollover_RetiresOldAssociationOnlyAfterPropagation(t *testing.T) {\nfunc TestRollover_PublishesUnpublishedPendingAssociation(t *testing.T) {\nfunc TestRollover_ShouldRenewNow(t *testing.T) {\nfunc TestTlsaDigestForKey_MatchesTheIssuedCertificate(t *testing.T) {\nfunc TestTlsaDigest_RejectsGarbage(t *testing.T) {",
"importance": 0.0144
},
"services/protocols/internal/application/usecase/rollover_tlsa.go": {
"description": "RolloverConfig (50 fields); methods: WithClock, Decide, ShouldRenewNow",
"tokens": 2470,
"hash": "761bbb0a9280a22b",
"size": 8643,
"mtimeMs": 1785635482522.9756,
"updatedAt": "2026-10-06T11:06:20.868Z",
"source": "scan",
"symbols": [
{
"name": "RolloverStage",
"kind": "class",
"startLine": 19,
"endLine": 19,
"tokens": 8
},
{
"name": "RolloverConfig",
"kind": "class",
"startLine": 40,
"endLine": 52,
"tokens": 182
},
{
"name": "DefaultRolloverConfig",
"kind": "fn",
"startLine": 55,
"endLine": 61,
"tokens": 54
},
{
"name": "RolloverState",
"kind": "class",
"startLine": 64,
"endLine": 77,
"tokens": 161
},
{
"name": "RolloverDecision",
"kind": "class",
"startLine": 80,
"endLine": 87,
"tokens": 75
},
{
"name": "RolloverTlsaUseCase",
"kind": "class",
"startLine": 93,
"endLine": 96,
"tokens": 24
},
{
"name": "NewRolloverTlsaUseCase",
"kind": "fn",
"startLine": 98,
"endLine": 103,
"tokens": 58
},
{
"name": "WithClock",
"kind": "method",
"startLine": 106,
"endLine": 109,
"tokens": 32
},
{
"name": "Decide",
"kind": "method",
"startLine": 111,
"endLine": 170,
"tokens": 664
},
{
"name": "ShouldRenewNow",
"kind": "method",
"startLine": 174,
"endLine": 179,
"tokens": 51
},
{
"name": "TlsaDigestForKey",
"kind": "fn",
"startLine": 185,
"endLine": 217,
"tokens": 302
},
{
"name": "TlsaDigestForCertificate",
"kind": "fn",
"startLine": 221,
"endLine": 233,
"tokens": 122
},
{
"name": "dedupe",
"kind": "fn",
"startLine": 235,
"endLine": 246,
"tokens": 67
}
],
"symbolSource": "ts",
"skeleton": "type RolloverStage string\ntype RolloverConfig struct {\nfunc DefaultRolloverConfig() RolloverConfig {\ntype RolloverState struct {\ntype RolloverDecision struct {\ntype RolloverTlsaUseCase struct {\nfunc NewRolloverTlsaUseCase(config RolloverConfig) *RolloverTlsaUseCase {\nfunc (uc *RolloverTlsaUseCase) WithClock(now func() time.Time) *RolloverTlsaUseCase {\nfunc (uc *RolloverTlsaUseCase) Decide(_ context.Context, state RolloverState) RolloverDecision {\nfunc (uc *RolloverTlsaUseCase) ShouldRenewNow(notAfter time.Time) bool {\nfunc TlsaDigestForKey(privateKeyPEM []byte) (string, error) {\nfunc TlsaDigestForCertificate(certificatePEM []byte) (string, error) {\nfunc dedupe(values ...string) []string {",
"importance": 0.0144
},
"services/protocols/internal/application/usecase/scanning_pipeline_test.go": {
"description": "mockScanner (9 fields); methods: Scan",
"tokens": 405,
"hash": "7a0e28167b001323",
"size": 1415,
"mtimeMs": 1785635482522.9756,
"updatedAt": "2026-10-06T11:06:20.868Z",
"source": "scan",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/domain/valueobject/autoconfig_xml_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/scanning_pipeline.go": {
"description": "ScanningPipeline (13 fields); methods: Scan",
"tokens": 374,
"hash": "2031ba96a74df281",
"size": 1307,
"mtimeMs": 1785635482522.9756,
"updatedAt": "2026-10-06T11:06:20.868Z",
"source": "scan",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/domain/valueobject/autoconfig_xml_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/smtp_rejection.go": {
"description": "SmtpRejection is a use case's decision to refuse a message, carrying the",
"tokens": 650,
"hash": "b28ffeb73871c8fe",
"size": 2274,
"mtimeMs": 1785668486701.793,
"updatedAt": "2026-10-06T11:06:20.869Z",
"source": "scan",
"symbols": [
{
"name": "SmtpRejection",
"kind": "class",
"startLine": 14,
"endLine": 21,
"tokens": 78
},
{
"name": "Error",
"kind": "method",
"startLine": 23,
"endLine": 26,
"tokens": 46
},
{
"name": "IsPermanent",
"kind": "method",
"startLine": 29,
"endLine": 31,
"tokens": 24
},
{
"name": "rejectDmarc",
"kind": "fn",
"startLine": 35,
"endLine": 37,
"tokens": 43
},
{
"name": "rejectVirus",
"kind": "fn",
"startLine": 41,
"endLine": 43,
"tokens": 46
},
{
"name": "rejectSpam",
"kind": "fn",
"startLine": 46,
"endLine": 48,
"tokens": 40
},
{
"name": "deferGreylisted",
"kind": "fn",
"startLine": 53,
"endLine": 55,
"tokens": 44
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/application/usecase/sync_dns_conflict_test.go": {
"description": "stubDnsVerifier (32 fields); methods: VerifyRecord",
"tokens": 1548,
"hash": "14584b214bf590e6",
"size": 5416,
"mtimeMs": 1785635482522.9756,
"updatedAt": "2026-10-06T11:06:20.869Z",
"source": "scan",
"symbols": [
{
"name": "conflictTestInput",
"kind": "fn",
"startLine": 11,
"endLine": 19,
"tokens": 67
},
{
"name": "TestSyncDnsRecords_ForeignApexTxtIsPreserved",
"kind": "fn",
"startLine": 25,
"endLine": 62,
"tokens": 301
},
{
"name": "TestSyncDnsRecords_ForeignARecordIsReportedAsConflict",
"kind": "fn",
"startLine": 67,
"endLine": 95,
"tokens": 271
},
{
"name": "TestSyncDnsRecords_OwnRecordDriftIsCorrected",
"kind": "fn",
"startLine": 98,
"endLine": 127,
"tokens": 272
},
{
"name": "stubDnsVerifier",
"kind": "class",
"startLine": 129,
"endLine": 131,
"tokens": 17
},
{
"name": "VerifyRecord",
"kind": "method",
"startLine": 133,
"endLine": 138,
"tokens": 52
},
{
"name": "TestSyncDnsRecords_UnresolvableRecordIsReportedAsDrift",
"kind": "fn",
"startLine": 142,
"endLine": 161,
"tokens": 193
},
{
"name": "TestSyncDnsRecords_AllRecordsVisibleIsVerified",
"kind": "fn",
"startLine": 163,
"endLine": 179,
"tokens": 138
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/domain/entity/dkim_key_pair_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/sync_dns_records_test.go": {
"description": "fakeDnsProvider (26 fields); methods: GetZoneID, ListRecords, CreateRecord, UpdateRecord",
"tokens": 1060,
"hash": "6b3e8f3525129a61",
"size": 3708,
"mtimeMs": 1785635482523.9329,
"updatedAt": "2026-10-06T11:06:20.869Z",
"source": "scan",
"symbols": [
{
"name": "fakeDnsProvider",
"kind": "class",
"startLine": 14,
"endLine": 17,
"tokens": 21
},
{
"name": "newFakeDnsProvider",
"kind": "fn",
"startLine": 19,
"endLine": 21,
"tokens": 21
},
{
"name": "seed",
"kind": "method",
"startLine": 24,
"endLine": 30,
"tokens": 53
},
{
"name": "find",
"kind": "method",
"startLine": 33,
"endLine": 41,
"tokens": 73
},
{
"name": "GetZoneID",
"kind": "method",
"startLine": 43,
"endLine": 45,
"tokens": 41
},
{
"name": "ListRecords",
"kind": "method",
"startLine": 47,
"endLine": 49,
"tokens": 45
},
{
"name": "CreateRecord",
"kind": "method",
"startLine": 51,
"endLine": 56,
"tokens": 60
},
{
"name": "UpdateRecord",
"kind": "method",
"startLine": 58,
"endLine": 66,
"tokens": 74
},
{
"name": "DeleteRecord",
"kind": "method",
"startLine": 68,
"endLine": 76,
"tokens": 69
},
{
"name": "fakeSystemAliasRepository",
"kind": "class",
"startLine": 78,
"endLine": 80,
"tokens": 16
},
{
"name": "EnsureSystemAliases",
"kind": "method",
"startLine": 82,
"endLine": 85,
"tokens": 39
},
{
"name": "TestSyncDnsRecordsUseCase_CreatesFullRecordSetAndAliases",
"kind": "fn",
"startLine": 91,
"endLine": 131,
"tokens": 379
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/domain/entity/dkim_key_pair_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/sync_dns_records.go": {
"description": "SyncDnsRecordsInput (75 fields); methods: String, SetVerifier, Execute",
"tokens": 2481,
"hash": "7fa123df0d79faca",
"size": 8683,
"mtimeMs": 1785635482523.9329,
"updatedAt": "2026-10-06T11:06:20.869Z",
"source": "scan",
"symbols": [
{
"name": "SyncStatus",
"kind": "class",
"startLine": 13,
"endLine": 13,
"tokens": 7
},
{
"name": "SyncDnsRecordsInput",
"kind": "class",
"startLine": 26,
"endLine": 41,
"tokens": 134
},
{
"name": "SyncConflict",
"kind": "class",
"startLine": 45,
"endLine": 50,
"tokens": 28
},
{
"name": "String",
"kind": "method",
"startLine": 52,
"endLine": 54,
"tokens": 40
},
{
"name": "SyncDnsRecordsOutput",
"kind": "class",
"startLine": 56,
"endLine": 68,
"tokens": 101
},
{
"name": "SyncDnsRecordsUseCase",
"kind": "class",
"startLine": 70,
"endLine": 74,
"tokens": 40
},
{
"name": "NewSyncDnsRecordsUseCase",
"kind": "fn",
"startLine": 76,
"endLine": 81,
"tokens": 61
},
{
"name": "SetVerifier",
"kind": "method",
"startLine": 87,
"endLine": 89,
"tokens": 29
},
{
"name": "Execute",
"kind": "method",
"startLine": 91,
"endLine": 188,
"tokens": 895
},
{
"name": "verifyPublished",
"kind": "method",
"startLine": 192,
"endLine": 210,
"tokens": 132
},
{
"name": "recordKey",
"kind": "fn",
"startLine": 212,
"endLine": 214,
"tokens": 39
},
{
"name": "classifyCandidates",
"kind": "fn",
"startLine": 220,
"endLine": 230,
"tokens": 100
},
{
"name": "isOurRecord",
"kind": "fn",
"startLine": 236,
"endLine": 247,
"tokens": 136
},
{
"name": "txtTag",
"kind": "fn",
"startLine": 252,
"endLine": 262,
"tokens": 84
},
{
"name": "allowsCoexistence",
"kind": "fn",
"startLine": 267,
"endLine": 274,
"tokens": 44
}
],
"symbolSource": "ts",
"skeleton": "type SyncStatus string\ntype SyncDnsRecordsInput struct {\ntype SyncConflict struct {\nfunc (c SyncConflict) String() string {\ntype SyncDnsRecordsOutput struct {\ntype SyncDnsRecordsUseCase struct {\nfunc NewSyncDnsRecordsUseCase(dnsProvider port.DnsProvider, aliasRepo port.SystemAliasRepository) *SyncDnsRecordsUseCase {\nfunc (uc *SyncDnsRecordsUseCase) SetVerifier(verifier port.DnsVerifier) {\nfunc (uc *SyncDnsRecordsUseCase) Execute(ctx context.Context, input SyncDnsRecordsInput) (*SyncDnsRecordsOutput, error) {\nfunc (uc *SyncDnsRecordsUseCase) verifyPublished(ctx context.Context, specs []entity.DnsRecord) []string {\nfunc recordKey(recType, name string) string {\nfunc classifyCandidates(spec entity.DnsRecord, candidates []entity.DnsRecord) (match *entity.DnsRecord, blocking *entity.DnsRecord) {\nfunc isOurRecord(spec, existing entity.DnsRecord) bool {\nfunc txtTag(value string) string {\nfunc allowsCoexistence(recType string) bool {",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/domain/entity/dkim_key_pair_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/vacation_reply_test.go": {
"description": "TestReplyNamesTheMessageItAnswers, TestReplyCarriesTheConversationChain, TestReplyStartsTheChainWhenThereIsNone, TestReplyOmitsThreadingWhenThereIs...",
"tokens": 3030,
"hash": "f14b7dbf3c711018",
"size": 10605,
"mtimeMs": 1787422324480.9006,
"updatedAt": "2026-10-06T11:06:20.869Z",
"source": "scan",
"symbols": [
{
"name": "vacationHeaders",
"kind": "fn",
"startLine": 24,
"endLine": 36,
"tokens": 127
},
{
"name": "replyTo",
"kind": "fn",
"startLine": 38,
"endLine": 46,
"tokens": 88
},
{
"name": "TestReplyNamesTheMessageItAnswers",
"kind": "fn",
"startLine": 48,
"endLine": 54,
"tokens": 78
},
{
"name": "TestReplyCarriesTheConversationChain",
"kind": "fn",
"startLine": 58,
"endLine": 72,
"tokens": 173
},
{
"name": "TestReplyStartsTheChainWhenThereIsNone",
"kind": "fn",
"startLine": 76,
"endLine": 82,
"tokens": 76
},
{
"name": "TestReplyOmitsThreadingWhenThereIsNothingToThreadOn",
"kind": "fn",
"startLine": 87,
"endLine": 96,
"tokens": 104
},
{
"name": "TestSubjectShowsItIsAReplyToTheirMessage",
"kind": "fn",
"startLine": 102,
"endLine": 112,
"tokens": 120
},
{
"name": "TestSubjectDoesNotStackReplyPrefixes",
"kind": "fn",
"startLine": 115,
"endLine": 123,
"tokens": 91
},
{
"name": "TestSubjectFallsBackToTheConfiguredText",
"kind": "fn",
"startLine": 127,
"endLine": 134,
"tokens": 76
},
{
"name": "TestReplyStillMarksItselfAutomatic",
"kind": "fn",
"startLine": 138,
"endLine": 147,
"tokens": 97
},
{
"name": "TestMalformedMessageIdIsBracketed",
"kind": "fn",
"startLine": 151,
"endLine": 157,
"tokens": 74
},
{
"name": "TestThreadingHeadersCannotInjectMoreHeaders",
"kind": "fn",
"startLine": 161,
"endLine": 167,
"tokens": 74
},
{
"name": "TestDeliveredMessageProducesAThreadedReply",
"kind": "fn",
"startLine": 173,
"endLine": 220,
"tokens": 534
},
{
"name": "TestOriginalSubjectIsDecodedBeforeUse",
"kind": "fn",
"startLine": 228,
"endLine": 241,
"tokens": 130
},
{
"name": "TestEncodedReplyPrefixIsNotDuplicated",
"kind": "fn",
"startLine": 244,
"endLine": 253,
"tokens": 120
},
{
"name": "TestManyReplyPrefixesCollapseToOne",
"kind": "fn",
"startLine": 257,
"endLine": 268,
"tokens": 131
},
{
"name": "TestReplyToTheAutoReplyDoesNotEchoItself",
"kind": "fn",
"startLine": 273,
"endLine": 282,
"tokens": 116
}
],
"symbolSource": "ts",
"skeleton": "func vacationHeaders(t *testing.T, reply pendingVacation) map[string]string {\nfunc replyTo(original, references string) pendingVacation {\nfunc TestReplyNamesTheMessageItAnswers(t *testing.T) {\nfunc TestReplyCarriesTheConversationChain(t *testing.T) {\nfunc TestReplyStartsTheChainWhenThereIsNone(t *testing.T) {\nfunc TestReplyOmitsThreadingWhenThereIsNothingToThreadOn(t *testing.T) {\nfunc TestSubjectShowsItIsAReplyToTheirMessage(t *testing.T) {\nfunc TestSubjectDoesNotStackReplyPrefixes(t *testing.T) {\nfunc TestSubjectFallsBackToTheConfiguredText(t *testing.T) {\nfunc TestReplyStillMarksItselfAutomatic(t *testing.T) {\nfunc TestMalformedMessageIdIsBracketed(t *testing.T) {\nfunc TestThreadingHeadersCannotInjectMoreHeaders(t *testing.T) {\nfunc TestDeliveredMessageProducesAThreadedReply(t *testing.T) {\nfunc TestOriginalSubjectIsDecodedBeforeUse(t *testing.T) {\nfunc TestEncodedReplyPrefixIsNotDuplicated(t *testing.T) {\nfunc TestManyReplyPrefixesCollapseToOne(t *testing.T) {\nfunc TestReplyToTheAutoReplyDoesNotEchoItself(t *testing.T) {",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/vacation_reply.go": {
"description": "pendingVacation (42 fields); methods: SetVacationSender, SetVacationSuppression",
"tokens": 2544,
"hash": "c3b3172e7aafbf04",
"size": 8901,
"mtimeMs": 1787422474764.3455,
"updatedAt": "2026-10-06T11:06:20.869Z",
"source": "scan",
"symbols": [
{
"name": "pendingVacation",
"kind": "class",
"startLine": 19,
"endLine": 32,
"tokens": 129
},
{
"name": "SetVacationSender",
"kind": "method",
"startLine": 37,
"endLine": 43,
"tokens": 60
},
{
"name": "SetVacationSuppression",
"kind": "method",
"startLine": 47,
"endLine": 49,
"tokens": 31
},
{
"name": "sendVacationReplies",
"kind": "method",
"startLine": 56,
"endLine": 77,
"tokens": 217
},
{
"name": "sendVacationReply",
"kind": "method",
"startLine": 79,
"endLine": 97,
"tokens": 192
},
{
"name": "buildVacationMessage",
"kind": "fn",
"startLine": 112,
"endLine": 141,
"tokens": 383
},
{
"name": "vacationSubject",
"kind": "fn",
"startLine": 148,
"endLine": 171,
"tokens": 254
},
{
"name": "decodeHeaderValue",
"kind": "fn",
"startLine": 178,
"endLine": 188,
"tokens": 68
},
{
"name": "stripReplyPrefixes",
"kind": "fn",
"startLine": 194,
"endLine": 209,
"tokens": 114
},
{
"name": "messageIDRef",
"kind": "fn",
"startLine": 216,
"endLine": 228,
"tokens": 72
},
{
"name": "buildReferences",
"kind": "fn",
"startLine": 232,
"endLine": 251,
"tokens": 199
}
],
"symbolSource": "ts",
"skeleton": "type pendingVacation struct {\nfunc (uc *ProcessInboundEmailUseCase) SetVacationSender(\nfunc (uc *ProcessInboundEmailUseCase) SetVacationSuppression(s *VacationSuppression) {\nfunc (uc *ProcessInboundEmailUseCase) sendVacationReplies(ctx context.Context, replies []pendingVacation) {\nfunc (uc *ProcessInboundEmailUseCase) sendVacationReply(ctx context.Context, reply pendingVacation) error {\nfunc buildVacationMessage(reply pendingVacation, host string) []byte {\nfunc vacationSubject(reply pendingVacation) string {\nfunc decodeHeaderValue(value string) string {\nfunc stripReplyPrefixes(subject string) string {\nfunc messageIDRef(raw string) string {\nfunc buildReferences(existing, original string) string {",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/vacation_suppression_test.go": {
"description": "stubVacationLog (18 fields); methods: LastRepliedAt, RecordReply",
"tokens": 1409,
"hash": "2e99c474aca4d8fa",
"size": 4930,
"mtimeMs": 1787422459237.1782,
"updatedAt": "2026-10-06T11:06:20.869Z",
"source": "scan",
"symbols": [
{
"name": "stubVacationLog",
"kind": "class",
"startLine": 19,
"endLine": 23,
"tokens": 26
},
{
"name": "LastRepliedAt",
"kind": "method",
"startLine": 25,
"endLine": 30,
"tokens": 53
},
{
"name": "RecordReply",
"kind": "method",
"startLine": 32,
"endLine": 35,
"tokens": 40
},
{
"name": "newSuppression",
"kind": "fn",
"startLine": 37,
"endLine": 39,
"tokens": 34
},
{
"name": "TestFirstMessageFromSomeoneGetsAReply",
"kind": "fn",
"startLine": 41,
"endLine": 46,
"tokens": 78
},
{
"name": "TestSecondMessageWithinThePeriodIsSilent",
"kind": "fn",
"startLine": 50,
"endLine": 57,
"tokens": 97
},
{
"name": "TestSomeoneWritingAfterThePeriodIsToldAgain",
"kind": "fn",
"startLine": 61,
"endLine": 68,
"tokens": 100
},
{
"name": "TestDifferentPeopleEachGetOne",
"kind": "fn",
"startLine": 70,
"endLine": 77,
"tokens": 84
},
{
"name": "TestAddressComparisonIgnoresCase",
"kind": "fn",
"startLine": 80,
"endLine": 87,
"tokens": 89
},
{
"name": "TestAnUnreadableLogStillReplies",
"kind": "fn",
"startLine": 91,
"endLine": 96,
"tokens": 74
},
{
"name": "TestNoLogMeansNoSuppression",
"kind": "fn",
"startLine": 99,
"endLine": 103,
"tokens": 60
},
{
"name": "TestReplyIsRecorded",
"kind": "fn",
"startLine": 105,
"endLine": 113,
"tokens": 93
},
{
"name": "errTestUnavailable",
"kind": "class",
"startLine": 117,
"endLine": 117,
"tokens": 10
},
{
"name": "Error",
"kind": "method",
"startLine": 119,
"endLine": 119,
"tokens": 20
},
{
"name": "TestDeliveryTellsEachSenderOnlyOnce",
"kind": "fn",
"startLine": 125,
"endLine": 139,
"tokens": 176
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/application/usecase/vacation_suppression.go": {
"description": "VacationSuppression (19 fields); methods: ShouldReply, Record",
"tokens": 778,
"hash": "6d157a1fd24d58d7",
"size": 2720,
"mtimeMs": 1787422476112.9192,
"updatedAt": "2026-10-06T11:06:20.869Z",
"source": "scan",
"symbols": [
{
"name": "VacationSuppression",
"kind": "class",
"startLine": 23,
"endLine": 26,
"tokens": 24
},
{
"name": "NewVacationSuppression",
"kind": "fn",
"startLine": 31,
"endLine": 36,
"tokens": 64
},
{
"name": "ShouldReply",
"kind": "method",
"startLine": 43,
"endLine": 61,
"tokens": 140
},
{
"name": "Record",
"kind": "method",
"startLine": 64,
"endLine": 77,
"tokens": 136
},
{
"name": "normaliseAddress",
"kind": "fn",
"startLine": 80,
"endLine": 88,
"tokens": 89
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/webmail_compose_test.go": {
"description": "stubWebmailRepo (47 fields); methods: FindMailboxIDByAddress, ListFolders, ListMessages, GetMessageBlob",
"tokens": 4946,
"hash": "d9c4463cfd99a0f0",
"size": 17309,
"mtimeMs": 1788779887232.175,
"updatedAt": "2026-10-06T11:06:20.870Z",
"source": "scan",
"symbols": [
{
"name": "TestComposedMessageCarriesTheBody",
"kind": "fn",
"startLine": 18,
"endLine": 32,
"tokens": 176
},
{
"name": "TestHtmlIsSentAsHtml",
"kind": "fn",
"startLine": 34,
"endLine": 60,
"tokens": 346
},
{
"name": "TestPlainTextOnlyMessageStaysSimple",
"kind": "fn",
"startLine": 62,
"endLine": 76,
"tokens": 141
},
{
"name": "TestBccNeverAppearsInTheHeaders",
"kind": "fn",
"startLine": 78,
"endLine": 120,
"tokens": 475
},
{
"name": "TestHtmlToPlainTextIsReadable",
"kind": "fn",
"startLine": 122,
"endLine": 132,
"tokens": 139
},
{
"name": "stubWebmailRepo",
"kind": "class",
"startLine": 136,
"endLine": 143,
"tokens": 46
},
{
"name": "FindMailboxIDByAddress",
"kind": "method",
"startLine": 145,
"endLine": 147,
"tokens": 34
},
{
"name": "ListFolders",
"kind": "method",
"startLine": 148,
"endLine": 150,
"tokens": 33
},
{
"name": "ListMessages",
"kind": "method",
"startLine": 151,
"endLine": 153,
"tokens": 41
},
{
"name": "GetMessageBlob",
"kind": "method",
"startLine": 154,
"endLine": 156,
"tokens": 36
},
{
"name": "MarkSeen",
"kind": "method",
"startLine": 157,
"endLine": 157,
"tokens": 30
},
{
"name": "Expunge",
"kind": "method",
"startLine": 158,
"endLine": 161,
"tokens": 42
},
{
"name": "MoveToFolder",
"kind": "method",
"startLine": 162,
"endLine": 170,
"tokens": 76
},
{
"name": "MoveToTrash",
"kind": "method",
"startLine": 172,
"endLine": 178,
"tokens": 61
},
{
"name": "newSendableUseCase",
"kind": "fn",
"startLine": 182,
"endLine": 185,
"tokens": 56
},
{
"name": "newSendableUseCaseWith",
"kind": "fn",
"startLine": 187,
"endLine": 204,
"tokens": 198
},
{
"name": "stubAuthRepo",
"kind": "class",
"startLine": 206,
"endLine": 206,
"tokens": 16
},
{
"name": "FindByAddress",
"kind": "method",
"startLine": 208,
"endLine": 210,
"tokens": 33
},
{
"name": "TestDraftAutosaveReplacesThePreviousOne",
"kind": "fn",
"startLine": 214,
"endLine": 251,
"tokens": 400
},
{
"name": "TestDraftSavesWithoutRecipients",
"kind": "fn",
"startLine": 255,
"endLine": 271,
"tokens": 187
},
{
"name": "TestSendingDiscardsTheDraftItCameFrom",
"kind": "fn",
"startLine": 278,
"endLine": 296,
"tokens": 169
},
{
"name": "TestSendingWithoutADraftExpungesNothing",
"kind": "fn",
"startLine": 300,
"endLine": 313,
"tokens": 135
},
{
"name": "TestSentCopyIsFiledAsAlreadyRead",
"kind": "fn",
"startLine": 317,
"endLine": 335,
"tokens": 178
},
{
"name": "TestDraftIsFiledAsAlreadyRead",
"kind": "fn",
"startLine": 339,
"endLine": 357,
"tokens": 214
},
{
"name": "TestDeleteMovesToTrash",
"kind": "fn",
"startLine": 362,
"endLine": 380,
"tokens": 200
},
{
"name": "TestDeleteFromTrashExpunges",
"kind": "fn",
"startLine": 383,
"endLine": 398,
"tokens": 178
},
{
"name": "TestMoveFilesTheMessageInTheTargetFolder",
"kind": "fn",
"startLine": 404,
"endLine": 419,
"tokens": 161
},
{
"name": "TestMoveRefusesSentAndDrafts",
"kind": "fn",
"startLine": 425,
"endLine": 443,
"tokens": 201
},
{
"name": "TestMoveIntoTheSameFolderDoesNothing",
"kind": "fn",
"startLine": 447,
"endLine": 462,
"tokens": 165
},
{
"name": "TestMoveRejectsAnEmptyTarget",
"kind": "fn",
"startLine": 464,
"endLine": 474,
"tokens": 128
}
],
"symbolSource": "ts",
"skeleton": "func TestComposedMessageCarriesTheBody(t *testing.T) {\nfunc TestHtmlIsSentAsHtml(t *testing.T) {\nfunc TestPlainTextOnlyMessageStaysSimple(t *testing.T) {\nfunc TestBccNeverAppearsInTheHeaders(t *testing.T) {\nfunc TestHtmlToPlainTextIsReadable(t *testing.T) {\ntype stubWebmailRepo struct {\nfunc (s *stubWebmailRepo) FindMailboxIDByAddress(context.Context, string) (string, error) {\nfunc (s *stubWebmailRepo) ListFolders(context.Context, string) ([]port.WebmailFolder, error) {\nfunc (s *stubWebmailRepo) ListMessages(context.Context, string, string, string, int, int) ([]port.WebmailMessage, error) {\nfunc (s *stubWebmailRepo) GetMessageBlob(context.Context, string, string, uint32) (uuid.UUID, error) {\nfunc (s *stubWebmailRepo) MarkSeen(context.Context, string, string, uint32, bool) error { return nil }\nfunc (s *stubWebmailRepo) Expunge(_ context.Context, _, _ string, uid uint32) error {\nfunc (s *stubWebmailRepo) MoveToFolder(\nfunc (s *stubWebmailRepo) MoveToTrash(_ context.Context, _, _ string, uid uint32) (uint32, error) {\nfunc newSendableUseCase(t *testing.T, mailboxID uuid.UUID, repo *stubWebmailRepo) *WebmailUseCase {\nfunc newSendableUseCaseWith(\ntype stubAuthRepo struct{ account *port.MailboxAuth }\nfunc (s *stubAuthRepo) FindByAddress(context.Context, string) (*port.MailboxAuth, error) {\nfunc TestDraftAutosaveReplacesThePreviousOne(t *testing.T) {",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/application/usecase/webmail_mail.go": {
"description": "WebmailUseCase (81 fields); methods: WithLocalFiling, MailboxIDFor, ListFolders, ListMessages",
"tokens": 5136,
"hash": "8879750a0e9acb75",
"size": 17976,
"mtimeMs": 1788779917943.6719,
"updatedAt": "2026-10-06T11:06:20.870Z",
"source": "scan",
"symbols": [
{
"name": "WebmailUseCase",
"kind": "class",
"startLine": 29,
"endLine": 41,
"tokens": 152
},
{
"name": "NewWebmailUseCase",
"kind": "fn",
"startLine": 43,
"endLine": 54,
"tokens": 99
},
{
"name": "WithLocalFiling",
"kind": "method",
"startLine": 57,
"endLine": 61,
"tokens": 52
},
{
"name": "MailboxIDFor",
"kind": "method",
"startLine": 65,
"endLine": 67,
"tokens": 38
},
{
"name": "mailboxID",
"kind": "method",
"startLine": 69,
"endLine": 75,
"tokens": 65
},
{
"name": "ListFolders",
"kind": "method",
"startLine": 77,
"endLine": 83,
"tokens": 64
},
{
"name": "ListMessages",
"kind": "method",
"startLine": 85,
"endLine": 93,
"tokens": 85
},
{
"name": "GetMessage",
"kind": "method",
"startLine": 96,
"endLine": 116,
"tokens": 156
},
{
"name": "SetSeen",
"kind": "method",
"startLine": 118,
"endLine": 124,
"tokens": 68
},
{
"name": "ComposeInput",
"kind": "class",
"startLine": 127,
"endLine": 148,
"tokens": 263
},
{
"name": "Send",
"kind": "method",
"startLine": 157,
"endLine": 208,
"tokens": 563
},
{
"name": "Move",
"kind": "method",
"startLine": 229,
"endLine": 249,
"tokens": 179
},
{
"name": "Delete",
"kind": "method",
"startLine": 257,
"endLine": 274,
"tokens": 161
},
{
"name": "fileLocalCopy",
"kind": "method",
"startLine": 279,
"endLine": 304,
"tokens": 229
},
{
"name": "SaveDraft",
"kind": "method",
"startLine": 316,
"endLine": 371,
"tokens": 516
},
{
"name": "normaliseRecipients",
"kind": "fn",
"startLine": 377,
"endLine": 393,
"tokens": 127
},
{
"name": "buildMimeMessage",
"kind": "fn",
"startLine": 406,
"endLine": 453,
"tokens": 478
},
{
"name": "normaliseEOL",
"kind": "fn",
"startLine": 457,
"endLine": 463,
"tokens": 51
},
{
"name": "htmlToPlainText",
"kind": "fn",
"startLine": 471,
"endLine": 501,
"tokens": 220
},
{
"name": "encodeHeaderValue",
"kind": "fn",
"startLine": 505,
"endLine": 513,
"tokens": 78
},
{
"name": "mimeEncode",
"kind": "fn",
"startLine": 516,
"endLine": 519,
"tokens": 44
}
],
"symbolSource": "ts",
"skeleton": "type WebmailUseCase struct {\nfunc NewWebmailUseCase(\nfunc (uc *WebmailUseCase) WithLocalFiling(store port.BlobStorage, messages port.InboundMessageRepository) *WebmailUseCase {\nfunc (uc *WebmailUseCase) MailboxIDFor(ctx context.Context, address string) (string, error) {\nfunc (uc *WebmailUseCase) mailboxID(ctx context.Context, address string) (string, error) {\nfunc (uc *WebmailUseCase) ListFolders(ctx context.Context, address string) ([]port.WebmailFolder, error) {\nfunc (uc *WebmailUseCase) ListMessages(\nfunc (uc *WebmailUseCase) GetMessage(ctx context.Context, address, folder string, uid uint32) ([]byte, error) {\nfunc (uc *WebmailUseCase) SetSeen(ctx context.Context, address, folder string, uid uint32, seen bool) error {\ntype ComposeInput struct {\nfunc (uc *WebmailUseCase) Send(ctx context.Context, input ComposeInput) error {\nfunc (uc *WebmailUseCase) Move(ctx context.Context, address, folder string, uid uint32, target string) error {\nfunc (uc *WebmailUseCase) Delete(ctx context.Context, address, folder string, uid uint32) error {\nfunc (uc *WebmailUseCase) fileLocalCopy(\nfunc (uc *WebmailUseCase) SaveDraft(ctx context.Context, input ComposeInput, replaceUID uint32) (uint32, error) {\nfunc normaliseRecipients(raw []string) []string {\nfunc buildMimeMessage(input ComposeInput, recipients []string, localHost string) []byte {\nfunc normaliseEOL(s string) string {",
"imports": [
"services/webmail/src/app/(user)/user/mail/[folder]/page.tsx",
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/domain/bimi/svg_test.go": {
"description": "TestValidate_AcceptsAConformingLogo, TestValidate_RequiresTheProfileReceiversLookFor, TestValidate_RequiresASquareViewBox, TestValidate_RequiresExa...",
"tokens": 1630,
"hash": "f6a6c12c0649ee0b",
"size": 5704,
"mtimeMs": 1788830725027.3508,
"updatedAt": "2026-10-06T11:06:20.870Z",
"source": "scan",
"symbols": [
{
"name": "rulesOf",
"kind": "fn",
"startLine": 18,
"endLine": 24,
"tokens": 41
},
{
"name": "contains",
"kind": "fn",
"startLine": 26,
"endLine": 33,
"tokens": 38
},
{
"name": "TestValidate_AcceptsAConformingLogo",
"kind": "fn",
"startLine": 35,
"endLine": 39,
"tokens": 48
},
{
"name": "TestValidate_RequiresTheProfileReceiversLookFor",
"kind": "fn",
"startLine": 41,
"endLine": 59,
"tokens": 220
},
{
"name": "TestValidate_RequiresASquareViewBox",
"kind": "fn",
"startLine": 63,
"endLine": 78,
"tokens": 204
},
{
"name": "TestValidate_RequiresExactlyOneTitle",
"kind": "fn",
"startLine": 80,
"endLine": 95,
"tokens": 184
},
{
"name": "TestValidate_RefusesAnythingActiveOrExternal",
"kind": "fn",
"startLine": 99,
"endLine": 119,
"tokens": 317
},
{
"name": "TestValidate_RefusesWhatCannotBeReadAtAll",
"kind": "fn",
"startLine": 121,
"endLine": 132,
"tokens": 126
},
{
"name": "TestValidate_RefusesALogoTooBigToBeFetched",
"kind": "fn",
"startLine": 134,
"endLine": 140,
"tokens": 84
},
{
"name": "TestValidate_ReportsEveryViolationAtOnce",
"kind": "fn",
"startLine": 144,
"endLine": 152,
"tokens": 109
}
],
"symbolSource": "ts",
"importance": 0.023
},
"services/protocols/internal/domain/bimi/svg.go": {
"description": "validates the logo a domain publishes for BIMI.",
"tokens": 1575,
"hash": "17e6c1f8c3fc869f",
"size": 5511,
"mtimeMs": 1788830725027.1436,
"updatedAt": "2026-10-06T11:06:20.870Z",
"source": "scan",
"symbols": [
{
"name": "Violation",
"kind": "class",
"startLine": 22,
"endLine": 25,
"tokens": 16
},
{
"name": "String",
"kind": "method",
"startLine": 27,
"endLine": 27,
"tokens": 25
},
{
"name": "Validate",
"kind": "fn",
"startLine": 46,
"endLine": 127,
"tokens": 788
},
{
"name": "checkSquareViewBox",
"kind": "fn",
"startLine": 130,
"endLine": 153,
"tokens": 233
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/domain/entity/dkim_key_pair_test.go": {
"description": "TestNewDkimKeyPair_StartsPending, TestDkimKeyPair_Activate_SetsActive",
"tokens": 139,
"hash": "9a9aa453eafe53aa",
"size": 486,
"mtimeMs": 1785635482524.3235,
"updatedAt": "2026-10-06T11:06:20.870Z",
"source": "scan",
"importance": 0.2974
},
"services/protocols/internal/domain/entity/dkim_key_pair.go": {
"description": "DkimStatus is the lifecycle state of a DkimKeyPair (PLAN.md section 9, dkim_keys.status).",
"tokens": 317,
"hash": "ae4f77b697b11151",
"size": 1109,
"mtimeMs": 1785635482524.2761,
"updatedAt": "2026-10-06T11:06:20.870Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/domain/entity/dmarc_report_test.go": {
"description": "TestParseDmarcXmlReport_ValidXML, TestParseTlsRptReport_ValidJSON",
"tokens": 659,
"hash": "de1ba18aff54e9ca",
"size": 2304,
"mtimeMs": 1787249227615.333,
"updatedAt": "2026-10-06T11:06:20.871Z",
"source": "scan",
"symbols": [
{
"name": "TestParseDmarcXmlReport_ValidXML",
"kind": "fn",
"startLine": 9,
"endLine": 61,
"tokens": 393
},
{
"name": "TestParseTlsRptReport_ValidJSON",
"kind": "fn",
"startLine": 63,
"endLine": 96,
"tokens": 247
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/domain/entity/dmarc_report.go": {
"description": "DmarcRecord (59 fields)",
"tokens": 1261,
"hash": "d6596825dc92a8da",
"size": 4412,
"mtimeMs": 1787315035655.3943,
"updatedAt": "2026-10-06T11:06:20.871Z",
"source": "scan",
"symbols": [
{
"name": "DmarcRecord",
"kind": "class",
"startLine": 13,
"endLine": 20,
"tokens": 42
},
{
"name": "DmarcReport",
"kind": "class",
"startLine": 22,
"endLine": 29,
"tokens": 51
},
{
"name": "dmarcXmlReport",
"kind": "class",
"startLine": 31,
"endLine": 57,
"tokens": 215
},
{
"name": "ParseDmarcXmlReport",
"kind": "fn",
"startLine": 65,
"endLine": 112,
"tokens": 387
},
{
"name": "isGzip",
"kind": "fn",
"startLine": 114,
"endLine": 116,
"tokens": 31
},
{
"name": "isZip",
"kind": "fn",
"startLine": 121,
"endLine": 124,
"tokens": 43
},
{
"name": "firstFileInZip",
"kind": "fn",
"startLine": 130,
"endLine": 154,
"tokens": 237
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/domain/entity/dmarc_zip_test.go": {
"description": "TestDmarcReportParsesZippedPayload, TestDmarcReportStillParsesPlainXml, TestDmarcReportRejectsEmptyZip",
"tokens": 708,
"hash": "e72ccc004af3e1ce",
"size": 2477,
"mtimeMs": 1787315014436.6196,
"updatedAt": "2026-10-06T11:06:20.871Z",
"source": "scan",
"symbols": [
{
"name": "TestDmarcReportParsesZippedPayload",
"kind": "fn",
"startLine": 34,
"endLine": 61,
"tokens": 213
},
{
"name": "TestDmarcReportStillParsesPlainXml",
"kind": "fn",
"startLine": 64,
"endLine": 72,
"tokens": 74
},
{
"name": "TestDmarcReportRejectsEmptyZip",
"kind": "fn",
"startLine": 76,
"endLine": 85,
"tokens": 79
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/domain/entity/dns_record_idempotency_test.go": {
"description": "TestBuildDnsRecordSpecs_MtaStsIdIsStableAcrossCalls, TestBuildDnsRecordSpecs_MtaStsIdChangesWithPolicy, TestDnsRecord_EqualsNormalized_DetectsPrior...",
"tokens": 740,
"hash": "d5b7a39df88233d3",
"size": 2588,
"mtimeMs": 1785635482524.3235,
"updatedAt": "2026-10-06T11:06:20.871Z",
"source": "scan",
"symbols": [
{
"name": "buildTestSpecs",
"kind": "fn",
"startLine": 7,
"endLine": 15,
"tokens": 74
},
{
"name": "findRecord",
"kind": "fn",
"startLine": 17,
"endLine": 26,
"tokens": 74
},
{
"name": "TestBuildDnsRecordSpecs_MtaStsIdIsStableAcrossCalls",
"kind": "fn",
"startLine": 32,
"endLine": 39,
"tokens": 100
},
{
"name": "TestBuildDnsRecordSpecs_MtaStsIdChangesWithPolicy",
"kind": "fn",
"startLine": 43,
"endLine": 58,
"tokens": 160
},
{
"name": "TestDnsRecord_EqualsNormalized_DetectsPriorityDrift",
"kind": "fn",
"startLine": 62,
"endLine": 73,
"tokens": 168
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/domain/entity/dns_record_test.go": {
"description": "TestBuildDnsRecordSpecs_GeneratesMandatoryRecords, TestDkimRecordsAreOmittedWhenThereIsNoKey, TestDkimRecordsArePublishedWhenKeysExist, TestOnlyThe...",
"tokens": 2424,
"hash": "149f9809d9cee0e5",
"size": 8484,
"mtimeMs": 1788830725027.967,
"updatedAt": "2026-10-06T11:06:20.871Z",
"source": "scan",
"symbols": [
{
"name": "TestBuildDnsRecordSpecs_GeneratesMandatoryRecords",
"kind": "fn",
"startLine": 8,
"endLine": 71,
"tokens": 548
},
{
"name": "TestDkimRecordsAreOmittedWhenThereIsNoKey",
"kind": "fn",
"startLine": 77,
"endLine": 92,
"tokens": 150
},
{
"name": "TestDkimRecordsArePublishedWhenKeysExist",
"kind": "fn",
"startLine": 94,
"endLine": 118,
"tokens": 216
},
{
"name": "TestOnlyTheAvailableDkimKeyIsPublished",
"kind": "fn",
"startLine": 122,
"endLine": 134,
"tokens": 108
},
{
"name": "TestBuildDnsRecordSpecs_SkipsMailHostAddressesOutsideTheDomain",
"kind": "fn",
"startLine": 145,
"endLine": 173,
"tokens": 245
},
{
"name": "TestBuildDnsRecordSpecs_KeepsMailHostAddressesInsideTheDomain",
"kind": "fn",
"startLine": 177,
"endLine": 197,
"tokens": 154
},
{
"name": "TestBuildDnsRecordSpecs_BimiOnlyWhenThereIsALogo",
"kind": "fn",
"startLine": 204,
"endLine": 243,
"tokens": 350
},
{
"name": "TestBuildDnsRecordSpecs_BimiCarriesTheCertificateWhenConfigured",
"kind": "fn",
"startLine": 247,
"endLine": 266,
"tokens": 195
}
],
"symbolSource": "ts",
"skeleton": "func TestBuildDnsRecordSpecs_GeneratesMandatoryRecords(t *testing.T) {\nfunc TestDkimRecordsAreOmittedWhenThereIsNoKey(t *testing.T) {\nfunc TestDkimRecordsArePublishedWhenKeysExist(t *testing.T) {\nfunc TestOnlyTheAvailableDkimKeyIsPublished(t *testing.T) {\nfunc TestBuildDnsRecordSpecs_SkipsMailHostAddressesOutsideTheDomain(t *testing.T) {\nfunc TestBuildDnsRecordSpecs_KeepsMailHostAddressesInsideTheDomain(t *testing.T) {\nfunc TestBuildDnsRecordSpecs_BimiOnlyWhenThereIsALogo(t *testing.T) {\nfunc TestBuildDnsRecordSpecs_BimiCarriesTheCertificateWhenConfigured(t *testing.T) {",
"importance": 0.0144
},
"services/protocols/internal/domain/entity/dns_record.go": {
"description": "DnsRecord (47 fields); methods: EqualsNormalized",
"tokens": 2951,
"hash": "1b6d06eaba213199",
"size": 10326,
"mtimeMs": 1788830725027.7786,
"updatedAt": "2026-10-06T11:06:20.871Z",
"source": "scan",
"symbols": [
{
"name": "DnsRecord",
"kind": "class",
"startLine": 10,
"endLine": 19,
"tokens": 44
},
{
"name": "DnsRecordSpec",
"kind": "class",
"startLine": 22,
"endLine": 47,
"tokens": 302
},
{
"name": "BuildDnsRecordSpecs",
"kind": "fn",
"startLine": 52,
"endLine": 254,
"tokens": 1817
},
{
"name": "buildSpfRecord",
"kind": "fn",
"startLine": 259,
"endLine": 265,
"tokens": 71
},
{
"name": "intPtr",
"kind": "fn",
"startLine": 267,
"endLine": 269,
"tokens": 11
},
{
"name": "mtaStsPolicyID",
"kind": "fn",
"startLine": 277,
"endLine": 280,
"tokens": 53
},
{
"name": "EqualsNormalized",
"kind": "method",
"startLine": 283,
"endLine": 305,
"tokens": 173
},
{
"name": "hostInsideDomain",
"kind": "fn",
"startLine": 309,
"endLine": 318,
"tokens": 119
}
],
"symbolSource": "ts",
"skeleton": "type DnsRecord struct {\ntype DnsRecordSpec struct {\nfunc BuildDnsRecordSpecs(spec DnsRecordSpec) []DnsRecord {\nfunc buildSpfRecord(mailHost, relayInclude string) string {\nfunc intPtr(v int) *int {\nfunc mtaStsPolicyID(domainName, mailHost string) string {\nfunc (r DnsRecord) EqualsNormalized(other DnsRecord) bool {\nfunc hostInsideDomain(host, domain string) bool {",
"importance": 0.0144
},
"services/protocols/internal/domain/entity/domain_test.go": {
"description": "TestNewDomain_StartsActiveWithNoMailboxes, TestDomain_Deactivate_SucceedsWithNoActiveMailboxes, TestDomain_Deactivate_FailsWithActiveMailboxes",
"tokens": 308,
"hash": "36c30a788908ffe6",
"size": 1075,
"mtimeMs": 1785635482524.3235,
"updatedAt": "2026-10-06T11:06:20.871Z",
"source": "scan",
"imports": [
"services/protocols/internal/domain/valueobject/autoconfig_xml_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/domain/entity/domain.go": {
"description": "contains the domain's aggregate roots and entities (Clean Architecture layer 1).",
"tokens": 398,
"hash": "e7d3097ae00c1503",
"size": 1390,
"mtimeMs": 1785635482524.3235,
"updatedAt": "2026-10-06T11:06:20.871Z",
"source": "scan",
"imports": [
"services/protocols/internal/domain/valueobject/autoconfig_xml_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/domain/entity/folder_test.go": {
"description": "TestFolder_NextUID_StartsAtOneAndIsMonotonic",
"tokens": 141,
"hash": "ed7eafac95071177",
"size": 491,
"mtimeMs": 1785635482524.3235,
"updatedAt": "2026-10-06T11:06:20.872Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/domain/entity/folder.go": {
"description": "Folder is an IMAP folder entity. uidNext is strictly monotonic (RFC 3501 section 2.3.1.1),",
"tokens": 168,
"hash": "99e91c5567e5a64f",
"size": 586,
"mtimeMs": 1785635482524.3235,
"updatedAt": "2026-10-06T11:06:20.872Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/domain/entity/mailbox_test.go": {
"description": "TestNewMailbox_StartsWithZeroUsage, TestMailbox_RecordUsage_AllowsUpToQuota, TestMailbox_RecordUsage_RejectsOverQuota",
"tokens": 329,
"hash": "892e4df20939ef17",
"size": 1149,
"mtimeMs": 1785635482524.3235,
"updatedAt": "2026-10-06T11:06:20.872Z",
"source": "scan",
"imports": [
"services/protocols/internal/domain/valueobject/autoconfig_xml_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/domain/entity/mailbox.go": {
"description": "Mailbox (10 fields); methods: Address, UsedBytes, Quota, RecordUsage",
"tokens": 324,
"hash": "c114c865ddb098d2",
"size": 1132,
"mtimeMs": 1785635482524.3235,
"updatedAt": "2026-10-06T11:06:20.872Z",
"source": "scan",
"imports": [
"services/protocols/internal/domain/valueobject/autoconfig_xml_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/domain/entity/outbound_job_test.go": {
"description": "TestCalculateNextBackoff_FollowsRetryTable, TestCalculateNextBackoff_ExpiredJobIsPermanent",
"tokens": 532,
"hash": "5ae778fb8f634de6",
"size": 1859,
"mtimeMs": 1785635482524.3235,
"updatedAt": "2026-10-06T11:06:20.872Z",
"source": "scan",
"symbols": [
{
"name": "TestCalculateNextBackoff_FollowsRetryTable",
"kind": "fn",
"startLine": 13,
"endLine": 47,
"tokens": 360
},
{
"name": "TestCalculateNextBackoff_ExpiredJobIsPermanent",
"kind": "fn",
"startLine": 49,
"endLine": 54,
"tokens": 65
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/domain/entity/outbound_job.go": {
"description": "OutboundJob (35 fields)",
"tokens": 705,
"hash": "a5b2fe3cc2bbc0da",
"size": 2466,
"mtimeMs": 1785635482524.3235,
"updatedAt": "2026-10-06T11:06:20.872Z",
"source": "scan",
"symbols": [
{
"name": "OutboundJobStatus",
"kind": "class",
"startLine": 10,
"endLine": 10,
"tokens": 9
},
{
"name": "OutboundJob",
"kind": "class",
"startLine": 21,
"endLine": 37,
"tokens": 127
},
{
"name": "CalculateNextBackoff",
"kind": "fn",
"startLine": 44,
"endLine": 87,
"tokens": 332
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/domain/entity/sieve_script.go": {
"description": "SieveScript represents a user's Sieve filtering script entity.",
"tokens": 68,
"hash": "735cbfb2dea046e3",
"size": 237,
"mtimeMs": 1785635482524.3235,
"updatedAt": "2026-10-06T11:06:20.872Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/domain/entity/sieve_validator_test.go": {
"description": "TestValidateSieveScript_ValidScripts, TestValidateSieveScript_InvalidScripts",
"tokens": 396,
"hash": "ead8ddb79cdf1f96",
"size": 1384,
"mtimeMs": 1785635482524.3235,
"updatedAt": "2026-10-06T11:06:20.872Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/domain/entity/sieve_validator.go": {
"description": "ValidateSieveScript",
"tokens": 644,
"hash": "7e79c6ed4ac908b9",
"size": 2251,
"mtimeMs": 1785635482524.3235,
"updatedAt": "2026-10-06T11:06:20.872Z",
"source": "scan",
"symbols": [
{
"name": "ValidateSieveScript",
"kind": "fn",
"startLine": 18,
"endLine": 117,
"tokens": 486
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/domain/entity/tls_policy_enforcement_test.go": {
"description": "TestTLSPolicy_DaneTakesPrecedenceOverMtaSts, TestTLSPolicy_OpportunisticDoesNotRequireValidation, TestTLSPolicy_MtaStsTestingDoesNotEnforce, TestTL...",
"tokens": 1571,
"hash": "ea380a98d0667574",
"size": 5498,
"mtimeMs": 1785635482524.3235,
"updatedAt": "2026-10-06T11:06:20.872Z",
"source": "scan",
"symbols": [
{
"name": "selfSignedCert",
"kind": "fn",
"startLine": 18,
"endLine": 39,
"tokens": 190
},
{
"name": "TestTLSPolicy_DaneTakesPrecedenceOverMtaSts",
"kind": "fn",
"startLine": 42,
"endLine": 52,
"tokens": 128
},
{
"name": "TestTLSPolicy_OpportunisticDoesNotRequireValidation",
"kind": "fn",
"startLine": 56,
"endLine": 60,
"tokens": 58
},
{
"name": "TestTLSPolicy_MtaStsTestingDoesNotEnforce",
"kind": "fn",
"startLine": 64,
"endLine": 74,
"tokens": 106
},
{
"name": "TestTLSPolicy_DaneAlwaysEnforces",
"kind": "fn",
"startLine": 77,
"endLine": 81,
"tokens": 47
},
{
"name": "TestTLSPolicy_CoversHostAppliesSingleLabelWildcard",
"kind": "fn",
"startLine": 84,
"endLine": 102,
"tokens": 162
},
{
"name": "TestTLSPolicy_OpportunisticCoversEveryHost",
"kind": "fn",
"startLine": 105,
"endLine": 109,
"tokens": 56
},
{
"name": "TestTLSPolicy_MatchesCertificateAgainstTlsaDigest",
"kind": "fn",
"startLine": 113,
"endLine": 131,
"tokens": 196
},
{
"name": "TestTLSPolicy_MatchesEitherRolloverRecord",
"kind": "fn",
"startLine": 135,
"endLine": 153,
"tokens": 216
},
{
"name": "TestTLSPolicy_MatchesCertificateRejectsEmptyInputs",
"kind": "fn",
"startLine": 155,
"endLine": 164,
"tokens": 128
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/domain/valueobject/autoconfig_xml_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/domain/entity/tls_policy_test.go": {
"description": "TestTLSPolicy_Effective_DANETakesPrecedenceOverMTASTS, TestTLSPolicy_Effective_FallsBackToMTASTSWithoutDANE, TestTLSPolicy_Effective_FallsBackToOpp...",
"tokens": 232,
"hash": "0fabf0b282bf323c",
"size": 809,
"mtimeMs": 1785635482524.3235,
"updatedAt": "2026-10-06T11:06:20.872Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/domain/entity/tls_policy.go": {
"description": "TLSPolicy (35 fields); methods: Effective, RequiresValidation, CoversHost, MatchesCertificate",
"tokens": 1537,
"hash": "781d750b3bc0434a",
"size": 5379,
"mtimeMs": 1785712435284.0425,
"updatedAt": "2026-10-06T11:06:20.872Z",
"source": "scan",
"symbols": [
{
"name": "TLSPolicy",
"kind": "class",
"startLine": 31,
"endLine": 46,
"tokens": 162
},
{
"name": "NewTLSPolicy",
"kind": "fn",
"startLine": 50,
"endLine": 52,
"tokens": 43
},
{
"name": "NewDanePolicy",
"kind": "fn",
"startLine": 57,
"endLine": 59,
"tokens": 41
},
{
"name": "NewMtaStsPolicy",
"kind": "fn",
"startLine": 62,
"endLine": 64,
"tokens": 44
},
{
"name": "Effective",
"kind": "method",
"startLine": 68,
"endLine": 77,
"tokens": 54
},
{
"name": "RequiresValidation",
"kind": "method",
"startLine": 81,
"endLine": 83,
"tokens": 31
},
{
"name": "CoversHost",
"kind": "method",
"startLine": 88,
"endLine": 98,
"tokens": 59
},
{
"name": "matchMxPattern",
"kind": "fn",
"startLine": 102,
"endLine": 116,
"tokens": 123
},
{
"name": "MatchesCertificate",
"kind": "method",
"startLine": 122,
"endLine": 134,
"tokens": 86
},
{
"name": "digestFor",
"kind": "fn",
"startLine": 138,
"endLine": 160,
"tokens": 189
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/domain/valueobject/autoconfig_xml_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/domain/entity/tls_rpt_report_test.go": {
"description": "TestTlsRptReportCarriesThePolicyDomain, TestTlsRptReportParsesGzippedPayload",
"tokens": 603,
"hash": "9337eba33ccbf276",
"size": 2108,
"mtimeMs": 1787249203026.132,
"updatedAt": "2026-10-06T11:06:20.872Z",
"source": "scan",
"symbols": [
{
"name": "TestTlsRptReportCarriesThePolicyDomain",
"kind": "fn",
"startLine": 20,
"endLine": 40,
"tokens": 206
},
{
"name": "TestTlsRptReportParsesGzippedPayload",
"kind": "fn",
"startLine": 43,
"endLine": 60,
"tokens": 130
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/domain/entity/tls_rpt_report.go": {
"description": "TlsRptPolicy (34 fields)",
"tokens": 718,
"hash": "c8a0485dc0bf65a7",
"size": 2511,
"mtimeMs": 1787249213083.6736,
"updatedAt": "2026-10-06T11:06:20.873Z",
"source": "scan",
"symbols": [
{
"name": "TlsRptPolicy",
"kind": "class",
"startLine": 12,
"endLine": 16,
"tokens": 25
},
{
"name": "TlsRptReport",
"kind": "class",
"startLine": 18,
"endLine": 25,
"tokens": 55
},
{
"name": "tlsRptJsonReport",
"kind": "class",
"startLine": 27,
"endLine": 47,
"tokens": 236
},
{
"name": "ParseTlsRptReport",
"kind": "fn",
"startLine": 50,
"endLine": 95,
"tokens": 356
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/domain/event/events_test.go": {
"description": "TestEmailReceived_ImplementsDomainEvent, TestEmailBounced_ImplementsDomainEvent",
"tokens": 138,
"hash": "a03debbf4115c5f1",
"size": 482,
"mtimeMs": 1785635482524.9722,
"updatedAt": "2026-10-06T11:06:20.873Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/domain/event/events.go": {
"description": "contains the domain events listed in PLAN.md section 3.",
"tokens": 1066,
"hash": "f6f5e1ffef4dab9c",
"size": 3728,
"mtimeMs": 1785635482524.3235,
"updatedAt": "2026-10-06T11:06:20.873Z",
"source": "scan",
"symbols": [
{
"name": "DomainEvent",
"kind": "class",
"startLine": 9,
"endLine": 12,
"tokens": 20
},
{
"name": "EmailReceived",
"kind": "class",
"startLine": 14,
"endLine": 14,
"tokens": 17
},
{
"name": "Type",
"kind": "method",
"startLine": 16,
"endLine": 16,
"tokens": 21
},
{
"name": "AggregateID",
"kind": "method",
"startLine": 17,
"endLine": 17,
"tokens": 23
},
{
"name": "EmailAccepted",
"kind": "class",
"startLine": 19,
"endLine": 19,
"tokens": 17
},
{
"name": "Type",
"kind": "method",
"startLine": 21,
"endLine": 21,
"tokens": 21
},
{
"name": "AggregateID",
"kind": "method",
"startLine": 22,
"endLine": 22,
"tokens": 23
},
{
"name": "EmailDelivered",
"kind": "class",
"startLine": 24,
"endLine": 24,
"tokens": 16
},
{
"name": "Type",
"kind": "method",
"startLine": 26,
"endLine": 26,
"tokens": 22
},
{
"name": "AggregateID",
"kind": "method",
"startLine": 27,
"endLine": 27,
"tokens": 22
},
{
"name": "EmailDeferred",
"kind": "class",
"startLine": 29,
"endLine": 29,
"tokens": 16
},
{
"name": "Type",
"kind": "method",
"startLine": 31,
"endLine": 31,
"tokens": 21
},
{
"name": "AggregateID",
"kind": "method",
"startLine": 32,
"endLine": 32,
"tokens": 22
},
{
"name": "EmailBounced",
"kind": "class",
"startLine": 34,
"endLine": 34,
"tokens": 15
},
{
"name": "Type",
"kind": "method",
"startLine": 36,
"endLine": 36,
"tokens": 21
},
{
"name": "AggregateID",
"kind": "method",
"startLine": 37,
"endLine": 37,
"tokens": 21
},
{
"name": "MailboxQuotaWarning",
"kind": "class",
"startLine": 39,
"endLine": 39,
"tokens": 18
},
{
"name": "Type",
"kind": "method",
"startLine": 41,
"endLine": 41,
"tokens": 25
},
{
"name": "AggregateID",
"kind": "method",
"startLine": 42,
"endLine": 42,
"tokens": 24
},
{
"name": "MailboxQuotaExceeded",
"kind": "class",
"startLine": 44,
"endLine": 44,
"tokens": 19
},
{
"name": "Type",
"kind": "method",
"startLine": 46,
"endLine": 46,
"tokens": 25
},
{
"name": "AggregateID",
"kind": "method",
"startLine": 47,
"endLine": 47,
"tokens": 25
},
{
"name": "SpamDetected",
"kind": "class",
"startLine": 49,
"endLine": 49,
"tokens": 16
},
{
"name": "Type",
"kind": "method",
"startLine": 51,
"endLine": 51,
"tokens": 21
},
{
"name": "AggregateID",
"kind": "method",
"startLine": 52,
"endLine": 52,
"tokens": 22
},
{
"name": "VirusDetected",
"kind": "class",
"startLine": 54,
"endLine": 54,
"tokens": 17
},
{
"name": "Type",
"kind": "method",
"startLine": 56,
"endLine": 56,
"tokens": 21
},
{
"name": "AggregateID",
"kind": "method",
"startLine": 57,
"endLine": 57,
"tokens": 23
},
{
"name": "DkimRotationStarted",
"kind": "class",
"startLine": 59,
"endLine": 59,
"tokens": 18
},
{
"name": "Type",
"kind": "method",
"startLine": 61,
"endLine": 61,
"tokens": 25
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/domain/sieve/parser.go": {
"description": "Interface: statement (12 methods)",
"tokens": 2127,
"hash": "552355564a125db5",
"size": 7444,
"mtimeMs": 1787415740165.5603,
"updatedAt": "2026-10-06T11:06:20.873Z",
"source": "scan",
"symbols": [
{
"name": "statement",
"kind": "class",
"startLine": 10,
"endLine": 13,
"tokens": 36
},
{
"name": "conditional",
"kind": "class",
"startLine": 17,
"endLine": 20,
"tokens": 20
},
{
"name": "branch",
"kind": "class",
"startLine": 22,
"endLine": 25,
"tokens": 15
},
{
"name": "stopped",
"kind": "method",
"startLine": 27,
"endLine": 34,
"tokens": 56
},
{
"name": "fileInto",
"kind": "class",
"startLine": 36,
"endLine": 36,
"tokens": 11
},
{
"name": "stopped",
"kind": "method",
"startLine": 38,
"endLine": 45,
"tokens": 77
},
{
"name": "discard",
"kind": "class",
"startLine": 47,
"endLine": 47,
"tokens": 6
},
{
"name": "stopped",
"kind": "method",
"startLine": 49,
"endLine": 52,
"tokens": 26
},
{
"name": "addFlag",
"kind": "class",
"startLine": 54,
"endLine": 54,
"tokens": 10
},
{
"name": "stopped",
"kind": "method",
"startLine": 56,
"endLine": 64,
"tokens": 57
},
{
"name": "keep",
"kind": "class",
"startLine": 66,
"endLine": 66,
"tokens": 6
},
{
"name": "stopped",
"kind": "method",
"startLine": 68,
"endLine": 68,
"tokens": 19
},
{
"name": "stop",
"kind": "class",
"startLine": 70,
"endLine": 70,
"tokens": 6
},
{
"name": "stopped",
"kind": "method",
"startLine": 72,
"endLine": 72,
"tokens": 18
},
{
"name": "vacation",
"kind": "class",
"startLine": 74,
"endLine": 77,
"tokens": 16
},
{
"name": "stopped",
"kind": "method",
"startLine": 79,
"endLine": 85,
"tokens": 54
},
{
"name": "splitStatements",
"kind": "fn",
"startLine": 92,
"endLine": 135,
"tokens": 233
},
{
"name": "parseBlock",
"kind": "fn",
"startLine": 138,
"endLine": 155,
"tokens": 98
},
{
"name": "parseStatement",
"kind": "fn",
"startLine": 157,
"endLine": 199,
"tokens": 342
},
{
"name": "parseConditional",
"kind": "fn",
"startLine": 201,
"endLine": 242,
"tokens": 270
},
{
"name": "readBraced",
"kind": "fn",
"startLine": 245,
"endLine": 257,
"tokens": 110
},
{
"name": "firstWord",
"kind": "fn",
"startLine": 259,
"endLine": 266,
"tokens": 49
},
{
"name": "quotedStrings",
"kind": "fn",
"startLine": 269,
"endLine": 297,
"tokens": 190
},
{
"name": "singleString",
"kind": "fn",
"startLine": 299,
"endLine": 305,
"tokens": 72
},
{
"name": "parseVacation",
"kind": "fn",
"startLine": 307,
"endLine": 318,
"tokens": 142
}
],
"symbolSource": "ts",
"skeleton": "type statement interface {\ntype conditional struct {\ntype branch struct {\nfunc (c conditional) stopped(msg Message, out *Outcome) bool {\ntype fileInto struct{ folder string }\nfunc (f fileInto) stopped(_ Message, out *Outcome) bool {\ntype discard struct{}\nfunc (discard) stopped(_ Message, out *Outcome) bool {\ntype addFlag struct{ flag string }\nfunc (a addFlag) stopped(_ Message, out *Outcome) bool {\ntype keep struct{}\nfunc (keep) stopped(_ Message, _ *Outcome) bool { return false }\ntype stop struct{}\nfunc (stop) stopped(_ Message, _ *Outcome) bool { return true }\ntype vacation struct {\nfunc (v vacation) stopped(msg Message, out *Outcome) bool {\nfunc splitStatements(source string) []string {\nfunc parseBlock(lines []string, i int) ([]statement, int, error) {\nfunc parseStatement(lines []string, i int) (statement, int, error) {\nfunc parseConditional(lines []string, i int) (statement, int, error) {\nfunc readBraced(lines []string, i int) ([]statement, int, error) {\nfunc firstWord(line string) string {\nfunc quotedStrings(fragment string) []string {\nfunc singleString(line, keyword string) (string, error) {\nfunc parseVacation(line string) (statement, error) {",
"importance": 0.0185
},
"services/protocols/internal/domain/sieve/sieve_test.go": {
"description": "TestRuleFilesTheMessageInItsFolder, TestRuleThatDoesNotMatchLeavesTheMessageAlone, TestHeaderNameIsCaseInsensitive, TestContainsIsCaseInsensitiveOn...",
"tokens": 4735,
"hash": "ee5f74dd42688051",
"size": 16570,
"mtimeMs": 1787417842590.1282,
"updatedAt": "2026-10-06T11:06:20.873Z",
"source": "scan",
"symbols": [
{
"name": "evaluate",
"kind": "fn",
"startLine": 16,
"endLine": 23,
"tokens": 60
},
{
"name": "TestRuleFilesTheMessageInItsFolder",
"kind": "fn",
"startLine": 28,
"endLine": 38,
"tokens": 89
},
{
"name": "TestRuleThatDoesNotMatchLeavesTheMessageAlone",
"kind": "fn",
"startLine": 40,
"endLine": 47,
"tokens": 73
},
{
"name": "TestHeaderNameIsCaseInsensitive",
"kind": "fn",
"startLine": 51,
"endLine": 57,
"tokens": 81
},
{
"name": "TestContainsIsCaseInsensitiveOnTheValue",
"kind": "fn",
"startLine": 59,
"endLine": 66,
"tokens": 79
},
{
"name": "TestIsRequiresTheWholeValue",
"kind": "fn",
"startLine": 68,
"endLine": 76,
"tokens": 136
},
{
"name": "TestMatchesUsesWildcardsNotRegex",
"kind": "fn",
"startLine": 80,
"endLine": 92,
"tokens": 153
},
{
"name": "TestWildcardDotIsLiteral",
"kind": "fn",
"startLine": 97,
"endLine": 103,
"tokens": 86
},
{
"name": "TestAnyofMatchesWhenOneTestPasses",
"kind": "fn",
"startLine": 105,
"endLine": 113,
"tokens": 111
},
{
"name": "TestAllofRequiresEveryTest",
"kind": "fn",
"startLine": 115,
"endLine": 127,
"tokens": 174
},
{
"name": "TestElsifAndElse",
"kind": "fn",
"startLine": 129,
"endLine": 146,
"tokens": 165
},
{
"name": "TestFirstMatchingRuleDecidesTheFolder",
"kind": "fn",
"startLine": 150,
"endLine": 158,
"tokens": 117
},
{
"name": "TestStopEndsEvaluation",
"kind": "fn",
"startLine": 160,
"endLine": 168,
"tokens": 107
},
{
"name": "TestDiscardIsHonoured",
"kind": "fn",
"startLine": 170,
"endLine": 176,
"tokens": 69
},
{
"name": "TestAddflagMarksTheMessage",
"kind": "fn",
"startLine": 178,
"endLine": 184,
"tokens": 86
},
{
"name": "TestVacationProducesAReply",
"kind": "fn",
"startLine": 191,
"endLine": 205,
"tokens": 139
},
{
"name": "TestVacationStaysSilentForAutomatedMail",
"kind": "fn",
"startLine": 210,
"endLine": 224,
"tokens": 212
},
{
"name": "TestVacationDoesNotReplyToYourself",
"kind": "fn",
"startLine": 226,
"endLine": 235,
"tokens": 94
},
{
"name": "TestUnparseableScriptIsReportedNotFatal",
"kind": "fn",
"startLine": 242,
"endLine": 246,
"tokens": 57
},
{
"name": "TestEmptyScriptDoesNothing",
"kind": "fn",
"startLine": 248,
"endLine": 253,
"tokens": 71
},
{
"name": "TestCommentsAndBlankLinesAreIgnored",
"kind": "fn",
"startLine": 255,
"endLine": 264,
"tokens": 95
},
{
"name": "TestFolderNamesKeepTheirAccents",
"kind": "fn",
"startLine": 268,
"endLine": 278,
"tokens": 143
},
{
"name": "TestEvaluationIsBounded",
"kind": "fn",
"startLine": 281,
"endLine": 289,
"tokens": 90
},
{
"name": "TestMatchesIsAnchoredNotASubstring",
"kind": "fn",
"startLine": 295,
"endLine": 307,
"tokens": 146
},
{
"name": "TestMatchesSingleCharacterWildcard",
"kind": "fn",
"startLine": 310,
"endLine": 327,
"tokens": 194
},
{
"name": "TestMatchesStarInTheMiddle",
"kind": "fn",
"startLine": 330,
"endLine": 342,
"tokens": 156
},
{
"name": "TestMatchesDoesNotBlowUpOnManyStars",
"kind": "fn",
"startLine": 346,
"endLine": 361,
"tokens": 168
},
{
"name": "TestEscapedWildcardIsALiteralCharacter",
"kind": "fn",
"startLine": 370,
"endLine": 384,
"tokens": 179
},
{
"name": "TestEscapedQuestionMarkIsALiteralCharacter",
"kind": "fn",
"startLine": 386,
"endLine": 398,
"tokens": 151
},
{
"name": "TestVacationStaysSilentForReservedAddressesWithSuffixes",
"kind": "fn",
"startLine": 407,
"endLine": 425,
"tokens": 158
}
],
"symbolSource": "ts",
"skeleton": "func evaluate(t *testing.T, script string, msg Message) Outcome {\nfunc TestRuleFilesTheMessageInItsFolder(t *testing.T) {\nfunc TestRuleThatDoesNotMatchLeavesTheMessageAlone(t *testing.T) {\nfunc TestHeaderNameIsCaseInsensitive(t *testing.T) {\nfunc TestContainsIsCaseInsensitiveOnTheValue(t *testing.T) {\nfunc TestIsRequiresTheWholeValue(t *testing.T) {\nfunc TestMatchesUsesWildcardsNotRegex(t *testing.T) {\nfunc TestWildcardDotIsLiteral(t *testing.T) {\nfunc TestAnyofMatchesWhenOneTestPasses(t *testing.T) {\nfunc TestAllofRequiresEveryTest(t *testing.T) {\nfunc TestElsifAndElse(t *testing.T) {\nfunc TestFirstMatchingRuleDecidesTheFolder(t *testing.T) {\nfunc TestStopEndsEvaluation(t *testing.T) {\nfunc TestDiscardIsHonoured(t *testing.T) {\nfunc TestAddflagMarksTheMessage(t *testing.T) {\nfunc TestVacationProducesAReply(t *testing.T) {\nfunc TestVacationStaysSilentForAutomatedMail(t *testing.T) {\nfunc TestVacationDoesNotReplyToYourself(t *testing.T) {\nfunc TestUnparseableScriptIsReportedNotFatal(t *testing.T) {\nfunc TestEmptyScriptDoesNothing(t *testing.T) {\nfunc TestCommentsAndBlankLinesAreIgnored(t *testing.T) {\nfunc TestFolderNamesKeepTheirAccents(t *testing.T) {\nfunc TestEvaluationIsBounded(t *testing.T) {\nfunc TestMatchesIsAnchoredNotASubstring(t *testing.T) {\nfunc TestMatchesSingleCharacterWildcard(t *testing.T) {\nfunc TestMatchesStarInTheMiddle(t *testing.T) {",
"importance": 0.0144
},
"services/protocols/internal/domain/sieve/sieve.go": {
"description": "evaluates the mail-filtering rules a mailbox owner writes.",
"tokens": 926,
"hash": "a5a9084bb94fb006",
"size": 3240,
"mtimeMs": 1787415704847.2263,
"updatedAt": "2026-10-06T11:06:20.873Z",
"source": "scan",
"symbols": [
{
"name": "Message",
"kind": "class",
"startLine": 24,
"endLine": 33,
"tokens": 107
},
{
"name": "header",
"kind": "method",
"startLine": 35,
"endLine": 40,
"tokens": 43
},
{
"name": "VacationReply",
"kind": "class",
"startLine": 43,
"endLine": 46,
"tokens": 18
},
{
"name": "Outcome",
"kind": "class",
"startLine": 49,
"endLine": 60,
"tokens": 113
},
{
"name": "Script",
"kind": "class",
"startLine": 63,
"endLine": 65,
"tokens": 14
},
{
"name": "Parse",
"kind": "fn",
"startLine": 71,
"endLine": 84,
"tokens": 126
},
{
"name": "Evaluate",
"kind": "fn",
"startLine": 87,
"endLine": 94,
"tokens": 45
},
{
"name": "run",
"kind": "fn",
"startLine": 97,
"endLine": 104,
"tokens": 48
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/domain/sieve/test.go": {
"description": "Interface: test (6 methods)",
"tokens": 1741,
"hash": "5bdbc1c9be981a5d",
"size": 6091,
"mtimeMs": 1787416817545.6025,
"updatedAt": "2026-10-06T11:06:20.874Z",
"source": "scan",
"symbols": [
{
"name": "test",
"kind": "class",
"startLine": 9,
"endLine": 11,
"tokens": 15
},
{
"name": "headerTest",
"kind": "class",
"startLine": 14,
"endLine": 18,
"tokens": 24
},
{
"name": "matches",
"kind": "method",
"startLine": 20,
"endLine": 27,
"tokens": 51
},
{
"name": "anyOf",
"kind": "class",
"startLine": 29,
"endLine": 29,
"tokens": 10
},
{
"name": "matches",
"kind": "method",
"startLine": 31,
"endLine": 38,
"tokens": 38
},
{
"name": "allOf",
"kind": "class",
"startLine": 40,
"endLine": 40,
"tokens": 10
},
{
"name": "matches",
"kind": "method",
"startLine": 42,
"endLine": 49,
"tokens": 42
},
{
"name": "notTest",
"kind": "class",
"startLine": 51,
"endLine": 51,
"tokens": 10
},
{
"name": "matches",
"kind": "method",
"startLine": 53,
"endLine": 53,
"tokens": 22
},
{
"name": "compare",
"kind": "fn",
"startLine": 60,
"endLine": 71,
"tokens": 81
},
{
"name": "wildcardMatch",
"kind": "fn",
"startLine": 81,
"endLine": 135,
"tokens": 378
},
{
"name": "parseTest",
"kind": "fn",
"startLine": 138,
"endLine": 170,
"tokens": 294
},
{
"name": "parseTestList",
"kind": "fn",
"startLine": 174,
"endLine": 225,
"tokens": 332
},
{
"name": "parseHeaderTest",
"kind": "fn",
"startLine": 227,
"endLine": 240,
"tokens": 133
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/domain/sieve/vacation.go": {
"description": "shouldAutoReply decides whether a message may be answered automatically.",
"tokens": 701,
"hash": "e32134baf71da9b6",
"size": 2451,
"mtimeMs": 1787417356584.9895,
"updatedAt": "2026-10-06T11:06:20.874Z",
"source": "scan",
"symbols": [
{
"name": "shouldAutoReply",
"kind": "fn",
"startLine": 11,
"endLine": 75,
"tokens": 579
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/domain/valueobject/autoconfig_xml_test.go": {
"description": "TestBuildThunderbirdAutoconfigXML, TestBuildOutlookAutodiscoverXML",
"tokens": 220,
"hash": "861f5b7c3e48f600",
"size": 769,
"mtimeMs": 1785635482525.0513,
"updatedAt": "2026-10-06T11:06:20.874Z",
"source": "scan",
"importance": 0.1886
},
"services/protocols/internal/domain/valueobject/autoconfig_xml.go": {
"description": "BuildThunderbirdAutoconfigXML, BuildOutlookAutodiscoverXML",
"tokens": 735,
"hash": "1bc752bf0b8898be",
"size": 2570,
"mtimeMs": 1785635482524.9722,
"updatedAt": "2026-10-06T11:06:20.874Z",
"source": "scan",
"symbols": [
{
"name": "BuildThunderbirdAutoconfigXML",
"kind": "fn",
"startLine": 8,
"endLine": 42,
"tokens": 352
},
{
"name": "BuildOutlookAutodiscoverXML",
"kind": "fn",
"startLine": 45,
"endLine": 79,
"tokens": 322
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/domain/valueobject/delivery_status_code_test.go": {
"description": "TestNewDeliveryStatusCode_AcceptsSuccess, TestNewDeliveryStatusCode_AcceptsPermanentFailure, TestNewDeliveryStatusCode_RejectsInvalidClass",
"tokens": 220,
"hash": "1a8674d9d1b68303",
"size": 770,
"mtimeMs": 1785635482525.0513,
"updatedAt": "2026-10-06T11:06:20.874Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/domain/valueobject/delivery_status_code.go": {
"description": "DeliveryStatusCode (6 fields); methods: String",
"tokens": 206,
"hash": "b3eca24b6fc27545",
"size": 719,
"mtimeMs": 1785635482525.0513,
"updatedAt": "2026-10-06T11:06:20.874Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/domain/valueobject/domain_name_test.go": {
"description": "TestNewDomainName_AcceptsValidFQDN, TestNewDomainName_RejectsEmpty, TestNewDomainName_RejectsLabelWithoutDot, TestNewDomainName_RejectsTrailingHyph...",
"tokens": 398,
"hash": "19500d191cbf90fd",
"size": 1393,
"mtimeMs": 1785635482525.0513,
"updatedAt": "2026-10-06T11:06:20.874Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/domain/valueobject/domain_name.go": {
"description": "DomainName (13 fields); methods: String, IsPunycode",
"tokens": 403,
"hash": "cfd7bd03cc027d61",
"size": 1410,
"mtimeMs": 1785635482525.0513,
"updatedAt": "2026-10-06T11:06:20.874Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/domain/valueobject/dsn_bounce_test.go": {
"description": "TestBuildDsnReport_PreventsBounceLoopForEmptySender, TestBuildDsnReport_GeneratesValidMIME, TestBuildDsnReport_UsesTheConfiguredMailHost, TestBuild...",
"tokens": 721,
"hash": "556fb9f0d361d5be",
"size": 2523,
"mtimeMs": 1785711428684.797,
"updatedAt": "2026-10-06T11:06:20.875Z",
"source": "scan",
"symbols": [
{
"name": "TestBuildDsnReport_PreventsBounceLoopForEmptySender",
"kind": "fn",
"startLine": 8,
"endLine": 18,
"tokens": 132
},
{
"name": "TestBuildDsnReport_GeneratesValidMIME",
"kind": "fn",
"startLine": 20,
"endLine": 36,
"tokens": 197
},
{
"name": "TestBuildDsnReport_UsesTheConfiguredMailHost",
"kind": "fn",
"startLine": 41,
"endLine": 54,
"tokens": 190
},
{
"name": "TestBuildDsnReport_MarksItselfAutomatic",
"kind": "fn",
"startLine": 58,
"endLine": 64,
"tokens": 100
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/domain/valueobject/dsn_bounce.go": {
"description": "BuildDsnReport",
"tokens": 1106,
"hash": "dc04ce8ceefd6b44",
"size": 3870,
"mtimeMs": 1785711428684.676,
"updatedAt": "2026-10-06T11:06:20.875Z",
"source": "scan",
"symbols": [
{
"name": "DsnAction",
"kind": "class",
"startLine": 9,
"endLine": 9,
"tokens": 6
},
{
"name": "BuildDsnReport",
"kind": "fn",
"startLine": 31,
"endLine": 92,
"tokens": 841
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/domain/valueobject/email_address_test.go": {
"description": "TestNewEmailAddress_AcceptsValidAddress, TestNewEmailAddress_RejectsMissingAtSign, TestNewEmailAddress_RejectsEmptyLocalPart, TestNewEmailAddress_R...",
"tokens": 411,
"hash": "3010789c30f205d7",
"size": 1438,
"mtimeMs": 1785635482525.0513,
"updatedAt": "2026-10-06T11:06:20.875Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/domain/valueobject/email_address.go": {
"description": "contains the domain's immutable, self-validating value objects.",
"tokens": 430,
"hash": "aee4786bf3e23940",
"size": 1505,
"mtimeMs": 1785635482525.0513,
"updatedAt": "2026-10-06T11:06:20.875Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/domain/valueobject/message_id_test.go": {
"description": "TestNewMessageID_AcceptsAngleBracketForm, TestNewMessageID_RejectsEmpty, TestNewMessageID_RejectsMissingAngleBrackets",
"tokens": 202,
"hash": "282c7e48abf811de",
"size": 707,
"mtimeMs": 1785635482525.0513,
"updatedAt": "2026-10-06T11:06:20.875Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/domain/valueobject/message_id.go": {
"description": "MessageID (6 fields); methods: String",
"tokens": 186,
"hash": "6b6c8746878f2a86",
"size": 651,
"mtimeMs": 1785635482525.0513,
"updatedAt": "2026-10-06T11:06:20.875Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/domain/valueobject/mta_sts_policy_test.go": {
"description": "TestMtaStsPolicy_Format",
"tokens": 178,
"hash": "ecddbbfb2cd784ed",
"size": 621,
"mtimeMs": 1785635482525.0513,
"updatedAt": "2026-10-06T11:06:20.875Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/domain/valueobject/mta_sts_policy.go": {
"description": "MtaStsPolicy (14 fields); methods: Format",
"tokens": 260,
"hash": "bbab7081b32f5c4b",
"size": 910,
"mtimeMs": 1785635482525.0513,
"updatedAt": "2026-10-06T11:06:20.875Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/domain/valueobject/password_hash_test.go": {
"description": "TestNewPasswordHash_AcceptsArgon2idPHCString, TestNewPasswordHash_RejectsNonArgon2idScheme, TestNewPasswordHash_RejectsEmpty",
"tokens": 208,
"hash": "3136989b893d378f",
"size": 725,
"mtimeMs": 1785635482525.0513,
"updatedAt": "2026-10-06T11:06:20.875Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/domain/valueobject/password_hash.go": {
"description": "PasswordHash (5 fields); methods: String",
"tokens": 223,
"hash": "3b74d2f7fae2dfd3",
"size": 778,
"mtimeMs": 1785635482525.0513,
"updatedAt": "2026-10-06T11:06:20.875Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/domain/valueobject/protocol_security_level_test.go": {
"description": "TestProtocolSecurityLevel_StringRoundTrip",
"tokens": 120,
"hash": "a995d84b524bfd31",
"size": 420,
"mtimeMs": 1785635482525.0513,
"updatedAt": "2026-10-06T11:06:20.876Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/domain/valueobject/protocol_security_level.go": {
"description": "ProtocolSecurityLevel is the effective TLS requirement for a listener (see PLAN.md section 4).",
"tokens": 190,
"hash": "c70e4927232879e1",
"size": 664,
"mtimeMs": 1785635482525.0513,
"updatedAt": "2026-10-06T11:06:20.876Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/domain/valueobject/quota_limit_test.go": {
"description": "TestNewQuotaLimit_AcceptsPositiveBytes, TestNewQuotaLimit_RejectsZero, TestNewQuotaLimit_RejectsNegative, TestQuotaLimit_Exceeds",
"tokens": 261,
"hash": "527683c9d564a051",
"size": 912,
"mtimeMs": 1785635482525.0513,
"updatedAt": "2026-10-06T11:06:20.876Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/domain/valueobject/quota_limit.go": {
"description": "QuotaLimit is a strictly positive byte quota (see PLAN.md section 3, Mailbox invariant).",
"tokens": 187,
"hash": "2836bf53dca581c6",
"size": 652,
"mtimeMs": 1785635482525.0513,
"updatedAt": "2026-10-06T11:06:20.876Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/domain/valueobject/scan_result_test.go": {
"description": "TestNewCleanScanResult, TestNewVirusScanResult",
"tokens": 130,
"hash": "f1805c18577692f4",
"size": 453,
"mtimeMs": 1785635482525.0513,
"updatedAt": "2026-10-06T11:06:20.876Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/domain/valueobject/scan_result.go": {
"description": "ScanResult (16 fields)",
"tokens": 268,
"hash": "f3cbe61c2a7d6e85",
"size": 935,
"mtimeMs": 1785635482525.0513,
"updatedAt": "2026-10-06T11:06:20.876Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/domain/valueobject/spam_verdict_test.go": {
"description": "TestSpamVerdictFromScore_MatchesThresholds",
"tokens": 164,
"hash": "d39324dfa97614f0",
"size": 571,
"mtimeMs": 1785635482525.0513,
"updatedAt": "2026-10-06T11:06:20.876Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/domain/valueobject/spam_verdict.go": {
"description": "SpamVerdict classifies a message by Rspamd score (thresholds from PLAN.md section 10.1).",
"tokens": 136,
"hash": "ace33a2e1057a62d",
"size": 474,
"mtimeMs": 1785635482525.0513,
"updatedAt": "2026-10-06T11:06:20.876Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/domain/valueobject/tlsa_record_test.go": {
"description": "TestNewTLSARecord_AcceptsUsage3Selector1MatchingType1, TestNewTLSARecord_RejectsUsage2, TestNewTLSARecord_RejectsWrongLengthHash",
"tokens": 328,
"hash": "cfebaa39124cbdd3",
"size": 1147,
"mtimeMs": 1785635482525.0513,
"updatedAt": "2026-10-06T11:06:20.876Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/domain/valueobject/tlsa_record.go": {
"description": "TLSARecord models a DANE TLSA RR (RFC 6698/7671). Usage 2 (PKIX-CA) is rejected",
"tokens": 344,
"hash": "03165a8a0f74f032",
"size": 1202,
"mtimeMs": 1785635482525.0513,
"updatedAt": "2026-10-06T11:06:20.876Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/e2e/antispam_antivirus_e2e_test.go": {
"description": "TestAntispamAntivirusEndToEnd",
"tokens": 1692,
"hash": "609f0fb7b81deaa9",
"size": 5921,
"mtimeMs": 1787399704631.07,
"updatedAt": "2026-10-06T11:06:20.876Z",
"source": "scan",
"symbols": [
{
"name": "TestAntispamAntivirusEndToEnd",
"kind": "fn",
"startLine": 25,
"endLine": 163,
"tokens": 1284
},
{
"name": "sendTestSMTPMessage",
"kind": "fn",
"startLine": 165,
"endLine": 197,
"tokens": 206
},
{
"name": "fmtError",
"kind": "fn",
"startLine": 199,
"endLine": 201,
"tokens": 26
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/presentation/http/admin_dkim_api.go",
"services/protocols/internal/application/usecase/apply_rules_test.go",
"services/protocols/internal/infrastructure/clamav/clamav_adapter_test.go",
"services/protocols/internal/infrastructure/diskstorage/local_disk_blob_reader_test.go",
"services/protocols/internal/infrastructure/postgres/acme_repository.go",
"config/rspamd/actions.conf",
"services/protocols/internal/presentation/smtp/backend_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/e2e/dkim_rotation_e2e_test.go": {
"description": "TestDkimRotationLeavesAUsableKey",
"tokens": 1352,
"hash": "193afe49e70cf209",
"size": 4731,
"mtimeMs": 1787399704631.2756,
"updatedAt": "2026-10-06T11:06:20.876Z",
"source": "scan",
"symbols": [
{
"name": "TestDkimRotationLeavesAUsableKey",
"kind": "fn",
"startLine": 25,
"endLine": 142,
"tokens": 1142
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/presentation/http/admin_dkim_api.go",
"services/protocols/internal/infrastructure/dkim/keygen.go",
"services/protocols/internal/infrastructure/postgres/acme_repository.go",
"services/protocols/internal/infrastructure/vault/secret_vault_test.go",
"services/protocols/internal/domain/bimi/svg_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/e2e/dns_sync_e2e_test.go": {
"description": "e2eFakeDnsProvider (21 fields); methods: GetZoneID, ListRecords, CreateRecord, UpdateRecord",
"tokens": 1052,
"hash": "932dd9d1d532003f",
"size": 3682,
"mtimeMs": 1787399704631.413,
"updatedAt": "2026-10-06T11:06:20.876Z",
"source": "scan",
"symbols": [
{
"name": "TestDnsSyncAndSystemAliasesEndToEnd",
"kind": "fn",
"startLine": 16,
"endLine": 85,
"tokens": 714
},
{
"name": "e2eFakeDnsProvider",
"kind": "class",
"startLine": 87,
"endLine": 89,
"tokens": 21
},
{
"name": "GetZoneID",
"kind": "method",
"startLine": 91,
"endLine": 93,
"tokens": 35
},
{
"name": "ListRecords",
"kind": "method",
"startLine": 95,
"endLine": 101,
"tokens": 58
},
{
"name": "CreateRecord",
"kind": "method",
"startLine": 103,
"endLine": 107,
"tokens": 51
},
{
"name": "UpdateRecord",
"kind": "method",
"startLine": 109,
"endLine": 113,
"tokens": 51
},
{
"name": "DeleteRecord",
"kind": "method",
"startLine": 115,
"endLine": 117,
"tokens": 32
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/usecase/apply_rules_test.go",
"services/protocols/internal/domain/entity/dkim_key_pair_test.go",
"services/protocols/internal/infrastructure/postgres/acme_repository.go"
],
"importance": 0.0144
},
"services/protocols/internal/e2e/events_ws_e2e_test.go": {
"description": "TestEventStreamPushesDeliveredMail, TestEventStreamRequiresUserSession",
"tokens": 1752,
"hash": "c097f1ce2a90ba96",
"size": 6132,
"mtimeMs": 1787399704631.4895,
"updatedAt": "2026-10-06T11:06:20.877Z",
"source": "scan",
"symbols": [
{
"name": "TestEventStreamPushesDeliveredMail",
"kind": "fn",
"startLine": 26,
"endLine": 150,
"tokens": 1241
},
{
"name": "TestEventStreamRequiresUserSession",
"kind": "fn",
"startLine": 153,
"endLine": 181,
"tokens": 276
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/presentation/http/admin_dkim_api.go",
"services/protocols/internal/application/usecase/apply_rules_test.go",
"services/protocols/internal/infrastructure/diskstorage/local_disk_blob_reader_test.go",
"services/protocols/internal/infrastructure/postgres/acme_repository.go"
],
"importance": 0.0144
},
"services/protocols/internal/e2e/f2_complete_e2e_test.go": {
"description": "TestF2CompleteSuiteEndToEnd",
"tokens": 4535,
"hash": "4e8c7ee521af4a85",
"size": 15870,
"mtimeMs": 1787399704632.2104,
"updatedAt": "2026-10-06T11:06:20.877Z",
"source": "scan",
"symbols": [
{
"name": "TestF2CompleteSuiteEndToEnd",
"kind": "fn",
"startLine": 29,
"endLine": 454,
"tokens": 4309
}
],
"symbolSource": "ts",
"skeleton": "func TestF2CompleteSuiteEndToEnd(t *testing.T) {",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/application/usecase/apply_rules_test.go",
"services/protocols/internal/infrastructure/diskstorage/local_disk_blob_reader_test.go",
"services/protocols/internal/infrastructure/postgres/acme_repository.go",
"services/protocols/internal/presentation/imap/backend_test.go",
"services/protocols/internal/presentation/managesieve/conn_test.go",
"services/protocols/internal/presentation/pop3/conn_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/e2e/f3_complete_e2e_test.go": {
"description": "fakeDnsProvider (56 fields); methods: GetZoneID, ListRecords, CreateRecord, UpdateRecord",
"tokens": 4487,
"hash": "bc0717949074d8b2",
"size": 15704,
"mtimeMs": 1787399704632.6245,
"updatedAt": "2026-10-06T11:06:20.877Z",
"source": "scan",
"symbols": [
{
"name": "fakeDnsProvider",
"kind": "class",
"startLine": 31,
"endLine": 33,
"tokens": 20
},
{
"name": "newFakeDnsProvider",
"kind": "fn",
"startLine": 35,
"endLine": 37,
"tokens": 33
},
{
"name": "GetZoneID",
"kind": "method",
"startLine": 39,
"endLine": 41,
"tokens": 41
},
{
"name": "ListRecords",
"kind": "method",
"startLine": 43,
"endLine": 49,
"tokens": 58
},
{
"name": "CreateRecord",
"kind": "method",
"startLine": 51,
"endLine": 56,
"tokens": 77
},
{
"name": "UpdateRecord",
"kind": "method",
"startLine": 58,
"endLine": 62,
"tokens": 66
},
{
"name": "DeleteRecord",
"kind": "method",
"startLine": 64,
"endLine": 72,
"tokens": 58
},
{
"name": "TestPhase3CompleteEndToEnd",
"kind": "fn",
"startLine": 74,
"endLine": 408,
"tokens": 3592
},
{
"name": "sendTestEmail",
"kind": "fn",
"startLine": 410,
"endLine": 454,
"tokens": 315
}
],
"symbolSource": "ts",
"skeleton": "type fakeDnsProvider struct {\nfunc newFakeDnsProvider() *fakeDnsProvider {\nfunc (f *fakeDnsProvider) GetZoneID(_ context.Context, domainName string) (string, error) {\nfunc (f *fakeDnsProvider) ListRecords(_ context.Context, _ string) ([]entity.DnsRecord, error) {\nfunc (f *fakeDnsProvider) CreateRecord(_ context.Context, _ string, record entity.DnsRecord) error {\nfunc (f *fakeDnsProvider) UpdateRecord(_ context.Context, _ string, record entity.DnsRecord) error {\nfunc (f *fakeDnsProvider) DeleteRecord(_ context.Context, _ string, recordID string) error {\nfunc TestPhase3CompleteEndToEnd(t *testing.T) {\nfunc sendTestEmail(addr string, from string, to string, msg string) error {",
"imports": [
"services/protocols/internal/presentation/http/admin_dkim_api.go",
"services/protocols/internal/application/usecase/apply_rules_test.go",
"services/protocols/internal/domain/entity/dkim_key_pair_test.go",
"services/protocols/internal/domain/valueobject/autoconfig_xml_test.go",
"services/protocols/internal/infrastructure/clamav/clamav_adapter_test.go",
"services/protocols/internal/infrastructure/diskstorage/local_disk_blob_reader_test.go",
"services/protocols/internal/infrastructure/postgres/acme_repository.go",
"config/rspamd/actions.conf",
"services/protocols/internal/presentation/smtp/backend_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/e2e/http_services_e2e_test.go": {
"description": "TestHttpServicesEndToEnd",
"tokens": 1425,
"hash": "abe00a61d3734a3a",
"size": 4986,
"mtimeMs": 1787399704632.9004,
"updatedAt": "2026-10-06T11:06:20.877Z",
"source": "scan",
"symbols": [
{
"name": "TestHttpServicesEndToEnd",
"kind": "fn",
"startLine": 20,
"endLine": 128,
"tokens": 1320
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/presentation/http/admin_dkim_api.go",
"services/protocols/internal/application/usecase/apply_rules_test.go",
"services/protocols/internal/infrastructure/postgres/acme_repository.go"
],
"importance": 0.0144
},
"services/protocols/internal/e2e/imap_core_e2e_test.go": {
"description": "TestImapCoreEndToEnd",
"tokens": 3244,
"hash": "50985428fc16a352",
"size": 11354,
"mtimeMs": 1787399725310.788,
"updatedAt": "2026-10-06T11:06:20.877Z",
"source": "scan",
"symbols": [
{
"name": "TestImapCoreEndToEnd",
"kind": "fn",
"startLine": 25,
"endLine": 299,
"tokens": 3068
}
],
"symbolSource": "ts",
"skeleton": "func TestImapCoreEndToEnd(t *testing.T) {",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/application/usecase/apply_rules_test.go",
"services/protocols/internal/infrastructure/diskstorage/local_disk_blob_reader_test.go",
"services/protocols/internal/infrastructure/postgres/acme_repository.go",
"services/protocols/internal/presentation/imap/backend_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/e2e/imap_idle_condstore_e2e_test.go": {
"description": "TestImapIdleAndCondStoreEndToEnd",
"tokens": 2089,
"hash": "d079bd5fe8605b6b",
"size": 7309,
"mtimeMs": 1787399704633.3662,
"updatedAt": "2026-10-06T11:06:20.877Z",
"source": "scan",
"symbols": [
{
"name": "TestImapIdleAndCondStoreEndToEnd",
"kind": "fn",
"startLine": 25,
"endLine": 213,
"tokens": 1912
}
],
"symbolSource": "ts",
"skeleton": "func TestImapIdleAndCondStoreEndToEnd(t *testing.T) {",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/application/usecase/apply_rules_test.go",
"services/protocols/internal/infrastructure/diskstorage/local_disk_blob_reader_test.go",
"services/protocols/internal/infrastructure/postgres/acme_repository.go",
"services/protocols/internal/presentation/imap/backend_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/e2e/managesieve_e2e_test.go": {
"description": "TestManageSieveEndToEnd",
"tokens": 1814,
"hash": "e947dd4ccfd6152d",
"size": 6348,
"mtimeMs": 1787399704637.3716,
"updatedAt": "2026-10-06T11:06:20.878Z",
"source": "scan",
"symbols": [
{
"name": "TestManageSieveEndToEnd",
"kind": "fn",
"startLine": 23,
"endLine": 216,
"tokens": 1690
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/usecase/apply_rules_test.go",
"services/protocols/internal/infrastructure/postgres/acme_repository.go",
"services/protocols/internal/presentation/managesieve/conn_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/e2e/migrations_test.go": {
"description": "",
"tokens": 595,
"hash": "f879203fbed058b6",
"size": 2082,
"mtimeMs": 1785635482525.9329,
"updatedAt": "2026-10-06T11:06:20.878Z",
"source": "scan",
"symbols": [
{
"name": "applyMigrations",
"kind": "fn",
"startLine": 26,
"endLine": 55,
"tokens": 214
},
{
"name": "selfSignedTLSCert",
"kind": "fn",
"startLine": 59,
"endLine": 79,
"tokens": 192
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/infrastructure/tls/acme_cert_watcher_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/e2e/outbound_queue_e2e_test.go": {
"description": "staticMXResolver (27 fields); methods: LookupMX",
"tokens": 1791,
"hash": "deeac8cc12775b3e",
"size": 6267,
"mtimeMs": 1787399704637.6614,
"updatedAt": "2026-10-06T11:06:20.878Z",
"source": "scan",
"symbols": [
{
"name": "staticMXResolver",
"kind": "class",
"startLine": 20,
"endLine": 22,
"tokens": 13
},
{
"name": "LookupMX",
"kind": "method",
"startLine": 24,
"endLine": 26,
"tokens": 34
},
{
"name": "TestOutboundQueueEndToEnd",
"kind": "fn",
"startLine": 28,
"endLine": 155,
"tokens": 1328
},
{
"name": "handleMockSMTPSession",
"kind": "fn",
"startLine": 157,
"endLine": 191,
"tokens": 300
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/usecase/apply_rules_test.go",
"services/protocols/internal/domain/entity/dkim_key_pair_test.go",
"services/protocols/internal/infrastructure/diskstorage/local_disk_blob_reader_test.go",
"services/protocols/internal/infrastructure/postgres/acme_repository.go"
],
"importance": 0.0144
},
"services/protocols/internal/e2e/pop3_e2e_test.go": {
"description": "TestPop3EndToEnd",
"tokens": 1926,
"hash": "8adf794e03f6a5b5",
"size": 6740,
"mtimeMs": 1787399704637.9463,
"updatedAt": "2026-10-06T11:06:20.878Z",
"source": "scan",
"symbols": [
{
"name": "TestPop3EndToEnd",
"kind": "fn",
"startLine": 24,
"endLine": 239,
"tokens": 1779
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/application/usecase/apply_rules_test.go",
"services/protocols/internal/infrastructure/diskstorage/local_disk_blob_reader_test.go",
"services/protocols/internal/infrastructure/postgres/acme_repository.go",
"services/protocols/internal/presentation/pop3/conn_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/e2e/ports_test.go": {
"description": "TestEmbeddedPostgresPortsAreOutsideTheEphemeralRange, TestEmbeddedPostgresPortsAreUnique, TestEachTestConnectsToThePortItStarted",
"tokens": 989,
"hash": "4b0a5f357bcc914a",
"size": 3459,
"mtimeMs": 1787399690290.3398,
"updatedAt": "2026-10-06T11:06:20.878Z",
"source": "scan",
"symbols": [
{
"name": "TestEmbeddedPostgresPortsAreOutsideTheEphemeralRange",
"kind": "fn",
"startLine": 33,
"endLine": 64,
"tokens": 268
},
{
"name": "TestEmbeddedPostgresPortsAreUnique",
"kind": "fn",
"startLine": 67,
"endLine": 84,
"tokens": 149
},
{
"name": "TestEachTestConnectsToThePortItStarted",
"kind": "fn",
"startLine": 88,
"endLine": 107,
"tokens": 169
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/e2e/smtp_inbound_e2e_test.go": {
"description": "contains end-to-end validation of the F0/F1 scope declared in",
"tokens": 2808,
"hash": "f684c48336b25734",
"size": 9828,
"mtimeMs": 1787399704638.441,
"updatedAt": "2026-10-06T11:06:20.878Z",
"source": "scan",
"symbols": [
{
"name": "TestInboundSMTPEndToEnd",
"kind": "fn",
"startLine": 37,
"endLine": 264,
"tokens": 2261
},
{
"name": "repoRoot",
"kind": "fn",
"startLine": 267,
"endLine": 289,
"tokens": 233
}
],
"symbolSource": "ts",
"skeleton": "func TestInboundSMTPEndToEnd(t *testing.T) {\nfunc repoRoot(t *testing.T) string {",
"imports": [
"services/protocols/internal/presentation/smtp/backend_test.go",
"services/protocols/internal/application/usecase/apply_rules_test.go",
"services/protocols/internal/infrastructure/diskstorage/local_disk_blob_reader_test.go",
"services/protocols/internal/infrastructure/postgres/acme_repository.go"
],
"importance": 0.0144
},
"services/protocols/internal/e2e/submission_e2e_test.go": {
"description": "plainAuthClient (68 fields); methods: Start, Next",
"tokens": 3375,
"hash": "feab0cec2fb8ab5a",
"size": 11810,
"mtimeMs": 1787399704638.6812,
"updatedAt": "2026-10-06T11:06:20.878Z",
"source": "scan",
"symbols": [
{
"name": "TestSubmissionEndToEnd",
"kind": "fn",
"startLine": 32,
"endLine": 196,
"tokens": 1829
},
{
"name": "submitMessage",
"kind": "fn",
"startLine": 199,
"endLine": 230,
"tokens": 278
},
{
"name": "assertSubmissionRefused",
"kind": "fn",
"startLine": 234,
"endLine": 260,
"tokens": 224
},
{
"name": "assertSenderRefused",
"kind": "fn",
"startLine": 262,
"endLine": 276,
"tokens": 128
},
{
"name": "startCapturingMX",
"kind": "fn",
"startLine": 279,
"endLine": 338,
"tokens": 388
},
{
"name": "plainAuthClient",
"kind": "class",
"startLine": 341,
"endLine": 344,
"tokens": 24
},
{
"name": "plainAuth",
"kind": "fn",
"startLine": 346,
"endLine": 348,
"tokens": 37
},
{
"name": "Start",
"kind": "method",
"startLine": 350,
"endLine": 352,
"tokens": 42
},
{
"name": "Next",
"kind": "method",
"startLine": 354,
"endLine": 360,
"tokens": 62
}
],
"symbolSource": "ts",
"skeleton": "func TestSubmissionEndToEnd(t *testing.T) {\nfunc submitMessage(t *testing.T, addr, username, password, recipient string) {\nfunc assertSubmissionRefused(t *testing.T, addr, username, password string, recipients []string) {\nfunc assertSenderRefused(t *testing.T, addr, username, password, forgedSender string) {\nfunc startCapturingMX(t *testing.T, received chan<- string) string {\ntype plainAuthClient struct {\nfunc plainAuth(username, password string) *plainAuthClient {\nfunc (a *plainAuthClient) Start() (mech string, ir []byte, err error) {\nfunc (a *plainAuthClient) Next(challenge []byte) ([]byte, error) {",
"imports": [
"services/protocols/internal/infrastructure/tls/acme_cert_watcher_test.go",
"services/protocols/internal/application/usecase/apply_rules_test.go",
"services/protocols/internal/infrastructure/diskstorage/local_disk_blob_reader_test.go",
"services/protocols/internal/infrastructure/dkim/keygen.go",
"services/protocols/internal/infrastructure/postgres/acme_repository.go",
"services/protocols/internal/infrastructure/vault/secret_vault_test.go",
"services/protocols/internal/presentation/smtp/backend_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/e2e/webmail_api_e2e_test.go": {
"description": "TestWebmailApiEndToEnd, TestWebmailApiRejectsCrossMailboxAccess, TestWebmailApiRequiresUserSession",
"tokens": 3572,
"hash": "00ac28be482b5ac7",
"size": 12499,
"mtimeMs": 1787399704638.8528,
"updatedAt": "2026-10-06T11:06:20.879Z",
"source": "scan",
"symbols": [
{
"name": "mintSession",
"kind": "fn",
"startLine": 30,
"endLine": 51,
"tokens": 227
},
{
"name": "TestWebmailApiEndToEnd",
"kind": "fn",
"startLine": 53,
"endLine": 250,
"tokens": 2006
},
{
"name": "TestWebmailApiRejectsCrossMailboxAccess",
"kind": "fn",
"startLine": 253,
"endLine": 330,
"tokens": 818
},
{
"name": "TestWebmailApiRequiresUserSession",
"kind": "fn",
"startLine": 333,
"endLine": 359,
"tokens": 269
}
],
"symbolSource": "ts",
"skeleton": "func mintSession(t *testing.T, email, surface string, ttl time.Duration) string {\nfunc TestWebmailApiEndToEnd(t *testing.T) {\nfunc TestWebmailApiRejectsCrossMailboxAccess(t *testing.T) {\nfunc TestWebmailApiRequiresUserSession(t *testing.T) {",
"imports": [
"services/protocols/internal/presentation/http/admin_dkim_api.go",
"services/protocols/internal/application/usecase/apply_rules_test.go",
"services/protocols/internal/infrastructure/diskstorage/local_disk_blob_reader_test.go",
"services/protocols/internal/infrastructure/postgres/acme_repository.go"
],
"importance": 0.0144
},
"services/protocols/internal/health/health_test.go": {
"description": "TestHandler_Live_AlwaysReturns200, TestHandler_Ready_Returns200WhenPingSucceeds, TestHandler_Ready_Returns503WhenPingFails",
"tokens": 334,
"hash": "de8bbd61fe45a75f",
"size": 1168,
"mtimeMs": 1785635482526.4373,
"updatedAt": "2026-10-06T11:06:20.879Z",
"source": "scan",
"imports": [
"services/protocols/internal/presentation/http/admin_dkim_api.go"
],
"importance": 0.0144
},
"services/protocols/internal/health/health.go": {
"description": "exposes liveness/readiness endpoints (PLAN.md section 11.5).",
"tokens": 205,
"hash": "5e522d2fe28653f2",
"size": 715,
"mtimeMs": 1785635482525.9329,
"updatedAt": "2026-10-06T11:06:20.879Z",
"source": "scan",
"imports": [
"services/protocols/internal/presentation/http/admin_dkim_api.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/acme/issuer.go": {
"description": "implements mode B of PLAN.md section 8.3: LambdaMail obtains",
"tokens": 2133,
"hash": "b9a70b061db10685",
"size": 7464,
"mtimeMs": 1785635482526.4897,
"updatedAt": "2026-10-06T11:06:20.880Z",
"source": "scan",
"symbols": [
{
"name": "Issuer",
"kind": "class",
"startLine": 46,
"endLine": 51,
"tokens": 38
},
{
"name": "NewIssuer",
"kind": "fn",
"startLine": 53,
"endLine": 63,
"tokens": 88
},
{
"name": "acmeUser",
"kind": "class",
"startLine": 66,
"endLine": 70,
"tokens": 33
},
{
"name": "GetEmail",
"kind": "method",
"startLine": 72,
"endLine": 72,
"tokens": 23
},
{
"name": "GetRegistration",
"kind": "method",
"startLine": 73,
"endLine": 73,
"tokens": 25
},
{
"name": "GetPrivateKey",
"kind": "method",
"startLine": 74,
"endLine": 74,
"tokens": 22
},
{
"name": "GeneratePrivateKey",
"kind": "fn",
"startLine": 79,
"endLine": 89,
"tokens": 112
},
{
"name": "Obtain",
"kind": "method",
"startLine": 96,
"endLine": 137,
"tokens": 306
},
{
"name": "client",
"kind": "method",
"startLine": 141,
"endLine": 204,
"tokens": 530
},
{
"name": "parsePrivateKey",
"kind": "fn",
"startLine": 206,
"endLine": 223,
"tokens": 148
},
{
"name": "certificateExpiry",
"kind": "fn",
"startLine": 226,
"endLine": 236,
"tokens": 106
}
],
"symbolSource": "ts",
"skeleton": "type Issuer struct {\nfunc NewIssuer(store port.CertificateStore, email, directoryURL, cloudflareToken string) *Issuer {\ntype acmeUser struct {\nfunc (u *acmeUser) GetEmail() string { return u.email }\nfunc (u *acmeUser) GetRegistration() *registration.Resource { return u.registration }\nfunc (u *acmeUser) GetPrivateKey() crypto.PrivateKey { return u.key }\nfunc GeneratePrivateKey() ([]byte, error) {\nfunc (i *Issuer) Obtain(ctx context.Context, domains []string, privateKeyPEM []byte) (*port.StoredCertificate, error) {\nfunc (i *Issuer) client(ctx context.Context) (*lego.Client, error) {\nfunc parsePrivateKey(pemBytes []byte) (crypto.PrivateKey, error) {\nfunc certificateExpiry(chainPEM []byte) (time.Time, error) {",
"imports": [
"services/protocols/internal/infrastructure/cloudflare/cloudflare_adapter_test.go",
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0164
},
"services/protocols/internal/infrastructure/acme/manager.go": {
"description": "Interface: TlsaPublisher (6 methods)",
"tokens": 2176,
"hash": "f61770b473414e3a",
"size": 7615,
"mtimeMs": 1785635482526.5547,
"updatedAt": "2026-10-06T11:06:20.880Z",
"source": "scan",
"symbols": [
{
"name": "TlsaPublisher",
"kind": "class",
"startLine": 19,
"endLine": 21,
"tokens": 31
},
{
"name": "PendingKeyStore",
"kind": "class",
"startLine": 25,
"endLine": 29,
"tokens": 84
},
{
"name": "Manager",
"kind": "class",
"startLine": 34,
"endLine": 46,
"tokens": 76
},
{
"name": "NewManager",
"kind": "fn",
"startLine": 48,
"endLine": 67,
"tokens": 130
},
{
"name": "GetCertificate",
"kind": "method",
"startLine": 70,
"endLine": 76,
"tokens": 66
},
{
"name": "Start",
"kind": "method",
"startLine": 80,
"endLine": 105,
"tokens": 132
},
{
"name": "reconcile",
"kind": "method",
"startLine": 110,
"endLine": 132,
"tokens": 168
},
{
"name": "reconcileWithDane",
"kind": "method",
"startLine": 134,
"endLine": 226,
"tokens": 868
},
{
"name": "issue",
"kind": "method",
"startLine": 229,
"endLine": 244,
"tokens": 160
},
{
"name": "serve",
"kind": "method",
"startLine": 248,
"endLine": 255,
"tokens": 79
}
],
"symbolSource": "ts",
"skeleton": "type TlsaPublisher interface {\ntype PendingKeyStore interface {\ntype Manager struct {\nfunc NewManager(\nfunc (m *Manager) GetCertificate(*tls.ClientHelloInfo) (*tls.Certificate, error) {\nfunc (m *Manager) Start(ctx context.Context, interval time.Duration) error {\nfunc (m *Manager) reconcile(ctx context.Context) error {\nfunc (m *Manager) reconcileWithDane(ctx context.Context, stored *port.StoredCertificate) error {\nfunc (m *Manager) issue(ctx context.Context, privateKeyPEM []byte, generation int) error {\nfunc (m *Manager) serve(stored *port.StoredCertificate) error {",
"imports": [
"services/protocols/internal/infrastructure/tls/acme_cert_watcher_test.go",
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/application/usecase/apply_rules_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/arc/canonical.go": {
"description": "implements Authenticated Received Chain (RFC 8617).",
"tokens": 1334,
"hash": "c189910322d4699b",
"size": 4669,
"mtimeMs": 1785635482526.5547,
"updatedAt": "2026-10-06T11:06:20.880Z",
"source": "scan",
"symbols": [
{
"name": "header",
"kind": "class",
"startLine": 33,
"endLine": 37,
"tokens": 19
},
{
"name": "canonicalizeHeaderRelaxed",
"kind": "fn",
"startLine": 42,
"endLine": 51,
"tokens": 99
},
{
"name": "canonicalizeBodyRelaxed",
"kind": "fn",
"startLine": 56,
"endLine": 75,
"tokens": 129
},
{
"name": "bodyHash",
"kind": "fn",
"startLine": 78,
"endLine": 81,
"tokens": 43
},
{
"name": "splitMessage",
"kind": "fn",
"startLine": 85,
"endLine": 119,
"tokens": 242
},
{
"name": "sign",
"kind": "fn",
"startLine": 122,
"endLine": 139,
"tokens": 202
},
{
"name": "algorithmFor",
"kind": "fn",
"startLine": 142,
"endLine": 147,
"tokens": 49
}
],
"symbolSource": "ts",
"importance": 0.015
},
"services/protocols/internal/infrastructure/arc/lazy_sealer_test.go": {
"description": "stubKeyRepo (15 fields); methods: FindActiveKeys",
"tokens": 811,
"hash": "7fb2454b4c0a2c2a",
"size": 2837,
"mtimeMs": 1785668486702.2322,
"updatedAt": "2026-10-06T11:06:20.880Z",
"source": "scan",
"symbols": [
{
"name": "stubKeyRepo",
"kind": "class",
"startLine": 18,
"endLine": 23,
"tokens": 42
},
{
"name": "FindActiveKeys",
"kind": "method",
"startLine": 25,
"endLine": 30,
"tokens": 48
},
{
"name": "provision",
"kind": "method",
"startLine": 32,
"endLine": 51,
"tokens": 135
},
{
"name": "parseTestKey",
"kind": "fn",
"startLine": 53,
"endLine": 56,
"tokens": 41
},
{
"name": "TestLazySealer_StartsSealingOnceAKeyIsProvisioned",
"kind": "fn",
"startLine": 66,
"endLine": 90,
"tokens": 241
},
{
"name": "TestLazySealer_CachesTheResolvedKey",
"kind": "fn",
"startLine": 93,
"endLine": 108,
"tokens": 128
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/arc/lazy_sealer.go": {
"description": "LazySealer (18 fields); methods: Seal",
"tokens": 682,
"hash": "95b4680d7875a2bd",
"size": 2384,
"mtimeMs": 1785668486702.1443,
"updatedAt": "2026-10-06T11:06:20.880Z",
"source": "scan",
"symbols": [
{
"name": "KeyParser",
"kind": "class",
"startLine": 13,
"endLine": 13,
"tokens": 19
},
{
"name": "LazySealer",
"kind": "class",
"startLine": 22,
"endLine": 30,
"tokens": 48
},
{
"name": "NewLazySealer",
"kind": "fn",
"startLine": 34,
"endLine": 36,
"tokens": 56
},
{
"name": "Seal",
"kind": "method",
"startLine": 41,
"endLine": 47,
"tokens": 72
},
{
"name": "sealer",
"kind": "method",
"startLine": 49,
"endLine": 75,
"tokens": 191
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/arc/sealer_test.go": {
"description": "TestSealer_StartsChainAtInstanceOneWithCvNone, TestSealer_WritesHeadersInPrescribedOrder, TestSealer_ProducesVerifiableChain, TestSealer_ExtendsExi...",
"tokens": 2324,
"hash": "ed4c28593d9abe1c",
"size": 8132,
"mtimeMs": 1785635482526.674,
"updatedAt": "2026-10-06T11:06:20.880Z",
"source": "scan",
"symbols": [
{
"name": "keyring",
"kind": "class",
"startLine": 24,
"endLine": 24,
"tokens": 12
},
{
"name": "lookup",
"kind": "method",
"startLine": 26,
"endLine": 32,
"tokens": 59
},
{
"name": "newSealer",
"kind": "fn",
"startLine": 34,
"endLine": 50,
"tokens": 148
},
{
"name": "passingResult",
"kind": "fn",
"startLine": 52,
"endLine": 57,
"tokens": 59
},
{
"name": "TestSealer_StartsChainAtInstanceOneWithCvNone",
"kind": "fn",
"startLine": 61,
"endLine": 88,
"tokens": 278
},
{
"name": "TestSealer_WritesHeadersInPrescribedOrder",
"kind": "fn",
"startLine": 91,
"endLine": 104,
"tokens": 159
},
{
"name": "TestSealer_ProducesVerifiableChain",
"kind": "fn",
"startLine": 107,
"endLine": 126,
"tokens": 172
},
{
"name": "TestSealer_ExtendsExistingChain",
"kind": "fn",
"startLine": 129,
"endLine": 163,
"tokens": 297
},
{
"name": "TestVerifyChain_DetectsBodyTampering",
"kind": "fn",
"startLine": 167,
"endLine": 181,
"tokens": 144
},
{
"name": "TestVerifyChain_DetectsHeaderTampering",
"kind": "fn",
"startLine": 184,
"endLine": 194,
"tokens": 139
},
{
"name": "TestVerifyChain_NoChainIsNone",
"kind": "fn",
"startLine": 197,
"endLine": 205,
"tokens": 72
},
{
"name": "TestSealer_RefusesToExtendFailedChain",
"kind": "fn",
"startLine": 208,
"endLine": 222,
"tokens": 139
},
{
"name": "TestBodyHash_IgnoresCosmeticWhitespace",
"kind": "fn",
"startLine": 227,
"endLine": 244,
"tokens": 150
},
{
"name": "TestCanonicalizeHeaderRelaxed",
"kind": "fn",
"startLine": 246,
"endLine": 258,
"tokens": 129
}
],
"symbolSource": "ts",
"skeleton": "type keyring map[string]crypto.PublicKey\nfunc (k keyring) lookup(domain, selector string) (crypto.PublicKey, error) {\nfunc newSealer(t *testing.T, domain, algorithm string, ring keyring) *Sealer {\nfunc passingResult() port.InboundAuthResult {\nfunc TestSealer_StartsChainAtInstanceOneWithCvNone(t *testing.T) {\nfunc TestSealer_WritesHeadersInPrescribedOrder(t *testing.T) {\nfunc TestSealer_ProducesVerifiableChain(t *testing.T) {\nfunc TestSealer_ExtendsExistingChain(t *testing.T) {\nfunc TestVerifyChain_DetectsBodyTampering(t *testing.T) {\nfunc TestVerifyChain_DetectsHeaderTampering(t *testing.T) {\nfunc TestVerifyChain_NoChainIsNone(t *testing.T) {\nfunc TestSealer_RefusesToExtendFailedChain(t *testing.T) {\nfunc TestBodyHash_IgnoresCosmeticWhitespace(t *testing.T) {\nfunc TestCanonicalizeHeaderRelaxed(t *testing.T) {",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/infrastructure/dkim/keygen.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/arc/sealer.go": {
"description": "Sealer (56 fields); methods: WithClock, Seal",
"tokens": 2407,
"hash": "e098585c2ed25c72",
"size": 8423,
"mtimeMs": 1785635482526.674,
"updatedAt": "2026-10-06T11:06:20.880Z",
"source": "scan",
"symbols": [
{
"name": "ChainValidation",
"kind": "class",
"startLine": 29,
"endLine": 29,
"tokens": 8
},
{
"name": "Sealer",
"kind": "class",
"startLine": 42,
"endLine": 51,
"tokens": 99
},
{
"name": "NewSealer",
"kind": "fn",
"startLine": 53,
"endLine": 64,
"tokens": 78
},
{
"name": "WithClock",
"kind": "method",
"startLine": 67,
"endLine": 70,
"tokens": 24
},
{
"name": "Seal",
"kind": "method",
"startLine": 77,
"endLine": 116,
"tokens": 382
},
{
"name": "inspectChain",
"kind": "method",
"startLine": 120,
"endLine": 144,
"tokens": 184
},
{
"name": "buildMessageSignature",
"kind": "method",
"startLine": 148,
"endLine": 167,
"tokens": 204
},
{
"name": "buildSeal",
"kind": "method",
"startLine": 172,
"endLine": 197,
"tokens": 306
},
{
"name": "formatAuthResults",
"kind": "method",
"startLine": 200,
"endLine": 206,
"tokens": 83
},
{
"name": "orNone",
"kind": "fn",
"startLine": 208,
"endLine": 213,
"tokens": 25
},
{
"name": "signedHeaderList",
"kind": "fn",
"startLine": 217,
"endLine": 228,
"tokens": 78
},
{
"name": "canonicalHeaderBlock",
"kind": "fn",
"startLine": 231,
"endLine": 242,
"tokens": 86
},
{
"name": "findInstanceHeader",
"kind": "fn",
"startLine": 245,
"endLine": 255,
"tokens": 80
},
{
"name": "parseTags",
"kind": "fn",
"startLine": 258,
"endLine": 268,
"tokens": 82
}
],
"symbolSource": "ts",
"skeleton": "type ChainValidation string\ntype Sealer struct {\nfunc NewSealer(domain, selector, authServID string, signer crypto.Signer) *Sealer {\nfunc (s *Sealer) WithClock(now func() time.Time) *Sealer {\nfunc (s *Sealer) Seal(_ context.Context, message []byte, authResult port.InboundAuthResult) ([]byte, error) {\nfunc (s *Sealer) inspectChain(headers []header) (instance int, state ChainValidation) {\nfunc (s *Sealer) buildMessageSignature(instance int, timestamp int64, headers []header, body string) (string, error) {\nfunc (s *Sealer) buildSeal(instance int, timestamp int64, state ChainValidation, headers []header, aar, ams string) (string, error) {\nfunc (s *Sealer) formatAuthResults(result port.InboundAuthResult) string {\nfunc orNone(value string) string {\nfunc signedHeaderList(headers []header) []string {\nfunc canonicalHeaderBlock(headers []header, names []string) string {\nfunc findInstanceHeader(headers []header, name string, instance int) (string, bool) {\nfunc parseTags(value string) map[string]string {",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/arc/verifier.go": {
"description": "VerifyChain",
"tokens": 1289,
"hash": "8c7644a1760a7545",
"size": 4510,
"mtimeMs": 1785635482526.674,
"updatedAt": "2026-10-06T11:06:20.880Z",
"source": "scan",
"symbols": [
{
"name": "VerifyChain",
"kind": "fn",
"startLine": 21,
"endLine": 53,
"tokens": 282
},
{
"name": "verifyMessageSignature",
"kind": "fn",
"startLine": 55,
"endLine": 71,
"tokens": 202
},
{
"name": "verifySeal",
"kind": "fn",
"startLine": 73,
"endLine": 97,
"tokens": 310
},
{
"name": "stripSignature",
"kind": "fn",
"startLine": 101,
"endLine": 107,
"tokens": 41
},
{
"name": "verifySignature",
"kind": "fn",
"startLine": 109,
"endLine": 135,
"tokens": 276
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/infrastructure/clamav/clamav_adapter_test.go": {
"description": "TestClamAVAdapter_Scan_CleanAndVirus",
"tokens": 480,
"hash": "2460a8d6d1ddd359",
"size": 1679,
"mtimeMs": 1785635482526.8608,
"updatedAt": "2026-10-06T11:06:20.881Z",
"source": "scan",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/domain/valueobject/autoconfig_xml_test.go"
],
"importance": 0.0181
},
"services/protocols/internal/infrastructure/clamav/clamav_adapter.go": {
"description": "ClamAVAdapter (28 fields); methods: Scan",
"tokens": 745,
"hash": "c65d853e92e724de",
"size": 2607,
"mtimeMs": 1785635482526.674,
"updatedAt": "2026-10-06T11:06:20.881Z",
"source": "scan",
"symbols": [
{
"name": "ClamAVAdapter",
"kind": "class",
"startLine": 17,
"endLine": 20,
"tokens": 20
},
{
"name": "NewClamAVAdapter",
"kind": "fn",
"startLine": 22,
"endLine": 30,
"tokens": 53
},
{
"name": "Scan",
"kind": "method",
"startLine": 32,
"endLine": 106,
"tokens": 612
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/domain/valueobject/autoconfig_xml_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/cloudflare/cloudflare_adapter_test.go": {
"description": "TestCloudflareAdapter_GetZoneID_List_Create_Update_Delete",
"tokens": 835,
"hash": "f1f1fbbcce0e152d",
"size": 2920,
"mtimeMs": 1785635482526.9717,
"updatedAt": "2026-10-06T11:06:20.881Z",
"source": "scan",
"symbols": [
{
"name": "TestCloudflareAdapter_GetZoneID_List_Create_Update_Delete",
"kind": "fn",
"startLine": 13,
"endLine": 115,
"tokens": 791
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/presentation/http/admin_dkim_api.go",
"services/protocols/internal/domain/entity/dkim_key_pair_test.go"
],
"importance": 0.0261
},
"services/protocols/internal/infrastructure/cloudflare/cloudflare_adapter.go": {
"description": "CloudflareAdapter (115 fields); methods: GetZoneID, ListRecords, CreateRecord, UpdateRecord",
"tokens": 3382,
"hash": "ae303cd61b7c5294",
"size": 11835,
"mtimeMs": 1787571041892.1978,
"updatedAt": "2026-10-06T11:06:20.881Z",
"source": "scan",
"symbols": [
{
"name": "CloudflareAdapter",
"kind": "class",
"startLine": 27,
"endLine": 31,
"tokens": 28
},
{
"name": "NewCloudflareAdapter",
"kind": "fn",
"startLine": 33,
"endLine": 41,
"tokens": 105
},
{
"name": "cfError",
"kind": "class",
"startLine": 43,
"endLine": 45,
"tokens": 16
},
{
"name": "cfResultInfo",
"kind": "class",
"startLine": 47,
"endLine": 50,
"tokens": 28
},
{
"name": "cfZoneResponse",
"kind": "class",
"startLine": 52,
"endLine": 59,
"tokens": 54
},
{
"name": "cfRecord",
"kind": "class",
"startLine": 61,
"endLine": 76,
"tokens": 205
},
{
"name": "cfRecordResponse",
"kind": "class",
"startLine": 78,
"endLine": 83,
"tokens": 58
},
{
"name": "cfSingleRecordResponse",
"kind": "class",
"startLine": 85,
"endLine": 89,
"tokens": 42
},
{
"name": "GetZoneID",
"kind": "method",
"startLine": 91,
"endLine": 104,
"tokens": 150
},
{
"name": "ListRecords",
"kind": "method",
"startLine": 106,
"endLine": 154,
"tokens": 450
},
{
"name": "CreateRecord",
"kind": "method",
"startLine": 156,
"endLine": 167,
"tokens": 154
},
{
"name": "UpdateRecord",
"kind": "method",
"startLine": 169,
"endLine": 180,
"tokens": 157
},
{
"name": "DeleteRecord",
"kind": "method",
"startLine": 182,
"endLine": 193,
"tokens": 144
},
{
"name": "toCfRecord",
"kind": "fn",
"startLine": 198,
"endLine": 225,
"tokens": 183
},
{
"name": "structuredData",
"kind": "fn",
"startLine": 230,
"endLine": 272,
"tokens": 314
},
{
"name": "renderStructuredValue",
"kind": "fn",
"startLine": 277,
"endLine": 303,
"tokens": 210
},
{
"name": "doJSON",
"kind": "method",
"startLine": 308,
"endLine": 368,
"tokens": 477
},
{
"name": "describeErrors",
"kind": "fn",
"startLine": 370,
"endLine": 383,
"tokens": 98
},
{
"name": "retryAfter",
"kind": "fn",
"startLine": 388,
"endLine": 397,
"tokens": 77
}
],
"symbolSource": "ts",
"skeleton": "type CloudflareAdapter struct {\nfunc NewCloudflareAdapter(apiToken string) *CloudflareAdapter {\ntype cfError struct {\ntype cfResultInfo struct {\ntype cfZoneResponse struct {\ntype cfRecord struct {\ntype cfRecordResponse struct {\ntype cfSingleRecordResponse struct {\nfunc (a *CloudflareAdapter) GetZoneID(ctx context.Context, domainName string) (string, error) {\nfunc (a *CloudflareAdapter) ListRecords(ctx context.Context, zoneID string) ([]entity.DnsRecord, error) {\nfunc (a *CloudflareAdapter) CreateRecord(ctx context.Context, zoneID string, record entity.DnsRecord) error {\nfunc (a *CloudflareAdapter) UpdateRecord(ctx context.Context, zoneID string, record entity.DnsRecord) error {\nfunc (a *CloudflareAdapter) DeleteRecord(ctx context.Context, zoneID string, recordID string) error {\nfunc toCfRecord(record entity.DnsRecord) cfRecord {\nfunc structuredData(record entity.DnsRecord) map[string]any {\nfunc renderStructuredValue(recordType string, data map[string]any) string {\nfunc (a *CloudflareAdapter) doJSON(ctx context.Context, method, reqURL string, body any, out any, errsOf func() []cfError) error {\nfunc describeErrors(errs []cfError, raw []byte) string {\nfunc retryAfter(header string, fallback time.Duration) time.Duration {",
"imports": [
"services/protocols/internal/presentation/http/admin_dkim_api.go",
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/domain/entity/dkim_key_pair_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/cloudflare/cloudflare_hardening_test.go": {
"description": "TestCloudflareAdapter_CreateRecord_SendsProxiedFalseExplicitly, TestCloudflareAdapter_ReportsHttpErrorStatus, TestCloudflareAdapter_ListRecords_Fol...",
"tokens": 2754,
"hash": "6681fc17403131e5",
"size": 9639,
"mtimeMs": 1787571024467.825,
"updatedAt": "2026-10-06T11:06:20.881Z",
"source": "scan",
"symbols": [
{
"name": "TestCloudflareAdapter_CreateRecord_SendsProxiedFalseExplicitly",
"kind": "fn",
"startLine": 18,
"endLine": 44,
"tokens": 262
},
{
"name": "TestCloudflareAdapter_ReportsHttpErrorStatus",
"kind": "fn",
"startLine": 48,
"endLine": 65,
"tokens": 184
},
{
"name": "TestCloudflareAdapter_ListRecords_FollowsPagination",
"kind": "fn",
"startLine": 70,
"endLine": 103,
"tokens": 320
},
{
"name": "TestCloudflareAdapter_RetriesOnRateLimit",
"kind": "fn",
"startLine": 106,
"endLine": 136,
"tokens": 241
},
{
"name": "TestCloudflareAdapter_DeleteRecord_ReportsFailure",
"kind": "fn",
"startLine": 140,
"endLine": 153,
"tokens": 149
},
{
"name": "TestCloudflareAdapter_SendsStructuredDataForSrvAndTlsa",
"kind": "fn",
"startLine": 157,
"endLine": 209,
"tokens": 517
},
{
"name": "TestCloudflareAdapter_ListRecords_RendersStructuredValues",
"kind": "fn",
"startLine": 214,
"endLine": 237,
"tokens": 262
},
{
"name": "TestCloudflareAdapter_ListRecords_KeepsSrvPriority",
"kind": "fn",
"startLine": 244,
"endLine": 280,
"tokens": 350
}
],
"symbolSource": "ts",
"skeleton": "func TestCloudflareAdapter_CreateRecord_SendsProxiedFalseExplicitly(t *testing.T) {\nfunc TestCloudflareAdapter_ReportsHttpErrorStatus(t *testing.T) {\nfunc TestCloudflareAdapter_ListRecords_FollowsPagination(t *testing.T) {\nfunc TestCloudflareAdapter_RetriesOnRateLimit(t *testing.T) {\nfunc TestCloudflareAdapter_DeleteRecord_ReportsFailure(t *testing.T) {\nfunc TestCloudflareAdapter_SendsStructuredDataForSrvAndTlsa(t *testing.T) {\nfunc TestCloudflareAdapter_ListRecords_RendersStructuredValues(t *testing.T) {\nfunc TestCloudflareAdapter_ListRecords_KeepsSrvPriority(t *testing.T) {",
"imports": [
"services/protocols/internal/presentation/http/admin_dkim_api.go",
"services/protocols/internal/domain/entity/dkim_key_pair_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/diskstorage/local_disk_blob_reader_test.go": {
"description": "TestLocalDiskBlobReader_ReadByID_ReturnsStoredContent, TestLocalDiskBlobReader_ReadByID_ReturnsErrorForUnknownID",
"tokens": 327,
"hash": "eb891a6a08f1d186",
"size": 1144,
"mtimeMs": 1785635482527.1055,
"updatedAt": "2026-10-06T11:06:20.881Z",
"source": "scan",
"importance": 0.0524
},
"services/protocols/internal/infrastructure/diskstorage/local_disk_blob_reader.go": {
"description": "LocalDiskBlobReader (7 fields); methods: ReadByID",
"tokens": 248,
"hash": "4beb3cd11c6ca205",
"size": 868,
"mtimeMs": 1785635482526.9717,
"updatedAt": "2026-10-06T11:06:20.881Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/infrastructure/diskstorage/local_disk_blob_storage_test.go": {
"description": "TestLocalDiskBlobStorage_Store_WritesFileAndInsertsBlobRow, TestLocalDiskBlobStorage_Store_DedupsIdenticalContent",
"tokens": 676,
"hash": "f9d904580d2458f7",
"size": 2366,
"mtimeMs": 1785635482527.1055,
"updatedAt": "2026-10-06T11:06:20.881Z",
"source": "scan",
"symbols": [
{
"name": "testPoolForBlobStorage",
"kind": "fn",
"startLine": 13,
"endLine": 27,
"tokens": 135
},
{
"name": "TestLocalDiskBlobStorage_Store_WritesFileAndInsertsBlobRow",
"kind": "fn",
"startLine": 29,
"endLine": 60,
"tokens": 285
},
{
"name": "TestLocalDiskBlobStorage_Store_DedupsIdenticalContent",
"kind": "fn",
"startLine": 62,
"endLine": 82,
"tokens": 221
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/infrastructure/diskstorage/local_disk_blob_storage.go": {
"description": "implements port.BlobStorage on the local filesystem.",
"tokens": 992,
"hash": "89f1d26b2fc0ba8d",
"size": 3469,
"mtimeMs": 1785635482527.1055,
"updatedAt": "2026-10-06T11:06:20.882Z",
"source": "scan",
"symbols": [
{
"name": "LocalDiskBlobStorage",
"kind": "class",
"startLine": 23,
"endLine": 26,
"tokens": 22
},
{
"name": "NewLocalDiskBlobStorage",
"kind": "fn",
"startLine": 28,
"endLine": 30,
"tokens": 43
},
{
"name": "Store",
"kind": "method",
"startLine": 32,
"endLine": 101,
"tokens": 779
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/dkim/keygen.go": {
"description": "generates, stores and applies the DKIM signing keys described",
"tokens": 981,
"hash": "e9ee92ef901cf55b",
"size": 3433,
"mtimeMs": 1785635482527.1055,
"updatedAt": "2026-10-06T11:06:20.882Z",
"source": "scan",
"symbols": [
{
"name": "GeneratedKey",
"kind": "class",
"startLine": 27,
"endLine": 36,
"tokens": 126
},
{
"name": "Generate",
"kind": "fn",
"startLine": 39,
"endLine": 48,
"tokens": 76
},
{
"name": "generateRSA",
"kind": "fn",
"startLine": 50,
"endLine": 71,
"tokens": 158
},
{
"name": "generateEd25519",
"kind": "fn",
"startLine": 73,
"endLine": 90,
"tokens": 139
},
{
"name": "marshalPrivatePEM",
"kind": "fn",
"startLine": 92,
"endLine": 98,
"tokens": 76
},
{
"name": "ParsePrivateKey",
"kind": "fn",
"startLine": 103,
"endLine": 119,
"tokens": 134
}
],
"symbolSource": "ts",
"importance": 0.0409
},
"services/protocols/internal/infrastructure/dkim/signer_test.go": {
"description": "fakeKeyRepo (20 fields); methods: FindActiveKeys",
"tokens": 1127,
"hash": "ef450586499fecea",
"size": 3942,
"mtimeMs": 1785635482527.2583,
"updatedAt": "2026-10-06T11:06:20.882Z",
"source": "scan",
"symbols": [
{
"name": "fakeKeyRepo",
"kind": "class",
"startLine": 11,
"endLine": 14,
"tokens": 20
},
{
"name": "FindActiveKeys",
"kind": "method",
"startLine": 16,
"endLine": 18,
"tokens": 35
},
{
"name": "keyFor",
"kind": "fn",
"startLine": 28,
"endLine": 40,
"tokens": 102
},
{
"name": "TestSigner_AppliesBothAlgorithms",
"kind": "fn",
"startLine": 44,
"endLine": 71,
"tokens": 262
},
{
"name": "TestSigner_ProducesVerifiableSignature",
"kind": "fn",
"startLine": 74,
"endLine": 100,
"tokens": 247
},
{
"name": "TestSigner_NoKeysLeavesMessageUnchanged",
"kind": "fn",
"startLine": 103,
"endLine": 111,
"tokens": 94
},
{
"name": "TestGenerate_RejectsUnknownAlgorithm",
"kind": "fn",
"startLine": 113,
"endLine": 117,
"tokens": 49
},
{
"name": "TestParsePrivateKey_RoundTripsBothAlgorithms",
"kind": "fn",
"startLine": 119,
"endLine": 132,
"tokens": 143
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/dkim/signer.go": {
"description": "Signer (16 fields); methods: Sign",
"tokens": 732,
"hash": "88db97c75ea6436b",
"size": 2561,
"mtimeMs": 1785635482527.2583,
"updatedAt": "2026-10-06T11:06:20.882Z",
"source": "scan",
"symbols": [
{
"name": "Signer",
"kind": "class",
"startLine": 24,
"endLine": 26,
"tokens": 15
},
{
"name": "NewSigner",
"kind": "fn",
"startLine": 28,
"endLine": 30,
"tokens": 24
},
{
"name": "Sign",
"kind": "method",
"startLine": 38,
"endLine": 59,
"tokens": 153
},
{
"name": "signOnce",
"kind": "fn",
"startLine": 61,
"endLine": 84,
"tokens": 232
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/infrastructure/dkim/keygen.go",
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/mailauth/authenticator_test.go": {
"description": "fakeZone (34 fields); methods: LookupTXT, LookupIPAddr, LookupMX, LookupAddr",
"tokens": 2301,
"hash": "68f9dd57afd37705",
"size": 8051,
"mtimeMs": 1785635482527.3936,
"updatedAt": "2026-10-06T11:06:20.882Z",
"source": "scan",
"symbols": [
{
"name": "fakeZone",
"kind": "class",
"startLine": 18,
"endLine": 21,
"tokens": 22
},
{
"name": "LookupTXT",
"kind": "method",
"startLine": 23,
"endLine": 25,
"tokens": 31
},
{
"name": "lookupTXT",
"kind": "method",
"startLine": 27,
"endLine": 33,
"tokens": 69
},
{
"name": "LookupIPAddr",
"kind": "method",
"startLine": 35,
"endLine": 45,
"tokens": 102
},
{
"name": "LookupMX",
"kind": "method",
"startLine": 47,
"endLine": 49,
"tokens": 46
},
{
"name": "LookupAddr",
"kind": "method",
"startLine": 51,
"endLine": 53,
"tokens": 46
},
{
"name": "newTestAuthenticator",
"kind": "fn",
"startLine": 55,
"endLine": 57,
"tokens": 42
},
{
"name": "TestAuthenticate_SpfPassAlignsDmarc",
"kind": "fn",
"startLine": 69,
"endLine": 100,
"tokens": 338
},
{
"name": "TestAuthenticate_SpfFailWithoutDkimFailsDmarc",
"kind": "fn",
"startLine": 104,
"endLine": 128,
"tokens": 218
},
{
"name": "TestAuthenticate_DkimPassAlignsDmarcDespiteSpfFail",
"kind": "fn",
"startLine": 132,
"endLine": 178,
"tokens": 449
},
{
"name": "TestAuthenticate_TamperedBodyFailsDkim",
"kind": "fn",
"startLine": 181,
"endLine": 206,
"tokens": 271
},
{
"name": "TestAuthenticate_NoDmarcRecordYieldsNone",
"kind": "fn",
"startLine": 209,
"endLine": 224,
"tokens": 155
},
{
"name": "TestAuthenticate_EmptyEnvelopeFromChecksHelo",
"kind": "fn",
"startLine": 228,
"endLine": 243,
"tokens": 146
}
],
"symbolSource": "ts",
"skeleton": "type fakeZone struct {\nfunc (z *fakeZone) LookupTXT(_ context.Context, name string) ([]string, error) {\nfunc (z *fakeZone) lookupTXT(name string) ([]string, error) {\nfunc (z *fakeZone) LookupIPAddr(_ context.Context, name string) ([]net.IPAddr, error) {\nfunc (z *fakeZone) LookupMX(_ context.Context, name string) ([]*net.MX, error) {\nfunc (z *fakeZone) LookupAddr(_ context.Context, addr string) ([]string, error) {\nfunc newTestAuthenticator(zone *fakeZone) *Authenticator {\nfunc TestAuthenticate_SpfPassAlignsDmarc(t *testing.T) {\nfunc TestAuthenticate_SpfFailWithoutDkimFailsDmarc(t *testing.T) {\nfunc TestAuthenticate_DkimPassAlignsDmarcDespiteSpfFail(t *testing.T) {\nfunc TestAuthenticate_TamperedBodyFailsDkim(t *testing.T) {\nfunc TestAuthenticate_NoDmarcRecordYieldsNone(t *testing.T) {\nfunc TestAuthenticate_EmptyEnvelopeFromChecksHelo(t *testing.T) {",
"imports": [
"services/protocols/internal/infrastructure/dkim/keygen.go",
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.015
},
"services/protocols/internal/infrastructure/mailauth/authenticator.go": {
"description": "runs the inbound authentication chain of PLAN.md section",
"tokens": 1950,
"hash": "b998c868bcb007b3",
"size": 6825,
"mtimeMs": 1785635482527.2583,
"updatedAt": "2026-10-06T11:06:20.882Z",
"source": "scan",
"symbols": [
{
"name": "LookupTXTFunc",
"kind": "class",
"startLine": 23,
"endLine": 23,
"tokens": 16
},
{
"name": "Authenticator",
"kind": "class",
"startLine": 26,
"endLine": 33,
"tokens": 83
},
{
"name": "NewAuthenticator",
"kind": "fn",
"startLine": 35,
"endLine": 40,
"tokens": 62
},
{
"name": "WithLookupTXT",
"kind": "method",
"startLine": 44,
"endLine": 48,
"tokens": 47
},
{
"name": "Authenticate",
"kind": "method",
"startLine": 50,
"endLine": 68,
"tokens": 190
},
{
"name": "checkSPF",
"kind": "method",
"startLine": 70,
"endLine": 93,
"tokens": 210
},
{
"name": "checkDKIM",
"kind": "method",
"startLine": 95,
"endLine": 122,
"tokens": 261
},
{
"name": "checkDMARC",
"kind": "method",
"startLine": 124,
"endLine": 157,
"tokens": 306
},
{
"name": "aligned",
"kind": "fn",
"startLine": 161,
"endLine": 173,
"tokens": 106
},
{
"name": "formatAuthResults",
"kind": "method",
"startLine": 177,
"endLine": 197,
"tokens": 172
},
{
"name": "headerFromDomain",
"kind": "fn",
"startLine": 201,
"endLine": 211,
"tokens": 85
},
{
"name": "domainOf",
"kind": "fn",
"startLine": 213,
"endLine": 218,
"tokens": 50
}
],
"symbolSource": "ts",
"imports": [
"services/webmail/src/app/(user)/user/mail/[folder]/page.tsx",
"services/protocols/internal/infrastructure/dkim/keygen.go",
"services/webmail/src/app/(admin)/admin/dmarc/page.tsx",
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/netdns/mx_resolver.go": {
"description": "NetMXResolver (10 fields); methods: LookupMX",
"tokens": 197,
"hash": "af6e3fef1534b466",
"size": 687,
"mtimeMs": 1785635482527.3936,
"updatedAt": "2026-10-06T11:06:20.882Z",
"source": "scan",
"importance": 0.017
},
"services/protocols/internal/infrastructure/netdns/public_verifier_match_test.go": {
"description": "Comparing a desired record against what a resolver actually answers.",
"tokens": 1121,
"hash": "43c0ae5587defec8",
"size": 3923,
"mtimeMs": 1787496012191.9895,
"updatedAt": "2026-10-06T11:06:20.882Z",
"source": "scan",
"symbols": [
{
"name": "TestMxIgnoresThePriorityAndTrailingDot",
"kind": "fn",
"startLine": 12,
"endLine": 27,
"tokens": 233
},
{
"name": "TestLongTxtIsJoinedWithoutASeparator",
"kind": "fn",
"startLine": 34,
"endLine": 39,
"tokens": 69
},
{
"name": "TestShortTxtStillMatches",
"kind": "fn",
"startLine": 41,
"endLine": 45,
"tokens": 51
},
{
"name": "TestTxtKeepsItsOwnSpaces",
"kind": "fn",
"startLine": 48,
"endLine": 56,
"tokens": 100
},
{
"name": "TestCnameIgnoresTheTrailingDot",
"kind": "fn",
"startLine": 58,
"endLine": 62,
"tokens": 58
},
{
"name": "TestCaseDoesNotDecide",
"kind": "fn",
"startLine": 64,
"endLine": 68,
"tokens": 57
},
{
"name": "TestAValueIsCompared",
"kind": "fn",
"startLine": 70,
"endLine": 77,
"tokens": 80
},
{
"name": "TestProxiedCnameIsQueriedAsTheTypeTheProxyAnswers",
"kind": "fn",
"startLine": 83,
"endLine": 96,
"tokens": 154
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/infrastructure/netdns/public_verifier.go": {
"description": "PublicVerifier (35 fields); methods: VerifyRecord",
"tokens": 1718,
"hash": "77518df407ccb0e7",
"size": 6012,
"mtimeMs": 1787496012216.8523,
"updatedAt": "2026-10-06T11:06:20.883Z",
"source": "scan",
"symbols": [
{
"name": "PublicVerifier",
"kind": "class",
"startLine": 20,
"endLine": 23,
"tokens": 21
},
{
"name": "NewPublicVerifier",
"kind": "fn",
"startLine": 25,
"endLine": 40,
"tokens": 116
},
{
"name": "VerifyRecord",
"kind": "method",
"startLine": 42,
"endLine": 83,
"tokens": 440
},
{
"name": "answerMatches",
"kind": "fn",
"startLine": 86,
"endLine": 99,
"tokens": 112
},
{
"name": "answerMatchesValue",
"kind": "fn",
"startLine": 109,
"endLine": 123,
"tokens": 178
},
{
"name": "mxHost",
"kind": "fn",
"startLine": 126,
"endLine": 132,
"tokens": 51
},
{
"name": "normalizeName",
"kind": "fn",
"startLine": 135,
"endLine": 140,
"tokens": 62
},
{
"name": "joinTxtStrings",
"kind": "fn",
"startLine": 149,
"endLine": 175,
"tokens": 160
},
{
"name": "queryTypeFor",
"kind": "fn",
"startLine": 182,
"endLine": 188,
"tokens": 47
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/domain/entity/dkim_key_pair_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/netdns/tlsa_resolver.go": {
"description": "TlsaResolver (14 fields); methods: LookupTLSA",
"tokens": 648,
"hash": "4e597220dc37c687",
"size": 2266,
"mtimeMs": 1785635482527.4885,
"updatedAt": "2026-10-06T11:06:20.883Z",
"source": "scan",
"symbols": [
{
"name": "TlsaResolver",
"kind": "class",
"startLine": 18,
"endLine": 22,
"tokens": 39
},
{
"name": "NewTlsaResolver",
"kind": "fn",
"startLine": 24,
"endLine": 35,
"tokens": 81
},
{
"name": "LookupTLSA",
"kind": "method",
"startLine": 37,
"endLine": 77,
"tokens": 402
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/domain/valueobject/autoconfig_xml_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/postgres/acme_repository.go": {
"description": "AcmeRepository (64 fields); methods: LoadCertificate, SaveCertificate, LoadAccountKey, SaveAccountKey",
"tokens": 1995,
"hash": "a01a2314ca7df385",
"size": 6980,
"mtimeMs": 1785635482527.4885,
"updatedAt": "2026-10-06T11:06:20.883Z",
"source": "scan",
"symbols": [
{
"name": "AcmeRepository",
"kind": "class",
"startLine": 18,
"endLine": 22,
"tokens": 32
},
{
"name": "NewAcmeRepository",
"kind": "fn",
"startLine": 24,
"endLine": 26,
"tokens": 52
},
{
"name": "LoadCertificate",
"kind": "method",
"startLine": 28,
"endLine": 61,
"tokens": 288
},
{
"name": "SaveCertificate",
"kind": "method",
"startLine": 63,
"endLine": 88,
"tokens": 288
},
{
"name": "LoadAccountKey",
"kind": "method",
"startLine": 90,
"endLine": 109,
"tokens": 142
},
{
"name": "SaveAccountKey",
"kind": "method",
"startLine": 111,
"endLine": 130,
"tokens": 199
},
{
"name": "LoadPendingKey",
"kind": "method",
"startLine": 132,
"endLine": 151,
"tokens": 146
},
{
"name": "SavePendingKey",
"kind": "method",
"startLine": 156,
"endLine": 158,
"tokens": 50
},
{
"name": "SavePendingKeyWithDigest",
"kind": "method",
"startLine": 160,
"endLine": 181,
"tokens": 237
},
{
"name": "PendingKeyDigest",
"kind": "method",
"startLine": 185,
"endLine": 197,
"tokens": 136
},
{
"name": "MarkPendingKeyPublished",
"kind": "method",
"startLine": 201,
"endLine": 209,
"tokens": 97
},
{
"name": "ClearPendingKey",
"kind": "method",
"startLine": 211,
"endLine": 217,
"tokens": 78
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/infrastructure/vault/secret_vault_test.go"
],
"importance": 0.241
},
"services/protocols/internal/infrastructure/postgres/alias_repository_test.go": {
"description": "TestAliasRepository_EnsureSystemAliases",
"tokens": 342,
"hash": "792cbc44106fc0a5",
"size": 1194,
"mtimeMs": 1785635482527.6165,
"updatedAt": "2026-10-06T11:06:20.883Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/infrastructure/postgres/alias_repository.go": {
"description": "AliasRepository (15 fields); methods: EnsureSystemAliases",
"tokens": 388,
"hash": "e20cf172b0c85566",
"size": 1355,
"mtimeMs": 1785635482527.6165,
"updatedAt": "2026-10-06T11:06:20.883Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/infrastructure/postgres/attachment_backfill.go": {
"description": "AttachmentBackfill (24 fields); methods: Done, MarkDone, Candidates, SetHasAttachments",
"tokens": 749,
"hash": "092f8a813edc1aff",
"size": 2620,
"mtimeMs": 1787585031466.8464,
"updatedAt": "2026-10-06T11:06:20.883Z",
"source": "scan",
"symbols": [
{
"name": "AttachmentBackfill",
"kind": "class",
"startLine": 17,
"endLine": 19,
"tokens": 16
},
{
"name": "NewAttachmentBackfill",
"kind": "fn",
"startLine": 21,
"endLine": 23,
"tokens": 32
},
{
"name": "Done",
"kind": "method",
"startLine": 26,
"endLine": 34,
"tokens": 92
},
{
"name": "MarkDone",
"kind": "method",
"startLine": 36,
"endLine": 44,
"tokens": 91
},
{
"name": "Candidate",
"kind": "class",
"startLine": 47,
"endLine": 50,
"tokens": 18
},
{
"name": "Candidates",
"kind": "method",
"startLine": 56,
"endLine": 77,
"tokens": 166
},
{
"name": "SetHasAttachments",
"kind": "method",
"startLine": 80,
"endLine": 87,
"tokens": 88
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/infrastructure/postgres/auth_repository_test.go": {
"description": "TestAuthRepository_FindByAddress_ReturnsHashForActiveMailbox, TestAuthRepository_FindByAddress_ReturnsNilForUnknownAddress",
"tokens": 475,
"hash": "210c9525a62663e6",
"size": 1661,
"mtimeMs": 1785635482527.6165,
"updatedAt": "2026-10-06T11:06:20.883Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/infrastructure/postgres/auth_repository.go": {
"description": "AuthRepository (13 fields); methods: FindByAddress",
"tokens": 299,
"hash": "f90e0d7457b04a88",
"size": 1044,
"mtimeMs": 1785635482527.6165,
"updatedAt": "2026-10-06T11:06:20.883Z",
"source": "scan",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/postgres/bimi_repository.go": {
"description": "BimiRepository (24 fields); methods: Save, Load, Delete",
"tokens": 613,
"hash": "d9090a76482b617f",
"size": 2144,
"mtimeMs": 1788830725028.156,
"updatedAt": "2026-10-06T11:06:20.883Z",
"source": "scan",
"symbols": [
{
"name": "BimiRepository",
"kind": "class",
"startLine": 15,
"endLine": 17,
"tokens": 15
},
{
"name": "NewBimiRepository",
"kind": "fn",
"startLine": 19,
"endLine": 21,
"tokens": 28
},
{
"name": "BimiLogo",
"kind": "class",
"startLine": 24,
"endLine": 28,
"tokens": 20
},
{
"name": "Save",
"kind": "method",
"startLine": 31,
"endLine": 46,
"tokens": 185
},
{
"name": "Load",
"kind": "method",
"startLine": 49,
"endLine": 67,
"tokens": 153
},
{
"name": "Delete",
"kind": "method",
"startLine": 70,
"endLine": 79,
"tokens": 91
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/infrastructure/postgres/copy_repository_test.go": {
"description": "TestCopyRepository_CopyMessages_AllocatesNewUIDsAndPreservesFlags",
"tokens": 1214,
"hash": "143cd9a29cae2cb1",
"size": 4246,
"mtimeMs": 1785668486702.3618,
"updatedAt": "2026-10-06T11:06:20.883Z",
"source": "scan",
"symbols": [
{
"name": "TestCopyRepository_CopyMessages_AllocatesNewUIDsAndPreservesFlags",
"kind": "fn",
"startLine": 11,
"endLine": 110,
"tokens": 1176
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/postgres/copy_repository.go": {
"description": "CopyRepository (54 fields); methods: CopyMessages",
"tokens": 1610,
"hash": "415dec20ce8a1714",
"size": 5634,
"mtimeMs": 1785635482527.6165,
"updatedAt": "2026-10-06T11:06:20.883Z",
"source": "scan",
"symbols": [
{
"name": "CopyRepository",
"kind": "class",
"startLine": 16,
"endLine": 18,
"tokens": 15
},
{
"name": "NewCopyRepository",
"kind": "fn",
"startLine": 20,
"endLine": 22,
"tokens": 28
},
{
"name": "CopyMessages",
"kind": "method",
"startLine": 24,
"endLine": 34,
"tokens": 138
},
{
"name": "copyOne",
"kind": "method",
"startLine": 36,
"endLine": 134,
"tokens": 1320
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/postgres/delivered_report_store.go": {
"description": "DeliveredReportStore (65 fields); methods: ListUningestedReports, MoveToReportsFolder",
"tokens": 1366,
"hash": "ace73d1ae4d6d1d8",
"size": 4779,
"mtimeMs": 1787316155298.548,
"updatedAt": "2026-10-06T11:06:20.884Z",
"source": "scan",
"symbols": [
{
"name": "DeliveredReportStore",
"kind": "class",
"startLine": 15,
"endLine": 17,
"tokens": 16
},
{
"name": "NewDeliveredReportStore",
"kind": "fn",
"startLine": 19,
"endLine": 21,
"tokens": 34
},
{
"name": "ListUningestedReports",
"kind": "method",
"startLine": 34,
"endLine": 66,
"tokens": 264
},
{
"name": "MoveToReportsFolder",
"kind": "method",
"startLine": 77,
"endLine": 156,
"tokens": 678
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/postgres/dkim_repository.go": {
"description": "DkimRepository (73 fields); methods: FindActiveKeys, FindPublicKey, Insert, ListKeys",
"tokens": 2032,
"hash": "951ca04edbe7f042",
"size": 7110,
"mtimeMs": 1785689161518.8433,
"updatedAt": "2026-10-06T11:06:20.884Z",
"source": "scan",
"symbols": [
{
"name": "DkimRepository",
"kind": "class",
"startLine": 19,
"endLine": 22,
"tokens": 22
},
{
"name": "NewDkimRepository",
"kind": "fn",
"startLine": 24,
"endLine": 26,
"tokens": 38
},
{
"name": "FindActiveKeys",
"kind": "method",
"startLine": 28,
"endLine": 66,
"tokens": 336
},
{
"name": "FindPublicKey",
"kind": "method",
"startLine": 71,
"endLine": 87,
"tokens": 151
},
{
"name": "Insert",
"kind": "method",
"startLine": 93,
"endLine": 122,
"tokens": 318
},
{
"name": "DkimKeyInfo",
"kind": "class",
"startLine": 129,
"endLine": 138,
"tokens": 104
},
{
"name": "ListKeys",
"kind": "method",
"startLine": 141,
"endLine": 164,
"tokens": 222
},
{
"name": "Rotate",
"kind": "method",
"startLine": 173,
"endLine": 210,
"tokens": 377
}
],
"symbolSource": "ts",
"skeleton": "type DkimRepository struct {\nfunc NewDkimRepository(pool *pgxpool.Pool, v *vault.SecretVault) *DkimRepository {\nfunc (r *DkimRepository) FindActiveKeys(ctx context.Context, domainName string) ([]port.DkimSigningKey, error) {\nfunc (r *DkimRepository) FindPublicKey(ctx context.Context, domainName, algorithm string) (string, error) {\nfunc (r *DkimRepository) Insert(ctx context.Context, domainName, selector, algorithm string, privateKeyPEM []byte, publicKey string) error {\ntype DkimKeyInfo struct {\nfunc (r *DkimRepository) ListKeys(ctx context.Context, domainName string) ([]DkimKeyInfo, error) {\nfunc (r *DkimRepository) Rotate(",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/infrastructure/vault/secret_vault_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/postgres/domain_repository.go": {
"description": "DomainRepository (18 fields); methods: ActiveDomainNames, SaveDnsStatus",
"tokens": 711,
"hash": "a889ca053bfe4d30",
"size": 2488,
"mtimeMs": 1787571965123.277,
"updatedAt": "2026-10-06T11:06:20.884Z",
"source": "scan",
"symbols": [
{
"name": "DomainRepository",
"kind": "class",
"startLine": 12,
"endLine": 14,
"tokens": 15
},
{
"name": "NewDomainRepository",
"kind": "fn",
"startLine": 16,
"endLine": 18,
"tokens": 30
},
{
"name": "ActiveDomainNames",
"kind": "method",
"startLine": 25,
"endLine": 43,
"tokens": 130
},
{
"name": "SaveDnsStatus",
"kind": "method",
"startLine": 50,
"endLine": 60,
"tokens": 102
},
{
"name": "columnStatus",
"kind": "fn",
"startLine": 68,
"endLine": 79,
"tokens": 113
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/infrastructure/postgres/domain_status_test.go": {
"description": "dns_status is constrained by the schema to a fixed set. The verifier answers",
"tokens": 281,
"hash": "4b3f1a7c4b2c84ba",
"size": 981,
"mtimeMs": 1787571965128.0374,
"updatedAt": "2026-10-06T11:06:20.884Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/infrastructure/postgres/expunge_repository_test.go": {
"description": "TestExpungeRepository_Expunge_SetsExpungedAtAndDecrementsCounters",
"tokens": 1063,
"hash": "1fa79b23ad86c2d1",
"size": 3718,
"mtimeMs": 1785668486702.4778,
"updatedAt": "2026-10-06T11:06:20.884Z",
"source": "scan",
"symbols": [
{
"name": "TestExpungeRepository_Expunge_SetsExpungedAtAndDecrementsCounters",
"kind": "fn",
"startLine": 10,
"endLine": 96,
"tokens": 1040
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/infrastructure/postgres/expunge_repository.go": {
"description": "ExpungeRepository (34 fields); methods: Expunge",
"tokens": 828,
"hash": "c4907970f28c56ab",
"size": 2896,
"mtimeMs": 1785635482527.6165,
"updatedAt": "2026-10-06T11:06:20.884Z",
"source": "scan",
"symbols": [
{
"name": "ExpungeRepository",
"kind": "class",
"startLine": 11,
"endLine": 13,
"tokens": 16
},
{
"name": "NewExpungeRepository",
"kind": "fn",
"startLine": 15,
"endLine": 17,
"tokens": 31
},
{
"name": "Expunge",
"kind": "method",
"startLine": 28,
"endLine": 92,
"tokens": 561
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/infrastructure/postgres/flag_repository_test.go": {
"description": "TestFlagRepository_SetFlags_AddThenDelThenSet",
"tokens": 1329,
"hash": "e77bc3d0befa2bec",
"size": 4650,
"mtimeMs": 1785668486702.5786,
"updatedAt": "2026-10-06T11:06:20.884Z",
"source": "scan",
"symbols": [
{
"name": "TestFlagRepository_SetFlags_AddThenDelThenSet",
"kind": "fn",
"startLine": 12,
"endLine": 120,
"tokens": 1290
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/postgres/flag_repository.go": {
"description": "FlagRepository (45 fields); methods: SetFlags",
"tokens": 897,
"hash": "f271c91499885f83",
"size": 3139,
"mtimeMs": 1785635482527.6165,
"updatedAt": "2026-10-06T11:06:20.884Z",
"source": "scan",
"symbols": [
{
"name": "FlagRepository",
"kind": "class",
"startLine": 13,
"endLine": 15,
"tokens": 15
},
{
"name": "NewFlagRepository",
"kind": "fn",
"startLine": 17,
"endLine": 19,
"tokens": 28
},
{
"name": "SetFlags",
"kind": "method",
"startLine": 21,
"endLine": 96,
"tokens": 796
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/postgres/imap_folder_repository_test.go": {
"description": "TestImapFolderRepository_FindByName_ReturnsFolderWithUIDData, TestImapFolderRepository_FindByName_ReturnsNilForUnknownFolder, TestImapFolderReposit...",
"tokens": 956,
"hash": "a67d0ed0472c6ee8",
"size": 3344,
"mtimeMs": 1785635482527.6165,
"updatedAt": "2026-10-06T11:06:20.884Z",
"source": "scan",
"symbols": [
{
"name": "TestImapFolderRepository_FindByName_ReturnsFolderWithUIDData",
"kind": "fn",
"startLine": 10,
"endLine": 49,
"tokens": 412
},
{
"name": "TestImapFolderRepository_FindByName_ReturnsNilForUnknownFolder",
"kind": "fn",
"startLine": 51,
"endLine": 63,
"tokens": 107
},
{
"name": "TestImapFolderRepository_ListFolders_ReturnsAllFoldersForMailbox",
"kind": "fn",
"startLine": 65,
"endLine": 104,
"tokens": 414
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/infrastructure/postgres/imap_folder_repository.go": {
"description": "ImapFolderRepository (22 fields); methods: FindByName, ListFolders",
"tokens": 466,
"hash": "178fd06113d3ea1d",
"size": 1630,
"mtimeMs": 1785635482527.6165,
"updatedAt": "2026-10-06T11:06:20.884Z",
"source": "scan",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/postgres/inbound_message_repository_test.go": {
"description": "TestInboundMessageRepository_Persist_AllocatesSequentialUIDs, TestInboundMessageRepository_Persist_ReturnsErrorWhenNoInboxFolderExists, TestInbound...",
"tokens": 4003,
"hash": "77063a4e04b42da7",
"size": 14010,
"mtimeMs": 1785778216200.2603,
"updatedAt": "2026-10-06T11:06:20.884Z",
"source": "scan",
"symbols": [
{
"name": "TestInboundMessageRepository_Persist_AllocatesSequentialUIDs",
"kind": "fn",
"startLine": 11,
"endLine": 96,
"tokens": 1000
},
{
"name": "TestInboundMessageRepository_Persist_ReturnsErrorWhenNoInboxFolderExists",
"kind": "fn",
"startLine": 98,
"endLine": 136,
"tokens": 464
},
{
"name": "TestInboundMessageRepository_PersistAll_RollsBackEveryRecipientOnFailure",
"kind": "fn",
"startLine": 141,
"endLine": 206,
"tokens": 857
},
{
"name": "TestInboundMessageRepository_FallsBackToInboxWhenFolderMissing",
"kind": "fn",
"startLine": 211,
"endLine": 265,
"tokens": 638
},
{
"name": "TestInboundMessageRepository_PersistsWithoutAuthenticationResults",
"kind": "fn",
"startLine": 275,
"endLine": 337,
"tokens": 732
}
],
"symbolSource": "ts",
"skeleton": "func TestInboundMessageRepository_Persist_AllocatesSequentialUIDs(t *testing.T) {\nfunc TestInboundMessageRepository_Persist_ReturnsErrorWhenNoInboxFolderExists(t *testing.T) {\nfunc TestInboundMessageRepository_PersistAll_RollsBackEveryRecipientOnFailure(t *testing.T) {\nfunc TestInboundMessageRepository_FallsBackToInboxWhenFolderMissing(t *testing.T) {\nfunc TestInboundMessageRepository_PersistsWithoutAuthenticationResults(t *testing.T) {",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/postgres/inbound_message_repository.go": {
"description": "InboundMessageRepository (55 fields); methods: PersistAll",
"tokens": 2136,
"hash": "d3ed1f96e576ea52",
"size": 7476,
"mtimeMs": 1787248947353.939,
"updatedAt": "2026-10-06T11:06:20.885Z",
"source": "scan",
"symbols": [
{
"name": "InboundMessageRepository",
"kind": "class",
"startLine": 22,
"endLine": 24,
"tokens": 18
},
{
"name": "NewInboundMessageRepository",
"kind": "fn",
"startLine": 26,
"endLine": 28,
"tokens": 37
},
{
"name": "PersistAll",
"kind": "method",
"startLine": 33,
"endLine": 57,
"tokens": 167
},
{
"name": "lockFolder",
"kind": "fn",
"startLine": 61,
"endLine": 72,
"tokens": 115
},
{
"name": "nullIfEmpty",
"kind": "fn",
"startLine": 76,
"endLine": 81,
"tokens": 22
},
{
"name": "persistOne",
"kind": "fn",
"startLine": 84,
"endLine": 184,
"tokens": 1374
},
{
"name": "messageFlagsFor",
"kind": "fn",
"startLine": 187,
"endLine": 196,
"tokens": 75
}
],
"symbolSource": "ts",
"skeleton": "type InboundMessageRepository struct {\nfunc NewInboundMessageRepository(pool *pgxpool.Pool) *InboundMessageRepository {\nfunc (r *InboundMessageRepository) PersistAll(ctx context.Context, inputs []port.PersistInboundMessageInput) ([]int64, error) {\nfunc lockFolder(ctx context.Context, tx pgx.Tx, mailboxID any, folder string) (string, int64, error) {\nfunc nullIfEmpty(s string) any {\nfunc persistOne(ctx context.Context, tx pgx.Tx, input port.PersistInboundMessageInput) (int64, error) {\nfunc messageFlagsFor(input port.PersistInboundMessageInput, folder string) []string {",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/postgres/mailbox_repository_test.go": {
"description": "TestMailboxRepository_FindActiveByAddress_ReturnsNilForUnknownAddress, TestMailboxRepository_FindActiveByAddress_ReturnsRecordForSeededMailbox, Tes...",
"tokens": 3391,
"hash": "ba2c57733d50b784",
"size": 11867,
"mtimeMs": 1785668486702.8403,
"updatedAt": "2026-10-06T11:06:20.885Z",
"source": "scan",
"symbols": [
{
"name": "testPool",
"kind": "fn",
"startLine": 16,
"endLine": 30,
"tokens": 128
},
{
"name": "TestMailboxRepository_FindActiveByAddress_ReturnsNilForUnknownAddress",
"kind": "fn",
"startLine": 32,
"endLine": 44,
"tokens": 123
},
{
"name": "TestMailboxRepository_FindActiveByAddress_ReturnsRecordForSeededMailbox",
"kind": "fn",
"startLine": 46,
"endLine": 88,
"tokens": 515
},
{
"name": "TestMailboxRepository_FindActiveByAddress_ExcludesInactiveMailbox",
"kind": "fn",
"startLine": 90,
"endLine": 121,
"tokens": 373
},
{
"name": "TestMailboxRepository_FindActiveByAddress_ReturnsQuotaAndUsedBytes",
"kind": "fn",
"startLine": 123,
"endLine": 158,
"tokens": 368
},
{
"name": "TestMailboxRepository_ResolveDeliveryTargets_PrefersDirectMailboxMatch",
"kind": "fn",
"startLine": 160,
"endLine": 190,
"tokens": 340
},
{
"name": "TestMailboxRepository_ResolveDeliveryTargets_ResolvesSpecificAlias",
"kind": "fn",
"startLine": 192,
"endLine": 229,
"tokens": 434
},
{
"name": "TestMailboxRepository_ResolveDeliveryTargets_ResolvesCatchAllAlias",
"kind": "fn",
"startLine": 231,
"endLine": 267,
"tokens": 442
},
{
"name": "TestMailboxRepository_ResolveDeliveryTargets_ReturnsEmptySliceWhenNothingMatches",
"kind": "fn",
"startLine": 269,
"endLine": 281,
"tokens": 136
},
{
"name": "TestMailboxRepository_ResolveDeliveryTargets_SkipsAliasDestinationThatIsNotAnInternalMailbox",
"kind": "fn",
"startLine": 283,
"endLine": 312,
"tokens": 340
},
{
"name": "testBlobDigest",
"kind": "fn",
"startLine": 317,
"endLine": 319,
"tokens": 33
}
],
"symbolSource": "ts",
"skeleton": "func testPool(t *testing.T) *pgxpool.Pool {\nfunc TestMailboxRepository_FindActiveByAddress_ReturnsNilForUnknownAddress(t *testing.T) {\nfunc TestMailboxRepository_FindActiveByAddress_ReturnsRecordForSeededMailbox(t *testing.T) {\nfunc TestMailboxRepository_FindActiveByAddress_ExcludesInactiveMailbox(t *testing.T) {\nfunc TestMailboxRepository_FindActiveByAddress_ReturnsQuotaAndUsedBytes(t *testing.T) {\nfunc TestMailboxRepository_ResolveDeliveryTargets_PrefersDirectMailboxMatch(t *testing.T) {\nfunc TestMailboxRepository_ResolveDeliveryTargets_ResolvesSpecificAlias(t *testing.T) {\nfunc TestMailboxRepository_ResolveDeliveryTargets_ResolvesCatchAllAlias(t *testing.T) {\nfunc TestMailboxRepository_ResolveDeliveryTargets_ReturnsEmptySliceWhenNothingMatches(t *testing.T) {\nfunc TestMailboxRepository_ResolveDeliveryTargets_SkipsAliasDestinationThatIsNotAnInternalMailbox(t *testing.T) {\nfunc testBlobDigest() string {",
"importance": 0.0144
},
"services/protocols/internal/infrastructure/postgres/mailbox_repository.go": {
"description": "MailboxRepository (33 fields); methods: FindActiveByAddress, ResolveDeliveryTargets",
"tokens": 699,
"hash": "089bb164b8331250",
"size": 2444,
"mtimeMs": 1785635482527.6165,
"updatedAt": "2026-10-06T11:06:20.885Z",
"source": "scan",
"symbols": [
{
"name": "MailboxRepository",
"kind": "class",
"startLine": 14,
"endLine": 16,
"tokens": 16
},
{
"name": "NewMailboxRepository",
"kind": "fn",
"startLine": 18,
"endLine": 20,
"tokens": 31
},
{
"name": "FindActiveByAddress",
"kind": "method",
"startLine": 22,
"endLine": 42,
"tokens": 175
},
{
"name": "ResolveDeliveryTargets",
"kind": "method",
"startLine": 49,
"endLine": 88,
"tokens": 300
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/postgres/message_query_repository_test.go": {
"description": "TestMessageQueryRepository_ListMessages_ReturnsRowsOrderedByUID",
"tokens": 657,
"hash": "1cab871151fc80cf",
"size": 2299,
"mtimeMs": 1785668486702.919,
"updatedAt": "2026-10-06T11:06:20.885Z",
"source": "scan",
"symbols": [
{
"name": "TestMessageQueryRepository_ListMessages_ReturnsRowsOrderedByUID",
"kind": "fn",
"startLine": 10,
"endLine": 67,
"tokens": 634
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/infrastructure/postgres/message_query_repository.go": {
"description": "MessageQueryRepository (16 fields); methods: ListMessages",
"tokens": 366,
"hash": "671b9d671bbdd297",
"size": 1281,
"mtimeMs": 1785635482527.9329,
"updatedAt": "2026-10-06T11:06:20.885Z",
"source": "scan",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/postgres/outbound_repository.go": {
"description": "OutboundRepository (41 fields); methods: Enqueue, FetchNextReady, CountRecipientsSince, UpdateJob",
"tokens": 1237,
"hash": "8565500cbea793ae",
"size": 4328,
"mtimeMs": 1785635482527.9329,
"updatedAt": "2026-10-06T11:06:20.885Z",
"source": "scan",
"symbols": [
{
"name": "OutboundRepository",
"kind": "class",
"startLine": 15,
"endLine": 17,
"tokens": 16
},
{
"name": "NewOutboundRepository",
"kind": "fn",
"startLine": 19,
"endLine": 21,
"tokens": 32
},
{
"name": "Enqueue",
"kind": "method",
"startLine": 23,
"endLine": 37,
"tokens": 176
},
{
"name": "FetchNextReady",
"kind": "method",
"startLine": 39,
"endLine": 99,
"tokens": 632
},
{
"name": "CountRecipientsSince",
"kind": "method",
"startLine": 104,
"endLine": 115,
"tokens": 118
},
{
"name": "UpdateJob",
"kind": "method",
"startLine": 117,
"endLine": 130,
"tokens": 162
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/domain/entity/dkim_key_pair_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/postgres/outbox_repository.go": {
"description": "OutboxRepository (18 fields); methods: FetchUnpublished, MarkPublished",
"tokens": 415,
"hash": "3c2a1a969ff8a1e8",
"size": 1450,
"mtimeMs": 1785689161519.0789,
"updatedAt": "2026-10-06T11:06:20.885Z",
"source": "scan",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/postgres/pool.go": {
"description": "contains pgx-based implementations of the application's",
"tokens": 120,
"hash": "4ac253ba740e987e",
"size": 417,
"mtimeMs": 1785635482527.9329,
"updatedAt": "2026-10-06T11:06:20.885Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/infrastructure/postgres/report_ingestion_test.go": {
"description": "dbBlobStore (59 fields); methods: Store",
"tokens": 3519,
"hash": "b22d5c3f4d255a49",
"size": 12316,
"mtimeMs": 1787316252903.122,
"updatedAt": "2026-10-06T11:06:20.885Z",
"source": "scan",
"symbols": [
{
"name": "reportMail",
"kind": "fn",
"startLine": 36,
"endLine": 62,
"tokens": 291
},
{
"name": "TestDeliveredTlsRptReportIsIngestedAndFiled",
"kind": "fn",
"startLine": 64,
"endLine": 132,
"tokens": 678
},
{
"name": "dbBlobStore",
"kind": "class",
"startLine": 136,
"endLine": 142,
"tokens": 69
},
{
"name": "Store",
"kind": "method",
"startLine": 144,
"endLine": 167,
"tokens": 280
},
{
"name": "TestIngestingTheSameReportTwiceStoresItOnce",
"kind": "fn",
"startLine": 173,
"endLine": 220,
"tokens": 427
},
{
"name": "TestIngestingTheSameDmarcReportTwiceStoresItOnce",
"kind": "fn",
"startLine": 225,
"endLine": 263,
"tokens": 343
},
{
"name": "TestBackfillParsesAReportAlreadySittingInTheInbox",
"kind": "fn",
"startLine": 267,
"endLine": 355,
"tokens": 887
}
],
"symbolSource": "ts",
"skeleton": "func reportMail(t *testing.T, filename string, content []byte) []byte {\nfunc TestDeliveredTlsRptReportIsIngestedAndFiled(t *testing.T) {\ntype dbBlobStore struct {\nfunc (s *dbBlobStore) Store(ctx context.Context, r io.Reader) (port.BlobRef, error) {\nfunc TestIngestingTheSameReportTwiceStoresItOnce(t *testing.T) {\nfunc TestIngestingTheSameDmarcReportTwiceStoresItOnce(t *testing.T) {\nfunc TestBackfillParsesAReportAlreadySittingInTheInbox(t *testing.T) {",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/application/usecase/apply_rules_test.go",
"services/protocols/internal/domain/entity/dkim_key_pair_test.go",
"services/protocols/internal/infrastructure/diskstorage/local_disk_blob_reader_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/postgres/report_repository_test.go": {
"description": "TestReportRepository_SaveDmarcAndTlsRpt",
"tokens": 406,
"hash": "837f8c4ed3ff480a",
"size": 1419,
"mtimeMs": 1785635482527.9329,
"updatedAt": "2026-10-06T11:06:20.885Z",
"source": "scan",
"imports": [
"services/protocols/internal/domain/entity/dkim_key_pair_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/postgres/report_repository.go": {
"description": "ReportRepository (36 fields); methods: SaveDmarcReport, SaveTlsRptReport",
"tokens": 1023,
"hash": "245c95c5cdf8d384",
"size": 3580,
"mtimeMs": 1787315440759.9253,
"updatedAt": "2026-10-06T11:06:20.885Z",
"source": "scan",
"symbols": [
{
"name": "ReportRepository",
"kind": "class",
"startLine": 13,
"endLine": 15,
"tokens": 15
},
{
"name": "NewReportRepository",
"kind": "fn",
"startLine": 17,
"endLine": 19,
"tokens": 30
},
{
"name": "SaveDmarcReport",
"kind": "method",
"startLine": 21,
"endLine": 68,
"tokens": 561
},
{
"name": "SaveTlsRptReport",
"kind": "method",
"startLine": 70,
"endLine": 106,
"tokens": 371
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/domain/entity/dkim_key_pair_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/postgres/sieve_repository_test.go": {
"description": "TestSieveRepository_CRUD",
"tokens": 627,
"hash": "c3f02042634291da",
"size": 2193,
"mtimeMs": 1785635482527.9329,
"updatedAt": "2026-10-06T11:06:20.885Z",
"source": "scan",
"symbols": [
{
"name": "TestSieveRepository_CRUD",
"kind": "fn",
"startLine": 11,
"endLine": 75,
"tokens": 602
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/infrastructure/postgres/sieve_repository.go": {
"description": "SieveRepository (55 fields); methods: GetScript, PutScript, ListScripts, SetActiveScript",
"tokens": 1245,
"hash": "f6a90ebb84378410",
"size": 4355,
"mtimeMs": 1787416024458.1255,
"updatedAt": "2026-10-06T11:06:20.886Z",
"source": "scan",
"symbols": [
{
"name": "SieveRepository",
"kind": "class",
"startLine": 16,
"endLine": 18,
"tokens": 15
},
{
"name": "NewSieveRepository",
"kind": "fn",
"startLine": 20,
"endLine": 22,
"tokens": 29
},
{
"name": "GetScript",
"kind": "method",
"startLine": 24,
"endLine": 38,
"tokens": 156
},
{
"name": "PutScript",
"kind": "method",
"startLine": 40,
"endLine": 50,
"tokens": 123
},
{
"name": "ListScripts",
"kind": "method",
"startLine": 52,
"endLine": 73,
"tokens": 182
},
{
"name": "SetActiveScript",
"kind": "method",
"startLine": 75,
"endLine": 101,
"tokens": 215
},
{
"name": "DeleteScript",
"kind": "method",
"startLine": 103,
"endLine": 111,
"tokens": 95
},
{
"name": "RenameScript",
"kind": "method",
"startLine": 113,
"endLine": 121,
"tokens": 105
},
{
"name": "ActiveScriptFor",
"kind": "method",
"startLine": 131,
"endLine": 145,
"tokens": 126
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/postgres/vacation_log.go": {
"description": "VacationLog (16 fields); methods: LastRepliedAt, RecordReply",
"tokens": 436,
"hash": "582f1aeb9cba3432",
"size": 1525,
"mtimeMs": 1787422419526.6418,
"updatedAt": "2026-10-06T11:06:20.886Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/infrastructure/postgres/webmail_repository_test.go": {
"description": "TestUnreadCountFollowsWhatWasActuallyRead, TestUnreadCountSelfHealsAfterDrift, TestOwnSentCopyIsNotCountedAsUnread, TestDeleteMovesToTrashThenExpun...",
"tokens": 2027,
"hash": "12f1d7dcc134b65c",
"size": 7092,
"mtimeMs": 1787249048911.5466,
"updatedAt": "2026-10-06T11:06:20.886Z",
"source": "scan",
"symbols": [
{
"name": "seedMailbox",
"kind": "fn",
"startLine": 20,
"endLine": 49,
"tokens": 306
},
{
"name": "deliver",
"kind": "fn",
"startLine": 52,
"endLine": 69,
"tokens": 194
},
{
"name": "storeTestBlob",
"kind": "fn",
"startLine": 71,
"endLine": 81,
"tokens": 128
},
{
"name": "folderByRole",
"kind": "fn",
"startLine": 83,
"endLine": 92,
"tokens": 75
},
{
"name": "TestUnreadCountFollowsWhatWasActuallyRead",
"kind": "fn",
"startLine": 96,
"endLine": 121,
"tokens": 242
},
{
"name": "TestUnreadCountSelfHealsAfterDrift",
"kind": "fn",
"startLine": 125,
"endLine": 151,
"tokens": 244
},
{
"name": "TestOwnSentCopyIsNotCountedAsUnread",
"kind": "fn",
"startLine": 154,
"endLine": 172,
"tokens": 173
},
{
"name": "TestDeleteMovesToTrashThenExpungesFromTrash",
"kind": "fn",
"startLine": 177,
"endLine": 211,
"tokens": 356
}
],
"symbolSource": "ts",
"skeleton": "func seedMailbox(t *testing.T, pool *pgxpool.Pool) string {\nfunc deliver(t *testing.T, pool *pgxpool.Pool, mailboxID, folder, subject string, alreadySeen bool) uint32 {\nfunc storeTestBlob(t *testing.T, pool *pgxpool.Pool) uuid.UUID {\nfunc folderByRole(t *testing.T, folders []port.WebmailFolder, role string) port.WebmailFolder {\nfunc TestUnreadCountFollowsWhatWasActuallyRead(t *testing.T) {\nfunc TestUnreadCountSelfHealsAfterDrift(t *testing.T) {\nfunc TestOwnSentCopyIsNotCountedAsUnread(t *testing.T) {\nfunc TestDeleteMovesToTrashThenExpungesFromTrash(t *testing.T) {",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/postgres/webmail_repository.go": {
"description": "WebmailRepository (145 fields); methods: FindMailboxIDByAddress, ListFolders, ListMessages, GetMessageBlob",
"tokens": 4616,
"hash": "fcb2ed5aaa27afd1",
"size": 16153,
"mtimeMs": 1787416293370.228,
"updatedAt": "2026-10-06T11:06:20.886Z",
"source": "scan",
"symbols": [
{
"name": "WebmailRepository",
"kind": "class",
"startLine": 21,
"endLine": 23,
"tokens": 16
},
{
"name": "NewWebmailRepository",
"kind": "fn",
"startLine": 25,
"endLine": 27,
"tokens": 31
},
{
"name": "FindMailboxIDByAddress",
"kind": "method",
"startLine": 29,
"endLine": 40,
"tokens": 116
},
{
"name": "ListFolders",
"kind": "method",
"startLine": 42,
"endLine": 87,
"tokens": 556
},
{
"name": "ListMessages",
"kind": "method",
"startLine": 93,
"endLine": 142,
"tokens": 552
},
{
"name": "GetMessageBlob",
"kind": "method",
"startLine": 144,
"endLine": 158,
"tokens": 147
},
{
"name": "MarkSeen",
"kind": "method",
"startLine": 163,
"endLine": 224,
"tokens": 460
},
{
"name": "Expunge",
"kind": "method",
"startLine": 234,
"endLine": 286,
"tokens": 425
},
{
"name": "MoveToTrash",
"kind": "method",
"startLine": 300,
"endLine": 304,
"tokens": 55
},
{
"name": "MoveToFolder",
"kind": "method",
"startLine": 312,
"endLine": 316,
"tokens": 58
},
{
"name": "moveInto",
"kind": "method",
"startLine": 322,
"endLine": 408,
"tokens": 724
},
{
"name": "boolToInt",
"kind": "fn",
"startLine": 410,
"endLine": 415,
"tokens": 18
},
{
"name": "CreateFolder",
"kind": "method",
"startLine": 424,
"endLine": 432,
"tokens": 89
},
{
"name": "RenameFolder",
"kind": "method",
"startLine": 439,
"endLine": 451,
"tokens": 119
},
{
"name": "DeleteFolder",
"kind": "method",
"startLine": 458,
"endLine": 488,
"tokens": 248
}
],
"symbolSource": "ts",
"skeleton": "type WebmailRepository struct {\nfunc NewWebmailRepository(pool *pgxpool.Pool) *WebmailRepository {\nfunc (r *WebmailRepository) FindMailboxIDByAddress(ctx context.Context, address string) (string, error) {\nfunc (r *WebmailRepository) ListFolders(ctx context.Context, mailboxID string) ([]port.WebmailFolder, error) {\nfunc (r *WebmailRepository) ListMessages(\nfunc (r *WebmailRepository) GetMessageBlob(\nfunc (r *WebmailRepository) MarkSeen(\nfunc (r *WebmailRepository) Expunge(\nfunc (r *WebmailRepository) MoveToTrash(\nfunc (r *WebmailRepository) MoveToFolder(\nfunc (r *WebmailRepository) moveInto(\nfunc boolToInt(b bool) int {\nfunc (r *WebmailRepository) CreateFolder(ctx context.Context, mailboxID, name string) error {\nfunc (r *WebmailRepository) RenameFolder(ctx context.Context, mailboxID, from, to string) error {\nfunc (r *WebmailRepository) DeleteFolder(ctx context.Context, mailboxID, name string) error {",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/rspamd/rspamd_adapter_test.go": {
"description": "TestRspamdAdapter_Scan_MapsActions",
"tokens": 482,
"hash": "1d13ae3d06955115",
"size": 1686,
"mtimeMs": 1785635482528.4868,
"updatedAt": "2026-10-06T11:06:20.886Z",
"source": "scan",
"imports": [
"services/protocols/internal/presentation/http/admin_dkim_api.go",
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/domain/valueobject/autoconfig_xml_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/rspamd/rspamd_adapter.go": {
"description": "RspamdResponse (27 fields); methods: Scan",
"tokens": 882,
"hash": "265be7c3bfd0c752",
"size": 3087,
"mtimeMs": 1785635482527.9329,
"updatedAt": "2026-10-06T11:06:20.886Z",
"source": "scan",
"symbols": [
{
"name": "RspamdResponse",
"kind": "class",
"startLine": 16,
"endLine": 21,
"tokens": 86
},
{
"name": "RspamdAdapter",
"kind": "class",
"startLine": 23,
"endLine": 26,
"tokens": 21
},
{
"name": "NewRspamdAdapter",
"kind": "fn",
"startLine": 28,
"endLine": 39,
"tokens": 118
},
{
"name": "Scan",
"kind": "method",
"startLine": 41,
"endLine": 108,
"tokens": 598
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/presentation/http/admin_dkim_api.go",
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/domain/valueobject/autoconfig_xml_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/tls/acme_cert_watcher_test.go": {
"description": "domain (38 fields)",
"tokens": 3205,
"hash": "89f1682bd17c962b",
"size": 11215,
"mtimeMs": 1785668486703.125,
"updatedAt": "2026-10-06T11:06:20.886Z",
"source": "scan",
"symbols": [
{
"name": "makeCertPEM",
"kind": "fn",
"startLine": 21,
"endLine": 24,
"tokens": 47
},
{
"name": "makeCertPEMWithValidity",
"kind": "fn",
"startLine": 28,
"endLine": 53,
"tokens": 256
},
{
"name": "writeAcmeStore",
"kind": "fn",
"startLine": 57,
"endLine": 60,
"tokens": 59
},
{
"name": "writeAcmeStoreWithValidity",
"kind": "fn",
"startLine": 64,
"endLine": 105,
"tokens": 358
},
{
"name": "TestAcmeCertWatcher_ServesCertificateBySNI",
"kind": "fn",
"startLine": 107,
"endLine": 123,
"tokens": 154
},
{
"name": "TestAcmeCertWatcher_HandlesAnyResolverName",
"kind": "fn",
"startLine": 127,
"endLine": 138,
"tokens": 130
},
{
"name": "TestAcmeCertWatcher_IndexesSubjectAlternativeNames",
"kind": "fn",
"startLine": 141,
"endLine": 154,
"tokens": 142
},
{
"name": "TestAcmeCertWatcher_PicksUpAtomicRename",
"kind": "fn",
"startLine": 158,
"endLine": 186,
"tokens": 286
},
{
"name": "TestAcmeCertWatcher_KeepsPreviousStoreOnParseFailure",
"kind": "fn",
"startLine": 190,
"endLine": 206,
"tokens": 177
},
{
"name": "TestAcmeCertWatcher_ReportsMissingMailHost",
"kind": "fn",
"startLine": 210,
"endLine": 219,
"tokens": 114
},
{
"name": "TestAcmeCertWatcher_UnknownSniFallsBackAndCounts",
"kind": "fn",
"startLine": 222,
"endLine": 235,
"tokens": 162
},
{
"name": "TestAcmeCertWatcher_MatchesWildcard",
"kind": "fn",
"startLine": 238,
"endLine": 247,
"tokens": 120
},
{
"name": "TestAcmeCertWatcher_FailsWhenStoreMissing",
"kind": "fn",
"startLine": 251,
"endLine": 255,
"tokens": 65
},
{
"name": "TestAcmeCertWatcher_SkipsSwapButRecordsCheckWhenContentUnchanged",
"kind": "fn",
"startLine": 261,
"endLine": 280,
"tokens": 203
},
{
"name": "TestAcmeCertWatcher_SkipsExpiredCertificate",
"kind": "fn",
"startLine": 284,
"endLine": 292,
"tokens": 113
},
{
"name": "TestAcmeCertWatcher_ReportsEarliestExpiry",
"kind": "fn",
"startLine": 296,
"endLine": 316,
"tokens": 210
}
],
"symbolSource": "ts",
"skeleton": "func makeCertPEM(t *testing.T, names ...string) (certPEM, keyPEM []byte) {\nfunc makeCertPEMWithValidity(t *testing.T, notBefore, notAfter time.Duration, names ...string) (certPEM, keyPEM []byte) {\nfunc writeAcmeStore(t *testing.T, dir, resolverName string, entries map[string][]string) string {\nfunc writeAcmeStoreWithValidity(t *testing.T, dir, resolverName string, entries map[string][]string, notBefore, notAfter time.Duration) string {\nfunc TestAcmeCertWatcher_ServesCertificateBySNI(t *testing.T) {\nfunc TestAcmeCertWatcher_HandlesAnyResolverName(t *testing.T) {\nfunc TestAcmeCertWatcher_IndexesSubjectAlternativeNames(t *testing.T) {\nfunc TestAcmeCertWatcher_PicksUpAtomicRename(t *testing.T) {\nfunc TestAcmeCertWatcher_KeepsPreviousStoreOnParseFailure(t *testing.T) {\nfunc TestAcmeCertWatcher_ReportsMissingMailHost(t *testing.T) {\nfunc TestAcmeCertWatcher_UnknownSniFallsBackAndCounts(t *testing.T) {\nfunc TestAcmeCertWatcher_MatchesWildcard(t *testing.T) {\nfunc TestAcmeCertWatcher_FailsWhenStoreMissing(t *testing.T) {\nfunc TestAcmeCertWatcher_SkipsSwapButRecordsCheckWhenContentUnchanged(t *testing.T) {\nfunc TestAcmeCertWatcher_SkipsExpiredCertificate(t *testing.T) {\nfunc TestAcmeCertWatcher_ReportsEarliestExpiry(t *testing.T) {",
"importance": 0.1244
},
"services/protocols/internal/infrastructure/tls/acme_cert_watcher.go": {
"description": "AcmeCertWatcher (73 fields); methods: Watch, EarliestExpiry, GetCertificate, LastReload",
"tokens": 2987,
"hash": "06b2810b13bbcb6d",
"size": 10454,
"mtimeMs": 1785668486703.0256,
"updatedAt": "2026-10-06T11:06:20.887Z",
"source": "scan",
"symbols": [
{
"name": "AcmeCertWatcher",
"kind": "class",
"startLine": 33,
"endLine": 54,
"tokens": 268
},
{
"name": "acmeFile",
"kind": "class",
"startLine": 64,
"endLine": 73,
"tokens": 75
},
{
"name": "NewAcmeCertWatcher",
"kind": "fn",
"startLine": 77,
"endLine": 89,
"tokens": 94
},
{
"name": "Watch",
"kind": "method",
"startLine": 93,
"endLine": 113,
"tokens": 163
},
{
"name": "reload",
"kind": "method",
"startLine": 115,
"endLine": 144,
"tokens": 216
},
{
"name": "reportExpiry",
"kind": "method",
"startLine": 149,
"endLine": 163,
"tokens": 165
},
{
"name": "EarliestExpiry",
"kind": "method",
"startLine": 167,
"endLine": 189,
"tokens": 144
},
{
"name": "parseAcmeStore",
"kind": "fn",
"startLine": 194,
"endLine": 247,
"tokens": 579
},
{
"name": "GetCertificate",
"kind": "method",
"startLine": 252,
"endLine": 277,
"tokens": 187
},
{
"name": "wildcardOf",
"kind": "fn",
"startLine": 280,
"endLine": 285,
"tokens": 41
},
{
"name": "LastReload",
"kind": "method",
"startLine": 290,
"endLine": 295,
"tokens": 38
},
{
"name": "LastChange",
"kind": "method",
"startLine": 299,
"endLine": 304,
"tokens": 38
},
{
"name": "UnknownSNICount",
"kind": "method",
"startLine": 307,
"endLine": 309,
"tokens": 24
},
{
"name": "HasCertificateFor",
"kind": "method",
"startLine": 313,
"endLine": 325,
"tokens": 86
}
],
"symbolSource": "ts",
"skeleton": "type AcmeCertWatcher struct {\ntype acmeFile map[string]struct {\nfunc NewAcmeCertWatcher(dir, filename, defaultHost string) (*AcmeCertWatcher, error) {\nfunc (w *AcmeCertWatcher) Watch(stop <-chan struct{}, interval time.Duration) {\nfunc (w *AcmeCertWatcher) reload() error {\nfunc (w *AcmeCertWatcher) reportExpiry(now time.Time) {\nfunc (w *AcmeCertWatcher) EarliestExpiry() (string, time.Time, bool) {\nfunc parseAcmeStore(raw []byte, now time.Time) (map[string]*tls.Certificate, error) {\nfunc (w *AcmeCertWatcher) GetCertificate(hello *tls.ClientHelloInfo) (*tls.Certificate, error) {\nfunc wildcardOf(name string) string {\nfunc (w *AcmeCertWatcher) LastReload() time.Time {\nfunc (w *AcmeCertWatcher) LastChange() time.Time {\nfunc (w *AcmeCertWatcher) UnknownSNICount() int64 {\nfunc (w *AcmeCertWatcher) HasCertificateFor(host string) bool {",
"imports": [
"services/protocols/internal/infrastructure/tls/acme_cert_watcher_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/tls/local_file_cert_provider_test.go": {
"description": "TestNewLocalFileCertProvider_LoadsValidCertAndKey, TestNewLocalFileCertProvider_FailsFastOnMissingFiles, TestNewEphemeralSelfSignedCertProvider_Gen...",
"tokens": 874,
"hash": "0e5d2d745b40ae2b",
"size": 3058,
"mtimeMs": 1785635482528.59,
"updatedAt": "2026-10-06T11:06:20.887Z",
"source": "scan",
"symbols": [
{
"name": "generateSelfSignedPEMForTest",
"kind": "fn",
"startLine": 21,
"endLine": 46,
"tokens": 270
},
{
"name": "writeTestCertAndKey",
"kind": "fn",
"startLine": 49,
"endLine": 61,
"tokens": 130
},
{
"name": "TestNewLocalFileCertProvider_LoadsValidCertAndKey",
"kind": "fn",
"startLine": 63,
"endLine": 79,
"tokens": 132
},
{
"name": "TestNewLocalFileCertProvider_FailsFastOnMissingFiles",
"kind": "fn",
"startLine": 81,
"endLine": 86,
"tokens": 71
},
{
"name": "TestNewEphemeralSelfSignedCertProvider_GeneratesUsableCert",
"kind": "fn",
"startLine": 88,
"endLine": 104,
"tokens": 138
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/infrastructure/tls/acme_cert_watcher_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/tls/local_file_cert_provider.go": {
"description": "implements port.CertProvider by loading a static",
"tokens": 606,
"hash": "c7360c532a5f1b48",
"size": 2119,
"mtimeMs": 1785635482528.59,
"updatedAt": "2026-10-06T11:06:20.887Z",
"source": "scan",
"symbols": [
{
"name": "LocalFileCertProvider",
"kind": "class",
"startLine": 20,
"endLine": 22,
"tokens": 17
},
{
"name": "NewLocalFileCertProvider",
"kind": "fn",
"startLine": 24,
"endLine": 30,
"tokens": 88
},
{
"name": "GetCertificate",
"kind": "method",
"startLine": 32,
"endLine": 34,
"tokens": 35
},
{
"name": "NewEphemeralSelfSignedCertProvider",
"kind": "fn",
"startLine": 40,
"endLine": 62,
"tokens": 244
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/infrastructure/tls/acme_cert_watcher_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/tls/provider_status_test.go": {
"description": "TestProviderStatus_ReportsAnEphemeralSelfSignedCertificate, TestProviderStatus_ReportsTheSpkiDigestOfTheServedCertificate",
"tokens": 846,
"hash": "6533973dc63f83be",
"size": 2959,
"mtimeMs": 1788275164223.7578,
"updatedAt": "2026-10-06T11:06:20.887Z",
"source": "scan",
"symbols": [
{
"name": "TestProviderStatus_ReportsAnEphemeralSelfSignedCertificate",
"kind": "fn",
"startLine": 17,
"endLine": 52,
"tokens": 321
},
{
"name": "TestProviderStatus_ReportsTheSpkiDigestOfTheServedCertificate",
"kind": "fn",
"startLine": 58,
"endLine": 86,
"tokens": 293
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/infrastructure/tls/provider_status.go": {
"description": "ProviderStatus (22 fields); methods: HasCertificateFor, EarliestExpiry, LastReload, LastChange",
"tokens": 1114,
"hash": "101225f5c248c91f",
"size": 3899,
"mtimeMs": 1788275174672.6526,
"updatedAt": "2026-10-06T11:06:20.887Z",
"source": "scan",
"symbols": [
{
"name": "ProviderStatus",
"kind": "class",
"startLine": 22,
"endLine": 24,
"tokens": 17
},
{
"name": "NewProviderStatus",
"kind": "fn",
"startLine": 26,
"endLine": 28,
"tokens": 33
},
{
"name": "leafFor",
"kind": "method",
"startLine": 31,
"endLine": 50,
"tokens": 127
},
{
"name": "HasCertificateFor",
"kind": "method",
"startLine": 52,
"endLine": 54,
"tokens": 28
},
{
"name": "EarliestExpiry",
"kind": "method",
"startLine": 58,
"endLine": 68,
"tokens": 82
},
{
"name": "LastReload",
"kind": "method",
"startLine": 72,
"endLine": 72,
"tokens": 20
},
{
"name": "LastChange",
"kind": "method",
"startLine": 73,
"endLine": 73,
"tokens": 20
},
{
"name": "UnknownSNICount",
"kind": "method",
"startLine": 76,
"endLine": 76,
"tokens": 18
},
{
"name": "CertificateSummary",
"kind": "method",
"startLine": 81,
"endLine": 98,
"tokens": 218
},
{
"name": "CertificateSpkiDigest",
"kind": "method",
"startLine": 106,
"endLine": 113,
"tokens": 68
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/infrastructure/tls/acme_cert_watcher_test.go",
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/tlspolicy/resolver_test.go": {
"description": "rewriteTransport (31 fields); methods: RoundTrip, LookupTLSA",
"tokens": 2177,
"hash": "fecfa7185a129c19",
"size": 7619,
"mtimeMs": 1785635482528.7688,
"updatedAt": "2026-10-06T11:06:20.887Z",
"source": "scan",
"symbols": [
{
"name": "policyServer",
"kind": "fn",
"startLine": 19,
"endLine": 40,
"tokens": 188
},
{
"name": "rewriteTransport",
"kind": "class",
"startLine": 42,
"endLine": 45,
"tokens": 21
},
{
"name": "RoundTrip",
"kind": "method",
"startLine": 47,
"endLine": 51,
"tokens": 52
},
{
"name": "stubTlsaLookup",
"kind": "class",
"startLine": 53,
"endLine": 57,
"tokens": 32
},
{
"name": "LookupTLSA",
"kind": "method",
"startLine": 59,
"endLine": 61,
"tokens": 45
},
{
"name": "TestResolver_MtaStsEnforcePolicyIsParsed",
"kind": "fn",
"startLine": 63,
"endLine": 84,
"tokens": 239
},
{
"name": "TestResolver_MtaStsTestingModeDoesNotEnforce",
"kind": "fn",
"startLine": 86,
"endLine": 97,
"tokens": 126
},
{
"name": "TestResolver_MissingPolicyIsOpportunistic",
"kind": "fn",
"startLine": 101,
"endLine": 112,
"tokens": 120
},
{
"name": "TestResolver_CachesPolicyForMaxAge",
"kind": "fn",
"startLine": 116,
"endLine": 130,
"tokens": 142
},
{
"name": "TestResolver_RefetchesAfterCacheExpiry",
"kind": "fn",
"startLine": 132,
"endLine": 146,
"tokens": 166
},
{
"name": "TestResolver_ModeNoneIsOpportunistic",
"kind": "fn",
"startLine": 149,
"endLine": 157,
"tokens": 121
},
{
"name": "TestResolver_DaneWinsAndSkipsMtaStsFetch",
"kind": "fn",
"startLine": 161,
"endLine": 179,
"tokens": 210
},
{
"name": "TestResolver_RefusesUnauthenticatedTlsaRecords",
"kind": "fn",
"startLine": 183,
"endLine": 196,
"tokens": 153
},
{
"name": "TestResolver_DaneDisabledFallsBackToMtaSts",
"kind": "fn",
"startLine": 199,
"endLine": 210,
"tokens": 145
},
{
"name": "TestParsePolicy_ClampsAbsurdMaxAge",
"kind": "fn",
"startLine": 212,
"endLine": 222,
"tokens": 107
}
],
"symbolSource": "ts",
"skeleton": "func policyServer(t *testing.T, body string, status int) (*http.Client, *int) {\ntype rewriteTransport struct {\nfunc (rt rewriteTransport) RoundTrip(req *http.Request) (*http.Response, error) {\ntype stubTlsaLookup struct {\nfunc (s stubTlsaLookup) LookupTLSA(_ context.Context, _ string, _ int) ([]valueobject.TLSARecord, bool, error) {\nfunc TestResolver_MtaStsEnforcePolicyIsParsed(t *testing.T) {\nfunc TestResolver_MtaStsTestingModeDoesNotEnforce(t *testing.T) {\nfunc TestResolver_MissingPolicyIsOpportunistic(t *testing.T) {\nfunc TestResolver_CachesPolicyForMaxAge(t *testing.T) {\nfunc TestResolver_RefetchesAfterCacheExpiry(t *testing.T) {\nfunc TestResolver_ModeNoneIsOpportunistic(t *testing.T) {\nfunc TestResolver_DaneWinsAndSkipsMtaStsFetch(t *testing.T) {\nfunc TestResolver_RefusesUnauthenticatedTlsaRecords(t *testing.T) {\nfunc TestResolver_DaneDisabledFallsBackToMtaSts(t *testing.T) {\nfunc TestParsePolicy_ClampsAbsurdMaxAge(t *testing.T) {",
"imports": [
"services/protocols/internal/infrastructure/tls/acme_cert_watcher_test.go",
"services/protocols/internal/presentation/http/admin_dkim_api.go",
"services/protocols/internal/domain/entity/dkim_key_pair_test.go",
"services/protocols/internal/domain/valueobject/autoconfig_xml_test.go"
],
"importance": 0.015
},
"services/protocols/internal/infrastructure/tlspolicy/resolver.go": {
"description": "resolves the outbound transport security policy of",
"tokens": 1949,
"hash": "d9e55a3276c3793b",
"size": 6819,
"mtimeMs": 1785635482528.59,
"updatedAt": "2026-10-06T11:06:20.887Z",
"source": "scan",
"symbols": [
{
"name": "Resolver",
"kind": "class",
"startLine": 27,
"endLine": 37,
"tokens": 54
},
{
"name": "TlsaLookup",
"kind": "class",
"startLine": 42,
"endLine": 44,
"tokens": 44
},
{
"name": "cachedPolicy",
"kind": "class",
"startLine": 46,
"endLine": 52,
"tokens": 63
},
{
"name": "Option",
"kind": "class",
"startLine": 54,
"endLine": 54,
"tokens": 8
},
{
"name": "WithDane",
"kind": "fn",
"startLine": 59,
"endLine": 64,
"tokens": 38
},
{
"name": "WithMtaSts",
"kind": "fn",
"startLine": 66,
"endLine": 68,
"tokens": 28
},
{
"name": "WithHTTPClient",
"kind": "fn",
"startLine": 70,
"endLine": 72,
"tokens": 30
},
{
"name": "WithClock",
"kind": "fn",
"startLine": 74,
"endLine": 76,
"tokens": 26
},
{
"name": "NewResolver",
"kind": "fn",
"startLine": 78,
"endLine": 89,
"tokens": 80
},
{
"name": "Resolve",
"kind": "method",
"startLine": 91,
"endLine": 121,
"tokens": 290
},
{
"name": "mtaStsPolicy",
"kind": "method",
"startLine": 123,
"endLine": 144,
"tokens": 203
},
{
"name": "fetchPolicy",
"kind": "method",
"startLine": 148,
"endLine": 184,
"tokens": 353
},
{
"name": "parsePolicy",
"kind": "fn",
"startLine": 187,
"endLine": 213,
"tokens": 217
},
{
"name": "cached",
"kind": "method",
"startLine": 215,
"endLine": 224,
"tokens": 66
},
{
"name": "store",
"kind": "method",
"startLine": 226,
"endLine": 230,
"tokens": 35
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/presentation/http/admin_dkim_api.go",
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/domain/entity/dkim_key_pair_test.go",
"services/protocols/internal/domain/valueobject/autoconfig_xml_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/infrastructure/vault/secret_vault_test.go": {
"description": "TestSecretVault_SealOpenRoundTrip, TestSecretVault_SealIsNonDeterministic, TestSecretVault_DerivationIsStableAcrossInstances, TestSecretVault_Wrong...",
"tokens": 762,
"hash": "94aaf375f764ad47",
"size": 2664,
"mtimeMs": 1785635482528.8723,
"updatedAt": "2026-10-06T11:06:20.888Z",
"source": "scan",
"symbols": [
{
"name": "TestSecretVault_SealOpenRoundTrip",
"kind": "fn",
"startLine": 9,
"endLine": 31,
"tokens": 183
},
{
"name": "TestSecretVault_SealIsNonDeterministic",
"kind": "fn",
"startLine": 35,
"endLine": 44,
"tokens": 84
},
{
"name": "TestSecretVault_DerivationIsStableAcrossInstances",
"kind": "fn",
"startLine": 48,
"endLine": 60,
"tokens": 132
},
{
"name": "TestSecretVault_WrongMasterKeyFails",
"kind": "fn",
"startLine": 62,
"endLine": 70,
"tokens": 99
},
{
"name": "TestSecretVault_RequiresMasterKey",
"kind": "fn",
"startLine": 74,
"endLine": 78,
"tokens": 51
},
{
"name": "TestSecretVault_RejectsUnknownKeyVersion",
"kind": "fn",
"startLine": 80,
"endLine": 87,
"tokens": 85
}
],
"symbolSource": "ts",
"importance": 0.1298
},
"services/protocols/internal/infrastructure/vault/secret_vault.go": {
"description": "seals the reusable secrets the system stores in Postgres -",
"tokens": 998,
"hash": "396796e974d3eb32",
"size": 3491,
"mtimeMs": 1785635482528.7688,
"updatedAt": "2026-10-06T11:06:20.888Z",
"source": "scan",
"symbols": [
{
"name": "SecretVault",
"kind": "class",
"startLine": 38,
"endLine": 40,
"tokens": 13
},
{
"name": "New",
"kind": "fn",
"startLine": 45,
"endLine": 69,
"tokens": 219
},
{
"name": "Seal",
"kind": "method",
"startLine": 74,
"endLine": 80,
"tokens": 88
},
{
"name": "Open",
"kind": "method",
"startLine": 85,
"endLine": 97,
"tokens": 153
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/presentation/http/admin_dkim_api.go": {
"description": "adminDkimAPI (33 fields); methods: SetAdminDkimAPI",
"tokens": 1675,
"hash": "b971e3522a55d126",
"size": 5860,
"mtimeMs": 1785689161519.2258,
"updatedAt": "2026-10-06T11:06:20.888Z",
"source": "scan",
"symbols": [
{
"name": "KeyGenerator",
"kind": "class",
"startLine": 20,
"endLine": 20,
"tokens": 28
},
{
"name": "adminDkimAPI",
"kind": "class",
"startLine": 28,
"endLine": 32,
"tokens": 34
},
{
"name": "bearerOrCookie",
"kind": "fn",
"startLine": 35,
"endLine": 43,
"tokens": 83
},
{
"name": "authenticate",
"kind": "method",
"startLine": 45,
"endLine": 57,
"tokens": 125
},
{
"name": "handleKeys",
"kind": "method",
"startLine": 59,
"endLine": 76,
"tokens": 136
},
{
"name": "handleRotate",
"kind": "method",
"startLine": 78,
"endLine": 132,
"tokens": 548
},
{
"name": "dkimPublicRecord",
"kind": "fn",
"startLine": 135,
"endLine": 141,
"tokens": 57
},
{
"name": "isValidSelector",
"kind": "fn",
"startLine": 143,
"endLine": 155,
"tokens": 80
},
{
"name": "SetAdminDkimAPI",
"kind": "method",
"startLine": 159,
"endLine": 164,
"tokens": 83
},
{
"name": "handleAdminDkimKeys",
"kind": "method",
"startLine": 166,
"endLine": 173,
"tokens": 76
},
{
"name": "handleAdminDkimRotate",
"kind": "method",
"startLine": 175,
"endLine": 182,
"tokens": 77
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/infrastructure/postgres/acme_repository.go"
],
"importance": 0.1889
},
"services/protocols/internal/presentation/http/admin_dns_api.go": {
"description": "Interface: DnsRecordVerifier (21 methods)",
"tokens": 2650,
"hash": "02f0b304b7e9f4fd",
"size": 9274,
"mtimeMs": 1787571927240.7104,
"updatedAt": "2026-10-06T11:06:20.888Z",
"source": "scan",
"symbols": [
{
"name": "DnsRecordVerifier",
"kind": "class",
"startLine": 15,
"endLine": 17,
"tokens": 32
},
{
"name": "DnsSpecSource",
"kind": "class",
"startLine": 22,
"endLine": 24,
"tokens": 33
},
{
"name": "ReconcileResult",
"kind": "class",
"startLine": 31,
"endLine": 38,
"tokens": 73
},
{
"name": "DomainReconciler",
"kind": "class",
"startLine": 46,
"endLine": 48,
"tokens": 33
},
{
"name": "DnsStatusWriter",
"kind": "class",
"startLine": 55,
"endLine": 57,
"tokens": 29
},
{
"name": "adminDnsAPI",
"kind": "class",
"startLine": 59,
"endLine": 69,
"tokens": 114
},
{
"name": "handleReconcile",
"kind": "method",
"startLine": 76,
"endLine": 111,
"tokens": 388
},
{
"name": "handleVerify",
"kind": "method",
"startLine": 121,
"endLine": 199,
"tokens": 659
},
{
"name": "SetAdminDnsAPI",
"kind": "method",
"startLine": 203,
"endLine": 215,
"tokens": 150
},
{
"name": "handleAdminDnsReconcile",
"kind": "method",
"startLine": 218,
"endLine": 229,
"tokens": 118
},
{
"name": "SetDnsStatusWriter",
"kind": "method",
"startLine": 234,
"endLine": 239,
"tokens": 34
},
{
"name": "SetDnsReconciler",
"kind": "method",
"startLine": 241,
"endLine": 251,
"tokens": 148
},
{
"name": "handleAdminDnsVerify",
"kind": "method",
"startLine": 253,
"endLine": 260,
"tokens": 78
}
],
"symbolSource": "ts",
"skeleton": "type DnsRecordVerifier interface {\ntype DnsSpecSource interface {\ntype ReconcileResult struct {\ntype DomainReconciler interface {\ntype DnsStatusWriter interface {\ntype adminDnsAPI struct {\nfunc (a *adminDnsAPI) handleReconcile(w http.ResponseWriter, r *http.Request) {\nfunc (a *adminDnsAPI) handleVerify(w http.ResponseWriter, r *http.Request) {\nfunc (r *Router) SetAdminDnsAPI(spec DnsSpecSource, verifier DnsRecordVerifier, sessionSecret string) {\nfunc (r *Router) handleAdminDnsReconcile(w http.ResponseWriter, req *http.Request) {\nfunc (r *Router) SetDnsStatusWriter(w DnsStatusWriter) {\nfunc (r *Router) SetDnsReconciler(reconciler DomainReconciler) {\nfunc (r *Router) handleAdminDnsVerify(w http.ResponseWriter, req *http.Request) {",
"imports": [
"services/protocols/internal/presentation/http/admin_dkim_api.go",
"services/protocols/internal/domain/entity/dkim_key_pair_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/presentation/http/admin_dns_reconcile_test.go": {
"description": "stubReconciler (42 fields); methods: ReconcileDomain, SaveDnsStatus",
"tokens": 2445,
"hash": "aa1bdab857fdb9af",
"size": 8555,
"mtimeMs": 1787571912654.9138,
"updatedAt": "2026-10-06T11:06:20.888Z",
"source": "scan",
"symbols": [
{
"name": "stubReconciler",
"kind": "class",
"startLine": 24,
"endLine": 28,
"tokens": 22
},
{
"name": "ReconcileDomain",
"kind": "method",
"startLine": 30,
"endLine": 36,
"tokens": 75
},
{
"name": "newReconcileAPI",
"kind": "fn",
"startLine": 38,
"endLine": 41,
"tokens": 45
},
{
"name": "adminRequest",
"kind": "fn",
"startLine": 43,
"endLine": 47,
"tokens": 59
},
{
"name": "TestReconcileActuallyReconcilesTheDomain",
"kind": "fn",
"startLine": 49,
"endLine": 69,
"tokens": 232
},
{
"name": "TestReconcileRefusesWithoutAnAdminSession",
"kind": "fn",
"startLine": 71,
"endLine": 83,
"tokens": 134
},
{
"name": "TestReconcileRefusesAUserSession",
"kind": "fn",
"startLine": 86,
"endLine": 99,
"tokens": 148
},
{
"name": "TestReconcileRequiresADomain",
"kind": "fn",
"startLine": 101,
"endLine": 112,
"tokens": 110
},
{
"name": "TestReconcileReportsAProviderFailure",
"kind": "fn",
"startLine": 116,
"endLine": 129,
"tokens": 172
},
{
"name": "TestReconcileSaysWhenItIsNotConfigured",
"kind": "fn",
"startLine": 132,
"endLine": 140,
"tokens": 104
},
{
"name": "adminSurfaceToken2",
"kind": "fn",
"startLine": 142,
"endLine": 149,
"tokens": 86
},
{
"name": "stubSpec",
"kind": "class",
"startLine": 153,
"endLine": 153,
"tokens": 7
},
{
"name": "ExpectedRecords",
"kind": "method",
"startLine": 155,
"endLine": 157,
"tokens": 30
},
{
"name": "stubVerifier",
"kind": "class",
"startLine": 159,
"endLine": 159,
"tokens": 8
},
{
"name": "VerifyRecord",
"kind": "method",
"startLine": 161,
"endLine": 163,
"tokens": 30
},
{
"name": "TestReconcilerSurvivesBeingWiredBeforeTheDnsAPI",
"kind": "fn",
"startLine": 173,
"endLine": 206,
"tokens": 355
},
{
"name": "stubStatusWriter",
"kind": "class",
"startLine": 208,
"endLine": 212,
"tokens": 22
},
{
"name": "SaveDnsStatus",
"kind": "method",
"startLine": 214,
"endLine": 218,
"tokens": 44
},
{
"name": "TestVerifyRecordsWhatItFound",
"kind": "fn",
"startLine": 226,
"endLine": 247,
"tokens": 218
}
],
"symbolSource": "ts",
"skeleton": "type stubReconciler struct {\nfunc (s *stubReconciler) ReconcileDomain(_ context.Context, domain string) (ReconcileResult, error) {\nfunc newReconcileAPI(t *testing.T, r *stubReconciler) *adminDnsAPI {\nfunc adminRequest(target string) *http.Request {\nfunc TestReconcileActuallyReconcilesTheDomain(t *testing.T) {\nfunc TestReconcileRefusesWithoutAnAdminSession(t *testing.T) {\nfunc TestReconcileRefusesAUserSession(t *testing.T) {\nfunc TestReconcileRequiresADomain(t *testing.T) {\nfunc TestReconcileReportsAProviderFailure(t *testing.T) {\nfunc TestReconcileSaysWhenItIsNotConfigured(t *testing.T) {\nfunc adminSurfaceToken2() string {\ntype stubSpec struct{}\nfunc (stubSpec) ExpectedRecords(context.Context, string) ([]entity.DnsRecord, error) {\ntype stubVerifier struct{}\nfunc (stubVerifier) VerifyRecord(context.Context, entity.DnsRecord) (bool, string) {\nfunc TestReconcilerSurvivesBeingWiredBeforeTheDnsAPI(t *testing.T) {\ntype stubStatusWriter struct {\nfunc (s *stubStatusWriter) SaveDnsStatus(_ context.Context, domain, status string) error {\nfunc TestVerifyRecordsWhatItFound(t *testing.T) {",
"imports": [
"services/protocols/internal/presentation/http/admin_dkim_api.go",
"services/protocols/internal/domain/entity/dkim_key_pair_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/presentation/http/admin_tls_api_test.go": {
"description": "TestAcmeCertWatcherSatisfiesTlsStatusSource",
"tokens": 155,
"hash": "673036cbb456c177",
"size": 541,
"mtimeMs": 1787583336687.2886,
"updatedAt": "2026-10-06T11:06:20.888Z",
"source": "scan",
"imports": [
"services/protocols/internal/infrastructure/tls/acme_cert_watcher_test.go",
"services/protocols/internal/presentation/http/admin_dkim_api.go"
],
"importance": 0.0144
},
"services/protocols/internal/presentation/http/admin_tls_api.go": {
"description": "Interface: TlsStatusSource (14 methods)",
"tokens": 1376,
"hash": "9015a060030e2704",
"size": 4816,
"mtimeMs": 1788275187056.9775,
"updatedAt": "2026-10-06T11:06:20.889Z",
"source": "scan",
"symbols": [
{
"name": "TlsStatusSource",
"kind": "class",
"startLine": 11,
"endLine": 17,
"tokens": 58
},
{
"name": "TlsCertificateInspector",
"kind": "class",
"startLine": 22,
"endLine": 24,
"tokens": 34
},
{
"name": "TlsDaneInspector",
"kind": "class",
"startLine": 28,
"endLine": 30,
"tokens": 25
},
{
"name": "adminTlsAPI",
"kind": "class",
"startLine": 32,
"endLine": 38,
"tokens": 44
},
{
"name": "handleStatus",
"kind": "method",
"startLine": 40,
"endLine": 122,
"tokens": 841
},
{
"name": "SetAdminTlsAPI",
"kind": "method",
"startLine": 125,
"endLine": 136,
"tokens": 112
},
{
"name": "handleAdminTls",
"kind": "method",
"startLine": 138,
"endLine": 145,
"tokens": 76
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/presentation/http/admin_dkim_api.go"
],
"importance": 0.0144
},
"services/protocols/internal/presentation/http/admin_tls_status_test.go": {
"description": "stillSource (4 fields)",
"tokens": 513,
"hash": "a333c21f54280560",
"size": 1795,
"mtimeMs": 1787583336694.784,
"updatedAt": "2026-10-06T11:06:20.889Z",
"source": "scan",
"symbols": [
{
"name": "TestTlsStatus_NoWatcherVerdictWithoutAReloadTime",
"kind": "fn",
"startLine": 15,
"endLine": 41,
"tokens": 254
},
{
"name": "stillSource",
"kind": "class",
"startLine": 45,
"endLine": 45,
"tokens": 8
},
{
"name": "EarliestExpiry",
"kind": "method",
"startLine": 47,
"endLine": 49,
"tokens": 39
},
{
"name": "LastReload",
"kind": "method",
"startLine": 50,
"endLine": 50,
"tokens": 21
},
{
"name": "LastChange",
"kind": "method",
"startLine": 51,
"endLine": 51,
"tokens": 21
},
{
"name": "UnknownSNICount",
"kind": "method",
"startLine": 52,
"endLine": 52,
"tokens": 18
},
{
"name": "HasCertificateFor",
"kind": "method",
"startLine": 53,
"endLine": 53,
"tokens": 19
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/presentation/http/admin_dkim_api.go"
],
"importance": 0.0144
},
"services/protocols/internal/presentation/http/attachment_test.go": {
"description": "TestAttachmentDownload_DowngradesRenderableContentTypes, TestAttachmentDownload_KeepsHarmlessContentTypes, TestAttachmentDownload_NeutralisesHostil...",
"tokens": 937,
"hash": "e0c7e15db1a21af1",
"size": 3278,
"mtimeMs": 1785689161519.3965,
"updatedAt": "2026-10-06T11:06:20.889Z",
"source": "scan",
"symbols": [
{
"name": "buildMessage",
"kind": "fn",
"startLine": 13,
"endLine": 20,
"tokens": 115
},
{
"name": "download",
"kind": "fn",
"startLine": 22,
"endLine": 27,
"tokens": 71
},
{
"name": "TestAttachmentDownload_DowngradesRenderableContentTypes",
"kind": "fn",
"startLine": 31,
"endLine": 38,
"tokens": 122
},
{
"name": "TestAttachmentDownload_KeepsHarmlessContentTypes",
"kind": "fn",
"startLine": 40,
"endLine": 45,
"tokens": 76
},
{
"name": "TestAttachmentDownload_NeutralisesHostileFilenames",
"kind": "fn",
"startLine": 49,
"endLine": 64,
"tokens": 192
},
{
"name": "TestAttachmentDownload_SetsSniffingAndSandboxGuards",
"kind": "fn",
"startLine": 66,
"endLine": 74,
"tokens": 126
},
{
"name": "TestAttachmentDownload_MissingAttachmentIs404",
"kind": "fn",
"startLine": 76,
"endLine": 81,
"tokens": 72
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/presentation/http/admin_dkim_api.go"
],
"importance": 0.0144
},
"services/protocols/internal/presentation/http/bimi_api.go": {
"description": "Interface: BimiStore (24 methods)",
"tokens": 2025,
"hash": "477b5e448bce585d",
"size": 7087,
"mtimeMs": 1788830725028.3633,
"updatedAt": "2026-10-06T11:06:20.889Z",
"source": "scan",
"symbols": [
{
"name": "BimiStore",
"kind": "class",
"startLine": 16,
"endLine": 20,
"tokens": 64
},
{
"name": "BimiLogo",
"kind": "class",
"startLine": 23,
"endLine": 27,
"tokens": 20
},
{
"name": "bimiAPI",
"kind": "class",
"startLine": 29,
"endLine": 35,
"tokens": 66
},
{
"name": "SetBimiAPI",
"kind": "method",
"startLine": 38,
"endLine": 46,
"tokens": 76
},
{
"name": "handleBimiLogo",
"kind": "method",
"startLine": 54,
"endLine": 92,
"tokens": 395
},
{
"name": "domainFor",
"kind": "method",
"startLine": 94,
"endLine": 102,
"tokens": 100
},
{
"name": "handleBimiAdmin",
"kind": "method",
"startLine": 105,
"endLine": 143,
"tokens": 378
},
{
"name": "get",
"kind": "method",
"startLine": 145,
"endLine": 162,
"tokens": 155
},
{
"name": "put",
"kind": "method",
"startLine": 164,
"endLine": 212,
"tokens": 528
},
{
"name": "BimiLogoURL",
"kind": "fn",
"startLine": 215,
"endLine": 217,
"tokens": 34
}
],
"symbolSource": "ts",
"skeleton": "type BimiStore interface {\ntype BimiLogo struct {\ntype bimiAPI struct {\nfunc (r *Router) SetBimiAPI(store BimiStore, sessionSecret, defaultDomain string) {\nfunc (r *Router) handleBimiLogo(w http.ResponseWriter, req *http.Request) {\nfunc (a *bimiAPI) domainFor(req *http.Request) string {\nfunc (r *Router) handleBimiAdmin(w http.ResponseWriter, req *http.Request) {\nfunc (a *bimiAPI) get(w http.ResponseWriter, req *http.Request, domain string) {\nfunc (a *bimiAPI) put(w http.ResponseWriter, req *http.Request, domain string) {\nfunc BimiLogoURL(mailHost string) string {",
"imports": [
"services/protocols/internal/presentation/http/admin_dkim_api.go",
"services/protocols/internal/domain/bimi/svg_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/presentation/http/events_ws_test.go": {
"description": "TestEventsReachOnlyTheirOwnMailbox, TestASlowSubscriberIsDroppedRatherThanBlocking, TestSubscriberCountFollowsAddAndRemove, TestPublishWithNoSubscr...",
"tokens": 1693,
"hash": "c4cb652fb2b38492",
"size": 5924,
"mtimeMs": 1787316516588.1565,
"updatedAt": "2026-10-06T11:06:20.889Z",
"source": "scan",
"symbols": [
{
"name": "newTestHub",
"kind": "fn",
"startLine": 20,
"endLine": 24,
"tokens": 63
},
{
"name": "subscribeTo",
"kind": "fn",
"startLine": 36,
"endLine": 40,
"tokens": 54
},
{
"name": "TestEventsReachOnlyTheirOwnMailbox",
"kind": "fn",
"startLine": 43,
"endLine": 68,
"tokens": 180
},
{
"name": "TestASlowSubscriberIsDroppedRatherThanBlocking",
"kind": "fn",
"startLine": 72,
"endLine": 93,
"tokens": 172
},
{
"name": "TestSubscriberCountFollowsAddAndRemove",
"kind": "fn",
"startLine": 95,
"endLine": 110,
"tokens": 133
},
{
"name": "TestPublishWithNoSubscribersIsHarmless",
"kind": "fn",
"startLine": 114,
"endLine": 121,
"tokens": 64
},
{
"name": "TestEventStreamRefusesAnUnauthenticatedUpgrade",
"kind": "fn",
"startLine": 127,
"endLine": 136,
"tokens": 97
},
{
"name": "TestEventStreamRefusesAnAdminSession",
"kind": "fn",
"startLine": 138,
"endLine": 149,
"tokens": 121
},
{
"name": "TestEventStreamRefusesASessionWithNoMailbox",
"kind": "fn",
"startLine": 153,
"endLine": 166,
"tokens": 137
},
{
"name": "TestEventCarriesItsPayloadThrough",
"kind": "fn",
"startLine": 170,
"endLine": 191,
"tokens": 188
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/presentation/http/admin_dkim_api.go",
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/application/usecase/apply_rules_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/presentation/http/events_ws.go": {
"description": "EventMessage (30 fields); methods: Publish, SubscriberCount, ServeHTTP, SetEventHub",
"tokens": 1490,
"hash": "df616789e6f9b313",
"size": 5213,
"mtimeMs": 1787316530269.0073,
"updatedAt": "2026-10-06T11:06:20.890Z",
"source": "scan",
"symbols": [
{
"name": "EventMessage",
"kind": "class",
"startLine": 24,
"endLine": 28,
"tokens": 46
},
{
"name": "subscriber",
"kind": "class",
"startLine": 30,
"endLine": 33,
"tokens": 21
},
{
"name": "EventHub",
"kind": "class",
"startLine": 40,
"endLine": 45,
"tokens": 46
},
{
"name": "NewEventHub",
"kind": "fn",
"startLine": 47,
"endLine": 53,
"tokens": 61
},
{
"name": "Publish",
"kind": "method",
"startLine": 57,
"endLine": 77,
"tokens": 143
},
{
"name": "add",
"kind": "method",
"startLine": 79,
"endLine": 83,
"tokens": 32
},
{
"name": "remove",
"kind": "method",
"startLine": 85,
"endLine": 90,
"tokens": 37
},
{
"name": "SubscriberCount",
"kind": "method",
"startLine": 93,
"endLine": 97,
"tokens": 31
},
{
"name": "ServeHTTP",
"kind": "method",
"startLine": 100,
"endLine": 168,
"tokens": 533
},
{
"name": "SetEventHub",
"kind": "method",
"startLine": 171,
"endLine": 173,
"tokens": 18
},
{
"name": "handleEvents",
"kind": "method",
"startLine": 175,
"endLine": 182,
"tokens": 78
},
{
"name": "logDroppedSubscriber",
"kind": "fn",
"startLine": 189,
"endLine": 191,
"tokens": 39
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/presentation/http/admin_dkim_api.go",
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/application/usecase/apply_rules_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/presentation/http/mail_api_test.go": {
"description": "fakeMailStore (58 fields); methods: FindMailboxIDByAddress, ListFolders, ListMessages, GetMessageBlob",
"tokens": 5364,
"hash": "97760fa274c09922",
"size": 18773,
"mtimeMs": 1787415040915.983,
"updatedAt": "2026-10-06T11:06:20.890Z",
"source": "scan",
"symbols": [
{
"name": "fakeMailStore",
"kind": "class",
"startLine": 31,
"endLine": 42,
"tokens": 94
},
{
"name": "FindMailboxIDByAddress",
"kind": "method",
"startLine": 44,
"endLine": 50,
"tokens": 58
},
{
"name": "ListFolders",
"kind": "method",
"startLine": 52,
"endLine": 57,
"tokens": 68
},
{
"name": "ListMessages",
"kind": "method",
"startLine": 59,
"endLine": 63,
"tokens": 47
},
{
"name": "GetMessageBlob",
"kind": "method",
"startLine": 65,
"endLine": 76,
"tokens": 114
},
{
"name": "MarkSeen",
"kind": "method",
"startLine": 78,
"endLine": 81,
"tokens": 52
},
{
"name": "Expunge",
"kind": "method",
"startLine": 83,
"endLine": 90,
"tokens": 70
},
{
"name": "MoveToFolder",
"kind": "method",
"startLine": 92,
"endLine": 100,
"tokens": 77
},
{
"name": "MoveToTrash",
"kind": "method",
"startLine": 102,
"endLine": 110,
"tokens": 69
},
{
"name": "fakeBlobReader",
"kind": "class",
"startLine": 112,
"endLine": 112,
"tokens": 12
},
{
"name": "ReadByID",
"kind": "method",
"startLine": 114,
"endLine": 116,
"tokens": 29
},
{
"name": "newMailAPI",
"kind": "fn",
"startLine": 122,
"endLine": 126,
"tokens": 73
},
{
"name": "request",
"kind": "fn",
"startLine": 131,
"endLine": 136,
"tokens": 74
},
{
"name": "storeWithMail",
"kind": "fn",
"startLine": 138,
"endLine": 147,
"tokens": 96
},
{
"name": "TestMailApiRefusesARequestWithNoSession",
"kind": "fn",
"startLine": 151,
"endLine": 175,
"tokens": 258
},
{
"name": "TestMailApiRefusesAnAdminSession",
"kind": "fn",
"startLine": 179,
"endLine": 190,
"tokens": 117
},
{
"name": "TestMailApiRefusesAnMfaChallengeToken",
"kind": "fn",
"startLine": 194,
"endLine": 205,
"tokens": 121
},
{
"name": "TestMailApiRefusesATamperedToken",
"kind": "fn",
"startLine": 208,
"endLine": 219,
"tokens": 127
},
{
"name": "TestMailApiAcceptsTheSessionCookie",
"kind": "fn",
"startLine": 222,
"endLine": 233,
"tokens": 118
},
{
"name": "TestMailApiServesOnlyTheSessionsOwnMailbox",
"kind": "fn",
"startLine": 239,
"endLine": 258,
"tokens": 173
},
{
"name": "TestMailApiCannotReadAnotherMailboxesMessageByUid",
"kind": "fn",
"startLine": 261,
"endLine": 275,
"tokens": 156
},
{
"name": "TestOpeningAMessageMarksItRead",
"kind": "fn",
"startLine": 280,
"endLine": 293,
"tokens": 148
},
{
"name": "TestMessageListDefaultsToTheInbox",
"kind": "fn",
"startLine": 296,
"endLine": 309,
"tokens": 132
},
{
"name": "TestDeleteMovesToTrashFromAnOrdinaryFolder",
"kind": "fn",
"startLine": 313,
"endLine": 331,
"tokens": 222
},
{
"name": "TestDeleteFromTrashExpungesForGood",
"kind": "fn",
"startLine": 333,
"endLine": 347,
"tokens": 160
},
{
"name": "TestDeleteRejectsAMissingUid",
"kind": "fn",
"startLine": 350,
"endLine": 359,
"tokens": 95
},
{
"name": "TestDeleteRejectsMalformedJson",
"kind": "fn",
"startLine": 361,
"endLine": 370,
"tokens": 92
},
{
"name": "TestDomainErrorsMapToUsefulStatusCodes",
"kind": "fn",
"startLine": 377,
"endLine": 403,
"tokens": 274
},
{
"name": "adminSurfaceToken",
"kind": "fn",
"startLine": 407,
"endLine": 416,
"tokens": 91
},
{
"name": "TestComposeAlwaysSendsAsTheSessionsOwnAddress",
"kind": "fn",
"startLine": 425,
"endLine": 443,
"tokens": 159
}
],
"symbolSource": "ts",
"skeleton": "type fakeMailStore struct {\nfunc (f *fakeMailStore) FindMailboxIDByAddress(_ context.Context, address string) (string, error) {\nfunc (f *fakeMailStore) ListFolders(_ context.Context, mailboxID string) ([]port.WebmailFolder, error) {\nfunc (f *fakeMailStore) ListMessages(\nfunc (f *fakeMailStore) GetMessageBlob(\nfunc (f *fakeMailStore) MarkSeen(_ context.Context, mailboxID, folder string, uid uint32, seen bool) error {\nfunc (f *fakeMailStore) Expunge(_ context.Context, mailboxID, folder string, uid uint32) error {\nfunc (f *fakeMailStore) MoveToFolder(\nfunc (f *fakeMailStore) MoveToTrash(\ntype fakeBlobReader struct{ raw []byte }\nfunc (f *fakeBlobReader) ReadByID(context.Context, uuid.UUID) ([]byte, error) {\nfunc newMailAPI(t *testing.T, store *fakeMailStore, raw []byte) *mailAPI {\nfunc request(method, target string, body string) *http.Request {\nfunc storeWithMail() *fakeMailStore {\nfunc TestMailApiRefusesARequestWithNoSession(t *testing.T) {\nfunc TestMailApiRefusesAnAdminSession(t *testing.T) {\nfunc TestMailApiRefusesAnMfaChallengeToken(t *testing.T) {\nfunc TestMailApiRefusesATamperedToken(t *testing.T) {\nfunc TestMailApiAcceptsTheSessionCookie(t *testing.T) {\nfunc TestMailApiServesOnlyTheSessionsOwnMailbox(t *testing.T) {\nfunc TestMailApiCannotReadAnotherMailboxesMessageByUid(t *testing.T) {\nfunc TestOpeningAMessageMarksItRead(t *testing.T) {",
"imports": [
"services/protocols/internal/presentation/http/admin_dkim_api.go",
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/application/usecase/apply_rules_test.go",
"services/protocols/internal/infrastructure/postgres/acme_repository.go"
],
"importance": 0.0144
},
"services/protocols/internal/presentation/http/mail_api.go": {
"description": "HTTP handlers: writeJSON, writeError",
"tokens": 4631,
"hash": "806f5f98bffb4b28",
"size": 16207,
"mtimeMs": 1787416316724.0115,
"updatedAt": "2026-10-06T11:06:20.890Z",
"source": "scan",
"symbols": [
{
"name": "mailAPI",
"kind": "class",
"startLine": 26,
"endLine": 32,
"tokens": 74
},
{
"name": "writeJSON",
"kind": "fn",
"startLine": 34,
"endLine": 38,
"tokens": 52
},
{
"name": "writeError",
"kind": "fn",
"startLine": 40,
"endLine": 42,
"tokens": 44
},
{
"name": "authenticate",
"kind": "method",
"startLine": 46,
"endLine": 68,
"tokens": 234
},
{
"name": "handleFolders",
"kind": "method",
"startLine": 70,
"endLine": 81,
"tokens": 82
},
{
"name": "handleMessages",
"kind": "method",
"startLine": 83,
"endLine": 103,
"tokens": 149
},
{
"name": "handleMessage",
"kind": "method",
"startLine": 105,
"endLine": 145,
"tokens": 341
},
{
"name": "handleAttachmentDownload",
"kind": "method",
"startLine": 147,
"endLine": 174,
"tokens": 369
},
{
"name": "safeAttachmentContentType",
"kind": "fn",
"startLine": 192,
"endLine": 198,
"tokens": 64
},
{
"name": "sanitiseFilename",
"kind": "fn",
"startLine": 202,
"endLine": 220,
"tokens": 113
},
{
"name": "handleSeen",
"kind": "method",
"startLine": 222,
"endLine": 246,
"tokens": 190
},
{
"name": "handleSend",
"kind": "method",
"startLine": 248,
"endLine": 264,
"tokens": 104
},
{
"name": "handleDelete",
"kind": "method",
"startLine": 268,
"endLine": 295,
"tokens": 212
},
{
"name": "handleFolderAdmin",
"kind": "method",
"startLine": 299,
"endLine": 338,
"tokens": 320
},
{
"name": "handleMove",
"kind": "method",
"startLine": 341,
"endLine": 369,
"tokens": 224
},
{
"name": "handleSaveDraft",
"kind": "method",
"startLine": 372,
"endLine": 389,
"tokens": 138
},
{
"name": "decodeCompose",
"kind": "method",
"startLine": 397,
"endLine": 438,
"tokens": 411
},
{
"name": "fail",
"kind": "method",
"startLine": 441,
"endLine": 472,
"tokens": 577
},
{
"name": "decodeDraft",
"kind": "method",
"startLine": 479,
"endLine": 498,
"tokens": 199
}
],
"symbolSource": "ts",
"skeleton": "type mailAPI struct {\nfunc writeJSON(w http.ResponseWriter, status int, payload any) {\nfunc writeError(w http.ResponseWriter, status int, code, message string) {\nfunc (m *mailAPI) authenticate(w http.ResponseWriter, r *http.Request) (*WebSession, bool) {\nfunc (m *mailAPI) handleFolders(w http.ResponseWriter, r *http.Request) {\nfunc (m *mailAPI) handleMessages(w http.ResponseWriter, r *http.Request) {\nfunc (m *mailAPI) handleMessage(w http.ResponseWriter, r *http.Request) {\nfunc (m *mailAPI) handleAttachmentDownload(w http.ResponseWriter, _ *http.Request, raw []byte, filename string) {\nfunc safeAttachmentContentType(declared string) string {\nfunc sanitiseFilename(name string) string {\nfunc (m *mailAPI) handleSeen(w http.ResponseWriter, r *http.Request) {\nfunc (m *mailAPI) handleSend(w http.ResponseWriter, r *http.Request) {\nfunc (m *mailAPI) handleDelete(w http.ResponseWriter, r *http.Request) {\nfunc (m *mailAPI) handleFolderAdmin(w http.ResponseWriter, r *http.Request) {\nfunc (m *mailAPI) handleMove(w http.ResponseWriter, r *http.Request) {\nfunc (m *mailAPI) handleSaveDraft(w http.ResponseWriter, r *http.Request) {\nfunc (m *mailAPI) decodeCompose(\nfunc (m *mailAPI) fail(w http.ResponseWriter, err error) {\nfunc (m *mailAPI) decodeDraft(",
"imports": [
"services/protocols/internal/presentation/http/admin_dkim_api.go",
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/application/usecase/apply_rules_test.go",
"services/protocols/internal/infrastructure/postgres/acme_repository.go"
],
"importance": 0.0144
},
"services/protocols/internal/presentation/http/router_test.go": {
"description": "TestRouter_MtaSts_Autoconfig_SecurityTxt_Ingest, TestRouter_HealthReportsDegradedWithoutFailing, TestRouter_HealthFailsWhenDependencyIsDown",
"tokens": 1153,
"hash": "c16425bf80bcc39b",
"size": 4034,
"mtimeMs": 1785668486703.307,
"updatedAt": "2026-10-06T11:06:20.890Z",
"source": "scan",
"symbols": [
{
"name": "TestRouter_MtaSts_Autoconfig_SecurityTxt_Ingest",
"kind": "fn",
"startLine": 14,
"endLine": 70,
"tokens": 672
},
{
"name": "TestRouter_HealthReportsDegradedWithoutFailing",
"kind": "fn",
"startLine": 75,
"endLine": 92,
"tokens": 227
},
{
"name": "TestRouter_HealthFailsWhenDependencyIsDown",
"kind": "fn",
"startLine": 95,
"endLine": 105,
"tokens": 116
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/presentation/http/admin_dkim_api.go",
"services/protocols/internal/application/usecase/apply_rules_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/presentation/http/router.go": {
"description": "Router (45 fields); methods: SetMtaStsMode, ServeHTTP, SetDegradedCheck, SetMailAPI",
"tokens": 3672,
"hash": "ec0b09db271a4161",
"size": 12852,
"mtimeMs": 1788830725028.6208,
"updatedAt": "2026-10-06T11:06:20.891Z",
"source": "scan",
"symbols": [
{
"name": "Router",
"kind": "class",
"startLine": 20,
"endLine": 49,
"tokens": 365
},
{
"name": "NewRouter",
"kind": "fn",
"startLine": 51,
"endLine": 65,
"tokens": 181
},
{
"name": "SetMtaStsMode",
"kind": "method",
"startLine": 70,
"endLine": 72,
"tokens": 24
},
{
"name": "ServeHTTP",
"kind": "method",
"startLine": 74,
"endLine": 76,
"tokens": 28
},
{
"name": "registerRoutes",
"kind": "method",
"startLine": 78,
"endLine": 104,
"tokens": 479
},
{
"name": "SetDegradedCheck",
"kind": "method",
"startLine": 109,
"endLine": 111,
"tokens": 24
},
{
"name": "handleHealth",
"kind": "method",
"startLine": 113,
"endLine": 137,
"tokens": 232
},
{
"name": "handleMtaSts",
"kind": "method",
"startLine": 139,
"endLine": 151,
"tokens": 164
},
{
"name": "handleSecurityTxt",
"kind": "method",
"startLine": 153,
"endLine": 164,
"tokens": 164
},
{
"name": "handleThunderbirdAutoconfig",
"kind": "method",
"startLine": 166,
"endLine": 175,
"tokens": 113
},
{
"name": "handleOutlookAutodiscover",
"kind": "method",
"startLine": 177,
"endLine": 186,
"tokens": 121
},
{
"name": "handleDmarcIngest",
"kind": "method",
"startLine": 188,
"endLine": 209,
"tokens": 205
},
{
"name": "handleTlsRptIngest",
"kind": "method",
"startLine": 211,
"endLine": 232,
"tokens": 206
},
{
"name": "extractHost",
"kind": "fn",
"startLine": 236,
"endLine": 244,
"tokens": 66
},
{
"name": "baseDomain",
"kind": "fn",
"startLine": 250,
"endLine": 257,
"tokens": 54
},
{
"name": "SetMailAPI",
"kind": "method",
"startLine": 262,
"endLine": 267,
"tokens": 66
},
{
"name": "mailReady",
"kind": "method",
"startLine": 269,
"endLine": 276,
"tokens": 69
},
{
"name": "handleMailFolders",
"kind": "method",
"startLine": 278,
"endLine": 282,
"tokens": 39
},
{
"name": "handleMailMessages",
"kind": "method",
"startLine": 284,
"endLine": 288,
"tokens": 40
},
{
"name": "handleMailMessage",
"kind": "method",
"startLine": 290,
"endLine": 294,
"tokens": 39
},
{
"name": "handleMailSeen",
"kind": "method",
"startLine": 296,
"endLine": 304,
"tokens": 75
},
{
"name": "handleMailSend",
"kind": "method",
"startLine": 306,
"endLine": 314,
"tokens": 75
},
{
"name": "handleMailDelete",
"kind": "method",
"startLine": 318,
"endLine": 326,
"tokens": 89
},
{
"name": "handleMailFolderAdmin",
"kind": "method",
"startLine": 329,
"endLine": 337,
"tokens": 79
},
{
"name": "SetFolderAdmin",
"kind": "method",
"startLine": 340,
"endLine": 344,
"tokens": 37
},
{
"name": "handleMailMove",
"kind": "method",
"startLine": 347,
"endLine": 355,
"tokens": 75
},
{
"name": "handleMailDraft",
"kind": "method",
"startLine": 357,
"endLine": 365,
"tokens": 77
}
],
"symbolSource": "ts",
"skeleton": "type Router struct {\nfunc NewRouter(reportUseCase *appusecase.IngestReportsUseCase, pingFunc func() error) *Router {\nfunc (r *Router) SetMtaStsMode(mode valueobject.MtaStsMode) {\nfunc (r *Router) ServeHTTP(w http.ResponseWriter, req *http.Request) {\nfunc (r *Router) registerRoutes() {\nfunc (r *Router) SetDegradedCheck(check func() error) {\nfunc (r *Router) handleHealth(w http.ResponseWriter, _ *http.Request) {\nfunc (r *Router) handleMtaSts(w http.ResponseWriter, req *http.Request) {\nfunc (r *Router) handleSecurityTxt(w http.ResponseWriter, req *http.Request) {\nfunc (r *Router) handleThunderbirdAutoconfig(w http.ResponseWriter, req *http.Request) {\nfunc (r *Router) handleOutlookAutodiscover(w http.ResponseWriter, req *http.Request) {\nfunc (r *Router) handleDmarcIngest(w http.ResponseWriter, req *http.Request) {\nfunc (r *Router) handleTlsRptIngest(w http.ResponseWriter, req *http.Request) {\nfunc extractHost(hostHeader string) string {\nfunc baseDomain(host string) string {\nfunc (r *Router) SetMailAPI(useCase *appusecase.WebmailUseCase, sessionSecret string) {\nfunc (r *Router) mailReady(w http.ResponseWriter) bool {\nfunc (r *Router) handleMailFolders(w http.ResponseWriter, req *http.Request) {\nfunc (r *Router) handleMailMessages(w http.ResponseWriter, req *http.Request) {\nfunc (r *Router) handleMailMessage(w http.ResponseWriter, req *http.Request) {",
"imports": [
"services/protocols/internal/presentation/http/admin_dkim_api.go",
"services/protocols/internal/application/usecase/apply_rules_test.go",
"services/protocols/internal/domain/valueobject/autoconfig_xml_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/presentation/http/websession_test.go": {
"description": "TestWebSessionVerifier_AcceptsTokenIssuedByTheAuthService, TestWebSessionVerifier_RejectsChallengeToken, TestWebSessionVerifier_RejectsWrongSecret,...",
"tokens": 1697,
"hash": "507ff34b5540498d",
"size": 5938,
"mtimeMs": 1787496118558.5413,
"updatedAt": "2026-10-06T11:06:20.891Z",
"source": "scan",
"symbols": [
{
"name": "testVerifier",
"kind": "fn",
"startLine": 27,
"endLine": 31,
"tokens": 50
},
{
"name": "TestWebSessionVerifier_AcceptsTokenIssuedByTheAuthService",
"kind": "fn",
"startLine": 33,
"endLine": 44,
"tokens": 149
},
{
"name": "TestWebSessionVerifier_RejectsChallengeToken",
"kind": "fn",
"startLine": 48,
"endLine": 53,
"tokens": 64
},
{
"name": "TestWebSessionVerifier_RejectsWrongSecret",
"kind": "fn",
"startLine": 55,
"endLine": 60,
"tokens": 64
},
{
"name": "TestWebSessionVerifier_RejectsTamperedPayload",
"kind": "fn",
"startLine": 64,
"endLine": 69,
"tokens": 71
},
{
"name": "TestWebSessionVerifier_RequireSurfaceRejectsOtherSurface",
"kind": "fn",
"startLine": 71,
"endLine": 79,
"tokens": 117
},
{
"name": "TestWebSessionVerifier_RejectsMalformed",
"kind": "fn",
"startLine": 81,
"endLine": 88,
"tokens": 74
},
{
"name": "TestWebSessionVerifier_RejectsExpiredToken",
"kind": "fn",
"startLine": 91,
"endLine": 97,
"tokens": 90
},
{
"name": "mintSession",
"kind": "fn",
"startLine": 105,
"endLine": 108,
"tokens": 30
},
{
"name": "mintSessionRaw",
"kind": "fn",
"startLine": 112,
"endLine": 126,
"tokens": 136
},
{
"name": "TestMintedSessionVerifiesLikeARealOne",
"kind": "fn",
"startLine": 130,
"endLine": 144,
"tokens": 156
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/presentation/http/websession.go": {
"description": "WebSession (29 fields); methods: Verify, RequireSurface",
"tokens": 934,
"hash": "806a14f47694d53f",
"size": 3266,
"mtimeMs": 1785689161519.7087,
"updatedAt": "2026-10-06T11:06:20.891Z",
"source": "scan",
"symbols": [
{
"name": "WebSession",
"kind": "class",
"startLine": 16,
"endLine": 27,
"tokens": 112
},
{
"name": "WebSessionVerifier",
"kind": "class",
"startLine": 43,
"endLine": 46,
"tokens": 22
},
{
"name": "NewWebSessionVerifier",
"kind": "fn",
"startLine": 48,
"endLine": 50,
"tokens": 38
},
{
"name": "Verify",
"kind": "method",
"startLine": 55,
"endLine": 89,
"tokens": 270
},
{
"name": "RequireSurface",
"kind": "method",
"startLine": 93,
"endLine": 102,
"tokens": 85
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/presentation/imap/backend_test.go": {
"description": "fakeAuthRepository (64 fields); methods: FindByAddress, ListFolders, FindByName, ListMessages",
"tokens": 6125,
"hash": "85ea4a755d6345db",
"size": 21437,
"mtimeMs": 1785635482529.1238,
"updatedAt": "2026-10-06T11:06:20.891Z",
"source": "scan",
"symbols": [
{
"name": "fakeAuthRepository",
"kind": "class",
"startLine": 16,
"endLine": 18,
"tokens": 21
},
{
"name": "FindByAddress",
"kind": "method",
"startLine": 20,
"endLine": 26,
"tokens": 55
},
{
"name": "fakeImapFolderRepository",
"kind": "class",
"startLine": 28,
"endLine": 30,
"tokens": 24
},
{
"name": "ListFolders",
"kind": "method",
"startLine": 32,
"endLine": 38,
"tokens": 64
},
{
"name": "FindByName",
"kind": "method",
"startLine": 40,
"endLine": 46,
"tokens": 57
},
{
"name": "fakeMessageQueryRepository",
"kind": "class",
"startLine": 48,
"endLine": 50,
"tokens": 21
},
{
"name": "ListMessages",
"kind": "method",
"startLine": 52,
"endLine": 54,
"tokens": 39
},
{
"name": "fakeFlagRepository",
"kind": "class",
"startLine": 56,
"endLine": 63,
"tokens": 43
},
{
"name": "fakeFlagCall",
"kind": "class",
"startLine": 65,
"endLine": 70,
"tokens": 30
},
{
"name": "SetFlags",
"kind": "method",
"startLine": 72,
"endLine": 76,
"tokens": 96
},
{
"name": "fakeBlobReader",
"kind": "class",
"startLine": 78,
"endLine": 80,
"tokens": 18
},
{
"name": "ReadByID",
"kind": "method",
"startLine": 82,
"endLine": 84,
"tokens": 35
},
{
"name": "fakeExpungeRepository",
"kind": "class",
"startLine": 89,
"endLine": 94,
"tokens": 28
},
{
"name": "Expunge",
"kind": "method",
"startLine": 96,
"endLine": 102,
"tokens": 59
},
{
"name": "fakeCopyRepository",
"kind": "class",
"startLine": 104,
"endLine": 106,
"tokens": 18
},
{
"name": "CopyMessages",
"kind": "method",
"startLine": 108,
"endLine": 110,
"tokens": 43
},
{
"name": "newTestSession",
"kind": "fn",
"startLine": 122,
"endLine": 129,
"tokens": 169
},
{
"name": "newTestSessionWithExpungeAndCopy",
"kind": "fn",
"startLine": 131,
"endLine": 146,
"tokens": 177
},
{
"name": "TestSession_Login_SucceedsForCorrectCredentials",
"kind": "fn",
"startLine": 148,
"endLine": 158,
"tokens": 113
},
{
"name": "TestSession_Login_FailsForWrongPassword",
"kind": "fn",
"startLine": 160,
"endLine": 177,
"tokens": 176
},
{
"name": "TestSession_Select_ReturnsDataForKnownFolder",
"kind": "fn",
"startLine": 179,
"endLine": 199,
"tokens": 255
},
{
"name": "TestSession_Select_FailsForUnknownFolder",
"kind": "fn",
"startLine": 201,
"endLine": 214,
"tokens": 178
},
{
"name": "TestSession_Store_CallsFlagRepositoryWithCorrectArgs",
"kind": "fn",
"startLine": 216,
"endLine": 244,
"tokens": 340
},
{
"name": "TestSession_Store_HandlesUIDStarRange",
"kind": "fn",
"startLine": 250,
"endLine": 297,
"tokens": 450
},
{
"name": "TestSession_Store_AllowsSequenceNumberSet",
"kind": "fn",
"startLine": 304,
"endLine": 341,
"tokens": 391
},
{
"name": "TestMatchFolders_FiltersByWildcardPattern",
"kind": "fn",
"startLine": 351,
"endLine": 418,
"tokens": 475
},
{
"name": "TestSession_List_UsesFolderRepository",
"kind": "fn",
"startLine": 426,
"endLine": 447,
"tokens": 254
},
{
"name": "TestSession_Expunge_CallsUseCaseWithDeletedUIDsOnly",
"kind": "fn",
"startLine": 449,
"endLine": 477,
"tokens": 357
},
{
"name": "TestSession_Copy_CallsUseCaseAndBuildsCopyData",
"kind": "fn",
"startLine": 479,
"endLine": 506,
"tokens": 357
},
{
"name": "TestSession_Copy_FailsForUnknownDestination",
"kind": "fn",
"startLine": 508,
"endLine": 522,
"tokens": 221
}
],
"symbolSource": "ts",
"skeleton": "type fakeAuthRepository struct {\nfunc (f *fakeAuthRepository) FindByAddress(_ context.Context, address string) (*port.MailboxAuth, error) {\ntype fakeImapFolderRepository struct {\nfunc (f *fakeImapFolderRepository) ListFolders(_ context.Context, _ string) ([]port.ImapFolderRecord, error) {\nfunc (f *fakeImapFolderRepository) FindByName(_ context.Context, _ string, name string) (*port.ImapFolderRecord, error) {\ntype fakeMessageQueryRepository struct {\nfunc (f *fakeMessageQueryRepository) ListMessages(_ context.Context, _ string) ([]port.MessageRecord, error) {\ntype fakeFlagRepository struct {\ntype fakeFlagCall struct {\nfunc (f *fakeFlagRepository) SetFlags(_ context.Context, folderID string, uid uint32, op port.FlagOp, flags []string, _ uint64) (bool, error) {\ntype fakeBlobReader struct {\nfunc (f *fakeBlobReader) ReadByID(_ context.Context, blobID uuid.UUID) ([]byte, error) {\ntype fakeExpungeRepository struct {\nfunc (f *fakeExpungeRepository) Expunge(_ context.Context, folderID string, uids []uint32) error {\ntype fakeCopyRepository struct {\nfunc (f *fakeCopyRepository) CopyMessages(_ context.Context, _ string, _ []uint32, _ string) ([]port.CopiedMessage, error) {\nfunc newTestSession(auth *fakeAuthRepository, folders *fakeImapFolderRepository, messages *fakeMessageQueryRepository, flags *fakeFlagRepository, blobs *fakeBlobReader) imapserver.Session {",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/application/usecase/apply_rules_test.go"
],
"importance": 0.0216
},
"services/protocols/internal/presentation/imap/backend.go": {
"description": "session (112 fields); methods: Close, Login, Select, Unselect",
"tokens": 4188,
"hash": "5d15e8f0d1163805",
"size": 14658,
"mtimeMs": 1785635482528.997,
"updatedAt": "2026-10-06T11:06:20.891Z",
"source": "scan",
"symbols": [
{
"name": "session",
"kind": "class",
"startLine": 19,
"endLine": 24,
"tokens": 50
},
{
"name": "NewSession",
"kind": "fn",
"startLine": 27,
"endLine": 29,
"tokens": 54
},
{
"name": "toIMAPError",
"kind": "fn",
"startLine": 31,
"endLine": 40,
"tokens": 98
},
{
"name": "Close",
"kind": "method",
"startLine": 42,
"endLine": 48,
"tokens": 32
},
{
"name": "Login",
"kind": "method",
"startLine": 50,
"endLine": 57,
"tokens": 63
},
{
"name": "Select",
"kind": "method",
"startLine": 59,
"endLine": 78,
"tokens": 175
},
{
"name": "Unselect",
"kind": "method",
"startLine": 80,
"endLine": 87,
"tokens": 40
},
{
"name": "Status",
"kind": "method",
"startLine": 89,
"endLine": 109,
"tokens": 163
},
{
"name": "Poll",
"kind": "method",
"startLine": 111,
"endLine": 116,
"tokens": 46
},
{
"name": "Idle",
"kind": "method",
"startLine": 118,
"endLine": 123,
"tokens": 44
},
{
"name": "List",
"kind": "method",
"startLine": 125,
"endLine": 136,
"tokens": 117
},
{
"name": "matchFolders",
"kind": "fn",
"startLine": 145,
"endLine": 156,
"tokens": 93
},
{
"name": "numSetIter",
"kind": "method",
"startLine": 163,
"endLine": 190,
"tokens": 203
},
{
"name": "Fetch",
"kind": "method",
"startLine": 192,
"endLine": 213,
"tokens": 199
},
{
"name": "writeFetchResponse",
"kind": "method",
"startLine": 215,
"endLine": 261,
"tokens": 387
},
{
"name": "expungeUIDs",
"kind": "method",
"startLine": 278,
"endLine": 322,
"tokens": 337
},
{
"name": "Expunge",
"kind": "method",
"startLine": 324,
"endLine": 348,
"tokens": 227
},
{
"name": "Copy",
"kind": "method",
"startLine": 350,
"endLine": 382,
"tokens": 359
},
{
"name": "Move",
"kind": "method",
"startLine": 392,
"endLine": 425,
"tokens": 258
},
{
"name": "Store",
"kind": "method",
"startLine": 427,
"endLine": 478,
"tokens": 403
}
],
"symbolSource": "ts",
"skeleton": "type session struct {\nfunc NewSession(_ *imapserver.Conn, uc *usecase.ImapSessionUseCase) (imapserver.Session, *imapserver.GreetingData, error) {\nfunc toIMAPError(err error) error {\nfunc (s *session) Close() error {\nfunc (s *session) Login(username, password string) error {\nfunc (s *session) Select(mailbox string, _ *imap.SelectOptions) (*imap.SelectData, error) {\nfunc (s *session) Unselect() error {\nfunc (s *session) Status(mailbox string, options *imap.StatusOptions) (*imap.StatusData, error) {\nfunc (s *session) Poll(w *imapserver.UpdateWriter, allowExpunge bool) error {\nfunc (s *session) Idle(w *imapserver.UpdateWriter, stop <-chan struct{}) error {\nfunc (s *session) List(w *imapserver.ListWriter, ref string, patterns []string, options *imap.ListOptions) error {\nfunc matchFolders(recs []port.ImapFolderRecord, ref string, patterns []string) []port.ImapFolderRecord {\nfunc (s *session) numSetIter(numSet imap.NumSet, messages []port.MessageRecord, f func(seqNum uint32, msg port.MessageRecord)) {\nfunc (s *session) Fetch(w *imapserver.FetchWriter, numSet imap.NumSet, options *imap.FetchOptions) error {\nfunc (s *session) writeFetchResponse(w *imapserver.FetchResponseWriter, msg port.MessageRecord, options *imap.FetchOptions) error {\nfunc (s *session) expungeUIDs(uids *imap.UIDSet, requireDeleted bool) ([]uint32, error) {",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/application/usecase/apply_rules_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/presentation/imap/search_test.go": {
"description": "TestSession_Search_MatchesByFlag, TestSession_Search_MatchesByUIDSetIntersection, TestSession_Search_MatchesByHeaderField, TestSession_Search_NotCr...",
"tokens": 1457,
"hash": "75e14ffc39e16db9",
"size": 5099,
"mtimeMs": 1785635482529.1238,
"updatedAt": "2026-10-06T11:06:20.891Z",
"source": "scan",
"symbols": [
{
"name": "TestSession_Search_MatchesByFlag",
"kind": "fn",
"startLine": 14,
"endLine": 45,
"tokens": 368
},
{
"name": "TestSession_Search_MatchesByUIDSetIntersection",
"kind": "fn",
"startLine": 47,
"endLine": 73,
"tokens": 323
},
{
"name": "TestSession_Search_MatchesByHeaderField",
"kind": "fn",
"startLine": 75,
"endLine": 106,
"tokens": 381
},
{
"name": "TestSession_Search_NotCriteriaExcludesMatches",
"kind": "fn",
"startLine": 108,
"endLine": 133,
"tokens": 323
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go"
],
"importance": 0.0144
},
"services/protocols/internal/presentation/imap/search.go": {
"description": "Package imappresentation: this file implements IMAP SEARCH (RFC 3501",
"tokens": 2395,
"hash": "fbcdf737184dc313",
"size": 8382,
"mtimeMs": 1785635482529.1238,
"updatedAt": "2026-10-06T11:06:20.891Z",
"source": "scan",
"symbols": [
{
"name": "Search",
"kind": "method",
"startLine": 24,
"endLine": 76,
"tokens": 368
},
{
"name": "matchCriteria",
"kind": "fn",
"startLine": 84,
"endLine": 180,
"tokens": 704
},
{
"name": "canonicalFlag",
"kind": "fn",
"startLine": 184,
"endLine": 186,
"tokens": 26
},
{
"name": "matchDate",
"kind": "fn",
"startLine": 188,
"endLine": 198,
"tokens": 94
},
{
"name": "matchHeaderField",
"kind": "fn",
"startLine": 200,
"endLine": 212,
"tokens": 92
},
{
"name": "parseDateHeader",
"kind": "fn",
"startLine": 228,
"endLine": 231,
"tokens": 42
},
{
"name": "matchEntity",
"kind": "fn",
"startLine": 239,
"endLine": 248,
"tokens": 84
},
{
"name": "matchEntityRecursive",
"kind": "fn",
"startLine": 250,
"endLine": 279,
"tokens": 179
},
{
"name": "matchHeaderFieldsLower",
"kind": "fn",
"startLine": 281,
"endLine": 289,
"tokens": 65
}
],
"symbolSource": "ts",
"skeleton": "func (s *session) Search(numKind imapserver.NumKind, criteria *imap.SearchCriteria, _ *imap.SearchOptions) (*imap.SearchData, error) {\nfunc matchCriteria(seqNum, uid uint32, receivedAt time.Time, sizeBytes int64, modSeq uint64, flags []imap.Flag, criteria *imap.SearchCriteria, loadRaw func() ([]byte, error)) bool {\nfunc canonicalFlag(f imap.Flag) imap.Flag {\nfunc matchDate(t, since, before time.Time) bool {\nfunc matchHeaderField(header textproto.Header, key, pattern string) bool {\nfunc parseDateHeader(header textproto.Header) (time.Time, error) {\nfunc matchEntity(raw []byte, pattern string, includeHeader bool) bool {\nfunc matchEntityRecursive(e *gomessage.Entity, patternLower string, includeHeader bool) bool {\nfunc matchHeaderFieldsLower(fields gomessage.HeaderFields, patternLower string) bool {",
"imports": [
"services/webmail/src/app/(user)/user/mail/[folder]/page.tsx"
],
"importance": 0.0144
},
"services/protocols/internal/presentation/imap/stubs.go": {
"description": "adapts github.com/emersion/go-imap/v2's",
"tokens": 373,
"hash": "deebfa03b60ea5e4",
"size": 1305,
"mtimeMs": 1785635482529.1238,
"updatedAt": "2026-10-06T11:06:20.891Z",
"source": "scan",
"importance": 0.0144
},
"services/protocols/internal/presentation/managesieve/conn_test.go": {
"description": "fakeAuthRepository (42 fields); methods: FindByAddress, GetScript, PutScript, ListScripts",
"tokens": 1681,
"hash": "a027562f989db32f",
"size": 5882,
"mtimeMs": 1785635482529.4133,
"updatedAt": "2026-10-06T11:06:20.892Z",
"source": "scan",
"symbols": [
{
"name": "fakeAuthRepository",
"kind": "class",
"startLine": 19,
"endLine": 21,
"tokens": 21
},
{
"name": "FindByAddress",
"kind": "method",
"startLine": 23,
"endLine": 29,
"tokens": 55
},
{
"name": "fakeSieveRepository",
"kind": "class",
"startLine": 31,
"endLine": 33,
"tokens": 26
},
{
"name": "newFakeSieveRepository",
"kind": "fn",
"startLine": 35,
"endLine": 37,
"tokens": 42
},
{
"name": "GetScript",
"kind": "method",
"startLine": 39,
"endLine": 49,
"tokens": 72
},
{
"name": "PutScript",
"kind": "method",
"startLine": 51,
"endLine": 70,
"tokens": 140
},
{
"name": "ListScripts",
"kind": "method",
"startLine": 72,
"endLine": 82,
"tokens": 82
},
{
"name": "SetActiveScript",
"kind": "method",
"startLine": 84,
"endLine": 94,
"tokens": 69
},
{
"name": "DeleteScript",
"kind": "method",
"startLine": 96,
"endLine": 103,
"tokens": 53
},
{
"name": "RenameScript",
"kind": "method",
"startLine": 105,
"endLine": 115,
"tokens": 74
},
{
"name": "setupManageSieveServer",
"kind": "fn",
"startLine": 117,
"endLine": 143,
"tokens": 200
},
{
"name": "TestManageSieveServer_FullLifecycle",
"kind": "fn",
"startLine": 145,
"endLine": 243,
"tokens": 762
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/application/usecase/apply_rules_test.go"
],
"importance": 0.0208
},
"services/protocols/internal/presentation/managesieve/conn.go": {
"description": "conn (74 fields)",
"tokens": 2789,
"hash": "6040be249dc47098",
"size": 9761,
"mtimeMs": 1785635482529.1238,
"updatedAt": "2026-10-06T11:06:20.892Z",
"source": "scan",
"symbols": [
{
"name": "state",
"kind": "class",
"startLine": 19,
"endLine": 19,
"tokens": 4
},
{
"name": "conn",
"kind": "class",
"startLine": 26,
"endLine": 38,
"tokens": 70
},
{
"name": "newConn",
"kind": "fn",
"startLine": 40,
"endLine": 49,
"tokens": 85
},
{
"name": "serve",
"kind": "method",
"startLine": 51,
"endLine": 107,
"tokens": 339
},
{
"name": "writeLine",
"kind": "method",
"startLine": 109,
"endLine": 114,
"tokens": 43
},
{
"name": "sendCapabilities",
"kind": "method",
"startLine": 116,
"endLine": 124,
"tokens": 106
},
{
"name": "handleCapability",
"kind": "method",
"startLine": 126,
"endLine": 129,
"tokens": 30
},
{
"name": "handleStartTLS",
"kind": "method",
"startLine": 131,
"endLine": 156,
"tokens": 182
},
{
"name": "handleAuthenticate",
"kind": "method",
"startLine": 158,
"endLine": 214,
"tokens": 384
},
{
"name": "handlePutScript",
"kind": "method",
"startLine": 216,
"endLine": 235,
"tokens": 132
},
{
"name": "handleGetScript",
"kind": "method",
"startLine": 237,
"endLine": 258,
"tokens": 155
},
{
"name": "handleSetActive",
"kind": "method",
"startLine": 260,
"endLine": 274,
"tokens": 104
},
{
"name": "handleHaveSpace",
"kind": "method",
"startLine": 276,
"endLine": 288,
"tokens": 105
},
{
"name": "handleListScripts",
"kind": "method",
"startLine": 290,
"endLine": 311,
"tokens": 147
},
{
"name": "handleDeleteScript",
"kind": "method",
"startLine": 313,
"endLine": 332,
"tokens": 128
},
{
"name": "handleRenameScript",
"kind": "method",
"startLine": 334,
"endLine": 353,
"tokens": 138
},
{
"name": "handleCheckScript",
"kind": "method",
"startLine": 355,
"endLine": 377,
"tokens": 140
},
{
"name": "parseStringLiteral",
"kind": "method",
"startLine": 379,
"endLine": 385,
"tokens": 66
},
{
"name": "parseTwoStrings",
"kind": "method",
"startLine": 387,
"endLine": 394,
"tokens": 56
},
{
"name": "parseNameAndContent",
"kind": "method",
"startLine": 396,
"endLine": 428,
"tokens": 282
}
],
"symbolSource": "ts",
"skeleton": "type state int\ntype conn struct {\nfunc newConn(c net.Conn, useCase *appusecase.ManageSieveSessionUseCase, tlsProvider port.CertProvider) *conn {\nfunc (c *conn) serve() {\nfunc (c *conn) writeLine(msg string) error {\nfunc (c *conn) sendCapabilities() {\nfunc (c *conn) handleCapability() {\nfunc (c *conn) handleStartTLS() bool {\nfunc (c *conn) handleAuthenticate(arg string) {\nfunc (c *conn) handlePutScript(arg string) {\nfunc (c *conn) handleGetScript(arg string) {\nfunc (c *conn) handleSetActive(arg string) {\nfunc (c *conn) handleHaveSpace(arg string) {\nfunc (c *conn) handleListScripts() {\nfunc (c *conn) handleDeleteScript(arg string) {\nfunc (c *conn) handleRenameScript(arg string) {\nfunc (c *conn) handleCheckScript(arg string) {\nfunc (c *conn) parseStringLiteral(input string) string {\nfunc (c *conn) parseTwoStrings(input string) []string {\nfunc (c *conn) parseNameAndContent(arg string) (string, string, error) {",
"imports": [
"services/protocols/internal/infrastructure/tls/acme_cert_watcher_test.go",
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/application/usecase/apply_rules_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/presentation/managesieve/server.go": {
"description": "Server (14 fields); methods: ListenAndServe, Serve, Close",
"tokens": 299,
"hash": "f9e1f034b0cc372b",
"size": 1045,
"mtimeMs": 1785635482529.4133,
"updatedAt": "2026-10-06T11:06:20.892Z",
"source": "scan",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/application/usecase/apply_rules_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/presentation/pop3/conn_test.go": {
"description": "fakeAuthRepository (52 fields); methods: FindByAddress, ListFolders, FindByName, ListMessages",
"tokens": 2304,
"hash": "a3e6c0e1fda2a0b7",
"size": 8063,
"mtimeMs": 1785635482529.7332,
"updatedAt": "2026-10-06T11:06:20.892Z",
"source": "scan",
"symbols": [
{
"name": "fakeAuthRepository",
"kind": "class",
"startLine": 18,
"endLine": 20,
"tokens": 21
},
{
"name": "FindByAddress",
"kind": "method",
"startLine": 22,
"endLine": 28,
"tokens": 55
},
{
"name": "fakeImapFolderRepository",
"kind": "class",
"startLine": 30,
"endLine": 32,
"tokens": 24
},
{
"name": "ListFolders",
"kind": "method",
"startLine": 34,
"endLine": 40,
"tokens": 64
},
{
"name": "FindByName",
"kind": "method",
"startLine": 42,
"endLine": 48,
"tokens": 57
},
{
"name": "fakeMessageQueryRepository",
"kind": "class",
"startLine": 50,
"endLine": 52,
"tokens": 21
},
{
"name": "ListMessages",
"kind": "method",
"startLine": 54,
"endLine": 56,
"tokens": 39
},
{
"name": "fakeBlobReader",
"kind": "class",
"startLine": 58,
"endLine": 60,
"tokens": 18
},
{
"name": "ReadByID",
"kind": "method",
"startLine": 62,
"endLine": 64,
"tokens": 35
},
{
"name": "fakeExpungeRepository",
"kind": "class",
"startLine": 66,
"endLine": 71,
"tokens": 28
},
{
"name": "Expunge",
"kind": "method",
"startLine": 73,
"endLine": 79,
"tokens": 59
},
{
"name": "setupPop3Server",
"kind": "fn",
"startLine": 81,
"endLine": 111,
"tokens": 293
},
{
"name": "TestPop3Server_Capa_User_Pass_Stat_List_Retr_Dele_Quit",
"kind": "fn",
"startLine": 113,
"endLine": 252,
"tokens": 944
},
{
"name": "TestPop3Server_Top_Rset_AuthFailures",
"kind": "fn",
"startLine": 254,
"endLine": 337,
"tokens": 566
}
],
"symbolSource": "ts",
"skeleton": "type fakeAuthRepository struct {\nfunc (f *fakeAuthRepository) FindByAddress(_ context.Context, address string) (*port.MailboxAuth, error) {\ntype fakeImapFolderRepository struct {\nfunc (f *fakeImapFolderRepository) ListFolders(_ context.Context, _ string) ([]port.ImapFolderRecord, error) {\nfunc (f *fakeImapFolderRepository) FindByName(_ context.Context, _ string, name string) (*port.ImapFolderRecord, error) {\ntype fakeMessageQueryRepository struct {\nfunc (f *fakeMessageQueryRepository) ListMessages(_ context.Context, _ string) ([]port.MessageRecord, error) {\ntype fakeBlobReader struct {\nfunc (f *fakeBlobReader) ReadByID(_ context.Context, blobID uuid.UUID) ([]byte, error) {\ntype fakeExpungeRepository struct {\nfunc (f *fakeExpungeRepository) Expunge(_ context.Context, folderID string, uids []uint32) error {\nfunc setupPop3Server(t *testing.T, messages []port.MessageRecord, blobs map[uuid.UUID][]byte, expunger *fakeExpungeRepository) (net.Listener, func()) {\nfunc TestPop3Server_Capa_User_Pass_Stat_List_Retr_Dele_Quit(t *testing.T) {\nfunc TestPop3Server_Top_Rset_AuthFailures(t *testing.T) {",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/application/usecase/apply_rules_test.go"
],
"importance": 0.0192
},
"services/protocols/internal/presentation/pop3/conn.go": {
"description": "pop3Msg (82 fields)",
"tokens": 2806,
"hash": "25c93145f8881a37",
"size": 9819,
"mtimeMs": 1785635482529.4133,
"updatedAt": "2026-10-06T11:06:20.892Z",
"source": "scan",
"symbols": [
{
"name": "state",
"kind": "class",
"startLine": 17,
"endLine": 17,
"tokens": 4
},
{
"name": "pop3Msg",
"kind": "class",
"startLine": 25,
"endLine": 29,
"tokens": 23
},
{
"name": "conn",
"kind": "class",
"startLine": 31,
"endLine": 45,
"tokens": 80
},
{
"name": "newConn",
"kind": "fn",
"startLine": 47,
"endLine": 56,
"tokens": 83
},
{
"name": "serve",
"kind": "method",
"startLine": 58,
"endLine": 117,
"tokens": 298
},
{
"name": "writeLine",
"kind": "method",
"startLine": 119,
"endLine": 124,
"tokens": 43
},
{
"name": "handleCapa",
"kind": "method",
"startLine": 126,
"endLine": 139,
"tokens": 130
},
{
"name": "handleStls",
"kind": "method",
"startLine": 141,
"endLine": 166,
"tokens": 179
},
{
"name": "handleUser",
"kind": "method",
"startLine": 168,
"endLine": 179,
"tokens": 72
},
{
"name": "handlePass",
"kind": "method",
"startLine": 181,
"endLine": 214,
"tokens": 240
},
{
"name": "handleStat",
"kind": "method",
"startLine": 216,
"endLine": 223,
"tokens": 62
},
{
"name": "statActive",
"kind": "method",
"startLine": 225,
"endLine": 235,
"tokens": 62
},
{
"name": "handleList",
"kind": "method",
"startLine": 237,
"endLine": 261,
"tokens": 209
},
{
"name": "handleUidl",
"kind": "method",
"startLine": 263,
"endLine": 286,
"tokens": 186
},
{
"name": "handleRetr",
"kind": "method",
"startLine": 288,
"endLine": 311,
"tokens": 186
},
{
"name": "handleTop",
"kind": "method",
"startLine": 313,
"endLine": 343,
"tokens": 257
},
{
"name": "extractTopLines",
"kind": "fn",
"startLine": 345,
"endLine": 372,
"tokens": 186
},
{
"name": "writeDotStuffedContent",
"kind": "method",
"startLine": 374,
"endLine": 384,
"tokens": 80
},
{
"name": "handleDele",
"kind": "method",
"startLine": 386,
"endLine": 399,
"tokens": 122
},
{
"name": "handleRset",
"kind": "method",
"startLine": 401,
"endLine": 410,
"tokens": 63
},
{
"name": "handleNoop",
"kind": "method",
"startLine": 412,
"endLine": 414,
"tokens": 15
},
{
"name": "handleQuit",
"kind": "method",
"startLine": 416,
"endLine": 436,
"tokens": 137
}
],
"symbolSource": "ts",
"skeleton": "type state int\ntype pop3Msg struct {\ntype conn struct {\nfunc newConn(c net.Conn, useCase *appusecase.Pop3SessionUseCase, tlsProvider port.CertProvider) *conn {\nfunc (c *conn) serve() {\nfunc (c *conn) writeLine(msg string) error {\nfunc (c *conn) handleCapa() {\nfunc (c *conn) handleStls() bool {\nfunc (c *conn) handleUser(arg string) {\nfunc (c *conn) handlePass(password string) {\nfunc (c *conn) handleStat() {\nfunc (c *conn) statActive() (int, int64) {\nfunc (c *conn) handleList(arg string) {\nfunc (c *conn) handleUidl(arg string) {\nfunc (c *conn) handleRetr(arg string) {\nfunc (c *conn) handleTop(arg string) {\nfunc extractTopLines(content []byte, n int) []byte {\nfunc (c *conn) writeDotStuffedContent(content []byte) {\nfunc (c *conn) handleDele(arg string) {\nfunc (c *conn) handleRset() {\nfunc (c *conn) handleNoop() {\nfunc (c *conn) handleQuit() {",
"imports": [
"services/protocols/internal/infrastructure/tls/acme_cert_watcher_test.go",
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/application/usecase/apply_rules_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/presentation/pop3/server.go": {
"description": "Server (14 fields); methods: ListenAndServe, Serve, Close",
"tokens": 293,
"hash": "a5c9695f3f05fa15",
"size": 1024,
"mtimeMs": 1785635482529.7332,
"updatedAt": "2026-10-06T11:06:20.892Z",
"source": "scan",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/application/usecase/apply_rules_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/presentation/smtp/backend_test.go": {
"description": "fakeMailboxRepository (58 fields); methods: FindActiveByAddress, ResolveDeliveryTargets, Store, Scan",
"tokens": 3106,
"hash": "5b16b5e37ab93a1b",
"size": 10871,
"mtimeMs": 1785668486703.4868,
"updatedAt": "2026-10-06T11:06:20.893Z",
"source": "scan",
"symbols": [
{
"name": "fakeMailboxRepository",
"kind": "class",
"startLine": 18,
"endLine": 20,
"tokens": 23
},
{
"name": "FindActiveByAddress",
"kind": "method",
"startLine": 22,
"endLine": 28,
"tokens": 58
},
{
"name": "ResolveDeliveryTargets",
"kind": "method",
"startLine": 30,
"endLine": 36,
"tokens": 70
},
{
"name": "recordingBlobStorage",
"kind": "class",
"startLine": 38,
"endLine": 43,
"tokens": 45
},
{
"name": "Store",
"kind": "method",
"startLine": 45,
"endLine": 55,
"tokens": 75
},
{
"name": "rejectingScanner",
"kind": "class",
"startLine": 58,
"endLine": 58,
"tokens": 14
},
{
"name": "Scan",
"kind": "method",
"startLine": 60,
"endLine": 62,
"tokens": 38
},
{
"name": "recordingMessageRepository",
"kind": "class",
"startLine": 64,
"endLine": 66,
"tokens": 25
},
{
"name": "PersistAll",
"kind": "method",
"startLine": 68,
"endLine": 75,
"tokens": 89
},
{
"name": "newTestSession",
"kind": "fn",
"startLine": 77,
"endLine": 79,
"tokens": 59
},
{
"name": "newTestSessionWithScanner",
"kind": "fn",
"startLine": 83,
"endLine": 94,
"tokens": 126
},
{
"name": "TestSession_Rcpt_AcceptsKnownActiveRecipient",
"kind": "fn",
"startLine": 96,
"endLine": 108,
"tokens": 159
},
{
"name": "TestSession_Rcpt_Rejects550ForUnknownRecipient",
"kind": "fn",
"startLine": 110,
"endLine": 126,
"tokens": 189
},
{
"name": "TestSession_Data_PersistsOnceForSingleRecipient",
"kind": "fn",
"startLine": 128,
"endLine": 154,
"tokens": 305
},
{
"name": "TestSession_Rcpt_Rejects452ForFullMailbox",
"kind": "fn",
"startLine": 156,
"endLine": 174,
"tokens": 208
},
{
"name": "TestSession_Rcpt_DeduplicatesRepeatedAddress",
"kind": "fn",
"startLine": 176,
"endLine": 200,
"tokens": 294
},
{
"name": "TestSession_Reset_ClearsAccumulatedRecipients",
"kind": "fn",
"startLine": 202,
"endLine": 222,
"tokens": 256
},
{
"name": "TestSession_Data_RendersUseCaseRejectionVerbatim",
"kind": "fn",
"startLine": 227,
"endLine": 272,
"tokens": 563
},
{
"name": "TestSession_Data_ReportsInternalFailureAsTemporary",
"kind": "fn",
"startLine": 276,
"endLine": 300,
"tokens": 250
}
],
"symbolSource": "ts",
"skeleton": "type fakeMailboxRepository struct {\nfunc (f *fakeMailboxRepository) FindActiveByAddress(_ context.Context, address string) (*port.MailboxRecord, error) {\nfunc (f *fakeMailboxRepository) ResolveDeliveryTargets(_ context.Context, address string) ([]port.MailboxRecord, error) {\ntype recordingBlobStorage struct {\nfunc (b *recordingBlobStorage) Store(_ context.Context, r io.Reader) (port.BlobRef, error) {\ntype rejectingScanner struct{ rejection error }\nfunc (s *rejectingScanner) Scan(_ context.Context, _ port.ScanInput) (*valueobject.ScanResult, error) {\ntype recordingMessageRepository struct {\nfunc (m *recordingMessageRepository) PersistAll(_ context.Context, inputs []port.PersistInboundMessageInput) ([]int64, error) {\nfunc newTestSession(mailboxes *fakeMailboxRepository, blobs *recordingBlobStorage, messages *recordingMessageRepository) gosmtp.Session {\nfunc newTestSessionWithScanner(mailboxes *fakeMailboxRepository, blobs *recordingBlobStorage, messages *recordingMessageRepository, rejection error) gosmtp.Session {\nfunc TestSession_Rcpt_AcceptsKnownActiveRecipient(t *testing.T) {\nfunc TestSession_Rcpt_Rejects550ForUnknownRecipient(t *testing.T) {\nfunc TestSession_Data_PersistsOnceForSingleRecipient(t *testing.T) {\nfunc TestSession_Rcpt_Rejects452ForFullMailbox(t *testing.T) {\nfunc TestSession_Rcpt_DeduplicatesRepeatedAddress(t *testing.T) {",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/application/usecase/apply_rules_test.go",
"services/protocols/internal/domain/valueobject/autoconfig_xml_test.go"
],
"importance": 0.0315
},
"services/protocols/internal/presentation/smtp/backend.go": {
"description": "adapts github.com/emersion/go-smtp's Backend/",
"tokens": 1399,
"hash": "fbdcd64157d62c7a",
"size": 4895,
"mtimeMs": 1785689161519.86,
"updatedAt": "2026-10-06T11:06:20.893Z",
"source": "scan",
"symbols": [
{
"name": "Backend",
"kind": "class",
"startLine": 20,
"endLine": 22,
"tokens": 20
},
{
"name": "NewBackend",
"kind": "fn",
"startLine": 24,
"endLine": 26,
"tokens": 28
},
{
"name": "NewSession",
"kind": "method",
"startLine": 28,
"endLine": 30,
"tokens": 36
},
{
"name": "session",
"kind": "class",
"startLine": 34,
"endLine": 40,
"tokens": 60
},
{
"name": "clientIP",
"kind": "method",
"startLine": 45,
"endLine": 57,
"tokens": 90
},
{
"name": "heloDomain",
"kind": "method",
"startLine": 59,
"endLine": 64,
"tokens": 30
},
{
"name": "Reset",
"kind": "method",
"startLine": 66,
"endLine": 70,
"tokens": 26
},
{
"name": "Logout",
"kind": "method",
"startLine": 72,
"endLine": 74,
"tokens": 14
},
{
"name": "Mail",
"kind": "method",
"startLine": 76,
"endLine": 79,
"tokens": 28
},
{
"name": "Rcpt",
"kind": "method",
"startLine": 81,
"endLine": 121,
"tokens": 366
},
{
"name": "Data",
"kind": "method",
"startLine": 123,
"endLine": 172,
"tokens": 473
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/application/usecase/apply_rules_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/presentation/smtp/sasl_login_test.go": {
"description": "TestLoginServer_PromptsThenAuthenticates, TestLoginServer_AcceptsInitialResponse, TestLoginServer_PropagatesAuthFailure, TestLoginServer_RefusesExt...",
"tokens": 614,
"hash": "6713e1f5d7a814b4",
"size": 2147,
"mtimeMs": 1785635482529.9143,
"updatedAt": "2026-10-06T11:06:20.893Z",
"source": "scan",
"symbols": [
{
"name": "TestLoginServer_PromptsThenAuthenticates",
"kind": "fn",
"startLine": 10,
"endLine": 34,
"tokens": 243
},
{
"name": "TestLoginServer_AcceptsInitialResponse",
"kind": "fn",
"startLine": 38,
"endLine": 45,
"tokens": 93
},
{
"name": "TestLoginServer_PropagatesAuthFailure",
"kind": "fn",
"startLine": 47,
"endLine": 56,
"tokens": 110
},
{
"name": "TestLoginServer_RefusesExtraSteps",
"kind": "fn",
"startLine": 58,
"endLine": 67,
"tokens": 97
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/presentation/smtp/sasl_login.go": {
"description": "loginServer (15 fields); methods: Next",
"tokens": 561,
"hash": "6d9d2d4aa636dfcd",
"size": 1963,
"mtimeMs": 1785635482529.9143,
"updatedAt": "2026-10-06T11:06:20.893Z",
"source": "scan",
"symbols": [
{
"name": "loginAuthenticator",
"kind": "class",
"startLine": 24,
"endLine": 24,
"tokens": 18
},
{
"name": "loginServer",
"kind": "class",
"startLine": 27,
"endLine": 33,
"tokens": 52
},
{
"name": "newLoginServer",
"kind": "fn",
"startLine": 41,
"endLine": 43,
"tokens": 34
},
{
"name": "Next",
"kind": "method",
"startLine": 45,
"endLine": 67,
"tokens": 205
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/protocols/internal/presentation/smtp/submission_backend_test.go": {
"description": "TestSubmissionSession_RefusesCommandsBeforeAuth, TestSubmissionSession_RefusesForeignSender, TestSubmissionSession_AdvertisesPlainAndLogin, TestSub...",
"tokens": 816,
"hash": "f70b36b321879ae7",
"size": 2853,
"mtimeMs": 1785635482529.9143,
"updatedAt": "2026-10-06T11:06:20.893Z",
"source": "scan",
"symbols": [
{
"name": "smtpCode",
"kind": "fn",
"startLine": 13,
"endLine": 23,
"tokens": 63
},
{
"name": "ok",
"kind": "fn",
"startLine": 25,
"endLine": 31,
"tokens": 36
},
{
"name": "TestSubmissionSession_RefusesCommandsBeforeAuth",
"kind": "fn",
"startLine": 35,
"endLine": 47,
"tokens": 138
},
{
"name": "TestSubmissionSession_RefusesForeignSender",
"kind": "fn",
"startLine": 50,
"endLine": 59,
"tokens": 117
},
{
"name": "TestSubmissionSession_AdvertisesPlainAndLogin",
"kind": "fn",
"startLine": 61,
"endLine": 68,
"tokens": 86
},
{
"name": "TestSubmissionSession_RejectsUnsupportedMechanism",
"kind": "fn",
"startLine": 70,
"endLine": 74,
"tokens": 58
},
{
"name": "TestSubmissionSession_ResetKeepsAuthentication",
"kind": "fn",
"startLine": 78,
"endLine": 91,
"tokens": 128
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/application/usecase/apply_rules_test.go"
],
"importance": 0.0144
},
"services/protocols/internal/presentation/smtp/submission_backend.go": {
"description": "SubmissionBackend (29 fields); methods: NewSession, AuthMechanisms, Auth, Reset",
"tokens": 1300,
"hash": "25672eb00b73a8af",
"size": 4547,
"mtimeMs": 1785635482529.9143,
"updatedAt": "2026-10-06T11:06:20.893Z",
"source": "scan",
"symbols": [
{
"name": "SubmissionBackend",
"kind": "class",
"startLine": 19,
"endLine": 21,
"tokens": 23
},
{
"name": "NewSubmissionBackend",
"kind": "fn",
"startLine": 23,
"endLine": 25,
"tokens": 37
},
{
"name": "NewSession",
"kind": "method",
"startLine": 27,
"endLine": 29,
"tokens": 39
},
{
"name": "submissionSession",
"kind": "class",
"startLine": 31,
"endLine": 37,
"tokens": 68
},
{
"name": "AuthMechanisms",
"kind": "method",
"startLine": 43,
"endLine": 45,
"tokens": 30
},
{
"name": "Auth",
"kind": "method",
"startLine": 47,
"endLine": 58,
"tokens": 102
},
{
"name": "authenticate",
"kind": "method",
"startLine": 60,
"endLine": 71,
"tokens": 105
},
{
"name": "Reset",
"kind": "method",
"startLine": 73,
"endLine": 76,
"tokens": 21
},
{
"name": "Logout",
"kind": "method",
"startLine": 78,
"endLine": 81,
"tokens": 24
},
{
"name": "Mail",
"kind": "method",
"startLine": 83,
"endLine": 96,
"tokens": 119
},
{
"name": "Rcpt",
"kind": "method",
"startLine": 98,
"endLine": 104,
"tokens": 54
},
{
"name": "Data",
"kind": "method",
"startLine": 106,
"endLine": 145,
"tokens": 343
},
{
"name": "errAuthRequired",
"kind": "fn",
"startLine": 147,
"endLine": 153,
"tokens": 50
}
],
"symbolSource": "ts",
"imports": [
"services/protocols/internal/application/port/arc_sealer.go",
"services/protocols/internal/application/usecase/apply_rules_test.go"
],
"importance": 0.0144
},
"services/rspamd/Dockerfile": {
"description": "Docker container definition",
"tokens": 147,
"hash": "a2e8ec19787ff7a9",
"size": 551,
"mtimeMs": 1785692590854.0117,
"updatedAt": "2026-10-06T11:06:20.893Z",
"source": "scan",
"importance": 0.0144
},
"services/storage/Dockerfile": {
"description": "Docker container definition",
"tokens": 466,
"hash": "392c92dedbe9ff49",
"size": 1747,
"mtimeMs": 1785690291764.3303,
"updatedAt": "2026-10-06T11:06:20.893Z",
"source": "scan",
"importance": 0.0144
},
"services/storage/package.json": {
"description": "Node.js package manifest",
"tokens": 131,
"hash": "31d1cc1bbc07f421",
"size": 457,
"mtimeMs": 1785689161519.9346,
"updatedAt": "2026-10-06T11:06:20.894Z",
"source": "scan",
"importance": 0.0144
},
"services/storage/src/health.test.ts": {
"description": "Declares withServer",
"tokens": 470,
"hash": "02929edf5bd0abf7",
"size": 1645,
"mtimeMs": 1785635482530.1213,
"updatedAt": "2026-10-06T11:06:20.894Z",
"source": "scan",
"imports": [
"services/storage/src/health.ts"
],
"importance": 0.0144
},
"services/storage/src/health.ts": {
"description": "Builds the /health/live and /health/ready handler shared by the auth and",
"tokens": 215,
"hash": "4e0751ac405a206c",
"size": 751,
"mtimeMs": 1785635482530.289,
"updatedAt": "2026-10-06T11:06:20.894Z",
"source": "scan",
"importance": 0.0389
},
"services/storage/src/server.ts": {
"description": "Declares port",
"tokens": 212,
"hash": "d14480f8f8519ba0",
"size": 742,
"mtimeMs": 1785635482530.289,
"updatedAt": "2026-10-06T11:06:20.894Z",
"source": "scan",
"imports": [
"services/storage/src/health.ts"
],
"importance": 0.0144
},
"services/storage/tsconfig.build.json": {
"description": "TypeScript build configuration",
"tokens": 83,
"hash": "a657ee6c4c15f62f",
"size": 289,
"mtimeMs": 1785689161519.9824,
"updatedAt": "2026-10-06T11:06:20.894Z",
"source": "scan",
"importance": 0.0144
},
"services/storage/tsconfig.json": {
"description": "TypeScript configuration",
"tokens": 88,
"hash": "f5afcc0c2ccf20a7",
"size": 308,
"mtimeMs": 1785635482530.289,
"updatedAt": "2026-10-06T11:06:20.894Z",
"source": "scan",
"importance": 0.0144
},
"services/storage/vitest.config.ts": {
"description": "Vitest test configuration",
"tokens": 33,
"hash": "c0861bcf5235fb98",
"size": 114,
"mtimeMs": 1785635482530.289,
"updatedAt": "2026-10-06T11:06:20.894Z",
"source": "scan",
"importance": 0.0144
},
"services/webmail/Dockerfile": {
"description": "Docker container definition",
"tokens": 395,
"hash": "debbac0482d69e4e",
"size": 1479,
"mtimeMs": 1785690291764.4133,
"updatedAt": "2026-10-06T11:06:20.894Z",
"source": "scan",
"importance": 0.0144
},
"services/webmail/messages/en.json": {
"description": "",
"tokens": 5338,
"hash": "c12d893b92766aeb",
"size": 18688,
"mtimeMs": 1788830725028.8906,
"updatedAt": "2026-10-06T11:06:20.895Z",
"source": "scan",
"importance": 0.0291
},
"services/webmail/messages/es.json": {
"description": "",
"tokens": 5774,
"hash": "cb137d35b48eb257",
"size": 20371,
"mtimeMs": 1788830725029.1912,
"updatedAt": "2026-10-06T11:06:20.895Z",
"source": "scan",
"importance": 0.0291
},
"services/webmail/messages/pt-BR.json": {
"description": "",
"tokens": 5763,
"hash": "0fe6821705dd9474",
"size": 20406,
"mtimeMs": 1788830725029.4724,
"updatedAt": "2026-10-06T11:06:20.895Z",
"source": "scan",
"importance": 0.0291
},
"services/webmail/next-env.d.ts": {
"description": "/ <reference types=\"next\" />",
"tokens": 75,
"hash": "85ae5aee75f01196",
"size": 262,
"mtimeMs": 1785635482530.4248,
"updatedAt": "2026-10-06T11:06:20.895Z",
"source": "scan",
"importance": 0.0144
},
"services/webmail/next.config.ts": {
"description": "Next.js configuration",
"tokens": 601,
"hash": "c7639b86195e8a53",
"size": 2103,
"mtimeMs": 1788831584456.196,
"updatedAt": "2026-10-06T11:06:20.895Z",
"source": "scan",
"importance": 0.0144
},
"services/webmail/package.json": {
"description": "Node.js package manifest",
"tokens": 263,
"hash": "b68d6253df12f339",
"size": 920,
"mtimeMs": 1787396918822.9626,
"updatedAt": "2026-10-06T11:06:20.895Z",
"source": "scan",
"importance": 0.0144
},
"services/webmail/postcss.config.js": {
"description": "PostCSS configuration",
"tokens": 24,
"hash": "fa650b380adfabb1",
"size": 83,
"mtimeMs": 1785694432297.9165,
"updatedAt": "2026-10-06T11:06:20.895Z",
"source": "scan",
"importance": 0.0144
},
"services/webmail/public/.gitkeep": {
"description": "",
"tokens": 0,
"hash": "e3b0c44298fc1c14",
"size": 0,
"mtimeMs": 1785635482530.4248,
"updatedAt": "2026-10-06T11:06:20.895Z",
"source": "scan",
"importance": 0.0144
},
"services/webmail/src/app/(admin)/admin/dashboard/page.tsx": {
"description": "Exactly the fields /api/v1/admin/dashboard returns - see dashboardStats().",
"tokens": 2425,
"hash": "6c61c9c191907e15",
"size": 8487,
"mtimeMs": 1787094683115.5483,
"updatedAt": "2026-10-06T11:06:20.896Z",
"source": "scan",
"symbols": [
{
"name": "DashboardMetrics",
"kind": "section",
"startLine": 21,
"endLine": 31,
"tokens": 76
},
{
"name": "formatBytes",
"kind": "fn",
"startLine": 33,
"endLine": 38,
"tokens": 80
},
{
"name": "AdminDashboardPage",
"kind": "fn",
"startLine": 40,
"endLine": 215,
"tokens": 2127
}
],
"symbolSource": "ts",
"skeleton": "interface DashboardMetrics {\nfunction formatBytes(bytes: number): string {\nexport default function AdminDashboardPage() {",
"imports": [
"services/webmail/src/i18n/provider.tsx",
"services/webmail/src/components/ui/Badge.tsx",
"services/webmail/src/components/ui/Button.tsx"
],
"importance": 0.0144
},
"services/webmail/src/app/(admin)/admin/dmarc/page.tsx": {
"description": "AdminDmarcPage — renders table — uses useEffect",
"tokens": 1215,
"hash": "4052e9e85caecf5c",
"size": 4251,
"mtimeMs": 1787094950774.6467,
"updatedAt": "2026-10-06T11:06:20.896Z",
"source": "scan",
"symbols": [
{
"name": "DmarcSource",
"kind": "section",
"startLine": 7,
"endLine": 13,
"tokens": 30
},
{
"name": "DmarcData",
"kind": "section",
"startLine": 15,
"endLine": 21,
"tokens": 45
},
{
"name": "AdminDmarcPage",
"kind": "fn",
"startLine": 23,
"endLine": 106,
"tokens": 1087
}
],
"symbolSource": "ts",
"imports": [
"services/webmail/src/i18n/provider.tsx",
"services/webmail/src/components/ui/Badge.tsx"
],
"importance": 0.0297
},
"services/webmail/src/app/(admin)/admin/domains/page.tsx": {
"description": "Domains, read from the database.",
"tokens": 7639,
"hash": "f833986ee83dd321",
"size": 26734,
"mtimeMs": 1788830725029.8057,
"updatedAt": "2026-10-06T11:06:20.897Z",
"source": "scan",
"symbols": [
{
"name": "DnsRecordCheck",
"kind": "section",
"startLine": 26,
"endLine": 33,
"tokens": 40
},
{
"name": "ReconcileResult",
"kind": "section",
"startLine": 35,
"endLine": 42,
"tokens": 44
},
{
"name": "DnsVerification",
"kind": "section",
"startLine": 44,
"endLine": 50,
"tokens": 38
},
{
"name": "Domain",
"kind": "section",
"startLine": 52,
"endLine": 62,
"tokens": 70
},
{
"name": "statusVariant",
"kind": "fn",
"startLine": 64,
"endLine": 68,
"tokens": 61
},
{
"name": "AdminDomainsPage",
"kind": "fn",
"startLine": 70,
"endLine": 657,
"tokens": 7033
}
],
"symbolSource": "ts",
"skeleton": "interface DnsRecordCheck {\ninterface ReconcileResult {\ninterface DnsVerification {\ninterface Domain {\nfunction statusVariant(status: string): \"success\" | \"warning\" | \"danger\" {\nexport default function AdminDomainsPage() {",
"imports": [
"services/webmail/src/i18n/provider.tsx",
"services/webmail/src/components/ui/Badge.tsx",
"services/webmail/src/components/ui/Button.tsx"
],
"importance": 0.0144
},
"services/webmail/src/app/(admin)/admin/layout.tsx": {
"description": "AdminLayout — uses useState",
"tokens": 2246,
"hash": "faad0c293fe00511",
"size": 7859,
"mtimeMs": 1787574908613.0957,
"updatedAt": "2026-10-06T11:06:20.897Z",
"source": "scan",
"symbols": [
{
"name": "AdminLayout",
"kind": "fn",
"startLine": 26,
"endLine": 187,
"tokens": 2080
}
],
"symbolSource": "ts",
"skeleton": "export default function AdminLayout({ children }: { children: React.ReactNode }) {",
"imports": [
"services/webmail/src/i18n/provider.tsx",
"services/webmail/src/i18n/LanguageSwitcher.tsx",
"services/webmail/src/lib/useAccount.ts",
"services/webmail/src/lib/initials.ts"
],
"importance": 0.0144
},
"services/webmail/src/app/(admin)/admin/mailboxes/page.tsx": {
"description": "The envelope every server-paged list answers with.",
"tokens": 12626,
"hash": "1117ff9da8bfbe18",
"size": 44191,
"mtimeMs": 1787582496191.818,
"updatedAt": "2026-10-06T11:06:20.898Z",
"source": "scan",
"symbols": [
{
"name": "Mailbox",
"kind": "section",
"startLine": 30,
"endLine": 39,
"tokens": 49
},
{
"name": "Alias",
"kind": "section",
"startLine": 41,
"endLine": 46,
"tokens": 29
},
{
"name": "ApiMailbox",
"kind": "section",
"startLine": 48,
"endLine": 57,
"tokens": 56
},
{
"name": "PagedUsers",
"kind": "section",
"startLine": 60,
"endLine": 66,
"tokens": 36
},
{
"name": "ApiAlias",
"kind": "section",
"startLine": 68,
"endLine": 73,
"tokens": 35
},
{
"name": "AdminMailboxesPage",
"kind": "fn",
"startLine": 75,
"endLine": 1101,
"tokens": 12184
}
],
"symbolSource": "ts",
"skeleton": "interface Mailbox {\ninterface Alias {\ninterface ApiMailbox {\ninterface PagedUsers {\ninterface ApiAlias {\nexport default function AdminMailboxesPage() {",
"imports": [
"services/webmail/src/i18n/provider.tsx",
"services/webmail/src/components/ui/Badge.tsx",
"services/webmail/src/components/ui/Pagination.tsx",
"services/webmail/src/lib/useDebounced.ts",
"services/webmail/src/lib/formatBytes.ts",
"services/webmail/src/lib/roleLabel.ts",
"services/webmail/src/lib/initials.ts",
"services/webmail/src/components/ui/Button.tsx"
],
"importance": 0.0144
},
"services/webmail/src/app/(admin)/admin/queue/page.tsx": {
"description": "The outbound queue, read from the database.",
"tokens": 2956,
"hash": "3235d0da7ecdbdf3",
"size": 10343,
"mtimeMs": 1787574075074.975,
"updatedAt": "2026-10-06T11:06:20.898Z",
"source": "scan",
"symbols": [
{
"name": "QueueJob",
"kind": "section",
"startLine": 23,
"endLine": 33,
"tokens": 71
},
{
"name": "QueueSummary",
"kind": "section",
"startLine": 35,
"endLine": 42,
"tokens": 47
},
{
"name": "statusVariant",
"kind": "fn",
"startLine": 51,
"endLine": 55,
"tokens": 61
},
{
"name": "AdminQueuePage",
"kind": "fn",
"startLine": 57,
"endLine": 252,
"tokens": 2404
}
],
"symbolSource": "ts",
"skeleton": "interface QueueJob {\ninterface QueueSummary {\nfunction statusVariant(status: string): \"danger\" | \"warning\" | \"neutral\" {\nexport default function AdminQueuePage() {",
"imports": [
"services/webmail/src/i18n/provider.tsx",
"services/webmail/src/components/ui/Badge.tsx",
"services/webmail/src/components/ui/Button.tsx",
"services/webmail/src/components/ui/Pagination.tsx",
"services/webmail/src/lib/useDebounced.ts"
],
"importance": 0.0144
},
"services/webmail/src/app/(admin)/admin/security/page.tsx": {
"description": "Live certificate state from the protocols service, which owns the cert",
"tokens": 6267,
"hash": "8dff5cbdcb6d7948",
"size": 21933,
"mtimeMs": 1788275287930.1296,
"updatedAt": "2026-10-06T11:06:20.898Z",
"source": "scan",
"symbols": [
{
"name": "PreflightCheck",
"kind": "section",
"startLine": 18,
"endLine": 24,
"tokens": 40
},
{
"name": "ApiAuditRow",
"kind": "section",
"startLine": 26,
"endLine": 34,
"tokens": 60
},
{
"name": "AuditEntry",
"kind": "section",
"startLine": 36,
"endLine": 44,
"tokens": 42
},
{
"name": "AdminSecurityPage",
"kind": "fn",
"startLine": 46,
"endLine": 528,
"tokens": 6018
}
],
"symbolSource": "ts",
"skeleton": "interface PreflightCheck {\ninterface ApiAuditRow {\ninterface AuditEntry {\nexport default function AdminSecurityPage() {",
"imports": [
"services/webmail/src/i18n/provider.tsx",
"services/webmail/src/components/ui/Badge.tsx",
"services/webmail/src/components/ui/Button.tsx"
],
"importance": 0.0144
},
"services/webmail/src/app/(admin)/admin/tests/page.tsx": {
"description": "Checks an operator runs by hand, against the server or one user.",
"tokens": 2274,
"hash": "8aee7e658be6d0bf",
"size": 7958,
"mtimeMs": 1787575315828.4277,
"updatedAt": "2026-10-06T11:06:20.898Z",
"source": "scan",
"symbols": [
{
"name": "Check",
"kind": "section",
"startLine": 17,
"endLine": 22,
"tokens": 34
},
{
"name": "Report",
"kind": "section",
"startLine": 24,
"endLine": 29,
"tokens": 30
},
{
"name": "UserRow",
"kind": "section",
"startLine": 31,
"endLine": 34,
"tokens": 18
},
{
"name": "variantFor",
"kind": "fn",
"startLine": 36,
"endLine": 41,
"tokens": 70
},
{
"name": "AdminTestsPage",
"kind": "fn",
"startLine": 43,
"endLine": 217,
"tokens": 1942
}
],
"symbolSource": "ts",
"skeleton": "interface Check {\ninterface Report {\ninterface UserRow {\nfunction variantFor(status: Check[\"status\"]): \"success\" | \"warning\" | \"danger\" | \"neutral\" {\nexport default function AdminTestsPage() {",
"imports": [
"services/webmail/src/i18n/provider.tsx",
"services/webmail/src/components/ui/Badge.tsx",
"services/webmail/src/components/ui/Button.tsx",
"services/webmail/src/lib/useDebounced.ts"
],
"importance": 0.0144
},
"services/webmail/src/app/(auth)/admin/login/page.tsx": {
"description": "AdminLoginPage — renders form — uses useState",
"tokens": 2803,
"hash": "f6bcbf5b4c47e083",
"size": 9809,
"mtimeMs": 1787095819933.3389,
"updatedAt": "2026-10-06T11:06:20.899Z",
"source": "scan",
"symbols": [
{
"name": "AdminLoginPage",
"kind": "fn",
"startLine": 9,
"endLine": 238,
"tokens": 2719
}
],
"symbolSource": "ts",
"skeleton": "export default function AdminLoginPage() {",
"imports": [
"services/webmail/src/i18n/provider.tsx",
"services/webmail/src/components/TotpEnrolment.tsx",
"services/webmail/src/components/ui/Button.tsx"
],
"importance": 0.0144
},
"services/webmail/src/app/(auth)/admin/step-up/page.tsx": {
"description": "Crossing from the webmail into the console.",
"tokens": 2187,
"hash": "65d065b69def6393",
"size": 7654,
"mtimeMs": 1787095198167.7102,
"updatedAt": "2026-10-06T11:06:20.899Z",
"source": "scan",
"symbols": [
{
"name": "AdminStepUpPage",
"kind": "fn",
"startLine": 22,
"endLine": 178,
"tokens": 1927
}
],
"symbolSource": "ts",
"skeleton": "export default function AdminStepUpPage() {",
"imports": [
"services/webmail/src/i18n/provider.tsx",
"services/webmail/src/lib/useAccount.ts",
"services/webmail/src/components/TotpEnrolment.tsx",
"services/webmail/src/components/ui/Button.tsx"
],
"importance": 0.0144
},
"services/webmail/src/app/(auth)/user/login/page.tsx": {
"description": "One step, because the mailbox is one step.",
"tokens": 1486,
"hash": "9fc2b90531939ed0",
"size": 5200,
"mtimeMs": 1787095819933.482,
"updatedAt": "2026-10-06T11:06:20.900Z",
"source": "scan",
"symbols": [
{
"name": "UserLoginPage",
"kind": "fn",
"startLine": 8,
"endLine": 125,
"tokens": 1419
}
],
"symbolSource": "ts",
"imports": [
"services/webmail/src/i18n/provider.tsx",
"services/webmail/src/components/ui/Button.tsx"
],
"importance": 0.0144
},
"services/webmail/src/app/(user)/user/compose/page.tsx": {
"description": "Splits a comma or semicolon separated field, dropping empty entries.",
"tokens": 5433,
"hash": "c5002903c42eec20",
"size": 19015,
"mtimeMs": 1787414872252.8132,
"updatedAt": "2026-10-06T11:06:20.900Z",
"source": "scan",
"symbols": [
{
"name": "splitAddresses",
"kind": "fn",
"startLine": 25,
"endLine": 30,
"tokens": 41
},
{
"name": "AttachedFile",
"kind": "section",
"startLine": 32,
"endLine": 37,
"tokens": 26
},
{
"name": "ComposePage",
"kind": "fn",
"startLine": 39,
"endLine": 483,
"tokens": 5204
}
],
"symbolSource": "ts",
"skeleton": "function splitAddresses(value: string): string[] {\ninterface AttachedFile {\nexport default function ComposePage({",
"imports": [
"services/webmail/src/i18n/provider.tsx",
"services/webmail/src/components/ui/Button.tsx",
"services/webmail/src/lib/signature.ts"
],
"importance": 0.0144
},
"services/webmail/src/app/(user)/user/layout.tsx": {
"description": "Creates, renames or deletes one of the user's own folders.",
"tokens": 4684,
"hash": "6fe7f0a83a00b89b",
"size": 16393,
"mtimeMs": 1788830725030.1267,
"updatedAt": "2026-10-06T11:06:20.900Z",
"source": "scan",
"symbols": [
{
"name": "UserWebmailLayout",
"kind": "fn",
"startLine": 32,
"endLine": 370,
"tokens": 4459
}
],
"symbolSource": "ts",
"skeleton": "export default function UserWebmailLayout({ children }: { children: React.ReactNode }) {",
"imports": [
"services/webmail/src/i18n/provider.tsx",
"services/webmail/src/i18n/LanguageSwitcher.tsx",
"services/webmail/src/lib/useAccount.ts",
"services/webmail/src/lib/useFolders.ts",
"services/webmail/src/lib/mailCounts.ts",
"services/webmail/src/components/Avatar.tsx"
],
"importance": 0.0144
},
"services/webmail/src/app/(user)/user/mail/[folder]/page.tsx": {
"description": "The initials shown in the sender avatar, from a display name or an address.",
"tokens": 10230,
"hash": "ee7ca55047adb9c5",
"size": 35802,
"mtimeMs": 1788830725030.614,
"updatedAt": "2026-10-06T11:06:20.902Z",
"source": "scan",
"symbols": [
{
"name": "MessageSummary",
"kind": "section",
"startLine": 43,
"endLine": 55,
"tokens": 79
},
{
"name": "RenderedMessage",
"kind": "section",
"startLine": 57,
"endLine": 70,
"tokens": 105
},
{
"name": "initials",
"kind": "fn",
"startLine": 73,
"endLine": 78,
"tokens": 85
},
{
"name": "listTimestamp",
"kind": "fn",
"startLine": 85,
"endLine": 96,
"tokens": 138
},
{
"name": "formatBytes",
"kind": "fn",
"startLine": 98,
"endLine": 108,
"tokens": 99
},
{
"name": "MailFolderPage",
"kind": "fn",
"startLine": 110,
"endLine": 800,
"tokens": 9288
}
],
"symbolSource": "ts",
"skeleton": "interface MessageSummary {\ninterface RenderedMessage {\nfunction initials(name: string, address: string): string {\nfunction listTimestamp(iso: string, locale: string): string {\nfunction formatBytes(bytes: number): string {\nexport default function MailFolderPage({ params }: { params: Promise<{ folder: string }> }) {",
"imports": [
"services/webmail/src/i18n/provider.tsx",
"services/webmail/src/lib/useMailEvents.ts",
"services/webmail/src/lib/useFolders.ts",
"services/webmail/src/lib/sanitizer.ts",
"services/webmail/src/lib/remoteImages.ts",
"services/webmail/src/lib/emailBody.ts",
"services/webmail/src/components/ui/Button.tsx",
"services/webmail/src/components/Avatar.tsx"
],
"importance": 0.0644
},
"services/webmail/src/app/(user)/user/settings/page.tsx": {
"description": "Writes the whole rule list to the server as one script.",
"tokens": 12580,
"hash": "f6ef92503b6039d9",
"size": 44030,
"mtimeMs": 1788830725030.992,
"updatedAt": "2026-10-06T11:06:20.903Z",
"source": "scan",
"symbols": [
{
"name": "SieveRule",
"kind": "section",
"startLine": 32,
"endLine": 39,
"tokens": 62
},
{
"name": "AppPassword",
"kind": "section",
"startLine": 41,
"endLine": 46,
"tokens": 32
},
{
"name": "WebSession",
"kind": "section",
"startLine": 48,
"endLine": 55,
"tokens": 45
},
{
"name": "SettingsTab",
"kind": "section",
"startLine": 57,
"endLine": 57,
"tokens": 27
},
{
"name": "UserSettingsPage",
"kind": "fn",
"startLine": 59,
"endLine": 994,
"tokens": 12113
}
],
"symbolSource": "ts",
"skeleton": "interface SieveRule {\ninterface AppPassword {\ninterface WebSession {\ntype SettingsTab = \"profile\" | \"security\" | \"filters\" | \"vacation\" | \"signature\" | \"language\";\nexport default function UserSettingsPage() {",
"imports": [
"services/webmail/src/i18n/provider.tsx",
"services/webmail/src/components/ui/Badge.tsx",
"services/webmail/src/components/ui/Button.tsx",
"services/webmail/src/components/TotpEnrolment.tsx",
"services/webmail/src/i18n/LanguageSwitcher.tsx",
"services/webmail/src/lib/signature.ts",
"services/webmail/src/lib/rules.ts",
"services/webmail/src/lib/useFolders.ts",
"services/webmail/src/components/AvatarEditor.tsx",
"services/webmail/src/lib/useAccount.ts",
"services/webmail/src/lib/mailCounts.ts"
],
"importance": 0.0144
},
"services/webmail/src/app/api/v1/[...path]/route.ts": {
"description": "Proxies /api/v1/* to the auth service.",
"tokens": 1250,
"hash": "af2cc07c4c34d1f0",
"size": 4373,
"mtimeMs": 1788831584455.9814,
"updatedAt": "2026-10-06T11:06:20.903Z",
"source": "scan",
"symbols": [
{
"name": "upstreamFor",
"kind": "fn",
"startLine": 33,
"endLine": 37,
"tokens": 65
},
{
"name": "filterHeaders",
"kind": "fn",
"startLine": 54,
"endLine": 60,
"tokens": 58
},
{
"name": "forward",
"kind": "fn",
"startLine": 62,
"endLine": 108,
"tokens": 498
},
{
"name": "Context",
"kind": "section",
"startLine": 110,
"endLine": 110,
"tokens": 16
},
{
"name": "handler",
"kind": "fn",
"startLine": 112,
"endLine": 115,
"tokens": 43
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/webmail/src/app/globals.css": {
"description": "Nocturne - the one visual language for both surfaces.",
"tokens": 2171,
"hash": "446efc6c471e5b66",
"size": 7596,
"mtimeMs": 1787095819934.1978,
"updatedAt": "2026-10-06T11:06:20.903Z",
"source": "scan",
"importance": 0.0185
},
"services/webmail/src/app/health/route.ts": {
"description": "Liveness probe for the web container.",
"tokens": 210,
"hash": "9bdb05ee9eb9f3a9",
"size": 735,
"mtimeMs": 1785708839136.4302,
"updatedAt": "2026-10-06T11:06:20.903Z",
"source": "scan",
"importance": 0.0144
},
"services/webmail/src/app/layout.tsx": {
"description": "The locale is resolved on the server so the first paint is already in the",
"tokens": 356,
"hash": "1df421ef6ab67c00",
"size": 1243,
"mtimeMs": 1787094274325.3748,
"updatedAt": "2026-10-06T11:06:20.903Z",
"source": "scan",
"imports": [
"services/webmail/src/app/globals.css",
"services/webmail/src/i18n/provider.tsx",
"services/webmail/src/i18n/config.ts"
],
"importance": 0.0144
},
"services/webmail/src/app/page.tsx": {
"description": "The root sends everyone straight into the mail client.",
"tokens": 213,
"hash": "335452fc8be98fd9",
"size": 743,
"mtimeMs": 1785708839136.5457,
"updatedAt": "2026-10-06T11:06:20.903Z",
"source": "scan",
"importance": 0.0144
},
"services/webmail/src/components/Avatar.tsx": {
"description": "Rendered size in pixels; the square the circle is cut from.",
"tokens": 542,
"hash": "37e36f109056e098",
"size": 1897,
"mtimeMs": 1788830725031.2024,
"updatedAt": "2026-10-06T11:06:20.904Z",
"source": "scan",
"symbols": [
{
"name": "AvatarProps",
"kind": "section",
"startLine": 6,
"endLine": 17,
"tokens": 119
},
{
"name": "Avatar",
"kind": "fn",
"startLine": 27,
"endLine": 54,
"tokens": 290
}
],
"symbolSource": "ts",
"imports": [
"services/webmail/src/lib/initials.ts"
],
"importance": 0.0233
},
"services/webmail/src/components/AvatarEditor.tsx": {
"description": "The frame is square; the mask over it is what makes the photo a circle.",
"tokens": 2510,
"hash": "a84b46464d32f1a7",
"size": 8783,
"mtimeMs": 1788830725031.433,
"updatedAt": "2026-10-06T11:06:20.904Z",
"source": "scan",
"symbols": [
{
"name": "AvatarEditorProps",
"kind": "section",
"startLine": 21,
"endLine": 25,
"tokens": 34
},
{
"name": "AvatarEditor",
"kind": "fn",
"startLine": 27,
"endLine": 254,
"tokens": 2309
}
],
"symbolSource": "ts",
"skeleton": "interface AvatarEditorProps {\nexport function AvatarEditor({ src, onSaved }: AvatarEditorProps) {",
"imports": [
"services/webmail/src/components/ui/Button.tsx",
"services/webmail/src/i18n/provider.tsx"
],
"importance": 0.0155
},
"services/webmail/src/components/TotpEnrolment.tsx": {
"description": "The scannable half of TOTP enrolment, shared by the webmail settings page and",
"tokens": 1644,
"hash": "2bf14f265d7d3c26",
"size": 5753,
"mtimeMs": 1787095096887.0015,
"updatedAt": "2026-10-06T11:06:20.904Z",
"source": "scan",
"symbols": [
{
"name": "qrDataUri",
"kind": "fn",
"startLine": 28,
"endLine": 43,
"tokens": 178
},
{
"name": "TotpEnrolment",
"kind": "fn",
"startLine": 45,
"endLine": 97,
"tokens": 545
},
{
"name": "RecoveryCodes",
"kind": "fn",
"startLine": 106,
"endLine": 160,
"tokens": 517
}
],
"symbolSource": "ts",
"imports": [
"services/webmail/src/i18n/provider.tsx"
],
"importance": 0.0227
},
"services/webmail/src/components/ui/Badge.tsx": {
"description": "A tag: a small tinted label from the ramps.",
"tokens": 375,
"hash": "13ef6bc464034894",
"size": 1312,
"mtimeMs": 1787094255667.1128,
"updatedAt": "2026-10-06T11:06:20.904Z",
"source": "scan",
"importance": 0.0474
},
"services/webmail/src/components/ui/Button.tsx": {
"description": "Nocturne buttons are outlined, not filled.",
"tokens": 584,
"hash": "299744ec90898e32",
"size": 2043,
"mtimeMs": 1787094233363.3872,
"updatedAt": "2026-10-06T11:06:20.904Z",
"source": "scan",
"symbols": [
{
"name": "ButtonProps",
"kind": "section",
"startLine": 5,
"endLine": 9,
"tokens": 60
},
{
"name": "Button",
"kind": "fn",
"startLine": 21,
"endLine": 58,
"tokens": 366
}
],
"symbolSource": "ts",
"importance": 0.0708
},
"services/webmail/src/components/ui/Card.tsx": {
"description": "A panel: a solid ground with a hairline inset ring.",
"tokens": 421,
"hash": "3b7f8d69aa21e3b7",
"size": 1473,
"mtimeMs": 1787094244106.6357,
"updatedAt": "2026-10-06T11:06:20.904Z",
"source": "scan",
"importance": 0.0144
},
"services/webmail/src/components/ui/Pagination.tsx": {
"description": "The pager under a server-paged list.",
"tokens": 672,
"hash": "eb5628b661c65a20",
"size": 2349,
"mtimeMs": 1787574044769.0635,
"updatedAt": "2026-10-06T11:06:20.904Z",
"source": "scan",
"symbols": [
{
"name": "PaginationProps",
"kind": "section",
"startLine": 9,
"endLine": 16,
"tokens": 45
},
{
"name": "Pagination",
"kind": "fn",
"startLine": 24,
"endLine": 76,
"tokens": 497
}
],
"symbolSource": "ts",
"imports": [
"services/webmail/src/components/ui/Button.tsx",
"services/webmail/src/lib/paging.ts",
"services/webmail/src/i18n/provider.tsx"
],
"importance": 0.0184
},
"services/webmail/src/compose-draft-integrity.test.ts": {
"description": "The composer's draft handling, and the delete action the mail list was",
"tokens": 1189,
"hash": "3ea72051be9266c4",
"size": 4159,
"mtimeMs": 1787315464690.8062,
"updatedAt": "2026-10-06T11:06:20.904Z",
"source": "scan",
"symbols": [
{
"name": "read",
"kind": "fn",
"startLine": 14,
"endLine": 14,
"tokens": 24
},
{
"name": "code",
"kind": "fn",
"startLine": 15,
"endLine": 19,
"tokens": 46
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/webmail/src/emailBody.test.ts": {
"description": "The reader pane showed broken image icons for every message written by a",
"tokens": 1334,
"hash": "aa2316ccca1dad2a",
"size": 4668,
"mtimeMs": 1787075616726.684,
"updatedAt": "2026-10-06T11:06:20.904Z",
"source": "scan",
"imports": [
"services/webmail/src/lib/sanitizer.ts",
"services/webmail/src/lib/emailBody.ts"
],
"importance": 0.0144
},
"services/webmail/src/i18n/config.ts": {
"description": "Picks the best supported locale from an Accept-Language header.",
"tokens": 993,
"hash": "cc076614d1df0b7b",
"size": 3473,
"mtimeMs": 1785708839136.8157,
"updatedAt": "2026-10-06T11:06:20.904Z",
"source": "scan",
"symbols": [
{
"name": "Locale",
"kind": "section",
"startLine": 6,
"endLine": 6,
"tokens": 14
},
{
"name": "Messages",
"kind": "section",
"startLine": 28,
"endLine": 28,
"tokens": 18
},
{
"name": "isLocale",
"kind": "fn",
"startLine": 30,
"endLine": 32,
"tokens": 42
},
{
"name": "negotiateLocale",
"kind": "fn",
"startLine": 39,
"endLine": 59,
"tokens": 214
},
{
"name": "TranslateParams",
"kind": "section",
"startLine": 62,
"endLine": 62,
"tokens": 18
},
{
"name": "interpolate",
"kind": "fn",
"startLine": 71,
"endLine": 76,
"tokens": 76
},
{
"name": "translate",
"kind": "fn",
"startLine": 86,
"endLine": 92,
"tokens": 114
}
],
"symbolSource": "ts",
"imports": [
"services/webmail/messages/en.json",
"services/webmail/messages/pt-BR.json",
"services/webmail/messages/es.json"
],
"importance": 0.0518
},
"services/webmail/src/i18n/LanguageSwitcher.tsx": {
"description": "Language selector, rendered in both surface layouts (PLAN.md section 21.2).",
"tokens": 275,
"hash": "8557766e93e2e4f0",
"size": 962,
"mtimeMs": 1787094266144.591,
"updatedAt": "2026-10-06T11:06:20.904Z",
"source": "scan",
"imports": [
"services/webmail/src/i18n/config.ts",
"services/webmail/src/i18n/provider.tsx"
],
"importance": 0.0206
},
"services/webmail/src/i18n/provider.tsx": {
"description": "Shorthand for components that only need to translate.",
"tokens": 598,
"hash": "bdc5a710ef7b7826",
"size": 2093,
"mtimeMs": 1785708839136.924,
"updatedAt": "2026-10-06T11:06:20.904Z",
"source": "scan",
"symbols": [
{
"name": "TranslateFn",
"kind": "section",
"startLine": 13,
"endLine": 13,
"tokens": 22
},
{
"name": "I18nContextValue",
"kind": "section",
"startLine": 15,
"endLine": 19,
"tokens": 30
},
{
"name": "I18nProvider",
"kind": "fn",
"startLine": 23,
"endLine": 48,
"tokens": 368
},
{
"name": "useI18n",
"kind": "fn",
"startLine": 50,
"endLine": 56,
"tokens": 53
},
{
"name": "useTranslations",
"kind": "fn",
"startLine": 59,
"endLine": 61,
"tokens": 21
}
],
"symbolSource": "ts",
"importance": 0.1207
},
"services/webmail/src/i18n.test.ts": {
"description": "loadJson: getLeafKeys",
"tokens": 885,
"hash": "9803a416c5251145",
"size": 3096,
"mtimeMs": 1785689161522.3713,
"updatedAt": "2026-10-06T11:06:20.904Z",
"source": "scan",
"symbols": [
{
"name": "loadJson",
"kind": "fn",
"startLine": 5,
"endLine": 8,
"tokens": 50
},
{
"name": "getLeafKeys",
"kind": "fn",
"startLine": 10,
"endLine": 22,
"tokens": 129
}
],
"symbolSource": "ts",
"imports": [
"services/webmail/src/i18n/config.ts"
],
"importance": 0.0144
},
"services/webmail/src/initials.test.ts": {
"description": "",
"tokens": 293,
"hash": "44ebbeeb700881fc",
"size": 1024,
"mtimeMs": 1787094359195.7754,
"updatedAt": "2026-10-06T11:06:20.905Z",
"source": "scan",
"imports": [
"services/webmail/src/lib/initials.ts"
],
"importance": 0.0144
},
"services/webmail/src/interface-integrity.test.ts": {
"description": "Guards the class of defect this interface kept shipping: text that cannot be",
"tokens": 2690,
"hash": "c5b1fef1ce7a4b03",
"size": 9415,
"mtimeMs": 1787495211161.3228,
"updatedAt": "2026-10-06T11:06:20.905Z",
"source": "scan",
"symbols": [
{
"name": "sourceFiles",
"kind": "fn",
"startLine": 15,
"endLine": 26,
"tokens": 116
},
{
"name": "code",
"kind": "fn",
"startLine": 81,
"endLine": 85,
"tokens": 43
}
],
"symbolSource": "ts",
"skeleton": "function sourceFiles(): string[] {\nfunction code(file: string): string {",
"imports": [
"services/webmail/src/i18n/config.ts"
],
"importance": 0.0144
},
"services/webmail/src/lib/avatarCrop.test.ts": {
"description": "Declares VIEWPORT",
"tokens": 1187,
"hash": "f879c9b500c9ed41",
"size": 4152,
"mtimeMs": 1788830725031.6545,
"updatedAt": "2026-10-06T11:06:20.905Z",
"source": "scan",
"importance": 0.0144
},
"services/webmail/src/lib/avatarCrop.ts": {
"description": "The geometry behind the circular photo editor.",
"tokens": 1132,
"hash": "05bacd6843368846",
"size": 3960,
"mtimeMs": 1788830725031.8364,
"updatedAt": "2026-10-06T11:06:20.905Z",
"source": "scan",
"symbols": [
{
"name": "Size",
"kind": "section",
"startLine": 11,
"endLine": 14,
"tokens": 18
},
{
"name": "Transform",
"kind": "section",
"startLine": 17,
"endLine": 23,
"tokens": 63
},
{
"name": "minimumScale",
"kind": "fn",
"startLine": 32,
"endLine": 44,
"tokens": 175
},
{
"name": "scaleRange",
"kind": "fn",
"startLine": 47,
"endLine": 50,
"tokens": 48
},
{
"name": "clampTransform",
"kind": "fn",
"startLine": 59,
"endLine": 72,
"tokens": 167
},
{
"name": "initialTransform",
"kind": "fn",
"startLine": 75,
"endLine": 77,
"tokens": 44
},
{
"name": "SourceRect",
"kind": "section",
"startLine": 86,
"endLine": 91,
"tokens": 27
},
{
"name": "sourceRect",
"kind": "fn",
"startLine": 93,
"endLine": 109,
"tokens": 159
}
],
"symbolSource": "ts",
"importance": 0.0144
},
"services/webmail/src/lib/emailBody.ts": {
"description": "Turns a message's sanitized HTML into something a frame can actually show.",
"tokens": 1181,
"hash": "1a3d68e111e32fce",
"size": 4132,
"mtimeMs": 1787075616726.9568,
"updatedAt": "2026-10-06T11:06:20.905Z",
"source": "scan",
"symbols": [
{
"name": "InlineImages",
"kind": "section",
"startLine": 12,
"endLine": 12,
"tokens": 15
},
{
"name": "resolveInlineImages",
"kind": "fn",
"startLine": 21,
"endLine": 34,
"tokens": 168
},
{
"name": "buildReaderDocument",
"kind": "fn",
"startLine": 43,
"endLine": 97,
"tokens": 667
}
],
"symbolSource": "ts",
"importance": 0.0274
},
"services/webmail/src/lib/formatBytes.test.ts": {
"description": "",
"tokens": 434,
"hash": "1833f0c47f0302f7",
"size": 1516,
"mtimeMs": 1787579724171.6265,
"updatedAt": "2026-10-06T11:06:20.905Z",
"source": "scan",
"imports": [
"services/webmail/src/lib/formatBytes.ts"
],
"importance": 0.0144
},
"services/webmail/src/lib/formatBytes.ts": {
"description": "A byte count as a person reads it.",
"tokens": 398,
"hash": "2e7b6fa34388eb04",
"size": 1390,
"mtimeMs": 1787579724171.29,
"updatedAt": "2026-10-06T11:06:20.905Z",
"source": "scan",
"importance": 0.0282
},
"services/webmail/src/lib/initials.ts": {
"description": "The two letters an avatar shows.",
"tokens": 236,
"hash": "b164548186ccd6fe",
"size": 826,
"mtimeMs": 1787094346494.656,
"updatedAt": "2026-10-06T11:06:20.905Z",
"source": "scan",
"importance": 0.051
},
"services/webmail/src/lib/mailCounts.ts": {
"description": "The arithmetic behind every number the mail screens display.",
"tokens": 2786,
"hash": "48af3fdf0cf46980",
"size": 9751,
"mtimeMs": 1787423393559.9287,
"updatedAt": "2026-10-06T11:06:20.905Z",
"source": "scan",
"symbols": [
{
"name": "FolderSummary",
"kind": "section",
"startLine": 12,
"endLine": 17,
"tokens": 35
},
{
"name": "MessageSummary",
"kind": "section",
"startLine": 20,
"endLine": 24,
"tokens": 28
},
{
"name": "FolderMetrics",
"kind": "section",
"startLine": 26,
"endLine": 29,
"tokens": 20
},
{
"name": "ListFilter",
"kind": "section",
"startLine": 31,
"endLine": 31,
"tokens": 16
},
{
"name": "counter",
"kind": "fn",
"startLine": 34,
"endLine": 37,
"tokens": 49
},
{
"name": "folderMetrics",
"kind": "fn",
"startLine": 47,
"endLine": 57,
"tokens": 121
},
{
"name": "badgeCount",
"kind": "fn",
"startLine": 66,
"endLine": 69,
"tokens": 64
},
{
"name": "messageCounts",
"kind": "fn",
"startLine": 72,
"endLine": 82,
"tokens": 85
},
{
"name": "filterMessages",
"kind": "fn",
"startLine": 84,
"endLine": 88,
"tokens": 77
},
{
"name": "listHeaderCount",
"kind": "fn",
"startLine": 102,
"endLine": 112,
"tokens": 102
},
{
"name": "applySeen",
"kind": "fn",
"startLine": 120,
"endLine": 122,
"tokens": 49
},
{
"name": "FolderBadge",
"kind": "section",
"startLine": 125,
"endLine": 140,
"tokens": 174
},
{
"name": "folderBadge",
"kind": "fn",
"startLine": 151,
"endLine": 158,
"tokens": 85
},
{
"name": "ReaderActions",
"kind": "section",
"startLine": 161,
"endLine": 170,
"tokens": 85
},
{
"name": "readerActions",
"kind": "fn",
"startLine": 181,
"endLine": 196,
"tokens": 150
},
{
"name": "moveTargets",
"kind": "fn",
"startLine": 210,
"endLine": 230,
"tokens": 283
},
{
"name": "customFolders",
"kind": "fn",
"startLine": 245,
"endLine": 253,
"tokens": 111
}
],
"symbolSource": "ts",
"skeleton": "export interface FolderSummary {\nexport interface MessageSummary {\nexport interface FolderMetrics {\nexport type ListFilter = \"unread\" | \"attachment\" | null;\nfunction counter(value: unknown): number {\nexport function folderMetrics(\nexport function badgeCount(folders: FolderSummary[] | undefined | null, route: string): number {\nexport function messageCounts(messages: MessageSummary[]): {\nexport function filterMessages<T extends MessageSummary>(messages: T[], filter: ListFilter): T[] {\nexport function listHeaderCount(input: {\nexport function applySeen<T extends MessageSummary>(messages: T[], uid: number, seen: boolean): T[] {\nexport interface FolderBadge {\nexport function folderBadge(\nexport interface ReaderActions {\nexport function readerActions(folder: string): ReaderActions {\nexport function moveTargets(\nexport function customFolders(folders: FolderSummary[] | undefined | null): FolderSummary[] {",
"importance": 0.0402
},
"services/webmail/src/lib/paging.test.ts": {
"description": "Declares w",
"tokens": 464,
"hash": "adc926b9ef4c7ed6",
"size": 1622,
"mtimeMs": 1787574020278.871,
"updatedAt": "2026-10-06T11:06:20.905Z",
"source": "scan",
"imports": [
"services/webmail/src/lib/paging.ts"
],
"importance": 0.0144
},
"services/webmail/src/lib/paging.ts": {
"description": "The page numbers a pager should offer.",
"tokens": 273,
"hash": "926c3a3e4f900e8b",
"size": 954,
"mtimeMs": 1787574020276.871,
"updatedAt": "2026-10-06T11:06:20.905Z",
"source": "scan",
"importance": 0.0319
},
"services/webmail/src/lib/remoteImages.ts": {
"description": "Which senders may load their remote images.",
"tokens": 863,
"hash": "9279a6a265e460ad",
"size": 3018,
"mtimeMs": 1787414674392.4834,
"updatedAt": "2026-10-06T11:06:20.906Z",
"source": "scan",
"symbols": [
{
"name": "senderKey",
"kind": "fn",
"startLine": 30,
"endLine": 36,
"tokens": 76
},
{
"name": "readTrusted",
"kind": "fn",
"startLine": 46,
"endLine": 55,
"tokens": 82
},
{
"name": "writeTrusted",
"kind": "fn",
"startLine": 57,
"endLine": 69,
"tokens": 131
},
{
"name": "isSenderTrusted",
"kind": "fn",
"startLine": 71,
"endLine": 75,
"tokens": 44
},
{
"name": "trustSender",
"kind": "fn",
"startLine": 77,
"endLine": 82,
"tokens": 58
},
{
"name": "revokeSender",
"kind": "fn",
"startLine": 84,
"endLine": 88,
"tokens": 48
}
],
"symbolSource": "ts",
"importance": 0.0213
},
"services/webmail/src/lib/roleLabel.ts": {
"description": "A role as a person reads it.",
"tokens": 200,
"hash": "c4e633ffb520dbc6",
"size": 697,
"mtimeMs": 1787579835488.5488,
"updatedAt": "2026-10-06T11:06:20.906Z",
"source": "scan",
"importance": 0.0159
},
"services/webmail/src/lib/rules.ts": {
"description": "Rules as a person describes them, and the Sieve the server runs.",
"tokens": 1672,
"hash": "4b255a815928466e",
"size": 5851,
"mtimeMs": 1787416727573.8374,
"updatedAt": "2026-10-06T11:06:20.906Z",
"source": "scan",
"symbols": [
{
"name": "RuleField",
"kind": "section",
"startLine": 15,
"endLine": 15,
"tokens": 17
},
{
"name": "RuleCondition",
"kind": "section",
"startLine": 16,
"endLine": 16,
"tokens": 26
},
{
"name": "RuleAction",
"kind": "section",
"startLine": 17,
"endLine": 17,
"tokens": 19
},
{
"name": "Rule",
"kind": "section",
"startLine": 19,
"endLine": 27,
"tokens": 58
},
{
"name": "quote",
"kind": "fn",
"startLine": 43,
"endLine": 45,
"tokens": 31
},
{
"name": "escapeWildcards",
"kind": "fn",
"startLine": 54,
"endLine": 56,
"tokens": 28
},
{
"name": "testFor",
"kind": "fn",
"startLine": 59,
"endLine": 74,
"tokens": 169
},
{
"name": "actionFor",
"kind": "fn",
"startLine": 76,
"endLine": 87,
"tokens": 86
},
{
"name": "buildSieve",
"kind": "fn",
"startLine": 90,
"endLine": 95,
"tokens": 57
},
{
"name": "unquote",
"kind": "fn",
"startLine": 103,
"endLine": 105,
"tokens": 25
},
{
"name": "unescapeWildcards",
"kind": "fn",
"startLine": 107,
"endLine": 109,
"tokens": 28
},
{
"name": "parseSieve",
"kind": "fn",
"startLine": 120,
"endLine": 175,
"tokens": 494
}
],
"symbolSource": "ts",
"importance": 0.0278
},
"services/webmail/src/lib/sanitizer.ts": {
"description": "Sanitizes message HTML with DOMPurify (PLAN.md section 14.2).",
"tokens": 1142,
"hash": "facf598be2ff01e5",
"size": 3995,
"mtimeMs": 1787075616727.1992,
"updatedAt": "2026-10-06T11:06:20.906Z",
"source": "scan",
"symbols": [
{
"name": "installDataUriHook",
"kind": "fn",
"startLine": 26,
"endLine": 34,
"tokens": 84
},
{
"name": "sanitizeEmailHtml",
"kind": "fn",
"startLine": 36,
"endLine": 72,
"tokens": 551
},
{
"name": "blockRemoteImages",
"kind": "fn",
"startLine": 78,
"endLine": 84,
"tokens": 91
},
{
"name": "unblockRemoteImages",
"kind": "fn",
"startLine": 87,
"endLine": 90,
"tokens": 52
}
],
"symbolSource": "ts",
"importance": 0.0396
},
"services/webmail/src/lib/signature.ts": {
"description": "The signature, on its way from the settings screen into a message.",
"tokens": 1107,
"hash": "a2f8a003b4a54829",
"size": 3872,
"mtimeMs": 1787414837859.6646,
"updatedAt": "2026-10-06T11:06:20.906Z",
"source": "scan",
"symbols": [
{
"name": "installHook",
"kind": "fn",
"startLine": 31,
"endLine": 41,
"tokens": 114
},
{
"name": "sanitizeSignature",
"kind": "fn",
"startLine": 49,
"endLine": 60,
"tokens": 124
},
{
"name": "looksLikeHtml",
"kind": "fn",
"startLine": 75,
"endLine": 77,
"tokens": 24
},
{
"name": "escapeText",
"kind": "fn",
"startLine": 79,
"endLine": 85,
"tokens": 50
},
{
"name": "signatureToHtml",
"kind": "fn",
"startLine": 95,
"endLine": 104,
"tokens": 154
}
],
"symbolSource": "ts",
"importance": 0.0319
},
"services/webmail/src/lib/surfaceGate.ts": {
"description": "Which session a page needs before it can usefully render.",
"tokens": 445,
"hash": "ba304c1ef7f92c4e",
"size": 1557,
"mtimeMs": 1787075616727.2866,
"updatedAt": "2026-10-06T11:06:20.906Z",
"source": "scan",
"importance": 0.0389
},
"services/webmail/src/lib/useAccount.ts": {
"description": "Roles that may open the admin console.",
"tokens": 429,
"hash": "9dd0e30037630f6e",
"size": 1499,
"mtimeMs": 1785708839137.1448,
"updatedAt": "2026-10-06T11:06:20.906Z",
"source": "scan",
"importance": 0.0237
},
"services/webmail/src/lib/useDebounced.ts": {
"description": "Holds a value still until typing stops.",
"tokens": 170,
"hash": "eb2790e79c509405",
"size": 595,
"mtimeMs": 1787574075079,
"updatedAt": "2026-10-06T11:06:20.906Z",
"source": "scan",
"importance": 0.0215
},
"services/webmail/src/lib/useFolders.ts": {
"description": "The folder list, kept current.",
"tokens": 635,
"hash": "509901b101957e5d",
"size": 2221,
"mtimeMs": 1787075616727.374,
"updatedAt": "2026-10-06T11:06:20.906Z",
"source": "scan",
"symbols": [
{
"name": "notifyMailStateChanged",
"kind": "fn",
"startLine": 27,
"endLine": 30,
"tokens": 43
},
{
"name": "useFolders",
"kind": "fn",
"startLine": 32,
"endLine": 58,
"tokens": 297
}
],
"symbolSource": "ts",
"imports": [
"services/webmail/src/lib/useMailEvents.ts",
"services/webmail/src/lib/mailCounts.ts"
],
"importance": 0.0244
},
"services/webmail/src/lib/useMailEvents.ts": {
"description": "Subscribes to the server's event stream and calls onEvent for each push.",
"tokens": 641,
"hash": "897ea447f80aba41",
"size": 2241,
"mtimeMs": 1785689161522.6934,
"updatedAt": "2026-10-06T11:06:20.906Z",
"source": "scan",
"symbols": [
{
"name": "MailEvent",
"kind": "section",
"startLine": 5,
"endLine": 9,
"tokens": 28
},
{
"name": "useMailEvents",
"kind": "fn",
"startLine": 24,
"endLine": 73,
"tokens": 422
}
],
"symbolSource": "ts",
"importance": 0.0316
},
"services/webmail/src/mail-state-integrity.test.ts": {
"description": "The wiring behind the counters, the reader pane and the two surfaces.",
"tokens": 2149,
"hash": "29e6979c3381057b",
"size": 7520,
"mtimeMs": 1787423053296.819,
"updatedAt": "2026-10-06T11:06:20.906Z",
"source": "scan",
"symbols": [
{
"name": "read",
"kind": "fn",
"startLine": 14,
"endLine": 14,
"tokens": 24
},
{
"name": "code",
"kind": "fn",
"startLine": 16,
"endLine": 20,
"tokens": 46
}
],
"symbolSource": "ts",
"skeleton": "const read = (path: string) => readFileSync(resolve(process.cwd(), path), \"utf8\");\nconst code = (path: string) =>",
"importance": 0.0144
},
"services/webmail/src/mailCounts.test.ts": {
"description": "The counters the interface shows.",
"tokens": 4397,
"hash": "b48902ef48d3cda4",
"size": 15389,
"mtimeMs": 1787422990631.982,
"updatedAt": "2026-10-06T11:06:20.906Z",
"source": "scan",
"importance": 0.0144
},
"services/webmail/src/middleware.ts": {
"description": "Gate for the two web surfaces.",
"tokens": 862,
"hash": "67ba2fdabb1f3f36",
"size": 3014,
"mtimeMs": 1787075616727.7083,
"updatedAt": "2026-10-06T11:06:20.906Z",
"source": "scan",
"symbols": [
{
"name": "JwtClaims",
"kind": "section",
"startLine": 22,
"endLine": 27,
"tokens": 28
},
{
"name": "readClaims",
"kind": "fn",
"startLine": 30,
"endLine": 41,
"tokens": 119
},
{
"name": "isUsable",
"kind": "fn",
"startLine": 43,
"endLine": 51,
"tokens": 121
},
{
"name": "middleware",
"kind": "fn",
"startLine": 53,
"endLine": 79,
"tokens": 293
}
],
"symbolSource": "ts",
"imports": [
"services/webmail/src/lib/surfaceGate.ts"
],
"importance": 0.0144
},
"services/webmail/src/remoteImages.test.ts": {
"description": "Whether a message's remote images load.",
"tokens": 1007,
"hash": "32dc7f4130b49f29",
"size": 3522,
"mtimeMs": 1787414648587.2393,
"updatedAt": "2026-10-06T11:06:20.906Z",
"source": "scan",
"importance": 0.0144
},
"services/webmail/src/rules.test.ts": {
"description": "Rules, as a person describes them, turned into Sieve and back.",
"tokens": 2014,
"hash": "242edcc9030f1a4f",
"size": 7049,
"mtimeMs": 1787417860483.5532,
"updatedAt": "2026-10-06T11:06:20.906Z",
"source": "scan",
"symbols": [
{
"name": "rule",
"kind": "fn",
"startLine": 13,
"endLine": 21,
"tokens": 52
}
],
"symbolSource": "ts",
"skeleton": "const rule = (over: Partial<Rule> = {}): Rule => ({",
"imports": [
"services/webmail/src/lib/rules.ts"
],
"importance": 0.0144
},
"services/webmail/src/sanitizer.test.ts": {
"description": "These run under jsdom. Under the default node environment DOMPurify was",
"tokens": 1002,
"hash": "0026995aaae81e19",
"size": 3505,
"mtimeMs": 1785689161522.8435,
"updatedAt": "2026-10-06T11:06:20.906Z",
"source": "scan",
"imports": [
"services/webmail/src/lib/sanitizer.ts"
],
"importance": 0.0144
},
"services/webmail/src/sidebarBadge.test.ts": {
"description": "What the rail actually puts on screen, folder by folder.",
"tokens": 639,
"hash": "ad3c3c6c385c0492",
"size": 2236,
"mtimeMs": 1787423371226.8423,
"updatedAt": "2026-10-06T11:06:20.906Z",
"source": "scan",
"symbols": [
{
"name": "rendered",
"kind": "fn",
"startLine": 12,
"endLine": 15,
"tokens": 49
}
],
"symbolSource": "ts",
"imports": [
"services/webmail/src/lib/mailCounts.ts"
],
"importance": 0.0144
},
"services/webmail/src/signature.test.ts": {
"description": "The signature is edited in one place and injected into the composer in",
"tokens": 1022,
"hash": "ffa0a382d4f5af50",
"size": 3575,
"mtimeMs": 1787414756517.2598,
"updatedAt": "2026-10-06T11:06:20.907Z",
"source": "scan",
"imports": [
"services/webmail/src/lib/signature.ts"
],
"importance": 0.0144
},
"services/webmail/src/surfaceGate.test.ts": {
"description": "Which session, if any, a page needs before it may render.",
"tokens": 606,
"hash": "f7e336496f2f9958",
"size": 2120,
"mtimeMs": 1787075616727.8108,
"updatedAt": "2026-10-06T11:06:20.907Z",
"source": "scan",
"imports": [
"services/webmail/src/lib/surfaceGate.ts"
],
"importance": 0.0144
},
"services/webmail/src/wellknown-routing.test.ts": {
"description": "The well-known documents senders fetch over HTTPS.",
"tokens": 729,
"hash": "024e267b24eeabcd",
"size": 2551,
"mtimeMs": 1788831604906.3716,
"updatedAt": "2026-10-06T11:06:20.907Z",
"source": "scan",
"importance": 0.0144
},
"services/webmail/tailwind.config.js": {
"description": "Tailwind CSS configuration",
"tokens": 1064,
"hash": "6632a7f0a61f4274",
"size": 3724,
"mtimeMs": 1787094218189.5737,
"updatedAt": "2026-10-06T11:06:20.907Z",
"source": "scan",
"importance": 0.0144
},
"services/webmail/tsconfig.json": {
"description": "TypeScript configuration",
"tokens": 174,
"hash": "5ff4001d8b128359",
"size": 607,
"mtimeMs": 1785635482530.658,
"updatedAt": "2026-10-06T11:06:20.907Z",
"source": "scan",
"importance": 0.0144
},
"services/webmail/vitest.config.ts": {
"description": "Vitest test configuration",
"tokens": 93,
"hash": "69a6703ffbb48a12",
"size": 324,
"mtimeMs": 1785689161522.8938,
"updatedAt": "2026-10-06T11:06:20.907Z",
"source": "scan",
"importance": 0.0144
},
"services/webmail/src/components/MessageReader.tsx": {
"description": "The document the body frame renders, or null for a text-only message.",
"tokens": 4736,
"hash": "3f89e8a69e4f4e41",
"size": 16575,
"mtimeMs": 1791895211654.4243,
"updatedAt": "2026-10-13T12:40:11.730Z",
"source": "hook",
"symbols": [
{
"name": "ReaderMessage",
"kind": "section",
"startLine": 22,
"endLine": 32,
"tokens": 50
},
{
"name": "ReaderRow",
"kind": "section",
"startLine": 33,
"endLine": 39,
"tokens": 36
},
{
"name": "ReaderActions",
"kind": "section",
"startLine": 40,
"endLine": 47,
"tokens": 45
},
{
"name": "MoveTarget",
"kind": "section",
"startLine": 48,
"endLine": 52,
"tokens": 17
},
{
"name": "Props",
"kind": "section",
"startLine": 53,
"endLine": 74,
"tokens": 196
},
{
"name": "splitSender",
"kind": "fn",
"startLine": 75,
"endLine": 81,
"tokens": 98
},
{
"name": "initialsOf",
"kind": "fn",
"startLine": 82,
"endLine": 88,
"tokens": 99
},
{
"name": "attachmentKind",
"kind": "fn",
"startLine": 89,
"endLine": 106,
"tokens": 402
},
{
"name": "MessageReader",
"kind": "fn",
"startLine": 107,
"endLine": 383,
"tokens": 3687
}
]
},
"services/webmail/src/components/RecipientInput.tsx": {
"description": "Entries as they will be sent: `Name <addr>` or a bare address.",
"tokens": 1486,
"hash": "3a0aed48a083f576",
"size": 5198,
"mtimeMs": 1791895865256.09,
"updatedAt": "2026-10-13T12:51:05.360Z",
"source": "hook",
"symbols": [
{
"name": "Props",
"kind": "section",
"startLine": 8,
"endLine": 27,
"tokens": 220
},
{
"name": "RecipientInput",
"kind": "fn",
"startLine": 28,
"endLine": 146,
"tokens": 1196
}
]
},
"services/auth/src/accounts.ts": {
"description": "Several webmail accounts signed in at once, and a session that stays alive",
"tokens": 715,
"hash": "56859b67617d6304",
"size": 2500,
"mtimeMs": 1792690877532.1526,
"updatedAt": "2026-10-22T17:41:17.634Z",
"source": "hook",
"symbols": [
{
"name": "accountCookieName",
"kind": "fn",
"startLine": 26,
"endLine": 29,
"tokens": 33
},
{
"name": "parseCookies",
"kind": "fn",
"startLine": 30,
"endLine": 42,
"tokens": 152
},
{
"name": "accountTokens",
"kind": "fn",
"startLine": 43,
"endLine": 53,
"tokens": 144
},
{
"name": "shouldRenew",
"kind": "fn",
"startLine": 54,
"endLine": 57,
"tokens": 36
}
]
},
"services/webmail/src/components/ThreadReader.tsx": {
"description": "One message as the mail API returns it with its body.",
"tokens": 7350,
"hash": "54dad9430ffc2edb",
"size": 25722,
"mtimeMs": 1792698253418.4153,
"updatedAt": "2026-10-22T19:44:13.601Z",
"source": "hook",
"symbols": [
{
"name": "FullMessage",
"kind": "section",
"startLine": 39,
"endLine": 53,
"tokens": 74
},
{
"name": "MoveTarget",
"kind": "section",
"startLine": 54,
"endLine": 58,
"tokens": 17
},
{
"name": "Trusted",
"kind": "section",
"startLine": 59,
"endLine": 64,
"tokens": 44
},
{
"name": "Props",
"kind": "section",
"startLine": 65,
"endLine": 84,
"tokens": 314
},
{
"name": "splitSender",
"kind": "fn",
"startLine": 85,
"endLine": 90,
"tokens": 74
},
{
"name": "initialsOf",
"kind": "fn",
"startLine": 91,
"endLine": 96,
"tokens": 78
},
{
"name": "ThreadReader",
"kind": "fn",
"startLine": 97,
"endLine": 591,
"tokens": 6441
}
]
}
},
"preamble": [
"> Project structure index. Auto-maintained by OpenWolf hooks and daemon.",
"> Run `openwolf scan` to generate, or wait for the first Claude Code session.",
"> Status: Pending initial scan"
]
}