# Changelog

## Score

- CAI 50 → 51 (+0.5)
- Rubric changed (rubric-2026.08.17 → rubric-2026.08.19) — scores are not directly comparable.

## Lenses

- Code Health 98 → 86 (-12.3)
- Architecture 100 → 100 (+0.0)
- Maturity 30 → 33 (+3.1)
- Readiness 56 → 56 (+0.0)
- Security 67 → 67 (+0.0)

## Resolved (11)

- Coverage not measured — test suite did not build
- Duplicated block (10 lines × 2) (src/FsLex.Core/fslexdriver.fs)
- Duplicated block (12 lines × 2) (src/FsLex.Core/fslexdriver.fs)
- Duplicated block (7 lines × 2) (src/FsLex.Core/fslexlex.fs)
- Duplicated block (7 lines × 2) (src/FsLex.Core/fslexlex.fs)
- Duplicated block (8 lines × 2) (src/FsLex/fslex.fs)
- Duplicated block (9 lines × 2) (src/FsYacc.Core/fsyaccast.fs)
- Further orphaned files (smaller)
- LLM evaluation failed
- Off-boarding risk: anonymized user #1
- Orphaned knowledge (src/FsLexYacc.Runtime/Lexing.fs)

## New (15)

- Coverage not measured — test suite did not build
- Duplicated block (10 lines × 2) (src/FsLex.Core/fslexdriver.fs)
- Duplicated block (12 lines × 2) (src/FsLex.Core/fslexdriver.fs)
- Duplicated block (6 lines × 2) (src/FsLex.Core/fslexlex.fs)
- Duplicated block (6 lines × 2) (src/FsLex.Core/fslexlex.fs)
- Duplicated block (7 lines × 2) (src/FsLex/fslex.fs)
- Duplicated block (8 lines × 2) (src/FsYacc.Core/fsyaccast.fs)
- FileTooLong: FsLex.Core/fslexlex.fs (src/FsLex.Core/fslexlex.fs)
- FileTooLong: FsYacc.Core/fsyaccast.fs (src/FsYacc.Core/fsyaccast.fs)
- FileTooLong: FsYacc.Core/fsyaccdriver.fs (src/FsYacc.Core/fsyaccdriver.fs)
- FileTooLong: FsYacc.Core/fsyacclex.fs (src/FsYacc.Core/fsyacclex.fs)
- Off-boarding risk: anonymized user #1
- PR-triggered workflow without a permissions block
- Secret passed as a command-line argument
- The header/trailer section of the lexer is described but no example shows how headers are used (e.g. declaring values/functions in the header). (docs/content/fslex.md)
