Files
git.stella-ops.org/src/Concelier/StellaOps.Concelier.WebService/AGENTS.md
master 90c244948a Update AGENTS.md files across multiple modules to standardize task status update instructions and introduce a new document for Secret Leak Detection operations.
- Modified task status update instructions in AGENTS.md files to refer to corresponding sprint files as `/docs/implplan/SPRINT_*.md` instead of `docs/implplan/SPRINTS.md`.
- Added a comprehensive document for Secret Leak Detection operations detailing scope, prerequisites, rule bundle lifecycle, enabling the analyzer, policy patterns, observability, troubleshooting, and references.
2025-11-05 11:58:32 +02:00

3.2 KiB

AGENTS

Role

Minimal API host wiring configuration, storage, plugin routines, and job endpoints. Operational surface for health, readiness, and job control.

Scope

  • Configuration: appsettings.json + etc/concelier.yaml (yaml path = ../etc/concelier.yaml); bind into ConcelierOptions with validation (Only Mongo supported).
  • Mongo: MongoUrl from options.Storage.Dsn; IMongoClient/IMongoDatabase singletons; default database name fallback (options -> URL -> "concelier").
  • Services: AddMongoStorage(); AddSourceHttpClients(); RegisterPluginRoutines(configuration, PluginHostOptions).
  • Bootstrap: MongoBootstrapper.InitializeAsync on startup.
  • Endpoints (configuration & job control only; root path intentionally unbound):
    • GET /health -> {status:"healthy"} after options validation binds.
    • GET /ready -> MongoDB ping; 503 on MongoException/Timeout.
    • GET /jobs?kind=&limit= -> recent runs.
    • GET /jobs/{id} -> run detail.
    • GET /jobs/definitions -> definitions with lastRun.
    • GET /jobs/definitions/{kind} -> definition + lastRun or 404.
    • GET /jobs/definitions/{kind}/runs?limit= -> recent runs or 404 if kind unknown.
    • GET /jobs/active -> currently running.
    • POST /jobs/{*jobKind} with {trigger?,parameters?} -> 202 Accepted (Location:/jobs/{runId}) | 404 | 409 | 423.
  • PluginHost defaults: BaseDirectory = solution root; PluginsDirectory = "StellaOps.Concelier.PluginBinaries"; SearchPatterns += "StellaOps.Concelier.Plugin.*.dll"; EnsureDirectoryExists = true.

Participants

  • Core job system; Storage.Mongo; Source.Common HTTP clients; Exporter and Connector plugin routines discover/register jobs.

Interfaces & contracts

  • Dependency injection boundary for all connectors/exporters; IOptions validated on start.
  • Cancellation: pass app.Lifetime.ApplicationStopping to bootstrapper.

In/Out of scope

In: hosting, DI composition, REST surface, readiness checks. Out: business logic of jobs, HTML UI, authn/z (future).

Observability & security expectations

  • Log startup config (redact DSN credentials), plugin scan results (missing ordered plugins if any).
  • Structured responses with status codes; no stack traces in HTTP bodies; errors mapped cleanly.

Tests

  • Author and review coverage in ../StellaOps.Concelier.WebService.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.
    1. Review this charter and the Required Reading documents before coding; confirm prerequisites are met.
    1. Keep changes deterministic (stable ordering, timestamps, hashes) and align with offline/air-gap expectations.
    1. Coordinate doc updates, tests, and cross-guild communication whenever contracts or workflows change.
    1. Revert to TODO if you pause the task without shipping changes; leave notes in commit/PR descriptions for context.