Unicity project — daily brief

Friday, 29 May 2026

Coverage: Thursday, 28 May 2026 · GitHub API (author + involves sweep) Updated: 29 May 2026, 08:51 UTC
PRs merged
20
Releases
0
Open PRs >7 days
41
Contributors
3
Astrid / Sphere / Network
3 / 16 / 1
Astrid3 PRs merged
Bearer revocation and CORS routing fixes
PR #774 corrects a wiring bug that prevented cors_allow_origins from being applied to the router, ensuring cross-origin policies are enforced as configured. PR #775 builds on the gateway auth layer by adding bearer token revocation triggered on principal deletion, closing a credential-lifetime gap where tokens could outlive their owning principal. Together these two fixes harden the gateway's security posture around identity lifecycle and origin control.
unicity-astrid
HTTP admin API and invite token primitives
PR #768 introduces a dedicated HTTP admin API surface alongside invite token primitives in the gateway. This gives operators a structured programmatic interface for administrative operations rather than relying on out-of-band tooling. The invite token primitives lay the groundwork for controlled onboarding flows, allowing the gateway to gate new principal creation behind issued tokens.
unicity-astrid
Sphere16 PRs merged
Resilient profile storage and OpLog durability
PR #317 pins OpLog blocks, requests persistent browser storage, and emits a critical-block-evicted event to signal data-loss risk before it occurs. PR #316 adds an OpLog epoch-reset primitive with a permanent walkback floor, enabling controlled log compaction without losing the authoritative history baseline. PR #331 replaces the previous blockstore with an IDBBlockstore-backed implementation, adds a pointer-publish gate, and includes a token fallback path to ensure profile data survives browser cache eviction. PR #309 adds identity-key fallback storage and tolerates LoadBlockFailedError so that transient block-fetch failures no longer surface as hard identity failures. Collectively these changes make the profile subsystem significantly more durable under adverse browser storage conditions.
sphere-sdk
Connectivity surface, offline gating, and BLOCKED state recovery
PR #315 introduces a sphere.connectivity surface that exposes network reachability state and gates the offline send-path, preventing operations that would silently fail when infrastructure is unreachable. PR #327 softens the connectivity gate from a hard block to an advisory, allowing the application to proceed with degraded UX rather than a full stop when connectivity is uncertain. PR #320 adds logic to auto-clear the BLOCKED profile state on a successful pointer poll, resolving the case where transient connectivity blips left profiles permanently stuck. These changes give the SDK a coherent, recoverable model for partial and intermittent connectivity.
sphere-sdk
Lazy profile loading and snapshot-backed sync
PR #314 implements lazy loading of the local profile from a snapshot blob on startup, deferring the full remote sync to the background. This decouples perceived load time from network latency, letting the UI become interactive immediately while the SDK reconciles with the remote state asynchronously. The approach also provides a fallback baseline if remote sync fails, improving robustness in offline-first scenarios.
sphere-sdk
Service-status banner, dev endpoint overrides, and layout fixes
PRs #317 through #320 in sphere build out a service-status banner that probes aggregator, IPFS, Nostr, and Markets API endpoints and surfaces their health in the UI, with PR #318 correcting the banner truth logic and PR #319 adding a direct IPFS gateway probe that bypasses the SDK IpfsPinger for more accurate results. PRs #321 and #322 extend developer tooling to allow runtime override of Nostr, IPFS, Faucet, Market, and aggregator endpoints via console commands or localStorage, with PR #322 exposing these overrides through a Settings modal GUI. PR #323 fixes a z-index stacking issue where BaseModal was rendered beneath MobileBottomNav, and sphere-sdk PR #322 wraps local-infra images for relay, faucet, and aggregator in the ssl-manager, enabling HTTPS in local development. These changes significantly accelerate developer iteration and make infrastructure health visible to end users.
sphere, sphere-sdk

Timeline — Thursday, 28 May 2026

