Skip to content

fix(license): preserve nested detection expressions for Deno verification#757

Merged
mstykow merged 5 commits intomainfrom
verify/deno-parser
Apr 22, 2026
Merged

fix(license): preserve nested detection expressions for Deno verification#757
mstykow merged 5 commits intomainfrom
verify/deno-parser

Conversation

@mstykow
Copy link
Copy Markdown
Owner

@mstykow mstykow commented Apr 22, 2026

Summary

  • preserve nested match-derived license expressions during detection aggregation and file/output rendering so shared compare-output results no longer collapse MIT AND (Apache-2.0 OR MIT) to MIT
  • rerun compare-outputs --profile common for denoland/fresh, oakserver/oak, and denoland/std, then record the verified Deno snapshots in docs/BENCHMARKS.md
  • mark scorecard item 27 (Deno) verified and regenerate docs/benchmarks/scan-duration-vs-files.svg

Issues

  • Covers: item 27 (Deno) in docs/implementation-plans/package-detection/PARSER_VERIFICATION_SCORECARD.md
  • Closes:

Scope and exclusions

  • Included:
    • shared license-expression aggregation fix across detection building, scanner file aggregation, and output rendering
    • targeted regression tests for preserve-structure aggregation
    • final compare artifacts:
      • .provenant/compare-runs/20260422T104059Z-fresh-39844
      • .provenant/compare-runs/20260422T104059Z-oak-39847
      • .provenant/compare-runs/20260422T103358Z-std-31214
    • Deno benchmark rows and scorecard status update
  • Explicit exclusions:
    • no parser-golden, assembly-golden, or license-golden fixture writes
    • no changes to Deno parser extraction behavior beyond the shared license-expression fix exposed by denoland/std

Intentional differences from Python

  • Provenant continues to surface direct Deno manifest and lockfile package data that Python ScanCode does not parse, and now preserves the full nested license-expression structure already present in matched rules during aggregation.

Follow-up work

  • Created or intentionally deferred:
    • none; targeted update-license-golden -- --list-mismatches --show-diff prechecks for misc.c and complex3.java reported would update 0 file(s)

Expected-output fixture changes

  • Files changed: none
  • Why the new expected output is correct: the shared license-expression fix only changed live compare-output results and targeted regression tests; the narrow license-golden precheck found no checked-in fixture drift to sync.

mstykow and others added 5 commits April 22, 2026 12:45
Keep aggregated SPDX and ScanCode expressions from absorbing distinct nested operands so compare-output and file-level detections retain the full match-derived structure.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Signed-off-by: Maxim Stykow <maxim.stykow@gmail.com>
Avoid overwriting detection-level SPDX expressions after match aggregation so scanner and compare-output results keep the full structure that the matched rules produced.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Signed-off-by: Maxim Stykow <maxim.stykow@gmail.com>
Keep file-level detected license expressions aligned with the aggregated detection structure so JSON output reflects the same match-derived SPDX shape used during comparison.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Signed-off-by: Maxim Stykow <maxim.stykow@gmail.com>
Add the verified fresh, oak, and std Deno snapshots to the benchmark reference and regenerate the chart so the checked-in timing stats reflect the new rows.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Signed-off-by: Maxim Stykow <maxim.stykow@gmail.com>
Record the completed Deno compare-output lane in the parser verification scorecard now that fresh, oak, and std are all triaged and benchmarked.

Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent)

Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
Signed-off-by: Maxim Stykow <maxim.stykow@gmail.com>
@mstykow mstykow merged commit caaad56 into main Apr 22, 2026
15 checks passed
@mstykow mstykow deleted the verify/deno-parser branch April 22, 2026 11:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant