Fold Positron onto a concrete provider-authoritative implementation and
delete the duplicated legacy parser path so there is a single source of
truth for its workspaceStorage-only layout and parse behavior. Discovery,
source lookup, and parse move onto the provider; the package-level
DiscoverPositronSessions, FindPositronSourceFile, and ParsePositronSession
free functions are removed and positron.go is deleted. The engine's
positron-specific dispatch, effective-mtime, and skip-cache blocks are
removed in favor of the provider Fingerprint, which folds workspace.json
size, mtime, and a chat+workspace composite hash into the source
fingerprint so a workspace-only project rename still re-syncs.
To keep that composite freshness once positron has no legacy mtime block,
the SyncAllSince mtime filter resolves provider-authoritative sources
through the provider Fingerprint (discoveredFileEffectiveMtime) instead of
the legacy per-agent mtime path. Codex is excluded from that path: its
Fingerprint folds the shared session_index.jsonl mtime into every session,
which is correct for the skip cache but defeats the per-copy mtime
discrimination the incremental-sync cutoff needs to preserve a changed
archived duplicate, so codex keeps its raw per-file mtime and the index
refresh stays handled separately by codexIndexRefresh. The OpenCode
incremental-sync test asserts the resulting composite freshness, where a
part-only edit advances the source mtime past the cutoff and re-syncs.
Positron now has a concrete parser provider for its workspaceStorage chat-session layout. The provider owns workspace chat discovery, raw and full ID lookup, recursive watch planning, changed-path classification including deleted chat paths and workspace.json fan-out, workspace metadata-aware freshness, hashing, project hints, and parse output through the existing Positron parser.
This keeps Positron on the shared provider interface while preserving its VS Code-style parser normalization and Positron-specific agent identity.