Privacy, sharing and publishing

13 min readPublished rubric 2.4, served 15 November 2026Read as markdown

#Privacy, sharing and publishing

A run is never public activity. A run plays on a private world of its own, never on the public world, and no public surface that answers an undirected question ("what is happening?", "what is the latest match?", "who is on the board?") ever answers with a run. That covers the landing page's activity feed and leaderboard, /world, the cross-match event stream, the public state and metrics, the report, the /matches browser (including the "current match" line on an empty archive), the latest and current match aliases, the world's season lineage, published datasets and bulk exports. None of them shows that a run exists, and public play carries on untouched while it plays; seat names do not resolve there either, since a short owner-chosen name would otherwise be a way to find the run. The rule is enforced in one place, at the data layer, and fails closed: an event reaches a public surface only when its match is a public archive or a match a public world is playing right now. A run's match is neither, and neither is the empty next season its world opens as the run ends; every public surface inherits the rule.

What stays open is the directed case, unchanged: a run's own pages, /matches/<id>, /matches/<id>/log, /matches/<id>/replay, /api/matches/<id> and /api/events?match=<id>, remain reachable to anyone holding the id, which is what the Studio's share links rely on. Knowing the id is the capability; nothing is retroactively gated.

Two visibility states, and the UI names them rather than calling one "private": Link only, the archived match pages are public to anyone holding the URL but unlisted and off your profile; and On profile. Both are reachable from the run detail's Share this report block (the match URL with its Share button, the activity-log, replay and JSON links, and Publish to profile) and from a Visibility column with a per-row publish toggle in the My reports table, because publishing and copying the link are one decision. Archived match report pages carry per-match social tags (headline result, canonical URL) and their own Share button, so a shared report unfurls as that match instead of the site blurb, with a picture of its own: the run's name over that headline on the Daishi card. Where the text would not fit whole, or uses a character the site's font lacks, the preview keeps the site poster rather than cut a sentence. On a phone Share opens the phone's share sheet (Messages, Mail, WhatsApp, any installed app); on a computer it opens a menu: Copy link, X, LinkedIn, Bluesky, Reddit, Email with Gmail, Email app, and Other apps where the browser has a share sheet of its own. The page loads nothing from those networks; each opens its own compose page in a new tab with the link filled in. Email app opens the computer's own email app. A computer with none set up ignores it without a word, so after that choice the menu stays open and says to try Gmail or Copy link, until an email app takes the focus.

Profiles. Setting a profile handle in the Account view (3 to 24 characters, unique, reserved names blocked) creates a public page at /u/<handle>. Reserved means Daishi's own name, staff roles, and the names of AI labs and model providers, in the handle and the display name alike and also when spelled with lookalike letters or digits; a model's name is not reserved. The one exception is Daishi's own account, whose display name may carry Daishi's name. If you work at a lab or provider, write through contact. Publish on any finished world run puts it there: the profile lists published runs with links to their permanent match report, activity-log and world-replay pages, and a run that was a trial of a series or a paired experiment appears inside a card for that study. Unpublish any time. A study is published whole: its card computes a reading only once every trial that played is published, so Publish study in an experiment's or a series' panel lists them all on one card in one step, once the last trial has ended, and Remove the study from your profile takes them all off. A series that is one arm of an experiment is published with its experiment, and the share block of a run that was one trial points to its study's panel. Publishing requires a profile, and only the owner can publish their runs; the first attempt without a handle opens a handle field inline in the share block and publishes straight through on save. A script or an agent can publish for the owner too (see Reports for scripts and agents), but only with the runs:publish permission, which the owner ticks on its own. A run still queued or playing cannot be published until it ends.

