Skip to content

Latest commit

 

History

History
385 lines (347 loc) · 75.2 KB

File metadata and controls

385 lines (347 loc) · 75.2 KB

Backlog

Prioritized list of features, capabilities, and technical debt for Future Debrief.

This document is maintained by the opportunity-scout and backlog-prioritizer agents, with human oversight.

Scoring Criteria

Dimension Description 1 3 5
Value Capability improvement to Debrief Nice-to-have, cosmetic Useful enhancement, improves workflow Core capability, enables new use cases
Media Interest for blog/LinkedIn posts Internal improvement, hard to visualize Interesting technical story Visual, demo-able, compelling narrative
Autonomy Suitability for AI-assisted development Needs significant human judgment/testing Some verification needed Clear acceptance criteria, testable

Total = Value + Media + Autonomy (max 15)

Complexity

Level Meaning Model
Low Straightforward, limited scope Haiku
Medium Moderate scope, some design decisions Sonnet
High Significant scope, complex design Opus

Workflow

Status Meaning Trigger
needs-interview Quick capture, awaiting detailed requirements /idea --defer
proposed Item added, awaiting review Scout adds, ideas-guy adds, or human submits
approved Strategically reviewed, ready for spec Ideas-guy approves
specified Spec created, linked below /speckit.start {ID}
clarified Ambiguities resolved /speckit.clarify
planned Implementation plan ready /speckit.plan
tasked Tasks broken down /speckit.tasks
implementing Active development /speckit.implement or /bugfix
complete Done (row struck through) /speckit.implement completes or /bugfix PR merged

Backlog Flow

1. IDEATION
   the-ideas-guy ──generates──> strategic ideas ──────────┐
   opportunity-scout ──explores──> technical opportunities │
                                                          ▼
                                                    BACKLOG.md
                                                          │
                  ┌───────────────────┬───────────────────┘
                  │                   │
                  ▼                   ▼
           (needs-interview)     (proposed)
           Quick capture         Full detail
                  │                   │
                  │                   │
2. INTERVIEW      │                   │
   /interview ────┘                   │
   completes requirements gathering   │
          │                           │
          └─────────────> proposed <──┘
                              │
3. SCORING (backlog-prioritizer)
   scores V/M/A for proposed items
                              │
4. REVIEW (the-ideas-guy)
   reviews scored items against STRATEGY.md
      ├── Approve → status: approved
      ├── Park → STRATEGY.md Parking Lot
      └── Reject → STRATEGY.md Rejected Log
                              │
5. SPECIFICATION              ▼
   /speckit.start {ID} ← requires status: approved
                              │
   OR (for Bug items only):   │
   /bugfix {ID} ──────────────┼──> implementing ──> complete
                              │    (skips specify → tasked)

Status Validation Rules

Command Required Status Error if Wrong Status
/interview needs-interview "Item {ID} doesn't need an interview (status: {status})"
/speckit.start approved "Item {ID} needs interview first. Run /interview to complete requirements gathering." (if needs-interview)
/speckit.start approved "Item {ID} has status '{status}'. Only 'approved' items can be started." (other statuses)

Quick Capture Path (via /idea --defer):

  1. User captures idea quickly → status: needs-interview
  2. Later, user runs /interview → conducts full interview → status: proposed
  3. Normal flow continues: scoring → approval → specification

Full Detail Path (via /idea):

  1. User provides full detail with interview → status: proposed
  2. Normal flow continues: scoring → approval → specification

Starting Specification Work

When an item has status approved:

/speckit.start 007    # Validates item is approved, creates spec, updates this file

This bridges backlog approval to the speckit workflow by:

  1. Validating the item exists and has status approved
  2. Creating a feature branch and specification
  3. Updating this file: status → specified, description → link to spec

Bug Fast-Track

Bug items (Category: Bug) skip the full speckit pipeline. A bug fix restores existing specified behaviour — it doesn't need a new spec, plan, or task breakdown.

/bugfix 013    # Validates item is approved + Category is Bug, then fix → test → PR

Fast-track status flow:

approved → implementing → complete

What is skipped: specification, clarification, planning, task breakdown, media content, evidence artifacts.

What still applies: tests required (Constitution Art. VI), atomic commits (Art. XIII), PR with summary and test plan.

Constitution note: Article VIII ("Specs before code") applies to significant new implementations. A bug fix restores behaviour already defined by a prior feature's spec, so it falls outside this gate.

Epics

Large features broken down into multiple backlog items.

ID Title Description Status Items
024 Storyboarding Briefings Add storyboarding capability for mission/exercise briefings specified #215, #216, #217, #218
E01 Tool Implementation Sequence Implement 63 documented legacy tools in phased order approved #062, #063, #064, #065, #066, #067, #068
E02 PROV Logging Implementation Implement PROV logging system per SRD priorities P1-P6 complete #070, #071, #072, #073, #074, #075, #076
E03 Buffer Zone Analysis Demo Reactive PROV cascade with 5-tool chain for stakeholder demo approved #078, #079, #080, #081, #082, #084
E04 Results Visualization Vega-Lite based results viewing infrastructure approved #085, #086, #087, #088, #089, #090
E05 Shape Drawing Tools Add shape drawing tools to map via Geoman (point, rectangle, polygon, polyline) with '+' toolbar dropdown complete #091, #092, #093, #094, #095, #096
E06 Architectural Consistency Fix implementation drift and constitutional violations from six-axis review approved #102, #103, #104, #105, #106, #107, #108, #109, #110, #111, #112
E07 Sensor Data Pipeline Port legacy sensor capabilities in 7 phases: schema, import, rendering, array offsets, residuals, TMA, interactive drag proposed #116, #117, #118, #119, #179, #120, #121, #122
E08 STAC Stack Browser Discovery UI Analyst-facing discovery interface: filter bar, list/map/timeline views, vessel taxonomy, colour schemes complete #125, #126, #127, #128, #129, #130, #131, #132, #133, #134, #136, #174
E09 Provenance Graph Reference data currency tracking and solution comparison (shadow tracks) proposed #145, #146, #147, #148, #150, #151, #149
E10 NL-Assisted Catalog Discovery Natural language search over STAC catalog, integrated with CQL2 filter engine proposed #180, #181, #182, #183, #184, #185, #186, #187, #188, #189, #190
E11 Schema-First Boundary Typing Root every data-parse boundary in LinkML or a declared TS schema; eliminate residual Record<string, unknown> boundary casts approved #206 (audit) — additional items added per phase
E12 Shared @debrief/tools-ts package Extract TypeScript tool implementations into a shared workspace package; eliminate cross-app deep imports approved — added per migration phase

Items

