Activate environment first:
source ~/anaconda3/etc/profile.d/conda.sh && conda activate jacpython run_pipeline.py --validate-onlypython run_pipeline.py # full run (fetch + extract + assemble + validate)python run_pipeline.py --validate-only --jsonProgress lines print to stdout during execution. A structured JSON summary is always printed at the end between delimiters:
---JSON_SUMMARY---
{ ... }
---END_SUMMARY---
success(bool): overall pass/failvalidation.recommendation:"PASS"or"REVIEW"validation.strict.failed: number of code blocks that failedjac checkvalidation.strict.errors: list of error details (up to 10)validation.syntax.incorrect: list of syntax patterns that don't match canonical Jacvalidation.patterns.missing: required patterns not found in outputoutput_path: path to the generated candidate file
0= validation passed1= validation failed (checkvalidationin JSON)2= pipeline error (checkerrorin JSON)
- Fetch - pulls source docs, sanitizes markdown
- Extract - deterministic signature/example extraction (no LLM)
- Assemble - single LLM call to produce final reference doc
- Validate - strict
jac checkon all code blocks + syntax verification
| File | Purpose |
|---|---|
run_pipeline.py |
CLI entry point |
config/config.yaml |
Pipeline config (model, source dirs) |
config/rag_rules.txt |
LLM prompt template |
src/pipeline/validator.py |
Code block validation via jac check |
src/pipeline/docs_validator.py |
Canonical syntax pattern checks |
release/jac-llmdocs.md |
Generated output |
release/jac-llmdocs.validation.json |
Validation results |
run --validate-only
|
v
recommendation == "PASS"? --> read release/jac-llmdocs.md, done
|
no
v
check validation.strict.errors --> fix rag_rules.txt or validator
|
v
check validation.syntax.incorrect --> fix rag_rules.txt rules
|
v
re-run pipeline and validate again