add docs and AI skills
This commit is contained in:
@@ -0,0 +1,54 @@
|
||||
# EFTL verification matrix
|
||||
|
||||
## Core matrix
|
||||
|
||||
| Area | Positive cases | Negative and recovery cases |
|
||||
| --- | --- | --- |
|
||||
| Roots | one and multiple EFTL fragments with surrounding user text | close without open, missing close, nested roots if forbidden by confirmed grammar |
|
||||
| Blocks | correctly nested VAR, IF, WHILE, functions, expressions, comments | crossing closes, incomplete close, unexpected close, unfinished or unknown `[` construct; assert termination |
|
||||
| Attributes | documented required and optional attributes in varied order | missing required, duplicate, unknown, unquoted, invalid enum/boolean/number |
|
||||
| IF | condition + then, repeated else-if, optional final else | missing condition/then, else before then, duplicate else, branch after else |
|
||||
| WHILE | condition + do, confirmed threshold boundaries | missing child, reversed order, invalid threshold, incomplete body |
|
||||
| FOR | iterable variable and scoped loop variable | missing attributes, unknown iterable when statically knowable, reference after scope |
|
||||
| Expressions | assignment, evaluation, output, supported literals/operators | unterminated block, malformed operator, missing semicolon where required |
|
||||
| Functions | bodyless and block variants, precedence rules | mutually exclusive inputs, wrong body shape, invalid literal regex |
|
||||
| TAG payload | minimal and full positional forms | missing mandatory position, invalid literal enum, preserved empty positions |
|
||||
| Variables | declaration, reference, shadowing policy, iterable index | invalid type, duplicate declaration policy, undefined reference, invalid index type |
|
||||
|
||||
For every tag keyword, test the exact boundary after its name so a longer unknown name such as `[VARIABLE]` is not classified as `[VAR ...]`.
|
||||
|
||||
Only assert rules confirmed by the PDFs or runtime grammar. Keep ambiguous rules as pending cases rather than opinionated errors.
|
||||
|
||||
## Range matrix
|
||||
|
||||
Exercise each diagnostic at:
|
||||
|
||||
- first character and end of file;
|
||||
- after ASCII and non-ASCII text;
|
||||
- on a later line with LF and CRLF;
|
||||
- inside a multiline token or comment;
|
||||
- after an incremental edit that changes preceding line lengths.
|
||||
|
||||
LSP positions are zero-based UTF-16 line/character pairs. Prefer storing source offsets internally and converting with the current `TextDocument` at publication time.
|
||||
|
||||
## Editor matrix
|
||||
|
||||
When syntax changes, inspect:
|
||||
|
||||
- language activation and file association;
|
||||
- TextMate scope on open name, close name, attributes, strings, and delimiters;
|
||||
- bracket matching and auto-closing;
|
||||
- folding start/end markers;
|
||||
- snippet insertion and tab stops;
|
||||
- go-to-definition selection range;
|
||||
- consistency of examples and README syntax.
|
||||
|
||||
## Release evidence
|
||||
|
||||
Record:
|
||||
|
||||
1. exact commands executed;
|
||||
2. automated pass/fail totals;
|
||||
3. Extension Development Host scenarios checked;
|
||||
4. known baseline failures reproduced independently;
|
||||
5. unverified runtime semantics or ambiguous documentation.
|
||||
Reference in New Issue
Block a user