Skip to content

History

Revisions

  • Add a TinTin++ Setup page for tt++ players Parallel to Mudlet Samples: GMCP via #event {IAC SB GMCP <Module>}, an auto-open- login #action, the built-in #map mapper driven by Room.Info, a #split vitals line, and channel colouring — with honest placeholders where tt++ can't match Mudlet (no dockable per-channel windows; no addCmdLineSuggestion-style tab completion). Linked from the sidebar and Player-Reference.

    @yfronto yfronto committed Jul 12, 2026
    41fc7bb
  • Mudlet: add an auto-open-login-link trigger recipe A plain-text (non-GMCP) multiline trigger that matches the gate's OAuth login prompt and opens the link in the browser via openUrl(matches[2]). Regex keys off the engine's login screen text (stable across content changes). Linked from the Player-Reference Connecting section.

    @yfronto yfronto committed Jul 12, 2026
    cb145d7
  • Round 30 milestone: reconnect/placement/drain correctness (#321/#324/#329/#331/#336) + RID re-home (#373) Round did not self-document. Closed: - Persistence-and-Durability: a live reconnect routes by an in-memory residency index BEFORE the lagging durable zone_ref (prevents a double-owned character when a link-dead resume beats the async flush of an intra-shard walk) (#321); the placement writer gets the saver's shutdown-barrier treatment so a logout tombstone isn't lost on graceful shutdown (else the tell/mail oracle reports a player on a dead shard) (#331) - Distributed-Systems-Model: the placement tombstone now carries a per-session nonce, fencing a same-shard/same-epoch relog that shard+epoch alone couldn't distinguish (#329) - Edge-and-Protocol: a fresh login bounced by a draining shard (Unavailable) is re-resolved + re-dialed to the peer instead of dropped; token-bearing re-dials never retried (extends the zero-drop drain to ARRIVING players) (#324) - Cross-Shard-Handoff: a gate-wedged player is skipped by the drain and reclaimed (client-fault straggler), not miscounted zero-drop Redirected (#336) - Entity-Component-Model: an intra-shard transfer re-homes the entity + carried subtree to fresh per-zone RIDs (the overworld 'map on some rooms' bug) (#373)

    @yfronto yfronto committed Jul 12, 2026
    685d958
  • Overworld map, content-defined toggles, and the demo-strip release model Cross-repo changes (gomud engine+demo, telosMUD-content, telosMUD-infra): Overworld / minimap (gomud #358/#360/#361/#367): - Pack-Entity-Reference: new toggle_defs def table (on/off player preference, verb-flipped, delta-from-default override, never a trust signal); the room display surface (return nil to fall back → own the render for some rooms only) - Pack-Lua-Scripting: coord(), has_room_flag (room content flags, vs has_flag = Living flags), long(), toggle() handle reads - Builder-Commands + Player-Reference: enter/exit/out named-exit verbs + the Exits: line order; toggle verbs - Demo-Pack: the 4th zone (overworld 'The Open Plains', 6x20 grid) + the opt-in minimap (overworld toggle → room display template); the plains route vs the kept-for-parity direct market->grove exit Demo-strip release model (gomud release-images + telosMUD-content/-infra): - Deployment: published images built with nofixture ship core-only; the world is pulled from the external content store; telos-pull added to the published matrix (telos-seed keeps the demo embed for local stacks) - Content-Packs-Intro + Content-Pack-Operations: the demo is a dev fixture, not a shipped world; a deployed fleet (e.g. live staging) pulls the reference pack

    @yfronto yfronto committed Jul 11, 2026
    832efd4
  • Round 29: help system (#64) + world-director script (#47) Round did not self-document. Two LARGE features: #47 content-defined Lua world-director script (the headline — closes the 'director-script unauthored' gap the Orchestration + Engine-Dev-landing pages carried): - Orchestration-and-Directors: new 'The world-director script' section — the director host table (get/set/broadcast/log), on_signal delivered per non- boss.died signal, the four guards (guard-your-own-events, idempotent derived writes, reserved key/down-event refusal); rewrote the stale 'unauthored' note. - Lua-Sandbox-Internals: the sandbox core is now a shared internal/luasandbox package used by both the zone VM and the director VM, cross-checked by a build-failing parity test. - Scoped-Event-Bus: signal-up is now consumed by the content on_signal handler. - Pack-MUD-Settings: world_script manifest field. - Pack-Lua-Hooks: builder-facing 'The world-director script' authoring section. #64 builder-defined help system: - Pack-Entity-Reference: help_defs def table (ref/title/category/keywords/body/ see_also; auto-includes the command set; honors CmdHidden+MinRank). - Builder-Commands + Player-Reference: the help command; fixed the stale 'CmdHidden has no help/listing consumer yet' note.

    @yfronto yfronto committed Jul 10, 2026
    a709624
  • Round 28: reload/reset/comms residuals (#304/#269/#309) Round did not self-document. All three closed: - Pack-Lua-Hooks: on("spawn") now fires on the PERSISTENT (durable-object) reset path too, not just ephemeral repop; fires parent-first, before contents and before later 'into' ops — one 'spawn fires when placed, don't assume inventory yet' contract across both paths (#304) - Content-Loading-and-Hot-Reload: channel reload republishes the full (ref- independent) hear-set, so a burst of channel edits is coalesced per zone (one O(players) pass, not K); flag disarmed before the recompute so no edit is swallowed (#269) - Content-Loading-and-Hot-Reload: reload now appends a non-blocking advisory when it removes content a NOT-reloaded pack still references (the inverse #205 won't hard-block); pre-vs-post diff against the live proto cache at validate time (#309)

    @yfronto yfronto committed Jul 10, 2026
    8d6e9fd
  • Round 27: the AdoptZone fence cluster (#316/#288/#327) The round self-documented #315 (generation fence) on RPC + Sysadmin. Closing the rest: - Cross-Shard-Handoff: new 'Zone adoption: build, confirm, or un-adopt' — the destination requires from_shard_id to be the zone's live owner and refuses before building (#316, a correctness precondition, not a security barrier since owner+gen share one read); adoption is confirmed by observing the lease flip LAND (via ClaimZone), never by the RPC returning; an unconfirmed runtime adoption is un-adopted when its confirm deadline expires, gated on an 'adopted' flag so boot zones fence rather than self-delete (#327). - Zone-Runtime-and-Actor-Model: new 'Runtime zone teardown' — UnhostZone + the per-zone actor context; the four guards (disposable-not-unowned; quiescence is not pop==0; post selects on a dead channel or the saver drainer wedges the whole shard; publish+arm under one lock) (#288). - RPC-and-Protobuf: the from_shard_id line now notes the live-owner precondition. - Running-at-Scale: the source tears down a rebalanced-away zone (no zombie per migration).

    @yfronto yfronto committed Jul 10, 2026
    4779c41
  • AdoptZone is fenced by the zone's lease generation, not a clock-skew window (#315)

    @MrG0rd0x MrG0rd0x committed Jul 10, 2026
    d67ea30
  • Round 26: the placement record becomes the reconnect-routing spine Track-6 residuals. Round self-documented only #276 (catch-up metrics); the rest of the engine/ops surface was stale. - Distributed-Systems-Model: NEW 'The placement record' section — zone is the routing key (ShardForZone resolves the current owner, so an offline rebalance is transparent), epoch is the fence AND the tell/mail existence key, shard routes nothing. Every residency registers a placement (incl. the intra-shard zone walk); registerPlacement accepts an equal epoch where the handoff CAS demands a strictly greater one. Clean logout writes a fenced compare-and-delete tombstone, not a delete (#320 slice 2, #70). Also: lease renewal restarts on re-adoption, closing an A->B->A split-brain (#288). - Persistence-and-Durability: close the shard-not-zone 'Known gap'; add the saver shutdown sentinel barrier (#282). - Edge-and-Protocol: world-side Send watchdog — keepalive can't see a gate whose transport acks PINGs while its application stopped reading (#274). - Orchestration-and-Directors: a runtime-adopted zone's scope replica is seeded before the zone is exposed (a full-map replace would clobber newer state) (#280). - Cross-Shard-Handoff / Running-at-Scale / DistSys: drain-target reservations now carry per-field, server-timed expiry (#284). - Running-at-Scale: drop the self-contradicting 'deliver_lag_ms silent' gap; the gate row now describes zone-keyed reconnect routing.

    @yfronto yfronto committed Jul 10, 2026
    e889eb9
  • scale: document the durable scoped-event catch-up metrics; drop the stale deliver_lag_ms gap

    @MrG0rd0x MrG0rd0x committed Jul 10, 2026
    03f91f5
  • Round 25: durable-zone login fix + engine-side notes for #69/#262/#266 The round self-documented #69 (Abilities), #262 and #266 (Sysadmin). Closing the engine-page gaps and the one undocumented item: - Persistence-and-Durability: NEW 'Where a returning player lands' — characters.zone_ref is the login routing key (#320). Documents the data-loss bug it fixed (an intra-shard walk + logout silently reset you to the home zone's start room), the link-dead reconnect side-fix, the room_ref warn, the checkpoint drift guard, and the remaining shard-not-zone placement gap. - Combat-System: the death generation (Living.deaths) + die() entry re-entrancy latch (an item dupe) + why position/location can't carry the 'did it die' signal (#69). - Scoped-Event-Bus: paced durable NAK redelivery + the tri-state ack decision (#266). - RPC-and-Protobuf: AdoptZone is signed on keyed shards (#262). - Edge-and-Protocol: the connect diagram binds the durable zone.

    @yfronto yfronto committed Jul 10, 2026
    b0123fc
  • abilities: death inside an op-list (cross-respawn guard, actor-death abort)

    @MrG0rd0x MrG0rd0x committed Jul 10, 2026
    d1c0c70
  • sysadmin: authenticated AdoptZone + rolling-upgrade fail-closed note

    @MrG0rd0x MrG0rd0x committed Jul 10, 2026
    3d73cdd
  • Sysadmin: durable-message delivery guarantee, park/poison metrics, and the consumer-config upgrade note (#266)

    @MrG0rd0x MrG0rd0x committed Jul 10, 2026
    39b54e1
  • Close the Round 24 doc gaps: roam field, salvage pity, #205 validation Most of Round 24 was documented as it shipped (on("spawn")/witness_leave hooks, the state.x reload-guard idiom, the shared-def rolling-reboot readout). Remaining: - Pack-Entity-Reference: add the missing roam reset field (zone-wide population) - Loot-Spawns-and-Crafting: salvage pity no longer compounds across over-skill bonus passes (was listed as a latent bug); only the base pass advances pity - Content-Loading-and-Hot-Reload: scoped reloads now validate against the whole merged graph, rejecting only findings whose last-writer pack is in scope (provenance-by-last-writer; avoids the migration trap) - Demo-Pack: the wandering wisp + chasing stalker, and the reload-safe greeter seed

    @yfronto yfronto committed Jul 10, 2026
    742a1d9
  • Complete the shared-def list in the reload rolling-reboot note (#56)

    @MrG0rd0x MrG0rd0x committed Jul 9, 2026
    6360f75
  • Document the reload shared-def rolling-reboot reminder (#56)

    @MrG0rd0x MrG0rd0x committed Jul 9, 2026
    d1208f8
  • Fix witness_leave chase note (escaping artifacts) + document flee-path firing (#202)

    @MrG0rd0x MrG0rd0x committed Jul 9, 2026
    b0da851
  • Document the witness_leave chase hook (#202 scenario 2)

    @MrG0rd0x MrG0rd0x committed Jul 9, 2026
    d44485f
  • Document the on("spawn") lifecycle hook + roam reset (#202 wandering mobs)

    @MrG0rd0x MrG0rd0x committed Jul 9, 2026
    ea09249
  • Builder guide: guard top-level state.x initializers against hot reload (#67)

    @MrG0rd0x MrG0rd0x committed Jul 9, 2026
    cb72951
  • GMCP docs: reflect Round 23 (Track 7) enrichment Track 7 landed three GMCP features on main: - Char.Items.Contents: first INBOUND client->world request (gate whitelist, per-session rate limit, reach-scoped resolve, keyed Char.Items.List reply) - Comm.Channel.Players: new package, cross-shard per-channel listener roster authored by the leader director (poll/diff + periodic full resync) - live HUD beyond combat: Char.Vitals/Status/Stats pushed change-detected on a ~2s non-combat pulse, not just at prompts/combat boundaries Updates GMCP-Reference (new Inbound-requests section + Comm.Channel.Players row + Char cadence), Edge-and-Protocol (GmcpIn now consumed for whitelisted requests), Orchestration-and-Directors (roster aggregation responsibility), and Mudlet-Samples (roster panel + container-contents request recipes).

    @yfronto yfronto committed Jul 9, 2026
    4e27db0
  • Fix mermaid: remove semicolons from sequence-message labels The actual breaker (per GitHub's parser error): mermaid treats ';' as a statement separator, so a semicolon inside an unquoted sequence message ends the message early and the trailing words parse as a bare actor (Expecting arrow, got NEWLINE). Replaced ';' with ',' in the Accounts-and-Auth and Content-Loading (still-broken) sequence diagrams. Verified no unquoted semicolons remain in any diagram.

    @yfronto yfronto committed Jul 9, 2026
    6840bcf
  • Fix Accounts auth mermaid: drop colon from participant alias mermaid's sequenceDiagram parser treats ':' as the message delimiter, so the ':8080'/':9100' ports in the telos-account participant label broke the render (the real cause that survived the earlier <device_code> fix). Simplified the diagram to mermaid-safe labels.

    @yfronto yfronto committed Jul 9, 2026
    0b79549
  • Fix mermaid render errors: strip backticks + <tag> tokens from diagrams GitHub's mermaid parser rejects backticks and angle-bracket <placeholder> tokens (sanitized as HTML tags) inside diagram labels. Fixes the broken Content-Loading-and-Hot-Reload sequence diagram and the same <device_code> issue in Accounts-and-Auth-Internals.

    @yfronto yfronto committed Jul 9, 2026
    69ae77f
  • Scaling docs: reflect shipped load-aware placement rebalancer Track 6 drain/scale landed: occupancy-weighted rebalancing that executes (director issues rebalance-drain directives with cooldown + locality colocation) and director-owned, reservation-based drain-target selection. Updates the now-stale 'advisory-only / naive drain-select' language on Running-at-Scale, Distributed-Systems-Model, Cross-Shard-Handoff, and Orchestration-and-Directors.

    @yfronto yfronto committed Jul 9, 2026
    bf33f6c
  • Pack Reference (demo) + Player Reference + Mudlet recipes - Pack-Reference: catalog + why three systems + licensing overview - Demo-Pack: real walkthrough of the midgaard/darkwood/crypt world + scripts - Player-Reference: connecting, everyday commands, channels, rich clients - Mudlet-Samples: HP-bar / automapper / GMCP tab-complete recipes - SRD5/WoW/D6 placeholders: added exact source PDFs + license references

    @yfronto yfronto committed Jul 9, 2026
    10e625c
  • Engine Dev: auth internals, Lua sandbox, architecture, landing - Accounts-and-Auth-Internals: device bridge, signed assertions, tier authority, single-session lock; passphrase/SSH/Google/Discord marked not-implemented - Lua-Sandbox-Internals: per-zone VM, allowlisted stdlib, chokepoint budgets, circuit breaker, self.state trust boundary, validated handles - Architecture-Overview: service fleet, keystroke path, single-writer model, engine-vs-content pillar, codebase layout - Engine-Developer-Reference landing → Ready Completes the Engine Developer Reference section (19 deep-dives + index).

    @yfronto yfronto committed Jul 9, 2026
    ccad180
  • Engine Dev: directors, scoped event bus, handoff, distsys model - Orchestration-and-Directors: director-as-actor, per-scope leader election, scope hierarchy, worked boss loop; unauthored-director-script flag - Scoped-Event-Bus: two lanes, write-up/read-down, apply-once watermark, the no-cross-scope-budget nuance - Cross-Shard-Handoff: two-phase Prepare/Commit, signed snapshot + tier carry, graceful drain, gate redirect/replay - Distributed-Systems-Model: single-writer spine, leases, placement, the one-zone-one-core ceiling + honest scaling gaps

    @yfronto yfronto committed Jul 9, 2026
    409adfd
  • Engine Dev: abilities/effects, combat, loot/spawns/crafting - Abilities-and-Effects: substrate, effect-op vocabulary, 10-step lifecycle, the PvP gate + guardHarmful, tag-CC, affect runtime (stale-comment corrections) - Combat-System: round loop, swing pipeline, death checkpoint, reactions; honest gaps (lag logged-only, auto-swings ungated by prevents, dead formula seam) - Loot-Spawns-and-Crafting: resolver, quality/affixes, scheduled spawns, tracks/bundles/four modes, crafting + tier-bound salvage

    @yfronto yfronto committed Jul 9, 2026
    6579ac0