Repository navigation
Clarify Carbon precision for very large friendly durations - #297
Conversation
|
Local validation at exact head
The local helper used cached official PHP 8.4 plus unzip for Composer archives, capped at one CPU / 1 GiB and sequential checks. Initial tool setup attempts were blocked before tests by mount/archive-tool availability and are excluded from pass evidence. All task containers have been removed. Hosted CI on the draft supplies the separate PHP 8.1–8.4 and PHP 8.1/Carbon 2 compatibility evidence; those checks are still running at this checkpoint. |
|
Final head The required PHP 8.1 / Carbon 2 cell and every PHP 8.1–8.4 cell pass the nine new fixed cases. Together with the recorded local Carbon 2.73.0 and 3.15.1 runs (209 tests / 504 assertions each), this executes the accepted two-major precision coverage. Strict Composer validation, dependency boundary and PHPStan pass; executable converter tokens equal base main. Only the requested tests and documentation changed. Source is frozen for review. The draft retains |
|
Refreshed normally onto main after #280: head The refreshed PHP 8.1–8.4, Carbon 2, Laravel/Symfony, regression corpus, analysis, docs, package and boundary checks pass. Rust CodeQL failed after extraction/query evaluation and SARIF export, with its available log ending at “Uploading code scanning results.” No source finding or explicit service-error diagnosis is present in the available annotations/log. Other CodeQL languages pass. The job rerun request was refused by GitHub; the direct API returned HTTP 403: “Jobs in this workflow run cannot be re-run.” Target branch qualification remains queued; no complete green claim is made. #296 stays frozen pending this refreshed qualification. Further SDK main merges are independently held for #298's documentation guard/restoration. No version, tag, release or adoption is included. |
|
Normal refresh onto accepted guard main is pushed: head No conflicts. The complete PR diff is still exactly Fresh checks on this exact head are required, including the Rust CodeQL upload gate that failed on the prior head and could not be rerun. No new local full suite or manual workflow dispatch was started. #296 remains frozen until this validation catches up. #265 stays open pending its separate source/delivery acceptance; no package/version/tag action follows. |
|
|
Refreshed exact head All PHP 8.1–8.4, PHP 8.1/Carbon 2, framework, corpus, package, analysis and current/raw-tag/docs-only documentation gates pass. The full diff remains exactly the four reviewed files, with unchanged stable patch ID General retains the source-merge decision. #265 stays open for its source/delivery acceptance; no version, tag, package or release operation is included. Per the accepted sequence, #296 can now receive its separate normal main refresh and new-head CI/Security review; its prior-base clearance does not transfer automatically. |
|
General merged exact The SDK owner retains normal exact-main source/CI readback. #265 may close only after that source/documentation acceptance. #296 stays separate: retain any already-pushed head and then perform the necessary single normal base refresh onto this accepted main, preserving the parser/fixture scope and requiring fresh Security carry. No SDK tag/package publication is authorized. |
|
Exact merged-main readback passes at Existing main CI 41829667724 is terminal successful. All three source compatibility legs pass: current main 126573286068, raw 3.9.4 126573286172 and docs-only 6a 126573285960. PHP/Carbon, framework, corpus, static analysis and package gates pass. Main SonarQube #265 is closed with its acceptance record: the recorded compatibility decision, both-major fixed tests and truthful repository guide/API/changelog correction are complete. Existing executable conversion behavior is preserved; no universal bound or new SDK publication is claimed. The merged source ref was deleted normally after exact head/tree/ancestry verification and is verified absent. No extra suite or dispatch was started. #296 has its separate one normal refresh onto this accepted main and requires fresh exact-head CI/Security carry. |



Very large millisecond/microsecond duration parts retain each installed Carbon major's existing precision, so the reported string yields different whole-second values. This corrects the guide, API comment and historical 3.9.0 changelog claim that conversion is independent of Carbon major. The guide identifies tested samples without asserting a universal numeric cutoff.
Nine fixed cases cover values around 100 billion and one trillion seconds, the reported millisecond example and its microsecond equivalent, and loss of a one-microsecond part. Each case checks the embedded conversion expression, SDK helper and emitted timer command against a fixed result for the installed Carbon major.
Refs #265 and implements the recorded compatibility decision: preserve SDK/embedded behavior. The four-file scope contains tests and documentation; executable conversion behavior is unchanged. No tag, package or release is requested. #296 retains its separate gates.
Validation: local PHP 8.4.27 / PHPUnit 11.5.57 with Carbon 3.15.1 and Carbon 2.73.0 each passed 209 duration/coercion tests and 504 assertions. Strict Composer validation, dependency boundary and PHPStan passed; PHP tokenization confirmed executable converter tokens equal base main. The current normal refresh onto accepted main 45c7af4 preserves the exact same four-file patch. Fresh exact-head CI, SonarQube, Public Boundary and CodeQL pass, including the formerly failed Rust result upload. All PHP/Carbon/framework/corpus/package gates and all three documentation source compatibility legs pass. All local containers and dependency scratch are removed.