Repository navigation
feat(signing): prepare approved initial Community profiles - #334
Merged
Merged
Conversation
This was referenced Oct 10, 2026
Contributor
Author
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.
The offline custodian can prepare one approved initial Community profile through the existing protected signer. The operation binds the exact unsigned profile and conversation grant to the operator policy, uses the existing maintainer PEM through pinned OpenSSL, and signs in the separate
elastos.collaboration-network.profile.v1domain. Public verification precedes the read-only output files.The operation supports revision 1 and produces inert startup configuration and release-pin inputs. Runtime consumes those pins after the separately reviewed Community network-pin support is integrated. The operator owns production input approval, signing, publication and activation. Existing release/head and model-catalogue operations retain their domain and custody checks.
Refs #186. Published review source
b6a582a74b129b40eaa6c19ff3aa7aed24a901fa, tree53a7d46e91a9b93feff907731b18296f02688b7b, normally merges approved develop792942b54a0383c1c484e22e5d076fcde33c7fc4into the separate four-file signing operation. All four signing files remain byte-identical to independently reviewed97fb63bb; the three earlier commits remain intact. Current validation passes 57 disposable-fixture signing tests with an existing protected interpreter, 102 product-data tests, product-data validation, diff checks and both Rustfmt checks. The ordinary canonical publication hook passes, including 2,845 Rust test executions with zero failures and 27 ignored; its receipt isf44db23685e5e71dc3c9a4438ab20afd3113ce7010b397a3ee2cce574b25e6c4. The exact remote head is verified. Required human review remains pending; this PR stays draft for that handoff.Second seed upgrade and Community activation
OMP owns production placement, signing and activation. After #309 qualification and integration with #345, select one reviewed release source containing both changes. Record its commit/tree, successful develop CI run, Release package run and artifact digests, installed Runtime/provider hashes, approved maintainer DID and disposable preflight result. Anders and OMP approve the production inputs and each activation step before execution.
Prepare the separate Community role. Approve a dedicated service account, HOME, XDG data directory, stable UDP listener and resource-limited unit. Its Runtime data root is
$COMMUNITY_XDG_DATA_HOME/elastos; the existing release service keeps its account, data and unit. Install verified artifacts to stable paths. The approved Community unit can useelastos serve --addr <approved-loopback-address> --storage-path <community-data-root>/storage, orelastos gateway --addr <approved-loopback-address>if OMP selects a gateway. OMP supplies the unit, permissions, resource limits and listener/firewall settings.Boot and bind that Runtime. First start it in isolation, with its own HOME/XDG environment and the collaboration startup file absent. Record its identity and health. Stop its own unit, set the stable listener under the same account and environment, then restart the same isolated Runtime:
Verify the actual listener and retained identity before export. This command writes the selected XDG Runtime's
config.toml. An occupied explicit listener stops startup.Export its local bootstrap receipt. Write a new owner-only file from the selected running Runtime:
Use
operatorforserve; usegatewayfor an actual gateway process. The authenticated export binds the node and ticket. Operator placement and tickets stay private.Approve and sign the initial profile offline. Prepare canonical
community-profile-input.jsonfrom the approved network/conversation IDs, bootstrap receipt, existing maintainer DID, explicit trusted signer set and canonical default grant. The grant uses sender servicechatandprofile_scoped_signer. Approve the exact input, payload and grant hashes in a separate protected policy. Set revision 1 andprevious_profile_sha256: nullin that approval policy; the revision-1 signed profile payload omits the previous-profile field. Later revisions require a separately reviewed operation. The custodian runs:The paired
collaboration-network-release-pin-v1.jsonsupplies the exact head CID, network and signer set. Keep the production key in the existing protected custodian workflow.Bind and publish the exact release inputs. Bind those exact startup-file bytes/CID and pin fragment to release preparation and signing. The current b6
release-publish.shhas no Community-file input, so reviewed pin/file admission must be integrated before the production release flow. Once that gate passes, use the existing commands:Verify the signed output and seed import through the disposable preflight before production approval.
Print and review the second release-unit upgrade. Build Release package with
seed_packageset, then run:This prints the seed-side commands; OMP executes them only after approval. Private
RELEASE_SEED_*inputs select the existing release role. Verify successful exact-source develop CI separately: b6'sseed_upgrade()checks the artifact but does not callchecked_ci(). The printed sequence verifies artifact digests/source, installs Runtime/IPFS/components, runsscripts/installed-provider-verify.sh --require-verified ipfs-provider, and restarts only$RELEASE_SEED_UNIT.Approve Community and relay activation separately. OMP supplies the Carrier: any Home reaches any Home by DID on any network (seed relay) #345 activation plan: install the verified signed startup file and exact release pin, restart the dedicated Community unit, then prove stable identity/listener, release/update availability, direct delivery and the approved cross-network relay path. The release-unit upgrade does not create the Community unit or relay role. Production signing, seed changes and live activation each retain explicit approval.
The commands above are verified against this PR's b6 source: bootstrap/profile contract, config command, Runtime CLI, release workflow and seed upgrade. This records the procedure and required inputs; execution and relay implementation keep their separate owners.