# Changelog

## Score

- CAI 41 → 46 (+4.2)
- Rubric changed (rubric-2026.10.1 → rubric-2026.10.5) — scores are not directly comparable.

## Lenses

- Code Health 47 → 47 (+0.0)
- Architecture 85 → 85 (+0.0)
- Maturity 32 → 46 (+14.5)
- Readiness 33 → 33 (+0.0)
- Security 98 → 98 (+0.0)

## Resolved (6)

- Duplicate functionality for getting current time in microseconds. Both methods likely return the same value (current time in seconds with microseconds as a float), causing confusion.
- Inconsistent and confusing naming for numeric validation. 'checkIsIntFloat' is a non-standard term (likely meaning 'numeric' or 'float-or-int'). The progression from 'checkIsFloat' to 'checkIsIntFloat' to 'checkIsIntFloatZero' suggests a lack of clear domain modeling for numeric types, leading to multiple methods for checking if a value is a number.
- Most significant orphaned file (src/Kernel/Middleware/Database/Database.php)
- Overlapping validation logic. 'checkIsIntOrZero' is a specific subset of 'checkIsInt' (assuming 0 is an int). This forces users to choose between a general check and a specific one for a common edge case, rather than using a single flexible validator with an optional parameter.
- Redundant methods for IP retrieval. 'getClientIp' with a 'layer' parameter duplicates the functionality of the specific 'getClientIpFor4Layer' and 'getClientIpFor7Layer' methods. This creates an inconsistent API where the same operation can be performed via parameter or via distinct method names.
- Redundant validation methods with overlapping intent. 'checkTelphone' appears to be a typo for 'checkTelephone' and likely validates the same data format as 'checkMobile' (or a superset), creating confusion for the user about which to use for phone number validation.

## New (75)

- Duplicate intent with inconsistent naming. 'checkMobile' and 'checkTelphone' (typo for telephone) appear to perform similar validation on phone numbers. The parameter name 'mobile' is reused for both, suggesting they might be interchangeable or one is a legacy alias.
- Duplicate intent. Both methods likely return the current time in microseconds or a float representation of microtime. The naming convention is inconsistent ('getMicrosecond' vs 'getFloatMicrotime').
- Fragmented type-checking API. There are five distinct methods for checking numeric types, with subtle variations (int vs float, zero allowance). This creates a confusing surface for users who must guess which specific check matches their validation needs.
- Inconsistent access patterns for the same data. `getClientIp` takes a `layer` argument, while `getClientIpFor4Layer` and `getClientIpFor7Layer` are separate methods. This forces users to choose between a parameterized API and specific methods for the same underlying logic.
- Inconsistent document creation API. There is a generic `newDocument` method alongside specific `newDocumentHTML`, `newDocumentXML`, etc. The parameters also vary (`contentType` vs `charset`), creating confusion about which method to use for a given string.
- Most significant orphaned file (src/Kernel/PHPCreeper.php)
- Orphaned file (src/Downloader.php)
- Orphaned file (src/Kernel/Library/Common/Functions.php)
- Orphaned file (src/Kernel/Library/Crontab/Crontab.php)
- Orphaned file (src/Kernel/Library/Helper/Benchmark.php)
- Orphaned file (src/Kernel/Library/Helper/Tool.php)
- Orphaned file (src/Kernel/Library/Polyfill/Uuid.php)
- Orphaned file (src/Kernel/Library/phpQuery/phpQuery/Callback.php)
- Orphaned file (src/Kernel/Library/phpQuery/phpQuery/DOMDocumentWrapper.php)
- Orphaned file (src/Kernel/Library/phpQuery/phpQuery/Zend/Http/Client.php)
- Orphaned file (src/Kernel/Library/phpQuery/phpQuery/Zend/Http/Client/Adapter/Proxy.php)
- Orphaned file (src/Kernel/Library/phpQuery/phpQuery/Zend/Http/Client/Adapter/Socket.php)
- Orphaned file (src/Kernel/Library/phpQuery/phpQuery/Zend/Http/Cookie.php)
- Orphaned file (src/Kernel/Library/phpQuery/phpQuery/Zend/Http/CookieJar.php)
- Orphaned file (src/Kernel/Library/phpQuery/phpQuery/Zend/Http/Response.php)
- …and 55 more
