Skip to content

Implement authenticated resource bootstrap and bounded client cache ownership #32

Description

@zoeyrose

Outcome

Fetch only authorized resource releases from the connected server, verify them atomically, and expose them to renderer through a trust-scoped provider.

Scope and invariants

  • Negotiate manifest/version/digests/capabilities through Game Protocol 1; distinguish code-bundled assets, server-authenticated resources, and user/editor-local files.
  • Prioritize gameplay messages over bulk transfers; bound concurrent requests, bytes, retries, bandwidth, memory, disk, filenames, and decompression.
  • Scope caches by authenticated server identity and release digest; never allow one server to satisfy another server's trust namespace accidentally.
  • Download to temporary files, verify length/hash/type/license manifest as applicable, then atomically publish; corrupt/partial files remain invisible.
  • Define eviction, offline/reconnect, manifest change, cache reset, diagnostics, and privacy behavior.

Acceptance criteria

  • Tests cover missing/corrupt/truncated/oversized/compression-bomb data, identity/certificate change, stale manifests, interrupted writes, disk full, eviction races, reconnect, and slow delivery.
  • Renderer receives only verified immutable IDs/digests/revisions and never owns network/disk policy.
  • No path traversal, executable shader/code delivery, or unauthenticated cache poisoning is possible.
  • A clean M3 client bootstraps the selected content/resources without source checkout access.
  • Metrics are bounded and distinguish download/verify/cache/provider stages.

Dependencies and parallelization

Depends on #12 and renderer resource-provider issue. Server/protocol resource work and client cache work can proceed in parallel against shared fixtures.

Licensing

Client code/tests are MIT. Legacy reuse requires an audited approved-grantor grant; all other implementation is independent. Content, sound, and graphics retain their exact asset licenses and notices.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    Fields

    Priority

    None yet

    Effort

    None yet

    Projects

    Status
    Backlog

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions