Two product names: ParaSend and ParaSign, and the rules page moves to /rules - #369
Merged
Conversation
… /rules Snoeiplan point 4. The site presented five names while there are two products. ParaShare and ParaRules are the two that never were products, and this takes them out of the copy without breaking a single URL a visitor or an extension already holds. ParaShare, option (b): the name goes, the URL stays. /parashare is baked into every link the Chromium and Thunderbird extensions ever minted (extensions/shared/paramant-core.js), those links sit in recipients' mailboxes, and relay.js answers the retired /v2/anon-inbound with a Link: rel="successor-version" header pointing at it, which is in the sdk-js 3.x contract until the Sunset of 31-12-2026. So no code identifier, no test on a URL and no extension is touched. What changes is what a buyer reads: 27 lines across /architecture, /audit-log-export, /docs, /press, /pricing, /security, /parasend, the eyebrow on /parashare itself and the README now say "the ParaSend web app" or "the sending tool". The three legal documents keep ParaShare as a defined contract term, glossed once each as "ParaShare (the ParaSend web app)", because dropping a defined term out of live conditions is not a search and replace. The register row on /crypto-agility keeps its label: two other gates read the algorithms out of that row by name. ParaRules: pararules.html becomes rules.html, the H1 becomes "Our rules", and the nine rules and their verify links from #328 move across word for word. "ParaRule 5" becomes "rule 5" on /parasend and /parasign. /pararules is indexed, so both server confs gain a permanent 301, and phase 5c of the 3.1 runbook gains a fourth nginx edit that writes it: anchored on the ParaID deny, because paramant-live.conf carries no server_name to key on, two-pass so it lands in every site block and stays idempotent. The sitemap is regenerated. Pinned, each one sabotaged before it was believed: - no public page carries ParaShare in an H1, a card heading or a kicker, and the only pages that may carry the name at all are the three legal documents (glossed) and the crypto register row - /rules has the H1, the canonical and the nine verify links; nothing in frontend/ links to /pararules any more; both repo confs carry the 301 - seo-contract pins the new title and description of /rules - the deploy dry run proves the fourth edit lands in both confs, once each, and reports "already applied" on a second run
This was referenced Sep 2, 2026
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.
Snoeiplan point 4: five product names become two. ParaSend and ParaSign stay.
ParaShare and ParaRules were never products, and this takes them out of the copy
without breaking a single URL that a visitor, a search engine or an installed
extension already holds.
Built from the inventory in
Bevinding - ParaShare en ParaRules, waar ze nog zitten(measured on
b38196b), option (b) for ParaShare and the standalone ParaRules half.1. ParaShare: the name goes, the URL stays
/parasharecannot move and is not touched:extensions/shared/paramant-core.jsbakeshttps://paramant.app/parashareinto every link the Chromium and Thunderbird extensions ever minted. Those
links sit in recipients' mailboxes with the key in the fragment, and an
installed extension is not updated retroactively.
relay/relay.jsanswers the retired/v2/anon-inboundwithLink: <https://paramant.app/parashare>; rel="successor-version", which is inthe sdk-js 3.x contract until the Sunset on 31-12-2026.
So no code identifier, no test on a URL, no extension and no nginx gate is
touched. What changes is what a buyer reads: the page is "the ParaSend web app"
or "the sending tool".
Two deliberate exceptions:
glossed once each as "ParaShare (the ParaSend web app)". Dropping a defined
term out of live conditions is not a search and replace, so the same service
stays covered and the reader is told what it is.
<td>ParaShare (webapp)</td>on/crypto-agilitykeepsits label. It is a technical key, not a product name:
tests/ui-truthfulness.test.mjsand
relay/test/pricing-page.test.jsboth read the algorithms out of that rowby that string, and the snoeiplan wants more of those gates, not fewer.
2. ParaRules: "Our rules" on /rules
frontend/pararules.htmlbecomesfrontend/rules.html, the H1 becomes"Our rules", and the nine rules with their verify links from #328 move across
word for word. "ParaRule 5" becomes "rule 5" on
/parasendand/parasign.The sitemap is regenerated by
bron-seo/build_sitemap.py./pararulesis indexed, so it keeps a permanent 301 in both repo confs, andphase 5c of the 3.1 runbook gains a fourth nginx edit that writes it on the
server:
The edit is anchored on the ParaID deny rather than on the hostname, because
deploy/nginx-paramant-live.confcarries noserver_nameat all (it is thebackend
paramant-public.confproxies to), so a hostname anchor would havelanded the redirect in one conf and not the other. It is two-pass like the
/v2/outboundbuffer edit next to it: pass one learns which blocks alreadycarry the line, pass two inserts only into the ones that do not, so it lands in
every site block and a second deploy rewrites nothing.
deploy/DEPLOY-3.1.mdnow documents step 5c as four edits, with the line to add if you are doing it
by hand.
3. Pins, each one sabotaged before it was believed
/pressui-truthfulness: "these pages present ParaShare in copy again: press.html"/parashareback toPARASHAREui-truthfulness: "a heading, card or kicker presents a retired name as a product"/termsui-truthfulness: "uses ParaShare as a contract term without ever defining it"paramant-public.confui-truthfulness: "has no 301 from /pararules to /rules"/pararulesui-truthfulnessandlinks/rulesseo-contractPINNED tablerule-verifyrenamedui-truthfulness: "9 rules but 8 verify links"deploy-3.1.shdeploy-3.1-dryrun: "the 301 landed in 0 of 2 site blocks"Tests
Green:
ui-truthfulness,seo-contract,links,site-claims,first-screen,navigation-shell,user-dashboard-documents,pricing-fold,product-heartbeat,frontend-module-scripts,frontend-loading-contract,code-manifest,access-log-visitors,usage-purpose,receive-filename,vault-filename,version-consistency,env-documented,relay/test/pricing-page.test.js(47 checks),tests/deploy-3.1-dryrun.test.sh(200 checks, including the new 5c assertions),
tests/static-sanity.sh(elevenchecks),
scripts/check-csp-inline.sh,scripts/check-cache-bust.sh, eslint,bron-seo/apply_seo_head.py --check,bron-seo/build_sitemap.py --check.Not run:
tests/heartbeat-lib.test.mjs, which cannot resolve@noble/post-quantumin this environment. That is missing onmainas well andhas nothing to do with this change.
Count per file
README.mddeploy/DEPLOY-3.1.mddeploy/deploy-3.1.shdeploy/nginx-paramant-live.confdeploy/nginx-paramant-public.confdocs/brand/messaging.mddocs/site-claims.mdfrontend/architecture.htmlfrontend/audit-log-export.htmlfrontend/docs.htmlfrontend/dpa.htmlfrontend/index.htmlfrontend/parasend.htmlfrontend/parashare.htmlfrontend/parasign.htmlfrontend/press.htmlfrontend/pricing.htmlfrontend/privacy.htmlfrontend/pararules.html->frontend/rules.htmlfrontend/security.htmlfrontend/sitemap.xmlfrontend/terms.htmltests/deploy-3.1-dryrun.test.shtests/seo-contract.test.mjstests/ui-truthfulness.test.mjs27 lines of ParaShare copy and 29 ParaRules touch points, which is what the
inventory priced option (b) plus the standalone ParaRules half at.
Not merged
Opened for review only. The nginx side needs step 5c of the 3.1 runbook to run
before
/pararulesanswers a 301 in production; until then the repo confs andthe deploy script carry it and the page is served from
/rules.