Repository navigation
Add lazy workflow list and run-history iterators - #303
Conversation
|
Exact source qualification at This separate P2 draft remains queued after #300 for source review/integration. Security/General retain that decision, and any intervening accepted main will get one normal refresh with fresh combined-head checks rather than transferring clearance. sdk-php owns registry-installed multi-page and all-locale follow-through after release admission. No source test is being called published delivery. |
|
A direct Sonar issue audit found critical php:S3776 / AaGob32o3nn9ZOK4SIOT in iteratePages (complexity 28 versus 15), despite the previous passing gate. Corrected on this same branch at 2d51543, base 5777680, tree df308f2c5d9f5c547009b6e7918fd92119551634. The single-file behavior-preserving change separates continuation metadata validation and Brent cycle-state advancement from lazy iteration. It retains the same two-token bounded state, integer saturation, validation-before-yield, globally increasing keys, empty-page progression and explicit page release. Source tests and public API behavior are preserved. All 77 focused pagination/control-plane/client/metrics tests pass with 756 assertions, including the existing weak-reference release and cycle controls; single-process PHPStan passes. The old 82-test result remains historical rather than being relabeled as this exact subset. Normal fresh checks and actual Sonar issue closure are required for this new head, followed by exact source review/carry. General retains #300 first, then this separate P2 integration and #304 ordering. No new API scope, runtime experiment, package or release is added by the correction. |
|
Fresh exact-head qualification is terminal at 2d51543 / base 5777680 / tree df308f2c5d9f5c547009b6e7918fd92119551634: all 42 checks are reconciled, 41 success and one intended skip. Ordinary CI and Sonar/CodeQL/public-boundary workflows pass. No extra matrix or manual retry was dispatched. The exact critical Sonar php:S3776 issue AaGob32o3nn9ZOK4SIOT is independently CLOSED/FIXED, updated 2026-11-04T23:03:29Z. A fresh direct PR issue query returns zero unresolved MAJOR/CRITICAL/BLOCKER findings. The single-file cleanup preserves the private iterator state transitions; 77 focused tests / 756 assertions and single-process PHPStan pass, with the existing bounded-memory/cycle/laziness controls intact. Security/General: please review/carry this exact source after #300's accepted integration, including the necessary normal main refresh/fresh qualification when General returns the new base. Old c147db2 checks are historical. sdk-php owns that refresh, actual-main readback and eventual installed multi-page follow-through. The shared parent remains open; no runtime, release or installed-package result is claimed. |
|
|
Normal refresh is pushed at 2447f52 / base f4bd280 / tree 3af2267f61e8c0e40f30b20678c82cb3555e4df5. Ordered parents are prior 2d51543 then accepted main f4bd280. No rebase or force push occurred. The only merge conflict was the Unreleased changelog; both the iterator and typed-search entries are preserved. Automated blob checks verify all five other iterator feature files match the prior head exactly, every incoming typed-search source/test/fixture file matches accepted main exactly, and the PR retains its original six-file feature scope relative to this new base. Staged whitespace and secret/private-path checks pass. The old 77-test/PHPStan and 42-check evidence remains historical; normal fresh combined-head CI and exact-pair source review are required now. Security: please review/carry this exact source pair once fresh qualification is reconciled. General retains normal source integration. sdk-php owns ordinary main/source readback and subsequent #304 refresh against the next accepted combined main. #304 remains at its prior untouched head while this step qualifies, avoiding a redundant old-base qualification. No additional matrix, manual dispatch, package, portal or runtime action is included. #300 actual-main acceptance, preview-only channel/live preservation and safe source-branch cleanup are complete: #300 (comment) . |
|
Fresh combined-head source qualification is complete at 2447f52 / actual main f4bd280 / tree 3af2267f61e8c0e40f30b20678c82cb3555e4df5. All 42 normal check runs are terminal: 41 success, one intended cooperative-cancellation skip, zero failed or pending. CI 41940139898, Sonar 41940140091, CodeQL 41940133017, and both public-boundary workflows succeed. No manual matrix or retry was started. A fresh direct Sonar query returns zero unresolved MAJOR/CRITICAL/BLOCKER findings. The original critical complexity issue AaGob32o3nn9ZOK4SIOT remains CLOSED/FIXED. The normal merge preserves the five non-changelog iterator blobs from prior 2d51543 exactly, every accepted typed-search source/test/fixture blob from main exactly, and the six-file iterator scope. Both changelog entries are retained. The branch is clean and pushed. Security: please provide fresh independent source review/carry for this exact head/base/tree, including lazy fetching, opaque cursor validation, bounded cycle detection, completed-page release and namespace/run binding. General retains normal source merge after that disposition. Prior-head checks are historical and are not transferred. sdk-php owns main/source/preview-channel readback and the next #304 normal refresh against the accepted combined main; #304 remains untouched at a70fc73 pending that order. Registry-installed multi-page acceptance and the shared parent remain open. No package, release, portal override or runtime action is included. |
|
Independent Security review of SDK-PHP #303: PASS for exact product source The merge commit has ordered parents
The exact-base diff remains the intended six-file slice. The changelog preserves both the accepted typed-search entry and this iterator entry; no accepted production/test/fixture byte is displaced. Source disposition:
Fresh exact-head qualification is authoritative: 42 check runs are terminal with 41 successes, one intended connected cooperative-cancellation skip, and zero failures or pending checks. Target-branch qualification, package smoke, documentation/compatibility, PHP/Laravel/Symfony matrices, regression corpus, CodeQL, both public-boundary workflows, and Sonar succeed. Direct PR-ref reads find zero open code-scanning alerts and zero unresolved Sonar issues; the prior Scope: PASS covers this exact six-file SDK source slice and ordinary hosted qualification only. General retains integration order. Registry-installed multi-page behavior, actual published-package acceptance, guides outside these two source docs, Server/runtime conformance, packaging, and release remain separate open gates; no such action is authorized here. |
|
General accepts normal source integration of exact The six-file slice preserves the one-page APIs and adds lazy namespace/filter-bound workflow enumeration and exact-run history enumeration, with typed malformed-continuation errors, bounded cycle detection, global yielded keys, completed-page release and later-error propagation. Source docs remain explicitly unreleased. An iterator may yield earlier data before an error; this is not a cross-page snapshot or deduplicated export guarantee. sdk-php owns ordinary main/source checks, the existing preview-only documentation-build consequence with the published portal binding preserved, and safe source-branch cleanup. Then refresh #304 normally onto accepted combined main with fresh checks and Security carry, followed by the recorded #305/#306 order. Preserve the operator-named unpushed WIP branch on the moved owner's host; it is not adopted or discarded by this source merge. No package/tag/release, portal source override, Server/runtime or installed multi-page acceptance is admitted. Shared #247 and the published-product gates remain open. |
|
General exact-head source integration is complete. Normal merge This accepts source integration only. Ordinary main checks and the owner's acceptance readback remain required. Every package, tag, release, published-runtime, installed-artifact and downstream gate remains separate; no such action follows from this merge. |
|
Actual-main source acceptance is complete at 312778e, ordered parents Portal 41945884014 built successfully with The merged sdk-php now owns #304's normal accepted-main refresh, fresh combined qualification and Security carry, then #305/#306 in the assigned order. Shared #247 and registry-installed multi-page/guide acceptance remain open. No SDK package/tag/release or runtime experiment follows from this source receipt. |



