Skip to content

Events

EstimateKit owns the estimation domain on the platform’s event bus by its own grant (the platform’s onboard-events guide), and states one fact per act that changes a project or cuts an artifact. This page is the contract a consumer reads: the types, what each is about, and what data carries. It is held equal to the publisher’s constants by the engine’s test suite (test_event_publishing.py), so a row here is a type the engine emits and nothing else is.

Every event is a CloudEvent with source /foundry/estimatekit and datacontenttype application/json. Each carries the project slug and a pointer, never the project’s numbers, a file’s content, or an audit’s findings: the engine stays the store, and a consumer fetches from it by slug. Publishing is one-way (REF-Events section 6): a publish that cannot be delivered is dropped and logged, and no audit or generation outcome depends on the broker, which INT-ESTIMATEKIT-016 attests for every act below.

Type subject Published when data
com.foundry.estimation.project.scaffolded the project slug a project is scaffolded from the template project
com.foundry.estimation.file.written the project slug a project data file is written project, path
com.foundry.estimation.file.deleted the project slug a project data file is removed project, path
com.foundry.estimation.audit.completed the project slug the audit suite finishes over a project project, verdict (pass or fail), passed, failed, skipped, suggestions (counts)
com.foundry.estimation.artifact.generated the project slug a generation pipeline produces its artifact; one fact per artifact that exists project, artifact (roadmap, excel, slides)
com.foundry.estimation.project.renamed the new slug a project’s slug or display name changes project, previous, name_changed
com.foundry.estimation.project.archived the project slug a project leaves the active listing project
com.foundry.estimation.project.unarchived the project slug a project returns to the active listing project
com.foundry.estimation.project.deleted the project slug a project is removed project

The audit’s findings and suggestions never ride the event; only the verdict and the counts do, and a reader that needs the findings runs or fetches the report. A generation pipeline that failed produced nothing, so nothing is stated for it. Reads (listing, summaries, downloads, diagram renders) change nothing and state nothing.

Adding a type is one change to this page and to engine/application/events.py together; the test refuses either alone.