Skip to content

Bridge 2b: community contributions and the setup checklist - #157

Merged
KodeStar merged 26 commits into
mainfrom
feat/bridge-2b
Oct 20, 2026
Merged

KodeStar merged 26 commits into
mainfrom
feat/bridge-2b

Conversation

@KodeStar

@KodeStar KodeStar commented Oct 20, 2026 •

Copy link
Copy Markdown
Owner

Bridge Phase 2b: community contributions through the Bridge (BRIDGE-PLAN.md "Phase 2b"), plus the console half of FIRST-RUN-PLAN F2 (the Bridge setup checklist).

  • Heartbeat: the reply lists accepts:["setup"]; a Bridge then sends a setup block (paired, libraries, asr, agent, budget, github). contribute comes from setup.can_contribute when present (ends the 2a flag flap). GET /server's bridge block only for signed-in, non-demo callers.
  • New job kinds sidecars.contribute (Share with the community) and meta.correct (Suggest corrections), behind the contributions module (404 module_off). Refusals: 409 contribute_open, 400 not_edited, 409 cannot_contribute. Module user routes refuse kids and demo accounts.
  • meta.correct params: own 128 KiB cap, values and evidence checked as the community reads them (HTML character references decoded like meta's form reader, upper-case &#X too), bidirectional overrides and control characters refused, lengths counted as written.
  • Console: Contribute switch in the generate dialog, Share, a corrections dialog (diff rows, auto vs maintainer, evidence, the same checks before sending, title clamped), Settings > Bridge setup card mirroring the Bridge's Accounts page, park texts in six locales (sign-in and credential changes on the Accounts tab resume the job).
  • A held contribution job gives way to Generate while the module is off.

Gates: scripts/build-admin.sh (1005 tests), go build, go vet, go test -race ./..., golangci-lint 0 issues. Reviews: /simplify and /code-review max on every round.

Verified live (Playwright, 1440 and 390, dark; fake GitHub and fake meta): module off/on surfaces, setup card, Share and corrections queue and file, one issue per request after a dropped answer, character references flagged in the dialog and refused with 400, park cards in en/de, GET /server bridge block. A real device-flow sign-in against the real App is an owner step.

Merges together with the FIRST-RUN-PLAN F1 server PR (decision 2).

Pairs with KodeStar/audiosilo-meta#2703, KodeStar/audiosilo-meta-community#428, #157, KodeStar/audiosilo-frontend#118, KodeStar/audiosilo-bridge#6, KodeStar/audiosilo-docs#150, KodeStar/audiosilo#72.

…dule user refusals

The heartbeat reply lists accepts ["setup"]; the Bridge's setup checklist is
read leniently and bounded, and its can_contribute wins over the estimates'
(Status.CanContribute), which the estimate now reads too. GET /server's bridge
block goes only to a signed-in caller. Module listener routes refuse kid and
demo accounts.
…ibutions module

Two community job kinds (meta is a new feature family). A job that files to
the community answers 404 module_off while the module is off, sidecars.generate
with contribute issue included, and 409 cannot_contribute unless the Bridge
can. meta.correct files only fields an admin edited on the book, with the
book's value, and the server stamps its source. generate and contribute refuse
each other while open (contribute_open, generate_open). Notifications word the
new kinds; a test mounts every builtin module route.
…list

- The generate dialogs' contribute switch shows while the contributions module
  is on and the Bridge can contribute, and starts on.
- Share with the community on the Community card queues sidecars.contribute
  for what the community lacks; its status and issue links show there, and a
  share in progress holds Generate back (contribute_open).
- Suggest corrections: a review of the admin's edited fields against the
  community's (auto or maintainer badge per field, rows to untick, evidence
  required and prefilled) queues one meta.correct job; its issue shows in the
  Community card.
- Settings > Bridge gains a Setup card from the reusable BridgeSetupList, with
  the GitHub account and agent credential read-only and a link to the Bridge's
  Accounts tab; the Generate section names the setup step it waits on.
- With the module off every Contribute, Share and Suggest control is gone.
…ibutions is off

A queued sidecars.contribute job is held from claims while the module is
off, so it no longer refuses a new generate job (409 contribute_open) nor
shows as the estimate's open_job: like a parked one, the generate job
cancels it. A claimed or running one still blocks.
A correction batch inside every per-field bound could pass the 16 KiB
params cap (and the queue route's 32 KiB body bound) once multi-byte or
escaped. meta.correct now takes 128 KiB (kindSpec.maxParams), other kinds
keep 16 KiB, and the route's body bound follows bridge.MaxParamsBytes.
A value or the evidence holding a bidirectional embedding, override or
isolate control is refused at queue time, as the community refuses it.
The refused-credential park points at the Accounts tab as well as the
agent container's own credential, and the setup hint lists what the
Accounts tab takes (a Claude subscription token, an Anthropic or OpenAI
API key), not a ChatGPT sign-in.
… no Retry

The Bridge now wakes jobs parked agent_credential_refused when the Accounts tab
changes the agent credential, and one replaced in the agent container is tried
again at the park's retry_at. The notification and the console's park sentence
(all six locales) say so instead of asking for a Retry.
The contrib_unavailable notification asked for a retry on the Bridge; a GitHub sign-in on the Bridge's Accounts tab re-admits the parked book, so the job carries on by itself.
@KodeStar
KodeStar merged commit ef69afd into main Oct 20, 2026
3 checks passed
@KodeStar
KodeStar deleted the feat/bridge-2b branch October 20, 2026 13:44
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant