Skip to content

chore: refresh governance metadata - #23

Merged
hyperpolymath merged 6 commits into
mainfrom
chore/governance-surfaces-20260809
Aug 9, 2026
Merged

hyperpolymath merged 6 commits into
mainfrom
chore/governance-surfaces-20260809

Conversation

@hyperpolymath

@hyperpolymath hyperpolymath commented Aug 9, 2026 •

Copy link
Copy Markdown
Owner

Refreshes governance and maintainer dates after the coprocessor admission work. No runtime code changes.


Summary by Gitar

  • Operation-first coprocessor architecture:
    • Added operations.jl implementing OperationRequest, CapabilityEvidence, and deterministic provider planning
    • Added EnactionZigProvider for loading pure-Zig shared library FFI with ABI validation
  • Documentation and metadata:
    • Added BerryWiki coprocessor documentation pages and refreshed governance maintainer dates
  • Testing:
    • Added comprehensive unit tests for provider admission, failure handling, and Enaction integration

This will update automatically on new commits.

Comment thread guix.scm
@@ -1,18 +1,18 @@
; SPDX-License-Identifier: MPL-2.0
;; guix.scm — GNU Guix package definition for AcceleratorGate.jl
;; guix.scm — GNU Guix package definition for squisher-corpus

@gitar-bot gitar-bot Bot Aug 9, 2026 •

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Bug: guix.scm mislabels package as squisher-corpus with different license

guix.scm now declares name/synopsis/description/home-page as "squisher-corpus" and changes the license from MPL-2.0 to "PMPL-1.0-or-later", while this repository is AcceleratorGate.jl (Project.toml and the SPDX header still say MPL-2.0). This looks like an accidental overwrite from another repo (commit "update guix.scm from squisher-corpus") and produces a broken/misleading package definition and a conflicting license declaration. Restore the AcceleratorGate.jl name, home-page, and MPL-2.0 license.

Revert guix.scm to describe AcceleratorGate.jl under MPL-2.0:

;; guix.scm — GNU Guix package definition for AcceleratorGate.jl
...
  (name "AcceleratorGate.jl")
  ...
  (synopsis "AcceleratorGate.jl")
  (description "AcceleratorGate.jl — part of the hyperpolymath ecosystem.")
  (home-page "https://github.com/hyperpolymath/AcceleratorGate.jl")
  (license ((@@ (guix licenses) license) "MPL-2.0"
             "https://www.mozilla.org/MPL/2.0/")))

Was this helpful? React with 👍 / 👎

Comment thread src/operations.jl
handle = Libdl.dlopen(path)
abi_version = ccall(Libdl.dlsym(handle, :enaction_accel_abi_version), UInt32, ())
abi_version == 0x00010000 || throw(ErrorException("unsupported Enaction accelerator ABI: $abi_version"))
count = ccall(Libdl.dlsym(handle, :enaction_accel_capability_count), UInt32, ())

@gitar-bot gitar-bot Bot Aug 9, 2026 •

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Edge Case: UInt32 underflow hangs capability loop when count is 0

In EnactionZigProvider, count is a UInt32 and the loop for index in UInt32(0):(count - UInt32(1)) computes 0 - 1 which wraps to 0xFFFFFFFF when the library reports zero capabilities, producing a ~4.3-billion-iteration range that effectively hangs (each iteration issues a ccall). Guard against an empty capability set before looping.

Skip iteration when count is 0 to avoid unsigned wraparound:

count = ccall(Libdl.dlsym(handle, :enaction_accel_capability_count), UInt32, ())
at = Libdl.dlsym(handle, :enaction_accel_capability_at)
claims = CapabilityEvidence[]
for index in UInt32(0):UInt32(count == 0 ? 0 : count - 1)
    count == 0 && break

Was this helpful? React with 👍 / 👎

Comment thread src/operations.jl
Comment on lines +246 to +247
support = Symbol(first(key for (key, value) in _SUPPORT_CODE if value == raw[].support))
determinism = Symbol(first(key for (key, value) in _DETERMINISM_CODE if value == raw[].determinism))

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Quality: Reverse code lookups throw opaque errors on unknown values

The reverse lookups Symbol(first(key for (key,value) in _SUPPORT_CODE if value == raw[].support)) (and the determinism equivalent) call first on a generator with no fallback. If the Zig library reports a support/determinism code not present in the maps, first throws an unclear error rather than a descriptive ABI-drift message, since the earlier capability validation does not check these fields. Use get/an explicit reverse map with a clear error.

Was this helpful? React with 👍 / 👎

@gitar-bot gitar-bot Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ This PR is blocked due to unresolved code review findings.

Configure merge blocking · Maintainers can dismiss this review.

@gitar-bot

gitar-bot Bot commented Aug 9, 2026

Copy link
Copy Markdown

Note

Automatic reviews are paused because your trial's included automatic processing has been used for this period. Upgrade now, or comment "Gitar review" to run a review anytime.
Learn more

Code Review ⚠️ Changes requested 0 resolved / 3 findings

Introduces operation-first Julia accelerator gate infrastructure along with BerryWiki coprocessor documentation. However, an underflow in the EnactionZigProvider capability loop hangs execution when count is zero, and the guix.scm package is mislabeled.

⚠️ Bug: guix.scm mislabels package as squisher-corpus with different license

📄 guix.scm:2 📄 guix.scm:10 📄 guix.scm:14-18

guix.scm now declares name/synopsis/description/home-page as "squisher-corpus" and changes the license from MPL-2.0 to "PMPL-1.0-or-later", while this repository is AcceleratorGate.jl (Project.toml and the SPDX header still say MPL-2.0). This looks like an accidental overwrite from another repo (commit "update guix.scm from squisher-corpus") and produces a broken/misleading package definition and a conflicting license declaration. Restore the AcceleratorGate.jl name, home-page, and MPL-2.0 license.

