3.8 KiB
Audita Modules
Scope
This document covers internal module contracts and packages. User-selectable keys and the default sequence belong to configuration.
Module Contract
Modules implement contracts.TranscriptModule:
Key()ReplacementPolicy()Validators()Propose(ctx, req)
Runner resolves configured module specs to module instances through internal/framework/modules.
Built-In Modules
Current module packages:
internal/modules/glossaryinternal/modules/homophonesinternal/modules/spoken_wordinternal/modules/grammar
Current replacement policies:
glossary:replace_allhomophones:require_uniquespoken_word:require_uniquegrammar:require_unique
Proposal Generation Ownership
Shared proposal-generation plumbing is centralized in:
internal/framework/proposal_generation
Module packages own:
- prompt selection (
internal/promptsprompt IDs).
Each stage prepares the encoded glossary context and protected spellings once.
Proposal generation adds the selected transcript section and trimmed description
for each request. PromptKit renders the selected definition and validates the
correction-set schema before Audita maps proposals. Domain validators still
check confidence, applicability, protected glossary terms, and replacement
policy. Model-facing segment IDs are one-based positions within the proposal
request. Generation maps returned references back to the current chunk's actual
segment IDs, preserving response order and multiple proposals per segment.
Unknown references become invalid-target candidates for the existing domain
checks; they are never interpreted as actual transcript IDs. Debug request
metadata records segment_ids in local-reference order (reference 1 is the
first entry). Shared context encoding lives in internal/framework/promptcontext.
An empty corrected_text deletes the identified span when the resulting segment
remains nonblank. Whitespace-only original spans can express spacing corrections;
matching stays literal under each module's replacement policy. No automatic
whitespace cleanup follows application.
Validator Chain Ownership
Built-in chains are resolved in internal/validators per module key.
Module packages call the built-in chain resolver at construction.
Failure and Outcome Behavior
Module construction failures are fatal. Recoverable proposal model failures record an unsuccessful operation and yield no candidates for that section; other sections and module instances continue. Fatal adapter or application failures cancel peers and retain partial observations. Consumer-visible outcomes are defined by the report contract.
Changing Modules
- Add or update the narrowly scoped package under
internal/modules/<module_key>. - Keep module prompt selection in the module and its definition in
internal/prompts; see prompt assets. - Wire module registration and catalog resolution through framework module registration and the core module catalog. Update selectable keys in the configuration contract when they change.
- Verify replacement policy and validator-chain selection against the architecture requirements.
- Review module, prompt-variable, and proposal-generation tests. Inspect parity and release fixtures when public output changes, choosing sufficient coverage under the testing policy.
- Update this document for implementation changes and the appropriate public contract owner for externally visible changes.
Key Tests
internal/modules/*/module_test.gointernal/framework/modules/registry_test.gointernal/framework/proposal_generation/*_test.gointernal/cli/process_ordered_integration_test.go(pipeline/report integration)