Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
2624 commits
Select commit Hold shift + click to select a range
a66c13a
fix: Stop latest_height from silently returning 0 on network errors
nikooo777 Apr 14, 2026
077e6de
impr: code style
speeddragon Apr 15, 2026
87bc18c
fix: Timeout on 500 when detail message is too large
speeddragon Mar 31, 2026
6e0bc7e
impr: Add truncate
speeddragon Mar 31, 2026
a4f14a2
fix: maps to hb_opts
speeddragon Mar 31, 2026
f9f34c8
impr: Remove list
speeddragon Mar 31, 2026
5ebc7d9
impr: Add docs
speeddragon Apr 14, 2026
13e3c7e
impr: Update to use latest elmdb-rs code
speeddragon Apr 16, 2026
c561f31
chore: align tree with verified post-rebase state
nikooo777 Apr 16, 2026
d121ebe
chore: HTTP reply `ip` fix; HTTP client short events in default prints
samcamwilliams Apr 17, 2026
78e98b6
fix: remove dead signature algorithm reference
samcamwilliams Apr 17, 2026
e029c26
Merge pull request #864 from permaweb/rebase/neo-edge
samcamwilliams Apr 17, 2026
e401d6d
feat: pass original assignment id on deduped messages
jfrain99 Apr 17, 2026
666132e
Merge pull request #867 from permaweb/feat/pass-orig-id-to-genesis-wasm
jfrain99 Apr 17, 2026
538f399
feat: add http_request paranoid mode for outbound message verification
NickJ202 Apr 17, 2026
4c012fa
feat(httpsig): optional keyid + `id' param on signature-input
samcamwilliams Apr 18, 2026
21c0948
Merge pull request #871 from permaweb/feat/httpsig-commitment-id-param
samcamwilliams Apr 19, 2026
007e749
perf(opts): memoise default_message/0 per Erlang process
samcamwilliams Apr 19, 2026
28b67ec
Merge pull request #872 from permaweb/perf/opts-caching
samcamwilliams Apr 19, 2026
cfddf9c
feat(test): auto-wire `_test_parallel` EUnit generators via parse_tra…
samcamwilliams Apr 20, 2026
e8e101b
Merge pull request #873 from permaweb/feat/eunit-test-parallel-autowire
samcamwilliams Apr 20, 2026
c4d58ea
perf(tests): parallelize safe-to-race modules and per-test store isol…
samcamwilliams Apr 19, 2026
fe5e67e
perf(tests): remove leftover ?debug_wait in hb_store_gateway
samcamwilliams Apr 19, 2026
dc15aba
perf(tests): parallelize dev_process_test_vectors and dev_query_test_…
samcamwilliams Apr 19, 2026
48f082a
perf(tests): parallelize dev_router (22 tests, 14s -> 5.4s)
samcamwilliams Apr 19, 2026
e63e963
perf(tests): parallelize dev_bundler and dev_router; fix scheduler-ca…
samcamwilliams Apr 19, 2026
6776acf
perf(tests): parallelize dev_scheduler; isolate http_init store
samcamwilliams Apr 19, 2026
85f5030
perf(tests): parallelize offset_item_cases_test network fetches
samcamwilliams Apr 19, 2026
544d82e
perf(tests): drop unnecessary ?debug_wait(100) in scheduler http test
samcamwilliams Apr 19, 2026
23e5503
perf(tests): replace hb_name:all_test 1 s sleep with wait_until poll
samcamwilliams Apr 19, 2026
4be18d9
refactor(query_graphql): use hb_name:singleton/2 instead of hand-roll…
samcamwilliams Apr 19, 2026
5d5cefb
refactor(bundler): name server after the HTTP server it belongs to
samcamwilliams Apr 19, 2026
e987052
refactor(scheduler): normalise test isolation to match every other mo…
samcamwilliams Apr 19, 2026
dece456
perf(test): migrate test modules to `_test_parallel' suffix
samcamwilliams Apr 20, 2026
d96bf89
Merge pull request #874 from permaweb/agent-/hardcore-lalande-90bbb3
samcamwilliams Apr 20, 2026
a9e737b
perf(opts): fast-path hb_opts:get/3 for the common Opts shapes
samcamwilliams Apr 19, 2026
bbc790c
perf(message): skip paranoid_verify when disabled before any work
samcamwilliams Apr 19, 2026
a57bbaa
perf(maps): fast-path hb_maps wrappers for non-link values
samcamwilliams Apr 19, 2026
f21a041
perf(ao): fast-path normalize_keys/2 for all-binary-keys maps
samcamwilliams Apr 19, 2026
6bc10ac
perf(persistent): skip group computation when await_inprogress is false
samcamwilliams Apr 19, 2026
dde5b8a
style(opts): single-% comments in hb_opts:get/3 fast-path block
samcamwilliams Apr 20, 2026
1d2a3ea
Merge pull request #870 from permaweb/feat/http-request-paranoid-mode
jfrain99 Apr 20, 2026
580a2df
Merge pull request #877 from permaweb/perf/spring-clean-no-pdict
samcamwilliams Apr 20, 2026
3c6a617
Merge pull request #859 from permaweb/VinceJuliano/fix-legacy-post
samcamwilliams Apr 20, 2026
bb284d7
Refactor hb_store to device-style APIs
samcamwilliams Apr 22, 2026
2ef2741
Polish hb_store device API refactor
samcamwilliams Apr 22, 2026
2fb9313
Remove review cycle notes
samcamwilliams Apr 22, 2026
5174d01
Refine store result handling
samcamwilliams Apr 22, 2026
f66a699
Tighten query store fallbacks
samcamwilliams Apr 22, 2026
9a1e436
Tighten store module device APIs
samcamwilliams Apr 22, 2026
fa780b7
Tighten store read result handling
samcamwilliams Apr 22, 2026
58261d3
Trim store diffs and tighten LMDB paths
samcamwilliams Apr 22, 2026
1c0e351
Restore store docs and trim no-op cases
samcamwilliams Apr 22, 2026
255087f
Naturalize FS store resolve API
samcamwilliams Apr 22, 2026
ef8b0b3
Guard Prometheus writes in test mode
samcamwilliams Apr 22, 2026
ec4156a
Keep commitment hydration local
samcamwilliams Apr 23, 2026
221ce45
Fix volatile root listing
samcamwilliams Apr 23, 2026
b4a098a
Merge pull request #882 from permaweb/expr/hb-store-device-api
samcamwilliams Apr 23, 2026
ac9fc18
Hard-switch node messages to binary keys
samcamwilliams Apr 24, 2026
d112a84
Trim hard-switch boundary cleanup
samcamwilliams Apr 24, 2026
52b17e5
Make permanent node state message-native
samcamwilliams Apr 24, 2026
5f5a3ce
Merge pull request #884 from permaweb/expr/hard-switch-node-msg-binaries
samcamwilliams Apr 24, 2026
0ec5723
feat(push): max-depth bound on recursive fan-out + post-compute push …
samcamwilliams Apr 23, 2026
343e2d5
Merge pull request #885 from permaweb/feat/push-max-depth
samcamwilliams Apr 24, 2026
0d26641
perf(process): bypass worker queue for cache-resolvable compute reads
samcamwilliams Apr 22, 2026
7be36a9
fix(process): use binary opts in cached worker grouping
samcamwilliams Apr 25, 2026
330f876
fix(process): require explicit cached slot for bypass
samcamwilliams Apr 25, 2026
3e809df
fix(process): keep invalid slots on worker path
samcamwilliams Apr 25, 2026
fca6c1e
Revert "fix(process): keep invalid slots on worker path"
samcamwilliams Apr 25, 2026
f7f7a42
style(process): use inline comment markers in grouper test
samcamwilliams Apr 25, 2026
e351822
refactor(process): simplify cached compute grouping
samcamwilliams Apr 25, 2026
dc66fac
config(process): enable process workers by default
samcamwilliams Apr 25, 2026
fe6ab13
test(opts): drop process workers default test
samcamwilliams Apr 25, 2026
6be3d9b
fix(process): store slots before notifying waiters
samcamwilliams Apr 25, 2026
0e08db0
refactor(process): trim cache-bypass patch
samcamwilliams Apr 26, 2026
9c41129
Revert "refactor(process): trim cache-bypass patch"
samcamwilliams Apr 26, 2026
436148a
Merge pull request #888 from permaweb/feat/persistent-process-workers
samcamwilliams Apr 26, 2026
ba183cf
Fix IP host name derivation
samcamwilliams Apr 30, 2026
40b74af
Merge pull request #892 from permaweb/fix/ip-name-derivation
samcamwilliams Apr 30, 2026
6320a36
feat: add dynamic metering for bundler uploads
samcamwilliams Apr 30, 2026
462bf48
fix: price all metered parties by default
samcamwilliams Apr 30, 2026
69f98e5
perf: skip bundler byte metering when inactive
samcamwilliams Apr 30, 2026
30be231
refactor: simplify bundler metering call
samcamwilliams Apr 30, 2026
372fd32
docs: tighten metering device API
samcamwilliams Apr 30, 2026
25a6b5c
refactor: lean on hook error handling
samcamwilliams Apr 30, 2026
2b4186c
refactor: inline bundler completion hooks
samcamwilliams Apr 30, 2026
845533c
refactor: remove bundler opts refresh
samcamwilliams Apr 30, 2026
8e80280
refactor: simplify metering totals
samcamwilliams Apr 30, 2026
33000e0
refactor: make metering helper-only
samcamwilliams Apr 30, 2026
594f3ff
refactor: use committed message in metering test
samcamwilliams Apr 30, 2026
5186553
refactor: reuse bundled item sizes
samcamwilliams Apr 30, 2026
c76788a
refactor: use bundled size for queue bytes
samcamwilliams Apr 30, 2026
694e8ee
refactor: reuse verified bundled items
samcamwilliams Apr 30, 2026
92839f2
Revert "refactor: reuse verified bundled items"
samcamwilliams Apr 30, 2026
62f134c
impr: Fix hb_store start
speeddragon May 4, 2026
c319708
wip: Device IDs should be specs. Find impls from trusted device authors.
samcamwilliams May 5, 2026
ccd4959
Fix remote device spec loading
samcamwilliams May 5, 2026
85d3118
Fix remote device spec loading via local gateway
samcamwilliams May 5, 2026
e90dee3
chore: clarity
samcamwilliams May 5, 2026
a9b9be0
Merge pull request #898 from permaweb/fix/device-spec-loading
samcamwilliams May 5, 2026
a644f9d
Merge pull request #895 from permaweb/feat/dynamic-metering
samcamwilliams May 5, 2026
5281e2d
fix(cache): drop strict ok-match on best-effort store writes
shyba Apr 27, 2026
4505ca6
Merge pull request #889 from permaweb/fix/hb-cache-readonly-write
samcamwilliams May 6, 2026
16a2c9f
Merge pull request #897 from permaweb/fix/hb_store_start
samcamwilliams May 6, 2026
65e8f73
feat(hb_opts): support comma-separated HB_CONFIG sources
samcamwilliams May 7, 2026
61be9c0
impr: Reason can be multiple line. For debug is better to appear in last
speeddragon May 7, 2026
f420a80
impr: Catch failure tuple on post proofs
speeddragon May 7, 2026
cd40557
fix: prevent hyperbuddy startup from crashing when served over plain …
NickJ202 May 7, 2026
c1c0734
Merge pull request #902 from permaweb/fix/insecure-http-runtime
samcamwilliams May 7, 2026
6a15168
fix: dev_name tests, because previous ARNS transaction list was black…
speeddragon May 14, 2026
466cf48
Merge pull request #907 from permaweb/fix/dev_name_tests
samcamwilliams May 14, 2026
d7d786a
impr: Little code improvements
speeddragon May 14, 2026
590dd19
impr: Convert atom with underscore to binary with dash
speeddragon May 15, 2026
a2f5a9e
fix: gap-fill and exact-range trim for post-threshold chunks
nikooo777 May 12, 2026
5c6f518
impr: Simplify logic
speeddragon May 12, 2026
de54551
impr: Remove function comment
speeddragon May 12, 2026
0209cec
impr: Make start, stop and scope common to all store policies
speeddragon May 15, 2026
afa57f7
fix: dev_manifest is broken after config from atom to binary changed
speeddragon May 15, 2026
4c97587
impr: Fix warnings on hb_store_gateway
speeddragon May 15, 2026
2d9ae58
Merge pull request #911 from permaweb/fix/dev_manifest
samcamwilliams May 15, 2026
50b7f18
impr: Fix ARNS resolver after atom to binary change
speeddragon May 15, 2026
9c56ad8
Merge pull request #910 from permaweb/fix/store_policies
samcamwilliams May 15, 2026
59a3baa
Merge pull request #908 from permaweb/impr/little
samcamwilliams May 15, 2026
85ffcc5
Merge pull request #912 from permaweb/fix/arns_resolver
samcamwilliams May 15, 2026
d4bfe62
Merge pull request #901 from permaweb/impr/task_fail_logs
samcamwilliams May 15, 2026
b192356
refactor: add direct AO boundary execution
samcamwilliams May 15, 2026
a2bb7a7
refactor: move shared helpers out of device modules
samcamwilliams May 15, 2026
bbfdbcb
refactor: route message and codec helpers through public APIs
samcamwilliams May 15, 2026
f4e24b8
refactor: route runtime services across device boundaries
samcamwilliams May 15, 2026
aa565b1
test: move shared fixtures out of device modules
samcamwilliams May 15, 2026
b6efdee
fix: address device boundary review comments
samcamwilliams May 16, 2026
08bfd55
fix: use direct structured decode in singleton
samcamwilliams May 16, 2026
b3630f3
fix: require structured decode type
samcamwilliams May 16, 2026
618be36
refactor: decode structured values in hb_util
samcamwilliams May 16, 2026
09e1c0a
impr: add forced device and key execution modes to hb_ao:direct
samcamwilliams May 16, 2026
b15fd32
refactor: highlight non-cryptographically-linked nature of hb_ao:raw
samcamwilliams May 16, 2026
df1e237
refactor: use raw calls for kernel device helpers
samcamwilliams May 16, 2026
fd9fc6c
refactor: use raw calls across device boundaries
samcamwilliams May 16, 2026
286e1cd
chore: small clarity improvements in internal bundling flow
samcamwilliams May 16, 2026
67cc2e7
chore: remove unnecessary wrappers, leaving `hb_ao:raw` calls clearly…
samcamwilliams May 16, 2026
cff5b26
Merge pull request #913 from permaweb/feat/device-boundary-cleanup
samcamwilliams May 16, 2026
765dcda
Merge pull request #904 from permaweb/fix/post-threshold-chunk-gap-fill
samcamwilliams May 18, 2026
60a6177
feat: add device archive codec
jfrain99 May 18, 2026
c112bd8
revert: remove device archive codec
jfrain99 May 18, 2026
a236bf3
fix: enforce strict tag-section boundary in ANS-104
nikooo777 May 19, 2026
7c99a66
test: align index_ids_test with fixed ANS-104 tag boundary
samcamwilliams May 19, 2026
ceeac7b
Merge pull request #914 from permaweb/fix/ans104-strict-tag-boundary
samcamwilliams May 19, 2026
26219c9
test: align index_ids_test with fixed ANS-104 tag boundary
samcamwilliams May 19, 2026
bfe3620
Merge remote-tracking branch 'origin/pr-914' into pr-914
samcamwilliams May 19, 2026
9a97b09
feat: add device packaging pipeline
samcamwilliams May 18, 2026
ad285cd
refactor: split core forge and preloaded devices
samcamwilliams May 19, 2026
4659281
docs: document device packaging workflow
samcamwilliams May 19, 2026
3079f56
fix: enforce correct validation on `low-trust` load; remove unsafe `all`
samcamwilliams May 19, 2026
2c1d4b5
impr: organize core modules by area
samcamwilliams May 19, 2026
bd8a2f1
fix: matching build changes
samcamwilliams May 19, 2026
7369e60
feat: improve eunit output for generated hashes
jfrain99 May 19, 2026
df62acf
Merge remote-tracking branch 'origin/impr/kernel-org-test-output' int…
samcamwilliams May 19, 2026
7f912a4
Merge pull request #915 from permaweb/rc/0.10
samcamwilliams May 19, 2026
e58b4de
fix: remove tip-5 from servers
shyba May 19, 2026
379e84a
Merge pull request #919 from permaweb/fix/rm_tip_5
samcamwilliams May 19, 2026
75082bd
fix(forge): install templates where rebar3 reads them
samcamwilliams May 20, 2026
a51a93c
fix(forge): move template installer to repo root
samcamwilliams May 20, 2026
8c19c6a
Merge pull request #921 from permaweb/fix/install-template-commands
samcamwilliams May 20, 2026
0510a6a
test: add test to reproduce corruption issue
JamesPiechota May 17, 2026
109233b
test: make the upload script more flexible
JamesPiechota May 19, 2026
4e2aa69
fix: preserve per-subtree bundle state through message conversions
JamesPiechota May 20, 2026
47c7c49
test: cover per-subtree bundle state across the message@1.0 APIs
JamesPiechota May 20, 2026
698e1ba
fix: repair bundle hint device tests
samcamwilliams May 21, 2026
8053889
fix: mostly limit bundle flag to root message
JamesPiechota May 22, 2026
d9cb33e
fix: ignore hyperbeam rt dirs in forge template
charmful0x May 22, 2026
b82b0ad
fix: enforce load-remote-devices Opts behavior
charmful0x May 22, 2026
c06e411
chore: add load_remote_devices_false_skips_gateway_test/0
charmful0x May 22, 2026
5f049b2
Merge pull request #925 from permaweb/fix/load-remote-devices-flag
samcamwilliams May 22, 2026
751e148
fix: clean up bundle flag handling
JamesPiechota May 22, 2026
29e17b4
feat(forge): add device CLI filters
samcamwilliams May 22, 2026
6be1816
feat(forge): filter device tests
samcamwilliams May 22, 2026
cca5b4d
feat(forge): add device test timeouts
samcamwilliams May 22, 2026
b0c3807
perf(hook): slim hot path
samcamwilliams May 23, 2026
885d626
feat(event): add guarded hook
samcamwilliams May 23, 2026
f22430d
fix(hook): strip current hook during handlers
samcamwilliams May 23, 2026
e8d50eb
feat(event): record events from counter path
samcamwilliams May 24, 2026
4057000
feat(events): add events device
samcamwilliams May 24, 2026
5e6934f
feat(forge): add device test event reports
samcamwilliams May 24, 2026
3be2111
fix(hook): keep recursion guard step-local
samcamwilliams May 24, 2026
d2197bd
perf(event): keep record opts off default message
samcamwilliams May 24, 2026
0927fa5
revert: restore edge before accidental pushes
samcamwilliams May 24, 2026
6146be5
feat(forge): add device CLI filters
samcamwilliams May 22, 2026
8a79a31
feat(forge): filter device tests
samcamwilliams May 22, 2026
dfeb564
feat(forge): add device test timeouts
samcamwilliams May 22, 2026
4f4de61
Merge pull request #928 from permaweb/impr/test-flags
samcamwilliams May 24, 2026
d8fa166
perf(hook): slim hot path
samcamwilliams May 23, 2026
e6af93a
feat(event): add guarded hook
samcamwilliams May 23, 2026
a852a0e
fix(hook): strip current hook during handlers
samcamwilliams May 23, 2026
86b5fc7
feat(event): record events from counter path
samcamwilliams May 24, 2026
90e82ad
feat(events): add events device
samcamwilliams May 24, 2026
c1dbb7c
feat(forge): add device test event reports
samcamwilliams May 24, 2026
fbf986b
fix(hook): keep recursion guard step-local
samcamwilliams May 24, 2026
ce4af6c
perf(event): keep record opts off default message
samcamwilliams May 24, 2026
1b5a1fa
impr(events): streamline flight recorder reports
samcamwilliams May 24, 2026
04415f7
impr(events): refine flight recorder filters
samcamwilliams May 24, 2026
5d4961b
impr(events): restyle flight recorder
samcamwilliams May 24, 2026
81d766a
impr(events): format recorder counts
samcamwilliams May 24, 2026
595c07e
fix(events): avoid persistent recorder transfer
samcamwilliams May 24, 2026
c1cd413
impr(recorder): refine flight recorder API
samcamwilliams May 24, 2026
2d212c5
impr(recorder): expose take-off path
samcamwilliams May 24, 2026
8b4ab32
docs(recorder): document flight recorder API
samcamwilliams May 24, 2026
d4b04cd
impr(recorder): refine flight recorder UI
samcamwilliams May 25, 2026
2ac316d
fix(recorder): redact private event fields
samcamwilliams May 25, 2026
fa1a64c
Merge pull request #929 from permaweb/feat/event-recorder
samcamwilliams May 25, 2026
2394861
fix(recorder): redact private event fields
samcamwilliams May 25, 2026
995d14b
fix: redact some events with priv* prefix
charmful0x May 25, 2026
53cc98d
fix: dev_secret.erl wallet-events redaction
charmful0x May 25, 2026
8d1e5d9
fix: run parallel generator tests
jfrain99 May 25, 2026
84ed7ed
impr: uncomment, fix scheduler_server benchmark test
jfrain99 May 25, 2026
fd1f222
fix: switch to priv prefix
charmful0x May 25, 2026
1d4afa1
fix: set/4 priv events
charmful0x May 25, 2026
ce16958
fix: dev_http_auth events
charmful0x May 25, 2026
c74702e
fix: cookie events
charmful0x May 25, 2026
66c59ec
fix: patch httsig events
charmful0x May 25, 2026
509458e
Merge pull request #933 from permaweb/fix/run-parallel-generator-tests
samcamwilliams May 25, 2026
f6782fc
Merge pull request #931 from permaweb/fix/redact-priv
samcamwilliams May 25, 2026
11cc718
fix: redact more events
charmful0x May 25, 2026
a21aeb7
Merge pull request #934 from permaweb/fix/redact-priv-followup
samcamwilliams May 25, 2026
10d0d6a
Fix device publish uploads
samcamwilliams May 26, 2026
2b965ba
fix(device): package preloaded store in release
shyba May 22, 2026
e705e9a
Merge pull request #935 from permaweb/fix/release-lmdb
samcamwilliams May 26, 2026
0469976
Fix device publish runtime setup
samcamwilliams May 26, 2026
4135280
Fix device publish codec bootstrap
samcamwilliams May 26, 2026
4060d36
chore: bump version number for start of 0.10 series.
samcamwilliams May 27, 2026
7b0e9f6
chore: remove SNP from base distribution
samcamwilliams May 27, 2026
8ed5f60
chore: remove Green Zone from base distribution
samcamwilliams May 27, 2026
fce2ba4
chore: deep clean removed device residue
samcamwilliams May 27, 2026
02883d9
fix: include default release config
samcamwilliams May 27, 2026
8029e1e
Revert "fix: include default release config"
samcamwilliams May 27, 2026
d7df384
chore: revert documentation changes
samcamwilliams May 27, 2026
6d2eb59
feat(forge): gate system architecture metadata
samcamwilliams May 27, 2026
af1e3bd
Merge pull request #937 from permaweb/chore/remove-snp
samcamwilliams May 27, 2026
460029e
Merge pull request #936 from permaweb/chore/0.10-release-line
samcamwilliams May 27, 2026
fd9595b
feat: Support flexible, nested matching modes in `hb_message`
samcamwilliams May 28, 2026
312988c
Merge pull request #938 from permaweb/feat/flex-match
samcamwilliams May 28, 2026
3f28408
impr: terminate early when forge bootstrap lacks required device
samcamwilliams May 28, 2026
5699d81
Merge pull request #939 from permaweb/agent/forge-bootstrap-exclusive
samcamwilliams May 28, 2026
4271bbb
perf: export trie reserved-keys helpers
charmful0x May 28, 2026
2196d84
chore: export reserved under info/reserved
charmful0x May 29, 2026
86c834b
Merge pull request #940 from permaweb/impr/trie-reserved-keys
samcamwilliams May 29, 2026
bf8260d
Merge pull request #924 from permaweb/fix/forge-template-gitignore
samcamwilliams May 29, 2026
02bfec0
fix(arweave): preserve block JSON lists
shyba May 21, 2026
bb66fd8
Merge pull request #930 from permaweb/fix/index_ids
samcamwilliams May 29, 2026
f77973b
Merge pull request #916 from permaweb/fix/bundler-corruption-20260518
samcamwilliams May 29, 2026
f548607
dev_process_worker:compute_cached/3 — unwrap AO-Core {ao-result, body…
codex-curator May 30, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
11 changes: 0 additions & 11 deletions .githooks/_/install.sh

This file was deleted.

25 changes: 0 additions & 25 deletions .githooks/commit-msg

This file was deleted.

12 changes: 5 additions & 7 deletions .github/workflows/cd.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
uses: google-github-actions/setup-gcloud@v2

- name: Setup build tools (Erlang, Packer and Rebar3)
run: |
run: |
curl -fsSL https://apt.releases.hashicorp.com/gpg | sudo apt-key add -
sudo apt-add-repository "deb [arch=amd64] https://apt.releases.hashicorp.com $(lsb_release -cs) main"
sudo apt-get update
Expand All @@ -37,7 +37,7 @@ jobs:
git clone https://github.com/erlang/rebar3.git && cd rebar3 && ./bootstrap && sudo mv rebar3 /usr/local/bin/

- name: Build and release AO/HyperBEAM with Rebar3
run: |
run: |
rebar3 clean
rebar3 get-deps
rebar3 compile
Expand All @@ -51,7 +51,7 @@ jobs:
echo "image_name=${TIMESTAMPED_IMAGE_NAME}" >> "$GITHUB_OUTPUT"

- name: Build Packer Image
run: |
run: |
packer init .
packer validate .
packer build -var "image_name=${{ steps.set_image_name.outputs.image_name }}" -var "project_id=${{ env.GCP_PROJECT }}" .
Expand All @@ -75,13 +75,11 @@ jobs:
- name: Setup GCloud SDK
uses: google-github-actions/setup-gcloud@v2

- name: Create Confidential VM
- name: Create VM
run: |
gcloud compute instances create ${{ env.GCP_INSTANCE_NAME }} \
--zone=${{ env.GCP_ZONE }} \
--machine-type=n2d-standard-2 \
--min-cpu-platform="AMD Milan" \
--confidential-compute-type=SEV_SNP \
--maintenance-policy=TERMINATE \
--image-family=ubuntu-2404-lts-amd64 \
--image-project=ubuntu-os-cloud \
Expand Down Expand Up @@ -119,7 +117,7 @@ jobs:
- name: Setup GCloud SDK
uses: google-github-actions/setup-gcloud@v2

- name: Delete Confidential VM
- name: Delete VM
run: |
gcloud compute instances delete ${{ env.GCP_INSTANCE_NAME }} \
--project=${{ env.GCP_PROJECT }} \
Expand Down
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
config.*
.rebar3
_build
_checkouts
Expand Down Expand Up @@ -42,4 +43,4 @@ mkdocs-site/
mkdocs-site-id.txt
mkdocs-site-manifest.csv

!test/admissible-report-wallet.json
!test/config.json
3 changes: 3 additions & 0 deletions .gitmodules
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
[submodule "native/lib/secp256k1"]
path = native/lib/secp256k1
url = https://github.com/bitcoin-core/secp256k1.git
7 changes: 6 additions & 1 deletion .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
"internalConsoleOptions": "openOnSessionStart",
"module": "hb_debugger",
"function": "start_and_break",
"args": "[${input:moduleName}, ${input:functionName}, [${input:funcArgs}]]"
"args": "[${input:moduleName}, ${input:functionName}, [${input:funcArgs}], <<\"${input:debuggerScope}\">>]"
},
{
"name": "Attach to a 'rebar3 debugger' node.",
Expand Down Expand Up @@ -65,6 +65,11 @@
"id": "funcArgs",
"type": "promptString",
"description": "(Optional) Pass arguments to the function:"
},
{
"id": "debuggerScope",
"type": "promptString",
"description": "(Optional) Additional modules/prefixes for debugger scope:"
}
]
}
3 changes: 2 additions & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"editor.detectIndentation": false,
"editor.insertSpaces": true,
"editor.tabSize": 4
"editor.tabSize": 4,
"editor.rulers": [80]
}
32 changes: 31 additions & 1 deletion .vscode/tasks.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,37 @@
{
"label": "Stop HyperBEAM",
"type": "shell",
"command": "lsof -i tcp:10000 | tail -n 1 | awk '{print $2}' | xargs kill -9"
"command": "lsof -i tcp:8734 | tail -n 1 | awk '{print $2}' | xargs kill -9"
},
{
"label": "Generate a flame graph for a function.",
"type": "shell",
"command": "rebar3 as eflame shell --eval \"hb_debugger:profile_and_stop(fun() -> ${input:moduleName}:${input:functionName}(${input:funcArgs}) end).\"",
"group": "test",
"problemMatcher": "$erlang",
"presentation": {
"echo": true,
"reveal": "always",
"focus": false,
"panel": "new"
}
}
],
"inputs": [
{
"id": "moduleName",
"type": "promptString",
"description": "Enter module:"
},
{
"id": "functionName",
"type": "promptString",
"description": "Enter an exported function name:"
},
{
"id": "funcArgs",
"type": "promptString",
"description": "(Optional) Pass arguments to the function:"
}
]
}
24 changes: 24 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
This repository contains HyperBEAM, an implementation of the AO-Core protocol.

