# DSH bundle configuration

Bundled plugins: 131 (T6 ledger)

## Excluded Pi plugins

- `finance_track_status`: Pi TUI statusline cannot run in DSH; its Gleam core is mounted per agent and projected through the DSH shell.overlay counterpart.
- `swing_workbench`: Pi process-global shell is replaced by a fresh per-agent DSH mount of the same Gleam core.
- `portfolio`: Pi process-global shell is replaced by a fresh per-agent DSH mount of the same Gleam core.
- `watchlist`: Pi process-global shell is replaced by a fresh per-agent DSH mount of the same Gleam core.

## DSH-dedicated plugins

- `finance_track_overlay`
- `watchlist_reviews`

## Per-agent shared-core counterparts

- `finance_track_status`: the existing compiled Gleam shell/core is instantiated once per DSH agent
- `swing_workbench`: the existing compiled Gleam shell/core is instantiated once per DSH agent
- `portfolio`: the existing compiled Gleam shell/core is instantiated once per DSH agent
- `watchlist`: the existing compiled Gleam shell/core is instantiated once per DSH agent

DSH sessions are append-only/forked rather than navigated in place, so
Pi session-tree restore hooks are registered for compatibility but do not
receive a synthetic navigation event. Fresh and resumed DSH agents restore
from their own session logs during the real agent/created lifecycle.

## Environment variables

- `AGENT_CONTACT`
- `ALPACA_API_KEY_ID`
- `ALPACA_API_SECRET_KEY`
- `EQUIBLES_API_KEY`
- `FRED_API_KEY`
- `OPENFIGI_API_KEY`
- `TUSHARE_TOKEN`
- `TWELVE_DATA_API_KEY`

Variables are read from the DSH host process. Some adapters initialize
at plugin boot, so restart DSH after changing configuration.

Credential values and provider entitlements are caller-owned runtime inputs.
They are read only from the host environment and are never embedded,
logged, written, or persisted by this bundle.

## Durable pick reviews

The DSH-native watchlist_reviews service uses the host storageDomain route
for sparkles_watchlist_reviews. Records are owned by the original session;
a new chat imports picks only through an exact snapshotJson/snapshotSha256 handoff.
Consent, saved picks and jobs are persisted only after conversational opt-in.
The writer lease defaults to $DSH_HOME/sparkles_reviews/owner.sqlite
(DSH_HOME defaults to ~/.dsh). A competing process fails before opening the domain.
config.dsh.watchlist_reviews.lockDirectory may select an exact private absolute
lease directory; every process sharing a storage route must use the same lease.
Only bounded fixed-interval CN Eastmoney a_share reviews acquire source facts.
HK/US remain track_partial. DSH source-tool restrictions, including PTC collapse,
remain controlling and yield cannot_check without fallback. No model is woken.
