This is an automated email from the ASF dual-hosted git repository.

quinnj pushed a commit to branch core-rewrite
in repository https://gitbox.apache.org/repos/asf/arrow-julia.git


The following commit(s) were added to refs/heads/core-rewrite by this push:
     new 03dfc3a  docs: record round 66 review — CLEAN (AbstractArrowSource + 
CloudStore extension)
03dfc3a is described below

commit 03dfc3a883006783e00f04a668eaf3c8c595f2fd
Author: Jacob Quinn <[email protected]>
AuthorDate: Wed Aug 19 02:39:50 2026 -0600

    docs: record round 66 review — CLEAN (AbstractArrowSource + CloudStore 
extension)
    
    Co-Authored-By: Claude Fable 5 <[email protected]>
---
 docs/dev/REVIEW-codex-r66.md | 186 +++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 186 insertions(+)

diff --git a/docs/dev/REVIEW-codex-r66.md b/docs/dev/REVIEW-codex-r66.md
new file mode 100644
index 0000000..2e2242b
--- /dev/null
+++ b/docs/dev/REVIEW-codex-r66.md
@@ -0,0 +1,186 @@
+<!---
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+
+# Arrow.jl 3.0 code review — round 66
+
+Date: 2026-08-19
+
+Scope: exact commit `415d0c798d492b866d0c23a7a12dba8fe473a253`
+(`fix: resolve round 65 findings — Integer length guard, policy-compliant
+worker pool, no GCS claim`) on `core-rewrite`. Local `HEAD`, local
+`core-rewrite`, local `origin/core-rewrite`, and the live `origin`
+`refs/heads/core-rewrite` all resolved to that SHA. Round 65 reviewed
+`d3ea7a7cf16001985a0237e18c9c873307acbc6c`. This round reviewed both
+commits in `d3ea7a7..415d0c7`:
+
+- `8ee33ba` — record the round-65 review;
+- `415d0c7` — close its three LOW findings.
+
+I read both commits and the complete two-commit delta before testing it.
+
+## Result
+
+All three round-65 findings are closed. I found no new finding in the
+two-commit delta. The required package, Julia 1.10.11, Minio, trim,
+documentation, formatter, and whitespace gates pass.
+
+## Round-65 closure
+
+### Source length type validation
+
+`SourceFile` now checks `reported isa Integer` before either the sign check or
+the `Int64` range check (`src/scan.jl:784-786`). A non-`Integer` therefore
+cannot reach comparison or conversion. `_BadLengthSource.reported` is now
+`Any` (`test/facade_tests.jl:95-99`). The facade suite tests `Float64`,
+`String`, and `nothing` results through `Arrow.Table`
+(`test/facade_tests.jl:285-295`).
+
+The exact public-path probe produced:
+
+```text
+sourcelength = 3402.0  => ValidationError
+sourcelength = 1.0     => ValidationError
+sourcelength = 1.5     => ValidationError
+sourcelength = "3402"  => ValidationError
+sourcelength = nothing => ValidationError
+```
+
+Each value produced `Arrow.ArrowCore.ValidationError` with the invalid-length
+message. No value produced `InexactError`, `MethodError`, or a decoded table.
+
+### Policy-compliant range-read worker pool
+
+The implementation at `src/scan.jl:909-955` follows the applicable repository
+rules:
+
+- `_SpanQueue` is a mutable struct with `@atomic next::Int`;
+- no `Threads.Atomic` or `Atomic{...}` remains in `src/scan.jl`;
+- every worker is
+  `errormonitor(Threads.@spawn _readworker!(results, sf, spans, queue))`
+  inside `@sync`;
+- the worker loop is the separate `_readworker!` function and exits with an
+  explicit `return nothing`;
+- `_readspans` and `_firstcause` use explicit returns;
+- the changed functions and type definitions have one blank line between
+  them and no trailing whitespace.
+
+A 600,922-byte public `Arrow.Table` scan used a source with
+`concurrentreads(src) == 4`. Peak in-flight reads were two. The two concurrent
+metadata and body waves each completed request 2 before request 1. The
+decoded result still remained in file order as `x == [1, 2, 3, 4]`. The same
+14/14 probe passed with four Julia threads and with one Julia thread. The
+sleeping `readrange` methods yielded on the one-thread run, which is the
+relevant model for remote I/O.
+
+A worker-injected `ValidationError` surfaced from `Arrow.Table` as the
+original `ValidationError`, not as `TaskFailedException` or
+`CompositeException`. `_firstcause` therefore still restores the public
+exception through `@sync`.
+
+`errormonitor` also printed one `UNHANDLED TASK ERROR` diagnostic for that
+injected failure. I accept this as the direct effect of the repository's
+unconditional spawned-task monitoring rule. It does not change the exception
+returned by `Arrow.Table`, and the public API does not promise silent stderr.
+If silent handling becomes a requirement, the repository should record the
+narrow enclosing-`@sync` exception that its guidelines allow and then omit
+`errormonitor` at this site. The current code must not silently diverge from
+the current rule.
+
+### CloudStore provider claims
+
+The README, manual, extension header, and `AbstractArrowSource` docstring now
+claim only S3 and Azure Blob Storage support. The exact command
+
+```text
+grep -rn --exclude='REVIEW-codex-*.md' --exclude-dir=.git GCS .
+```
+
+exited 1 with empty output. Broader searches for `Google Cloud Storage`,
+`Google Cloud`, and `GCP` were also empty outside historical review records.
+
+## Delta audit
+
+`8ee33ba` adds only `docs/dev/REVIEW-codex-r65.md`. `415d0c7` changes only the
+six stated closure files: `README.md`, `docs/src/manual.md`,
+`ext/ArrowCloudStoreExt.jl`, `src/scan.jl`, `src/source.jl`, and
+`test/facade_tests.jl`.
+
+The source-length guard short-circuits safely. The worker counter assigns one
+index to each request. Workers write separate result slots. `@sync` waits for
+all workers before the result vector is used. The original worker exception
+is preserved. The provider edits remove the unsupported claim. I found no
+new correctness, concurrency, compatibility, documentation, or formatting
+defect in the two-commit delta.
+
+## Assumptions and decisions
+
+- I treated this as a closing review of the two-commit delta and the three
+  round-65 findings. I did not reopen unchanged, previously reviewed code.
+- I treated sleeping `readrange` methods as a valid model of yieldable remote
+  I/O for the one-thread worker-pool probe.
+- I accepted the duplicate `errormonitor` diagnostic under the current
+  mandatory monitoring rule. A silent implementation needs a documented
+  narrow policy exception first.
+- I accepted Documenter's local deployment-skip warning after doctests,
+  cross-references, document checks, and HTML rendering completed.
+- I did not run the conformance container because this round does not touch
+  the IPC or C-data paths and the review request excludes that gate.
+- I did not modify product or test code. All probes and environment changes
+  stayed in detached or temporary worktrees. The protected untracked files
+  `Arrow_Review.md`, `ISSUE-420.md`, `ISSUE-474.md`, `ISSUE-540.md`,
+  `ISSUE-580.md`, and `mytestdata.arrow` remained untouched. This review file
+  is the only active-checkout change made by this round.
+
+## Validation
+
+- `julia --project=. --startup-file=no -e 'using Pkg; Pkg.test()'` — exit 0
+  on Julia 1.12.6 in `/private/tmp/arrow-r66-main` after developing
+  `/Users/jacob.quinn/.julia/dev/Tables`: ArrowCore 421/421, facade 342/342,
+  CloudStore/Minio 17/17, and every IPC, C-data, statistics, scan, and
+  byte-range battery passed.
+- The required Julia 1.10.11 binary, from fresh environment
+  `/private/tmp/arrow-r66-j110-env.T0CBNG` that developed exact Arrow,
+  `src/ArrowStrings`, and `/Users/jacob.quinn/.julia/dev/Tables`:
+  `Pkg.test("Arrow")` — exit 0 with ArrowCore 421/421, facade 342/342,
+  CloudStore/Minio 17/17, and all batteries passing.
+- Both package gates printed one non-fatal deprecation warning for verbosity
+  logging macros. Neither printed a test failure.
+- `julia --startup-file=no test/trim_compile_tests.jl` — exit 0, 6/6. Its
+  assertions require zero verifier errors, zero verifier warnings, compiler
+  exit 0, and trimmed-executable exit 0.
+- Documentation setup developed exact Arrow and the required Tables checkout.
+  `julia --project=docs --startup-file=no docs/make.jl` — exit 0. Doctests,
+  cross-references, document checks, and HTML rendering passed. The only
+  warning was the expected local deployment skip.
+- JuliaFormatter 2.12.5 `format("."; verbose=true)` — exit 0 and no tracked
+  change in `/private/tmp/arrow-r66-format`.
+- The focused source probe — exit 0, 14/14 with four threads and exit 0,
+  14/14 with one thread. It covers all five non-`Integer` values, bounded
+  in-flight reads, out-of-order completion, indexed results, and original
+  worker exception type.
+- `git show --check` for both commits, `git diff --check d3ea7a7..HEAD`, the
+  final active `git diff --check`, and detached-worktree checks passed. A
+  no-index whitespace check of this untracked review file produced no
+  diagnostic; its expected nonzero status only records that it differs from
+  `/dev/null`.
+- Final local and live remote refs remained
+  `415d0c798d492b866d0c23a7a12dba8fe473a253`. The active checkout contained
+  only the six protected untracked files and this review document.
+
+VERDICT: CLEAN

Reply via email to