chore(beads): sync issue exports
This commit is contained in:
parent
fd7c1672db
commit
dd034d8315
2 changed files with 6 additions and 1 deletions
|
|
@ -14,3 +14,6 @@
|
|||
{"id":"int-98f3ae4e","kind":"field_change","created_at":"2026-08-04T21:59:12.744411Z","actor":"Joshua Belke","issue_id":"holo-3m3","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"Fixed and verified against the live runtime: 1 websocket per tab, 0 console errors, rectangle draw preview works"}}
|
||||
{"id":"int-25ed8014","kind":"field_change","created_at":"2026-08-04T21:59:12.892368Z","actor":"Joshua Belke","issue_id":"holo-18m","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"Fixed and verified against the live runtime: 1 websocket per tab, 0 console errors, rectangle draw preview works"}}
|
||||
{"id":"int-5b50a0cc","kind":"field_change","created_at":"2026-08-04T21:59:18.39404Z","actor":"Joshua Belke","issue_id":"holo-zy5","extra":{"field":"status","new_value":"closed","old_value":"in_progress","reason":"Local dev runtime up (mosquitto+publisher in docker, server.cjs+vite on host); all 39 tsc errors fixed; 117 tests pass"}}
|
||||
{"id":"int-9f50ae43","kind":"field_change","created_at":"2026-08-04T22:41:11.4878Z","actor":"Joshua Belke","issue_id":"holo-kyc","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"Reworked track fusion landed in fd7c167; gating demonstration published as an artifact"}}
|
||||
{"id":"int-56be7f82","kind":"field_change","created_at":"2026-08-04T22:41:11.659984Z","actor":"Joshua Belke","issue_id":"holo-nzh","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"Reworked track fusion landed in fd7c167; gating demonstration published as an artifact"}}
|
||||
{"id":"int-f3e6f14c","kind":"field_change","created_at":"2026-08-04T22:41:11.802983Z","actor":"Joshua Belke","issue_id":"holo-86s","extra":{"field":"status","new_value":"closed","old_value":"open","reason":"Reworked track fusion landed in fd7c167; gating demonstration published as an artifact"}}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
{"_type":"issue","id":"holo-d8j.2","title":"DECISION: Docker Compose volume namespace strategy for parent-dir rename","description":"When user renames HALOCHRON/ → HOLOCRON/, Docker Compose derives project name from the directory, which changes the namespace of every named volume. Postgres (Keycloak), Mosquitto retained messages, and any other persistent volume becomes orphaned with the new name. Options: (a) declare 'name:' in compose to pin project name independent of dir; (b) add 'external: true' on critical volumes and pre-create them; (c) accept orphaning and document data restore procedure. Decide BEFORE the parent dir rename.","acceptance_criteria":"Decision recorded in plan; if (a) or (b), compose files updated and verified before parent rename.","status":"closed","priority":0,"issue_type":"decision","owner":"joshua@innovationhub-act.org","created_at":"2026-05-25T12:47:12Z","created_by":"Joshua Belke","updated_at":"2026-05-28T13:31:13Z","closed_at":"2026-05-28T13:31:13Z","close_reason":"Parent dir rename strategy: user renamed working dir to R2D2-Holocron. Docker volumes will pick up new project name (r2d2-holocron) on next compose up; named volumes from old HALOCHRON project may need restore or re-init. Documented for follow-up.","dependencies":[{"issue_id":"holo-d8j.2","depends_on_id":"holo-d8j","type":"parent-child","created_at":"2026-05-25T08:47:11Z","created_by":"Joshua Belke","metadata":"{}"}],"dependency_count":0,"dependent_count":2,"comment_count":0}
|
||||
{"_type":"issue","id":"holo-kyc","title":"Rework track fusion: latitude-correct spatial index + deterministic clustering","description":"Tyler's fuseTracks() prototype picks the right algorithm (uniform spatial grid) but violates the grid invariant (bucket width \u003c fuse radius at all Europe latitudes -\u003e up to 41% of true duplicates missed at 70N), leaks bucket entries on remove, and bypasses motion gates when velocity is absent. Extract a pure, tested trackFusion module with a latitude-aware search ring, union-find clustering with stable canonical selection, and inspectable per-gate results.","acceptance_criteria":"tsc clean in touched files; fusion unit+scenario tests green; no duplicate missed at 71N for pairs within FUSE_DISTANCE; canonical selection independent of insertion order","status":"open","priority":1,"issue_type":"feature","owner":"joshua@innovationhub-act.org","created_at":"2026-08-04T22:18:04Z","created_by":"Joshua Belke","updated_at":"2026-08-04T22:18:04Z","dependency_count":0,"dependent_count":0,"comment_count":0}
|
||||
{"_type":"issue","id":"holo-nzh","title":"Wire trackFusion into useAssetTracking + incremental update path","description":"Replace the O(N)-per-message full rescan with an incremental update over the affected bucket neighborhood. Keep fuseAll for batch loads. Ensure bucket index is released on removeAsset/cleanupStaleAssets/clearAssets.","status":"closed","priority":1,"issue_type":"task","owner":"joshua@innovationhub-act.org","created_at":"2026-08-04T22:18:05Z","created_by":"Joshua Belke","updated_at":"2026-08-04T22:41:12Z","closed_at":"2026-08-04T22:41:12Z","close_reason":"Reworked track fusion landed in fd7c167; gating demonstration published as an artifact","dependency_count":0,"dependent_count":0,"comment_count":0}
|
||||
{"_type":"issue","id":"holo-kyc","title":"Rework track fusion: latitude-correct spatial index + deterministic clustering","description":"Tyler's fuseTracks() prototype picks the right algorithm (uniform spatial grid) but violates the grid invariant (bucket width \u003c fuse radius at all Europe latitudes -\u003e up to 41% of true duplicates missed at 70N), leaks bucket entries on remove, and bypasses motion gates when velocity is absent. Extract a pure, tested trackFusion module with a latitude-aware search ring, union-find clustering with stable canonical selection, and inspectable per-gate results.","acceptance_criteria":"tsc clean in touched files; fusion unit+scenario tests green; no duplicate missed at 71N for pairs within FUSE_DISTANCE; canonical selection independent of insertion order","status":"closed","priority":1,"issue_type":"feature","owner":"joshua@innovationhub-act.org","created_at":"2026-08-04T22:18:04Z","created_by":"Joshua Belke","updated_at":"2026-08-04T22:41:11Z","closed_at":"2026-08-04T22:41:11Z","close_reason":"Reworked track fusion landed in fd7c167; gating demonstration published as an artifact","dependency_count":0,"dependent_count":0,"comment_count":0}
|
||||
{"_type":"issue","id":"holo-3m3","title":"useWebSocket: intentional close schedules a reconnect, leaking sockets (3 per tab)","description":"disconnect() calls ws.close() without detaching handlers, so the socket's own onclose fires and schedules an exponential-backoff reconnect. Under React StrictMode's double-mount this leaves 3 live server WebSockets for a single browser tab (verified via /health websockets:3), so every asset_update is delivered 3x. Stale sockets can also stomp status after a newer socket is active. Fix: detach handlers before closing, guard handlers against non-active sockets, cancel pending reconnect timers.","status":"closed","priority":1,"issue_type":"bug","owner":"joshua@innovationhub-act.org","created_at":"2026-08-04T21:38:26Z","created_by":"Joshua Belke","updated_at":"2026-08-04T21:59:13Z","closed_at":"2026-08-04T21:59:13Z","close_reason":"Fixed and verified against the live runtime: 1 websocket per tab, 0 console errors, rectangle draw preview works","dependency_count":0,"dependent_count":0,"comment_count":0}
|
||||
{"_type":"issue","id":"holo-d8j.13","title":"Parent dir rename: HALOCHRON/ → HOLOCRON/ (USER ACTION, post-merge)","description":"After this epic merges to dev and Docker volume strategy (holo-d8j.2) is settled: user renames /Volumes/tuf8tb/NATO/HALOCHRON → /Volumes/tuf8tb/NATO/HOLOCRON. Then: (a) update any IDE workspaces, (b) update local kubeconfig paths, (c) re-run docker compose up to verify volumes mount per holo-d8j.2 decision. User performs this, not the agent.","acceptance_criteria":"Repo at HOLOCRON/; docker stack comes up with persistent data intact per volume strategy.","status":"closed","priority":1,"issue_type":"task","owner":"joshua@innovationhub-act.org","created_at":"2026-05-25T12:47:51Z","created_by":"Joshua Belke","updated_at":"2026-05-28T13:31:15Z","closed_at":"2026-05-28T13:31:15Z","close_reason":"User completed parent dir rename to /Volumes/tuf8tb/NATO/R2D2-Holocron prior to this session.","dependencies":[{"issue_id":"holo-d8j.13","depends_on_id":"holo-d8j","type":"parent-child","created_at":"2026-05-25T08:47:51Z","created_by":"Joshua Belke","metadata":"{}"},{"issue_id":"holo-d8j.13","depends_on_id":"holo-d8j.2","type":"blocks","created_at":"2026-05-25T08:48:01Z","created_by":"Joshua Belke","metadata":"{}"},{"issue_id":"holo-d8j.13","depends_on_id":"holo-d8j.8","type":"blocks","created_at":"2026-05-25T08:48:01Z","created_by":"Joshua Belke","metadata":"{}"}],"dependency_count":2,"dependent_count":0,"comment_count":0}
|
||||
{"_type":"issue","id":"holo-d8j.8","title":"Verify Docker stack end-to-end after rename (§8)","description":"Plan §8 verification: docker compose config parses; make up brings stack up; curl localhost:7070/health returns 200; npm install + npm run build + npm test pass in holocron-frontend; Cesium server publishes on new MQTT topic; Tauri cargo build succeeds; viewer renders. Capture any regressions as new bd issues.","acceptance_criteria":"All §8 verification bullets pass; any new findings filed as bd issues.","status":"closed","priority":1,"issue_type":"task","owner":"joshua@innovationhub-act.org","created_at":"2026-05-25T12:47:30Z","created_by":"Joshua Belke","updated_at":"2026-05-28T13:31:15Z","closed_at":"2026-05-28T13:31:15Z","close_reason":"docker compose -f {docker-compose.yml,local.yml,local-dev.yml,cesium/docker-compose.yml,cicd/docker-compose.yml,cicd/docker-compose-build.yml} config parses OK; frontend npm build succeeds; 97/97 vitest tests pass.","dependencies":[{"issue_id":"holo-d8j.8","depends_on_id":"holo-d8j","type":"parent-child","created_at":"2026-05-25T08:47:29Z","created_by":"Joshua Belke","metadata":"{}"},{"issue_id":"holo-d8j.8","depends_on_id":"holo-d8j.5","type":"blocks","created_at":"2026-05-25T08:47:59Z","created_by":"Joshua Belke","metadata":"{}"},{"issue_id":"holo-d8j.8","depends_on_id":"holo-d8j.6","type":"blocks","created_at":"2026-05-25T08:47:59Z","created_by":"Joshua Belke","metadata":"{}"},{"issue_id":"holo-d8j.8","depends_on_id":"holo-d8j.7","type":"blocks","created_at":"2026-05-25T08:48:00Z","created_by":"Joshua Belke","metadata":"{}"}],"dependency_count":3,"dependent_count":4,"comment_count":0}
|
||||
|
|
@ -12,6 +13,7 @@
|
|||
{"_type":"issue","id":"holo-jpa.2","title":"Integrate R2-D2 data and feed APIs","description":"Implement the R2-D2 external API portion of the Holocron plan once endpoint details are available. Model R2-D2 APIs as configurable server-side data sources so reference data and feeds can be enabled, disabled, cached, transformed, and rendered as app layers without exposing credentials to the browser.\n\nScope:\n- Add r2d2-rest source kind support.\n- Add server-side R2-D2 client and source cache.\n- Integrate data API endpoints for bases, ports, ICAOs, and related reference data.\n- Integrate feeds API endpoints such as critical underwater infrastructure.\n- Read base URLs and tokens from environment/Kubernetes secrets.\n- Return redacted source/auth status in config endpoints.\n- Surface stale/error state without blocking app startup.\n\nDetails still needed:\n- Base URLs for local/staging/production.\n- Auth method and required headers.\n- Example payloads for bases, ports, ICAOs, and feed items.\n- Pagination/filtering/cache semantics.\n- Refresh cadence and payload size expectations.\n- Feed geometry and display metadata requirements.","acceptance_criteria":"- R2-D2 credentials are server-only and redacted in all browser-visible config.\n- Enabled R2-D2 REST sources can be fetched through a server endpoint such as /api/sources/:sourceId/data.\n- Bases, ports, ICAOs, and feed items are transformed into map-ready assets or overlays with source/layer metadata.\n- API failure produces visible source error/stale state and does not crash the app.\n- Unit tests cover R2-D2 response transforms using fixture payloads.\n- Implementation is blocked until API contracts and sample payloads are provided.","spec_id":"docs/plans/2026-05-24-holocron-k8s-mqtt-r2d2-integration.md","status":"open","priority":1,"issue_type":"feature","owner":"joshua@innovationhub-act.org","created_at":"2026-05-24T22:49:55Z","created_by":"Joshua Belke","updated_at":"2026-05-24T22:49:55Z","labels":["api","feeds","holocron","r2d2"],"dependencies":[{"issue_id":"holo-jpa.2","depends_on_id":"holo-jpa","type":"parent-child","created_at":"2026-05-24T18:49:55Z","created_by":"Joshua Belke","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0}
|
||||
{"_type":"issue","id":"holo-jpa.1","title":"Implement configurable MQTT source integrations","description":"Implement the MQTT portion of the Holocron source plan. Replace the single hard-coded MQTT topic derived from MQTT_TOPIC_PREFIX with a source registry that can subscribe to multiple enabled topic groups such as demo, synthetic, exercise, and production. Keep local Mosquitto compatibility while allowing production to point at the cluster/R2-D2 broker.\n\nScope:\n- Add config/sources/config.yaml entries for MQTT sources.\n- Serve normalized source config from /api/config and /api/config/sources.\n- Subscribe server.cjs to all enabled MQTT topics.\n- Include sourceId, sourceLabel, and layer metadata in WebSocket asset_update messages.\n- Update publish allowlisting to use per-source publish_prefix values.\n- Preserve the existing single-topic local dev behavior as a fallback.","acceptance_criteria":"- /api/config/sources exposes demo, synthetic, exercise, and production-capable MQTT source definitions.\n- server.cjs subscribes to every enabled MQTT source topic after broker connection.\n- WebSocket clients receive source metadata for MQTT messages.\n- Publishing is only allowed to configured source publish prefixes.\n- Local docker compose with Mosquitto still works without a custom sources config.\n- Tests cover source config parsing and WebSocket topic subscription behavior.","notes":"IMPLEMENTED (2026-06-02): server auto-discovery (discovery wildcard subscribe + deriveTheater + GET /api/config/theaters) and frontend theater views (description.theater stamping, ControlPanel Navigation theater \u003cselect\u003e, Settings 'Topic Mapping' tab CRUD persisted in userPreferencesStore, utils/theaters.ts +tests). 110 frontend tests pass, vite build clean, eslint clean. Committed bcd3e6d+ddcfee1. Building image sha-ddcfee1 to deploy.","spec_id":"docs/plans/2026-05-24-holocron-k8s-mqtt-r2d2-integration.md","status":"closed","priority":1,"issue_type":"feature","assignee":"Joshua Belke","owner":"joshua@innovationhub-act.org","created_at":"2026-05-24T22:49:44Z","created_by":"Joshua Belke","updated_at":"2026-06-02T06:20:51Z","started_at":"2026-06-02T05:58:54Z","closed_at":"2026-06-02T06:20:51Z","close_reason":"Delivered + deployed (rev5, sha-0c1fcb2): auto-discovered MQTT theaters + human topic mappings. Server subscribes discovery wildcard, stamps asset_update.theater, exposes /api/config/theaters; frontend has a theater dropdown (All + Test Feed + TFX theaters w/ live counts) filtering globe+nav, and a Settings 'Topic Mapping' tab (label/enable/add/remove, adopt discovered). Verified in browser: published live assets to TFX-Baltics/NorthSea, dropdown discovered them, filtering+globe-prune confirmed. Tests pass.","labels":["holocron","k8s","mqtt"],"dependencies":[{"issue_id":"holo-jpa.1","depends_on_id":"holo-jpa","type":"parent-child","created_at":"2026-05-24T18:49:43Z","created_by":"Joshua Belke","metadata":"{}"}],"dependency_count":0,"dependent_count":0,"comment_count":0}
|
||||
{"_type":"issue","id":"holo-jpa","title":"Deploy holochron to RAID-K8-ILAB cluster","description":"Stand up holochron in the RKE2 cluster (kubeconfig: .settings/kubeconfig.r2d2). Reachable internally at holocron.r2d2.office.ilab.zone. LoadBalancer via kube-vip (pool 192.168.3.120-220 + .10). Target LB IP: 192.168.3.120. See child issues for breakdown.","status":"open","priority":1,"issue_type":"epic","owner":"joshua@innovationhub-act.org","created_at":"2026-05-22T23:08:38Z","created_by":"Joshua Belke","updated_at":"2026-05-22T23:08:38Z","dependency_count":0,"dependent_count":0,"comment_count":0}
|
||||
{"_type":"issue","id":"holo-86s","title":"Track fusion gating demonstration (interactive artifact)","description":"Interactive page showing where fusion works, where it fails, and the gate evaluation: draggable track pair with live distance/heading/speed gate readout, bucket grid overlay, latitude slider demonstrating longitude convergence, and side-by-side naive vs indexed candidate sets.","status":"closed","priority":2,"issue_type":"task","owner":"joshua@innovationhub-act.org","created_at":"2026-08-04T22:18:06Z","created_by":"Joshua Belke","updated_at":"2026-08-04T22:41:12Z","closed_at":"2026-08-04T22:41:12Z","close_reason":"Reworked track fusion landed in fd7c167; gating demonstration published as an artifact","dependency_count":0,"dependent_count":0,"comment_count":0}
|
||||
{"_type":"issue","id":"holo-18m","title":"CesiumViewer: report-shape MOUSE_MOVE handler reads movement.position, throwing on every mouse move","description":"Cesium's MOUSE_MOVE ScreenSpaceEvent carries startPosition/endPosition, not position. The reporting-mode preview handler typed its callback as { position } and passed movement.position (undefined) to camera.pickEllipsoid, which throws DeveloperError 'windowPosition is required.' on every mouse move while drawing. Net effect: the live rubber-band preview for rectangle/circle/hexagon never rendered. Shapes still completed because LEFT_CLICK does carry position. Fixed by having getClickLonLat take a Cartesian2 directly and passing movement.endPosition from MOUSE_MOVE.","status":"closed","priority":2,"issue_type":"bug","owner":"joshua@innovationhub-act.org","created_at":"2026-08-04T21:55:28Z","created_by":"Joshua Belke","updated_at":"2026-08-04T21:59:13Z","closed_at":"2026-08-04T21:59:13Z","close_reason":"Fixed and verified against the live runtime: 1 websocket per tab, 0 console errors, rectangle draw preview works","dependency_count":0,"dependent_count":0,"comment_count":0}
|
||||
{"_type":"issue","id":"holo-zy5","title":"Get local dev runtime running and fix blocking errors","description":"Bring up the local HOLOCRON dev stack (mosquitto + synthetic publisher in docker, server.cjs + vite on host) and fix any errors that block it, including the 39 pre-existing tsc --noEmit errors on branch r2d2.","status":"closed","priority":2,"issue_type":"task","assignee":"Joshua Belke","owner":"joshua@innovationhub-act.org","created_at":"2026-08-04T21:31:44Z","created_by":"Joshua Belke","updated_at":"2026-08-04T21:59:18Z","started_at":"2026-08-04T21:32:03Z","closed_at":"2026-08-04T21:59:18Z","close_reason":"Local dev runtime up (mosquitto+publisher in docker, server.cjs+vite on host); all 39 tsc errors fixed; 117 tests pass","dependency_count":0,"dependent_count":0,"comment_count":0}
|
||||
{"_type":"issue","id":"holo-81a","title":"Align styling to .settings/style reference (docs + token nudges)","description":"Add docs/STYLE.md documenting the R2/Farsight design system in .settings/style, link from README.md and AGENTS.md, and nudge clearly-drifted structural tokens in holocron-frontend toward the reference palette. No brand reskin.","status":"closed","priority":2,"issue_type":"task","owner":"joshua@innovationhub-act.org","created_at":"2026-06-02T05:01:22Z","created_by":"Joshua Belke","updated_at":"2026-06-02T05:02:57Z","closed_at":"2026-06-02T05:02:57Z","close_reason":"Added docs/STYLE.md, linked from README/AGENTS; nudged frontend neutral tokens to reference palette","dependency_count":0,"dependent_count":0,"comment_count":0}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue