import net from "node:net";

import {
  RUNTIME_DURABLE_ADAPTER_AUTH_BLOCKED,
  RUNTIME_DURABLE_ADAPTER_MIGRATION_BLOCKED,
  RUNTIME_DURABLE_ADAPTER_QUERY_BLOCKED,
  RUNTIME_DURABLE_ADAPTER_SCHEMA_BLOCKED,
  RUNTIME_DURABLE_ADAPTER_SSL_BLOCKED,
  RUNTIME_DURABILITY_REQUIRED_EVIDENCE,
  RUNTIME_STORE_KIND_POSTGRES
} from "../db/runtime-store.ts";
import { ENVIRONMENT_DEV } from "../protocol/index.mjs";

export const DEV_DB_ENV_CONTRACT = Object.freeze({
  contractVersion: "v1",
  environment: ENVIRONMENT_DEV,
  requiredEnv: Object.freeze([
    "HWLAB_CLOUD_DB_URL",
    "HWLAB_CLOUD_DB_SSL_MODE"
  ]),
  secretRefs: Object.freeze([
    Object.freeze({
      env: "HWLAB_CLOUD_DB_URL",
      secretName: "hwlab-cloud-api-dev-db",
      secretKey: "database-url"
    })
  ]),
  endpointAuthority: Object.freeze({
    source: "secret-url-host",
    env: "HWLAB_CLOUD_DB_URL",
    requiredForReadiness: true,
    valueRedacted: true,
    endpointRedacted: true
  }),
  dns: Object.freeze({
    source: "optional-public-dns-alias",
    serviceName: "cloud-api-db",
    namespace: "hwlab-dev",
    host: "cloud-api-db.hwlab-dev.svc.cluster.local",
    port: 5432,
    portName: "postgres",
    requiredForReadiness: false,
    usedForProbe: false
  }),
  readinessLayers: Object.freeze([
    "dns",
    "tcp",
    "ssl",
    "auth",
    "schema",
    "migration",
    "durability"
  ]),
  nonSecretDefaults: Object.freeze({
    HWLAB_CLOUD_DB_SSL_MODE: "disable"
  }),
  forbidden: Object.freeze({
    prodAllowed: false,
    secretPlaintextAllowed: false,
    liveDbEvidenceFromFixtures: false,
    invalidRuntimeHosts: Object.freeze([
      ".invalid",
      "hwlab-dev-db.invalid"
    ])
  })
});

export const V02_DB_ENV_CONTRACT = buildRuntimeLaneDbEnvContract("v02");

export const V03_DB_ENV_CONTRACT = buildRuntimeLaneDbEnvContract("v03");

function buildRuntimeLaneDbEnvContract(profile) {
  return Object.freeze({
    ...DEV_DB_ENV_CONTRACT,
    environment: profile,
    secretRefs: Object.freeze([
      Object.freeze({
        env: "HWLAB_CLOUD_DB_URL",
        secretName: `hwlab-cloud-api-${profile}-db`,
        secretKey: "database-url"
      })
    ]),
    dns: Object.freeze({
      ...DEV_DB_ENV_CONTRACT.dns,
      serviceName: `hwlab-${profile}-postgres`,
      namespace: `hwlab-${profile}`,
      host: `hwlab-${profile}-postgres.hwlab-${profile}.svc.cluster.local`
    })
  });
}

const supportedDbProtocols = new Set(["postgres:", "postgresql:"]);
const defaultProbeTimeoutMs = 1200;

