# AGENTS ## Role CERT-In national CERT connector; enrichment advisories for India; maps CVE lists, advisory text, mitigations, and references; non-authoritative for package ranges unless explicit evidence is present. ## Scope - Discover and fetch advisories from the CERT-In portal; window by advisory code/date; follow detail pages. - Validate HTML or JSON; extract title, summary, CVEs, affected vendor names, mitigations; map references; normalize dates and IDs. - Persist raw docs and maintain source_state cursor; idempotent mapping. ## Participants - Source.Common (HTTP, HTML parsing, normalization, validators). - Storage.Postgres (document, dto, advisory, alias, reference, source_state). - Models (canonical). - Core/WebService (jobs: source:certin:fetch|parse|map). - Merge engine treats CERT-In as enrichment (no override of PSIRT or OVAL without concrete ranges). ## Interfaces & contracts - Aliases: advisory code if stable (scheme "CERT-IN") and CVE ids; if code is not stable, store as reference only. - References typed: bulletin/advisory/vendor/mitigation; deduped. - Affected omitted unless CERT-In publishes explicit version or fix details. - Provenance: method=parser; value=advisory code or URL; recordedAt. ## In/Out of scope In: enrichment, aliasing where stable, references, mitigation text. Out: package range authority; scraping behind auth walls. ## Observability & security expectations - Metrics: shared `concelier.source.http.*` counters/histograms from SourceDiagnostics tagged `concelier.source=certin` capture fetch volume, parse failures, and map enrich counts. - Logs: advisory codes, CVE counts per advisory, timing; allowlist host; redact personal data if present. ## Tests - Author and review coverage in `../StellaOps.Concelier.Connector.CertIn.Tests`. - Shared fixtures (e.g., `PostgresIntegrationFixture`, `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.