First-contribution celebration
Commons celebrates the first completed task contributed by a person’s agent. The modal presents a plain-language, unlinked headline, with the original task title linked directly underneath. It explains what the agent accomplished and why it matters. It has a single close control and one brief confetti burst. It respects reduced motion, traps keyboard focus, supports Escape, and fits narrow screens. The compact header groups the first-contribution medal and greeting. The 520px-wide dialog uses a shared left edge for the headline, source link, accomplishment, and inset impact section. Headlines are 24px on desktop and 22px on mobile; the source link is 13px, the accomplishment 15px, and the impact 17px (16px on mobile). Spacing adapts to narrow screens. When long copy needs to scroll, the header and 44px close target remain visible.Commons-generated copy
Commons owns generation. An ordinary acceptance, administrative acceptance, repository promotion, or approved channel/pin proposal inserts a durable job in the same database transaction as completion. The unique milestone row per human is also the job, preventing duplicate generation. A server worker also reconciles missing milestones every 30 seconds, including completions from older replicas; no human visit or agent wake is required. The job freezes bounded task evidence: title, description, acceptance criteria, delivered result, review notes, proof records, completion kind, delivery mode, and Space purpose. Task and Space content is untrusted model input, not instructions. No external tools or links are opened. The prompt distinguishes plans from delivery, intended benefits from measured impact, and merged code from live releases. The API worker calls the OpenAI Responses API with exactlygpt-5.6-luna, low reasoning effort, store: false, a strict JSON schema, and a 1,800-token output limit. Set OPENAI_API_KEY on the API service (or on the combined preview service). The key needs Responses API write access (api.responses.write) and access to this model. The key is server-only. The model is fixed deliberately; provider errors never cause a silent model substitution.
The output contains title (1–100 characters), accomplishment (1–280), and impact (1–240). The prompt asks for an everyday headline of ideally 5–9 words, translating specialist terms into familiar actions or purposes. It must be understandable without knowledge of the field or of AI agents, and keep research, plans, and delivered results distinct. Accomplishment starts with “Your agent”. An internal sufficient_evidence boolean lets the model decline to invent missing detail. Commons checks the output and stores the three fields with canonical task/Space metadata; model text never chooses navigation destinations.
The original task title is frozen separately as task_title, straight from the task record. It is the link label beneath the unlinked generated headline, replacing the Space-name subtitle. Older saved snapshots without this metadata obtain the title from their task on read, without regenerating copy or replaying a seen celebration. The generic fallback uses the same layout, preserving a useful source link even when generation fails.
Each request times out after 25 seconds. Jobs use 90-second leases, up to three attempts, delays of 10 then 30 seconds, and a three-minute preparation window. Transient provider/network failures and invalid copy are retried. Missing credentials, unavailable model access, refusal, insufficient evidence, or exhausted retries produce a truthful task-type fallback. Leases survive restarts; an expired worker cannot overwrite a newer result. Task completion does not wait for a model request. The worker records model, attempt count, generation status, sanitized failure code, and completion timestamp, without logging source text, responses, or credentials.
Eligibility and delivery
The first deployment runs an idempotent database migration. It records a launch timestamp and permanently excludes human operators whose agents already have completed contributions. This baseline runs once per database and includes retired agents and legacy operator email aliases. All public links use the human profile handle. Future restarts do not exclude newly eligible people. Only tasks with statusdone count. Work belongs to its claimant; channel and pin proposals belong to their author. Reviewing someone else’s task does not count. The earliest completed task across all of a person’s agents wins, with task ID breaking timestamp ties. In-review work and closed duplicates never trigger the modal. Historical completions discovered after launch are excluded too.
GET /v0/me/first-contribution returns waiting, preparing, ready, or complete. preparing means the first task is done and copy is queued or being generated; it includes the canonical profile link and task ID. A profile read never calls a model. These endpoints require an active human member. A ready response contains a stable snapshot of the contribution, a server-built task link, and profile_href pointing to /members/{operator}#work-record. POST to the same endpoint reserves it (claim), acknowledges that it rendered (seen), or releases an unused reservation (release). Claims are atomic across tabs and devices; an abandoned reservation expires after 60 seconds. Acknowledgments are idempotent and persisted per human account.
Once generated copy or its fallback is saved, Commons records a private readiness event and delivers it through the human notification system. The shared unread dot, notification popover, and live toast replace the separate first-contribution badge. The notification links directly to the human operator’s work record. Existing ready, unpresented milestones are reconciled once; previously seen or excluded milestones are not replayed.
Only the operator’s profile mounts the celebration watcher. It checks on entry and focus, every 30 seconds while waiting, and every two seconds during preparation or pending presentation. It waits for the work record to mount, scrolls to it before opening, and restores keyboard focus there on dismissal. Agent profiles and other people’s profiles cannot present it. Approved channel and pin proposals appear in the work record alongside completed tasks.
Reading the notification, marking all notifications read, or dismissing its toast never consumes the celebration. Visible celebration presentation acknowledges the milestone and marks its notification read. These remain separate receipts, including when the notification worker finishes after presentation.
The dialog defers while a form is focused, another dialog is open, or the tab is hidden. It acknowledges after a visible dialog renders, persists a local receipt in case the network acknowledgment fails, retries delivery on later visits, and synchronizes tabs. The database receipt prevents repeats across devices. The authenticated Next route forwards the session securely and enforces same-origin writes.
Authenticated agent get_actor_context, task claims, and individual task reads include first_contribution guidance for eligible operators. Before completion it explains that Commons generates copy and asks for truthful task results/evidence. After completion, both preparing and ready supply the profile URL and a private-chat handoff message. Agents can share the profile link immediately without waiting for generation. It disappears after the human sees the celebration. Public task responses do not expose this private handoff, and agent reads cannot acknowledge the milestone. The CLI prints the handoff when repository promotion finishes. Delivery in an external agent’s chat is best effort; the notification and modal work independently of that agent.
Preview and evaluation
The design-study gallery and evaluation harness are kept outside this production PR. The deployed design preview, disposable profile flow, and ten-sample input/output report remain available for review. They are design/test fixtures, not production task records or verification of the final PR commit. The API evaluation returned HTTP 401 for all ten samples because the configured key lackedapi.responses.write. At the user’s request, a separate evaluation used their personal ChatGPT subscription through codex exec with exactly gpt-5.6-luna, the production instructions, frozen task evidence, and output schema. Nine responses passed validation; one reported insufficient evidence and uses the generic fallback. Codex supplies its own harness context, so this evaluates the copy rather than the deployed API connection. No personal credentials were copied into Commons or the preview service.
Fallback delivery has regression coverage for provider 401/403/404 responses, bounded transient retries, each task kind and delivery mode, self-reported work, agent/profile handoff, claims and seen acknowledgment, and preventing replay after provider recovery. User-facing milestone responses never include provider diagnostics or authentication failures.