ID Category Description V M A Total Complexity Status
230 Enhancement Storyboard edit suite webview wiring + web-shell harness + error triage — follow-up for #218's deferred items. Ships the three wiring gaps in the VS Code webview (chevron expand + double-click + right-click overflow menu; client-side reducer consuming the 3 inbound + 11 outbound postMessages; storyboardPanelView.refresh() enriched with SceneEditViewModel[] + pendingUndoToast), an interactive web-shell harness with full reducer (so Playwright drives the polish loop end-to-end from the primary E2E surface), thin code-server E2E for VS Code-native chrome only, plus triage of the two pre-existing errors (Capture failed — viewport not reported race + Failed to load plot STAC-load diagnostic). Unblocks the T068/T087/T094 Playwright + T097 screenshots + T101/T102 blog post deferred from #218. Estimate 6–8 dev-days. (follow-up to #218) 4 4 4 12 Medium approved
228 Documentation Regenerate Future Debrief blog archive from specs — one-shot script producing unified Building [Feature] posts per shipped standalone spec, epic rollups replacing per-spec posts for multi-spec arcs (charter-first detection with [Ex] fallback), and composite posts clustering temporally+thematically-related standalones (5-day window AND ≥1 shared tag; 5–10 day near-miss band surfaced for author review). Produces ARCHIVE-REBUILD.md at repo root with index + runbook so the debrief.github.io maintainer can wipe and republish future posts from scratch. No modifications to existing specs/*/ files; all output at new paths. Script deleted in same PR. Depends on #511 (combine-articles-cache-specs) for the Building title template + evidence/opening-context.md contract. Pre-specify interview record preserved at specs/228-regenerate-blog-archive/spec-draft.md. 3 2 4 9 Medium complete
229 Feature Storyboarding v2 epic — consolidated follow-up covering the three post-#024 presentation-layer items (distraction-free briefing renderer, animated time-range Scenes with time_range != null interpolation, and MP4/GIF video export of a Storyboard traversal). With #218 shipping the #024 MVP, the next storyboarding improvements are all presentation-layer; grouping into one epic lets the team sequence them coherently. (requires #215–#218 MVP; ties to spec.md Out of Scope entries) - - - - High needs-interview
221 Enhancement Capture actor setting — expose a VS Code setting (debrief.storyboard.captureActor) that overrides the OS-username default used in LogEntry.agent for Storyboard captures. Today the extension falls back to os.userInfo().username with a "vscode-user" fallback (see #216 research R6a); this is fine for a single-analyst station but multi-user ops rooms may want a fixed callsign or operator code. Low urgency; surface during #218 edit-suite work if no one else picks it up. (follow-up to #216) 2 2 4 8 Low proposed
222 Infrastructure [E11] Promote MCP transport envelopes to LinkML — the audit (#206) flagged 16 hand-typed MCP / tool-system shapes across shared/utils/src/mcp-types.ts, shared/components/src/ToolMatch/mcpAdapter.ts, apps/vscode/src/services/mcpToolAdapter.ts, apps/web-shell/src/mocks/calcService.ts, services/session-state/src/server/mcp.ts, and services/session-state/src/log/types.ts (MCPRequest, MCPToolResponse, MCPErrorResponse, MCPContentItem, MCPToolDefinition, MCPSelectionRequirement, MCPParamSchema, ToolResult, ToolDefinition, ToolParameterMeta, ToolExecutor, ToolVersionResolver, ToolName, ToolResultForLog, ToolExecutionResultForReplay, ToolsUpdateMessage). These cross the Python↔TS boundary via MCP JSON-RPC and must be rooted in LinkML. See docs/type-audit-2026.md §3.1 for the per-site list. 3 2 4 9 Medium approved
223 Infrastructure [E11] Promote STAC catalog hand-types to LinkML — the audit (#206) flagged StacItem (3 sites), StacCatalog (2 sites) and related aliases in apps/vscode/src/types/stac.ts and apps/web-shell/src/mocks/stacService.ts. STAC payloads persist to disk (Python writes, TS reads) and are authoritative wire shapes — they must be rooted in LinkML so the two sides cannot drift. See docs/type-audit-2026.md §3.2 (drift cluster) and §3.1. 3 2 4 9 Medium approved
224 Infrastructure [E11] Promote session-state wire shapes to LinkML — the audit (#206) flagged 6 cross-domain session-state types in services/session-state/src/log/types.ts and services/session-state/src/types/index.ts: StateSnapshot, FeatureProvenance, ModifiedFeature, InputFeatureState, BranchPointLocation, CreateSnapshotOptions. These serialise to disk and across the Python MCP boundary. See docs/type-audit-2026.md §3.1. 3 2 4 9 Medium approved
225 Infrastructure [E11] Promote loader↔main IPC envelopes to LinkML — the audit (#206) flagged 5 IPC response/request shapes hand-authored in apps/loader/src/main/ipc/stac.ts and apps/vscode/src/commands/openPlot.ts: CreatePlotResponse, AddFeaturesResponse, ListPlotsResponse, OpenPlotArgs, ParseResult. These cross Electron main↔renderer and VS Code↔loader boundaries and should be derivable from a single source. See docs/type-audit-2026.md §3.1. 3 2 4 9 Medium approved
226 Infrastructure [E11] Resolve real drift clusters surfaced by the type-audit — the audit (#206) found 25 drift clusters (same-name different-shape declarations). Excluding Storybook Story / React component Props local-convention clusters (routed to #227) and drift clusters whose resolution is already owned by a domain-specific E11 child (#204 GeoJSON, #222 MCP, #223 STAC, #224 session-state, #225 IPC), the residual drift set that lands here includes DebriefConfig, ExtensionMessage, ExtensionToWebviewMessage, FilterState, IncomingMessage, PlotTimeRange, PointMetadataEntry, PropertiesCommitMessage, SetCurrentTimeMessage, StylePropertyDescriptor, TimeControllerState, WebviewMessage, WebviewReadyMessage, WizardStep — each should be deduplicated by promoting the winning shape to LinkML or refactoring callers. See docs/type-audit-2026.md §3.2. 3 2 4 9 Medium approved
227 Infrastructure [E11] Storybook / React component local-convention drift rollup — the audit (#206) mechanically flagged Story (38 sites) and Props (14 sites) as drift candidates because each file re-declares these names with different shapes. Both are well-understood per-file conventions rather than semantic drift. This item exists so those rows have a backlog home (per spec FR-006) and so the rule can be re-evaluated if the Storybook/React setup changes; no code action expected unless the audit methodology changes. 1 1 5 7 Low approved
220 Tech Debt Stale-viewport guard on Storyboard capture — add an async await nextFrame() (or 50ms debounce) at the start of captureScene.ts so Leaflet moveend has fired before the viewport snapshot is read from session-state. Closes a narrow silent-failure window where a rapid-pan + immediate Ctrl/Cmd+Alt+C captures the viewport from before the final pan gesture settled. Low practical risk (humans take > 100ms between pan-finish and keystroke) but this is Article I.3 (no silent failures) hygiene. (follow-up to #216) 3 1 4 8 Low proposed
231 Tech Debt Fix screenshot handling in regenerated blog archive — revive the one-shot generator deleted in #228 (commit 19406178), patch the three stitchers so epic rollups and composite posts preserve member-spec images (34 of 57 source references silently dropped in PR #518 — zero images in every composite, zero in every rollup), add a path rewriter that converts source-relative ./evidence/... paths to Jekyll's /assets/images/future-debrief/<slug>/ convention, add Orphan Screenshots + Broken Image References sections to ARCHIVE-REBUILD.md (19 orphans across specs 085/118/142), re-run, re-delete. Generator is ephemeral per #228 FR-009. (follow-up to #228) 2 3 4 9 Medium approved
219 Tech Debt Buffer item.json asset-entry updates to save-time — today #216's sceneThumbnailService.writeSceneThumbnail rewrites item.json on every capture (PNG write + asset entry merge + JSON rename-on-tmp). Per-capture cost is sub-10ms so not a perf blocker, but it entangles the "in-memory session state" vs "persisted plot" boundary that the rest of the editor maintains cleanly (features.geojson is flushed at save-time only). Shift asset-entry updates to an in-memory buffer, reconcile with item.json at the save path (where other on-disk mutations already live). Architectural cleanness win, not a perf win. (follow-up to #216) 3 1 3 7 Low proposed
218 Feature [E024 4/4] Storyboarding: edit suite + housekeeping — Inline rename, markdown description, soft-delete + toast-undo, update-to-current (atomic re-snapshot), duplicate (prompted timestamp), copy-to-other-storyboard (deep-copied thumbnail); stale-thumbnail detection + per-Scene refresh; every edit op lands in the Analysis Log Panel (#176) with the Scene thumbnail. Turns raw captures into a briefing-ready narrative. (requires #215, #216, #217, #174, #176) 3 3 3 9 High implementing
217 Feature [E024 3/4] Storyboarding: panel + playback — Full Storyboard panel (multi-Storyboard dropdown, Scene list, overflow menu for create / rename / delete), playback transport (Forward / Backward buttons + scoped Left/Right arrows), flyTo + time-slider tween, scrub-window lock, on-map Scene rectangles for the active Storyboard, missing-data hard-block. Delivers the epic's stated core value — guided walk-throughs of recorded exercises. (requires #215, #216) 5 5 3 13 High complete
216 Feature [E024 2/4] Storyboarding: capture — Ctrl/Cmd+Alt+C shortcut scoped to Map Viewer, first-capture inline quick-pick for Storyboard name, synchronous #174 thumbnail, DTG-default Scene title, duplicate-timestamp Replace / Offset (+1s) / Cancel prompt; minimal panel auto-opens to confirm persistence. First user-visible slice. (requires #215, #174) 4 3 4 11 Medium complete
215 Infrastructure [E024 1/4] Storyboarding: schema + CRUD core — LinkML Storyboard + Scene + Viewport + HistoryEntry sources, generated Pydantic / JSON Schema / TypeScript bindings, Article II adherence tests (golden fixtures, Python↔TS round-trip, Pydantic-vs-LinkML JSON Schema equality), and a headless shared TypeScript CRUD module at shared/components/storyboard/ enforcing ordering / duplicate-timestamp rejection / feature_set_hash / missing-data detection / append-only provenance. Authoritative Key Entities for the whole epic. 3 2 4 9 Medium complete
214 Tech Debt Drift-prevention rule for @debrief/utils re-duplication — add a lint or CI check that fails if a file matching apps/*/src/utils/bounds.ts reappears, or more generally if any apps/* file exports a symbol already exported from @debrief/utils. Makes the SC-001 guarantee from #200 durable; without it, a future contributor could reintroduce a local bounds.ts without friction. Candidate implementations: custom ESLint rule (no-restricted-exports-flavoured), or a small CI script under scripts/. (follow-up to #200) 3 1 4 8 Low complete
213 Tech Debt Unify shared/components/src/utils/bounds.ts with @debrief/utils — that copy operates on LinkML-typed DebriefFeature arrays and carries additional helpers (expandBounds, isPointInBounds, bboxOverlapsViewport, viewportToBounds, filterBySpatialExtent). Unification requires reconciling three feature-type families (DebriefFeature / SafeFeature / GeoJSONFeature) and migrating four consumers. Must also settle the pre-computed-bbox fast-path policy on the unified implementation (absorb #211 at approval time if #211 is still open). Legitimately larger scope than #200's generic-GeoJSON consolidation — treat as its own cleanup. (follow-up to #200; absorbs #211 on approval) 4 2 3 9 Medium complete
212 Tech Debt Replace hand-written SafeFeature / GeoJSONFeature with LinkML-generated equivalents — two hand-written TypeScript feature types in shared/utils/src/types.ts (one with a required, typed geometry; one with geometry: SafeGeometry | null + coordinates: unknown). Pre-dates #200 but is an Article II tripwire — any "schema-adjacent" in-tree type should be LinkML-generated. #200 widens calculateBounds to a structural minimum that sidesteps the smell; this item closes it. (predates #200; follow-up) 3 1 3 7 Medium proposed
211 Tech Debt Pre-computed-bbox fast-path in @debrief/utils calculateBounds — honour feature.bbox when present and skip the per-feature coordinate walk. shared/components/src/utils/bounds.ts already does this; @debrief/utils does not. Convergent-behaviour improvement that reduces one delta between the two implementations and is a prerequisite for any future unification (see #213). (follow-up to #200) 3 1 4 8 Low proposed
210 Tech Debt Un-skip webview log-panel E2E suite — tests/e2e/test-log-panel.spec.ts is currently test.describe.fixme(...) pending issue #143 (webview iframe selector instability in code-server). Once #143 resolves, convert back to active tests; these cover the real integration path (code-server → LogPanel webview iframe → VS Code message bus) that Storybook cannot exercise. (requires #143, #176) 3 1 4 8 Low approved
209 Tech Debt LogPanel axe-core accessibility audit — run @axe-core/playwright against every LogPanel Storybook story in light + dark + vscode theme variants; produce evidence/176-log-panel-ux/a11y-audit.md with violations + fixes. Context: Feature 176 covers roving-tabindex (#176 T008) and aria-selected on cards (#176 T007), but full a11y audit has not been run. @axe-core/playwright is a new but widely-used MIT dep. (follow-up to #176) 4 2 4 10 Low approved
208 Tech Debt Add kind discriminator to TimelineEntry — extend the UI projection in shared/components/src/LogPanel/types.ts with kind?: 'snapshot' | 'tool' | 'tune', populated by the VS Code host in apps/vscode/src/views/logPanelView.ts. Feature 176 decision 2A detects snapshot entries via ToolCategory === 'snapshot' — works short-term but conflates visual category with entry semantics. Future features (snapshot button, tune marker, manual rationale entries) need a proper discriminator. (follow-up to #176, depends on PROV-side signal) — Implemented schema-rooted on branch 208-timeline-entry-kind-v2; supersedes PR #508 (UI-only rename of coupling) and PR #507 (planning-only). See ADR-023. 3 1 4 8 Low implementing
207 Feature Tool manifest lookup for category resolution — replace the static TOOL_ID_TO_CATEGORY map in shared/components/src/LogPanel/toolCategories.ts with a lookup against a tool manifest. Today the interim static map only knows tools we hand-listed; new tools in contrib/ or services/calc/ get the neutral-grey fallback even when they have a clear category. Spec research R1 explicitly flags this as interim and the spec §12 Q1 requires manifest-declared categories. (follow-up to #176, blocked on tool manifest schema definition) 3 2 3 8 Medium proposed
206 Infrastructure [E11] Audit non-LinkML type declarations — analysis-phase inventory of every hand-typed interface/type/enum across apps/, shared/, and services/; classify as schema-rooted / boundary / single-domain-exception / drift-candidate; produce report; open follow-up items for every promote-to-LinkML and drift finding not already covered by #203 – #205. Feeds the phase list for E11. 3 2 4 9 Medium complete
205 Tech Debt Promote DisplayMode and PlaybackState to LinkML — two enum-style types are defined twice in TS with drifted values ('full'|'trail' vs 'normal'|'snailTrail'; 'playing'|'paused' vs 'stopped'|'playing'|'paused'). Define DisplayModeEnum + PlaybackStateEnum in LinkML, regenerate, delete both hand-typed copies per enum. Session-state's superset PlaybackState wins; components widens. 4 2 4 10 Medium complete
204 Tech Debt Add RawGeoJSONFeature to LinkMLGeoJSONFeature is defined twice in TS with different shapes (@debrief/utils vs services/session-state) because there's no LinkML class for the loose "any GeoJSON Feature" parse-boundary type. Add RawGeoJSONFeature to the LinkML schema, regenerate, delete both TS copies. Document usage as parse-boundary-only; narrow to DebriefFeature past the boundary. 4 2 4 10 Medium complete
203 Tech Debt Consolidate spatial types in LinkML + lat/lon ↔ GeoJSON convertersCoordinate, ViewportPolygon, TimeFilter defined twice in TS (components + session-state) using tuples, while LinkML has Coordinate = {longitude, latitude} object form. Adopt object form as canonical end to end; add toGeoJSONCoord / fromGeoJSONCoord helpers in @debrief/utils to confine tuple handling to GeoJSON boundary. 4 2 4 10 Medium complete
202 Tech Debt Verify apps/loader electron entry + add knip config — knip reports 12 files under apps/loader/src/main/** as unused; almost certain false-positive from knip not tracing electron-builder config. Confirm main/index.ts is the declared entry, confirm IPC modules are reachable, add knip config stanza whitelisting the entry so future runs stay clean. 3 1 5 9 Low complete
201 Tech Debt Consolidate ResolvedPositionStyle and align with schema — two ResolvedPositionStyle interfaces with drifted shapes (symbol: 'circle'|'square'|'triangle' + label vs the 5-symbol components version + labelText). Canonicalise in @debrief/utils; symbol field uses PositionStyleSymbolEnum from @debrief/schemas (not a hand-typed union); field name labelText. 3 1 5 9 Low complete
200 Tech Debt ~~Consolidate bounds utilities into @debrief/utilsapps/vscode/src/utils/bounds.ts is a ~116-line 95%-identical copy of shared/utils/src/bounds.ts; vscode version has a null-guard the shared version is missing. Lift null-guard into utils, reconcile SafeFeature/GeoJSONFeature at the call site, delete the vscode copy + duplicate test, switch mapPanel.ts to import from @debrief/utils.~~ 3 1 5 9 Low complete
199 Tech Debt Code-quality cleanup: small-bucket consolidation — combined single-PR package of five low-risk follow-ups from PR #465: (a) document residual vscode view↔service type-only cycles in decisions.md; (b) merge LogTimelineProps + LogByFeatureProps into single LogPanelProps; (c) delete orphaned shared/components/diff/ sub-package; (d) add specs/** to knip ignore; (e) fix plotName placeholder in loader's useLoadWorkflow + promote 3 remaining TODOs to GitHub issues. 3 1 5 9 Low complete
198 Enhancement [E10] NL search — keyring-unavailable distinct banner — when context.secrets.get() throws (locked/missing OS keyring on Linux), surface a specific keyring-unavailable outcome + banner rather than folding it into the generic not-configured path; different diagnosis (unlock keyring vs re-enter key) (requires #191) 3 1 4 8 Low approved
197 Feature [E10] NL search — per-prompt audit trail (opt-in) — optional verbose log capturing prompts + responses for forensic review; separate setting + separate log channel; off by default; structured for SIEM ingest (requires #191 structured telemetry) 3 2 3 8 Medium approved
196 Feature [E10] NL search — non-Anthropic providers — pluggable provider choice via debrief.nlSearch.provider setting (Claude / OpenAI / ollama); LLMClient abstraction already supports new factories, main work is per-provider prompt adaptation + error-class mapping (requires #191, provider-neutral prompt validation harness) 4 3 3 10 High approved
195 Feature [E10] NL search in Layers & Tools panels — extend NL-mode to other VS Code webview surfaces once #191 proves out in the Catalog Overview; FilterBar llmClient prop carries over, wiring is presentational (requires #191) 4 3 4 11 Medium approved
194 Infrastructure Cross-cutting PROV log rotation — unify per-item (debrief:provenance_logprovenance_log_archive.jsonl, introduced by #191) and per-feature (existing LogService properties.provenance[]) PROV log rotation/archival under one policy. Today: #191 caps item-level at 500 entries + JSONL archive; feature-level PROV logs are unbounded. Make archival behaviour, cap values, and on-disk archive shape consistent across both levels so retention, replay, and eventual catalog-level audit exports have one mental model. Context: Article III.3 (audit trail immutable) + bounded-growth constraint surfaced during /speckit.review for #191. (requires #191) 3 2 3 8 Medium proposed
193 Enhancement Platform autocomplete + vessel class picker in PropertiesPanel — richer PlatformArrayWidget UX that pulls candidates from platform-registry.json (#180): nationality flag/code lookup, vessel class tree navigator (domain → class → role → type), known-platform autocomplete on id. Today #191 ships a plain add-row widget — analysts typing "NELSON" get zero help. Context: completes the PropertiesPanel Story 1 (editing debrief:platforms) to the same ergonomic bar as the filter chips built in #186. (requires #191, #180) 3 3 3 9 Medium proposed
192 Feature Extend Properties Panel to feature + sub-feature editing in plot view — reuses #447's ActivityPanel shell; form content swaps on selection.primary/selection.featureIds (one feature → feature editor; track-point path → sub-feature editor; cleared → plot editor); includes LinkML extension for point-level metadata (requires #447) 3 2 2 7 High approved
191 Feature Add Properties Panel for editing STAC plot & catalog metadata — context-sensitive panel: 4th ActivityPanel section edits the open plot (staged via session-state, flushed on save); StacBrowser side panel edits item.json directly when no plot is open; schema-driven form from LinkML-generated JSON Schema (complementary to #135) 4 3 3 10 Medium complete
145 Infrastructure [E09] Reference data source schema — LinkML models for reference source types (web-page, REST API, local file, other session), currency states, captured values, and selector expressions 4 2 4 10 Medium proposed
146 Feature [E09] Web page reference fetcher service — Python service to fetch URL + XPath/CSS selector, compare against captured value, determine currency state (current/changed/unavailable/source-structure-changed) (requires #145) 4 3 3 10 Medium proposed
147 Feature [E09] Session currency check orchestrator — batch currency check on session open and manual refresh trigger; aggregates results across all reference sources in a session (requires #146) 4 2 4 10 Medium proposed
148 Feature [E09] Currency change notification modal — blocking modal listing all changed sources with per-source view-diff, accept-update, reject-update controls; batches multiple changes into single modal (requires #147) 4 4 2 10 High proposed
149 Feature [E09] Analysis Log reference data presentation — source indicator icons and warning badges on Analysis Log cards; detail/flip view showing reference value at capture, source URI, and currency status (requires #145) 3 3 4 10 Medium proposed
150 Feature [E09] Downstream recalculation on accept — when analyst accepts updated reference value, re-execute all affected downstream tools via PROV dependency graph; cascading re-run with updated inputs (requires #148) 5 4 2 11 High proposed
151 Feature [E09] Shadow track rendering and lifecycle — render previous solution as faded overlay on map during recalculation; auto-display on any recalc trigger, dismiss button in Analysis Log, replacement on subsequent recalc, transient-only (requires #150) 4 5 3 12 Medium proposed
180 Infrastructure [E10] Platform registry — unified vessel class + platform treeshared/data/platform-registry.yaml with platforms as leaf instances under their class; Python + TypeScript loaders; seeded with 10 known platforms 5 3 4 12 Medium complete
181 Infrastructure [E10] LinkML schema update — per-platform override fields — optional display_name, nationality, vessel_class, vessel_type, vessel_role, domain on TrackProperties; debrief:platforms STAC extension replacing flat aggregates; regen Pydantic + TS types (requires #180) 5 2 4 11 Medium complete
182 Enhancement [E10] Import handler warnings for unregistered platforms — check extracted platform_id values against registry after import; log warnings listing unregistered IDs (import still succeeds) (requires #180) 3 1 5 9 Low complete
183 Feature [E10] Save-time registry resolution — resolve each TRACK platform_id against registry tree at save; overlay analyst-set overrides; emit fully resolved debrief:platforms on item.json (requires #180, #181) 5 3 4 12 Medium complete
184 Infrastructure [E10] Nuke + regenerate sample catalog — delete preview/workspace/samples/local-store/, re-import 72 legacy files through enriched pipeline; populate registry; all schema tests pass (requires #182, #183) 4 2 4 10 Medium complete
185 Feature [E10] CQL2 array_filter evaluator — extend shared/components/src/filter-engine/ to evaluate array_filter() for compound predicates on platforms[]; matchers + CQL2-JSON serialization; unit tests (requires #181) 5 3 4 12 Medium complete
186 Feature [E10] Filter bar platform chips — update FilterBar for compound platform-based chips (nationality + domain, vessel type); wire to array_filter CQL2 expressions (requires #185) 4 4 3 11 Medium complete
187 Infrastructure [E10] Build-time enum extraction — script to extract vessel class tree, nationalities, exercise names, tags, feature_tags from registry + catalog; compact JSON for LLM prompt (requires #180, #184) 3 1 5 9 Low complete
188 Feature [E10] NL → CQL2 prompt design + generation — system prompt with CQL2 schema + extracted enums + array_filter syntax; generator + headless harness; ships a hand-authored fixture corpus so CI and offline stakeholder demos run with zero live-LLM dependency (requires #185, #187) 5 4 3 12 High complete
189 Feature [E10] Stakeholder demo UI — no-build-step HTML/React playground; query bar + filter chips + card grid; consumes #188's generator and hand-authored fixture transport so demos run offline and deterministically (requires #186, #188) 5 5 3 13 Medium complete
190 Feature [E10] Live LLM transport — second implementation of #188's LLMClient interface backed by a real provider; auth, endpoint config, MCP/proxy/direct decision; drops in as a config toggle to expand #189 beyond the fixture corpus (requires #188, #189) 4 2 3 9 Medium complete
127 Feature [E08] Filter bar with lozenge UI and AND/OR logic — persistent filter bar with add/edit/remove lozenges, all filter types, OR container with drag support, CQL2 serialisation (requires #125, #126) 5 5 3 13 Medium complete
130 Feature [E08] Map view with live spatial filtering — spatial footprints on map, pan/zoom as live spatial filter (requires #125) 5 5 3 13 Medium complete
174 Feature [E08] Thumbnail capture and gallery preview — capture Leaflet map as PNG on Save, store as STAC thumbnail assets (800x600 + 200x150), add gallery preview pane to catalog browser, Playwright backfill script for existing plots (requires #129) 5 4 3 12 Medium complete
132 Infrastructure [E08] Three-view synchronization and filter state — shared filter state coordinating filter bar + list + map + timeline; dynamic updates; zero-results handling (requires #127, #129, #130, #131) 5 4 3 12 High complete
126 Infrastructure [E08] Client-side CQL2 filter engine — reference implementation of CQL2 AND/OR filter logic operating on mock data array; validates query model without backend (requires #125) 4 3 4 11 Medium complete
129 Feature [E08] List view with spatial thumbnails — scrollable exercise list with metadata summary, spatial thumbnail, flexible sorting, recent-work resumption (requires #125) 4 4 3 11 Medium complete
131 Feature [E08] Timeline/Gantt view with temporal filtering — temporal extent bars, time range adjustment as live temporal filter (requires #125) 4 4 3 11 Medium complete
133 Feature [E08] Vessel taxonomy and hierarchical filtering — hierarchical vessel classification tree, subtree filtering in filter bar dropdown (requires #125, #127) 4 3 4 11 Medium complete
134 Feature [E08] Colour scheme engine with legend — configurable colour dimension (age/vessel class/tag), shared legend for map and timeline views (requires #130, #131) 3 4 4 11 Low complete
125 Infrastructure [E08] STAC Extension spec + mock data fixtures — define extension namespace, property names for vessel class/tags/author/tracks/nationalities; create 100 fixture item.json files; document mock data contract 4 2 4 10 Medium complete
137 Enhancement REP loader temporal metadata — compute start_datetime/end_datetime from track position timestamps during REP file loading; enables accurate Timeline/Gantt view and Duration filter 4 2 4 10 Low complete
136 Infrastructure [E08] STAC Collection summaries for Browser backend — promote Catalogs to Collections with auto-generated summaries (temporal range, spatial extent, extension field enumerations); enables efficient CQL2 filtering (requires #125) 4 2 3 9 Medium complete
128 Feature [E08] Saved filter configurations — save/load/delete named filter sets as CQL2 JSON; historic filters dropdown (requires #127) 2 2 5 9 Low complete
144 Feature ~~Import legacy Debrief sample data into STAC catalog — build DPF parser, import all REP/DPF/DSF files (~148 files) from legacy repo, commit demo STAC catalog for stakeholder engagement~~ 5 5 3 13 High complete
135 Enhancement [E08] Populate STAC extension properties on plot save — update plot-save to write debrief:vessel_classes, debrief:tags, debrief:author, debrief:track_names, debrief:nationalities into item.json on save (requires #125) 4 2 4 10 Medium proposed
102 Bug Add feature-level provenance to TS tool executor [E06] — TS toolService lacks W3C PROV LogEntry attachment; constitutional violation Art. III.1 (Blocking) 5 3 4 12 Medium complete
103 Bug Canonicalize kind attribute values in LinkML schema [E06] — Python/TS produce different kind values; define in LinkML and propagate constants (Blocking) 5 3 4 12 Medium complete
104 Bug Align range-bearing tool: selection requirements + GeoJSON output [E06] — Python accepts TRACK+SHAPE and returns non-GeoJSON; TS requires 2 TRACK and returns GeoJSON; align both (F-2.4, F-2.5) 4 3 4 11 Medium approved
105 Tech Debt Unify tool type definitions and consolidate MCP adapters [E06] — VS Code hand-authored types shadow schema-generated types; two mcpAdapter files diverge; no legacy to support (F-5.1, F-5.2) 4 2 4 10 Medium approved
106 Tech Debt Add post-execution output validation to TS tools [E06] — Python validates tool output; TS has zero post-execution validation (requires #103) 4 2 4 10 Medium approved
107 Bug Align area-summary tool input semantics [E06] — Python expects context.bounds; TS extracts bbox from coordinates; same algorithm, different contract 4 2 4 10 Low approved
108 Tech Debt Wire drawing mode and palette to session-state store [E06] — both frontends use local useState instead of session-state; drawing mode resets on webview re-render (F-3.1, F-3.2) 3 2 5 10 Low approved
109 Tech Debt Unify result layer lifecycle across frontends [E06] — web-shell uses persistent app state; VS Code uses ephemeral webview state; neither persists to STAC 4 3 3 10 High approved
110 Tech Debt Investigate and resolve tool-level undo gap in VS Code [E06] — web-shell has full tool undo via Log Service; VS Code only has UI-state undo; Log Service exists but VS Code never invokes it 4 3 3 10 High approved
111 Tech Debt Add periodic heartbeat re-validation for Python dependencies [E06] — after activation, if debrief-calc becomes unavailable, status bar stays green until next tool execution fails 3 2 5 10 Low approved
112 Tech Debt Align result type annotations and provenance field naming with spec [E06] — resultType missing type prefix; provenance field naming needs doc/code alignment (F-4.2, F-4.3) 3 1 5 9 Low complete
123 Tech Debt Add disabled and rationale fields to Python LogEntry model — fields exist in LinkML schema (log-entry.yaml:61-69) and TypeScript types but not in Python Pydantic model (models.py); Art. II.1 violation, same gap pattern as #116's inputState fix 3 1 5 9 Low proposed
135 Bug Log Panel webview fails to load in VS Code E2E (openvscode-server) — subsumed by #142 4 1 4 9 Medium subsumed
142 Infrastructure VS Code E2E webview reliability — research sprintresolveWebviewView never fires in openvscode-server, causing ~15 test files (~50+ tests) to self-skip; research sprint to find reliable approach for real extension webview content in headless Playwright CI (subsumes #135) 5 3 2 10 High specified
143 Bug ~~Fix openPlotViaStacTree timeout in CI E2E testsopenPlotViaStacTree() times out (~42s) in every CI run; 18 test suites skipped; STAC tree never populates in openvscode-server despite config being pre-seeded; see plan doc for 3 solution options~~ 5 1 3 9 Medium complete
061 Feature Add generate courses and speeds for track tool spec (requires #049) 4 3 5 12 Low complete
028 Tech Debt Add comprehensive unit tests for stacService 4 2 5 11 Low complete
076 Feature Implement replay and parameter tuning [E02] — parameter editing, positional replay, revert operations (requires #071, #074) 5 4 2 11 High complete
056 Feature Add move shape tool spec (requires #049) 3 3 5 11 Low complete
016 Infrastructure Add dynamic component bundling for blog posts 3 5 4 12 Medium complete
080 Feature Implement buffer-zone-generator tool [E03] — stub sensor model returning 3 detection-likelihood buffer polygons (requires #049, #079) 4 4 4 12 Medium complete
091 Feature Add tool parameter context menus for pre-execution configuration — successive inline context menus in webview to collect parameter values before tool execution; presets defined in LinkML 4 4 3 11 High specified
092 Infrastructure [E05] Integrate Geoman drawing library [E05] 4 3 3 10 Medium complete
091-E05 Infrastructure [E05] Add POLY FeatureKind for arbitrary polygons [E05] 3 2 5 10 Low complete
068 Feature Implement Phase 5 tools: track/analysis [E01] — 8 high-complexity TMA, zig detection, and plotting tools (requires #062, #064, #067) 5 5 3 13 High approved
066 Feature Implement Phase 3 tools: track/manipulation [E01] — 12 group, merge, split, trim, interpolate tools (requires #062, #064) 5 4 4 13 High approved
064 Feature Implement Phase 1 tools: track/measurement [E01] — 19 foundational calculation tools (requires #049, #062, #063) 5 4 4 13 High approved
055 Feature Add track-position to track range/bearing tool spec (requires #049, #053) 4 4 5 13 Medium complete
084 Feature Wire buffer zone analysis demo end-to-end [E03] — 5-step reactive PROV cascade with edit-mode map interaction (requires #076, #078-082, E04 #086, E04 #089) 5 5 2 12 High approved
067 Feature Implement Phase 4 tools: sensor/analysis + calibration [E01] — 9 sensor contact, ambiguity, and frequency tools (requires #062, #064) 5 4 3 12 High absorbed by E07
116 Feature [E07] Sensor schema overhaul [E07] — full SensorContact/SensorData redesign with display properties, array offset modes, measured positions; update 9 tool spec fixtures (requires #062) 5 3 4 12 High complete
117 Feature [E07] REP sensor import [E07] — SENSOR v1/v2/v3 and SENSORARC parsers in debrief-io (requires #116) 4 3 4 11 Medium complete
118 Feature [E07] Sensor rendering [E07] — Leaflet custom layer for bearing lines, ambiguous bearings, sensor arcs, snail mode (requires #116, #117) 5 5 3 13 High complete
119 Feature [E07] Array offset calculations [E07] — PLAIN, WORM, MEASURED array centre modes (requires #116) 4 3 3 10 Medium complete
179 Feature [E07] Sensor-aware track rendering in Layers panel [E07] — extend FeatureList to show Positions/Sensors/Track Segments grouping rows under tracks with embedded sensors; each named sensor expands to its contacts (requires #116) 3 2 5 10 Medium complete
120 Feature [E07] Bearing and frequency residual analysis [E07] — Doublet infrastructure, stacked dots custom React component, Doppler calculations (requires #116, #119) — deferred pending executive sponsorship - - - - High proposed
121 Feature [E07] TMA data model and solution generation [E07] — TMA schemas, Absolute/Relative segments, solution generation from sensor cuts (requires #116, #120) — deferred pending executive sponsorship - - - - High proposed
122 Feature [E07] TMA interactive drag [E07] — rotate/shear/stretch drag modes with live residual feedback (requires #121, #120) — deferred pending executive sponsorship - - - - High proposed
063 Infrastructure Analyse tool specs for phased implementation sequence [E01] — dependency graph, phase groupings, and per-phase backlog items for 63 documented tools 5 3 4 12 Medium approved
085 Feature Chart renderer + dataset-to-spec transformer [E04] — React component with Vega-Lite (swappable); transformer converts standard result datasets to render specs 4 4 4 12 Medium complete
079 Feature Implement move-track tool [E03] — offset track by range/bearing with map drag support (requires #049, #062) 4 4 4 12 Medium specified
081 Feature Implement point-in-zone-classifier tool [E03] — classify and recolor reference points by buffer zone membership (requires #049, #078, #080) 4 4 4 12 Medium specified
082 Feature Implement zone-histogram-generator tool [E03] — outputs dataset/zone_histogram, point counts per buffer zone (requires #049, #081) 4 4 4 12 Medium approved
094 Feature [E05] Implement point and rectangle drawing (requires #091, #092, #093) [E05] 4 4 4 12 Medium complete
011 Documentation Create Jupyter notebook example demonstrating debrief-calc Python API 4 4 4 12 Low approved
065 Feature Implement Phase 2 tools: track/styling + dataset/export [E01] — 15 styling and export tools (requires #064) 4 3 4 11 Medium approved
060 Feature Add resample track tool spec (requires #049) 4 3 4 11 Medium approved
002 Feature Add MCP wrapper for debrief-io service 4 3 4 11 Medium approved
089 Feature Result view auto-refresh on logical ID change [E04] — watches logical result IDs, re-renders preserving viewport; absorbs E03 #083 (requires #086, #087, #088) 4 4 3 11 Medium approved
086 Feature Results bottom panel with tabbed layout [E04] — VS Code panel hosting Vega-Lite renderer tabs (requires #085) 4 4 3 11 Medium complete
093 Feature [E05] Add drawing toolbar with shape palette (requires #092) [E05] 4 4 3 11 Medium complete
095 Feature [E05] Implement polygon and polyline drawing (requires #091, #092, #093) [E05] 4 4 3 11 Medium complete
087 Infrastructure Logical result ID registry [E04] — maps stable logical IDs to current result files, emits change events (requires #071) 4 3 4 11 Medium complete
027 Infrastructure Add automated screenshot capture for Storybook stories 3 4 4 11 Medium approved
088 Feature Custom editor provider for result datasets [E04] — opens results as editor tabs, supports drag-to-float via auxiliary windows (requires #085) 3 4 4 11 Medium complete
115 Tech Debt Enforce schema-validated tool inputs and outputs (ADR-008) — all 12 calc tools bypass generated Pydantic models, working with raw dict[str, Any]; add debrief_schemas dependency, validate at service boundary, replace hardcoded enums with schema imports 4 2 4 10 High complete
005 Tech Debt Add cross-service end-to-end workflow tests (io -> stac -> calc) 4 2 5 11 Low complete
057 Feature Add enlarge shape tool spec (requires #049) 3 3 5 11 Low complete
078 Feature Implement generate-reference-points tool [E03] — creates grid/scatter of reference points on plot (requires #049) 3 3 5 11 Low complete
008 Feature Design and implement extension discovery mechanism for contrib packages 4 3 3 10 High approved
090 Infrastructure E04 sample data workshop: identify realistic generators for all result types [E04] — collaborative workshop using E03 demo scenario; pseudocode + golden fixtures for all result categories (prerequisite for #085) 5 3 2 10 Low approved
096 Enhancement [E05] Drawing UX guidance and STAC persistence (requires #094, #095) [E05] 4 3 3 10 Medium complete
058 Feature Add flip shape horizontal tool spec (requires #049) 2 2 5 9 Low approved
059 Feature Add flip shape vertical tool spec (requires #049) 2 2 5 9 Low approved
094 Feature [E05] Implement point and rectangle drawing (requires #091, #092, #093) [E05] 4 4 4 12 Medium complete
093 Feature [E05] Add drawing toolbar with shape palette (requires #092) [E05] 4 4 3 11 Medium complete
095 Feature [E05] Implement polygon and polyline drawing (requires #091, #092, #093) [E05] 4 4 3 11 Medium complete
099 Infrastructure Browser-based VS Code extension preview via Heroku Review Apps — code-server container with Debrief extension + sample data, auto-deployed per PR 3 4 4 11 Medium tasked
114 Enhancement Keyboard-only flip-card interaction — add Enter/Space to trigger card flip, focus management on back face, Tab order through edit controls; accessibility compliance for the flip-card paradigm introduced in #113 (requires #113) 3 2 5 10 Low complete
101 Bug Layers panel does not expand to fill vertical space — Layers section should flex-grow when Time Controller and Tools are collapsed; pure CSS fix 3 2 5 10 Low complete
139 Bug Document STAC ID naming convention — add ID convention ([a-z0-9_-] only) to STAC Extension spec from #125; add validation in create_plot() for custom IDs (BP-5) 3 1 5 9 Low complete
135 Enhancement STAC link titles improvement — pass plot title to _add_item_link() for human-readable link titles; add titles to structural links (root, parent, self) in Items 2 1 5 8 Low complete
138 Enhancement STAC derived_from links for provenance — add STAC-native derived_from link relation at Item level to complement existing debrief:provenance asset properties 2 1 5 8 Low complete
152 Enhancement Group narrative entries into a NarrativeLog container — introduce kind=NARRATIVE_LOG feature type that groups related narrative entries under a single GeoJSON Feature with shared style/provenance/track_id; follows SensorData embedding pattern; reduces duplication and enables log-level visibility toggling in layers panel 3 3 4 10 Medium proposed
140 Enhancement [E08] Viewport persistence across sessions — save CatalogOverview map viewport (center, zoom) to VS Code webview state and restore on panel re-open; enables analysts to resume geographic browsing where they left off (requires #130) 2 2 4 8 Low proposed
141 Enhancement [E08] R-tree spatial index for large catalogs — replace linear AABB scan in filterBySpatialExtent with an R-tree index (e.g., rbush) for catalogs with 1000+ exercises; current O(n) scan is sub-millisecond for 200 items but would lag at scale (requires #130) 2 1 4 7 Low proposed
100 Tech Debt Unify feature pipeline: single FeatureCollection from stacService — stacService.loadPlotData() should return one FeatureCollection instead of splitting into tracks/locations/otherFeatures; let React components classify by feature properties 3 1 4 8 Medium complete
029 Tech Debt Add unit tests for VS Code extension providers 4 2 5 11 Low proposed
004 Infrastructure Add contrib folder scaffolding with example extension (requires #008) 3 3 4 10 Low proposed
033 Tech Debt Re-enable debrief-stac tests in pytest 4 2 4 10 Low proposed
034 Tech Debt Remove synchronous fs calls from VS Code stacService 3 2 5 10 Low proposed
001 Infrastructure Extract shared MCP utilities into mcp-common package 3 2 4 9 Medium proposed
037 Tech Debt Fix test isolation in debrief-config tests 3 1 5 9 Low proposed
053 Tech Debt Remove migration-specific tool commands after Legacy Debrief migration complete (keep /tool.spec and /tool.implement for general use) 2 1 5 8 Low proposed
010 Tech Debt Add rollback/cleanup API to debrief-stac for interrupted operations 3 1 4 8 Medium complete
012 Enhancement Wire loader plot count to debrief-stac list_plots call 2 1 5 8 Low complete
018 Infrastructure Add VS Code multi-root workspace configuration 3 1 5 9 Low shipped
042 Feature Add STAC catalog overview panel with map and timeline 5 5 3 13 High complete
051 Bug Load existing result files into Attachments dropdown 5 3 4 12 Low complete
054 Infrastructure Discover and spec all migrateable tools from Legacy Debrief — scan legacy Java source, classify trigger types and UX integration, capture golden I/O, author language-neutral specs (requires #049, #050) 5 3 3 11 High complete
019 Enhancement Add 'needs-interview' status to backlog workflow 3 3 5 11 Medium complete
023 Infrastructure Add epic support to speckit workflow 4 3 4 11 Medium complete
013 Bug Time Range and Tools panels show empty 5 2 4 11 Low complete
036 Infrastructure Reinstate Playwright E2E testing in CI 4 2 5 11 Medium complete
052 Enhancement Restore previously-open plots on VS Code startup 4 2 5 11 Low complete
050 Infrastructure Add tool migration workflow for Legacy Debrief 4 2 4 10 Medium complete
031 Documentation Document vscrui as standard component library for VS Code webviews 3 1 5 9 Low complete
032 Documentation Document Storybook VS Code theming setup 2 2 5 9 Low complete
083 Feature Add auto-refresh for open STAC result views [E03] 4 4 3 11 Medium absorbed by #089
072 Feature Implement Log Panel [E02] — VS Code activity panel, timeline view, entry display, filter/search (requires #071, optionally #044) 5 5 3 13 High complete
077 Feature STAC File Tree Component — shared React tree view of STAC catalog filesystem backed by memfs; highlights new files from snapshots, opens plots from tree (requires #074, #071) 4 4 4 12 Medium complete
070 Infrastructure Implement PROV schema foundation [E02] — LinkML Log Entry schema, expanded ToolResult model, provenance migration, system record (requires #062) 5 3 4 12 High complete
071 Feature Implement Log Recording service [E02] — TypeScript Log Service, recordToolResult, getTimeline, session-state integration (requires #070) 5 4 3 12 High complete
073 Tech Debt Split undo/redo: UI-only undo, data changes via Log [E02] — narrow StateSnapshot, remove featureCollectionUri and savePath (requires #071) 4 2 5 11 Low complete
074 Feature Implement snapshots with doubly-linked chain [E02] — clean-state checkpoints, snapshot assets in STAC (requires #071) 5 3 3 11 Medium complete
075 Feature Implement branching from history point [E02] — plot duplication, two-way links, branch records (requires #074) 4 3 3 10 Medium complete
077 Bug Fix VS Code extension: time slider, location marker, trail mode, and tool offering 5 2 3 10 Medium complete
062 Tech Debt Compound track model with embedded children [E01] — extend TrackFeature with MultiLineString compound geometry, embedded sensors, TUAs, and per-segment metadata; blocks 30+ tool implementations 5 2 5 12 Medium complete
069 Infrastructure Plan PROV logging integration with application state — transition plan from current state to SRD provenance target; covers ToolResult contract, Log Service, undo/redo split, schema migration, phased implementation sequence 5 3 3 11 High complete
049 Infrastructure Add language-neutral tool documentation model 4 3 5 12 Medium complete
046 Tech Debt Convert raw HTML to vscrui components and theme library 4 3 5 12 Medium complete
045 Feature Add layers toolbar to FeatureList in shared-components (prerequisite for #044) 5 5 4 14 High complete
044 Enhancement Build unified Debrief activity panel as single webview (requires #031, #045) 5 5 3 13 High complete
043 Feature Load REP files into new plot via "Add to new plot in store" 5 5 4 14 Medium complete
040 Feature Save analysis results to STAC 5 4 4 13 Medium complete
041 Documentation Document tool results architecture 5 3 5 13 Medium complete
040 Enhancement Reorganize STAC store to per-item folder structure 4 3 4 11 Medium complete
039 Bug Wire TimeController to TemporalTrackLayer in VS Code extension 5 5 4 14 Medium complete
038 Feature Integrate context-sensitive tool offering into VS Code extension (absorbs #035, requires #029) 5 5 4 14 Medium complete
035 Feature Invoke debrief-calc distance tool from VS Code extension 5 5 4 14 Medium absorbed by #038
029 Tech Debt Integrate session-state service into VS Code extension (multi-document support) 5 3 4 12 High complete
030 Tech Debt Add replay mode and time acceleration to temporal state schema (requires #029) 4 2 4 10 Medium complete
026 Feature Add annotation shape renderers to VS Code extension (requires #021) 5 5 4 14 Medium complete
025 Feature Design time controller UI/UX for VS Code extension 5 5 4 14 Medium complete
022 Feature Add SYSTEM kind discriminator for non-spatial state 5 2 5 12 Low complete
021 Feature Add REP file loading to VS Code extension 5 5 4 14 Medium complete
020 Infrastructure Add remaining shape type importers with Storybook verification 4 4 5 13 Low complete
017 Enhancement Configure VS Code extension to hide default activities on load 3 3 4 10 Medium complete
015 Infrastructure Create LinkML schemas for REP annotation item types 5 3 5 13 Medium complete
014 Feature Add styling properties schemas to GeoJSON features 5 4 5 14 Medium complete
007 Enhancement Implement REP file special comments (NARRATIVE, CIRCLE, etc.) 4 4 4 12 Medium complete

Categories

  • Feature — New user-facing capability
  • Enhancement — Improvement to existing capability
  • Bug — Defect in existing functionality (links to GitHub issue)
  • Tech Debt — Internal improvement, cleanup, refactoring
  • Infrastructure — Build, CI/CD, tooling improvements
  • Documentation — Docs, examples, tutorials

Notes

  • Items without scores are awaiting prioritization
  • Ideas-guy and scout add items (status: proposed)
  • Prioritizer scores proposed items (V/M/A)
  • Ideas-guy reviews scored items → changes status to approved, parks, or rejects
  • /speckit.start {ID} requires status approved
  • Completed items remain (struck through) for historical reference