All skills

USE FOR: Drasi continuous-query solutions - real-time queries, change detection, reactive events, data-trigger pipelines on Drasi Server, Drasi for Kubernetes, or drasi-lib. Router: load bundle guides as needed. DO NOT USE for non-Drasi messaging (event-driven-messaging) or pure AKS/ACA hosting (aks-cluster-architecture, azure-container-apps).

Use this Skill: https://skilld.dev/gh/lukemurraynz/hve-agent-skills/drasi

This session only. Nothing lands on disk.

CHANGELOG.md

≈16k tokens on demand. Your agent reads this file only when SKILL.md points to it.

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 the drasi.* reference list — drasi.stdevp (scalar, population std dev), drasi.last (aggregating AggregatingLast; pairs with drasi.slidingWindow), and the retainHistory context mutator; all present in BOTH Cypher and GQL registries on main but 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-mapping op, JSONPath selector exposing $selected, label, id, elementType node/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 shared drasi_ 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) and drasi-python (PyO3 bindings); flags the crates.io-vs-PyPI drasi-lib name 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.md verification snapshot: new org-structure bullet — Rust development consolidated in the separate drasi-project/drasi-core monorepo with per-crate releases (state stores, indexes, secret stores, identity providers); breaking changes land there without platform release notes; check drasi-core merged PRs newer than your pin before embedded work.
  • bundles/reactions/guide.md: per-query Handlebars template config shape for EventGrid/EventBridge (added/updated/deleted blocks, 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-level bootstrapProviders: 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 with enable_archive defaulting 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 is 2025-11-25 / "two revisions behind" after Round 12 updated the snapshot and bundles/agent-integration/guide.md to 2026-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 applying apiVersion: drasi.io/v1alpha1 kind: Source metadata.name: ... — the exact shape Round 12 purged. Rewritten to the canonical apiVersion: v1 + top-level name: shape applied with drasi 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 in SKILL.md and references/current-sources.md.
  • GHCR evidence refresh (Medium): the reaction-post-dapr-pubsub tag gap (stops at 0.9.2, no 0.10.0) was live re-verified via token-authenticated GHCR tag list this run — no longer carried evidence. SKILL.md and bundles/reactions/guide.md updated (the latter also replaced a dead drasi.io/docs reference 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 the plugins.lock lockfile (commit for reproducible deployments).
Currency (re-confirmed 2026-08-16)
  • drasi-platform 0.10.0 (latest, Pre-release); drasi-server v0.2.1 latest stable; drasi-lib 0.8.9 crates.io max stable; drasi-context.yaml 0.7.0 unchanged; MCP Reaction pin 2025-03-26 unchanged.
Honest unknowns (unchanged)
  • EventHub consumerGroup property ([VERIFY] — drasi describe sourceprovider EventHub), drasi list -o yaml ([VERIFY] — not in current CLI reference), CLI-from-main latest-tag behavior (carried 2026-06-27 production evidence).
Changed
  • Bundle versions: sources 2.0.6 → 2.0.7, reactions 2.0.5 → 2.0.6, drasi-server 1.0.2 → 1.0.3. Skill package 2.1.4 → 2.1.5.
  • metadata.last_verified refreshed 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)
  • bootstrapWindow unit corrected (Critical): the EventHub Source bootstrapWindow is an integer number of minutes of backfill, not seconds (EventHub how-to, checked 2026-08-16). Fixed in SKILL.md snapshot and bundles/sources/guide.md (checklist + example — the old bootstrapWindow: 300 example read as 300 seconds; it is 5 hours, the example now uses 5 with an explicit minutes comment).
  • SKILL.md resource shapes corrected (Critical): all Drasi for Kubernetes examples now use the canonical shape from current docs — apiVersion: v1, top-level name:, spec.kind: with PascalCase provider kinds, applied via drasi apply. Replaced: apiVersion: drasi.io/v1alpha1 + metadata.name + spec.provider: AzureEventHub (multi-region section), the ConfigMap-wrapped type: eventhub/configuration: stubs (first multi-region section), the invented hub: property (docs use eventHubs: list), and the singular source: ContinuousQuery field (canonical K8s form is spec.sources.subscriptions[].id per live drasi describe output 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 by drasi apply, not kubectl); namespace literals drasi-platform → <drasi-namespace> (CLI default is drasi-system).
  • Invalid registry snippet removed: the multi-region section's az acr login --name ghcr check cannot work (ghcr.io is GitHub's registry, not an Azure ACR instance) and its manifest URL omitted the drasi-project/ path. Both duplicate verification subsections now point to the token-authenticated manifest check in ## Capability and Runtime Verification Gate step 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 in SKILL.md and bundles/agent-integration/guide.md.
  • rg-state → state.mongodb workaround version-scoped to 0.9.x (the 0.10.x platform is Redis-only with no drasi-mongo service) with a [VERIFY] re-check note.
  • apiVersion migration playbook: current apiVersion restated as v1 (was illustrated as drasi.io/v1); drasi list -o yaml flagged [VERIFY] (flag not in current CLI docs; drasi describe is the documented fallback).
  • bundles/sources/guide.md EventHub YAML example: added the missing spec.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 plain drasi 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 a drasi-sse-cli pointer (companion SSE stream binary shipped in every drasi-server release).
  • bundles/operations/guide.md: drasi ingress init guidance (Contour default install; --use-existing integration 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-preview ahead) — GitHub releases.
  • drasi-lib 0.8.9 = crates.io max_stable_version (2026-07-08; AI-context baseline remains 0.8.6).
  • drasi-context.yaml still 0.7.0 (2026-06-16).
  • Drasi MCP Reaction still pins MCP spec 2025-03-26.
