feat: add pinned inventory location enrichment
This commit is contained in:
@@ -30,7 +30,7 @@ Dedicated Bun reference worker
|
||||
|
||||
EVE authorization-code + PKCE and encrypted token storage runs in Bun. First login creates an app user keyed to a verified character and owner claim; explicit linking attaches additional characters to the current user. Conflicting ownership never silently merges accounts. Session cookies carry random opaque values; only hashes are stored. Application RS256 JWTs are short-lived and audience-scoped for the Convex browser client. EVE access/refresh tokens are never browser credentials.
|
||||
|
||||
Asset sync is a durable `asset_sync` job owned by the authenticated user; `/api/sync` only enqueues a server-derived, deduplicated request. A dedicated Bun worker claims bounded due work with renewable tokenized leases, stages validated chunks, then atomically changes a character's active generation after all pages succeed. A failed fetch preserves the previous complete generation. Sync metadata records freshness/error, and the domain gate refuses to present missing/stale coverage as complete. ESI page caches are isolated by authorization identity; no partial paginated result is accepted as a full snapshot. Cooldowns are persisted in Convex and shared by workers. Token refresh is coordinated by a durable per-character lease and compare-and-swap; uncertain rotating-token results fail closed as `reconnect_required` instead of replaying a refresh. The worker receives no application signing, JEV, reference, or deployment-admin secrets. This is a local T07 prototype; it requires `CONVEX_SYNC_WORKER_SECRET` and the explicit worker-scoped startup path. T08 location/containment enrichment remains feature-local, with integration at the post-assets/pre-publication seam still pending.
|
||||
Asset sync is a durable `asset_sync` job owned by the authenticated user; `/api/sync` only enqueues a server-derived, deduplicated request. A dedicated Bun worker claims bounded due work with renewable tokenized leases, stages validated chunks, then atomically changes a character's active generation after all pages succeed. A failed fetch preserves the previous complete generation. Sync metadata records freshness/error, and the domain gate refuses to present missing/stale coverage as complete. ESI page caches are isolated by authorization identity; no partial paginated result is accepted as a full snapshot. Cooldowns are persisted in Convex and shared by workers. Token refresh is coordinated by a durable per-character lease and compare-and-swap; uncertain rotating-token results fail closed as `reconnect_required` instead of replaying a refresh. The worker receives no application signing, JEV, reference, or deployment-admin secrets. This is a local T07/T08 prototype; it requires `CONVEX_SYNC_WORKER_SECRET`, the explicit worker-scoped startup path, and T08's read-only `REFERENCE_DIR` artifact mount. T08 location/containment enrichment is integrated at the post-assets/pre-publication seam and remains undeployed; no live Convex-capacity or production-readiness claim is made.
|
||||
|
||||
## Valuation
|
||||
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
# T08 inventory location integration
|
||||
|
||||
Status: implemented against T07 checkpoint `fe7d218195f8f501569c5a1e72f302733340be43`.
|
||||
|
||||
- `GET /universe/structures/{structure_id}` is a fixed ESI operation pinned to `esi-universe.read_structures.v1` and the captured OpenAPI evidence in `docs/research/eve-openapi-evidence.json`.
|
||||
- `inventory_query` remains assets-only. `inventory_locations` is an additive, explicit consent capability for structure evidence; existing grants are never silently expanded.
|
||||
- Helper calls remain bounded to 1,000 IDs. Larger snapshots retain every response batch in the generation-level deterministic input pin; no cap is lifted.
|
||||
- Location rows stage in private Convex chunks tied to the exact asset generation, authority counters/scopes, reference version, helper observations and deterministic enrichment version. Public station/system/region facts are included in the bounded pin with an internal consistency digest; that digest is not treated as external authenticity, and the pinned reference version remains the provenance boundary. Asset and enrichment manifests publish atomically.
|
||||
- Partial/failed helper, reference and structure coverage is explicit. Raw assets remain usable, but only `complete` enrichment is complete; 403/404 structures remain unresolved and docking permission is always `unknown`. The initial optional-enrichment persistence prototype is conservatively capped at 2,500 rows and 16 MiB server-side; the worker preflights deterministic chunks at 192 KiB (below the 256 KiB conservative envelope target) and an aggregate 2 MiB budget before staging. Larger or oversized single-row enrichments publish raw assets with a truthful failed enrichment instead of attempting an unmeasured near-50k transaction.
|
||||
- The sync worker receives only `REFERENCE_DIR` and a read-only reference-data mount. It opens an immutable pinned reader and has no reference import/write credentials. The mount must contain a compatible production-profile manifest/artifact; an invalid, missing, or fixture-profile artifact is treated as honest reference unavailability and raw assets still publish without enrichment. Host archives are not deployment volumes and must not be promoted as a deployed reference artifact.
|
||||
- T09 projection, filtering and cursor behavior remains unimplemented by design; T09 consumes the generation-matching manifest/chunk seam.
|
||||
+16
-2
@@ -4,8 +4,9 @@ The server ESI adapter uses the fixed trusted base `https://esi.evetech.net` and
|
||||
`X-Compatibility-Date: 2026-08-18` (`ESI_COMPATIBILITY_DATE`). It exposes a fixed
|
||||
allowlist of typed safe reads: character assets (paged GET), character asset names
|
||||
and locations (bounded read-only POST), character wallet balance (unpaged GET), and
|
||||
global market prices (unpaged GET). Callers cannot provide an arbitrary ESI
|
||||
URL, host, method, or POST body.
|
||||
global market prices (unpaged GET), and character-scoped private structure
|
||||
resolution (fixed GET). Callers cannot provide an arbitrary ESI URL, host, method,
|
||||
or POST body.
|
||||
|
||||
## Asset synchronization
|
||||
|
||||
@@ -84,6 +85,19 @@ JavaScript literals. Asset helper metadata cites pinned OpenAPI evidence; wallet
|
||||
metadata cites the current official OpenAPI retrieval and explicitly records that
|
||||
it is not an immutable historical capture.
|
||||
|
||||
## Private structure resolution
|
||||
|
||||
`EsiClient.getStructure` calls the pinned `GET /universe/structures/{structure_id}`
|
||||
operation with `esi-universe.read_structures.v1`. The route and scope are pinned in
|
||||
`docs/research/eve.md` and the captured OpenAPI evidence: a 200 is character-scoped
|
||||
ESI access evidence, while 403 and 404 remain explicit unresolved outcomes. IDs are
|
||||
validated and serialized as decimal text without `Number` coercion. The response
|
||||
retains the optional name, solar-system, owner/type IDs and finite position with
|
||||
retrieval/expiry provenance. The T08 cache includes the complete authority and
|
||||
reference version; it never stores tokens and never derives ACL membership or
|
||||
docking permission (`unknown` is the only permission value). Deadlines, rate limits,
|
||||
and transport failures remain typed errors for T07 retry/cooldown handling.
|
||||
|
||||
## Wallet balance
|
||||
|
||||
`EsiClient.getWalletBalance` reads the unpaged character wallet route with the
|
||||
|
||||
+23
-15
@@ -8,17 +8,17 @@
|
||||
|
||||
**Planning baseline:** `fdcc486` (`Initial Commit`). The roadmap records an earlier 97-test gate; each prototype change reruns the current local suite. Existing `jobs`, `userPreferences` and `referenceSyncMetadata` tables are placeholders, not services.
|
||||
|
||||
**T06/T07 evidence:** The centralized ESI client has fixed typed asset, asset-name,
|
||||
asset-location, wallet-balance, and market-read strategies with bounded response
|
||||
bytes/rows/pages, bounded retries, abort-first cleanup, validators, canonical int64
|
||||
helper bodies, complete scoped authority-context cache identity, cooldown queries,
|
||||
and runtime schemas. T07 durable scheduling/worker orchestration is implemented as
|
||||
a local prototype: the current full suite records 204 passing tests, including the
|
||||
bundled dedicated worker, durable leases, fencing, cancellation/recovery, refresh
|
||||
coordination and restricted startup. T08 location/service orchestration and T13
|
||||
wallet persistence/UI/service orchestration remain pending; T07/T08 integration is
|
||||
not complete and production-readiness gates remain deferred. No deployed/live ESI
|
||||
claim is made here. The narrow `beginSync` expected-authority fence is part of T06's
|
||||
**T06/T07/T08 evidence:** The centralized ESI client has fixed typed asset,
|
||||
asset-name, asset-location, wallet-balance, and market-read strategies with bounded
|
||||
response bytes/rows/pages, bounded retries, abort-first cleanup, validators,
|
||||
canonical int64 helper bodies, complete scoped authority-context cache identity,
|
||||
cooldown queries, and runtime schemas. T07 durable scheduling/worker orchestration
|
||||
and T08 location/containment enrichment are implemented as local prototypes. The
|
||||
combined suite currently records 254 passing tests; that count includes parallel-core
|
||||
T09/T13 tests and is not a T08-only count. T08 is implemented and undeployed;
|
||||
production/live ESI/live Convex-capacity evidence remains deferred. T09 inventory
|
||||
projection/query and T13 wallet work remain separate roadmap tasks with no
|
||||
completion claim here. The narrow `beginSync` expected-authority fence is part of T06's
|
||||
atomic bridge contract: it prevents transport cache authority from being published
|
||||
under a different T05 grant/revision/credential fence; it is not T07 durable worker
|
||||
orchestration.
|
||||
@@ -147,20 +147,26 @@ Implement the prototype identity enforcement needed by the pipeline: revalidate
|
||||
|
||||
**Deliver:** enqueue/status instead of long-running request work; typed deduplicated jobs, bounded attempts/due times, cancellation, fair scheduling/backpressure, shared cooldown/error budgets, renewable leases and fenced success **and failure** publication. Stage/validate assets before active-generation publication and retain validated `isSingleton` facts throughout ingestion.
|
||||
|
||||
Share a per-character refresh lease across web and workers, retaining token CAS. At-least-once delivery is not exactly-once remote refresh: an uncertain rotated result produces actionable reauthorization instead of automatic replay. Keep reference extraction separate and minimize worker secrets. Public feeds must be coordinated rather than independently refreshed per process. The worker requires the distinct `CONVEX_SYNC_WORKER_SECRET`; standalone startup uses a worker-only environment and Compose startup uses the explicit `worker` profile.
|
||||
Share a per-character refresh lease across web and workers, retaining token CAS. At-least-once delivery is not exactly-once remote refresh: an uncertain rotated result produces actionable reauthorization instead of automatic replay. Keep reference extraction separate and minimize worker secrets. Public feeds must be coordinated rather than independently refreshed per process. The worker requires the distinct `CONVEX_SYNC_WORKER_SECRET`; standalone startup uses a worker-only environment and Compose startup uses the explicit `worker` profile. T08 adds only `REFERENCE_DIR` and a read-only reference-data volume to this environment; the worker opens an immutable artifact reader and has no import/write credentials.
|
||||
|
||||
**Verified locally:** process kill/restart, long paging beyond the old five-minute lease, duplicate delivery, cancellation, scope loss, stale-worker completion/failure, refresh races, uncertain rotation, restricted runtime startup and configuration boundaries. The full suite currently records 204 passing tests. T08 enrichment integration at the post-assets/pre-publication seam remains pending; production migration/release evidence remains deferred.
|
||||
**Verified locally:** process kill/restart, long paging beyond the old five-minute lease, duplicate delivery, cancellation, scope loss, stale-worker completion/failure, refresh races, uncertain rotation, restricted runtime startup and configuration boundaries. T08 enrichment is staged and atomically published at the post-assets/pre-publication seam; production migration/release evidence remains deferred.
|
||||
|
||||
### T08 — Private locations, custom names and containment
|
||||
|
||||
**Own:** proposed location/containment modules, feature-local authorization-context caches and tests. Consume T03 readers/T06 adapters; no second reference compiler or transport.
|
||||
**Status:** implemented local prototype; undeployed. No live ESI, live Convex-capacity, production-reference, or production-readiness claim.
|
||||
|
||||
**Checkpoint manifest:** see [the exact T08 manifest in the verification record](verification.md#exact-t08-checkpoint-manifest). T09 projection/query files/tests/fixtures and T13 wallet files/tests/fixtures are explicitly excluded.
|
||||
|
||||
**Own:** location/containment modules, feature-local authorization-context caches, typed ESI structure adapter, incremental consent wiring, generation enrichment persistence and tests. Consume T03 readers; the shared ESI adapter is extended only with the fixed structure operation.
|
||||
|
||||
**Deliver:** parent/item relationships, fitted flags, breadcrumb inputs and unresolved reasons. Resolve NPC stations from reference facts and private structures/custom names only under valid character scope/evidence. Integrate bounded enrichment with dataset freshness and revision invalidation; enrichment failures must remain explicit and cannot authorize or fabricate a complete location result.
|
||||
|
||||
**Done:** nested/fitted items, identical names, cycles, missing parents, stale/forbidden structures and large IDs pass tests. No numeric-ID guessing, hull/contents multiplier or cross-character private-name leakage. Provide versioned/pinned enrichment inputs for T09, not mutable names that silently change a cursor's filter results.
|
||||
**Done locally:** nested/fitted items, identical names, cycles, missing parents, stale/forbidden structures, large IDs, multi-batch helper observations and 50k bounded chains pass synthetic tests. The worker stages private rows against the exact asset generation and authority/reference pin, publishes partial coverage honestly, and exposes generation-matching manifest/chunk reads. Public/private source facts are pinned and validated against persisted rows; oversized optional enrichment falls back before staging. No numeric-ID guessing, hull/contents multiplier, docking inference or cross-character private-name leakage. T09 receives versioned/pinned enrichment inputs rather than mutable names. The limits are conservative prototype bounds, not measured live Convex capacity.
|
||||
|
||||
### T09 — Inventory projections and query service
|
||||
|
||||
**Status:** separate accepted core task; not claimed complete by this T08 checkpoint. Its projection/query files, tests and fixture are excluded from the T08 manifest.
|
||||
|
||||
**Own:** generation-bound indexed inventory rows, inventory query service/repository and dedicated query tests; additive schema/store changes coordinated with T13.
|
||||
|
||||
**Deliver:** staged projections published with validated generations; validated filters for character/type/custom name/category/group/quantity/location/system/region/pricing/BPC state; stable sorting and server-side paging. Pin selected input generations, location enrichment, reference/price versions and authorization revisions. Reuse or extend `AssetService` authorization/valuation rather than cloning it.
|
||||
@@ -199,6 +205,8 @@ Compute selected summaries across **all matching rows**, not the visible page, w
|
||||
|
||||
### T13 — Wallet balance vertical slice
|
||||
|
||||
**Status:** separate accepted task; not claimed complete by this T08 checkpoint. All wallet files, tests and fixtures are excluded from the T08 manifest.
|
||||
|
||||
**Own:** new wallet domain/service/ESI-adapter orchestration, balance snapshot storage, wallet job handler, compact finance component/route and tests. Central schema/capability/application/assistant registrations land serially with other feature tasks.
|
||||
|
||||
**Deliver:** opt-in balance capability using T05 consent/T07 jobs, exact signed cents from T04 and independently timestamped balance coverage. Ship a deterministic balance service, conventional UI and typed assistant/manual query adapter. Keep the wallet amount a **separately labelled component**, not a combined wealth total.
|
||||
|
||||
+4
-4
@@ -1,7 +1,7 @@
|
||||
# Implementation roadmap
|
||||
|
||||
**Status:** planning proposal, not implementation or a public-launch declaration.
|
||||
**Baseline:** prior checkpoints historically recorded live sign-in, asset synchronization and matching Assets/chat reference valuations for one character (see [verification](verification.md)); that history is not new T07 evidence. This T07 checkpoint records a local, disposable prototype only, with no new deployed/live ESI or production-readiness claim. T07 durable synchronization is implemented and verified locally with the current 204-test suite. T08 location/containment enrichment remains a separate feature whose post-assets/pre-publication integration is still pending.
|
||||
**Baseline:** prior checkpoints historically recorded live sign-in, asset synchronization and matching Assets/chat reference valuations for one character (see [verification](verification.md)); that history is not new T08 evidence. This T08 checkpoint records a local, disposable prototype only, with no deployed/live ESI, live Convex-capacity, or production-readiness claim. T07 durable synchronization and T08 location/containment enrichment are implemented and verified locally. The current 254-test count is a combined suite including parallel-core T09/T13 tests, not a T08-only count. T09 projection/query and T13 wallet completion remain separate roadmap work.
|
||||
**Evidence:** [architecture](architecture.md), [milestone 1](milestone.md), [verification](verification.md), [ESI research](research/eve.md), [expansion data/permission matrix](research/expansion-data-contracts.md), and [reference operations](reference-operations.md).
|
||||
|
||||
## 1. Decisions confirmed for this roadmap
|
||||
@@ -16,9 +16,9 @@
|
||||
|
||||
New service/table/path names below are proposed implementation boundaries, not existing APIs. Later phases need focused design and current contract verification before coding; they are not one large implementation task.
|
||||
|
||||
### T07 prototype checkpoint
|
||||
### T07/T08 prototype checkpoint
|
||||
|
||||
T07 is implemented as a local prototype, not a deployment claim. It requires the distinct `CONVEX_SYNC_WORKER_SECRET` in Convex and the worker environment, alongside `TOKEN_ENCRYPTION_KEY`, EVE client credentials and `ESI_USER_AGENT`. Start Compose workers only through the explicit `worker` profile; standalone development uses a worker-only `.env.worker`. T08 core modules and their integration at the post-assets/pre-publication seam remain pending.
|
||||
T07 durable synchronization and T08 location/containment enrichment are implemented as local prototypes, not deployment claims. T07 requires the distinct `CONVEX_SYNC_WORKER_SECRET` in Convex and the worker environment, alongside `TOKEN_ENCRYPTION_KEY`, EVE client credentials and `ESI_USER_AGENT`. T08 adds the read-only `REFERENCE_DIR` artifact mount and generation-pinned enrichment seam. Start Compose workers only through the explicit `worker` profile; standalone development uses a worker-only `.env.worker`. T09 projection/query and T13 wallet remain separate tasks; passing the combined local suite does not claim either task complete.
|
||||
|
||||
## 2. What exists versus what still needs building
|
||||
|
||||
@@ -28,7 +28,7 @@ T07 is implemented as a local prototype, not a deployment claim. It requires the
|
||||
| Assets | Complete staged snapshots, tenant gates, exact reference totals | Real search/filtering, paging, containment, custom names, meaningful locations, history |
|
||||
| References | 53,001 types; recipes, dogma and system/gate tables; immutable publication | Runtime reader exposes only types/version; station table currently empty; search and domain-specific readers missing |
|
||||
| Prices | Global ESI average prices, held by the web process | Durable public feed coordination, regional/private books, history, depth allocation, fees |
|
||||
| Sync | T07 durable queued jobs, dedicated worker, leases, fenced generation publication, cancellation/recovery and shared refresh coordination | T08 enrichment integration and production release evidence remain pending |
|
||||
| Sync | T07 durable queued jobs, dedicated worker, leases, fenced generation publication, cancellation/recovery and shared refresh coordination; T08 generation-pinned location enrichment | T09 projection/query integration and production release evidence remain pending |
|
||||
| Finances | Signed integer-cent money helpers | Wallets, journals, transactions, own orders, history/coverage and reconciliation |
|
||||
| Industry | Recipe data plus placeholder interfaces/economics fields | Owned blueprint instances, skills/jobs, facility assumptions, formulas and optimizer |
|
||||
| Navigation | Exact light-year distance helper and universe data | Gate-distance service, ship-aware capital graph, dynamic constraints and qualified access evidence |
|
||||
|
||||
+55
-3
@@ -1,6 +1,6 @@
|
||||
# Verification record
|
||||
|
||||
This record retains historical verification facts from earlier checkpoints. The current T07 checkpoint is a local/disposable prototype only: it makes no new deployed, live-ESI, or production-readiness claim. Dependency versions are pinned in `package.json`/`bun.lock`.
|
||||
This record retains historical verification facts from earlier checkpoints. The current T08 checkpoint is a local/disposable prototype only: it makes no deployed, live-ESI, live-Convex-capacity, or production-readiness claim. Dependency versions are pinned in `package.json`/`bun.lock`. T09 query/projection and T13 wallet work are not completion claims in this checkpoint.
|
||||
|
||||
## Initial offline/disposable-backend milestone
|
||||
|
||||
@@ -40,14 +40,14 @@ A subsequent operator test exposed `ERR_INVALID_RESPONSE` when submitting Connec
|
||||
|
||||
Historical audit regressions covered native-form/CSRF boundaries, shared artifact-directory precedence, live readers rejecting fixture profiles, offline no-network behavior, archive receipts/replay, ZIP/TAR checksums and limits, duplicate records/JSON keys, Hoboleaks metadata, and immutable cache provenance/rollback/reuse. See [live setup](live-setup.md) and [reference operations](reference-operations.md).
|
||||
|
||||
## T07 durable worker boundary regressions
|
||||
## Historical T07 durable worker boundary regressions
|
||||
|
||||
- Full local `bun test`: **204 passed, 0 failed** across 27 files.
|
||||
- `bun test tests/t07-sync.test.ts tests/t07-worker-runtime.test.ts tests/t07-route-boundaries.test.ts`: deterministic queue/fencing/retry regressions plus runtime alias/startup, missing-job/AbortSignal polling, HTTP 429/503 structured outcomes, forbidden worker-environment, hostile-origin, session-ordering and bounded-body checks (31 passed in the focused run).
|
||||
- `bun build workers/sync.ts --target bun`: produces the same alias-resolved worker artifact copied by the Docker build to `build/sync-worker.js`. A no-cache Docker image build completed, and `docker run --rm --network none` started the image's bundled worker through `scripts/run-sync-worker.ts` with inert Convex/EVE values and `SYNC_WORKER_STARTUP_CHECK=1`; no live keys or network calls were used. `scripts/run-sync-worker.ts` is separately tested to reject general bridge/admin/JWT/JEV credentials without echoing them.
|
||||
- The operational startup is `bun run secrets:run --worker -- docker compose --profile worker up -d --build sync-worker`; `--deployment`/`--configure` is reserved for Convex administration and configuration, not worker startup. Plain `docker compose up` leaves the worker stopped.
|
||||
|
||||
### T07 prototype stage manifest
|
||||
### Historical T07 prototype stage manifest (not the current T08 manifest)
|
||||
|
||||
The T07 stage includes the following files. T08 core files are intentionally excluded:
|
||||
|
||||
@@ -92,6 +92,58 @@ workers/sync.ts
|
||||
|
||||
Excluded T08 core files: `src/lib/domain/inventory-location.ts`, `src/lib/server/inventory/`, `tests/fixtures/inventory/`, `tests/inventory-containment.test.ts`, and `tests/inventory-location.test.ts`.
|
||||
|
||||
## T08 local checkpoint
|
||||
|
||||
**Status:** implemented locally and undeployed. No live credentials, deployed endpoint, production volume, or production reference artifact was used.
|
||||
|
||||
- `bun test`: **254 passed, 0 failed** across 29 files. This is the combined local suite and includes parallel-core T09/T13 tests; it is not a T08-only count.
|
||||
- Focused T08/T07 regression run: `bun test tests/t07-sync.test.ts tests/inventory-location.test.ts tests/t07-worker-runtime.test.ts` — 54 passed, 0 failed.
|
||||
- `bunx tsc --noEmit`, `bun run check`, and `git diff --check` passed.
|
||||
- `bun run build` passed with the known non-fatal unresolved `bun:sqlite` external warning.
|
||||
- The 50k containment/enrichment checks and 2,500-row persistence check are synthetic local prototype validations, not measured live Convex capacity. Optional enrichment is conservatively capped before staging; larger/oversized payloads preserve raw assets and publish failed optional enrichment.
|
||||
- Real-query generation rollover, mixed helper batches, public/private fact forgery, forbidden structures, missing-parent/reference-unknown rows, and oversized worker envelopes have regression coverage.
|
||||
|
||||
### Exact T08 checkpoint manifest
|
||||
|
||||
The following files comprise the T08 implementation/checkpoint, including additive shared integration files:
|
||||
|
||||
```text
|
||||
compose.yaml
|
||||
docs/architecture.md
|
||||
docs/design-records/t08-inventory-location.md
|
||||
docs/esi-operations.md
|
||||
docs/parallel-worktrees.md
|
||||
docs/roadmap.md
|
||||
docs/verification.md
|
||||
scripts/run-sync-worker.ts
|
||||
src/convex/functions.ts
|
||||
src/convex/schema.ts
|
||||
src/lib/domain/capabilities.ts
|
||||
src/lib/domain/inventory-location.ts
|
||||
src/lib/domain/model.ts
|
||||
src/lib/server/esi/index.ts
|
||||
src/lib/server/inventory/containment.ts
|
||||
src/lib/server/inventory/location-service.ts
|
||||
src/lib/server/inventory/private-structure-cache.ts
|
||||
src/lib/server/release-gate.ts
|
||||
src/lib/server/store.ts
|
||||
src/routes/auth/eve/+server.ts
|
||||
src/routes/characters/+page.server.ts
|
||||
src/routes/characters/+page.svelte
|
||||
tests/contracts.test.ts
|
||||
tests/esi.test.ts
|
||||
tests/fixtures/esi/transport-metadata.json
|
||||
tests/fixtures/inventory/cycles-and-missing.json
|
||||
tests/fixtures/inventory/nested-assets.json
|
||||
tests/inventory-containment.test.ts
|
||||
tests/inventory-location.test.ts
|
||||
tests/t07-sync.test.ts
|
||||
tests/t07-worker-runtime.test.ts
|
||||
workers/sync.ts
|
||||
```
|
||||
|
||||
Explicitly excluded from this T08 manifest: accepted T09 core projection/query files `src/lib/server/inventory/projection.ts`, `src/lib/server/inventory/query-repository.ts`, `src/lib/server/inventory/query-service.ts`, `tests/inventory-query.test.ts`, and `tests/fixtures/inventory/query-assets.json`; all T13 wallet files/tests/fixtures under `src/lib/server/wallet/`, `tests/wallet-balance.test.ts`, `tests/fixtures/wallet/`, and `tests/fixtures/esi/wallet-balance-signed.json`.
|
||||
|
||||
## Optional disposable Convex smoke (not part of this checkpoint)
|
||||
|
||||
Use a **disposable** backend, set its `CONVEX_SELF_HOSTED_URL` and admin key, generate application keys and configure/deploy as in the README, then run:
|
||||
|
||||
Reference in New Issue
Block a user