Standardized the grammar and spoken_word modules on a shared editorial_review validator

This commit is contained in:
2026-05-14 09:30:10 -05:00
parent b103bb2e7d
commit 6dae15656d
11 changed files with 9 additions and 65 deletions

View File

@@ -15,8 +15,6 @@ Built-in validator construction is package-owned under `internal/validators/<val
- `internal/validators/spoken_form_plausibility`
- `internal/validators/meaning_reversal_review`
- `internal/validators/editorial_review`
- `internal/validators/grammar_review`
- `internal/validators/spoken_word_review`
Registry and chain wiring stay in:
- `internal/validators/registry.go`
@@ -67,10 +65,6 @@ Current 1.0 boundary:
- checks for likely meaning reversal or semantic contradiction.
- `editorial_review`
- performs conservative editorial safety review.
- `grammar_review`
- checks grammar-stage proposals for grammar-focused safety constraints.
- `spoken_word_review`
- checks spoken-word-stage proposals for dysfluency-cleanup safety constraints.
## Built-in module chains
@@ -100,7 +94,7 @@ Current built-in chains resolved from `internal/validators/chains.go`:
- `confidence_threshold`
- `protected_terms`
- `non_empty_corrected_text`
- `spoken_word_review`
- `editorial_review`
- `meaning_reversal_review`
- `grammar`
@@ -109,7 +103,7 @@ Current built-in chains resolved from `internal/validators/chains.go`:
- `confidence_threshold`
- `protected_terms`
- `non_empty_corrected_text`
- `grammar_review`
- `editorial_review`
- `meaning_reversal_review`
## Protected terms construction

View File

@@ -52,8 +52,6 @@ func buildCorrectionLedger(runDirPath string, runOutput *runner.RunOutput) []cor
"spoken_form_plausibility": true,
"meaning_reversal_review": true,
"editorial_review": true,
"grammar_review": true,
"spoken_word_review": true,
}
for _, module := range runOutput.ModuleResults {

View File

@@ -3564,8 +3564,8 @@ func TestRunProcessExplicitSpokenWordMeaningChangingCleanupRejected(t *testing.T
if len(module.ValidatorRejected) != 1 {
t.Fatalf("expected one semantic guardrail rejection, got %+v", module.ValidatorRejected)
}
if module.ValidatorRejected[0].ValidatorName != "spoken_word_review" {
t.Fatalf("expected spoken_word_review rejection, got %+v", module.ValidatorRejected[0])
if module.ValidatorRejected[0].ValidatorName != "editorial_review" {
t.Fatalf("expected editorial_review rejection, got %+v", module.ValidatorRejected[0])
}
}

View File

@@ -14,6 +14,6 @@
"total_skipped_changes": 1,
"validator_rejected_reason_codes": ["llm_rejected"],
"expected_proposal_calls": ["grammar:proposal"],
"expected_validation_calls": ["grammar:section-0000:grammar_review:batch-0000"]
"expected_validation_calls": ["grammar:section-0000:editorial_review:batch-0000"]
}
}

View File

@@ -136,7 +136,7 @@ func TestGrammarModuleValidatorChain(t *testing.T) {
"confidence_threshold",
"protected_terms",
"non_empty_corrected_text",
"grammar_review",
"editorial_review",
"meaning_reversal_review",
}
if strings.Join(got, ",") != strings.Join(want, ",") {

View File

@@ -137,7 +137,7 @@ func TestSpokenWordModuleValidatorChain(t *testing.T) {
"confidence_threshold",
"protected_terms",
"non_empty_corrected_text",
"spoken_word_review",
"editorial_review",
"meaning_reversal_review",
}
if strings.Join(got, ",") != strings.Join(want, ",") {

View File

@@ -32,7 +32,7 @@ var builtInChains = map[string][]string{
KeyConfidenceThreshold,
KeyProtectedTerms,
KeyNonEmptyCorrectedText,
KeySpokenWordReview,
KeyEditorialReview,
KeyMeaningReversalReview,
},
"grammar": {
@@ -41,7 +41,7 @@ var builtInChains = map[string][]string{
KeyConfidenceThreshold,
KeyProtectedTerms,
KeyNonEmptyCorrectedText,
KeyGrammarReview,
KeyEditorialReview,
KeyMeaningReversalReview,
},
}

View File

@@ -1,17 +0,0 @@
package grammar_review
import (
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
frameworkvalidators "gitea.maximumdirect.net/eric/audita/internal/framework/validators"
validatormetadata "gitea.maximumdirect.net/eric/audita/internal/validators/metadata"
)
const Key = "grammar_review"
func New() (contracts.Validator, error) {
v, err := frameworkvalidators.NewLLMBackedValidator(Key, frameworkvalidators.LLMValidatorTypeGrammarReview, "")
if err != nil {
return nil, err
}
return validatormetadata.Wrap(v, validatormetadata.ExecutionClassLLMBacked), nil
}

View File

@@ -7,14 +7,12 @@ import (
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
"gitea.maximumdirect.net/eric/audita/internal/validators/confidence_threshold"
"gitea.maximumdirect.net/eric/audita/internal/validators/editorial_review"
"gitea.maximumdirect.net/eric/audita/internal/validators/grammar_review"
"gitea.maximumdirect.net/eric/audita/internal/validators/meaning_reversal_review"
"gitea.maximumdirect.net/eric/audita/internal/validators/no_effect"
"gitea.maximumdirect.net/eric/audita/internal/validators/non_empty_corrected_text"
"gitea.maximumdirect.net/eric/audita/internal/validators/original_text_presence"
"gitea.maximumdirect.net/eric/audita/internal/validators/protected_terms"
"gitea.maximumdirect.net/eric/audita/internal/validators/spoken_form_plausibility"
"gitea.maximumdirect.net/eric/audita/internal/validators/spoken_word_review"
)
const (
@@ -27,8 +25,6 @@ const (
KeySpokenFormPlausibility = "spoken_form_plausibility"
KeyMeaningReversalReview = "meaning_reversal_review"
KeyEditorialReview = "editorial_review"
KeyGrammarReview = "grammar_review"
KeySpokenWordReview = "spoken_word_review"
)
type BuiltInValidatorDefinition struct {
@@ -51,8 +47,6 @@ func NewBuiltInRegistry() *Registry {
{Key: KeySpokenFormPlausibility, LLMBacked: true, Build: spoken_form_plausibility.New},
{Key: KeyMeaningReversalReview, LLMBacked: true, Build: meaning_reversal_review.New},
{Key: KeyEditorialReview, LLMBacked: true, Build: editorial_review.New},
{Key: KeyGrammarReview, LLMBacked: true, Build: grammar_review.New},
{Key: KeySpokenWordReview, LLMBacked: true, Build: spoken_word_review.New},
}
m := make(map[string]BuiltInValidatorDefinition, len(defs))

View File

@@ -9,7 +9,6 @@ import (
"gitea.maximumdirect.net/eric/audita/internal/framework/proposals"
"gitea.maximumdirect.net/eric/audita/internal/validators/confidence_threshold"
"gitea.maximumdirect.net/eric/audita/internal/validators/editorial_review"
"gitea.maximumdirect.net/eric/audita/internal/validators/grammar_review"
"gitea.maximumdirect.net/eric/audita/internal/validators/meaning_reversal_review"
validatormetadata "gitea.maximumdirect.net/eric/audita/internal/validators/metadata"
"gitea.maximumdirect.net/eric/audita/internal/validators/no_effect"
@@ -17,7 +16,6 @@ import (
"gitea.maximumdirect.net/eric/audita/internal/validators/original_text_presence"
"gitea.maximumdirect.net/eric/audita/internal/validators/protected_terms"
"gitea.maximumdirect.net/eric/audita/internal/validators/spoken_form_plausibility"
"gitea.maximumdirect.net/eric/audita/internal/validators/spoken_word_review"
)
func TestBuiltInRegistryRegistersAllKeys(t *testing.T) {
@@ -31,8 +29,6 @@ func TestBuiltInRegistryRegistersAllKeys(t *testing.T) {
KeySpokenFormPlausibility,
KeyMeaningReversalReview,
KeyEditorialReview,
KeyGrammarReview,
KeySpokenWordReview,
} {
def, ok := r.Lookup(key)
if !ok {
@@ -64,8 +60,6 @@ func TestBuiltInValidatorPackagesConstruct(t *testing.T) {
{name: "spoken_form_plausibility", key: KeySpokenFormPlausibility, build: spoken_form_plausibility.New, wantClass: validatormetadata.ExecutionClassLLMBacked},
{name: "meaning_reversal_review", key: KeyMeaningReversalReview, build: meaning_reversal_review.New, wantClass: validatormetadata.ExecutionClassLLMBacked},
{name: "editorial_review", key: KeyEditorialReview, build: editorial_review.New, wantClass: validatormetadata.ExecutionClassLLMBacked},
{name: "grammar_review", key: KeyGrammarReview, build: grammar_review.New, wantClass: validatormetadata.ExecutionClassLLMBacked},
{name: "spoken_word_review", key: KeySpokenWordReview, build: spoken_word_review.New, wantClass: validatormetadata.ExecutionClassLLMBacked},
}
for _, tc := range cases {
@@ -88,8 +82,6 @@ func TestRegistryBuildsClassifiedValidators(t *testing.T) {
KeySpokenFormPlausibility: true,
KeyMeaningReversalReview: true,
KeyEditorialReview: true,
KeyGrammarReview: true,
KeySpokenWordReview: true,
}
for _, key := range r.RegisteredKeys() {
v, err := r.MustBuild(key)

View File

@@ -1,17 +0,0 @@
package spoken_word_review
import (
"gitea.maximumdirect.net/eric/audita/internal/framework/contracts"
frameworkvalidators "gitea.maximumdirect.net/eric/audita/internal/framework/validators"
validatormetadata "gitea.maximumdirect.net/eric/audita/internal/validators/metadata"
)
const Key = "spoken_word_review"
func New() (contracts.Validator, error) {
v, err := frameworkvalidators.NewLLMBackedValidator(Key, frameworkvalidators.LLMValidatorTypeSpokenWordReview, "")
if err != nil {
return nil, err
}
return validatormetadata.Wrap(v, validatormetadata.ExecutionClassLLMBacked), nil
}