export function buildDbHealthContract(env = process.env) {
  const contract = dbEnvContractFor(env);
  const secretEnvNames = secretEnvNamesForContract(contract);
  const fields = contract.requiredEnv.map((name) => {
    const present = hasEnvValue(env, name);
    return {
      name,
      present,
      redacted: secretEnvNames.has(name),
      source: secretEnvNames.has(name) ? "k8s-secret-ref" : "runtime-env",
      required: true
    };
  });
  const missingEnv = fields.filter((field) => !field.present).map((field) => field.name);
  const configReady = missingEnv.length === 0;
  const connection = buildNotAttemptedConnection(configReady, missingEnv, contract);
  const connected = false;
  const connectionChecked = false;
  const status = configReady ? "degraded" : "blocked";
  const endpoint = buildEndpointDiagnostics(env, contract);

  return {
    contractVersion: contract.contractVersion,
    environment: contract.environment,
    connected,
    liveConnected: connected,
    liveDbEvidence: connected,
    connectionChecked,
    connectionAttempted: connection.attempted,
    connectionResult: connection.result,
    configReady,
    ready: connected,
    status,
    mode: configReady ? "configured_without_live_connection_attempt" : "not_configured",
    fields,
    missingEnv,
    endpoint,
    endpointSource: endpoint.authoritative.source,
    optionalPublicDnsAlias: endpoint.optionalPublicDnsAlias,
    secretRefs: contract.secretRefs.map(({ env: envName, secretName, secretKey }) => ({
      env: envName,
      secretName,
      secretKey,
      present: hasEnvValue(env, envName),
      envInjected: hasEnvValue(env, envName),
      secretPresent: "not_observed_by_runtime",
      secretKeyPresent: "not_observed_by_runtime",
      redacted: true
    })),
    connection,
    redaction: buildRedactionSafety(connection),
    safety: {
      environment: contract.environment,
      devOnly: contract.environment === ENVIRONMENT_DEV,
      prodAllowed: contract.forbidden.prodAllowed,
      secretsRead: false,
      secretMaterialRead: false,
      valuesRedacted: true,
      endpointRedacted: true,
      liveDbEvidence: connected,
      liveDbConnectedEvidence: connected
    },
    readinessLayers: buildReadinessLayers(connection),
    blocker: configReady ? "live DB connection has not been attempted by this health contract" : missingEnvBlocker(missingEnv),
    evidence: configReady ? "env_presence_only_no_live_db" : "env_contract_blocked"
  };
}

export async function buildDbRuntimeReadiness(env = process.env, options = {}) {
  const base = buildDbHealthContract(env);
  if (!base.configReady) {
    return base;
  }

  if (probeDisabled(env, options)) {
    return {
      ...base,
      blocker: "live DB probe is disabled for this runtime",
      evidence: "env_presence_only_probe_disabled"
    };
  }

  const connection = await probeDbConnection(env, options);
  return applyConnectionResult(base, connection);
}

export function buildDbEnvManifestPlaceholder() {
  return {
    requiredEnv: [...DEV_DB_ENV_CONTRACT.requiredEnv],
    secretRefs: DEV_DB_ENV_CONTRACT.secretRefs.map((item) => ({ ...item })),
    endpointAuthority: { ...DEV_DB_ENV_CONTRACT.endpointAuthority },
    dns: { ...DEV_DB_ENV_CONTRACT.dns },
    readinessLayers: [...DEV_DB_ENV_CONTRACT.readinessLayers],
    forbiddenRuntimeHosts: [...DEV_DB_ENV_CONTRACT.forbidden.invalidRuntimeHosts],
    nonSecretDefaults: { ...DEV_DB_ENV_CONTRACT.nonSecretDefaults },
    fixtureEvidence: {
      liveDbEvidence: false,
      summary: "This manifest contract records only env and Secret reference names. It is not live DB evidence."
    }
  };
}

