Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions docs/language_status/jcl.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,38 @@ directly by `tri_comparison_chart.py` to render the `**` marker and award GitGal
`docs/self_scan/how_to_investigate_a_discrepancy.md` for the methodology and the
`tri-comparison-ledger-sweep` skill's manual-verification fallback for the procedure.

### 2026-08-30: re-verified against the v1.2.0 corpus expansion

`language-crucible` v1.2.0 (pin bumped in [#2478](https://github.com/squid-protocol/gitgalaxy/pull/2478))
added one `.jcl` file — `cics-java-jcics-samples/etc_VSAM_DEFVSAM.jcl`, an IDCAMS VSAM-cluster
define job — bringing JCL's corpus to **186 `.jcl` files across 6 repos** (185 pipeline-scanned).
#2478 bumped the pin without refreshing `manual_verification.json`, so the 2026-08-29 record
(`375 / 117`) went stale against the pinned corpus and JCL's precision panels dropped back to a
bare `0/376` / `0/118` with no badge. This pass re-established the record.

**Method.** The same three independent readings as the 2026-08-29 pass, over the whole v1.2.0
corpus: GitGalaxy's own `func_start` / `class_start` regex; an independent line scanner sharing no
implementation; and a `galaxyscope --db-only` pipeline cross-check (`struct_*` vs. `*_count` vs.
`function_data` / `class_data` row counts), per file.

| Signature | Corpus truth | Independent scanner | Pipeline | False positives | Misses |
| :--- | :---: | :---: | :---: | :---: | :---: |
| `func_start` (EXEC steps) | **376 / 376** | 376 | 376 | 0 | 0 |
| `class_start` (JOB cards) | **118 / 118** | 118 | 118 | 0 | 0 |

- The single new file contributes exactly **one EXEC step** (`//DEFINE EXEC PGM=IDCAMS`) and
**one JOB card** (`//DEFVSAM JOB`). Its instream IDCAMS control statements (`DELETE`,
`DEFINE CLUSTER`) between `//SYSIN DD *` and `/*` are correctly **not** matched — the same
SYSIN-payload rejection the 2026-08-29 pass verified, holding on new content.
- Net effect of the v1.2.0 expansion is `+1 / +1`. No engine change, no new defect, no
regression: every other JCL count is identical to the 2026-08-29 reading, and per-file
`struct_*` still equals the raw regex count on every scanned file.
- `DFH$SIP1.jcl` remains the one correctly-unscanned `.jcl` (SIP parameter deck, `*`-prefixed
lines, zero real signatures).

**Chart records** (`manual_verification.json`, `2026-08-30`): Functions `376 / 376`, Classes
`118 / 118`. Args unchanged — still `none`-granularity, no entry.

### 2026-08-29: re-verified against the v1.1.0 corpus expansion

`language-crucible` v1.1.0 (pin bumped in [#2398](https://github.com/squid-protocol/gitgalaxy/pull/2398))
Expand Down
16 changes: 8 additions & 8 deletions docs/self_scan/manual_verification.json
Original file line number Diff line number Diff line change
Expand Up @@ -50,17 +50,17 @@
},
"jcl": {
"class": {
"note": "class_start (JCL JOB cards) verified against the full language-crucible v1.1.0 corpus (185 .jcl files, 5 repos). Two independent checks over all 184 pipeline-scanned files: (1) GitGalaxy's class_start regex vs. an independent JOB-card grep (^//[A-Za-z0-9@#$][A-Za-z0-9@#$]{0,7}[ \\t]+JOB([ \\t]|$), no shared implementation, independently rejects //*-commented job cards) -- exact agreement, 117 == 117, zero per-file mismatches. The 12 cics-banking-sample-application-cbsa/CREL0*.jcl + CREDB2L.jcl files whose entire JOB card is commented out (//*NAME JOB ...) and the 2 cics-genapp sampcma/sampwui.jcl files whose jobname is an angle-bracket placeholder (//<CMASAPPL> JOB) are correctly NOT counted -- confirmed by direct source read. (2) real pipeline DB output: struct_class_start == class_count == 117 on every file (JCL is in _CLASS_START_NAMED_EXTRACTION_LANGS since #2203, so no brace-slice fallback). Every corpus file carries at most one JOB card. Zero false positives. Count moved 116 -> 117 when #2415 (aperture.py infra_path_pattern left-boundary) was fixed in the same PR, letting DBRMLIB.jcl through the perimeter -- raw-corpus and pipeline now agree at 117/117. See docs/language_status/jcl.md #9.",
"total": 117,
"verified": 117,
"verified_at": "2026-08-29",
"note": "class_start (JCL JOB cards) verified against the language-crucible v1.2.0 corpus (186 .jcl files, 6 repos; 185 pipeline-scanned, same DFH$SIP1.jcl zero-density exclusion as the function entry). Three checks over the whole corpus: (1) GitGalaxy's class_start regex vs. an independent JOB-card grep (^//[A-Za-z0-9@#$][A-Za-z0-9@#$]{0,7}[ \\t]+JOB([ \\t]|$), no shared implementation, independently rejects //*-commented job cards) -- exact agreement, 118 == 118, zero per-file mismatches. The 12 cics-banking-sample-application-cbsa/CREL0*.jcl + CREDB2L.jcl files whose entire JOB card is commented out (//*NAME JOB ...) and the 2 cics-genapp sampcma/sampwui.jcl angle-bracket placeholders (//<CMASAPPL> JOB) remain correctly NOT counted. (2) real pipeline DB output: struct_class_start == class_count == 118 on every file, class_data carries 118 rows (JCL is in _CLASS_START_NAMED_EXTRACTION_LANGS since #2203, no brace-slice fallback). (3) direct source read of the v1.2.0 delta: cics-java-jcics-samples/etc_VSAM_DEFVSAM.jcl contributes exactly one JOB card (//DEFVSAM JOB). Every corpus file carries at most one JOB card. Count moved 117 -> 118 on 2026-08-30 solely from that one new file (crucible v1.1.0 -> v1.2.0, gitgalaxy pin bump #2478). Zero false positives. See docs/language_status/jcl.md #9.",
"total": 118,
"verified": 118,
"verified_at": "2026-08-30",
"verified_by": "Claude Sonnet 5"
},
"function": {
"note": "func_start (JCL EXEC steps) verified against the full language-crucible v1.1.0 corpus (185 .jcl files, 5 repos). Two independent checks over all 184 pipeline-scanned files: (1) GitGalaxy's func_start regex applied directly to raw source text, cross-checked line-for-line against an independent grep (^//[A-Za-z0-9@#$]{0,8}[ \\t]+EXEC([ \\t]|$), which shares no implementation with the primary regex and independently excludes //* comment lines) -- exact agreement, 375 == 375, zero per-file mismatches. (2) real pipeline DB output (galaxyscope --db-only): file_data.struct_func_start == function_count == 375 on every file, so neither prism.py's comment splitter nor detector.py's Mode A (_slice_by_labels) body slicing drops or corrupts any match before extraction. Spot-read against direct source for EXEC steps across itpll.jcl, CBL0001J.jcl, RUNASAM1.jcl including unnamed '// EXEC CICS,MEMBER=' statements (correctly matched with an empty step name). Zero false positives: every match is a real EXEC statement. Count moved 370 -> 375 when #2415 (aperture.py infra_path_pattern matched 'gen'/'lib' as filename substrings, dropping MAPGEN.jcl and DBRMLIB.jcl) was fixed in the same PR -- raw-corpus and pipeline now agree at 375/375. See docs/language_status/jcl.md #9.",
"total": 375,
"verified": 375,
"verified_at": "2026-08-29",
"note": "func_start (JCL EXEC steps) verified against the language-crucible v1.2.0 corpus (186 .jcl files, 6 repos; 185 pipeline-scanned -- cics-banking-sample-application-cbsa/DFH$SIP1.jcl is a bare SIP parameter deck with no // statements and is correctly aperture-excluded at zero-density). Three checks over the whole corpus: (1) GitGalaxy's func_start regex applied directly to raw source text, cross-checked line-for-line against an independent grep (^//[A-Za-z0-9@#$]{0,8}[ \\t]+EXEC([ \\t]|$), which shares no implementation with the primary regex and independently excludes //* comment lines) -- exact agreement, 376 == 376, zero per-file mismatches. (2) real pipeline DB output (galaxyscope --db-only): file_data.struct_func_start == function_count == 376 on every file, and function_data carries 376 rows, so neither prism.py's comment splitter nor detector.py's Mode A (_slice_by_labels) body slicing drops or corrupts any match. (3) direct source read of the v1.2.0 delta: cics-java-jcics-samples/etc_VSAM_DEFVSAM.jcl contributes exactly one EXEC step (//DEFINE EXEC PGM=IDCAMS); its instream IDCAMS SYSIN control statements (DELETE / DEFINE CLUSTER) are correctly NOT matched. Count moved 375 -> 376 on 2026-08-30 solely from that one new file (crucible v1.1.0 -> v1.2.0, gitgalaxy pin bump #2478). Zero false positives. See docs/language_status/jcl.md #9.",
"total": 376,
"verified": 376,
"verified_at": "2026-08-30",
"verified_by": "Claude Sonnet 5"
}
},
Expand Down
18 changes: 11 additions & 7 deletions docs/self_scan/tri_comparison_chart.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading