diff --git a/Sources/TranscriptedCore/AGENTS.md b/Sources/TranscriptedCore/AGENTS.md index f4e97c6dd..e38e657fa 100644 --- a/Sources/TranscriptedCore/AGENTS.md +++ b/Sources/TranscriptedCore/AGENTS.md @@ -57,7 +57,7 @@ Run `find Sources/TranscriptedCore -name '*.swift'` for the live list. By folder ## Environment variables Core reads -- `TRANSCRIPTED_LAB_KNOBS_FILE` is read once per process by `Utilities/LabKnobOverrides.swift`. It names a JSON object of hill-climb knob overrides. Unset (every normal run) means no file I/O. Only ids in `LabKnobOverrides.knownIDs` are honored: the four `diarization.*` knobs in `Services/DiarizationService.swift` and the four `speaker.cluster.*` thresholds in `Speaker/SpeakerEmbeddingThresholds.swift`. Anything else is warned about on stderr (ids only) and dropped. A new knob needs the call site, the id in `knownIDs`, and an entry in `config/hillclimb/knobs.json`. It is the only env var that changes pipeline math; don't add more unless a host seam can't do the job. +- `TRANSCRIPTED_LAB_KNOBS_FILE` is read once per process by `Utilities/LabKnobOverrides.swift`. It names a JSON object of hill-climb knob overrides. Unset (every normal run) means no file I/O. Only ids in `LabKnobOverrides.knownIDs` are honored: the four `diarization.*` knobs in `Services/FluidAudioCompatibility.swift` and the four `speaker.cluster.*` thresholds in `Speaker/SpeakerEmbeddingThresholds.swift`. Anything else is warned about on stderr (ids only) and dropped. A new knob needs the call site, the id in `knownIDs`, and an entry in `config/hillclimb/knobs.json`. It is the only env var that changes pipeline math; don't add more unless a host seam can't do the job. - Lab-only, diarization: `TRANSCRIPTED_NEMOTRON_PRESET` and `TRANSCRIPTED_NEMOTRON_EMBEDDER=online` (below). ## Diarization backends diff --git a/Sources/TranscriptedCore/Logging/AppLogger.swift b/Sources/TranscriptedCore/Logging/AppLogger.swift index 3d7c094c4..bf2ae8817 100644 --- a/Sources/TranscriptedCore/Logging/AppLogger.swift +++ b/Sources/TranscriptedCore/Logging/AppLogger.swift @@ -5,7 +5,7 @@ import OSLog /// /// Writes to both: /// 1. os.Logger (Console.app) — for human debugging -/// 2. FileLogger (~/Library/Logs/Transcripted/app.jsonl) — for agent diagnostics +/// 2. FileLogger (~/Library/Application Support/Transcripted/logs/app.jsonl by default) — for agent diagnostics /// /// Usage: /// AppLogger.audioMic.info("Started", ["sampleRate": "\(format.sampleRate)"]) diff --git a/Sources/TranscriptedCore/Logging/FileLogger.swift b/Sources/TranscriptedCore/Logging/FileLogger.swift index 6b9218b76..1929b3cba 100644 --- a/Sources/TranscriptedCore/Logging/FileLogger.swift +++ b/Sources/TranscriptedCore/Logging/FileLogger.swift @@ -1,6 +1,7 @@ import Foundation -/// Writes structured log entries as JSON Lines to ~/Library/Logs/Transcripted/app.jsonl +/// Writes structured log entries as JSON Lines to `app.jsonl` in `CoreStoragePaths.logs` +/// (by default ~/Library/Application Support/Transcripted/logs/app.jsonl) /// /// Design decisions: /// - JSON Lines format: one JSON object per line, machine-parseable, grep-friendly diff --git a/Sources/TranscriptedCore/Utilities/LabKnobOverrides.swift b/Sources/TranscriptedCore/Utilities/LabKnobOverrides.swift index 7b32e1ad5..ad94ebc44 100644 --- a/Sources/TranscriptedCore/Utilities/LabKnobOverrides.swift +++ b/Sources/TranscriptedCore/Utilities/LabKnobOverrides.swift @@ -32,7 +32,7 @@ public enum LabKnobOverrides { public static let environmentKey = "TRANSCRIPTED_LAB_KNOBS_FILE" /// Every knob id Core reads through this type. Keep in sync with the call - /// sites (DiarizationService.swift, SpeakerEmbeddingThresholds.swift) and + /// sites (FluidAudioCompatibility.swift, SpeakerEmbeddingThresholds.swift) and /// with config/hillclimb/knobs.json. public static let knownIDs: Set = [ "diarization.clustering_threshold",