export function summarizeDbContract(db = buildDbHealthContract()) {
  const contract = dbEnvContractForDb(db);
  return {
    status: db.status,
    ready: db.ready,
    configReady: db.configReady,
    connected: db.connected,
    liveConnected: db.liveConnected ?? db.connected,
    connectionChecked: db.connectionChecked,
    connectionAttempted: db.connectionAttempted ?? db.connectionChecked,
    connectionResult: db.connectionResult ?? db.connection?.result ?? "unknown",
    liveDbEvidence: Boolean(db.liveDbEvidence ?? db.safety?.liveDbEvidence),
    requiredEnv: db.fields.map((field) => ({
      name: field.name,
      present: field.present,
      redacted: field.redacted,
      source: field.source
    })),
    missingEnv: [...db.missingEnv],
    secretRefs: db.secretRefs.map(
      ({
        env: envName,
        secretName,
        secretKey,
        present,
        envInjected,
        secretPresent,
        secretKeyPresent,
        redacted
      }) => ({
        env: envName,
        secretName,
        secretKey,
        present,
        envInjected: envInjected ?? present,
        secretPresent: secretPresent ?? "not_observed",
        secretKeyPresent: secretKeyPresent ?? "not_observed",
        redacted
      })
    ),
    endpointSource: db.endpointSource ?? db.endpoint?.authoritative?.source ?? db.connection?.endpointSource ?? contract.endpointAuthority.source,
    optionalPublicDnsAlias: summarizeOptionalPublicDnsAlias(db.optionalPublicDnsAlias ?? db.endpoint?.optionalPublicDnsAlias, contract),
    connection: summarizeConnection(db.connection, contract),
    redaction: summarizeRedaction(db.redaction),
    readinessLayers: db.readinessLayers ?? buildReadinessLayers(db.connection),
    blocker: db.blocker ?? null,
    fixtureEvidence: false
  };
}

export function applyRuntimeDbReadinessLayers(db = buildDbHealthContract(), runtime = {}) {
  const baseLayers = buildReadinessLayers(db.connection);
  if (!db?.ready || db?.connectionResult !== "connected") {
    return {
      ...db,
      readinessLayers: baseLayers,
      runtimeReadiness: buildDbRuntimeReadinessSummary(runtime, { dbLiveReady: false })
    };
  }

  return {
    ...db,
    readinessLayers: {
      ...baseLayers,
      ssl: layerFromRuntimeGate(runtime, "ssl"),
      auth: layerFromRuntimeGate(runtime, "auth"),
      schema: layerFromRuntimeGate(runtime, "schema"),
      migration: layerFromRuntimeGate(runtime, "migration"),
      durability: layerFromRuntimeGate(runtime, "durability")
    },
    runtimeReadiness: buildDbRuntimeReadinessSummary(runtime, { dbLiveReady: true })
  };
}

function hasEnvValue(env, name) {
  return typeof env?.[name] === "string" && env[name].trim().length > 0;
}

export function dbEnvContractFor(env = process.env) {
  const value = env?.HWLAB_GITOPS_PROFILE || env?.HWLAB_ENVIRONMENT || "";
  const profile = typeof value === "string" ? value.trim().toLowerCase() : "";
  return dbEnvContractForProfile(profile);
}

function dbEnvContractForDb(db = {}) {
  return dbEnvContractForProfile(db?.environment);
}

function dbEnvContractForProfile(profile) {
  if (profile === V02_DB_ENV_CONTRACT.environment) return V02_DB_ENV_CONTRACT;
  if (profile === V03_DB_ENV_CONTRACT.environment) return V03_DB_ENV_CONTRACT;
  if (isRuntimeLaneProfile(profile)) return buildRuntimeLaneDbEnvContract(profile);
  return DEV_DB_ENV_CONTRACT;
}

function isRuntimeLaneProfile(profile) {
  return typeof profile === "string" && /^v[0-9]{2,}$/u.test(profile);
}

function secretEnvNamesForContract(contract) {
  return new Set(contract.secretRefs.map((item) => item.env));
}

function probeDisabled(env, options) {
  return options.probe === false || env?.HWLAB_CLOUD_DB_PROBE_DISABLED === "1";
}

