Local deploy timing plus CauseStarter bridge and contact work - #132
Merged
Conversation
Also let stop-wipe-restart --seed proceed after --start writes Hardhat trust events.
Organizers can copy a constrained brief for their own assistant or call cause-assist draft/critique verbs; the draft stays the memory and we do not host a mediation chat.
The full Alert shoved page content while Subjectiv recomputed, then vanished. Overlay a small spinner with the same explanation as a tooltip and aria-label instead.
Content-funding rows were omitted from metadata fetch, so the card heading fell back to a truncated address even when the project page had a name. Load metadata for every displayed row, use the channel label if needed, and ellipsize long titles.
Editing was a mode flag on the cause page, so the browser's back button could not leave it. Viewing is now /cause/... and editing /cause/.../edit, with the toggle navigating instead of setting state. New drafts open at the edit URL, and publishing a roster stays in the editor. The bridge surface moves under one Bridges heading and stops inlining other parties' statements into an already long page. Each cluster is a compact row linking to its own page; an attached mediator is a row with an opt-in toggle that reads and writes the trusted-nudger store directly, replacing the Settings deep link and the per-load /anchors fetch. What a mediator proposes now lives on /cause/.../mediator (BridgeDisplayBlock, full triples) alongside the attachment form, which is one quiet link deeper since almost no cause runs its own bridge-creator instance. The visitor's page shows the same rows, published clusters only, and renders nothing when there are none. The bridge editor's parent picker takes a pasted cause link. There is no directory to search (ADR 0008), so the link another organizer circulated is how one cause reaches another; parseCauseLink accepts a full URL, a hash-routed URL, a bare path, or 0xowner/slug, tolerates @versionCid and trailing page segments, and refuses anything ambiguous rather than guessing at an owner. Also: useMediatorAnchors claimed to be "showing the bundled reference set" on a failed fetch even for callers that have no fallback set, such as CauseStarter. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The Bridges section only rendered for a cause's own organizer, and only in edit mode, so the feature was invisible to everyone else. It now always renders — header, "No bridges yet.", and a Create a bridge button — because authoring a bridge is not an owner privilege: the cluster publishes under the mediator's own key, quoting the cause as a natural parent. A visitor note says so, and is honest that telling the organizer is currently on them. The attached-mediator row and the standalone mediator-service link stay organizer-only. Creating a bridge from a cause page now seeds natural parent 1 with that cause and auto-loads its roster once, since the assist verbs refuse to run without parent planks. The editor's "Loaded: <title>" line now only claims a load once planks are present — the title can arrive from the URL, so it was no longer evidence the fetch succeeded. Pair dropdowns label each option with its side, which two parents' worth of similar truncated sentences badly needed. Filed two inbox items: how to let organizers publish contact info (ENS is already handled by ui/src/shared AddressDisplay and AddressPicker, which CauseStarter does not yet import), and how a mediator sets up a side that has no cause of its own yet. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
service-host-attesters was fully defined in compose, registered in the service host, and already proxied by both Vite and nginx — it was just never started, so the bridge-cluster editor's "submit pairs to attester" step failed against nothing. Added it to services.sh, after the env files are sourced since it needs IMPLICATIONS_CONTRACT_ADDRESS from deployments/localhost.env. Two things stopped that from being enough: The bundle would not boot. content-attester requires ALIGNMENT_TOPIC_STATEMENT_CID, which is a published-statement CID rather than a deploy artifact, so a fresh local chain has none — and because the host validates every service at startup, that took the implication-attester down with it. It now defaults off locally and stays overridable. The attester had no gas. Compose falls back to prefunded Hardhat keys, but it also auto-loads the root .env, and since generate-wallets.mjs ran that file holds generated keys with no local balance. The service booted "degraded" and would have failed every on-chain write; the same applies to christian-bridge-creator and content-attester, so this was likely already biting quietly. fund-local-service-wallets.mjs tops up any configured signer below 1 ETH from Hardhat account #0. It is idempotent and refuses to run off chain 31337. Verified: healthy at :3006 with a funded signer, 200 through CauseStarter's /api/implication-attester proxy, and a clean repeat run of services.sh --start. Not verified: that a real pair submission settles end to end — the x402 round-trip plus the on-chain write need two published parent causes, which the seed data does not create. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Content-funding receipts use keccak token IDs; the project page was printing those as "Giving option #<uint256>". Prefer metadata names and content slugs.
ADR 0011: Commonality never delivers messages. CauseStarter shows ENS/Twitter via AddressDisplay, an optional roster contactUrl, and inbound bridge citations this client already knows.
Bridge clusters no longer require a pasted parent cause: the editor can author a labeled stand-in sliver, skip the modified hop, and pair parent planks to the bridge. cause-assist gets draft-stand-in-sliver; local seed publishes a secular-conservative cause.
Align the cause-assist error text with empty bullets being valid, load-metadata comment with displayed rows, and drop design-narrating comments on the bridges section.
AdamSpitz
commented
Aug 19, 2026
AdamSpitz
left a comment
Owner
Author
There was a problem hiding this comment.
Review receipt.
Prior branch review found 0 bugs, 2 suggestions, 1 nit. All three are fixed on this head: bullets error text is 0–N, AlignedProjectsList comment matches displayed-row metadata load, CauseBridgesSection comments trimmed.
Reviewed-with: grok
Reviewed-files: 3
Reviewed-commit: 1b6dff1
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.
Summary
Stacks several unreleased
devcommits: elapsed-time summaries on local wipe/start/seed, start and fund the implication-attester host locally, CauseStarter bridge-cluster UX (own/editURL, visitor-visible inbound bridges, one-shot wording help, stand-in parents), organizer contact as pull (ADR 0011), and smaller UI polish (content-funding titles, layout-neutral trust refresh, human names on giving options).Review
Branch review vs
origin/devfound 0 bugs, 2 suggestions, 1 nit (stale metadata comment, emptybulletsvs 1–N error text, design-narrating comments inCauseBridgesSection). None treated as merge blockers.Test plan
./scripts/data.sh --wipe/services.sh --start/ seed print elapsed-time summariesservice-host-attestersand funds generated signer wallets