Technical Debt Registry

Aggregated technical debt across all projects. Updated daily from ops-core.

Summary

  • Total Items: 143
  • High Priority: 18
  • Medium Priority: 46
  • Low Priority: 55
  • Estimated Hours: 486

By Project

Aloysius-Productions-Knowledge-Vault

ItemPriorityNotes
2 orphaned pages (daily notes only)lowOnly daily notes remain orphaned (acceptable)
0% wikilink non-compliance (100% compliant)lowFully remediated 2026-03-13 via Wave 7
~20 files awaiting integrationlow5 deferred (PDF/binary) + 15 low-priority P3 remaining
No pre-commit link checkinglowCI gates now validate on deploy
No test runner configuredlow4 test files exist but cannot be run
Previous audit TODOs openmedium4/5 long-term recommendations still unaddressed

Chess

ItemPriorityNotes
localStorage/IndexedDB dual storagemediumGame state saved in both; unclear source of truth
App.tsx monolith (340+ lines)lowShould extract SyncPanel, useGameState hook
Mixed directory structure (Components/ vs src/)lowLegacy vs new structure coexist
Unused encryption/storage utilities from CCP forklowsrc/utils/storage.ts, src/utils/types.ts still present
No tests for App.tsx or Board.tsxmediumCore game logic untested
as any type cast in Board.tsx FEN parserlowLine 30: bypasses type safety

Dice

ItemPriorityNotes
Gesture interactions not yet implementedmediumPhase 9 (swipe, long-press, drag) planned but not started
Layout refresh pendingmediumPhase 10 (improved responsiveness) planned but not started
No unit testslowSimple MVP; tests optional per status, but growing codebase may benefit
Legacy color aliases in AloysiusThemelowDeprecated static aliases still present for backward compatibility

Eliza

ItemPriorityNotes
Rule file sync loadinglowCould use async loading for better performance
Some any types in persona collectionslowCould tighten type definitions
Dogfooding insights not yet fully actionedmediumSome empathy improvements deferred
Fire-and-forget persistence callslowaddMessage() errors silently swallowed in server.ts
Console statement lint warningslow~38 warnings in CLI are expected, ~3 any types in loaders

FortuneTeller

ItemPriorityNotes
Empty test suite (FortuneTellerTests/)highNo automated tests; AlgorithmicProvider is high-priority target
Silent JSON encoding errors (try?)mediumDailyFortuneViewModel persistence uses try? with no error handling
Hardcoded cookie colors outside theme systemlowD4A574, C4956A, B8855A, FFF8E7 in FortuneCookieView.swift
Undocumented magic numbers in AlgorithmicProviderlowhumorChance = 0.17 — why 17%? No comment explaining rationale
No export/backup for fortune historylowData lost on app deletion; no Files app export
Timezone fragility in daily fortune key patternmediumdailyFortune_yyyy-MM-dd could duplicate on timezone change
No logging or analytics implementedlowNo console logging or crash reporting
TestFlight distribution not yet completedmediumPhase 4 planned but not executed

GTD

ItemPriorityNotes
PeppermintIntegration.connect() is a stublowTODO: Implement real connection test
localStorage 5MB size limitmediumNo migration strategy for large inboxes
iOS app feature parity gapmediumWeb has features iOS lacks (Eliza, filters, integrations)
No cloud sync between devicesmediumRequested feature, complex to implement correctly
No batch processing modelowProcess multiple items at once with keyboard shortcuts
iOS error handling uses print() onlylowNo user-facing error feedback on iOS
Empty XCTest target for iOSlowTest directory exists but no tests written
Settings.tsx 6-way if-else chainslowCandidate for integration config map refactor
Task extraction sensitivity too lowmedium”I need to do X tomorrow” doesn’t always trigger extraction — shouldExtractTask guard may be too aggressive or task extraction regex patterns need broadening
Chat UX feels clunkymediumNeeds polish pass — response latency feel, visual transitions, empty state, conversation starters/prompts

MadLibs

ItemPriorityNotes
Classic Mode input flow needs smoothingmediumKeyboard behavior and field interactions not yet polished
Creative Mode word collection UXmediumTemplate matching clarity needs improvement
Template Editor blank positioningmediumInsert position not always intuitive
No iCloud synclowData is device-local only; UserDefaults doesn’t sync
No sharing featureslowExplicitly out of scope but commonly requested

Playground

ItemPriorityNotes
Git history bloatlow195MB of reference repos remain in git history. A future git filter-repo could clean this but is not urgent

Poker

ItemPriorityNotes
SoundManager uses AudioToolbox (no volume control)mediumShould migrate to AVAudioPlayer
Volume slider in settings is non-functionallowNoted in code comment as future upgrade

SoundBoard