Honest unknowns ([VERIFY] markers added in-body)
  • EventHub consumerGroup property: absent from the current docs property table and the source-provider schema page 404s — verify via drasi describe sourceprovider EventHub on 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.md multi-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: sources 2.0.5 → 2.0.6, operations 2.0.4 → 2.0.5, agent-integration 2.0.4 → 2.0.5, drasi-server 1.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.6 to 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. Updated references/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_verified bumped 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() and drasi.minutes(), which are not real Drasi functions. Replaced with the canonical drasi.trueFor(expr, duration({...})) pattern (from the official reference) and a drasi.changeDateTime() / datetime() - duration({...}) timestamp comparison. Removed the dangling secondsSinceHeartbeat field 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 on drasi.trueUntil and drasi.slidingWindow (both confirmed in the reference), added the two previously-missing documented functions drasi.listMin(list) and drasi.listMax(list), added an explicit "these drasi.* 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-queries bundle bumped 2.0.6 → 2.0.7 in bundles/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.0 still 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-core models crate now 0.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-preview 2026-06-29, 0.2.3-preview 2026-07-13). The context file (0.7.0) still records 0.1.6 and 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.md routing referenced the bundle, but bundle.yaml did not exist — validator error).
  • bundles/drasi-server/guide.md: added a ## Validation section (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-slop latest-usage check recognizes the "do not use / floating latest tag" 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-pinned docker run, and uses docker compose only for the tutorial database. Replaced with the docker run @sha256:<digest> + binary form, matching SKILL.md "Prerequisites by runtime". Verified against drasi.io getting-started (2026-07-21).
  • OpenAPI path correction: SKILL.md (Anti-Hallucination Rule + safe-degraded-output) and bundles/drasi-server/guide.md used 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-server bundle to the Bundles index (it was in the catalog and SKILL.md routing but missing from the README list).
  • SKILL.md: last_verified and 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: Checked date → 2026-07-21; drasi-server, drasi-lib /drasi-core, and the MQTT/Shell mentorship-not-shipped note updated.
