Repository navigation
Conversation
…ess page into account page Dashboard: - Stop stretching the three info cards to equal height (items-start) and collapse Global Properties to the first 10 entries behind a toggle, removing the large blank areas under Network Performance / Reward Pool - Tighten paddings, font sizes and row spacing across the dashboard cards and the activity stream rows Activity stream: - Render a readable, link-rich summary per operation (transfer from/to + amount, vote voter/target/weight, comment post link, witness votes, delegations, reward claims, limit orders, custom_json follow/reblog, ...) parsed from the full op payload the WebSocket already pushes - Block numbers link to /blocks/:id, accounts to /accounts/:name, posts to /posts/:author/:permlink; block witness links to the account page Witness detail merge: - Fold the standalone /witnesses/:id page into /accounts/:name: witness accounts get a Witness badge plus a Witness card (votes, missed blocks, last confirmed block, versions, props); /witnesses/:id now redirects - Point all witness links (witness list, account witness votes, sidebar favorites, dashboard feed) at the account page
The overview cards and the Supply/Network info cards duplicated content already shown on the Dashboard (accounts, supply, head block, ...). Drop them along with the now-unused global-stats/blockchain-props queries, so Dashboard answers 'how is the chain right now' and /stats answers 'how has the chain trended'.
… AH-lag guard Reworks the follow loop per the review directive and the 19-day ops-gap incident: - Target the last irreversible block (LastIrreversibleBlockNum), never the head: every ingested block is final (no orphan pollution) and its account_history entry exists by construction. - Remove the single-block followBlock mode entirely. One batching rule for all distances: gap > follow_threshold (default 100, LIVE_SYNC_FOLLOW_ THRESHOLD) → chunkSize batches (default now 100, LIVE_SYNC_CHUNK_SIZE); smaller gap → one call. Caught up → sleep 3s and poll again. - syncChunk fails and retries any block that returns zero ops. Every block carries at least producer_reward, so an empty ops list means the node's account_history index has not recorded the block yet; writing the header anyway was the 19-day ops gap (blocks+transactions landed, operations never did). Docs synced (AI-driver 01/03, LiveSyncConfig comments).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Two failure modes observed on the full-replay test database, both from following too close to the head:
get_ops_in_blockon seconds-old blocks hits the public node's account_history index before it has recorded the block — returns empty ops, no error — andfollowBlockwrote the block header anyway. Every block processed in follow mode lost its operations; blocks+transactions kept landing, masking the gap.HeadBlockNumbermeans non-final blocks are ingested (see the duplicate-creation-op incident on the same database).What
Per the review directive, the follow loop is now:
LastIrreversibleBlockNum) — every ingested block is final and AH-indexed by construction.follow_threshold(default 100,LIVE_SYNC_FOLLOW_THRESHOLD) →chunkSizebatches (default now 100,LIVE_SYNC_CHUNK_SIZE); smaller gap → single call; caught up → sleep 3s and poll.Verified
go build,go vet,go test -count=1 ./internal/... ./cmd/...all pass.