To familiarize yourself with AO-Core, read the `README.md` file.

To understand how to write code for HyperBEAM, read `CONTRIBUTING.md` for
repository-level guidelines, and `docs/misc/hacking-on-hyperbeam.md` learn about
its debugging tools and infrastructure.

In addition to the rules outlined in `CONTRIBUTING.md`, you should abide by the
following:

1. Always be surgical in your edits. Minimize the line-of-code changes you make
during every single edit.
2. Before adding new utilities, search for existing utilities that do something
similar. Candidates are often found in `hb_ao`, `hb_util`, and `hb_test_utils`.
3. Ensure that you understand the differences between Erlang map terms and
AO-Core's messages. Messages are built using maps under-the-hood, but may also
be lazy-loaded (linkified), giving them different semantics.
4. Before submitting any code as 'complete', you **must** validate that your
new changes do not break any existing tests across the full suite. You are
never being asked to write a 'toy' implementation of features or changed. Your
code must actually work in-production.
5. Always attempt to leave the codebase in a better state than you found it. More
precise, clear, and minimal -- while maintaining the existing featureset.
131 changes: 131 additions & 0 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,131 @@
# Contributing to HyperBEAM.

There are three basic rules for writing and merging PRs to HyperBEAM:
1. The PR must not introduce additional test failures, flakes, or
removal/defeating of existing tests unless agreed by multiple maintainers.
2. Modifications to the 'kernel layer' must never be made where modifications to
the 'application layer' would suffice.
3. Merged code must abide by the existing style in the repo. Just write and merge
code that blends in. This rule sounds unimportant, but over time it is what makes
the code maintainable and understandable by a larger set of developers.
Spaghetti/mixed styles lowers comprehension, which in a security sensitive
environment => bugs => lost value. No broken windows if we can help it.