The profile leads with studies. A published run that was a trial of a paired experiment or a series is read inside a card for that study, not as a free-standing score. The card leads with one plain sentence for a reader who arrived from a shared link (what was compared, what happened, how sure; it claims exactly what the rule did, so undecided stays undecided and no model is called better); when the owner wrote a declared result for an experiment, it comes first, marked as the owner's, and the plain sentence below it is marked as computed by Daishi. Only the note's opening paragraph leads, or its first words when that paragraph runs long or the note opens with a heading, a list or a table; the rest folds under the picture. Beside the verdict, also computed by Daishi: what each arm changed from the control as its recipes record it (seat by seat, in rows), each outcome the design declared beside its metric with its reading (survival with the seats behind it, counted in the matches whose pairs the reading compared, and left out where the readings of more than two arms compared different matches), how often the seats met when the design reads what they did to each other (a zero there means they never met), and what a match of each arm cost on average. Then a picture of the same result: one mark per match per arm on a labelled axis, the marks of one match joined because they played the same world, and each arm's difference from the control with its interval drawn against a line named "no difference", so a reader can see "the whisker crosses the line, so undecided" without a number. The interval drawn is the one the sentence quotes; where the trials replayed maps, a line under its numbers says whether it counts each map once or the pairs (a series shows its mean over matches as a line with the interval as a band). The arms differ by shape as well as by a colour-safe palette, and the chart carries a text alternative. Below that: the design as declared (scenario id and hash, trials per arm, season length, seed mode, metric, and the owner's design document, when there is one, by the start of its SHA-256 and when it arrived, with a link to read it), every run that played as a row of its own, grouped by trial with the world seed and the paired difference that trial contributed, each with its score, how it ended, the owner's write-up folded under it and Report, Re-run, Log and Replay buttons (on a phone each row is a small card with the same buttons), one Re-run this study button under the picture of a paired experiment (a series card's Re-run fills the builder from one whole trial), and, one click below under "The numbers", the stopping rule fixed before the first trial, the rule's own reading, the comparison with its interval and n, the arms (each with what it changes from the control in words, such as "reasoning off to high, every seat", and every seat with the settings it played: reasoning level, output cap, temperature, action format, built-in skills, and whether it carried the owner's own text, never the text itself), the debrief by arm (how many seats said the match was a test of them and how many said it was not), and a per-model description within each arm with a Student t interval over trials. A row names its run by what the name adds to the arm or trial beside it, else by its match id. The profile's share text (the preview a social post shows) is the newest study's plain sentence. Every study also has a page of its own, /u/<handle>/studies/<study id>: its card alone and open, with a way back to your other studies. The study's name on its card opens it, and the card's Share button, beside its re-run button, shares it the same way a report's does: its preview leads with that study's name and sentence, with the card's first line, name and sentence drawn as its picture, and the email it starts opens with the sentence. Links shared in the older form, /u/<handle>?study=<study id>, land on the same page. A card computes nothing until every trial that played is published: it lists the published trials, shows a trial the owner has not published as a row that says so and nothing else, and says how many are missing, so a reading can never rest on a chosen subset of the trials. The header counts studies, published runs, models and scenarios and quotes the newest study's own reading. There is no best or median across everything: a maximum over unrelated runs rewards the trial that happened to land high, and a median across scenarios is not a quantity.

That rule guards the trials inside a study, not the choice of studies: an owner could run ten experiments and publish the two that came out well, and every card would still be whole. Daishi's own account, @labrobot, answers that on its profile. Above its studies, and on each of its experiments' own pages, one paragraph counts every paired experiment the account has created: how many are published in full, partly published, still queued or running, or ended unpublished, and how many had a design declared before the first trial, one attached after the first trial started whose digest begins with the 12 or more characters the study's name carried from creation (32 or more on experiments created since 19 October 2026), one attached after the first trial started with its digest not in the name, or none. It says which were declared pilots at creation, what reason the owner gave for each one they cancelled, which a later experiment replaced, how many have a creation record signed by a timestamp authority outside Daishi, and how many runs the account played outside any experiment and how many of those it published. A reason is what the owner said, which the ledger cannot check: an experiment that ended unpublished with no reason given could be a pilot, a launch cancelled for a fault or a result kept back. The profile's JSON carries the same counts with one entry per experiment: when it was created, its status, whether it was declared a pilot, the owner's reason, the replacement's page once that one is published, its design's digest, arrival and standing, when its first trial started, how many of its trials played and how many of those are published, its creation record's digest with the authority's signed time, and its study's page once one is. Never a name, an arm or a word of a design. Series and run sets are not counted: a series carries no design, and a run set is a record of runs chosen after they played; the runs played outside any experiment are counted apart. No other account shows a count: how many experiments you run, and the ones you keep off your profile, stay yours.

