2.0 KiB
Efficiency audit
Reviewed baseline: 812c24d on main. This review examined the Go facade,
CLI, candidate validation, committed-tree and path inspection, build,
publication, and hosted-delivery paths for correctness and avoidable scaling
costs. Complexity estimates below describe the code, not measured timings.
Previously recorded correctness and security findings remain in their
respective audit documents.
File-size exclusions are scanned for every selected file
Relevant code: checkFileSize and excludedByPath. The public file-size settings accept literal file and directory exclusions.
For each selected blob, checkFileSize calls excludedByPath, which scans
the normalized exclusions until it finds a match. With N selected blobs and E
exclusions, inputs with no matches require N × E path comparisons; when N and
E grow together, this is quadratic, before Git is asked for any blob sizes.
String comparison also depends on path length. This is a potential scaling
cost for consumers with large repositories and extensive exclusion lists; the
review did not measure its practical impact.
Potential refactoring: Index normalized exclusions once in a hash set,
then test each file path and its directory ancestors, including the special
. exclusion. This takes expected O(E) indexing plus O(N × D) lookups for
maximum path depth D, apart from string-processing costs, instead of scanning
all E exclusions for each file. A component trie is another option if path
processing warrants it. Preserve literal component-boundary matching,
module-relative normalization, the order of selected files, and the first
oversized-file result. Existing exclusion cases cover the semantics; add
targeted cases for shared prefixes and nested directories if refactored.
The security audit separately records avoidable remote asset reads beyond the expected size.