# The HyperBEAM Style Guide.

**Rule one of style guide club:** _We do not talk about style guide club._

We are here to build a fully decentralized alternative to cyberspace as it
is currently constructed. We are not interested in long conversations about
where to put commas or spaces.

**Rule two of style guide club:** _Blend in._

Rule one does not imply that we do not care about the quality of the codebase.
Far from it: We know that we will be maintaining this code for decades to come.
It is important that we are all aligned on style and patterns, but less important
what those styles and patterns actually are. Having `length(Contributors)`
styles adds overhead to understanding the codebase, which over time hides bugs
and reduces maintainability, but each stylistic choice is largely an opinion
that -- despite strong feelings -- lacks criticality. Hence, rule two:
Only write and merge code that actually _blends in_.

Write your code as if you were the author of all of the existing code. If all
of the other code is written in a certain style, then copy it. If the style
of the code in your PR would not _blend in_, then its style is objectively
in violation of `style guide club`'s rules.

In the event of disagreement, a simple rule should guide our decisions: What
does the majority of the LoC in the codebase already do? Do that. Then get
back to hacking.

If you don't like something about the style, simply contribute. If others
disagree strongly, the existing style will be kept. If your contributions are
seen by others as reasonable and inline with the canon, then it will gradually
become adopted as the standard in the codebase.

