Changelog
All notable changes to the Drasi skill package are recorded here. Dates are ISO-8601.
2.1.8 - 2026-08-24
Custom-function and middleware audit (docs vs drasi-core code)
Research method note: executed sequentially in-session via direct fetches after host background-agent infrastructure failed (SQLiteError on both spawned librarian agents). Sources: drasi.io/reference/query-language/drasi-custom-functions/, drasi.io/reference/middleware/ (both fetched 2026-08-24), and functions-cypher/src/lib.rs, functions-gql/src/lib.rs, middleware/src/ (incl. map/mod.rs) on drasi-core main.
Added
bundles/continuous-queries/guide.md: new "code-registered but not yet documented" table after thedrasi.*reference list —drasi.stdevp(scalar, population std dev),drasi.last(aggregatingAggregatingLast; pairs withdrasi.slidingWindow), and theretainHistorycontext mutator; all present in BOTH Cypher and GQL registries onmainbut absent from the official custom-functions page. Flagged as undocumented surface with re-check guidance.bundles/sources/guide.md: middleware section now records the seventh component —kind: map— registered in the drasi-core middleware crate but absent from the official middleware reference. Config shape captured from source (per-label insert/update/delete mappings; per-mappingop, JSONPathselectorexposing$selected,label,id,elementTypenode/relation,condition,properties); feature-gated note added.
Verified complete
- All 12 documented
drasi.*custom functions match the official reference exactly (no missing, no invented). - All 6 documented middleware components match the official reference exactly.
2.1.7 - 2026-08-24
Follow-up gaps from upstream org sweep
Added
bundles/custom-plugins/guide.md: new "Plugin discovery and naming rules" section — directory scan keys on the shareddrasi_filename token, type-agnostic since drasi-core PR #662 (a library without the token is silently skipped); nightly plugin crate builds exist (PR #726), test-only pinning guidance.bundles/currency-and-ai-context/guide.md: new "Upstream organization currency recipe (gh CLI)" — repeatable four-step sweep (org repo inventory → release trains incl. drasi-core per-crate releases → merged-PR diff vs checked date → contributor personal-repo mining) with interpretation rules; encodes the workflow proven valuable in the 2026-08-24 audit as a mechanical next-pass procedure.references/current-sources.md: in-process embedding SDKs section —drasi-nodejs(@drasi/lib, napi-rs, JS-defined sources/reactions) anddrasi-python(PyO3 bindings); flags the crates.io-vs-PyPIdrasi-libname collision explicitly.
2.1.6 - 2026-08-24
Upstream delta adoption (org-wide research: merged PRs newer than 2026-08-16)
Research method note: executed via authenticated gh CLI after host background-agent infrastructure failed (SQLiteError on all three spawned agents). Sources: gh repo list drasi-project, merged-PR sweeps across drasi-core/drasi-platform/drasi-server, PR bodies (#442, #343/#344, #136, #152, #100), contributor personal-repo sweep, crates.io API.
Added
SKILL.mdverification snapshot: new org-structure bullet — Rust development consolidated in the separatedrasi-project/drasi-coremonorepo with per-crate releases (state stores, indexes, secret stores, identity providers); breaking changes land there without platform release notes; checkdrasi-coremerged PRs newer than your pin before embedded work.bundles/reactions/guide.md: per-query Handlebars template config shape for EventGrid/EventBridge (added/updated/deletedblocks,template+metadata→ CloudEvent extension attributes,{{json before}}/{{json after}}) per platform PR #343/#344; new "Per-reaction state store" direction-of-travel section per platform PR #442 (merged 2026-08-15, unreleased).bundles/drasi-server/guide.md: bootstrap providers as top-levelbootstrapProviders:components referenced by id (server PR #136 — backward compatible inline form unchanged, same-kind inheritance, startup validation of references); persistent-index archive now opt-in withenable_archivedefaulting to false (server PR #152/#139, 0.2.2 line) and temporal-read behavior when disabled.bundles/agent-integration/guide.md: "Emerging: MCP Events extension" direction-of-travel section — draft-spec Rust implementation bridging Drasi CQs lives in a core contributor's personal repo (amansinghoriginal/drasi-mcp-events,drasi-mcp-agent), not shipped in any Drasi release; explicit do-not-build-production guidance until a release announces support.
Not adopted (recorded)
- WorkGraph demo repo and Kusto source experiment: prototype/experimental only, no release surface; revisit on next currency pass.
2.1.5 - 2026-08-16
Full audit (metaprompt full mode — Round 13, same-day propagation sweep)
Live re-verification 2026-08-16 against GitHub API (drasi-platform, drasi-server releases), crates.io API (drasi-lib 0.8.9), GHCR token-authenticated tag lists, modelcontextprotocol.io (2026-07-28 changelog), and the restructured drasi.io docs (EventHub how-to, MCP Reaction, CLI reference, middleware reference, drasi-context.yaml 0.7.0). Executed sequentially in-session after host subagent infrastructure failed; logical coverage preserved.
Fixed (default-propagation misses from Round 12)
- MCP revision text in
SKILL.md(High): two passages (Anti-Hallucination Rule item 4 and Known asymmetry traps) still said upstream is2025-11-25/ "two revisions behind" after Round 12 updated the snapshot andbundles/agent-integration/guide.mdto2026-07-28/ three behind. Both fixed; the chain 2025-03-26 → 2025-06-18 → 2025-11-25 → 2026-07-28 confirmed against the official MCP changelog. - Stale resource-shape prose in
SKILL.md(High): the Workload Identity section still described applyingapiVersion: drasi.io/v1alpha1 kind: Source metadata.name: ...— the exact shape Round 12 purged. Rewritten to the canonicalapiVersion: v1+ top-levelname:shape applied withdrasi apply. - Dead drasi.io links (Medium): the Jan-2026 docs restructure killed
/docs/,/docs/deployment/kubernetes, and/docs/sources/; replaced with the current URLs (site root,/drasi-kubernetes/how-to-guides/installation/,/drasi-kubernetes/how-to-guides/configure-sources/). Rest of the package had already migrated. - drasi-server v0.2.1 date (Low): stated as 2026-07-15; actual publication is 2026-06-19 (07-15 is the rolling
Latest Release (v0.2.1)republish). Fixed inSKILL.mdandreferences/current-sources.md. - GHCR evidence refresh (Medium): the
reaction-post-dapr-pubsubtag gap (stops at0.9.2, no0.10.0) was live re-verified via token-authenticated GHCR tag list this run — no longer carried evidence.SKILL.mdandbundles/reactions/guide.mdupdated (the latter also replaced a deaddrasi.io/docsreference with the current how-to URL).
Added (capability adoption — evidence: drasi-context.yaml 0.7.0 + /reference/middleware/, checked 2026-08-16)
bundles/sources/guide.md: middleware section now states where middleware is configured (inside the ContinuousQuery definition per runtime) and links the first-class middleware reference (6 components with config shapes and examples).bundles/drasi-server/guide.md: versioning-model guidance — no single monolithic Drasi version for lib/Server (engine + every plugin independently semver'd on crates.io and GHCR; K8s platform is a separate release train) and theplugins.locklockfile (commit for reproducible deployments).
Currency (re-confirmed 2026-08-16)
- drasi-platform
0.10.0(latest, Pre-release); drasi-serverv0.2.1latest stable; drasi-lib0.8.9crates.io max stable;drasi-context.yaml0.7.0unchanged; MCP Reaction pin2025-03-26unchanged.
Honest unknowns (unchanged)
- EventHub
consumerGroupproperty ([VERIFY]—drasi describe sourceprovider EventHub),drasi list -o yaml([VERIFY]— not in current CLI reference), CLI-from-mainlatest-tag behavior (carried 2026-06-27 production evidence).
Changed
- Bundle versions:
sources2.0.6 → 2.0.7,reactions2.0.5 → 2.0.6,drasi-server1.0.2 → 1.0.3. Skill package 2.1.4 → 2.1.5. metadata.last_verifiedrefreshed with this run's summary.
2.1.4 - 2026-08-16
Full audit (metaprompt full mode — Round 12)
Live re-verification 2026-08-16 against drasi.io docs (PostgreSQL/EventHub/MCP-reaction how-tos, CLI reference, drasi-context.yaml), GitHub releases (drasi-platform, drasi-server), crates.io API, and modelcontextprotocol.io.
Fixed (content accuracy — verified against official docs)
bootstrapWindowunit corrected (Critical): the EventHub SourcebootstrapWindowis an integer number of minutes of backfill, not seconds (EventHub how-to, checked 2026-08-16). Fixed inSKILL.mdsnapshot andbundles/sources/guide.md(checklist + example — the oldbootstrapWindow: 300example read as 300 seconds; it is 5 hours, the example now uses5with an explicit minutes comment).SKILL.mdresource shapes corrected (Critical): all Drasi for Kubernetes examples now use the canonical shape from current docs —apiVersion: v1, top-levelname:,spec.kind:with PascalCase provider kinds, applied viadrasi apply. Replaced:apiVersion: drasi.io/v1alpha1+metadata.name+spec.provider: AzureEventHub(multi-region section), the ConfigMap-wrappedtype: eventhub/configuration:stubs (first multi-region section), the inventedhub:property (docs useeventHubs:list), and the singularsource:ContinuousQuery field (canonical K8s form isspec.sources.subscriptions[].idper livedrasi describeoutput in the CLI reference). The bundles already had the correct shapes; SKILL.md had drifted from them.- 0.9.x/0.10.x component-mapping inversion fixed in
SKILL.md:control-plane/query-host/view-svc/resource-provider= 0.10.x;kubernetes-provider/api/query-container= 0.9.x (one paragraph mapped them backwards; three other locations were correct). - Workload Identity setup sequence:
kubectl apply -f sources.yaml→drasi apply -f sources.yaml(per-resource SAs are created bydrasi apply, not kubectl); namespace literalsdrasi-platform→<drasi-namespace>(CLI default isdrasi-system). - Invalid registry snippet removed: the multi-region section's
az acr login --name ghcrcheck cannot work (ghcr.io is GitHub's registry, not an Azure ACR instance) and its manifest URL omitted thedrasi-project/path. Both duplicate verification subsections now point to the token-authenticated manifest check in## Capability and Runtime Verification Gatestep 3. - EventHub Source lifecycle: current docs document re-applying the same name to modify (verified 2026-08-16) — lifecycle matrix and snapshot updated (previously "verify current docs").
- MCP upstream revision count: upstream Latest Stable is now
2026-07-28(introduced an extensions architecture — Tasks, MCP Apps, Skills over MCP); Drasi (2025-03-26, pin confirmed unchanged) is three revisions behind, not two. Updated inSKILL.mdandbundles/agent-integration/guide.md. rg-state→state.mongodbworkaround version-scoped to 0.9.x (the 0.10.x platform is Redis-only with nodrasi-mongoservice) with a[VERIFY]re-check note.- apiVersion migration playbook: current apiVersion restated as
v1(was illustrated asdrasi.io/v1);drasi list -o yamlflagged[VERIFY](flag not in current CLI docs;drasi describeis the documented fallback). bundles/sources/guide.mdEventHub YAML example: added the missingspec.kind: EventHub; removed the empty "Kubernetes source checklist" heading; added backtick-escaping guidance for dashed hub names (per EventHub how-to).bundles/drasi-server/guide.md: deduplicated the six-fold "Related bundles" lines; version-scoped the K8s state-store column (Redis (0.10.x) / MongoDB + Redis (0.9.x)).bundles/delivery/guide.md:drasi version --short→ documented plaindrasi version.
Added (capability adoption — evidence: drasi-context.yaml 0.7.0 + drasi.io docs, checked 2026-08-16)
bundles/drasi-server/guide.md: new "Component catalog (plugins)" section — lib/Server lowercase kind convention vs K8s PascalCase, full source/reaction/bootstrap/infrastructure plugin catalog (oracle, sqlite, neo4j, kafka sources; loki, file, rabbitmq, aws-sqs, dashboard, sse, profiler reactions; bootstrap/identity/secret-store providers), built-in components, and pointers to the Server how-to guides; plus adrasi-sse-clipointer (companion SSE stream binary shipped in every drasi-server release).bundles/operations/guide.md:drasi ingress initguidance (Contour default install;--use-existingintegration flags) for exposing reaction endpoints such as the MCP Reaction (port 3000) outside the cluster.
Currency (re-confirmed unchanged 2026-08-16)
- drasi-platform
0.10.0(latest, Pre-release) — GitHub releases. - drasi-server
v0.2.1(latest stable, 2026-07-15;0.2.2/0.2.3-previewahead) — GitHub releases. - drasi-lib
0.8.9= crates.iomax_stable_version(2026-07-08; AI-context baseline remains 0.8.6). drasi-context.yamlstill0.7.0(2026-06-16).- Drasi MCP Reaction still pins MCP spec
2025-03-26.
Honest unknowns ([VERIFY] markers added in-body)
- EventHub
consumerGroupproperty: absent from the current docs property table and the source-provider schema page 404s — verify viadrasi describe sourceprovider EventHubon a live cluster. - GHCR per-tag availability (PostDaprPubSub gap at 0.10.0): carried as production-verified 2026-06-23 evidence; registry not re-probed this run.
- drasi-server source-build MSRV: replaced the stale "Rust 1.70+" claim with a verify-at-pinned-tag instruction.
Changed
SKILL.mdmulti-region content deduplicated (image-verification and downgrade prose now live once, with pointers); duplicate "Adjacent verification sources" lists merged (no links lost).Multi-region reaction fan-out wording reconciled across sections: reactions run region-local; cross-region delivery goes through a downstream orchestrator with idempotency-key dedup.
Removed the prior run's stale
.checkpoints/from the package (audit artifacts now live outside the skill per artifact-isolation policy).Bundle versions:
sources2.0.5 → 2.0.6,operations2.0.4 → 2.0.5,agent-integration2.0.4 → 2.0.5,drasi-server1.0.1 → 1.0.2. Skill package 2.1.3 → 2.1.4.metadata.last_verified→ 2026-08-16.Validator passes (
Drasi skill validation passed.).
2.1.3 - 2026-08-03
Currency refresh (metaprompt Round 11)
- drasi-lib: Noted crates.io advance from AI-context baseline
0.8.6to 0.8.9 (Jul 8, 2026). Three releases: 0.8.7 PostgreSQL datetime preservation, 0.8.8 grpc reaction unification, 0.8.9 FFI heap corruption fix + dashboard dedup. Updatedreferences/current-sources.md,bundles/currency-and-ai-context/guide.md,templates/drasi-version-pinning.md. - drasi-platform 0.10.0 and drasi-server v0.2.1 confirmed still latest — no drift.
- SQL Server Managed Identity — confirmed already covered in
bundles/sources/guide.md. last_verifiedbumped to 2026-08-03.- Validator passes.
2.1.2 - 2026-07-21
Cypher/GQL function-reference accuracy (drasi.* verified against official reference)
Verified the drasi.* custom-function surface against the official
Drasi Custom Functions reference
(checked 2026-07-21) and corrected fabricated function names in the continuous-queries bundle.
Fixed (content accuracy — verified against official docs)
- bundles/continuous-queries/guide.md: the non-events / absence-of-change example
used
drasi.age()anddrasi.minutes(), which are not real Drasi functions. Replaced with the canonicaldrasi.trueFor(expr, duration({...}))pattern (from the official reference) and adrasi.changeDateTime()/datetime() - duration({...})timestamp comparison. Removed the danglingsecondsSinceHeartbeatfield from the result contract (it was produced only by the fabricated function). Rewrote the trailing[VERIFY]claim that still named the non-existent functions.
Changed
- bundles/continuous-queries/guide.md:
drasi.*namespace table rebuilt with verified signatures (previousValue(expression, default),getVersionsByTimeRange(element, from, to, include_initial_version),slidingWindow(duration, aggregation_expression), etc.), resolved the prior "verify availability" hedges ondrasi.trueUntilanddrasi.slidingWindow(both confirmed in the reference), added the two previously-missing documented functionsdrasi.listMin(list)anddrasi.listMax(list), added an explicit "thesedrasi.*names do not exist" guard (drasi.age,drasi.minutes,drasi.now), and cited the official reference URL with a checked date.
Note: GQL in Drasi is ISO/IEC 39075 Graph Query Language, not GraphQL — this distinction was already documented correctly in the bundle and is unchanged.
Versions
continuous-queriesbundle bumped2.0.6→ 2.0.7 inbundles/catalog.yaml.- Skill package version 2.1.1 → 2.1.2.
- No catalog schema change.
2.1.1 - 2026-07-21
drasi-server bundle integration + currency refresh + REST path correction
A quality-improvement pass (skill-improvement metaprompt) that closed three baseline
validator errors, fixed a verified REST-path error, completed the integration of the
previously half-wired drasi-server bundle, and refreshed currency to 2026-07-21.
External validation baseline
- drasi-platform:
0.10.0still latest (unchanged since 2026-06-25) — GitHub releases. - drasi-context.yaml: still
0.7.0, updated 2026-06-16 (unchanged) — authoritative context file. - drasi-lib:
0.8.6;drasi-coremodels crate now0.5.4— per context 0.7.0. - drasi-server:
v0.2.1(2026-07-15) is latest stable; a preview line is ahead (0.2.2-preview2026-06-29,0.2.3-preview2026-07-13). The context file (0.7.0) still records0.1.6and lags the release page. - Community: CNCF LFX 2026 mentorship is building MQTT and Shell/Command reactions; neither appears in the authoritative context yet — confirmed correctly absent from the skill.
Fixed (validator errors)
- bundles/drasi-server/bundle.yaml: created (was missing; catalog and
SKILL.mdrouting referenced the bundle, butbundle.yamldid not exist — validator error). - bundles/drasi-server/guide.md: added a
## Validationsection (source → query → reaction acceptance table) — the guide previously had no validation/evidence heading required by the validator. - CHANGELOG.md: reworded the 2.1.0
latest-tag trap line so the anti-sloplatest-usage check recognizes the "do not use / floatinglatesttag" intent.
Fixed (content accuracy, verified against official docs)
- bundles/drasi-server/guide.md: Quick start no longer runs Drasi Server with
docker compose up -d. No Drasi Server compose file ships upstream; the official getting-started runs the binary (./bin/drasi-server --config ...) or a digest-pinneddocker run, and usesdocker composeonly for the tutorial database. Replaced with thedocker run @sha256:<digest>+ binary form, matchingSKILL.md"Prerequisites by runtime". Verified against drasi.io getting-started (2026-07-21). - OpenAPI path correction:
SKILL.md(Anti-Hallucination Rule + safe-degraded-output) andbundles/drasi-server/guide.mdused the root/openapi.json; the correct path is/api/v1/openapi.json(verified against the drasi.io REST API reference, and consistent with the 8 other skill files that already used it)./health(root) confirmed correct.
Changed
- README.md: added the
drasi-serverbundle to the Bundles index (it was in the catalog andSKILL.mdrouting but missing from the README list). - SKILL.md:
last_verifiedand Current-verification-snapshot refreshed to 2026-07-21; drasi-server snapshot bullet now distinguishes latest stable (v0.2.1) from the preview line and notes the context-file lag. - references/current-sources.md:
Checkeddate → 2026-07-21; drasi-server, drasi-lib /drasi-core, and the MQTT/Shell mentorship-not-shipped note updated.
Versions
drasi-serverbundle bumped1.0.0→ 1.0.1 inbundles/catalog.yaml(guide changed).- Skill package version 2.1.0 → 2.1.1.
- No catalog schema change.
2.1.0 - 2026-06-27
Production deployment learnings
Three critical corrections verified during a full Drasi for Kubernetes deployment on AKS (australiaeast, Drasi 0.10.0).
Added
- SKILL.md - Workload Identity section: Three new verified entries:
- Federated credential two-phase pattern:
drasi applycreates the source SA, but the FIC must be created AFTER apply. Without it, source pods fail withAADSTS700213: No matching federated identity record found. Same applies to reaction SA (defaultin drasi-system namespace). - Provider registration gap:
drasi initdoes NOT auto-register source/reaction providers. Must applydefault-source-providers.yamlanddefault-reaction-providers.yamlfrom the CLI installer resources beforedrasi applyof any Source/Reaction. - CLI
mainbranch defaults to the floatinglatesttag fromghcr.io/project-drasi/(private, 403) — do not use it. Always pass--version 0.10.0to pull from the publicghcr.io/drasi-project/registry.
- Federated credential two-phase pattern:
2.0.14 - 2026-06-25
Currency refresh + workload identity consistency
Applied a focused currency and consistency pass using the latest checked external baseline (drasi-context 0.7.0, drasi-server releases published). This pass resolves stale release/version claims and fixes a production-safety contradiction on reaction workload identity service-account naming.
Changed
- SKILL.md:
last_verifiedrefreshed to 2026-06-25 with current currency anchors.- Current verification snapshot updated: drasi-server releases now published (latest observed
v0.2.1), drasi-context refreshed to0.7.0(updated 2026-06-16), and drasi-lib baseline language updated to the current AI-context line. - Removed stale drasi-lib references (
0.3.8vs0.8.4) and aligned starter-path guidance to the current AI-context stable line.
- references/current-sources.md:
Checkeddate updated to 2026-06-25.- Replaced stale "no releases" claim for drasi-server with release-published status.
- Updated drasi-context baseline from
0.5.0/0.3.8to0.7.0/0.8.6and refreshed drasi-lib conflict framing.
- bundles/currency-and-ai-context/guide.md:
- Rewrote the drasi-lib version-conflict section to use
0.8.6as the current AI-context baseline and retained explicit deliberate pinning guidance.
- Rewrote the drasi-lib version-conflict section to use
- bundles/reactions/guide.md:
- Corrected Workload Identity guidance from
defaultservice account to per-reaction service accountreaction.<reaction-name>. - Updated federated credential subject guidance and command examples accordingly.
- Corrected Workload Identity guidance from
- bundles/sources/guide.md:
- Removed stale default-service-account assumptions and aligned AKS Workload Identity guidance to per-source service accounts
source.<source-name>. - Updated prerequisite, Bicep subject, annotation, and verification examples for source-specific SA flow.
- Removed stale default-service-account assumptions and aligned AKS Workload Identity guidance to per-source service accounts
- bundles/security/guide.md:
- Updated reaction identity scope section to reflect verified per-resource service accounts.
- Updated verification snippets to check
source.<source-name>/reaction.<reaction-name>service accounts.
- bundles/drasi-lib/guide.md:
- Updated drasi-lib baseline references to current AI-context stable line (
0.8.6) and retained explicit newest-crate decision path.
- Updated drasi-lib baseline references to current AI-context stable line (
- templates/drasi-version-pinning.md:
- Updated drasi-lib example baseline from
0.3.8to0.8.6.
- Updated drasi-lib example baseline from
- README.md:
- Added missing
custom-pluginsbundle to the bundle index list.
- Added missing
Versions
- Bundles bumped in
bundles/catalog.yaml:sources2.0.4 → 2.0.5reactions2.0.4 → 2.0.5security2.0.2 → 2.0.3currency-and-ai-context2.0.3 → 2.0.4drasi-lib2.0.2 → 2.0.3
- Skill package version 2.0.13 → 2.0.14.
- No catalog schema change.
2.0.13 - 2026-06-11
Comprehensive function reference
Added a complete built-in function reference to the continuous-queries bundle, sourced from
the drasi-core/core/src/evaluation/functions/ source tree. Prior to this addition, only
the 8 aggregating functions and ~10 drasi.* namespace functions were documented. The new
reference covers all 11 function categories discovered in the source.
Added
- bundles/continuous-queries/guide.md: New
## Function referencesection (~120 lines) covering 40+ functions across 11 categories with signatures, descriptions, and examples:- Cypher scalar (11): char_length, coalesce, head, is_empty, last, null_if, size, timestamp, to_boolean, to_float, to_integer
- Numeric (6): abs, ceil, floor, round, rand, sign
- Trigonometric (6): sin, cos, tan, pi, degrees, radians
- Text/string: string manipulation functions (with VERIFY marker for exact names)
- List (6): distinct, index_of, insert, range, reduce, tail
- Temporal instant: datetime, localdatetime, date, time constructors
- Temporal duration: duration, duration.between, duration.in_* accessors
- Metadata (2): elementId/element_id, changeDateTime
- Context mutators: context mutation functions (with VERIFY marker)
- Future/pending: awaiting, future_element, true_now_or_later
- Past/historical: past.getVersionByTimestamp, past.getVersionsByTimeRange
Changed
- bundles/catalog.yaml:
continuous-queriesbumped 2.0.5 -> 2.0.6 with extended purpose.
Versions
continuous-queriesbundle bumped 2.0.5 -> 2.0.6.- Skill package version 2.0.12 -> 2.0.13.
- No catalog schema change.
Earlier versions
Earlier entries (2.0.12 and earlier) have been moved to CHANGELOG-archive.md to keep this file focused on recent changes.
SyncVectorStore reaction, output format patterns, Event Hub source, reaction catalog expansion
Added the SyncVectorStore reaction (critical gap for AI/RAG), documented the packed/unpacked/template output format pattern across reactions, added the Event Hub source with full checklist, and expanded the reaction selection table with 7 additional reaction types discovered from upstream.
Added
- bundles/reactions/guide.md:
- New
## SyncVectorStore reactionsection (~90 lines) documenting vector store backends (Qdrant, Azure AI Search, InMemory), embedding service configuration (AzureOpenAI, OpenAI), per-query Handlebars templates, config schema reference, Qdrant and Azure AI Search examples, validation checks, and reliability defaults. - New
## Output format patternssection (~60 lines) documenting packed/unpacked/template formats, when to use each, and per-reaction availability table. - Reaction selection table expanded from 7 to 13 rows: added AWS EventBridge, SyncVectorStore, SyncDaprStateStore, PostDaprPubSub, Gremlin, StoredProc, and Azure StorageQueue.
- Per-reaction validation patterns table expanded with 7 new rows for SyncVectorStore, EventBridge, Dapr StateStore, Dapr PubSub, Debezium, StorageQueue, and StoredProc.
- New
- bundles/sources/guide.md: New
## Event Hub source checklistsection (~50 lines) covering auth strategy (Workload ID vs connection string), consumerGroup, bootstrapWindow, eventHubs configuration, YAML example, and validation checks.
Changed
- bundles/reactions/guide.md:
Azure Event Hub Sourcelifecycle matrix row expanded with dedicated consumer group guidance and event processing notes. - bundles/catalog.yaml:
reactionsbumped 2.0.3 -> 2.0.4 (SyncVectorStore + output format patterns + expanded selection/validation tables);sourcesbumped 2.0.3 -> 2.0.4 (Event Hub source section).
Versions
reactionsbundle bumped 2.0.3 -> 2.0.4.sourcesbundle bumped 2.0.3 -> 2.0.4.- Skill package version 2.0.11 -> 2.0.12.
- No catalog schema change.
2.0.11 - 2026-06-11
Cypher vs GQL recommendation flip
Changed the default language recommendation from "prefer GQL for new projects" to "prefer Cypher for new projects" based on deep analysis of the actual drasi-core source, function registry architecture (issue #217), and documentation corpus.
Changed
- bundles/continuous-queries/guide.md:
- Query authoring rule 3: flipped from "Prefer GQL for new queries" to "Prefer Cypher for new queries. Use GQL only when ISO compliance or multi-platform GQL interoperability is an explicit requirement."
- New-project default section (Cypher and GQL feature support): replaced the "start with GQL" recommendation with a detailed rationale for Cypher, covering the five reasons (feature target, separate function registries, pre-1.0 stability, documentation corpus, cosmetic syntax differences).
- bundles/catalog.yaml:
continuous-queriesbumped 2.0.4 -> 2.0.5.
Versions
continuous-queriesbundle bumped 2.0.4 -> 2.0.5.- Skill package version 2.0.10 -> 2.0.11.
- No catalog schema change.
2.0.10 - 2026-06-11
Org-wide research additions
Added findings from a comprehensive scan of all 15 repositories in the drasi-project GitHub
org, covering drasi-core-python, the learning repo, grafana-signalr, and design-documents.
Added
- bundles/drasi-lib/guide.md: New
## Python alternative via drasi-core-pythonsection (approx. 100 lines) documenting the PyO3 native Python bindings for in-process Drasi. Covers package structure (18 pip packages), quick-start example, Rust-vs-Python decision matrix, and currency note. Python developers can now useDrasiLibBuilder,Query,PyApplicationSource, andPyApplicationReactionin-process without Drasi Server or Drasi for Kubernetes. - bundles/continuous-queries/guide.md: New
## Non-events / absence-of-change patternsection (approx. 70 lines) documenting the watchdog/deadline/heartbeat pattern. Covers two-query approach, Cypher and GQL examples,drasi.*temporal function usage, result contract shape (added/deleted changeKinds for stale/recovered entities), evaluation cadence, threshold tuning, recovery handling, and known runtime limitations. Cross-references thelearningrepo's absence-of-change tutorial. - bundles/reactions/guide.md: New
### SignalR consumer reference implementationsubsection documenting thegrafana-signalrplugin's operation type conventions (i/u/d/xvs MCP'sadded/updated/deleted), snapshot loading pattern, and error handling patterns. - bundles/agent-integration/guide.md: Cross-reference to
apps/rag-chat-appin thelearningrepo as a worked example of Drasi-as-change-detection for AI pipelines. - references/current-sources.md: Four new sections covering
drasi-core-python,learning(tutorials + sample apps),grafana-signalr, anddesign-documents.
Changed
- bundles/catalog.yaml: Version bumps --
drasi-lib2.0.1 -> 2.0.2 (Python alternative section),continuous-queries2.0.3 -> 2.0.4 (absence-of-change pattern),reactions2.0.2 -> 2.0.3 (SignalR consumer reference). Purpose lines extended for all three bundles.
Versions
- Three bundles bumped in
bundles/catalog.yaml(see above). - Skill package version 2.0.9 -> 2.0.10.
- No catalog schema change.
2.0.9 - 2026-06-11
Consumer-side reference architecture (SDK-agnostic)
Added a comprehensive consumer-side reference architecture to the agent-integration bundle,
derived from analysis of github.com/drasi-project/langchain-drasi and extracted as SDK-agnostic
patterns that apply to any agent framework (Microsoft Agent Framework, Semantic Kernel, custom consumers).
Added
- bundles/agent-integration/guide.md: New
## Consumer-side reference architecturesection (approx. 345 lines) covering:- Component architecture diagram (MCP Transport → Session → Router → Handlers)
- Canonical Drasi MCP notification contract (the
operationanddatafields that are Drasi-specific extensions to the standardResourceUpdatedNotification) - Connection lifecycle (resolve → open → init → discover → subscribe → receive → unsubscribe → close)
- Handler protocol (on_result_added, on_result_updated, on_result_deleted, on_notification_error)
- Two-layer error containment (per-handler isolation + router-level guard)
- Notification delivery semantics (per-query ordering, at-most-once, no replay, no batching)
- Resilience patterns (exponential backoff reconnection, subscription state persistence, graceful degradation)
- Consumer-side backpressure strategies (buffer, drop-newest, drop-oldest, throttle-skip)
- Consumer-side testing patterns (unit, integration, end-to-end with synthetic ChangeNotification)
- Framework-specific implementation guidance for Microsoft Agent Framework, Semantic Kernel, and custom consumers (Rust, Go, Python)
- references/current-sources.md: New
## langchain-drasi (Python agent-consumer reference)section documenting the source repo and noting the patterns are SDK-agnostic.
Changed
- bundles/catalog.yaml:
agent-integrationbundle bumped2.0.3→ 2.0.4;purpose:extended to mention consumer-side architecture; added capabilitiesconsumer-architecture,notification-handlers,subscription-lifecycle; added keywordsconsumer architecture,notification handler,subscription lifecycle,mcp client drasi,real-time agent updates. - SKILL.md: Bundle routing table entry for
agent-integrationexpanded to mention consumer-side reference architecture and notification handler patterns.
Versions
agent-integrationbundle bumped2.0.3→ 2.0.4 inbundles/catalog.yaml.- Skill package version 2.0.8 → 2.0.9.
- No catalog schema change.
2.0.8 - 2026-06-05
Currency refresh
- Updated crates.io latest pins:
drasi-lib0.8.0 -> 0.8.4, and noteddrasi-core0.5.3 (both published 2026-05-22), verified against the crates.io API. The deliberate three-way pinning framing (AI context 0.3.8 vs crates.io latest vs in-flightdrasi-corerewrite) is unchanged. Confirmed Drasi remains a CNCF Sandbox project. Bumpedlast_verifiedto 2026-06-05.
2.0.7 - 2026-05-15
Round 8 - repo-grounded authoring of custom-plugin and Cypher-subset coverage
Round 8 was driven by an explicit user request to scan the
drasi-project GitHub org and add knowledge for creating custom Sources
and Reactions, plus expanding the query language. The deep-research
agent produced a 695-line internals brief grounded in drasi-core,
drasi-platform, drasi-server, the published drasi-plugin-sdk
0.4.2 / drasi-lib 0.4.2 / drasi-query-ast crates, DeepWiki, and
drasi-server/docs/plugin-architecture.md. Two file-isolated authoring
packs landed the content, and four metadata packs wired it through
the router.
Added
- bundles/custom-plugins/ (new bundle, version
2.0.0):bundle.yamlwith capabilities[custom-source, custom-reaction, plugin-sdk, query-extension, drasi-core]and seven user-intent keywords.guide.md(594 lines) covering: the two trait surfaces per plugin (drasi_lib::sources::Sourceruntime trait +SourcePluginDescriptorfactory trait; same split for Reactions viaReaction+ReactionPluginDescriptor); theSourceChange/Element/ElementMetadata/ElementReferencetypes fromdrasi-query-astwith a workedSourceChange::Insertexample; the fullSourcePluginDescriptorimpl andConfigValue<T>DTO contract withDtoMapper; the symmetricReactionruntime trait; a 6-row delivery-semantics table (at-least-once, per-query ordering, cross-query ordering, backpressure modes, DLQ, replay); packaging per runtime (drasi-libstatic +Drasi Servercdylibviaexport_plugin!+Drasi for Kubernetes); the 6-step cdylib loader lifecycle (dlopen→ metadata → SDK+triple validation → init → vtable proxy); the cross-cdylibBoxownership pitfall (drasi-core issue #378) with five mitigations; the async runtime contract; identity wiring via the application- identity provider (drasi-core PR #423); a 10-row built-in plugin templates index; the query-language extension points (add a scalar function, the fullAggregatingFunctiontrait + lifecycle for adding aggregating functions, add an operator, add a clause) plus an 8-row decision matrix for fork-versus-extension-point; the Replayable Sources / Resumable Reactions status (issues #345, #369, #392, #393, #394; WAL plugin #346/#362); a 4-row test- pattern table; ten non-negotiable rules for plugin authors; and a## Acceptance evidence for a new pluginheading satisfying the validator.
- bundles/continuous-queries/guide.md: new
## Cypher and GQL feature supportsection with the parseable AST surface (11 nodes fromdrasi-query-ast/src/ast.rs), the clauses table (MATCH/WHERE/RETURN/WITH supported; OPTIONAL MATCH, UNWIND, CALL, UNION hedged; CREATE/MERGE/SET/DELETE not applicable), the predicates and operators table, the pattern- syntax notes includingelementId(Cypher) vselement_id(GQL), the 8-row aggregating-functions table (sum,avg,count,min,max,collect,linearGradient, AggregatingLast) with accumulator types, thedrasi.*namespace table (8 temporal functions), GQL mode differences (separatefunctions-gqlregistry - issue #217), and a known-unsupported table that flagsDISTINCT/ORDER BY/LIMITas hedged unsupported and notes third-party "unsupported features" lists contradict the repo oncollect(). - references/current-sources.md: new
## Custom plugins and engine internalssection naming thedrasi-plugin-sdk0.4.2 surface, thedrasi-corelayout, thedrasi-server/docs/plugin-architecture.mdcanonical loader description, thedrasi.*namespace docs path, and the seven active-rewrite issue numbers (#298, #349, #346/#362, #345/#369/ #392/#393/#394, #378, #217, #423). New## Custom plugin URLssection with the 8 source URLs.
Changed
- SKILL.md: bundle routing table extended with a
custom-pluginsrow pointing at the new bundle for custom Source / Reaction / function authoring queries. - bundles/catalog.yaml: new
custom-pluginsentry at version2.0.0;continuous-queriesbumped2.0.2→2.0.3and itspurpose:line extended to mention the parseable Cypher/GQL subset, the eight built-in aggregators, and thedrasi.*temporal namespace.
Versions
bundles/catalog.yamladdscustom-plugins 2.0.0(new).bundles/catalog.yamlbumpscontinuous-queries2.0.2 → 2.0.3.- Skill package version 2.0.6 → 2.0.7.
Reviewer angles
- 16th internal reviewer angle (custom-plugin authoring coverage +
Cypher subset feature matrix completeness, driven by the explicit
user request) - documented in
QUALITY-REVIEW.mdRound 8.
2.0.6 - 2026-05-15
Round 7 - mixed-runtime coherence pass
Round 7 ran four parallel reviewers (V: anti-patterns, W: mixed-runtime coherence, X: findability/cross-references) plus a fourth currency re-check (U). V and X cleared the 8/10 threshold on first review. W identified that single-runtime coverage was strong but cross-runtime sequencing, portability, and end-to-end SLO/RTO decomposition were not explicitly named. Seven file-isolated fix packs applied the must-fixes; no file was touched by more than one pack.
Added
- SKILL.md (router-level, no bundle version bump): new
## Mixed-runtime projectssection after the Runtime decision gate. Names three supported composition patterns (drasi-lib edge → Drasi Server hub; Drasi for Kubernetes core + drasi-lib worker; Drasi Server side + Drasi for Kubernetes hub) and four non-negotiable cross-runtime constraints (oneversions.md, runtime-neutral query authoring, explicit end-to-end SLO/RTO decomposition, one MCP spec revision per project). Cross-references the four bundles that own the detail. - templates/drasi-version-pinning.md (template-level, no bundle
version bump): new
## Cross-runtime compatibilitysection with a coherence-anchors table (drasi-core version line / commit SHA, cross-runtime apiVersion, MCP spec coherence, singleversions.mdlocation) and a CI gate that fails the version-manifest check if a mixed-runtime project does not populate the section. - bundles/continuous-queries/guide.md: new
## Cross-runtime portabilitysection with a 7-row portability matrix (MATCH on single Source, Cypher predicates, cross-source joins, time-window aggregation, GQL ISO mode, result-contract field names, changeKinds semantics), the runtime-neutral authoring pattern, and a common anti-patterns "don't / do instead" table. - bundles/observability/guide.md: two new sections.
(1)
## Telemetry cost controls- cost-driver-and-control table for container logs, custom metrics, distributed traces, synthetic canaries, and health-probe logs, plus four budget-enforcement steps (daily Log Analytics cap, cost-centre tags, monthly top-10 review, redact at the source). (2)## Cross-runtime end-to-end signals- W3Ctraceparentpropagation across runtime hops, a four-row end-to-end freshness budget decomposition (edge emit / transport / hub ingest / end-to-end), and cross-runtime alert guidance. - bundles/recovery/guide.md: new
## Cross-runtime recovery and upgrade sequencingsection. Five- step recovery sequence rule (quiesce downstream → transport → edge sources → recover failing leg → resume forward), four-row end-to-end RTO/RPO decomposition table, upgrade sequencing rule (upgrade hub first, then edge), and the cross-runtime defect to watch for (transport queue retention shorter than hub restart time → silent event loss). - bundles/scaling-and-capacity/guide.md: three new sections.
(1)
## Per-component sizing template- six-row sizing-inputs and starting-allocation table per component class (CDC source, event-driven source, query container, HTTP/gRPC reaction, SSE/MCP reaction). (2)## Storage budgeting (indexes, state stores, WAL retention) - Drasi state store sizing formula (cardinality × per-row bytes
× 1.5), Postgres replication-slot WAL retention budget
(
max_slot_wal_keep_size≥ peak_WAL_per_minute × outage_minutes), event-driven source retention. (3)## Node pool placement (Drasi for Kubernetes)- eight-row placement matrix per component class with spot/preemptible eligibility (control plane and stateful sources on-demand only; reaction tier may be spot-eligible if idempotent). - bundles/azure-hosting/guide.md: new
## Container Apps plan choice for Drasi Serversection. Three-row plan-choice table (Consumption, Dedicated, Workload Profiles), non-negotiable production settings (minReplicas: 1,maxReplicas: 1until multi-replica is validated, single-revision mode, probes against/health), and cost notes (Dedicated/Workload Profiles usually cheaper than Consumption-with-minReplicas-1 at non-trivial scale). Cross-reference to the observability telemetry-cost-controls section.
Changed
- SKILL.md:
Checked: 2026-05-11→Checked: 2026-05-15after Reviewer U's currency re-check. No factual deltas vs Round 6 - Releases page still empty, drasi-platform still0.10.0, drasi-lib still three-way (0.3.8 / 0.4.2 / Replayable Sources), MCP upstream still2025-11-25. - references/current-sources.md:
Checked: 2026-05-11→Checked: 2026-05-15.
Versions
- Touched bundles bumped in
bundles/catalog.yaml:azure-hosting2.0.1 → 2.0.2continuous-queries2.0.1 → 2.0.2observability2.0.3 → 2.0.4recovery2.0.2 → 2.0.3scaling-and-capacity2.0.2 → 2.0.3
- SKILL.md,
references/current-sources.md, andtemplates/drasi-version-pinning.mdare router/reference/template- level; their edits do not trigger bundle bumps. - No catalog schema change.
2.0.5 - 2026-05-15
Round 6 - external validation fix loop
Three external validation passes (Validator R against GitHub source-of-truth,
Validator S against docs.drasi.io, Validator T against community sources)
ran in parallel after the internal stopping condition was met. All three
returned pass-with-notes. Three file-isolated fix packs (M, N, O) applied
the must-fixes; Pack P captured metadata. No file was touched by more than
one pack.
Changed
- SKILL.md (Pack M, router-level - no bundle version bump):
- drasi-server Current verification snapshot bullet tightened: Releases
page still empty (Validator R confirmed on 2026-05-15), but the upstream
README's docker-compose default now references
ghcr.io/drasi-project/drasi-server:0.1.0(Validator S). A0.1.0Docker tag may exist on GHCR without an accompanying GitHub Release; production must still resolve to an immutable@sha256:digest before pinning. - drasi-lib bullet reframed as a deliberate three-way pinning decision:
0.3.8(official AI context baseline) vs0.4.2(latest crates.io minor; built 2026-04-20) vs post-Replayable-Sources (upcoming API break tracked in drasi-core issues #345, #369, #392, #393, #394). Cross-reference tobundles/drasi-lib/guide.md. - New snapshot bullet: Drasi MCP Reaction pins MCP spec
2025-03-26while MCP upstream is now at2025-11-25(Latest Stable). Drasi is two MCP spec revisions behind upstream - re-check before client implementation. Cross-reference tobundles/agent-integration/ guide.md.
- drasi-server Current verification snapshot bullet tightened: Releases
page still empty (Validator R confirmed on 2026-05-15), but the upstream
README's docker-compose default now references
- references/current-sources.md (Pack M, reference-level - no bundle
version bump):
- Reconciled drasi-server "no tagged GitHub releases" with the README's
:0.1.0docker-compose default tag (Validator S). - Added one-line clarification that the
drasi-libcrate is published fromgithub.com/drasi-project/drasi-core; there is no standalonedrasi-libGitHub repo (Validator R). - Rewrote the drasi-lib version-conflict bullet as the three-way pin (AI context 0.3.8 / crates.io 0.4.2 / Replayable Sources upcoming break) with drasi-core issue cites.
- Reconciled drasi-server "no tagged GitHub releases" with the README's
- bundles/developer-experience/guide.md (Pack M):
GET /api/v1/health→GET /health. The drasi-server upstream README and every other skill file use the root-level/healthfor liveness;/api/v1/healthdoes not exist (Validator R, only outright factual error found). - bundles/agent-integration/guide.md (Pack M): added MCP spec lag
callout (Validator T) - Drasi MCP Reaction pinned to
2025-03-26; upstream MCP has shipped2025-06-18(Stable; OAuth Resource Servers, RFC 8707 Resource Indicators) and2025-11-25(Latest Stable; OIDC Discovery, icons, incremental consent, elicitation). Implication: Drasi MCP Reaction does not yet implement RFC-8707 Resource Indicators or OAuth Resource Server discovery - do not assume those when designing client auth flows. - bundles/drasi-lib/guide.md (Pack N): added
## Source repositorysubsection clarifying the crate ships fromdrasi-project/drasi-core(no standalone repo). Added new## Upcoming API break: Replayable Sources and Resumable Reactionssection naming the four trait-surface changes a reader should look for inCargo.lock(SourceEventWrapper. sequence,Source::supports_replay(),SourceSubscriptionSettings. resume_from,SubscriptionResponse.position_handle) plus the three-way pinning decision (Validator T). - bundles/currency-and-ai-context/guide.md (Pack N): replaced the
generic "newer crate is a conflict" hedge with the explicit three-way
pin and cross-reference to the drasi-lib bundle for trait-surface
details; added the "pin deliberately, capture in
versions.mdwith rationale" guidance and a one-line note thatversions.mdshould also capture the drasi-core commit SHA when pinning unreleased work, since drasi-lib ships from the drasi-core repo. - bundles/operations/guide.md (Pack O): added three rows to the failure-mode taxonomy (Validator T) - persistent-index inconsistency after crash (drasi-core #290, severity high, owning bundle recovery), aggregation phantom rows after groups empty out (drasi-core #384, severity medium, owning bundle continuous-queries), plugin directory listing pagination cap at ~50 plugins (drasi-core #414, severity medium, owning bundle sources/reactions). Appended three numbered playbook stubs tying each row to its handling.
- bundles/sources/guide.md (Pack O): added PostgreSQL 19+
dynamic-effective
wal_levelcallout (slot creation onwal_level= replicaauto-promotes effective level tologicalcluster-wide → WAL volume hits every database) and an explicit "WAL accumulation" outage class withpg_wal_lsn_diff(pg_current_wal_lsn(), confirmed_flush_lsn)alert query and sample thresholds (> 1 GiB warn, > 10 GiB page). Cites thebuild.com 2026-05-11 PG19 post and the POSETTE 2026 Drasi-on- Postgres talk.
Not applied (intentionally out-of-scope for this pass)
- Cross-cdylib
Boxownership warning (Validator T, drasi-core #378): niche to custom-plugin authors using a different allocator than the host process. Deferred until a custom-plugin authoring bundle is added. - EKS storage-class fragility (Validator T, HN 2024): the existing
non-AKS hedging in
bundles/azure-hosting/guide.mdandbundles/sources/guide.mdalready covers this implicitly. No community post confirms a current EKS-specific failure mode in the pre-1.0 platform window. - Dapr bridge GSoC 2026 (Validator T, drasi-platform #383): the
dapr-agents-drasiPython SDK andDrasi-Dapr Bridge Reactionare proposed for summer 2026 but unshipped. Will be reconsidered when a release lands.
Versions
- Touched bundles bumped in
bundles/catalog.yaml:agent-integration2.0.2 → 2.0.3developer-experience2.0.3 → 2.0.4drasi-lib2.0.0 → 2.0.1currency-and-ai-context2.0.2 → 2.0.3operations2.0.3 → 2.0.4sources2.0.2 → 2.0.3
- SKILL.md and
references/current-sources.mdare router/reference-level; their edits do not trigger bundle bumps. - No catalog schema change.
2.0.4 - 2026-05-15
Round 4 re-score follow-up (novice onboarding)
Round 4 re-scored the four Round 3 angles. Dev inner-loop (8/10), Testing
strategy (8/10), and Discoverability (9/10) all hit the threshold. Novice
onboarding came back at 7/10 with three concrete must-fixes; this version
closes them. No file overlap with any other pack; only SKILL.md and
bundles/examples/guide.md touched.
Changed
- SKILL.md: Added a "New to Drasi?" pointer line near the top so a
first-time reader sees the 90-minute starter signpost before the
production-oriented sections. Moved
## 90-minute starter pathfrom after the Day-0 workflow to immediately after## Prerequisites by runtime(still before## Non-negotiable rules), so a novice reading top-to-bottom hits the on-ramp before twelve non-negotiable rules and twelve Day-0 steps. Added a one-line "if you just want to see it run, pindrasi-lib = "0.3.8"" escape hatch to the drasi-lib starter so a novice can defer the AI-context-vs-crates.io version-conflict decision until after the first green smoke test. - bundles/examples/guide.md: 5-minute Hello Drasi now resolves the
digest inline (no forward jump to Step 0 of the stitched example):
added a
docker pull+docker inspect --formattwo-liner that pins$DIGESTand reuses it in the same shell. Called out that the jq-based form in Step 0 of the stitched example is functionally equivalent and that jq is not required for the Hello example, so a novice on a fresh box is not blocked by a missing tool.
Versions
bundles/examples/guide.mdcontent changed;examplesbundle bumped from2.0.3to 2.0.4 inbundles/catalog.yaml.- SKILL.md is router-level (no bundle version), so its edits do not trigger any other bundle bump.
- No catalog schema change.
2.0.3 - 2026-05-15
Round 3 review and fix loop
Four parallel reviewers (novice onboarding, developer inner-loop, testing strategy, keyword discoverability) and four parallel fix packs with strict file isolation. No file touched by more than one pack.
Changed
- SKILL.md: Frontmatter
description:rewritten to lead with user-intent keywords (real-time queries, live data updates, change detection, reactive events, data triggers, continuous-query pipelines) and shortened so the router triggers reliably. Added## 90-minute starter pathsection with runtime-specific starter sequences (Drasi Server local, Drasi for Kubernetes, drasi-lib) so a novice can reach a working pipeline before hitting the full Day-0 workflow. - bundles/catalog.yaml: Extended every bundle's
purpose:with user-intent keywords (e.g. "real-time", "live", "reactive" for continuous-queries; "incident response", "RTO RPO" for recovery). Added a siblingkeywords:list of 3–6 query phrases per bundle to improve agent routing. Top-levelversion: 2unchanged (additive field).
Added
- bundles/examples/guide.md: New
## 5-minute Hello Drasi (Drasi Server)section - shortest possible pipeline (one mock source, one Cypher query, one log reaction, onecurlverification). New "Step 0: resolve a digest" block in the stitched example showing the resolution command and an illustrative sample-digest output line so a literal-copy novice does not ship a placeholder string. - bundles/developer-experience/guide.md: Concrete
.devcontainer/starter skeleton (devcontainer.jsonandDockerfilewith pinned Ubuntu/Rust/Node versions and docker-in-docker + kubectl-helm-minikube features). VS Code action → CLI/REST mapping table (Apply / Watch / Debug / Delete / View status). Inner-loop latency targets table (edit-query / new-source / reaction-replace targets framed as team goals, not Drasi SLAs). Fresh-machine validation 6-step procedure tied tobundles/synthetic-user-testing/guide.md. - bundles/validation/guide.md:
## Unit-test layer (per artefact)covering ContinuousQuery offline replay, Reaction request-shape /HMAC/idempotency mocking, drasi-libcargo test, and the explicit non-coverage of per-Source CDC adapters (integration-only). - bundles/delivery/guide.md:
## Release gate - SLO and load-test wiringmapping required PR-time evidence to source bundles (observability SLOs, scaling load-test record, acceptance-evidence template). States the version-compatibility CI gate is necessary but not sufficient for production-bound PRs. - bundles/observability/guide.md: Short paragraph linking SLO baselines back to the delivery release gate.
- bundles/operations/guide.md: Added "Deployed but nothing happens (apply succeeded, no events, no logs)" row to the failure-mode taxonomy with first action and source-name case-sensitivity hint. Added a one-line cross-reference to MCP failure handling in the reactions bundle.
- references/current-sources.md: Developer-experience section
extended with notes that the skill now defines local inner-loop
latency targets and a fresh-machine validation procedure.
Checked:date unchanged.
Versions
- Bundles bumped from 2.0.0/2.0.1/2.0.2 to 2.0.3 where their guide content changed: examples, developer-experience, validation, delivery, observability, operations.
- catalog metadata-only edits (purpose / keywords for other bundles) did not trigger version bumps.
- No catalog schema change.
2.0.2 - 2026-05-15
Round 2 review and fix loop
Concurrent fix packs covering security, agent integration, reactions, operations, recovery, scaling-and-capacity, sources, delivery, currency, examples, and templates. No file overlap between packs.
Added
- bundles/security/guide.md: STRIDE threat model with explicit trust boundaries, egress controls, secret-rotation runbook, audit-log schema, multi-tenancy stance, and webhook HMAC + mTLS + allowlist requirement for cross-trust-boundary reactions.
- bundles/delivery/guide.md: Shadow rollout pattern, Drasi version-
compatibility CI gate (pinned CLI, apiVersion,
drasi-lib, MCP spec, image digest), and release-notes subscription discipline (drasi-platform, drasi-server, drasi-lib, drasi-context.yaml). - bundles/reactions/guide.md: Per-reaction reliability defaults table (timeouts, retries, idempotency, DLQ) and MCP failure-handling expectations.
- bundles/operations/guide.md: Failure-mode taxonomy plus three numbered playbooks - no-reaction-firing, 401/403 from upstream, and OOM triage - and an identity-token expiry runbook.
- bundles/recovery/guide.md: RTO/RPO table per runtime form, graceful- degradation flow, upgrade-failure rollback ladder, and restart-semantics table covering Drasi Server, Drasi for Kubernetes, and drasi-lib.
- bundles/scaling-and-capacity/guide.md: Backpressure propagation chain (source -> query -> reaction -> downstream), PDB defaults, and partition behaviour for partitioned sources and reactions.
- bundles/sources/guide.md: apiVersion migration playbook for pre-1.0 platform releases.
- bundles/currency-and-ai-context/guide.md: Pointers to the reusable currency-check, version-pinning, and upgrade-evidence templates so currency evidence has a durable home.
- templates/drasi-threat-model.md: STRIDE threat model artifact.
- templates/drasi-version-pinning.md: Durable
versions.mdshape covering image digest, platform release, CLI,drasi-lib, MCP spec, and per-provider pins, plus last-checked date and refresh triggers. - templates/drasi-upgrade-evidence.md: Per-upgrade evidence record covering scope, apiVersion diff, lifecycle diff, pre/post-upgrade checks, execution log, and rollback procedure.
Changed
- SKILL.md: Corrected the Drasi Server prerequisite verify command -
replaced
docker compose up -d(no compose file is shipped) with a baredocker runagainst the digest-pinned image, matching the stitched example inbundles/examples/guide.md. Added a versions-manifest non-negotiable rule and extended the evidence checklist with architecture-decision, risk- register, and threat-model template entries (fixing the orphan templates that previously had no inbound link). - bundles/examples/guide.md: Stitched Drasi Server example now uses a
<resolve-current-digest>placeholder consistent with SKILL.md. Do not use the floatinglatesttag in production - the bundle now shows how to resolve it to an immutable digest viadocker pull+docker inspect | jqand capture the result inversions.md.
Corrected
- CHANGELOG.md: 2.0.0 prior-baseline entry referenced "18 bundles"; the router lists 17. Corrected.
Versions
- Touched bundles bump from
2.0.1to2.0.2inbundles/catalog.yaml(handled by the templates/catalog fix pack). - No schema (catalog
version: 2) change.
2.0.1 - 2026-05-15
Round 1 review and fix loop
Four parallel reviewers and four parallel fix packs (no file overlap) were used. Reviewer angles: content accuracy, builder's-eye end-to-end, token efficiency, production deployment readiness.
Changed
- SKILL.md, references/current-sources.md: Corrected the Drasi Server release
claim. Previous text implied a tagged release; upstream
drasi-project/drasi-serverhas no published GitHub releases. Distribution is container-image only (ghcr.io/drasi-project/drasi-server), and production must resolve:latestto an immutable@sha256:digest before pinning. - SKILL.md: Added a
Prerequisites by runtimesection with required tooling, pinning guidance, and a smoke-check command per runtime form so a reader can reach Day-0 without external lookup.
Added
- bundles/examples/guide.md: Stitched, end-to-end minimal example for Drasi Server (mock source, Cypher ContinuousQuery, log reaction, REST verification). Closes the largest builder-experience gap identified in Round 1.
- bundles/security/guide.md: Audit-grade verification commands (TLS check,
cosign verify,syftSBOM, image digest pinning) and a data classification matrix with redaction/log-leak detection patterns. - bundles/sources/guide.md: PostgreSQL replication-slot operational runbook
with
pg_replication_slotsquery, alert thresholds, and equivalent freshness/lag checks for SQL Server CDC, Dataverse, and Kubernetes sources. - bundles/recovery/guide.md: "Identifying Drasi-owned state before destructive recovery" with ownership queries for Postgres, Kubernetes, and SQL Server so operators do not delete shared infrastructure.
- bundles/observability/guide.md: Drasi-specific SLO baselines (p50/p95/p99 latency targets, reaction success rate, source lag thresholds) tied to concrete alert conditions.
- bundles/scaling-and-capacity/guide.md: Autoscaling trigger matrix (HPA vs KEDA per component) with the right signal for each component class.
- bundles/validation/guide.md: Per-provider test-data preparation patterns (PostgreSQL, SQL Server, Kubernetes, Dataverse) with concrete commands so validation does not need to be invented per project.
- bundles/operations/guide.md: Definition of "stale" for sources, queries, and reactions plus the canonical procedure for proving event flow end-to-end.
- bundles/reactions/guide.md: Per-reaction validation patterns table for Debug, HTTP, gRPC, SSE, Event Grid, SignalR, and MCP reactions.
- bundles/continuous-queries/guide.md: Join cardinality guidance with a worked result-contract example showing fan-out, deduplication, and contract shape.
- bundles/azure-hosting/guide.md:
azdtemplate starter for Drasi Server on Azure Container Apps (azure.yaml, Bicep layout, identity wiring, ingress posture). - bundles/agent-integration/guide.md: MCP transport compatibility note pinning Streamable HTTP (spec 2025-03-26) with SSE fallback against the current Drasi MCP Reaction docs.
Versions
- All touched bundles bumped from
2.0.0to2.0.1inbundles/catalog.yaml. - No schema (catalog
version: 2) change.
2.0.0 - Prior baseline
Bundle-first skill package with router SKILL.md, 17 bundles, currency
references, templates, and validator. Pre-dates this changelog.
2.1.9 - 2026-08-25
PATCH. Full improve-skill rerun (2026-08-25-full, improve-skill v4.8.0). Fixed Rule-23 metadata defect: frontmatter last_verified held an audit-narrative parenthetical instead of a bare date; reduced to ISO date (narrative lives in CHANGELOG). Fresh probes: drasi-project org sweep (20 repos; core pushed today), drasi-core commits since prior audit = two internal perf/fix PRs (#773 plugin-build batching, #768 RocksDB memory-budget logging) with no user-facing surface change; both cited drasi.io reference URLs resolve 200.