Thu 13:18–13:20sphere-sdk #309 (fix(profile,sphere): identity-key fallback storage + LoadBlockFailedError tolerance) · sphere-sdk #317 (fix(profile)(#311): pin OpLog blocks + request persistent storage + critical-block-evicted event) · sphere-sdk #316 (feat(profile)(#310): OpLog epoch-reset primitive with permanent walkback floor)
Thu 13:24–13:26sphere-sdk #314 (feat(profile)(#313): lazy load from local snapshot blob, background remote sync) · sphere-sdk #315 (feat(core)(#312): sphere.connectivity surface + offline send-path gating)
Thu 16:07–16:08sphere-sdk #320 (fix(profile)(#319): auto-clear BLOCKED on successful pointer poll for transient-connectivity reasons) · sphere #317 (feat(layout): service-status banner for aggregator/IPFS/Nostr/market)
Thu 16:35sphere #318 — fix(layout): banner truth — probe Markets API + force ping on re-init
Thu 16:50sphere #319 — fix(layout): direct IPFS gateway probe (bypass SDK IpfsPinger)
Thu 17:42sphere #320 — feat(devtools): custom aggregator URL override via console / localStorage
Thu 17:58sphere #321 — feat(devtools): extend dev overrides to Nostr, IPFS, Faucet, Market endpoints
Thu 18:07sphere #322 — feat(layout): Settings modal — GUI for the dev endpoint overrides
Thu 18:18sphere #323 — fix(layout): BaseModal z-index above MobileBottomNav
Thu 19:42sphere-sdk #322 — feat(infra)(#321): ssl-manager-wrapped local-infra images for relay/faucet/aggregator
Thu 23:49sphere-sdk #327 — fix(payments)(#312): soften connectivity gate to advisory
Fri 01:45sphere-sdk #331 — fix(profile)(#330): browser durability — IDBBlockstore + pointer-publish gate + token fallback
Unicity Network1 PRs merged
BFT consensus snapshots for unicity-node
PR #3 introduces BFT snapshot support to the unicity-node, enabling the consensus layer to periodically checkpoint its state. Snapshots reduce the cost of node recovery and bootstrapping by allowing new or restarting nodes to sync from a recent snapshot rather than replaying the full chain history. This is a foundational addition to the network node's operational robustness and sets the stage for faster node onboarding as the network grows.
unicity-node
Project board comparison Stale statuses · No Status · open PRs not tracked

Astrid board ↗Backlog 166 · In progress 13 · Done 314

✗ NOT ON BOARD
MISSING
capsule-memory #3 · Open PR not tracked on any board
MISSING
rfcs #20 · Open PR not tracked on any board
MISSING
rfcs #21 · Open PR not tracked on any board
MISSING
rfcs #22 · Open PR not tracked on any board
MISSING
rfcs #23 · Open PR not tracked on any board
MISSING
rfcs #24 · Open PR not tracked on any board
MISSING
rfcs #25 · Open PR not tracked on any board
MISSING
capsule-react #16 · Open PR not tracked on any board
MISSING
capsule-prompt-builder #11 · Open PR not tracked on any board
MISSING
MISSING
MISSING
rfcs #27 · Open PR not tracked on any board
MISSING
rfcs #28 · Open PR not tracked on any board

Sphere board ↗Backlog 26 · In progress 19 · In review 1 · Ready 2 · Done 59

⚠ STALE STATUS
STALE
sphere-sdk #90 · PR merged, still “Backlog” on board
✗ NOT ON BOARD
MISSING
sphere #301 · Open PR not tracked on any board
MISSING
sphere-cli #3 · Open PR not tracked on any board
MISSING
sphere-cli #9 · Open PR not tracked on any board
MISSING
sphere-cli #12 · Open PR not tracked on any board
MISSING
MISSING
sphere-sdk #175 · Open PR not tracked on any board
MISSING
MISSING

Unicity Network board ↗Blocked 5 · In Dev 19 · Test 3 · Todo 66 · Done 332

⚠ STALE STATUS
STALE
aggregator-go #51 · PR merged, still “Todo” on board
✗ NOT ON BOARD
MISSING
bft-core #11 · Open PR not tracked on any board
MISSING
nostr-js-sdk #4 · Open PR not tracked on any board
MISSING
nostr-sdk #4 · Open PR not tracked on any board
MISSING
state-transition-sdk-js #106 · Open PR not tracked on any board
MISSING
unicity-node #9 · Open PR not tracked on any board
MISSING
bft-terraform #2 · Open PR not tracked on any board
MISSING
bft-ansible #2 · Open PR not tracked on any board
MISSING
js-faucet #2 · Open PR not tracked on any board
MISSING
sif #36 · Open PR not tracked on any board
MISSING
sif #40 · Open PR not tracked on any board
MISSING
sif #41 · Open PR not tracked on any board
MISSING
state-transition-sdk-java #66 · Open PR not tracked on any board
MISSING
finality-gadget #18 · Open PR not tracked on any board
MISSING
⛔ Blocked itemsAll items in Blocked column across all project boards

Unicity Network board ↗