**This concludes the rules of style guide club.**

Remember: Cypherpunks write code!

# A Rough Guide to the HyperBEAM `canon`

You should pick up and continue the style of the codebase as you learn how it
works. There is no real substitute for paying attention. There are, however, a
few basic rules that are widely established and represent the core `canon` of the
codebase. As of time of {{`git blame`}}, there is highest consensus around the
following:

- Always use `-` over `_` in binary key names.
- Why: In general we try to follow the HTTP semantics RFC 9110, so all keys
should be HTTP-Header-Case. This is the style that has been used for Arweave
data protocols since inception, so to avoid confusion we maintain it in
HyperBEAM.
- Nuances:
- One weirdness we inherit from HTTP-land is that headers are actually
case-insensitive, despite the use of capitals in header descriptions,
over-the-wire they are lower-case in HTTP/2+. AO-Core shoots for the
same semantics for consistency.
- In device key resolutions that have multiple words (for example:
`i_like(Base, Req, Opts) -> {ok, <<"Turtles!">>}.`) you may be tempted
to call `~device@1.0/i_like`. Don't. Instead call `/i-like`.
`hb_ao_device` will normalize the keys and match for you.
- `hb_opts` uses all atoms for its message keys. This is a mistake. It
is nice to be able to lookup keys via atoms (normalizing as above) and
we should maintain this, but under the surface the keys should be
normal-form binaries. To avoid issues when this is translated, perform
`Opts` lookups with only atoms, or use binaries of normal-form if you
must.
- Try to keep lines to around 80 characters-ish. This is not a strict rule because
sometimes an 81-85 character line would be very ugly and harder to follow if split.
Use your judgement.
- Why: Our objective is to keep the code readable. Monster lines, and machine-enforced
strict styles, both butcher this. Human/LLM judgement can help here.
- Add a `%%% @doc` moduledoc to each new module you write, and comment every
function you write with a `%% @doc Description` above it. Inline comments are
prepended with a single `%`.
- Why: This helps humans and LLMs grok your code in the future. It also surfaces
useful information in tooltips etc upstream.
- Nuance: I do not know why the Erlang style uses `%%%` for moduledocs, `%%` for
functions, and `%` for inline comments, but it does. This can help with parsability
for some tooling and the effort-cost is minimal, so we use it.
- Avoid 'waterfalls'-style statements, instead keeping every set of statements
nested such that the start and end of the block are indented inline with each
other.
- Why: This uses slightly more lines, but makes deeply nested code much more
readable and comprehensible.
- Examples:
```erlang
BadForm = lists:map(
fun(X) ->
X * lists:sum(lists:fold(
fun(Y, Acc) ->
Y * Acc
end,
[1,2,3]
))
end
),
GoodForm = lists:map(
fun(X) ->
X *
lists:sum(
lists:fold(
fun(Y, Acc) ->
Y * Acc
end,
[1,2,3]
)
)
end
)
```
There are a few areas where there is no consensus on patterns or style yet:
- Expressing docs in the info/[0,1] call of devices. There are a few different
styles in different devices in the codebase -- if you want to add info response
'inline' docs try to pick one that already exists and see what works/doesn't.
We will need to unify them at some point.
- `maybe ... end` vs nested `case` expressions. `maybe` seems useful and preferable
in at least some cases, but bubbling the right error -- rather than just an error --
the caller can sometimes be difficult due to the `else` pattern matching.
Experimentation with patterns here would be good.
35 changes: 31 additions & 4 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,14 @@ compile:
WAMR_VERSION = 2.2.0
WAMR_DIR = _build/wamr

