Standardized the grammar and spoken_word modules on a shared editorial_review validator
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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])
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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"]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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, ",") {
|
||||
|
||||
@@ -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, ",") {
|
||||
|
||||
@@ -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,
|
||||
},
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
@@ -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))
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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
|
||||
}
|
||||
Reference in New Issue
Block a user