ItemPriorityNotes
No persistence for custom soundsmediumBoard data is in-memory only
Dual type files (types.ts and types/index.ts)lowShould consolidate to one
SoundManager volume slider is UI-only for SystemSoundslowAudioToolbox ignores app volume; noted for AVAudioPlayer migration

Walkie-Talkie

ItemPriorityNotes
Floor control (PTT) not implementedhighPhase 6 planned but not started
Mode switcher UI pendinghighCloud vs LAN/PTT mode selection not built
REACT_APP_ env vars in constants.jslowLegacy CRA env var prefix; should be VITE_
No TypeScriptlowProject uses plain JavaScript; TS would improve maintainability
PeerServer hardcoded to localhost:9000mediumNeeds configuration for LAN deployment
No end-to-end encryptionmediumPlanned for future version

aloysius-dashboard

ItemPriorityNotes
No testsmediumAdd unit tests for components

aloysius-event-horizon

ItemPriorityNotes
Missing tests for calendar_client.pyhighRESOLVED 2026-02-01 - 82% coverage via test_calendar_client.py
Missing tests for integrations.pyhighRESOLVED 2026-02-01 - 87% coverage via test_integrations.py
Missing tests for session_scheduler.pymediumRESOLVED 2026-02-01 - 99% coverage via test_session_scheduler.py
Missing tests for cli/schedule.pymediumRESOLVED 2026-02-01 - 74% coverage via test_cli.py
Missing tests for cli/sync_calendar.pymediumRESOLVED 2026-02-02 - 95% coverage via test_sync_calendar.py (20 tests, Google API mocked)
Semgrep mentioned but not implementedlowRESOLVED - Fully operational in security.yml lines 190-205; scans p/security-audit + p/secrets; SARIF uploaded to GitHub Security tab
status.md outdatedlowRESOLVED 2026-02-01 - Health indicators updated
Pre-commit hooks setuplowRESOLVED - .pre-commit-config.yaml operational
Centralized tool configlowRESOLVED - pyproject.toml created and all tools configured
Test coverage below 75% thresholdcriticalCoverage regressed to 73.21% (2026-03-10 audit); worst: windows.py 57%, storage.py 58%, compliance/scheduler.py 60%
Silent exception handlers (19 bare except/pass)highCount grew from 12→19; locations: aggregation/collector.py, knowledge/capture.py, compliance/scheduler.py, knowledge/review.py, rhythms/* — add logger.error() before pass
Replace print() with logging (96 instances, was 47)highCount doubled from 47 to 96 as subpackages were added; library modules should use logging, CLI can retain print()
integrations.py is 1204 lineslowStable; refactor if adding new integrations
No upper bounds on dependency versionslowAll deps use >= floor only; breaking changes will slip in silently
Security calibration ends 2026-03-17mediumAuto-transitions to enforcing; only secret_scan blocks by default; consider enabling sast_blocking=true

aloysius-research-lab

ItemPriorityNotes
No tests in 4 of 6 POCshighangular-yellicode, yellicode (complete POCs with zero tests), scaffolding-tools, dr-zero-local
jp-sdk is pure stubmediumEvery method returns hardcoded data; needs real implementation or removal
No branching strategymedium52 commits on main, zero feature branches, PR template never used for human PRs
Security calibration deadline Feb 15highDependency and SAST gates switch to blocking; run scans and resolve findings before then
dr-zero-local @types/node still at 20.0.0lowCosmetic mismatch: jp-sdk now at @types/node 25.2.1 while dr-zero-local remains at 20.0.0

aloysius-resource-grid

ItemPriorityNotes
Content directories emptyhighPlaceholders ready for population — this is the #1 gap
CI/CD tools unpinnedmediumTruffleHog, Trivy, lychee all pull latest — pin to specific versions
Missing Inventory subdirectorieslowTemplates/ and Configs/ referenced in Inventory/README.md but not created
Self-hosted runner single point of failurelowAll workflows depend on self-hosted runner with no fallback

aura

ItemPriorityNotes
Monolithic App.tsx
No error boundaries
CSV import uses any types
localStorage unencrypted
Low test coverage

cipher

ItemPriorityNotes
Jest → Vitest migration for haven testsmediumTests copied but use Jest APIs, need conversion
Storage module excluded from buildlowHaven excluded src/storage from tsconfig due to browser APIs
toBase64 stack overflow on large inputshighString.fromCharCode(...bytes) spread blows call stack >100KB
Non-constant-time identity comparisonhighTiming attack vector in SignalProtocolStore.arrayBufferEqual
Haven-specific hardcoded referencesmediumHavenKeyDB, haven_ prefixes, haven-settings-v1 salt
Missing ESLint configurationmediumeslint installed but no config file exists
Duplicate test case in protocol.test.tslow”rejects invalid prekey signature” appears twice
Dead code in session.tslowuint8ArrayToBase64 defined but never called
Settings module has zero test coveragehighderiveSettingsKey, encryptSettings, decryptSettings all untested
X3DH respondX3DH shared secret untestedhighNo test verifies initiator and responder derive same secret

djg

ItemPriorityNotes
No actual joke generation functionalityhighCore feature not yet implemented
Replace placeholder GA tracking ID (G-XXXXXXXXXX)highMust be replaced before production deployment
Update README.md from Vite boilerplatemediumCurrent README explains Vite, not the app
Sync USER_TESTING.md with actual featuresmediumReferences removed counter feature
No React-specific ESLint rulesmediumOnly typescript-eslint configured
Feedback labeled “Report a Bug” but tracks as “Feedback”lowSemantic mismatch between UI and analytics

gloriously-awesome-system

ItemPriorityNotes
GSD to GAS branding migration incompletelowSome internal references still use GSD naming

gw

ItemPriorityNotes
Low test coverage (~5%)highOnly IdeaCatcher has basic tests
No error boundaries in React treemediumUnhandled errors crash the entire app
Auto-save uses clear+bulkInsertlowNot incremental; acceptable at current data scale
Deprecated onKeyPress usagelowShould use onKeyDown

haven

ItemPriorityNotes
Image attachment support deferredmediumRich messaging phase scoped text/reactions/voice only; image pipeline deferred
No ESLint/Prettier configuredmediumResolved 2026-02-22 — eslint.config.js + .prettierrc added in Phase 19-20 merge
No build/test CI pipelinehighResolved 2026-02-22 — ci.yml added (Node 22, correct build order, CI=true for web)
CLI has 0 testsmediumAll other packages have tests; CLI is untested
Port 3000 conflict with ElizalowResolved 2026-02-15 — Migrated to port 3100 (registered in ports.yaml block 3100-3109)
react@18 → react@19 migration neededmediumreact-dom stays at 18; coordinated upgrade of react + react-dom + @types/react + @types/react-dom required
settings-routes tests missing JWT_SECRETlow8 test failures because test setup calls initializeDatabase() without setting JWT_SECRET env var
getRoomMembers API mismatchlowService returns displayName but test expects username field
Pre-1.0 crypto dependencymedium@privacyresearch/libsignal-protocol-typescript@0.0.16 is pre-release; evaluate alternatives
Fastify 5.7 high severity vulnhighPatched 2026-02-15 — Content-Type bypass resolved via npm audit fix

jp

ItemPriorityNotes
Phase 3 LLM IntegrationhighBlocked on hardware (3-6 months)
CI Runner Infrastructurehigh resolvedSelf-hosted runner (runner-jp) operational. Labels restored 2026-02-19 after merge regression.

meridian

ItemPriorityNotes
Stub encryption (base64, not AES-256-GCM)criticalSee .planning/codebase/CONCERNS.md
No transport layercriticalMessages exist only in React state
UI claims false encryptionhighUI says “AES-256-GCM” but uses btoa()
Math.random() for key materialcriticalReplace with crypto.getRandomValues()

pseudogen

ItemPriorityNotes
Legacy fallback parserlowKept in flowchart-converter.ts for error recovery, but nesting parser handles all cases (effectively dead code)
Limited type safety in store actionsmediumMany functions use Partial and object spreading, hides potential bugs at compile time
No server-side persistencelowFully client-side, data only in browser IndexedDB, no cloud backup/sync
No code size limits enforcedmediumInput validation added (50KB limit) but not enforced in all entry points
Algorithm visualizer not wiredmediumAlgorithm definitions exist, but step-by-step visualization UI incomplete
QuickJS sandbox unusedlowDependency added for future interpreter features, not yet integrated
Deprecated adventure TypeScript fileslowOld create-function.ts, build-loop.ts, create-conditional.ts kept for reference after YAML migration

quest-forge

ItemPriorityNotes
No automated test suitehighSwiftUI previews used for visual verification only
Singleton managers limit testabilitymediumPersistenceManager, AchievementManager, AudioManager all use .shared
Character-specific content only in Cursed TemplemediumOther scenarios lack character-gated choices
Narrative pattern duplication across scenariosmediumSome branching structures could be abstracted
Scene transition performance on older deviceslowComplex scenes with many choices show slight lag
Silent error handling in persistence (print-only)mediumSave failures logged to console, no user feedback
Procedural audio placeholder qualitylowNoise bursts for all SFX; needs real audio assets
No export/backup for world statelowData lost on app deletion

stock-art-collector

ItemPriorityNotes
Download-to-catalog gaphighsac download saves file but doesn’t insert Asset record. Pipeline resolver depends on catalog.
Serve test hangsmediumTestServeCommand blocks pytest. Needs pytest-timeout or mock.
Video metadata requires FFmpegmediumExternal dependency, should gracefully degrade
No persistent rate limit statelowRate limits reset on restart, could persist to DB
Export hardcodes limit=1000lowMade configurable via —limit in Phase 1 tech debt

Last synced: 2026-03-13