Skip to content

Introduce yet-check Command#332

Merged
jhnaldo merged 8 commits into
devfrom
refactor-yet-phrase
Jan 2, 2026
Merged

Introduce yet-check Command#332
jhnaldo merged 8 commits into
devfrom
refactor-yet-phrase

Conversation

@jhnaldo
Copy link
Copy Markdown
Contributor

@jhnaldo jhnaldo commented Jan 2, 2026

To resolve #289, we added the following yet-check command:

esmeta yet-check -yet-check:log -yet-check:github-alert 2aebcc64^ 2aebcc64
result
========================================
 yet-check phase
----------------------------------------
Extracting the 'from' specification from: `2aebcc64^`
Extracting the 'to' specification from: `2aebcc64`
4 total diffs found.
0 diffs excluded for steps.
0 diffs excluded for types.
- Dumped not yet supported steps into `/Users/naldo/project/esmeta/logs/yet-check/yet-steps.json` in a JSON format.
- Dumped not yet supported types into `/Users/naldo/project/esmeta/logs/yet-check/yet-types.json` in a JSON format.
- Dumped summary for not yet supported steps and types into `/Users/naldo/project/esmeta/logs/yet-check/summary.md` .
::warning file=spec.html,line=42957,title=Newly Introduced Unknown Step::This step in INTRINSICS.Uint8Array.fromBase64 cannot be understood by ESMeta. Type check for this algorithm will not be performed after this line.
::warning file=spec.html,line=42972,title=Newly Introduced Unknown Step::This step in INTRINSICS.Uint8Array.fromHex cannot be understood by ESMeta. Type check for this algorithm will not be performed after this line.
::warning file=spec.html,line=43048,title=Newly Introduced Unknown Step::This step in INTRINSICS.Uint8Array.prototype.toBase64 cannot be understood by ESMeta. Type check for this algorithm will not be performed after this line.
::warning file=spec.html,line=43051,title=Newly Introduced Unknown Step::This step in INTRINSICS.Uint8Array.prototype.toBase64 cannot be understood by ESMeta. Type check for this algorithm will not be performed after this line.
::warning file=spec.html,line=43063,title=Newly Introduced Unknown Step::This step in INTRINSICS.Uint8Array.prototype.toHex cannot be understood by ESMeta. Type check for this algorithm will not be performed after this line.
::warning file=spec.html,line=43192,title=Newly Introduced Unknown Step::This step in DecodeFullLengthBase64Chunk cannot be understood by ESMeta. Type check for this algorithm will not be performed after this line.
::warning file=spec.html,line=43193,title=Newly Introduced Unknown Step::This step in DecodeFullLengthBase64Chunk cannot be understood by ESMeta. Type check for this algorithm will not be performed after this line.
::warning file=spec.html,line=43271,title=Newly Introduced Unknown Step::This step in FromBase64 cannot be understood by ESMeta. Type check for this algorithm will not be performed after this line.
::warning file=spec.html,line=43274,title=Newly Introduced Unknown Step::This step in FromBase64 cannot be understood by ESMeta. Type check for this algorithm will not be performed after this line.
::warning file=spec.html,line=43308,title=Newly Introduced Unknown Step::This step in FromHex cannot be understood by ESMeta. Type check for this algorithm will not be performed after this line.
::warning file=spec.html,line=43312,title=Newly Introduced Unknown Step::This step in FromHex cannot be understood by ESMeta. Type check for this algorithm will not be performed after this line.
::warning file=spec.html,line=43093,title=Newly Introduced Unknown Type::The type "either a normal completion containing a List of byte values or a throw completion" used in GetUint8ArrayBytes is unknown type which ESMeta cannot understand. This type will be treated as bottom (⊥) type initially but will be joined with argument types when the algorithm is called.
::warning file=spec.html,line=43117,title=Newly Introduced Unknown Type::The type "a List of byte values" used in SetUint8ArrayBytes is unknown type which ESMeta cannot understand. This type will be treated as bottom (⊥) type initially but will be joined with argument types when the algorithm is called.
::warning file=spec.html,line=43159,title=Newly Introduced Unknown Type::The type "either a normal completion containing a List of byte values, or a throw completion" used in DecodeFinalBase64Chunk is unknown type which ESMeta cannot understand. This type will be treated as bottom (⊥) type initially but will be joined with argument types when the algorithm is called.
::warning file=spec.html,line=43157,title=Newly Introduced Unknown Type::The type "a String of length 2 or 3" used in DecodeFinalBase64Chunk is unknown type which ESMeta cannot understand. This type will be treated as bottom (⊥) type initially but will be joined with argument types when the algorithm is called.
::warning file=spec.html,line=43186,title=Newly Introduced Unknown Type::The type "a List of byte values of length 3" used in DecodeFullLengthBase64Chunk is unknown type which ESMeta cannot understand. This type will be treated as bottom (⊥) type initially but will be joined with argument types when the algorithm is called.
::warning file=spec.html,line=43185,title=Newly Introduced Unknown Type::The type "a String of length 4" used in DecodeFullLengthBase64Chunk is unknown type which ESMeta cannot understand. This type will be treated as bottom (⊥) type initially but will be joined with argument types when the algorithm is called.
::warning file=spec.html,line=43204,title=Newly Introduced Unknown Type::The type "a Record with fields [[Read]] (an integer), [[Bytes]] (a List of byte values), and [[Error]] (a *SyntaxError* object or ~none~)" used in FromBase64 is unknown type which ESMeta cannot understand. This type will be treated as bottom (⊥) type initially but will be joined with argument types when the algorithm is called.
::warning file=spec.html,line=43201,title=Newly Introduced Unknown Type::The type "*"base64"* or *"base64url"*" used in FromBase64 is unknown type which ESMeta cannot understand. This type will be treated as bottom (⊥) type initially but will be joined with argument types when the algorithm is called.
::warning file=spec.html,line=43202,title=Newly Introduced Unknown Type::The type "*"loose"*, *"strict"*, or *"stop-before-partial"*" used in FromBase64 is unknown type which ESMeta cannot understand. This type will be treated as bottom (⊥) type initially but will be joined with argument types when the algorithm is called.
::warning file=spec.html,line=43294,title=Newly Introduced Unknown Type::The type "a Record with fields [[Read]] (an integer), [[Bytes]] (a List of byte values), and [[Error]] (a *SyntaxError* object or ~none~)" used in FromHex is unknown type which ESMeta cannot understand. This type will be treated as bottom (⊥) type initially but will be joined with argument types when the algorithm is called.
Found 11 yet-steps and 10 yet-types.