function buildNotAttemptedConnection(configReady, missingEnv, contract = DEV_DB_ENV_CONTRACT) {
  return {
    attempted: false,
    networkAttempted: false,
    result: configReady ? "not_attempted" : "not_attempted_missing_env",
    classification: configReady ? "configured_no_live_attempt" : "missing_runtime_env",
    endpointSource: contract.endpointAuthority.source,
    probeType: "tcp-connect",
    endpointRedacted: true,
    valueRedacted: true,
    timeoutMs: null,
    durationMs: 0,
    errorCode: null,
    missingEnv: [...missingEnv]
  };
}

function buildRedactionSafety(connection) {
  return {
    valuesRedacted: true,
    endpointRedacted: connection?.endpointRedacted !== false,
    valueRedacted: connection?.valueRedacted !== false,
    secretMaterialRead: false,
    secretRefsOnly: true
  };
}

async function probeDbConnection(env, options) {
  const contract = dbEnvContractFor(env);
  const timeoutMs = normalizeTimeoutMs(options.timeoutMs ?? env?.HWLAB_CLOUD_DB_PROBE_TIMEOUT_MS);
  if (typeof options.probe === "function") {
    return options.probe({
      endpointSource: contract.endpointAuthority.source,
      timeoutMs
    });
  }
  const parsed = parseDbUrlContract(env?.HWLAB_CLOUD_DB_URL, contract);
  if (!parsed.ok) {
    return {
      attempted: true,
      networkAttempted: false,
      result: parsed.result,
      classification: parsed.classification,
      endpointSource: contract.endpointAuthority.source,
      probeType: "tcp-connect",
      endpointRedacted: true,
      valueRedacted: true,
      timeoutMs,
      durationMs: 0,
      errorCode: parsed.errorCode,
      missingEnv: []
    };
  }

  return tcpConnect({
    host: parsed.host,
    port: parsed.port,
    timeoutMs,
    endpointSource: contract.endpointAuthority.source
  });
}

export function parseDbUrlContract(rawUrl, contract = DEV_DB_ENV_CONTRACT) {
  try {
    const url = new URL(rawUrl);
    if (!supportedDbProtocols.has(url.protocol)) {
      return {
        ok: false,
        result: "unsupported_protocol",
        classification: "db_url_unsupported_protocol",
        errorCode: "UNSUPPORTED_PROTOCOL"
      };
    }
    if (!url.hostname) {
      return {
        ok: false,
        result: "invalid_url",
        classification: "db_url_missing_host",
        errorCode: "MISSING_HOST"
      };
    }
    if (isForbiddenRuntimeHost(url.hostname, contract)) {
      return {
        ok: false,
        result: "forbidden_runtime_host",
        classification: "db_url_forbidden_invalid_host",
        errorCode: "FORBIDDEN_INVALID_HOST"
      };
    }
    const port = url.port ? Number.parseInt(url.port, 10) : 5432;
    if (!Number.isInteger(port) || port <= 0 || port > 65535) {
      return {
        ok: false,
        result: "invalid_url",
        classification: "db_url_invalid_port",
        errorCode: "INVALID_PORT"
      };
    }
    return {
      ok: true,
      host: url.hostname,
      port
    };
  } catch {
    return {
      ok: false,
      result: "invalid_url",
      classification: "db_url_parse_error",
      errorCode: "INVALID_URL"
    };
  }
}

function tcpConnect({ host, port, timeoutMs, endpointSource }) {
  return new Promise((resolve) => {
    const startedAt = Date.now();
    const socket = net.connect({ host, port, timeout: timeoutMs });
    let settled = false;

    function finish(result) {
      if (settled) return;
      settled = true;
      socket.destroy();
      resolve({
        attempted: true,
        networkAttempted: true,
        endpointSource,
        probeType: "tcp-connect",
        endpointRedacted: true,
        valueRedacted: true,
        timeoutMs,
        durationMs: Date.now() - startedAt,
        missingEnv: [],
        ...result
      });
    }

    socket.on("connect", () => {
      finish({
        result: "connected",
        classification: "tcp_connected",
        errorCode: null
      });
    });
    socket.on("timeout", () => {
      finish({
        result: "timeout",
        classification: "tcp_timeout",
        errorCode: "ETIMEDOUT"
      });
    });
    socket.on("error", (error) => {
      finish(classifySocketError(error));
    });
  });
}

