This repository was archived by the owner on Nov 15, 2025. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
This repository was archived by the owner on Nov 15, 2025. It is now read-only.
[Feature] Guideline Reinforcement Engine – Enforce Prompt Rules in Markdown, YAML, SudoLang #19
Copy link
Copy link
Open
Open
Feature
Copy link
Description
Problem
bbeval opt must generate structured, compliant prompts in Markdown, YAML, or SudoLang, while enforcing company guidelines (attached via --guidelines) Invalid prompts (missing {{examples}}, banned phrases, wrong format) must be rejected during optimization.
Proposed Solution
Add a multi-format Guideline Reinforcement Engine to bbeval opt that:
- Validates every candidate before scoring
- Supports Markdown, YAML, and SudoLang output
- Enforces format-specific rules via
--guidelines(YAML)
CLI Usage
bbeval opt tests.yaml base.prompt.md \
--mode direct-llm \
--guidelines constraints.yaml \
--format markdown \
--output optimized.prompt.mdconstraints.yaml (Format-Agnostic + Format-Specific)
# Global
required_placeholders:
- "{{task}}"
- "{{guidelines}}"
banned_phrases:
- "never"
- "always avoid"
max_tokens: 500
# Format: Markdown
markdown:
required_headers:
- "# Task"
- "## Output"
required_tools_in_frontmatter: true
no_universal_concepts: true # Ban SOLID, PascalCase, etc.
# Format: YAML
yaml:
required_keys:
- persona
- workflow
- output
no_inheritance: true # Ban `extends`, `class`
# Format: SudoLang
sudolang:
no_class_keywords: true
prefer_natural_language: true
required_constraints_block: true
lint_rules: true # Auto-run SudoLang linterSupported Output Formats
| Format | When to Use | Validation |
|---|---|---|
| Markdown (default) | Single workflow, clear steps | Headers, frontmatter, placeholders |
| YAML | Multi-workflow, context-aware | Keys, no class, composition |
| SudoLang | Loops, branching, state | No new, constraints, lint |
Auto-selection:
bbeval optpicks simplest format that fits logic (Markdown > YAML > SudoLang).
Enforcement Flow
def validate_candidate(prompt_str: str, format: str) -> (bool, str):
# 1. Parse (Markdown → AST, YAML → dict, SudoLang → lint)
# 2. Check global rules (tokens, phrases)
# 3. Check format-specific rules
# In optimizer:
if not validate_candidate(candidate, format):
score = 0.0 # Reject earlyExample: Optimized Markdown Output
---
description: 'SQL schema review'
mode: 'ask'
tools: ['runInTerminal', 'getTerminalOutput']
---
# SQL Schema Reviewer
You are a senior DBA with 15 years in fintech.
## Task
Review `${selection}` for compliance with internal SQL standards.
{{guidelines}}
## Instructions
1. Run `EXPLAIN` via terminal
2. Check for missing indexes
3. Suggest fixes only if critical
## Output
```diff
- Old
+ NewSudoLang Linter Integration
# constraints.yaml
sudolang:
lint: true→ Auto-runs:
Lint { style constraints { * obey style guide; prohibit (class) } }
Metadata
Metadata
Assignees
Labels
No labels