Versions
  • drasi-server bundle bumped 1.0.0 → 1.0.1 in bundles/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 apply creates the source SA, but the FIC must be created AFTER apply. Without it, source pods fail with AADSTS700213: No matching federated identity record found. Same applies to reaction SA (default in drasi-system namespace).
    • Provider registration gap: drasi init does NOT auto-register source/reaction providers. Must apply default-source-providers.yaml and default-reaction-providers.yaml from the CLI installer resources before drasi apply of any Source/Reaction.
    • CLI main branch defaults to the floating latest tag from ghcr.io/project-drasi/ (private, 403) — do not use it. Always pass --version 0.10.0 to pull from the public ghcr.io/drasi-project/ registry.

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_verified refreshed 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 to 0.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.8 vs 0.8.4) and aligned starter-path guidance to the current AI-context stable line.
  • references/current-sources.md:
    • Checked date 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.8 to 0.7.0 / 0.8.6 and refreshed drasi-lib conflict framing.
  • bundles/currency-and-ai-context/guide.md:
    • Rewrote the drasi-lib version-conflict section to use 0.8.6 as the current AI-context baseline and retained explicit deliberate pinning guidance.
  • bundles/reactions/guide.md:
    • Corrected Workload Identity guidance from default service account to per-reaction service account reaction.<reaction-name>.
    • Updated federated credential subject guidance and command examples accordingly.
  • 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.
  • 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.
  • templates/drasi-version-pinning.md:
    • Updated drasi-lib example baseline from 0.3.8 to 0.8.6.
  • README.md:
    • Added missing custom-plugins bundle to the bundle index list.