GENESIS_WASM_BRANCH = tillathehun0/cu-experimental
GENESIS_WASM_BRANCH = feat/hb-unit
GENESIS_WASM_REPO = https://github.com/permaweb/ao.git
GENESIS_WASM_SERVER_DIR = _build/genesis-wasm-server
GENESIS_WASM_SERVER_DIR = _build/genesis_wasm/genesis-wasm-server

HYPERBUDDY_UI_REPO = https://github.com/permaweb/hb-explorer
HYPERBUDDY_UI_PACKAGE_JSON = https://raw.githubusercontent.com/permaweb/hb-explorer/main/package.json
HYPERBUDDY_UI_TARGET = src/html/hyperbuddy@1.0/bundle.js
ARWEAVE_GATEWAY = https://arweave.net

ifdef HB_DEBUG
WAMR_FLAGS = -DWAMR_ENABLE_LOG=1 -DWAMR_BUILD_DUMP_CALL_STACK=1 -DCMAKE_BUILD_TYPE=Debug
Expand Down Expand Up @@ -50,11 +55,16 @@ $(WAMR_DIR):
--single-branch

$(WAMR_DIR)/lib/libvmlib.a: $(WAMR_DIR)
sed -i '742a tbl_inst->is_table64 = 1;' ./_build/wamr/core/iwasm/aot/aot_runtime.c; \
@if ! grep -Fq 'tbl_inst->is_table64 = 1;' ./_build/wamr/core/iwasm/aot/aot_runtime.c; then \
awk 'NR == 742 { print; print "tbl_inst->is_table64 = 1;"; next } { print }' \
./_build/wamr/core/iwasm/aot/aot_runtime.c > ./_build/wamr/core/iwasm/aot/aot_runtime.c.tmp && \
mv ./_build/wamr/core/iwasm/aot/aot_runtime.c.tmp ./_build/wamr/core/iwasm/aot/aot_runtime.c; \
fi; \
cmake \
$(WAMR_FLAGS) \
-S $(WAMR_DIR) \
-B $(WAMR_DIR)/lib \
-DCMAKE_POLICY_VERSION_MINIMUM=3.5 \
-DWAMR_BUILD_TARGET=$(WAMR_BUILD_TARGET) \
-DWAMR_BUILD_PLATFORM=$(WAMR_BUILD_PLATFORM) \
-DWAMR_BUILD_MEMORY64=1 \
Expand Down Expand Up @@ -98,9 +108,26 @@ setup-genesis-wasm: $(GENESIS_WASM_SERVER_DIR)
echo "Error: Node.js is not installed. Please install Node.js before continuing."; \
echo "For Ubuntu/Debian, you can install it with:"; \
echo " curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - && \\"; \
echo " apt-get install -y nodejs && \\"; \
echo " apt-get install -y nodejs=22.16.0-1nodesource1 --allow-downgrades && \\"; \
echo " node -v && npm -v"; \
exit 1; \
fi
@cd $(GENESIS_WASM_SERVER_DIR) && npm install > /dev/null 2>&1 && \
echo "Installed genesis-wasm@1.0 server."

# Update hyperbuddy-ui from remote bundle
update-hyperbuddy-ui:
@echo "Fetching package.json from $(HYPERBUDDY_UI_REPO)..." && \
TX_ID=$$(curl -s "$(HYPERBUDDY_UI_PACKAGE_JSON)" | grep -o '"bundle"[[:space:]]*:[[:space:]]*"[^"]*"' | cut -d'"' -f4) && \
if [ -z "$$TX_ID" ]; then \
echo "Error: Could not find 'bundle' field in package.json"; \
exit 1; \
fi && \
echo "Found transaction ID: $$TX_ID" && \
if [ -f "$(HYPERBUDDY_UI_TARGET)" ]; then \
rm "$(HYPERBUDDY_UI_TARGET)" && \
echo "Removed existing bundle.js"; \
fi && \
echo "Downloading source code from Arweave..." && \
curl -sL "$(ARWEAVE_GATEWAY)/$$TX_ID" -o "$(HYPERBUDDY_UI_TARGET)" && \
echo "Successfully updated $(HYPERBUDDY_UI_TARGET)"
Loading