blueprint.json v1 compliance

Organization certifications report

Collect ISO certificates across every supplier and report who holds what.

No reviews yet 0 installs
A service blueprint for a whole supplier estate. Enumerates suppliers, resolves the identities that are missing, collects ISO certificates as a sharded background batch, and delivers a portfolio PDF of which standards each supplier holds and when they expire. Certifications collected in the last 7 days are left alone. Collecting one supplier from its record page is the separate Organization ISO certifications action.
isosupplierscertificationscompliancereport

Versions

  • v1 # Changelog ## v2 - Renamed from `supplier-certifications-report` to `organisation-certifications-report` (and its two nested skills, `supplier-iso-enumerate` and `supplier-iso-report`, to `organisation-iso-enumerate` and `organisation-iso-report`), matching the generic-to- organisations naming now used for the per-record blueprint this one is paired with. **Identity rename only** — this blueprint's own prose is unchanged, because it is correct: this is the estate-wide sweep over `/organization/local/suppliers` and nothing else, it has no `action` block, and it is not mappable to a resource type, so it is never offered on a Customer record. `SUPPLIERS_ROOT`, the `lib/suppliers.py` module filename, `enumerate_suppliers`, the manifest key `"suppliersRoot"`, `test_suppliers_freshness.py`, `test_suppliers_materialisation.py`, and the workspace artefact filenames (`supplier-iso-manifest.json`, `supplier-iso-certifications-report.pdf`/`.md`) are all unchanged on purpose — they describe the real supplier collection and real on-disk names, not this blueprint's identity. - The six dispatcher literals move with it: `skills/organisation-iso-enumerate/lib/dispatch.py`'s `BATCH_KIND` `supplier-iso` → `organisation-iso`, `SHARD_SKILL_REF` `supplier-iso-collect` → `organisation-iso-collect`, `REDUCE_SKILL_REF` `supplier-iso-report` → `organisation-iso-report`; `lib/dispatch_resolve.py`'s `BATCH_KIND` `supplier-resolve` → `organisation-resolve`, `SHARD_SKILL_REF` `supplier-resolve-identity` → `organisation-resolve-identity`, `REDUCE_SKILL_REF` `supplier-iso-enumerate` → `organisation-iso-enumerate` (the resolve round's reduce is this skill's own `reduce_after_resolve.py`, so this one also moves with the directory rename). Any batch of either kind dispatched before this deploy and still in flight across it references a shard ref, a reduce ref and a batch kind that no longer resolve after the rename — drain or complete batches of both kinds before publishing. The `run_id` prefixes (`f"supplier-iso-{uuid}"` → `f"organisation-iso-{uuid}"`, `f"supplier-resolve-{uuid}"` → `f"organisation-resolve-{uuid}"`) move too, so the printed `runId` agrees with the `BATCH_KIND` on the line above it rather than disagreeing with it — `organisation-iso-enumerate`'s own `test_dispatch_resolve.py:57` pins the resolve prefix via `.startswith(...)`. - Dangling references to Task 1's already-renamed skills, left behind because this blueprint's own files were outside that task's scope, are corrected: the prompt's `@[skill:supplier-resolve-identity|...]` token now reads `organisation-resolve-identity` / "Organisation Resolve Identity". - No behaviour change: the cortex collection path (`/organization/local/suppliers/{id}/`) is unchanged. `tags` keeps `"suppliers"` — the real resource type this sweep covers. ## v1 - Initial release. The estate-wide half of the ISO certifications work, which `supplier-iso-certification-service` gave up in its v8 when it became a per-record action: enumerate → resolve fan-out → collect fan-out → portfolio PDF, with the report as the deliverable rather than a side effect. - Collection runs as the generic batch fan-out (`qb.batch_dispatch`), sharding into the same `supplier-iso-collect` bundle the per-record action runs. Nothing collects in the foreground. - Certifications collected in the last 7 days are not re-collected; an empty result is never cached as fresh. 11/3/2026