function classifySocketError(error) {
  const code = typeof error?.code === "string" ? error.code : "UNKNOWN";
  if (code === "ECONNREFUSED") {
    return {
      result: "refused",
      classification: "tcp_refused",
      errorCode: code
    };
  }
  if (code === "ENOTFOUND" || code === "EAI_AGAIN") {
    return {
      result: "dns_error",
      classification: "dns_resolution_failed",
      errorCode: code
    };
  }
  if (code === "ETIMEDOUT") {
    return {
      result: "timeout",
      classification: "tcp_timeout",
      errorCode: code
    };
  }
  if (code === "EHOSTUNREACH" || code === "ENETUNREACH") {
    return {
      result: "network_unreachable",
      classification: "network_unreachable",
      errorCode: code
    };
  }
  return {
    result: "error",
    classification: "tcp_error",
    errorCode: code
  };
}

function applyConnectionResult(base, connection) {
  const liveConnected = connection.result === "connected";
  return {
    ...base,
    connected: liveConnected,
    liveConnected,
    liveDbEvidence: liveConnected,
    connectionChecked: connection.attempted,
    connectionAttempted: connection.attempted,
    connectionResult: connection.result,
    ready: liveConnected,
    status: liveConnected ? "ready" : "degraded",
    mode: liveConnected ? "live_connection_ready" : "live_connection_blocked",
    connection,
    endpoint: base.endpoint,
    endpointSource: connection.endpointSource ?? base.endpointSource,
    optionalPublicDnsAlias: base.optionalPublicDnsAlias,
    redaction: buildRedactionSafety(connection),
    safety: {
      ...base.safety,
      endpointRedacted: connection.endpointRedacted !== false,
      liveDbEvidence: liveConnected,
      liveDbConnectedEvidence: liveConnected
    },
    readinessLayers: buildReadinessLayers(connection),
    blocker: liveConnected ? null : blockerForConnection(connection),
    evidence: liveConnected ? "live_db_tcp_connection_ready" : "live_db_tcp_connection_blocked"
  };
}

function blockerForConnection(connection) {
  if (connection.result === "invalid_url") {
    return "DB URL is injected but cannot be parsed as a supported postgres URL";
  }
  if (connection.result === "forbidden_runtime_host") {
    return "DB URL is injected but points at a forbidden .invalid DEV runtime host";
  }
  if (connection.result === "unsupported_protocol") {
    return "DB URL is injected but does not use a supported postgres protocol";
  }
  if (connection.result === "refused") {
    return "DB endpoint refused a TCP connection from the cloud-api runtime";
  }
  if (connection.result === "timeout") {
    return "DB endpoint TCP connection timed out from the cloud-api runtime";
  }
  if (connection.result === "dns_error") {
    return "DB endpoint DNS resolution failed from the cloud-api runtime";
  }
  if (connection.result === "network_unreachable") {
    return "DB endpoint network is unreachable from the cloud-api runtime";
  }
  return "DB endpoint TCP connection did not complete from the cloud-api runtime";
}

function missingEnvBlocker(missingEnv) {
  return `DB runtime config is missing ${missingEnv.join(", ")}`;
}

function normalizeTimeoutMs(value) {
  const parsed = Number.parseInt(String(value ?? ""), 10);
  if (!Number.isInteger(parsed) || parsed <= 0) {
    return defaultProbeTimeoutMs;
  }
  return Math.min(parsed, 5000);
}

function isForbiddenRuntimeHost(hostname, contract = DEV_DB_ENV_CONTRACT) {
  const normalized = String(hostname ?? "").toLowerCase();
  return contract.forbidden.invalidRuntimeHosts.some((host) =>
    host.startsWith(".") ? normalized.endsWith(host) : normalized === host
  );
}