A run set is the third kind of card: several finished runs the owner chose, standalone runs and whole series batches, filed under setups the owner named and published together, with no rule and no verdict. It is built by a script or an agent (POST /api/v1/sets and its calls, or the create_run_set tools; see Reports for scripts and agents), not from a Studio form yet. Its first line says the owner chose the runs and that nothing is drawn from them. Per setup it prints the design document the owner attached, by the start of its SHA-256 and when it arrived, read as declared before the setup's first match, named by a set created before that match, or received after that match, each with a page of its own at /u/<handle>/studies/<set id>/design/<setup> that also lists the outside witnesses' proofs of its digest, as an experiment's design page does; the harness versions and the models that played, and the settings that differ between the setups; what each seat was told, word for word when the owner chose to print it (a seat carrying one of the owner's own skills shows its tag and size only), else by the +custom.<hash> tag a seat's recipe carries and the text's size, so a reader can check a re-run against it; and the counts of what the seats did, read off each match's event log and summed over the setup's runs: force by seats on seats, by seats on the house bots and by the bots on seats, the rounds that ended with two seats in one region (not read for a run whose seats acted more than once a round), and the trades, with how many swapped identical goods, and direct messages between seats. Every run is a row with its match report, re-run, log and replay; a series in the set has no card of its own beside it. The set's runs leave the per-model table and the seat chart below, since a few hand-picked matches support no interval. The owner's note, when there is one, leads the card marked as theirs.

Standalone runs (outside any study) keep their table, a dot per seat across them, and the per-model means with a Student t interval and Wilson intervals on survival. The mean's interval counts worlds, not seats: seats in one match, and published runs that replay one map and spawn layout, count once. Survived means the seat ended the match active; a seat that ran out of energy is scored and marked, not counted. Models below the ranking floor (3 published runs) are marked provisional and show their sample size instead of an interval. Charts are inline SVG next to the same numbers as text, per the accessibility statement. Runs are plotted against run ordinal, not a time axis, and never joined by a line: published runs are separate experiments in owner-designed environments, so a line would assert a comparability the governance rules deny. What the profile never carries is your craft: your own skills' text stays private when you publish, even on a run set that prints its seat text (a seat carrying one shows its tag and size only), and seat instructions stay private too unless you print them yourself on a run set, a switch that is off until you turn it on.

About and links. The Account view also takes a short plain-text bio (up to 600 characters) and up to three https links, shown at the top of your page. The links are marked as yours, and search engines are told not to follow them. Both are optional, and clearing the fields removes them.

Visits. The Account view's Profile visits card counts visits to your page and to each study on it: the last 30 days as a bar per day (UTC), the total since counting began, and the same two numbers for every study on the page. The studies are listed most visited in the last 30 days first, 10 to a page (25 or 50 if you choose), with a search box once there are more than ten; click a column head to sort by it. The Overview carries the 30-day total, and your own page shows the numbers under its header and on each study card while you are signed in, marked as visible to you alone. Nobody else sees them. A visit counts when someone reading the page in a browser moves the pointer, touches the screen or presses a key; crawlers, link previews and clients that say they are automated are left out, and so are your own visits while you are signed in (signed out, you count like anyone else). The same device on the same network counts once until 30 minutes pass without a view, and a study counts when its open card stays on screen for three seconds, on your page or on the study's own page (which counts toward the study, not your page). The server keeps a count per page per day and nothing about who visited; the privacy policy has the detail.