It takes two specification versions (e.g., git commit hashes or tags) as input and reports the steps and types that are newly introduced in the "to" specification compared to the "from" specification. The output includes GitHub warning annotations that can be directly used in GitHub Actions to highlight the unsupported steps and types in pull requests.

The main difference from the existing yet-checker is that this command ignores the steps and types that are already unsupported in the "from" specification. For each pair of "removed" and "added" lines in the diff of the spec, if the "removed" lines contain unsupported steps (or types), then the corresponding "added" lines are ignored even if they contain unsupported steps (or types).

The diff chunks are often divided into unusual chunks because of the large context changes in the surrounding lines. To handle this, we merge adjacent diff chunks if they are close enough defined by a threshold (default: 1 line). You can adjust this threshold using the -yet-check:merge-threshold option.

Additionally, it dumps the summary file summary.md and the detailed JSON files yet-steps.json and yet-types.json in the logs/yet-check directory for further investigation. For example, the following table is included in the summary.md file generated in the above example:

summary.md

Newly Introduced Yet Steps

11 newly introduced yet steps found.
Type check will not be performed after these lines.

# Line Algorithm Step
1 42957 INTRINSICS.Uint8Array.fromBase64 Set the value at each index of _ta_.[[ViewedArrayBuffer]].[[ArrayBufferData]] to the value at the corresponding index of _result_.[[Bytes]].
2 42972 INTRINSICS.Uint8Array.fromHex Set the value at each index of _ta_.[[ViewedArrayBuffer]].[[ArrayBufferData]] to the value at the corresponding index of _result_.[[Bytes]].
3 43048 INTRINSICS.Uint8Array.prototype.toBase64 Let _outAscii_ be the sequence of code points which results from encoding _toEncode_ according to the base64 encoding specified in section 4 of <a href="https://datatracker.ietf.org/doc/html/rfc4648">RFC 4648</a>. Padding is included if and only if _omitPadding_ is *false*.
4 43051 INTRINSICS.Uint8Array.prototype.toBase64 Let _outAscii_ be the sequence of code points which results from encoding _toEncode_ according to the base64url encoding specified in section 5 of <a href="https://datatracker.ietf.org/doc/html/rfc4648">RFC 4648</a>. Padding is included if and only if _omitPadding_ is *false*.
5 43063 INTRINSICS.Uint8Array.prototype.toHex For each byte _byte_ of _toEncode_, do [...]
6 43192 DecodeFullLengthBase64Chunk Let _byteSequence_ be the unique sequence of 3 bytes resulting from decoding _chunk_ as base64 (i.e., the sequence such that applying the base64 encoding specified in section 4 of <a href="https://datatracker.ietf.org/doc/html/rfc4648">RFC 4648</a> to _byteSequence_ would produce _chunk_).
7 43193 DecodeFullLengthBase64Chunk Return a List whose elements are the elements of _byteSequence_, in order.
8 43271 FromBase64 if the sole code unit of _char_ is not an element of the standard base64 alphabet, then [...]
9 43274 FromBase64 Let _remaining_ be _maxLength_ - the number of elements in _bytes_.
10 43308 FromHex if _hexits_ contains any code units which are not in *"0123456789abcdefABCDEF"*, then [...]
11 43312 FromHex Let _byte_ be the integer value represented by _hexits_ in base-16 notation, using the letters *A* through *F* and *a* through *f* for digits with values 10 through 15.

Newly Introduced Yet Types

10 newly introduced yet types found.
These types will be treated as bottom (⊥) type initially but will be joined with argument types when the algorithm is called.

# Line Algorithm Type
1 43093 GetUint8ArrayBytes either a normal completion containing a List of byte values or a throw completion
2 43117 SetUint8ArrayBytes a List of byte values
3 43159 DecodeFinalBase64Chunk either a normal completion containing a List of byte values, or a throw completion
4 43157 DecodeFinalBase64Chunk a String of length 2 or 3
5 43186 DecodeFullLengthBase64Chunk a List of byte values of length 3
6 43185 DecodeFullLengthBase64Chunk a String of length 4
7 43204 FromBase64 a Record with fields [[Read]] (an integer), [[Bytes]] (a List of byte values), and [[Error]] (a *SyntaxError* object or ~none~)
8 43201 FromBase64 *"base64"* or *"base64url"*
9 43202 FromBase64 *"loose"*, *"strict"*, or *"stop-before-partial"*
10 43294 FromHex a Record with fields [[Read]] (an integer), [[Bytes]] (a List of byte values), and [[Error]] (a *SyntaxError* object or ~none~)

@jhnaldo jhnaldo merged commit 6656e41 into dev Jan 2, 2026
6 checks passed
@jhnaldo jhnaldo deleted the refactor-yet-phrase branch January 2, 2026 14:03
@jhnaldo jhnaldo added new feature Implements a new feature area:spec Related to specifications labels Jan 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:spec Related to specifications new feature Implements a new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant