You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Design and publish an optional peer extension that owns one queued GraphForge handle and exposes bounded remote calls without moving transport, authentication, authorization, or server lifecycle into GraphForge core.
This extension is independently useful to callers that want a remote authority. GraphForge core, repository lifecycle, and the provider-neutral deployment specification in #227 do not depend on it.
Required published contracts
The implementation must publish one versioned, checksum-pinned artifact bundle containing:
an artifact descriptor with extension contract version, immutable artifact kind and URI, semantic version, target platform/architecture, SHA-256 or registry digest, GraphForge compatibility range, and capability inventory;
a selected reference transport contract with bounded request/result/error envelopes, Arrow result representation, caller-owned operation/actor identities, deadlines, payload limits, and exact idempotent retry behavior;
authentication and authorization inputs expressed as secret references or injected values, never embedded credentials, plus a deny-by-default operation policy;
distinct liveness, readiness, health, version, and capability endpoints or probes whose schemas can be consumed without GraphForge project data;
start, stop, drain, restart, upgrade, rollback, and failure-recovery semantics, including the publication point for the single queued authority;
explicit data/ontology initialization hooks that accept only separately authorized external digest-addressed artifacts or sources and never scan or upload a code repository or local .graphforge/state/ implicitly.
The descriptor and every schema must be checked into the repository, versioned, closed where applicable, reproducible from the published artifact, and included in release evidence. Provider credentials and deployment topology remain outside this artifact.
Acceptance criteria
The extension depends only on public GraphForge APIs and never reads or edits project storage internals directly.
One process owns exactly one queued GraphForge handle; all mutations preserve caller-owned operation and actor identities and use exact idempotent replay.
Transport, authentication, authorization, deployment, health/readiness, lifecycle, and result-envelope contracts are independently versioned from the embedded engine.
A clean supported host can install or pull the immutable artifact by digest, start it against an explicitly selected project/data location, pass liveness/readiness/capability checks, execute a bounded read and idempotent write, restart/reopen the project, and produce the same durable result.
Failure injection covers malformed/oversized requests, invalid credentials, incompatible versions/capabilities, duplicate/conflicting idempotency keys, shutdown during an in-flight call, failed startup, and restart after committed publication without creating a second authority.
Publication emits a reusable artifact descriptor and checksums for callers that choose this extension.
Objective
Design and publish an optional peer extension that owns one queued GraphForge handle and exposes bounded remote calls without moving transport, authentication, authorization, or server lifecycle into GraphForge core.
This extension is independently useful to callers that want a remote authority. GraphForge core, repository lifecycle, and the provider-neutral deployment specification in #227 do not depend on it.
Required published contracts
The implementation must publish one versioned, checksum-pinned artifact bundle containing:
.graphforge/state/implicitly.The descriptor and every schema must be checked into the repository, versioned, closed where applicable, reproducible from the published artifact, and included in release evidence. Provider credentials and deployment topology remain outside this artifact.
Acceptance criteria
Relationships
Non-goals