-
Notifications
You must be signed in to change notification settings - Fork 16
ROADMAP
Created: 2026-04-08 Source: PROJECT.md, Phase 1 Audit MANIFEST.md (72 discrepancies across 40+ pages) Goal: Every wiki page accurately reflects the 0.9.30 API with no stale references, broken code samples, or dead links.
| Phase | Name | Pages | Depends On | Risk | Scope |
|---|---|---|---|---|---|
| 1 | Audit | — | — | Low | Complete |
| 2 | Core Usage Pages | ~18 pages | Phase 1 | High | ~30% |
| 3 | Transport Pages | ~16 pages | Phase 2 | Medium | ~30% |
| 4 | Observability, Scheduler, Dashboard | ~12 pages | Phase 2 | High | ~25% |
| 5 | New Pages + Final Polish | ~6 pages | Phases 3, 4 | Low | ~15% |
Status: Done
Output: .shipyard/phases/01-audit/MANIFEST.md with 72 findings (12 Critical, 18 High, 28 Medium, 14 Low)
- Every existing wiki page audited against source code
- All discrepancies catalogued with severity, location, and required action
- Security caveats identified (6 findings across 3 pages)
- Phase assignments proposed for all findings
Risk: HIGH — Contains 7 of 12 Critical findings. These pages have compile-breaking code samples that will fail for any user who copies them. Also includes the Linq-to-Method rename which affects sidebar links and cross-references throughout the wiki.
Depends on: Phase 1 (audit findings)
This phase covers the producer/consumer pages, their configuration pages, the Home page, Usage page, and the sidebar restructure. These are the pages most users hit first and the ones that other pages cross-reference most heavily.
Renames (create new, mark old as redirects):
-
ProducerLinq.md->ProducerMethod.md -
ConsumerLinq.md->ConsumerMethod.md -
ConsumerLinqAsync.md->ConsumerMethodAsync.md
Updates with Critical/High findings:
-
Consumer.md— Critical: missingConsumerQueueNotificationsparam; High: broken logging API -
ConsumerAsync.md— Critical: missingConsumerQueueNotificationsparam; High: broken logging API -
ConsumerLinq.md(becomesConsumerMethod.md) — Critical: missingConsumerQueueNotificationsparam; High: broken logging API; remove dynamic LINQ content -
ConsumerLinqAsync.md(becomesConsumerMethodAsync.md) — High: broken logging API; remove dynamic LINQ content -
WorkerConfiguration.md— Critical:AbortWorkerThreadsWhenStoppingremoved from source, entire section is dead code -
TaskSchedulerConfiguration.md— Critical:WaitForTheadPoolToFinishtypo prevents compilation -
ConsumerAsyncWorkGroup.md— High:AddWorkGroupthird parameter may not exist
Updates with Medium/Low findings:
-
Home.md— Fix broken numbered list, typo, add .NET 10.0/.NET 8.0 targets, update feature list -
Usage.md— Add links to all queue variants, fix typo -
Producer.md— No changes needed (confirmed correct) -
ProducerLinq.md(becomesProducerMethod.md) — Confirmed correct but needs terminology update -
ProducerConfiguration.md— Expand from stub to full configuration section list -
ConsumerConfiguration.md— Add missing MessageError configuration link -
ConsumerAsyncConfiguration.md— Add missing MessageError and MessageHistory links -
_Sidebar.md— Rename Linq entries to Method, fix typos, add placeholders for new pages coming in later phases
-
Consumer.md,ConsumerAsync.md,ConsumerMethod.mdcode samples compile against 0.9.30 (includeConsumerQueueNotificationsparameter, useILoggermethods) - No wiki page contains
AbortWorkerThreadsWhenStoppingas a current feature -
WaitForThreadPoolToFinishis spelled correctly inTaskSchedulerConfiguration.md -
_Sidebar.mdshows "ProducerMethod", "ConsumerMethod", "ConsumerMethodAsync" instead of Linq variants -
Home.mdstates .NET 10.0 / .NET 8.0 as supported targets; no mention of net48 or netstandard2.0 - All internal wiki links in updated pages resolve correctly
- No remaining references to
DotNetWorkQueue.Logging.LogLevelornotifications.Log.Log(LogLevel, Func<string>)pattern in any Phase 2 page
# Check no broken logging API pattern remains in Phase 2 pages
grep -l "DotNetWorkQueue.Logging.LogLevel\|Log.Log(" Consumer.md ConsumerAsync.md ConsumerMethod.md ConsumerMethodAsync.md
# Should return no results
# Check renamed pages exist
ls ProducerMethod.md ConsumerMethod.md ConsumerMethodAsync.md
# Check sidebar has new names
grep -c "ProducerMethod\|ConsumerMethod\|ConsumerMethodAsync" _Sidebar.md
# Should return 3
# Check no stale framework references
grep -l "net48\|netstandard2.0\|\.NET Framework 4.8\|\.NET Standard 2.0" Home.md Usage.md
# Should return no results
# Check AbortWorkerThreadsWhenStopping removed
grep -l "AbortWorkerThreadsWhenStopping" WorkerConfiguration.md
# Should return no resultsRisk: MEDIUM — Contains 5 Critical findings (typos in property names that prevent compilation, broken code). However, the fixes are largely mechanical and repetitive (same logging API fix across 6 transport pages, same property name typo fix across 2 queue creation pages).
Depends on: Phase 2 (sidebar links, Method rename must be in place since transport pages link to consumer/producer pages)
All transport-specific pages: transport introductions, options pages, queue creation options pages, and transport-specific feature pages. These can be worked on per-transport in parallel.
Transport overview:
-
Transports.md— Remove outdated Redis 3.0.x / Windows 2008R2 platform claims; update SQL Server minimum version; update SQLite driver version to 1.0.119
SQL Server (4 pages):
-
SqlServerTransport.md— High: broken logging API; Medium: typo "requries" -
SqlServerOptions.md— Medium: stub page, document allSqlServerMessageQueueTransportOptionsproperties -
SqlServerQueueCreationOptions.md— Critical:EnableHoldTransactionUntilMessageCommitedtypo; Medium:EnableHistoryundocumented -
UserDequeueColumns.md— Medium: add transport-specific parameter type note
Redis (3 pages):
-
RedisTransport.md— High: outdated platform list, broken logging API; Medium: incomplete feature list -
RedisOptions.md— Critical:DelayedProcessingMonitorTimedoes not exist (wrong property path); Medium:ClearErrorMessagesBatchLimitundocumented -
RedisPoisonMessages.md— Verify in phase (not individually audited)
PostgreSQL (3 pages):
-
PostGreTransport.md— High: broken logging API; Medium: typo; Low: cross-platform connection string note -
PostGreOptions.md— High: stub page, document all transport options properties -
PostGreQueueCreationOptions.md— Critical:EnableHoldTransactionUntilMessageCommitedtypo; Medium:EnableHistoryundocumented
SQLite (4 pages):
-
SQLiteTransport.md— High: broken logging API; Medium: typo -
SQLiteOptions.md— High: stub page, document all transport options properties -
SQLiteQueueCreationOptions.md— Medium:EnableHistoryandEnableHoldTransactionUntilMessageCommittedundocumented -
SQLiteInMemoryDB.md— Low: optional clarification ofVersion=3
LiteDb (3 pages):
-
LiteDbTransport.md— Critical: unescaped\tin connection string; High: broken logging API; Medium: missing features in list -
LiteDbOptions.md— High: stub page, document all properties including fixed/immutable ones -
LiteDbQueueCreationOptions.md— Medium:EnableHistoryundocumented,EnableStatusTabledefault unclear
Memory (1 page):
-
MemoryTransport.md— High: broken logging API; Medium: NuGet package clarification
- No transport page contains the broken
notifications.Log.Log(DotNetWorkQueue.Logging.LogLevel.Debug, () => ...)pattern -
SqlServerQueueCreationOptions.mdandPostGreQueueCreationOptions.mduseEnableHoldTransactionUntilMessageCommitted(doublet) -
RedisOptions.mduses correct property path.DelayedProcessingConfiguration.MonitorTime -
LiteDbTransport.mdconnection string does not contain unescaped\t - All five Options stub pages (
SqlServerOptions.md,PostGreOptions.md,SQLiteOptions.md,LiteDbOptions.md,RedisOptions.md) document the full property surface for their transport -
Transports.mdno longer references Redis 3.0.x, Windows 2008R2, or SQL Server 2008 - Every transport page that supports history has a cross-reference link to
MessageHistory - Every transport page that references consumers links to
ConsumerMethod(notConsumerLinq)
# Check no broken logging API in any transport page
grep -rl "DotNetWorkQueue.Logging.LogLevel\|Log.Log(" *Transport.md *Options.md
# Should return no results
# Check corrected property spellings
grep -l "Commited[^d]" SqlServerQueueCreationOptions.md PostGreQueueCreationOptions.md
# Should return no results
# Check LiteDb connection string is not broken
grep "\\\\t" LiteDbTransport.md | grep -v "\\\\temp"
# No unescaped \t should appear
# Check outdated references removed from Transports.md
grep -i "3\.0\.\|2008R2\|SQL Server 2008" Transports.md
# Should return no results
# Check no stale ConsumerLinq references in transport pages
grep -l "ConsumerLinq" *Transport.md
# Should return no resultsRisk: HIGH — Trace.md needs a full rewrite (currently a 4-line stub despite 17 activity/span names in source). Scheduler.md needs Schyntax-to-cron migration. Dashboard pages need security caveats. Several pages require source verification of API signatures.
Depends on: Phase 2 (consumer/producer pages must be updated first since scheduler and observability pages reference them)
Cross-cutting concern pages (logging, metrics, tracing, admin), the job scheduler family (4 pages), message interception, message history, maintenance mode, and dashboard security fixes. Also includes the new JobScheduler.md and Monitoring.md pages.
Observability (4 pages):
-
Logging.md— Low: typo; Medium: verify ILogger scope claim -
Metrics.md— Low: clarify SDM instrument types and meter name casing; Medium: note external Grafana screenshot dependency -
Trace.md— Critical: full rewrite. Document ActivitySource name, setup pattern, trace context propagation, all 17 activity/span names, non-ASP.NET host example -
Admin.md— High: verifyCreateAdminFunctionsexistence, update toIAdminApiif needed; Medium: documentQueueStatusAdminenum
Scheduler (4 pages):
-
Scheduler.md— Replace Schyntax expressions with cron (Cronos library); fix variable naming; replaceThread.Sleep; fix dead "See the WIKI" references; fix typos. Update allLinqExpressionToRunreferences. -
SchedulerTimeSettings.md— Medium: fix uninitialized list; Low: typo -
SchedulerQueueCreation.md— High: verifyAddUpdateJobsignature, update toQueueConnectionif needed -
SchedulerRedundancy.md— No changes needed (confirmed correct)
Message handling (2 pages):
-
MessageInterception.md— High (Security): add TripleDES key warnings; High: completeIMessageInterceptordocumentation; Low: fix 5 typos -
MessageHistory.md— Medium: verify Memory transport support; Medium: verifyIHistoryConfigurationproperties
Dashboard security caveats (2 pages):
-
DashboardUi.md— High (Security): SHA256 password hash caveat; HTTPS requirement note -
DashboardConfiguration.md— High (Security): hardcoded API key warning; secrets-in-appsettings warning
Other (1 page):
-
MaintenanceMode.md— No changes needed (confirmed correct)
New pages (2):
-
JobScheduler.md— Cron expressions (5-field and 6-field via Cronos), IJobSchedule API,Descriptionproperty,IJobSchedule.Previous()returningDateTimeOffset? -
Monitoring.md— Prometheus metrics endpoint setup, Grafana dashboard, observability wiring with OpenTelemetry
-
Trace.mddocuments all 17 activity/span names, the ActivitySource name (dotnetworkqueue.instrumentationlibrary), and includes a setup code sample -
Scheduler.mduses cron expressions (Cronos) instead of Schyntax; no remaining Schyntax references - All 6 security caveats from MANIFEST.md are present as visible warning blocks in
MessageInterception.md,DashboardUi.md, andDashboardConfiguration.md -
JobScheduler.mdexists and covers cron syntax,IJobScheduleAPI, andPrevious()returningDateTimeOffset? -
Monitoring.mdexists and covers Prometheus metrics and Grafana dashboard setup - No page in Phase 4 scope references Schyntax as the current scheduling format
-
Admin.mdcode sample uses the correct current API (verified against source) -
_Sidebar.mdupdated with Job Scheduler and Monitoring entries
# Check Trace.md is no longer a stub
wc -l Trace.md
# Should be significantly more than 4 lines (expect 80+)
# Check no Schyntax references remain in scheduler pages
grep -ri "schyntax\|sec(0,5\|second(0,15" Scheduler.md SchedulerTimeSettings.md SchedulerQueueCreation.md
# Should return no results (or only historical/migration context)
# Check new pages exist
ls JobScheduler.md Monitoring.md
# Check security caveats exist
grep -c "warning\|caution\|SECURITY\|do not\|never.*hardcode\|production" MessageInterception.md DashboardUi.md DashboardConfiguration.md
# Each file should have at least 1 match
# Check sidebar has new entries
grep -c "JobScheduler\|Monitoring" _Sidebar.md
# Should return 2Risk: LOW — Primarily additive work (new pages) and a consistency pass. No compile-breaking issues remain by this point.
Depends on: Phases 3 and 4 (all existing pages must be updated before the migration guide can accurately reference them, and before the consistency pass can verify cross-references)
Create the remaining new pages, perform a full consistency pass across all wiki pages, and finalize the sidebar.
New pages (1):
-
MigrationGuide.md— Organized by version range, covering: .NET Framework drop (0.9.19), Schyntax-to-cron migration (0.9.30), dynamic LINQ removal,Thread.Abortremoval (0.9.13),IJobSchedule.Previous()return type change. Before/after code examples for each breaking change. -
DashboardDocker.md— Docker image, self-contained mode,/app/pluginsdirectory,DashboardConnectionConfigPOCO,IConfigurationoverload
Consistency pass (all pages):
- Verify all internal wiki links resolve (especially after renames)
- Verify no remaining references to:
net48,netstandard2.0,.NET Framework 4.8,.NET Standard 2.0, Schyntax (as current), dynamic LINQ (as current),AbortWorkerThreadsWhenStopping, brokenLog.Log()pattern - Verify consistent heading levels across all pages
- Verify all code samples have links to DotNetWorkQueue.Samples repo where full examples exist
- Fix any remaining typos from MANIFEST.md Low findings not yet addressed
Sidebar finalization:
-
_Sidebar.md— Add Migration Guide as top-level entry; add Dashboard Docker under Dashboard section; verify all links resolve; fix remaining typos ("Additonal", "Posion")
Footer:
-
_Footer.md— Review and update if needed
-
MigrationGuide.mdexists and covers all breaking changes from 0.9.13 through 0.9.30 with before/after code -
DashboardDocker.mdexists and covers Docker deployment, self-contained mode, plugin assembly loading - Zero wiki pages reference
net48,netstandard2.0, or.NET Framework 4.8as supported targets - Zero wiki pages reference Schyntax or dynamic LINQ as current features (migration guide may reference them historically)
- All sidebar links resolve to existing pages
- All code samples on all pages include a link to the corresponding sample in
DotNetWorkQueue.Sampleswhere one exists - No remaining typos from the MANIFEST.md audit
# Check new pages exist
ls MigrationGuide.md DashboardDocker.md
# Full stale reference scan across ALL wiki pages
grep -rl "net48\|netstandard2\.0\|\.NET Framework 4\.8\|\.NET Standard 2\.0" *.md
# Should return no results
grep -rl "AbortWorkerThreadsWhenStopping" *.md
# Should return no results
grep -rl "DotNetWorkQueue\.Logging\.LogLevel" *.md
# Should return no results
# Check sidebar links (extract wiki page names, verify files exist)
grep -oP 'wiki/\K[^)]+' _Sidebar.md | while read page; do
[ ! -f "${page}.md" ] && echo "BROKEN: ${page}.md"
done
# Should output nothing
# Check all MANIFEST typos are fixed
grep -i "requries\|canelazation\|amoong\|explictly\|seriaization\|messsage\|initalization\|decyrpt\|seperate\|accssed\|Additonal\|Posion" *.md
# Should return no results
# Check migration guide covers key breaking changes
grep -c "cron\|Cronos\|Thread\.Abort\|net48\|Schyntax\|LINQ.*removed\|Previous()" MigrationGuide.md
# Should return multiple matchesPhase 1 (Audit) ─── COMPLETE
│
v
Phase 2 (Core Usage) ──────────────────────┐
│ │
├──────────────┐ │
v v │
Phase 3 Phase 4 │
(Transports) (Observability/Scheduler/ │
Dashboard) │
│ │ │
└──────┬───────┘ │
v │
Phase 5 (New Pages + Polish) <──────┘
Phases 3 and 4 can execute in parallel after Phase 2 completes. Phase 5 requires both 3 and 4 to be finished.
| Risk | Impact | Mitigation |
|---|---|---|
| API signatures changed since audit | Code samples may still be wrong after update | Verify every code sample against DotNetWorkQueue source and Samples repo during implementation |
| Memory transport history support unconfirmed | MessageHistory.md may make false claims | Phase 4 builder must verify against source before documenting |
CreateAdminFunctions may not exist |
Admin.md example needs different API | Phase 4 builder must check source; fallback is IAdminApi from IoC |
| Dashboard screenshots not available | DashboardUi.md and DashboardDocker.md cannot show UI | Document text descriptions; reference GitHub issue #112 as placeholder |
| Samples repo may not cover all transports | Some pages may lack sample links | Link where samples exist; note gaps for future sample additions |
- Phase 2: 2-3 plans (foundation + renames in plan 1, consumer fixes in plan 2, configuration pages in plan 3)
- Phase 3: 2-3 plans (can split by transport family: SQL/PostgreSQL in plan 1, Redis/SQLite in plan 2, LiteDb/Memory in plan 3)
- Phase 4: 2-3 plans (observability in plan 1, scheduler in plan 2, dashboard security + new pages in plan 3)
- Phase 5: 1-2 plans (new pages in plan 1, consistency pass in plan 2)
For any issues please use the GitHub issues