Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ platform concept.
- Contracts: `docs/api.md` (wire), `docs/computers.md` (image, durability),
`docs/bridge.md` (bridge), `docs/chat-records.md` (chat records),
`docs/secrets.md` (secret custody), `docs/ledger.md` (usage),
`docs/billing.md` (orgs and Stripe), `docs/hermes-relay.md` (runtime).
`docs/billing.md` (orgs and Stripe).
- `docs/published-fragments.md`: primitives that must stay expressible.
- `docs/technical-debt-ledger.md`: the only place shortcuts may live;
include the condition for removing each one.
Expand Down
1,585 changes: 424 additions & 1,161 deletions docs/bridge.md

Large diffs are not rendered by default.

1,190 changes: 319 additions & 871 deletions docs/chat-records.md

Large diffs are not rendered by default.

230 changes: 0 additions & 230 deletions docs/hermes-relay.md

This file was deleted.

8 changes: 4 additions & 4 deletions images/bridge/src/engine.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1353,10 +1353,10 @@ impl Engine {
/// The lane is done with one of a turn's owed records; a turn that owes
/// none is let go. Done means answered (appended, a replay, or refused:
/// a 409 is another life's end of the turn, a 403/404 a chat it may no
/// longer post in) or given up after the lane's tries (docs/bridge.md:
/// `POST_TRIES_MAX`, with jitter, on a transport error, 429 or 5xx), so
/// a record that keeps failing holds its turn for one life's tries at
/// most, then goes.
/// longer post in) or given up after the lane's tries
/// (`limits::POST_TRIES_MAX`, with jitter, on a transport error, 429 or
/// 5xx), so a record that keeps failing holds its turn for one life's
/// tries at most, then goes.
fn posted(&mut self, id: &str, post: &str, kept: bool) {
let Some(t) = self.state.turns.get_mut(id) else {
crate::ev!("owed.stale", { "turn": id, "id": post, "why": "no turn held by that id" });
Expand Down
2 changes: 1 addition & 1 deletion images/bridge/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
//! fragment-bridge version
//! ```
//!
//! Its settings are environment variables (docs/bridge.md lists them);
//! Its settings are environment variables (docs/bridge.md, "Settings");
//! secrets are files named by path, never values.

use std::net::SocketAddr;
Expand Down
4 changes: 2 additions & 2 deletions images/bridge/src/runtime/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
//! core speaks only these commands and events; each runtime translates them
//! into its own protocol. Two ship here:
//!
//! - `relay`: Hermes' Relay (docs/hermes-relay.md). Hermes dials the
//! bridge, which is its connector.
//! - `relay`: Hermes' Relay (docs/bridge.md, "Hermes' Relay"). Hermes
//! dials the bridge, which is its connector.
//! - `script`: a deterministic scripted agent (the stub image), so the
//! platform's lanes run without any agent runtime at all.
//!
Expand Down
2 changes: 1 addition & 1 deletion images/bridge/src/runtime/relay/fetch.rs
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
//! hands back `https://….fal.media/…`, and Hermes sends a reply's image
//! links so). Its connector contract takes a `source_url` that is a local
//! upload or "an already-public URL (passed through)": the bridge fetches
//! it, so it is the chat's blob as an uploaded file is (docs/bridge.md).
//! it, so it is the chat's blob as an uploaded file is.
//!
//! Only what a page may show, from where the public may serve it: `https`;
//! a host whose every address is public (never this computer's own, its
Expand Down
9 changes: 5 additions & 4 deletions images/bridge/src/runtime/relay/wire.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
//! Hermes' Relay wire, as Hermes v0.21.5 (tag `v2026.9.24`, contract
//! version 1) speaks it, read from its `gateway/relay/` (docs/hermes-relay.md;
//! its code wins over its contract document). Pure: frames in, frames out.
//! version 1) speaks it, read from its `gateway/relay/` (docs/bridge.md,
//! "Hermes' Relay"; its code wins over its contract document). Pure:
//! frames in, frames out.
//!
//! Frames are JSON objects, one per line, each ending with `\n`, each under
//! `limits::FRAME_MAX_BYTES`. Hermes dials; the bridge is its connector.
Expand Down Expand Up @@ -804,8 +805,8 @@ mod tests {
assert_eq!(image_links(&many).len(), crate::limits::ATTACHMENTS_MAX);
}

/// The gateway's own test vector (docs/hermes-relay.md): its token is
/// ours, and ours is checked as the gateway mints it.
/// The gateway's own test vector (docs/bridge.md, "Hermes' Relay"): its
/// token is ours, and ours is checked as the gateway mints it.
#[test]
fn a_token_is_the_gateways() {
let t = token("gw-test", "s3cr3t", 1_790_000_000);
Expand Down
Loading
Loading