- AI cycle input transparency on every outputProcurement teams reviewing AI tool exposure routinely ask 'which inputs shaped this output?'. Until rev 41 the answer was a triangulation across the rev-12 per-task work log + rev-20 artifact version chain + the operator's memory of what was in the workspace at cycle time. Rev 41 ships a primary primitive: every artifact now carries sourceSignalIds + sourceMemoryIds JSONB columns stamped by the pulse engine at insert time. The dashboard surfaces a 'Based on N signals + M memory entries' chip on every approval-queue artifact and the latest brief; one tap expands a panel listing the actual signals (kind, priority, title, detail, source link) and memory entries (kind, importance, content, pinned status) the AI cycle saw. Drives both the audit story and operator trust โ when a brief reads off, the operator can see whether the input set was wrong, the cycle missed key context, or the output itself drifted.
- GET /api/v1/tasks/{id}/timeline (close named rev-40 follow-up)Rev 40 named 'mirroring per-task timeline on the v1 surface' as the natural rev-41 step. Rev 41 ships it. New bearer-auth endpoint mirrors the rev-40 dashboard route, delegating to the same getTaskTimeline() helper. MCP hosts can now ask 'what happened on this one task' with one HTTP call across all five timeline sources (creation + AI cycles + operator notes + comments + activity).
- POST /api/v1/workspace/import + GET /api/v1/artifacts/{id}/sourcesTwo more v1 surface gaps closed. The rev-40 workspace JSON import was dashboard-only; rev 41 mirrors it on bearer-auth so MCP hosts can append memory + signals + sources from a prior export programmatically. The new artifact sources endpoint exposes the rev-41 transparency primitive on the v1 surface so MCP hosts can render 'show me the inputs that shaped this output' without a follow-up call.
- Per-source 7-day signal volume sparklineRev 12 added the per-source 7-day signal count pill ('this feed has produced N signals'). Rev 41 adds the diagnostic complement: a 7-bar sparkline next to the count showing whether the feed lit up evenly or in one big burst. Single extra query in the existing dashboard Promise.all bucketed per-day in JS. Pairs with rev-16 source health diagnostics + rev-8 auto-pause-on-failure for the full source observability story: count answers 'is it producing?', sparkline answers 'is it producing healthily?', error pill answers 'why is it broken?'.
- Visual polish โ entry animation on transparency panel + 7-day sparkline accentThe new 'Based on N signals + M memory entries' panel uses a 220ms ld-fade-in entry animation so the panel reads as a branch off the artifact rather than something stamped on. The per-source 7-day sparkline uses the rev-15 brand-color treatment for non-zero days and a soft neutral fill for empty days so the 'this source has been quiet' signal reads at a glance. Cumulative micro-polish โ every rev 22+ has carried one.