Versions
  • Bundles bumped in bundles/catalog.yaml:
    • sources 2.0.4 → 2.0.5
    • reactions 2.0.4 → 2.0.5
    • security 2.0.2 → 2.0.3
    • currency-and-ai-context 2.0.3 → 2.0.4
    • drasi-lib 2.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 reference section (~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-queries bumped 2.0.5 -> 2.0.6 with extended purpose.
Versions
  • continuous-queries bundle 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 reaction section (~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 patterns section (~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.
  • bundles/sources/guide.md: New ## Event Hub source checklist section (~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 Source lifecycle matrix row expanded with dedicated consumer group guidance and event processing notes.
  • bundles/catalog.yaml: reactions bumped 2.0.3 -> 2.0.4 (SyncVectorStore + output format patterns + expanded selection/validation tables); sources bumped 2.0.3 -> 2.0.4 (Event Hub source section).
Versions
  • reactions bundle bumped 2.0.3 -> 2.0.4.
  • sources bundle 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-queries bumped 2.0.4 -> 2.0.5.
Versions
  • continuous-queries bundle 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-python section (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 use DrasiLibBuilder, Query, PyApplicationSource, and PyApplicationReaction in-process without Drasi Server or Drasi for Kubernetes.
  • bundles/continuous-queries/guide.md: New ## Non-events / absence-of-change pattern section (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 the learning repo's absence-of-change tutorial.
  • bundles/reactions/guide.md: New ### SignalR consumer reference implementation subsection documenting the grafana-signalr plugin's operation type conventions (i/u/d/x vs MCP's added/updated/deleted), snapshot loading pattern, and error handling patterns.
  • bundles/agent-integration/guide.md: Cross-reference to apps/rag-chat-app in the learning repo 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, and design-documents.
Changed
  • bundles/catalog.yaml: Version bumps -- drasi-lib 2.0.1 -> 2.0.2 (Python alternative section), continuous-queries 2.0.3 -> 2.0.4 (absence-of-change pattern), reactions 2.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 architecture section (approx. 345 lines) covering:
    • Component architecture diagram (MCP Transport → Session → Router → Handlers)
    • Canonical Drasi MCP notification contract (the operation and data fields that are Drasi-specific extensions to the standard ResourceUpdatedNotification)
    • 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-integration bundle bumped 2.0.3 → 2.0.4; purpose: extended to mention consumer-side architecture; added capabilities consumer-architecture, notification-handlers, subscription-lifecycle; added keywords consumer architecture, notification handler, subscription lifecycle, mcp client drasi, real-time agent updates.
  • SKILL.md: Bundle routing table entry for agent-integration expanded to mention consumer-side reference architecture and notification handler patterns.
Versions
  • agent-integration bundle bumped 2.0.3 → 2.0.4 in bundles/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-lib 0.8.0 -> 0.8.4, and noted drasi-core 0.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-flight drasi-core rewrite) is unchanged. Confirmed Drasi remains a CNCF Sandbox project. Bumped last_verified to 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.yaml with 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::Source runtime trait + SourcePluginDescriptor factory trait; same split for Reactions via Reaction + ReactionPluginDescriptor); the SourceChange/Element/ElementMetadata/ElementReference types from drasi-query-ast with a worked SourceChange::Insert example; the full SourcePluginDescriptor impl and ConfigValue<T> DTO contract with DtoMapper; the symmetric Reaction runtime trait; a 6-row delivery-semantics table (at-least-once, per-query ordering, cross-query ordering, backpressure modes, DLQ, replay); packaging per runtime (drasi-lib static + Drasi Server cdylib via export_plugin! + Drasi for Kubernetes); the 6-step cdylib loader lifecycle (dlopen → metadata → SDK+triple validation → init → vtable proxy); the cross-cdylib Box ownership 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 full AggregatingFunction trait + 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 plugin heading satisfying the validator.
  • bundles/continuous-queries/guide.md: new ## Cypher and GQL feature support section with the parseable AST surface (11 nodes from drasi-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 including elementId (Cypher) vs element_id (GQL), the 8-row aggregating-functions table (sum, avg, count, min, max, collect, linearGradient, AggregatingLast) with accumulator types, the drasi.* namespace table (8 temporal functions), GQL mode differences (separate functions-gql registry - issue #217), and a known-unsupported table that flags DISTINCT/ORDER BY/LIMIT as hedged unsupported and notes third-party "unsupported features" lists contradict the repo on collect().
  • references/current-sources.md: new ## Custom plugins and engine internals section naming the drasi-plugin-sdk 0.4.2 surface, the drasi-core layout, the drasi-server/docs/plugin-architecture.md canonical loader description, the drasi.* 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 URLs section with the 8 source URLs.
Changed
  • SKILL.md: bundle routing table extended with a custom-plugins row pointing at the new bundle for custom Source / Reaction / function authoring queries.
  • bundles/catalog.yaml: new custom-plugins entry at version 2.0.0; continuous-queries bumped 2.0.2 → 2.0.3 and its purpose: line extended to mention the parseable Cypher/GQL subset, the eight built-in aggregators, and the drasi.* temporal namespace.
Versions
  • bundles/catalog.yaml adds custom-plugins 2.0.0 (new).
  • bundles/catalog.yaml bumps continuous-queries 2.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.md Round 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 projects section 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 (one versions.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 compatibility section with a coherence-anchors table (drasi-core version line / commit SHA, cross-runtime apiVersion, MCP spec coherence, single versions.md location) 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 portability section 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 - W3C traceparent propagation 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 sequencing section. 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 Server section. Three-row plan-choice table (Consumption, Dedicated, Workload Profiles), non-negotiable production settings (minReplicas: 1, maxReplicas: 1 until 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-15 after Reviewer U's currency re-check. No factual deltas vs Round 6 - Releases page still empty, drasi-platform still 0.10.0, drasi-lib still three-way (0.3.8 / 0.4.2 / Replayable Sources), MCP upstream still 2025-11-25.
  • references/current-sources.md: Checked: 2026-05-11 → Checked: 2026-05-15.
Versions
  • Touched bundles bumped in bundles/catalog.yaml:
    • azure-hosting 2.0.1 → 2.0.2
    • continuous-queries 2.0.1 → 2.0.2
    • observability 2.0.3 → 2.0.4
    • recovery 2.0.2 → 2.0.3
    • scaling-and-capacity 2.0.2 → 2.0.3
  • SKILL.md, references/current-sources.md, and templates/drasi-version-pinning.md are 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). A 0.1.0 Docker 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) vs 0.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 to bundles/drasi-lib/guide.md.
    • New snapshot bullet: Drasi MCP Reaction pins MCP spec 2025-03-26 while MCP upstream is now at 2025-11-25 (Latest Stable). Drasi is two MCP spec revisions behind upstream - re-check before client implementation. Cross-reference to bundles/agent-integration/ guide.md.
  • 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.0 docker-compose default tag (Validator S).
    • Added one-line clarification that the drasi-lib crate is published from github.com/drasi-project/drasi-core; there is no standalone drasi-lib GitHub 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.
  • 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 /health for liveness; /api/v1/health does 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 shipped 2025-06-18 (Stable; OAuth Resource Servers, RFC 8707 Resource Indicators) and 2025-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 repository subsection clarifying the crate ships from drasi-project/drasi-core (no standalone repo). Added new ## Upcoming API break: Replayable Sources and Resumable Reactions section naming the four trait-surface changes a reader should look for in Cargo.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.md with rationale" guidance and a one-line note that versions.md should 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_level callout (slot creation on wal_level= replica auto-promotes effective level to logical cluster-wide → WAL volume hits every database) and an explicit "WAL accumulation" outage class with pg_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 Box ownership 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.md and bundles/sources/guide.md already 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-drasi Python SDK and Drasi-Dapr Bridge Reaction are proposed for summer 2026 but unshipped. Will be reconsidered when a release lands.
Versions
  • Touched bundles bumped in bundles/catalog.yaml:
    • agent-integration 2.0.2 → 2.0.3
    • developer-experience 2.0.3 → 2.0.4
    • drasi-lib 2.0.0 → 2.0.1
    • currency-and-ai-context 2.0.2 → 2.0.3
    • operations 2.0.3 → 2.0.4
    • sources 2.0.2 → 2.0.3
  • SKILL.md and references/current-sources.md are 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 path from 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, pin drasi-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 --format two-liner that pins $DIGEST and 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.md content changed; examples bundle bumped from 2.0.3 to 2.0.4 in bundles/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 path section 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 sibling keywords: list of 3–6 query phrases per bundle to improve agent routing. Top-level version: 2 unchanged (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, one curl verification). 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.json and Dockerfile with 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 to bundles/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-lib cargo test, and the explicit non-coverage of per-Source CDC adapters (integration-only).
  • bundles/delivery/guide.md: ## Release gate - SLO and load-test wiring mapping 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.md shape 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 bare docker run against the digest-pinned image, matching the stitched example in bundles/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 floating latest tag in production - the bundle now shows how to resolve it to an immutable digest via docker pull + docker inspect | jq and capture the result in versions.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.1 to 2.0.2 in bundles/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-server has no published GitHub releases. Distribution is container-image only (ghcr.io/drasi-project/drasi-server), and production must resolve :latest to an immutable @sha256: digest before pinning.
  • SKILL.md: Added a Prerequisites by runtime section 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, syft SBOM, 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_slots query, 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: azd template 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.0 to 2.0.1 in bundles/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.

Source: SKILL.md on GitHub

1 warning8d3 checks · Risk SAFE
  • Gen Agent Trust Hub8d

    The Drasi skill package is a highly structured and security-conscious set of instructions for managing data change detection pipelines. It includes extensive documentation on threat modeling, workload identity setup on AKS, and specific guidance for preventing prompt injection when source data is fed into AI agents. All documented commands and scripts are legitimate operational tools for the Drasi platform, and no malicious patterns such as obfuscation, persistence, or data exfiltration were found.

  • Socket8d

    No alerts

  • Snyk8d

    Risk: MEDIUM · 1 issue

Signed by skilld at 2cc2455. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub last month.

Steadyupdated last month
metadata
{
  "last_verified": "2026-08-25"
}

README badge

README badge for lukemurraynz/hve-agent-skills/drasi