# AGENTS ## Role Canonical persistence for raw documents, DTOs, canonical advisories, jobs, and state. Provides repositories and bootstrapper for collections/indexes. ## Scope - Collections (MongoStorageDefaults): source, source_state, document, dto, advisory, alias, affected, reference, kev_flag, ru_flags, jp_flags, psirt_flags, merge_event, export_state, locks, jobs; GridFS bucket fs.documents; field names include ttlAt (locks), sourceName, uri, advisoryKey. - Records: SourceState (cursor, lastSuccess/error, failCount, backoffUntil), JobRun, MergeEvent, ExportState, Advisory documents mirroring Models with embedded arrays when practical. - Bootstrapper: create collections, indexes (unique advisoryKey, scheme/value, platform/name, published, modified), TTL on locks, and validate connectivity for /ready health probes. - Job store: create, read, mark completed/failed; compute durations; recent/last queries; active by status. - Advisory store: CRUD for canonical advisories; query by key/alias and list for exporters with deterministic paging. ## Participants - Core jobs read/write runs and leases; WebService /ready pings database; /jobs APIs query runs/definitions. - Source connectors store raw docs, DTOs, and mapped canonical advisories with provenance; Update SourceState cursor/backoff. - Exporters read advisories and write export_state. ## Interfaces & contracts - IMongoDatabase injected; MongoUrl from options; database name from options or MongoUrl or default "concelier". - Repositories expose async methods with CancellationToken; deterministic sorting. - All date/time values stored as UTC; identifiers normalized. ## In/Out of scope In: persistence, bootstrap, indexes, basic query helpers. Out: business mapping logic, HTTP, packaging. ## Observability & security expectations - Log collection/index creation; warn on existing mismatches. - Timeouts and retry policies; avoid unbounded scans; page reads. - Do not log DSNs with credentials; redact in diagnostics. ## Tests - Author and review coverage in `../StellaOps.Concelier.Storage.Mongo.Tests`. - Shared fixtures (e.g., `MongoIntegrationFixture`, `ConnectorTestHarness`) live in `../StellaOps.Concelier.Testing`. - Keep fixtures deterministic; match new cases to real-world advisories or regression scenarios. ## Required Reading - `docs/modules/concelier/architecture.md` - `docs/modules/platform/architecture-overview.md` ## Working Agreement - 1. Update task status to `DOING`/`DONE` in both correspoding sprint file `/docs/implplan/SPRINT_*.md` and the local `TASKS.md` when you start or finish work. - 2. Review this charter and the Required Reading documents before coding; confirm prerequisites are met. - 3. Keep changes deterministic (stable ordering, timestamps, hashes) and align with offline/air-gap expectations. - 4. Coordinate doc updates, tests, and cross-guild communication whenever contracts or workflows change. - 5. Revert to `TODO` if you pause the task without shipping changes; leave notes in commit/PR descriptions for context.