digidem / digidem/comapeo-cloud-app

feat(map): persist authored vector/raster layers in SavedMap and SMP packages

Open
#246 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

difficulty:hard enhancement
Dominant language
TypeScript
Stars
0
Forks
0
Avg merge
1d 7h
Merged PRs (30d)
29

Description

feat(map): persist authored vector/raster layers in SavedMap and SMP packages

Status: parent tracker — do not implement directly

This issue tracks the durable authored-layer foundation. The implementation-ready work has been split into PR-sized child issues so one agent/PR owns one independently mergeable objective.

Child issues

  • #279 — Canonical authored-layer model + vector/raster SMP packaging (merged, PR #287)
    Root implementation dependency. Owns the versioned AuthoredLayer contract, validation/limits, canonical fixtures, offline vector/raster package path and resource/security bounds.
  • #280 — SavedMap persistence + authoring/recovery UI (agent:blocked)
    Depends on #279. Owns raw SavedMap recovery, durable SavedMap.layers, authoring draft behavior, Add layer persistence, save/reopen and offline/active integration. Also owns whole-draft aggregate byte-budget revalidation (assigned 2026-08-29 in the #247 spec set).
  • #311 — Child A of #247: safe GIS reference-file conversion to canonical authored layers (agent:ready-for-implementation)
    Depends on #279 (merged). Pure converter subsystem; no persistence/UI.
  • #312 — Child B of #247: GIS reference-import UI integration (agent:blocked, spec-reviewed)
    Depends on #311 and #280 merged. Consumes #280's canonical draft APIs; held in the spec lane until both dependencies merge.

Dependency/order

#279 (merged)
  ├──> #280
  │     └──> #312 (with #311)
  ├──> #311 (Child A converters)
  └──> #281  (GeoLibre bridge, tracked by #223)

#279 + #280 + #281
  └──> #282  (GeoLibre production editor, tracked by #223)

#280, #311 (via #247's split), and #281 may proceed in parallel on the merged #279 base. This parent is complete when #280 is complete and the #247 children (#311+#312) are merged; GeoLibre-specific completion is tracked in #223.

Architecture decisions retained here

  • CoMapeo owns the durable layer model; GeoLibre never becomes persistence.
  • Basemap/download configuration remains separate from authored layers.
  • Persisted authored layers are a closed, offline-packageable vector/raster contract.
  • Saved/offline maps must not silently depend on network-only authored sources.
  • Existing Add layer becomes a producer of the canonical persisted model rather than a parallel transient model.
  • #247 (split into #311/#312) normalizes additional formats into the same canonical model rather than creating another persistence representation.

Review/readiness

The executable children were partitioned from previously reviewed specs and independently reviewed with Claude Opus 5. Do not add agent:ready-for-implementation or lane:implementation to this parent tracker. Implementation agents should start from #280 or #311 only when their dependency gates are satisfied; #312 starts only after #311 and #280 both merge.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Do not implement this parent tracker directly. Start with child issue #280 after #279 is merged, or #311 independently; read the dependency notes and each child’s acceptance scope first. The parent is done when #280 and the #247 children (#311 and #312) are merged, with GeoLibre-specific work tracked separately in #223.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
data, mobile-dev
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
10/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.