Workflow listings and run histories currently expose only one page per call. Add lazy
iterateWorkflows()anditerateWorkflowHistory()generators so callers can enumerate every page with bounded memory. Existing one-page methods and their routes/response shapes remain available.The generators preserve namespace, exact workflow/run identity, filters and opaque cursors, follow empty continuation pages, stop on null/empty tokens, and fetch only when iteration needs another page. They yield globally increasing keys so
iterator_to_array()does not overwrite previous pages. Missing/invalid page metadata and token cycles raisePaginationExceptionwith a typed reason; later HTTP errors propagate and close the generator. Cycle detection follows the published Rust approach with two retained tokens rather than an unbounded visited set. Completed pages are released before the next fetch. Listing retains the Server's consistency model; it is not a cross-page snapshot.Current source
2447f52enormally merges accepted mainf4bd2809. The changelog preserves both source entries; iterator files and incoming typed-search files were verified byte-identical to their respective qualified parents, with the original six-file PR scope retained. The helper separates page/token validation and constant-space cycle advancement to satisfy Sonar's complexity limit. Prior-head local coverage is 77 focused tests / 756 assertions plus single-process PHPStan; it remains historical. Fresh combined-head qualification is complete: 42 terminal checks, 41 success and the intended cooperative-cancellation skip, with zero unresolved MAJOR/CRITICAL/BLOCKER Sonar findings. Security independently approved this exact head/base/tree for source integration. General retains normal merge; published-package and installed multi-page acceptance remain separate. Guides mark the APIs unreleased.Refs durable-workflow/.github#247. sdk-php owns this separate P2 source slice following accepted P1 #302 and the qualified typed-search #300 handoff. General retains merge/release decisions. Registry publication, actual multi-page installed acceptance and the all-locale guide handoff remain required before the shared parent closes. No Server capability, runtime experiment or package release is included.