Skip to content

fix(testnet): preserve release bootstrap peer identities - #406

Merged
3esmit merged 3 commits into
mainfrom
fix/404-release-bootstrap-peers
Sep 16, 2026
Merged

3esmit merged 3 commits into
mainfrom
fix/404-release-bootstrap-peers

Conversation

@3esmit

@3esmit 3esmit commented Sep 8, 2026 •

Copy link
Copy Markdown
Owner

Summary

Restore the four Bedrock network addresses and terminal peer IDs published with blockchain 0.2.4. The release configuration generator derives its IBD peer set from those IDs; the previous defaults generated an empty set despite skip_ibd: false.

Regression coverage checks exact release identities, exclusion of Blend locators, managed-input wiring, empty private-profile defaults, and preservation of existing operator initialization/runtime files. No automatic configuration or database migration is introduced.

Refs #404. The consumer now pins the merged compatible runtime from 3esmit/logos-blockchain-module#57 (879b1839050a9a3eba6b0dbca97bc11848986897), which includes the release-compatible blockchain ancestry and package profile.

Verification

  • cargo fmt --all, cargo fmt --all -- --check, git diff --check — passed on the three-file fix and dependency-lock update.
  • nix --option eval-cache false flake check --no-build --no-write-lock-file — passed.
  • nix build '.#testnet-v02-helper' --no-link -L --no-write-lock-file — running against the merged runtime pin; result will be recorded before merge.
  • python3 scripts/check-build-pipeline.py ci — passed on the final three-file candidate: 1,453 library tests (one existing ignored), 57 FFI tests, 10 standalone tests, wallet isolation, native CTest, web checks, headless CLI, and 1,342 QML tests.
  • Exact-address regression fails against the old constants and passes with the correction.
  • Real release C ABI generation: old defaults produce zero IBD peers; corrected defaults produce all four expected unique IDs without explicit IBD injection.

Fresh Basecamp GUI Initialize → Start → InitialBlockDownload → Following/Online → Stop passed. Observed LIB slot 375312, tip slot 379290, height 11878; Wallet, Blend, and Leader readiness confirmed, and /blend/info responded. Standalone validation passed fresh-profile source attestation/selection, live L2 reads, and exact source retention after restart. The final module package is now hosted-verified; consumer CI is rerun for this lock update.

Native validation used the exact merged module and blockchain revisions. Only test listener ports were adjusted; bootstrap peers, IBD settings, and bootstrap behavior were not overridden. Existing operator profiles were untouched. A stronger wrong-Channel feedback check exposed a separate UI issue: rejection leaves configuration unchanged, but the expected error is not visibly retained; that feedback check is not counted as passing.

3esmit added a commit that referenced this pull request Sep 8, 2026
Bind error accessibility exclusion to effective visibility so the hidden section message does not duplicate editor feedback and suppressed revision-conflict text is not exposed.

Extend the component tests for conflict suppression, other errors during conflict, editor open and close, and empty feedback. Native standalone baseline exposes two identical error nodes; the corrected standalone and Basecamp hierarchies expose one.

Verification: cargo fmt --all; cargo fmt --all -- --check; python3 scripts/check-build-pipeline.py ci (passed, including 1,344 QML tests); focused component suite (58 passed); native standalone and Basecamp rejection/hierarchy checks with unchanged source configuration; explicit Basecamp Stop. Native checks use candidate QML with previously verified #406 artifacts.

Refs #407
3esmit added a commit that referenced this pull request Sep 16, 2026
Give existing source mutation errors an explicit static-text role and bind their accessible name to the current feedback. Cover editor and section feedback without changing validation, persistence, or draft state.

Verification: cargo fmt --all; cargo fmt --all -- --check; python3 scripts/check-build-pipeline.py ci (passed, including 1,344 QML tests); focused component suite (58 passed); native standalone and Basecamp rejection and valid-source E2E; standalone source persistence after restart. Native E2E used candidate QML with the previously verified native artifacts from #406.

Fixes #407
3esmit added a commit that referenced this pull request Sep 16, 2026
Bind error accessibility exclusion to effective visibility so the hidden section message does not duplicate editor feedback and suppressed revision-conflict text is not exposed.

Extend the component tests for conflict suppression, other errors during conflict, editor open and close, and empty feedback. Native standalone baseline exposes two identical error nodes; the corrected standalone and Basecamp hierarchies expose one.

Verification: cargo fmt --all; cargo fmt --all -- --check; python3 scripts/check-build-pipeline.py ci (passed, including 1,344 QML tests); focused component suite (58 passed); native standalone and Basecamp rejection/hierarchy checks with unchanged source configuration; explicit Basecamp Stop. Native checks use candidate QML with previously verified #406 artifacts.

Refs #407
3esmit added a commit that referenced this pull request Sep 16, 2026
Give existing source mutation errors an explicit static-text role and bind their accessible name to the current feedback. Cover editor and section feedback without changing validation, persistence, or draft state.

Verification: cargo fmt --all; cargo fmt --all -- --check; python3 scripts/check-build-pipeline.py ci (passed, including 1,344 QML tests); focused component suite (58 passed); native standalone and Basecamp rejection and valid-source E2E; standalone source persistence after restart. Native E2E used candidate QML with the previously verified native artifacts from #406.

Fixes #407
3esmit added a commit that referenced this pull request Sep 16, 2026
Bind error accessibility exclusion to effective visibility so the hidden section message does not duplicate editor feedback and suppressed revision-conflict text is not exposed.

Extend the component tests for conflict suppression, other errors during conflict, editor open and close, and empty feedback. Native standalone baseline exposes two identical error nodes; the corrected standalone and Basecamp hierarchies expose one.

Verification: cargo fmt --all; cargo fmt --all -- --check; python3 scripts/check-build-pipeline.py ci (passed, including 1,344 QML tests); focused component suite (58 passed); native standalone and Basecamp rejection/hierarchy checks with unchanged source configuration; explicit Basecamp Stop. Native checks use candidate QML with previously verified #406 artifacts.

Refs #407
3esmit added a commit that referenced this pull request Sep 16, 2026
Give existing source mutation errors an explicit static-text role and bind their accessible name to the current feedback. Cover editor and section feedback without changing validation, persistence, or draft state.

Verification: cargo fmt --all; cargo fmt --all -- --check; python3 scripts/check-build-pipeline.py ci (passed, including 1,344 QML tests); focused component suite (58 passed); native standalone and Basecamp rejection and valid-source E2E; standalone source persistence after restart. Native E2E used candidate QML with the previously verified native artifacts from #406.

Fixes #407
3esmit added a commit that referenced this pull request Sep 16, 2026
Bind error accessibility exclusion to effective visibility so the hidden section message does not duplicate editor feedback and suppressed revision-conflict text is not exposed.

Extend the component tests for conflict suppression, other errors during conflict, editor open and close, and empty feedback. Native standalone baseline exposes two identical error nodes; the corrected standalone and Basecamp hierarchies expose one.

Verification: cargo fmt --all; cargo fmt --all -- --check; python3 scripts/check-build-pipeline.py ci (passed, including 1,344 QML tests); focused component suite (58 passed); native standalone and Basecamp rejection/hierarchy checks with unchanged source configuration; explicit Basecamp Stop. Native checks use candidate QML with previously verified #406 artifacts.

Refs #407
3esmit added a commit that referenced this pull request Sep 16, 2026
Give existing source mutation errors an explicit static-text role and bind their accessible name to the current feedback. Cover editor and section feedback without changing validation, persistence, or draft state.

Verification: cargo fmt --all; cargo fmt --all -- --check; python3 scripts/check-build-pipeline.py ci (passed, including 1,344 QML tests); focused component suite (58 passed); native standalone and Basecamp rejection and valid-source E2E; standalone source persistence after restart. Native E2E used candidate QML with the previously verified native artifacts from #406.

Fixes #407
3esmit added a commit that referenced this pull request Sep 16, 2026
Bind error accessibility exclusion to effective visibility so the hidden section message does not duplicate editor feedback and suppressed revision-conflict text is not exposed.

Extend the component tests for conflict suppression, other errors during conflict, editor open and close, and empty feedback. Native standalone baseline exposes two identical error nodes; the corrected standalone and Basecamp hierarchies expose one.

Verification: cargo fmt --all; cargo fmt --all -- --check; python3 scripts/check-build-pipeline.py ci (passed, including 1,344 QML tests); focused component suite (58 passed); native standalone and Basecamp rejection/hierarchy checks with unchanged source configuration; explicit Basecamp Stop. Native checks use candidate QML with previously verified #406 artifacts.

Refs #407
Restore the four network addresses and terminal peer IDs published with blockchain 0.2.4 so generated IBD configuration is not empty. Cover managed inputs, private profiles, and preservation of existing operator configuration.

Refs #404. Coordinate rollout with logos-blockchain-module#56.

Verification: cargo fmt --all; cargo fmt --all -- --check; python3 scripts/check-build-pipeline.py ci; git diff --check. Full gate passed: 1453 library tests, 57 FFI tests, 10 standalone tests, wallet isolation, native CTest, web checks, headless CLI, and 1342 QML tests. Exact-address regression failed before the fix and passed after it. Real release C ABI generation produced all four IBD identities. Fresh Basecamp Initialize, Start, full synchronization, service readiness, and Stop passed with the release-compatible module candidate.
@3esmit
3esmit force-pushed the fix/404-release-bootstrap-peers branch from 083b635 to 6fc77c4 Compare September 16, 2026 18:05
@3esmit
3esmit marked this pull request as ready for review September 16, 2026 20:14
Copilot AI lite review requested due to automatic review settings September 16, 2026 20:14

Copilot AI 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.

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 16, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-16T20:16:50.960751Z 8263181 Draft marked ready
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector 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.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 8263181823

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment on lines +2680 to +2682
anyhow::ensure!(!ensure_testnet_topology(&mut state)?);
anyhow::ensure!(fs::read(&initialization_path)? == operator_input);
anyhow::ensure!(fs::read(&runtime_path)? == operator_runtime);

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Migrate the obsolete generated bootstrap configuration

When upgrading an existing Testnet topology created by the previous release, bedrock.init.json already contains the old 209.38.241.182 addresses without /p2p IDs, and the generated runtime YAML may already contain the resulting empty IBD peer set. This assertion codifies that ensure_testnet_topology leaves both files unchanged, so updating LOGOS_TESTNET_BOOTSTRAP_PEERS only fixes fresh profiles while the users affected by the original bug remain stuck in Bootstrapping. Preserve genuinely operator-owned values, but detect the exact legacy generated configuration and migrate it, including arranging regeneration of the runtime configuration.

Useful? React with 👍 / 👎.

@3esmit

3esmit commented Sep 16, 2026

Copy link
Copy Markdown
Owner Author

The first consumer run found one stale policy expectation: scripts/check-release-workflow.py still required the pre-repair blockchain-module revision. Updated it to the merged runtime commit 879b1839050a9a3eba6b0dbca97bc11848986897; local ci-policy now passes all checks. A fresh hosted run is in progress.

@3esmit
3esmit merged commit 9bdd304 into main Sep 16, 2026
9 checks passed
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.

2 participants