Ecosystem metrics
- New Repos
- 14
- down 99.3%
- Commits
- 867
- up 14.1%
- Releases
- 8
- down 20.0%
- Contributors
- 52
- down 1.9%
- Merges
- 39
- up 85.7%
Activity Overview
Commits and releases over time
- Commits
- Releases
- Authors
Repository Explorer
No repositories match that filter.
6558 commits in all time
May 27, 2026 11:43 – Aug 25, 2026 11:43 UTC
feat: registries open their boxes to foreign reads at create
AVM v13 relaxes box isolation: an app can opt its boxes into reads by any other app. Both registries now do that in a new createApplication, which runs app_params_set(appForeignBoxReads, true). Verified on localnet that the opcode is permitted during the creating call itself, so no separate post-create step is needed - the v13 notes describe enabling access as update-then-run, but that is for apps already deployed. Reads only; writes stay exclusive to the owning app. app_params_set is run by an app on itself, so a contract that is not updatable can never opt in later, which is what preserves intentional immutability. The create is a real ABI method rather than a bare one. It lands in the ARC-56 and the generated clients, it can take arguments later without changing the create shape a second time, and it matches the house style - FracDelegationInstance already has an ABI createApplication invoked by selector from the registry factory. Both createRegistry paths switch from create.bare() to the method call; every other caller routes through createRegistry. Two consequences of the create no longer being bare, both found by the suite: - deployRegistryWithoutBytecode in the period e2e spec deploys a registry directly and was still doing a bare create, which is no longer routed and fails with an err on the OnCompletion match. - The ATST unit specs. ATST holds a contract with any create method in `isCreating` and rejects every ABI call with "method can not be called while creating" until a create method runs - but ATST 1.2.0 predates v13 and cannot execute app_params_set, so the real body cannot run in the emulator. The registry test subclass overrides createApplication with a no-op and calls it after construction; the opt-in itself is covered e2e. Follow-up worth taking: with foreign reads on, much of the registries' readonly getter and log-dumping surface (getDelegation, getPeriodSummary, logCommitteePages, getEscrow, ...) exists only because cross-app box reads used to be impossible. Not touched here. Suite green: 539 passed (2 new).
9893837d
feat/avm13-foreign-box-reads
22/6,652 ++ 6,099 --
docs: give the frac SDK's extraProgramPages comment its own numbers
The block was copied verbatim from the ggov SDK and still named GGovRegistry and its ~5.6KB program / 6144-byte exact ceiling. FracDelegationRegistry is ~2.9KB, so exact sizing gives it a 4096-byte ceiling; the argument for the spare page is unchanged, only the figures were wrong. Also narrows the parenthetical to instance apps, which are the only children this registry spawns.
b7f8375e
feat/avm13-computed-pages
1/7 ++ 7 --
feat: registries open their boxes to foreign reads at create
AVM v13 relaxes box isolation: an app can opt its boxes into reads by any other app. Both registries now do that in a new createApplication, which runs app_params_set(appForeignBoxReads, true). Verified on localnet that the opcode is permitted during the creating call itself, so no separate post-create step is needed - the v13 notes describe enabling access as update-then-run, but that is for apps already deployed. Reads only; writes stay exclusive to the owning app. app_params_set is run by an app on itself, so a contract that is not updatable can never opt in later, which is what preserves intentional immutability. The create is a real ABI method rather than a bare one. It lands in the ARC-56 and the generated clients, it can take arguments later without changing the create shape a second time, and it matches the house style - FracDelegationInstance already has an ABI createApplication invoked by selector from the registry factory. Both createRegistry paths switch from create.bare() to the method call; every other caller routes through createRegistry. Two consequences of the create no longer being bare, both found by the suite: - deployRegistryWithoutBytecode in the period e2e spec deploys a registry directly and was still doing a bare create, which is no longer routed and fails with an err on the OnCompletion match. - The ATST unit specs. ATST holds a contract with any create method in `isCreating` and rejects every ABI call with "method can not be called while creating" until a create method runs - but ATST 1.2.0 predates v13 and cannot execute app_params_set, so the real body cannot run in the emulator. The registry test subclass overrides createApplication with a no-op and calls it after construction; the opt-in itself is covered e2e. Follow-up worth taking: with foreign reads on, much of the registries' readonly getter and log-dumping surface (getDelegation, getPeriodSummary, logCommitteePages, getEscrow, ...) exists only because cross-app box reads used to be impossible. Not touched here. Suite green: 539 passed (2 new).
a8f77252
feat/avm13-foreign-box-reads
22/6,652 ++ 6,099 --
fix: mirror the 7-page guard into the frac SDK's extraProgramPages copy
The guard landed on the ggov-sdk copy only; the two files are meant to be identical, so the frac registry deploy would still have asked for more extra program pages than AVM v13 allows and been rejected by the network instead of by the SDK.
93319e30
feat/avm13-computed-pages
1/3 ++ 2 --
feat: fill and read back all three approval pages
The third page reached the ABI but nothing could use it: createPeriod still read the box back as two pages, a single app call could only buy 8192 bytes of box write budget, and both SDK wrappers passed page3 empty. - createPeriod reads three pages, like createInstance, so a program over 8192 bytes is no longer truncated at appcreate time. Both read at the running offset, so an empty trailing page stays a no-op. - splitApprovalPages fills all three. Its ceiling is 12282 bytes (3 * 4094), which is as much as v13's 16KB total-application-arguments cap allows: four encoded pages plus a method selector is over it. - Box I/O budget is pooled across the group, so the upload spreads the references it needs over the upload call plus no-op increaseBudget companions — 12 references, two app calls, for a full three-page program. - addPeriod/addInstance size the group's reference slots from the length of the box actually deployed, padding the same way when the read outgrows one call's 8 slots. At today's sizes (period 4066, instance 6310) neither group gains a transaction. Tests upload a 10000-byte program on both registries — past the 8188 two arguments carry and past the 8192 one call's references buy — and read the box back byte-for-byte. Creating an app from a >8192-byte box is not covered: that needs a valid 12KB TEAL program, which nothing here has.
88ea4878
feat/avm13-computed-pages
23/5,660 ++ 4,088 --
Merge 24242cb001acc2328900a9bb8663595ae65cc2d6 into 543110998c63b82a7f517c631c32ae62b9fbe9e3
67431c29
pull/943/merge
No file changes
Merge 37c276a4d489684d8859b98a6cbc1f81ad3f18a3 into 543110998c63b82a7f517c631c32ae62b9fbe9e3
364fd788
pull/938/merge
No file changes
Merge 9b55220693665bfc9e0027957402a6e0b439c54c into 543110998c63b82a7f517c631c32ae62b9fbe9e3
0683bb23
pull/908/merge
No file changes
Merge 0fb747f3e1701d52e1a888978f50cdc9478ed233 into 543110998c63b82a7f517c631c32ae62b9fbe9e3
379843da
pull/914/merge
No file changes
Merge c3c8c50e4cb624fe7965be546800c74771819b90 into 543110998c63b82a7f517c631c32ae62b9fbe9e3
005d9d22
pull/939/merge
No file changes
Merge e6daeea4ae3b7b6588baf48caac8204ba1e09622 into 543110998c63b82a7f517c631c32ae62b9fbe9e3
088912c6
pull/906/merge
No file changes
Merge bff2a629fcffe1e288416fcbb6f0f57756212f5c into 543110998c63b82a7f517c631c32ae62b9fbe9e3
ee7dcc08
pull/912/merge
No file changes
Merge aef0d6ca808a5fe66f2294fe755ebf8355dd8601 into 543110998c63b82a7f517c631c32ae62b9fbe9e3
d0431ed2
pull/936/merge
No file changes
Merge f0fbce9843fee312dd29cb9c93faec4b0c167bde into 543110998c63b82a7f517c631c32ae62b9fbe9e3
77765c75
pull/919/merge
No file changes
Merge 57949f0dad4e63529e4b22b799ecaf9cceb81d67 into 543110998c63b82a7f517c631c32ae62b9fbe9e3
34ef8116
pull/895/merge
No file changes
Merge 1fbc6eadaeb8faaf9cc31bd66944bdbb868fa6e5 into 543110998c63b82a7f517c631c32ae62b9fbe9e3
b4bda3dc
pull/897/merge
No file changes
Merge be8e1e434b9bb55110e97432f5eade44c7708839 into 543110998c63b82a7f517c631c32ae62b9fbe9e3
060de376
pull/933/merge
No file changes
Merge ffcb2eaa80a4c154ab1541e54780f154c586e91c into 543110998c63b82a7f517c631c32ae62b9fbe9e3
30ebe4f7
pull/909/merge
No file changes
Merge 5df0bf523ded8b973cccf5fb2d50dd58f8f7a695 into 543110998c63b82a7f517c631c32ae62b9fbe9e3
b358861e
pull/892/merge
No file changes
Merge b2d15371b39355b90b043f60ba215c0ccea6ed53 into 543110998c63b82a7f517c631c32ae62b9fbe9e3
ffb6ef21
pull/900/merge
No file changes