Explain the on-chain cost of Open projects and add a registration retry - #68
Open
jakepel03 wants to merge 7 commits into
Open
Explain the on-chain cost of Open projects and add a registration retry#68jakepel03 wants to merge 7 commits into
jakepel03 wants to merge 7 commits into
Conversation
jakepel03
force-pushed
the
open-project-cost-notice-65
branch
from
July 1, 2026 22:09
e79516f to
d9a82eb
Compare
Closes #65. Creating an Open project registers it on-chain, and on real networks that registration can charge a TRAC deposit (OT-RFC-53, 100 TRAC on mainnet, waivable via a PublishingConviction commitment). The create modal never mentioned this, and a failed registration told the user to recreate the project even though it can simply be retried. - Create modal: a mode hint under the Access-mode dropdown explains what each mode costs and buys (curated = private and free; open = registered on-chain, possible TRAC deposit on real networks, free on a local dev chain). - Track the registration outcome on the project entry (SubscribedContextGraph.registered, additive/optional). - Failure notice now says members still receive titles and links and points at the new retry, instead of "recreate the project". - Dashboard: owner rows of unregistered open projects show a "Not registered" chip and a Register button that retries via the existing register endpoint and clears the flag on success.
The register route 409s with "already registered" when the context graph already has an on-chain slot (e.g. a prior attempt's transaction landed but its receipt was missed). Both the dashboard retry and the create-time fallback now recognize that as the goal state instead of surfacing it as a failure — otherwise a stale registered:false flag could never clear. Adds registerContextGraph client tests (request shape + 409 error surface).
…too, matching the dashboard retry
… DID Members of open projects joined with a plain project-id invite had no curatorPeerId, so artifact byte-reads probed peers unpinned and often died with stream resets, silently degrading every fork to a title+links stub. Resolve the owner's peer id from the graph list's creator DID at fork time and backfill it into the stored subscription.
jakepel03
force-pushed
the
open-project-cost-notice-65
branch
from
August 3, 2026 19:57
df59b03 to
24c7035
Compare
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.
Closes #65. Stacked on #64 (both touch
createProjectModal.ts) — merge #64 first; I'll rebase this onto main after the squash.Creating an Open project registers it on-chain so members can byte-read full note content (
resolveImportedArtifactReadSubject→isPublicOpenContextGraphreads the on-chain policy). On real networks that registration can charge the OT-RFC-53 TRAC deposit (100 TRAC in the mainnet parameters; waivable via a PublishingConviction commitment; dormant on local dev chains). SWM triple gossip is unaffected — an unregistered open project still shares titles/links fine.SubscribedContextGraph.registered?: booleanrecords the create-time registration outcome (additive; old entries stayundefinedand show nothing).registerContextGraph(cgId, 0, 1)fallback; success clears the flag and re-renders.Backward compatibility: fully compatible — one optional settings field, no migration, no node-floor change, no command/id changes.
25/25 tests pass, build + lint clean.