Revert guix.scm to describe AcceleratorGate.jl under MPL-2.0
;; guix.scm — GNU Guix package definition for AcceleratorGate.jl
...
  (name "AcceleratorGate.jl")
  ...
  (synopsis "AcceleratorGate.jl")
  (description "AcceleratorGate.jl — part of the hyperpolymath ecosystem.")
  (home-page "https://github.com/hyperpolymath/AcceleratorGate.jl")
  (license ((@@ (guix licenses) license) "MPL-2.0"
             "https://www.mozilla.org/MPL/2.0/")))
⚠️ Edge Case: UInt32 underflow hangs capability loop when count is 0

📄 src/operations.jl:233 📄 src/operations.jl:236

In EnactionZigProvider, count is a UInt32 and the loop for index in UInt32(0):(count - UInt32(1)) computes 0 - 1 which wraps to 0xFFFFFFFF when the library reports zero capabilities, producing a ~4.3-billion-iteration range that effectively hangs (each iteration issues a ccall). Guard against an empty capability set before looping.

Skip iteration when count is 0 to avoid unsigned wraparound
count = ccall(Libdl.dlsym(handle, :enaction_accel_capability_count), UInt32, ())
at = Libdl.dlsym(handle, :enaction_accel_capability_at)
claims = CapabilityEvidence[]
for index in UInt32(0):UInt32(count == 0 ? 0 : count - 1)
    count == 0 && break
💡 Quality: Reverse code lookups throw opaque errors on unknown values

📄 src/operations.jl:246-247

The reverse lookups Symbol(first(key for (key,value) in _SUPPORT_CODE if value == raw[].support)) (and the determinism equivalent) call first on a generator with no fallback. If the Zig library reports a support/determinism code not present in the maps, first throws an unclear error rather than a descriptive ABI-drift message, since the earlier capability validation does not check these fields. Use get/an explicit reverse map with a clear error.

🤖 Prompt for agents
Code Review: Introduces operation-first Julia accelerator gate infrastructure along with BerryWiki coprocessor documentation. However, an underflow in the EnactionZigProvider capability loop hangs execution when count is zero, and the guix.scm package is mislabeled.

1. ⚠️ Bug: guix.scm mislabels package as squisher-corpus with different license
   Files: guix.scm:2, guix.scm:10, guix.scm:14-18

   guix.scm now declares name/synopsis/description/home-page as "squisher-corpus" and changes the license from MPL-2.0 to "PMPL-1.0-or-later", while this repository is AcceleratorGate.jl (Project.toml and the SPDX header still say MPL-2.0). This looks like an accidental overwrite from another repo (commit "update guix.scm from squisher-corpus") and produces a broken/misleading package definition and a conflicting license declaration. Restore the AcceleratorGate.jl name, home-page, and MPL-2.0 license.

   Fix (Revert guix.scm to describe AcceleratorGate.jl under MPL-2.0):
   ;; guix.scm — GNU Guix package definition for AcceleratorGate.jl
   ...
     (name "AcceleratorGate.jl")
     ...
     (synopsis "AcceleratorGate.jl")
     (description "AcceleratorGate.jl — part of the hyperpolymath ecosystem.")
     (home-page "https://github.com/hyperpolymath/AcceleratorGate.jl")
     (license ((@@ (guix licenses) license) "MPL-2.0"
                "https://www.mozilla.org/MPL/2.0/")))

2. ⚠️ Edge Case: UInt32 underflow hangs capability loop when count is 0
   Files: src/operations.jl:233, src/operations.jl:236

   In EnactionZigProvider, `count` is a UInt32 and the loop `for index in UInt32(0):(count - UInt32(1))` computes `0 - 1` which wraps to 0xFFFFFFFF when the library reports zero capabilities, producing a ~4.3-billion-iteration range that effectively hangs (each iteration issues a ccall). Guard against an empty capability set before looping.

   Fix (Skip iteration when count is 0 to avoid unsigned wraparound):
   count = ccall(Libdl.dlsym(handle, :enaction_accel_capability_count), UInt32, ())
   at = Libdl.dlsym(handle, :enaction_accel_capability_at)
   claims = CapabilityEvidence[]
   for index in UInt32(0):UInt32(count == 0 ? 0 : count - 1)
       count == 0 && break

3. 💡 Quality: Reverse code lookups throw opaque errors on unknown values
   Files: src/operations.jl:246-247

   The reverse lookups `Symbol(first(key for (key,value) in _SUPPORT_CODE if value == raw[].support))` (and the determinism equivalent) call `first` on a generator with no fallback. If the Zig library reports a support/determinism code not present in the maps, `first` throws an unclear error rather than a descriptive ABI-drift message, since the earlier capability validation does not check these fields. Use `get`/an explicit reverse map with a clear error.

Options

Display: compact → Showing less information.

Comment with these commands to change the behavior for this request:

Compact
gitar display:verbose         

Important

Your trial ends in 1 day — upgrade now to keep code review, CI analysis, auto-apply, custom automations, and more.

Was this helpful? React with 👍 / 👎 | Gitar

@hyperpolymath
hyperpolymath force-pushed the chore/governance-surfaces-20260809 branch from 416bd7d to a94cd1b Compare August 9, 2026 08:47
@hyperpolymath
hyperpolymath merged commit 680205c into main Aug 9, 2026
18 checks passed
@hyperpolymath
hyperpolymath deleted the chore/governance-surfaces-20260809 branch August 9, 2026 08:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant