Repository navigation
35 merged changes since v2.10.0. Three areas: the CICS harness and the porting loop, a rework of several extraction internals, and the move of the language-crucible pin to v1.6.0.
CICS harness and the porting loop
-
What changed. The CICS harness now models:
- the condition machinery:
HANDLE/IGNORE CONDITION,RESP/NOHANDLE,HANDLE ABEND,PUSH/POP(#4003); LINKwith program levels and a by-referenceCOMMAREA(#4004);- terminal
RECEIVEof unformatted input (#4005); - interval control on a virtual clock:
START/RETRIEVE/CANCEL(#4006); HANDLE AID(#4007);XCTL RESP/RESP2andLENGTH(#4008);- temporary-storage queues (#4002).
CicsTaskrecordsSEND TEXTlength and options,RECEIVE MAPandEIBCALEN(#4009). BMS output fidelity was fixed in the stub (9 cells, #4001). - the condition machinery:
-
Porting. The CICS crucible (pinned at v0.2.0: 44 scenarios, every program covered) has its 17 programs ported through the porting loop (#3989, #4025, #4032). Per-program COBOL paragraph and branch coverage is reported for the CICS crucible, CardDemo and cobol4j (#4023). An unattended model run proved 5 CardDemo programs (#4040). CardDemo
POSTTRAN(CBTRN02C) is ported and proven, error paths included (#4033). -
COBOL fixes:
- alphanumeric comparison follows mainframe rules (
CobolCompare, #3986); - double-byte (DBCS) characters are kept whole when a text field is too wide (#3985);
CobolRecords/CobolEditare generated for every program to port (#4039);- COBOL words keep full-width digits and hyphens (#3991);
- the graveyard finder reads non-ASCII and
END-xxxparagraph names (#4026); layout_fieldsexpands a nestedCOPYinstead of shifting later fields (#4010, #4013);dto_shaperesolves a class by its package (#4014);- no-scan lineage reads
SELECTwith the engine's reader (#3998); - the no-JCL batch controller no longer names an undefined
<File>DTO(#3992); - the port ticket names the program's
DECIMAL-POINT(#3984).
- alphanumeric comparison follows mainframe rules (
Extraction internals (#4044)
-
What changed:
- C-family preprocessor: one module-level pass (
_preproc_line_liveness) now decides each line's directive and liveness status for both the brace-safe stream and dead-branch blanking. Statically true or false#if/#elifliterals prune the dead side; unknown conditions keep both. - C++ digit separators (
512'000,0xDE'AD) are claimed as literals before char-literal matching, in comment stripping and in the brace-safe stream. - Go: bodyless function declarations get their own span.
- TypeScript/JavaScript:
- the arrow-function branch was reworked;
- anonymous
async () =>callback arguments are no longer namedasync; - two gates drop ternary true-branches and parameter function-type annotations.
- C#:
class_startacceptsreadonly/refstruct modifiers. - C++:
func_startrecognises out-of-lineoperator()and conversion operators. - Archetypes:
_classify_archetypereturnsUnclassifiedon a vector/centroid width mismatch.
- C-family preprocessor: one module-level pass (
-
Golden masters. Re-blessed for one commit only: 27 values per mode. Two causes:
- the dead-branch count path keeps the
#else/#endifthat closes a dead branch, as its docstring specifies (Preprocessor Macros +1 in a few files, e.g.doom/m_fixed.c); - continuation lines of a directive written
# defineare recognised as macro body (racket/eval.c).
Tree-sitter accuracy is unchanged in all 30 languages.
- the dead-branch count path keeps the
-
action.ymlpasses inputs to its scripts only through step environment variables, and splits the args input withread -a(noeval). -
site/app.pybinds the dev server to loopback unless in development mode;GITGALAXY_BIND_HOSToverrides it.
Corpus pin and dependencies
- language-crucible pin: moved to v1.6.0 (#4043). That release verified every corpus file against its upstream source, restored one locally patched COBOL file, and replaced an unlicensed folder. Golden masters and the comparison charts were regenerated against it. The restored
CBTRN03C.cblnow registers itsNEXT SENTENCEsafety bypass (0 → 1). - urllib3: 2.7.0 → 2.8.0 (GHSA-8988-9cw3-xx77, GHSA-vxq7-64xx-v4gw; #4042).
Known limitations
- Path-dependent results. Scan results currently depend on the scanned checkout's absolute path: a parent directory named like an entry in the aperture denylist (for example
tmp) changes documentation exposure (#4058). CI is unaffected because it always uses the same layout. - TS/JS spans. Matches dropped by the TS/JS gates still bound the preceding function's search window, so that function's span can end early at the dropped match.
- C++ char literals are bounded to 16 characters on one line. Longer named-escape literals are not shielded.
- Missing tags. The tags for PyPI versions 1.1.1, 1.1.2, 1.1.3 and 2.2.0 were overwritten by unrelated tags from a forked action and have been removed. Those four versions currently have no git tag.