function buildReadinessLayers(connection = {}) {
  const result = connection?.result ?? "unknown";
  const connected = result === "connected";
  const dnsReady = connected || ["refused", "timeout", "network_unreachable", "error"].includes(result);
  const tcpReady = connected;
  return {
    dns: {
      status: dnsReady ? "pass" : "not_proven",
      result
    },
    tcp: {
      status: tcpReady ? "pass" : "not_proven",
      result
    },
    ssl: {
      status: "not_proven",
      result: connected ? "tcp_connected_ssl_not_checked" : result
    },
    auth: {
      status: "not_proven",
      result: connected ? "tcp_connected_auth_not_checked" : result
    },
    schema: {
      status: "not_proven",
      result: connected ? "tcp_connected_schema_not_checked" : result
    },
    migration: {
      status: "not_proven",
      result: connected ? "tcp_connected_migration_not_checked" : result
    },
    durability: {
      status: "not_proven",
      result: connected ? "tcp_connected_durability_not_checked" : result
    }
  };
}

function layerFromRuntimeGate(runtime = {}, gateName) {
  if (!isPostgresRuntime(runtime)) {
    return {
      status: "not_proven",
      result: "runtime_adapter_not_postgres"
    };
  }

  const gate = runtime.gates?.[gateName];
  if (gate?.ready === true || gate?.status === "ready") {
    return {
      status: "pass",
      result: `runtime_${gateName}_ready`,
      blocker: null
    };
  }

  if (gate?.status === "blocked" || runtimeGateBlockedAt(runtime, gateName)) {
    return {
      status: "blocked",
      result: runtimeLayerResult(runtime, gateName),
      blocker: gate?.blocker ?? runtime.blocker ?? null
    };
  }

  return {
    status: "not_proven",
    result: `runtime_${gateName}_not_checked`,
    blocker: null
  };
}

function isPostgresRuntime(runtime = {}) {
  return runtime?.adapter === RUNTIME_STORE_KIND_POSTGRES || runtime?.durableRequested === true;
}

function runtimeGateBlockedAt(runtime = {}, gateName) {
  const blocker = runtime?.blocker;
  if (gateName === "ssl") return blocker === RUNTIME_DURABLE_ADAPTER_SSL_BLOCKED;
  if (gateName === "auth") return blocker === RUNTIME_DURABLE_ADAPTER_AUTH_BLOCKED;
  if (gateName === "schema") return blocker === RUNTIME_DURABLE_ADAPTER_SCHEMA_BLOCKED;
  if (gateName === "migration") return blocker === RUNTIME_DURABLE_ADAPTER_MIGRATION_BLOCKED;
  if (gateName === "durability") return blocker === RUNTIME_DURABLE_ADAPTER_QUERY_BLOCKED;
  return false;
}

function runtimeLayerResult(runtime = {}, gateName) {
  const queryResult = runtime?.connection?.queryResult;
  if (typeof queryResult === "string" && queryResult.length > 0) return queryResult;
  if (gateName === "ssl") return "ssl_negotiation_blocked";
  if (gateName === "auth") return "auth_blocked";
  if (gateName === "schema") return "schema_blocked";
  if (gateName === "migration") return "migration_blocked";
  if (gateName === "durability") return "query_blocked";
  return "runtime_query_blocked";
}

function buildDbRuntimeReadinessSummary(runtime = {}, { dbLiveReady } = {}) {
  const contract = runtime?.durabilityContract ?? {};
  return {
    adapter: runtime?.adapter ?? "unknown",
    durable: Boolean(runtime?.durable),
    durableRequested: Boolean(runtime?.durableRequested || runtime?.adapter === RUNTIME_STORE_KIND_POSTGRES),
    ready: runtime?.ready === true,
    status: runtime?.status ?? "unknown",
    blocker: runtime?.blocker ?? null,
    blockedLayer: contract.blockedLayer ?? null,
    queryAttempted: Boolean(runtime?.connection?.queryAttempted),
    queryResult: runtime?.connection?.queryResult ?? (dbLiveReady ? "not_checked" : "db_live_not_ready"),
    dbLiveEvidenceObserved: Boolean(dbLiveReady),
    dbLiveEvidenceIsDurabilityEvidence: false,
    requiredEvidence: contract.requiredEvidence ?? RUNTIME_DURABILITY_REQUIRED_EVIDENCE,
    secretMaterialRead: false,
    valuesRedacted: true,
    endpointRedacted: true
  };
}

function summarizeConnection(connection, contract = DEV_DB_ENV_CONTRACT) {
  if (!connection) {
    return {
      attempted: false,
      result: "unknown",
      endpointRedacted: true,
      valueRedacted: true
    };
  }
  return {
    attempted: Boolean(connection.attempted),
    networkAttempted: Boolean(connection.networkAttempted),
    result: connection.result,
    classification: connection.classification,
    endpointSource: connection.endpointSource ?? contract.endpointAuthority.source,
    probeType: connection.probeType,
    endpointRedacted: true,
    valueRedacted: true,
    timeoutMs: connection.timeoutMs,
    durationMs: connection.durationMs,
    errorCode: connection.errorCode ?? null
  };
}

function buildEndpointDiagnostics(env, contract = dbEnvContractFor(env)) {
  const authority = contract.endpointAuthority;
  return {
    authoritative: {
      source: authority.source,
      env: authority.env,
      requiredForReadiness: authority.requiredForReadiness,
      usedForProbe: true,
      endpointRedacted: true,
      valueRedacted: true
    },
    optionalPublicDnsAlias: buildOptionalPublicDnsAlias(env, contract)
  };
}

function buildOptionalPublicDnsAlias(env, contract = dbEnvContractFor(env)) {
  const alias = contract.dns;
  const serviceNamePresent = env?.HWLAB_CLOUD_DB_SERVICE_NAME === alias.serviceName;
  const namespacePresent = env?.HWLAB_CLOUD_DB_SERVICE_NAMESPACE === alias.namespace;
  const hostPresent = env?.HWLAB_CLOUD_DB_HOST === alias.host;
  const portPresent = env?.HWLAB_CLOUD_DB_PORT === String(alias.port);
  const envPresent = serviceNamePresent || namespacePresent || hostPresent || portPresent;
  return {
    source: alias.source,
    serviceName: alias.serviceName,
    namespace: alias.namespace,
    port: alias.port,
    portName: alias.portName,
    requiredForReadiness: false,
    usedForProbe: false,
    envPresent,
    readyGate: "not_readiness_authority",
    note: envPresent
      ? "optional alias env observed; live DB readiness still follows the redacted Secret URL host"
      : "optional alias is not configured and is not required for live DB readiness"
  };
}

function summarizeOptionalPublicDnsAlias(alias, contract = DEV_DB_ENV_CONTRACT) {
  const fallback = buildOptionalPublicDnsAlias({}, contract);
  const value = alias ?? fallback;
  return {
    source: value.source ?? fallback.source,
    serviceName: value.serviceName ?? fallback.serviceName,
    namespace: value.namespace ?? fallback.namespace,
    port: value.port ?? fallback.port,
    portName: value.portName ?? fallback.portName,
    requiredForReadiness: value.requiredForReadiness === true ? true : false,
    usedForProbe: value.usedForProbe === true ? true : false,
    envPresent: value.envPresent === true,
    readyGate: value.readyGate ?? "not_readiness_authority"
  };
}

function summarizeRedaction(redaction) {
  return {
    valuesRedacted: redaction?.valuesRedacted !== false,
    endpointRedacted: redaction?.endpointRedacted !== false,
    valueRedacted: redaction?.valueRedacted !== false,
    secretMaterialRead: redaction?.secretMaterialRead === true,
    secretRefsOnly: redaction?.secretRefsOnly !== false
  };
}