Team activityAll members — author + involves sweep
Joshua J. Bouw @joshuajbouw
Joshua landed eight PRs into astrid this window, completing a dense gateway feature sprint: TLS termination via rustls (#776), bearer revocation on principal delete (#775), CORS wiring fix (#774), HTTP admin API with invite-token primitives (#768), latency histograms and structured per-request logs (#780), the GET /api/sys/audit historical-query endpoint (#781), operator deployment runbook (#782), and kernel-sourced OpenAPI schema typing with the default port change from 7777 to 2787 (#785). One older PR (#772, bearer revocation) remains open, likely superseded by the merged #775. He was also the driving reviewer across the corresponding issue/discussion threads (#773, #778, #779, #783, #784).
8 mergedastrid gatewayTLS + audit + OpenAPIport 2787
Pavel Grigorenko @MastaP
Pavel is actively involved across four open PRs spanning three repos: the networkId addition and mint-param reordering in state-transition-sdk-java #69 and the parallel JS migration from caller-supplied token IDs to networkId+salt in state-transition-sdk-js #119, as well as the BFT snapshots PR in unicity-node #3 and the Sphere Wishing Well app addition in sphere-apps #3. No merges recorded for this window; his focus appears to be review and co-authorship on the SDK token-ID scheme change and node snapshot work.
networkId migrationsdk-java + sdk-jsBFT snapshots4 PRs active
Alexander Khrushkov @KruGoL
Alexander has three open PRs pushing S3 image-upload support simultaneously across sphere-backoffice #7, sphere-dev-portal #6, and sphere-api #24, indicating a coordinated platform-wide storage feature rollout. He is also involved in sphere-dev-portal #7, which introduces action-level granularity, an achievement axis, and per-tab locking for level access. No merges this window; the S3 work is mid-review.
S3 image upload3 repos in parallellevel access granularity0 merged
Martti Marran @martti007
Martti is co-authoring the networkId verification and mint-transaction reorder in state-transition-sdk-java #69 and the corresponding caller-supplied token ID to networkId+salt migration in state-transition-sdk-js #119, working in tandem with b3y0urs3lf and MastaP. Both PRs are open and appear to be the primary focus for the SDK token-scheme alignment effort this sprint.
sdk-java #69sdk-js #119networkId + saltmint param reorder
@ahtotruu
ahtotruu is involved in the unicity-node audit and hardening wave: the broad audit-coverage test PR (#15) and the targeted hardening follow-ups from the BFT-snapshots audit covering issues #1, #5, and #6 (#14), as well as the foundational BFT state-snapshots-to-PoW-chain PR (#1). Engagement appears to be in a reviewer or co-contributor capacity alongside b3y0urs3lf.
unicity-node hardeningBFT snapshots auditissues #1/#5/#6reviewer
@b3y0urs3lf
b3y0urs3lf has two open PRs in unicity-node: the hardening follow-ups from the BFT-snapshots audit (#14, targeting issues #1/#5/#6) and the accompanying test/repro coverage PR (#15). They are also involved as a contributor on the state-transition-sdk-java #69 and sdk-js #119 networkId migration PRs, and on the foundational BFT snapshots PRs in unicity-node (#1 and #3).
unicity-node hardening2 open PRsBFT + networkIdaudit repros
@lploom
lploom merged the long-running BFT snapshots PR in unicity-node (#3) this window, a significant milestone for the TGE snapshot pipeline. They remain involved in the hardening follow-up (#14), the sif audit-log completion PR (#19), and the foundational BFT-to-PoW-chain PR (#1).
unicity-node #3 mergedBFT snapshotsaudit logsif #19
@vrogojin
vrogojin had a prolific merge window: 17 PRs landed across sphere and sphere-sdk, including browser profile durability fixes (sphere-sdk #331, #317, #320), a connectivity-gate softening (#327), SSL-wrapped local-infra images (#322), a full service-status banner with aggregator/IPFS/Nostr/market probes (sphere #317–#319), a Settings modal for dev endpoint overrides (sphere #321–#322), and housekeeping vendor bumps (sphere #323–#325). Four sphere-sdk PRs remain open, three addressing the SSL/proxy/relay infra rollout (#323, #324, #326) and one critical browser-profile data-loss bug (#330), with two additional open issues flagged for Nostr durability (#329) and CBOR envelope corruption (#328).
17 mergedbrowser durabilityservice-status banner3 critical bugs open

No activity this window

@igmahl, @ristik, @jvsteiner, @jait91, @0xt1mo

Sweep method (permanent): Each report runs involves:USERNAME for every team member in addition to org-level PR/issue sweeps. Catches closes, reviews, comments, and assignments — not just authored items.
Long-standing open PRsAll open PRs older than 7 days — sorted oldest first
AgePRAuthor
129d EVMDraft
bft-core #11
@MastaP
112d test: add comprehensive unit tests for uncovered modules
nostr-js-sdk #4
@b3y0urs3lf
112d Add comprehensive unit tests (366 new tests)
nostr-sdk #4
@b3y0urs3lf
72d feat: KV-backed memory with add_memory tool and /memory-export command
capsule-memory #3
@joshuajbouw
67d RFC: Capsule interface system
rfcs #20
@joshuajbouw
67d RFC: Distro system
rfcs #21
@joshuajbouw
67d RFC: Host ABI
rfcs #22
@joshuajbouw
67d RFC: Interceptor middleware chain
rfcs #23
@joshuajbouw
66d RFC: XDG-aligned VFS schemes (config://, data://, cache://, state://)
rfcs #24
@joshuajbouw
64d RFC: Agent-Composed UI via A2UI Protocol
rfcs #25
@joshuajbouw
51d Feature/test infrastructure
state-transition-sdk-js #106
@b3y0urs3lf
49d feat(uxf): UXF Inter-Wallet Transfer Protocol — implementation (51 of 52 plan tasks)
sphere-sdk #105
@vrogojin
43d feat: CI/CD fixes, documentation, security policy, and release automation
unicity-node #9
@0xgetz
43d fix: code quality improvements — Go version, CI race+lint, error mapping, bounded query, CHANGELOG
aggregator-go #145
@0xgetz
37d fix(mobile): dedicated mobile layout with bottom navigation
sphere #301
@vrogojin
35d ci: harden nightly integration workflow — drop artifact upload
sphere-cli #3
@vrogojin
24d feat(trader): add 'sphere trader withdraw' subcommand
sphere-cli #9
@vrogojin
24d Add testnet2 environment with shared S3 state backend
bft-terraform #2
@MastaP
24d Add testnet2 deployment (flat sharding, RDS, sentinel, Alloy)
bft-ansible #2
@MastaP
23d fix: drop the imagined { data: ... } wrapper from session/compact response reads
capsule-react #16
@joshuajbouw
23d fix: drop the imagined { data: ... } wrapper from session-fetch path
capsule-prompt-builder #11
@joshuajbouw
19d feat(trader): add sphere trader withdraw subcommand
sphere-cli #12
@vrogojin
18d fix(faucet): use conservative transferMode for FAUCET_REQUEST sends
js-faucet #2
@vrogojin
18d RFC: Cargo-like manifest schema with WIT refs, registry, and BLAKE3 lock
rfcs #26
@joshuajbouw
17d sif-dash: rebrand to "SIF Firewall"
sif #36
@jvsteiner
June release1/7 done · 31 days to deadlinecriticalboard ↗
2 In Dev1 Todo3 Test

✔ What's moving

Disk-backed SMT in active development
@jait91 is building the disk-backed SMT in aggregator-go. This is a core infrastructure item currently in dev with 31 days remaining.
TGE minting migration under test in JS
@martti007 is testing migration from caller-supplied token ids to networkId+salt in state-transition-sdk-js. Two related TGE items are simultaneously in the test stage.
Java TGE minting migration in test
@martti007 is also driving the Java equivalent of the minting migration in state-transition-sdk-java, creating a cross-SDK consistency effort concentrated on one owner.
Network-id consistency enforcement in test
@martti007 is testing network-id consistency enforcement during verification in state-transition-sdk-js, directly related to the minting migration items in the same repo.

⚠ What worries

86% of work incomplete with 31 days left
Only 1 of 7 items is done at 14% completion. Six items span todo, dev, and test stages, making a June 30 deadline extremely tight with no buffer for rework or integration issues.
Single owner bottleneck on four items
@martti007 owns or co-owns four of the six open items across three repos (state-transition-sdk-js x2, state-transition-sdk-java, .github). Any unavailability or context-switching overhead directly threatens the release.
Yellow paper item unassigned and in dev
The bridging external assets document in unicity-yellowpaper-tex is unassigned and only in dev. Unowned documentation work is high risk of slipping past the deadline with no accountable driver.
Disk-backed SMT still in dev, not yet in test
@jait91's aggregator-go disk-backed SMT has not reached the test stage. If development extends beyond mid-June, there will be insufficient time for testing and bug resolution before June 30.
Three items must clear test before release
All three test-stage items in state-transition-sdk-js and state-transition-sdk-java must pass, be merged, and potentially trigger downstream integration work. A defect in any one delays the others given their shared networkId+salt dependency.
Testnet/mainnet asset distinction not yet started
The .github item distinguishing testnet and mainnet assets is still in todo with @martti007 and vrogojin assigned. It has not entered development, and with @martti007 already loaded across four items, this risks being the last item addressed.