docs: v0.0.71 release notes and documentation updates - #20
Conversation
…etInstance task Release note (blog/2026-07-21-v0-0-71.md) for runtime 0.0.71 / schema 0.0.50, plus the documentation for everything the release ships: - New pages: GetInstance task (type 19) reference and the Event-Driven Workflows how-to guide (IEventMapping, correlation, Dapr Subscriptions, helm pubsub/subscription values), both registered in sidebars.ts. - Workflow component: event field on workflow/transition/sharedTransition, Event Transition section (triggerType 3), interaction response object for long-poll clients (terminateLongPoll / fallbackTimeoutSeconds / ack). - Interfaces: IEventMapping contract with EventMappingResult reference. - Instance filtering: full Fluent InstanceQuery Builder section (operators, composition, type semantics, GroupBy, guardrails, consumption points). - Custom functions: read-through cache block (keyExpression, TTL, generation-namespace invalidation). - Built-in functions: master schema function and master/interaction fields in the State function response. - Schema component: Data Context Vocabulary (x-context-source / x-context-target) from the new data-vocab. - REST API / async-sync: form-urlencoded bodies, 202 Accepted for async start/transition, content-type response header unblocked. - Tasks index: type enum extended to 19; get-instances gains SetFilterSpec. - Branding: portal favicon replaced with the amorphie icon. English mirrors updated with table edits and summary sections; full EN translations of the new long-form sections are marked as pending. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Reviewer's GuideDocumentation updates for runtime v0.0.71 / schema 0.0.50: new event-driven workflows guide and IEventMapping interface, fluent InstanceQuery builder docs and GetInstances task integration, new GetInstance task (type 19), function-level response caching, data context vocabulary ( Sequence diagram for event-driven transition with IEventMapping and InstanceQuerysequenceDiagram
actor Producer
participant Dapr
participant Orchestrator as OrchestrationAPI
participant Mapping as IEventMapping
participant Store as InstanceStore
participant Workflow
Producer->>Dapr: PublishEvent(topic, payload)
Dapr->>Orchestrator: POST /api/v1/{domain}/workflows/{workflow}/instances/events?action=transition&transitionKey
Orchestrator->>Mapping: Handler(ScriptContext context)
Mapping-->>Orchestrator: EventMappingResult { Selector or InstanceKey, Body }
alt InstanceKey set
Orchestrator->>Store: FindActiveInstanceByKey(InstanceKey)
Store-->>Orchestrator: Instance
else Selector used
Orchestrator->>Store: ExecuteSelector(InstanceQuery.Create(...) .First()/Last())
Store-->>Orchestrator: Single matched Instance
end
Orchestrator->>Workflow: RunTransition(transitionKey, Instance, Body)
Workflow-->>Orchestrator: TransitionOutput
Orchestrator-->>Dapr: 200 OK
Dapr-->>Producer: Ack (no redelivery on no-match)
Sequence diagram for function response cache using Dapr state storesequenceDiagram
actor Client
participant FuncAPI as FunctionAPI
participant Cache as DaprStateStore
participant TaskExec as FunctionTasks
Client->>FuncAPI: POST /{domain}/functions/{function}
alt attributes.cache configured
FuncAPI->>FuncAPI: Evaluate keyExpression / key
FuncAPI->>Cache: GetState(storeName, cacheKey)
Cache-->>FuncAPI: cachedResponse or null
alt cachedResponse hit
FuncAPI-->>Client: cachedResponse
else cache miss or bypassOnCacheError
FuncAPI->>TaskExec: Execute onExecutionTasks / task
TaskExec-->>FuncAPI: freshResponse
FuncAPI->>Cache: SetState(storeName, cacheKey, freshResponse, ttlInSeconds)
FuncAPI-->>Client: freshResponse
end
else no cache block
FuncAPI->>TaskExec: Execute onExecutionTasks / task
TaskExec-->>FuncAPI: response
FuncAPI-->>Client: response
end
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
📝 WalkthroughWalkthroughChangesRuntime v0.0.71 documentation
Estimated code review effort: 3 (Moderate) | ~30 minutes Possibly related issues
Possibly related PRs
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Hey - I've left some high level feedback:
- The Turkish REST API and async/sync guides document
application/x-www-form-urlencodedsupport and202 Acceptedsemantics, but the corresponding English REST/async docs don’t yet reflect these behavior changes; consider mirroring these notes for consistency across languages. - New event-related links (e.g. workflow
eventfield,triggerType: 3transitions, and the Event-Driven Workflows guide) are now referenced from multiple pages; it’s worth double-checking all anchor IDs and sidebar entries to ensure there are no broken or duplicated anchors in the generated site.
Prompt for AI Agents
Please address the comments from this code review:
## Overall Comments
- The Turkish REST API and async/sync guides document `application/x-www-form-urlencoded` support and `202 Accepted` semantics, but the corresponding English REST/async docs don’t yet reflect these behavior changes; consider mirroring these notes for consistency across languages.
- New event-related links (e.g. workflow `event` field, `triggerType: 3` transitions, and the Event-Driven Workflows guide) are now referenced from multiple pages; it’s worth double-checking all anchor IDs and sidebar entries to ensure there are no broken or duplicated anchors in the generated site.Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.
There was a problem hiding this comment.
Code Review
This pull request updates the documentation (both Turkish and English translations) for the v0.0.71 release of vNext, covering major new features such as event-driven workflows, the fluent InstanceQuery builder, the GetInstance task, function result caching, form-urlencoded request bodies, and the Data Context Vocabulary (data-vocab). The review feedback highlights several inconsistencies between the Turkish and English versions of the documentation (such as missing table entries for the event field, the SetFilterSpec method, and the x-context-* vocabulary extensions, as well as a missing Table of Contents heading for the Schema Function). Additionally, minor Turkish grammar and phrasing improvements were suggested for better readability.
Important
The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.
| - `labels` — multi-language labels | ||
|
|
||
| Optional fields include `schema`, `timeout`, `functions`, `extensions`, `sharedTransitions`, `errorBoundary`, `cancel`, `exit`, `updateData`, `queryRoles`, `scripts`, and `output` (sync response mapping — see [Output Mapping](#output-mapping)). | ||
| Optional fields include `schema`, `timeout`, `functions`, `extensions`, `sharedTransitions`, `errorBoundary`, `cancel`, `exit`, `updateData`, `queryRoles`, `scripts`, `output` (sync response mapping — see [Output Mapping](#output-mapping)), and `event` (workflow-level event definition — see [Event-Driven Transitions](#event-event-driven-workflows)). |
There was a problem hiding this comment.
İngilizce dokümantasyonda (i18n/en/.../workflow.md), event alanı isteğe bağlı alanlar listesine eklenmiş olsa da, Türkçe dokümantasyondaki (docs/components/workflow.md) gibi attributes, transition ve shared transition tablolarına event alanının eklenmesi unutulmuş. İngilizce dokümantasyonun Türkçe versiyonuyla tutarlı olması için bu tabloların da güncellenmesi gerekmektedir.
|
|
||
| ### Fluent Filtering: SetFilterSpec | ||
|
|
||
| For new code, prefer the fluent `InstanceQuery` builder over hand-written filter/sort JSON, and hand the typed spec to the task in the input mapping. Same-domain queries run **in-process** (no HTTP/Dapr hop); cross-domain queries route automatically: |
There was a problem hiding this comment.
Türkçe dokümantasyonda (docs/components/tasks/get-instances.md) Property Erişimi tablosuna SetFilterSpec metodu eklenmişken, İngilizce dokümantasyondaki (i18n/en/.../get-instances.md) ilgili tabloya bu metodun eklenmesi unutulmuş. Dokümantasyon tutarlılığı için İngilizce versiyondaki tabloya da SetFilterSpec satırının eklenmesi gerekmektedir.
| |---|---| | ||
| | `Eq(30)`, `In(1, 2, 3)` — gerçek sayı/tarih | Tipli — `Eq(30)` saklanan `30.0` ile eşleşir | | ||
| | `Eq("123")`, `Eq("2026-04-27")` — string (sayı/tarih görünümlü olsa da) | **Metin** — ID ve kodlar için güvenli | | ||
| | `Gt("2026-07-01T00:00:00Z")`, `Between("2026-01-01", "2026-12-31")` | Aralık sınırları problanır: tarih benzeri string'ler timestamp, sayısal string'ler sayı olarak karşılaştırılır | |
|
|
||
| ## IEventMapping | ||
|
|
||
| Harici bir pub/sub event'ini bir workflow instance'ına bağlayan mapping arabirimidir. Workflow seviyesi `attributes.event` (instance başlatma) ve `triggerType: 3` transition'larındaki `event` tanımı (transition tetikleme) bu arabirimi uygulayan bir betik referanslar. Bkz. [Event-Driven Workflow'lar](/docs/how-to/event-driven-workflows). |
| 5. [Authorization](#authorization) | ||
| 6. [Best Practices](#best-practices) | ||
| 7. [Related Documentation](#related-documentation) | ||
| 5. [Master Function](#master-function) |
There was a problem hiding this comment.
İngilizce dokümantasyondaki içindekiler (Table of Contents) listesinde Schema Function başlığı eksik kalmış. Türkçe versiyonda 5. [Schema Fonksiyonu] bulunurken, İngilizce versiyonda bu başlık listelenmemiş ve numaralandırma kaymış. Schema Function başlığının listeye eklenmesi ve numaralandırmanın düzeltilmesi gerekmektedir.
|
|
||
| For a read-only view (no input), the master schema can be supplied directly as the view's `dataSchema`; for input sections, a transition-specific schema should be used instead. | ||
|
|
||
| ### Data Context Vocabulary (data-vocab) |
There was a problem hiding this comment.
data-vocab başlığı ve açıklamaları eklenmiş ancak Türkçe dokümantasyondaki (docs/components/schema.md) gibi dosyanın alt kısımlarında yer alan x-* vocabulary uzantıları listesine x-context-source ve x-context-target alanlarının eklenmesi ve [Data Context Vocabulary](#data-context-vocabulary-data-vocab) bağlantısının verilmesi İngilizce versiyonda unutulmuş. İngilizce dokümantasyonun güncelliği için bu kısımların da güncellenmesi önerilir.
There was a problem hiding this comment.
Actionable comments posted: 8
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@blog/2026-07-21-v0-0-71.md`:
- Around line 1-7: Add the required id and sidebar_label frontmatter fields to
blog/2026-07-21-v0-0-71.md while preserving its existing release slug, title,
and other metadata. Also add id and sidebar_label to
docs/components/tasks/get-instance.md alongside its existing title, using values
consistent with each page’s documentation path and naming.
In `@docs/api-reference/rest-api.md`:
- Around line 158-160: Update the adjacent blockquotes in the documentation by
replacing the blank line between the two Not paragraphs with a standalone
blockquote marker, preserving both notes within one continuous blockquote and
satisfying markdownlint MD028.
In `@docs/components/functions/custom.md`:
- Around line 261-263: Update the fenced code block containing the Dynamic
Expresso expression near “Instance.Key” and “Instance.Version” to include an
appropriate language identifier, such as text, while preserving the block’s
contents.
- Around line 242-253: Add a dedicated enum table for the cache `consistency`
field in the custom component documentation, listing the allowed values
`Eventual` and `Strong` with their descriptions. Keep the existing cache fields
table focused on field metadata and follow the page’s established enum-table
format.
- Around line 218-240: Update the cache documentation in
docs/components/functions/custom.md (lines 218-240) and mirror the same guidance
in i18n/en/docusaurus-plugin-content-docs/current/components/functions/custom.md
(lines 204-220): explain that caller-, role-, or tenant-specific responses must
include those dimensions in the cache key, or explicitly prohibit caching
personalized responses, and ensure the example and warning communicate this
isolation requirement.
In `@docs/components/interfaces.md`:
- Around line 415-417: The ScriptContext documentation inconsistently uses
EventPayload and Body for the payload property. Verify the actual ScriptContext
definition, then use that property name consistently in the parameter table at
docs/components/interfaces.md:415-417 and the example at
docs/components/interfaces.md:434-436; if the canonical property is Body,
replace both EventPayload references with Body, otherwise update the class
definition and retain EventPayload.
In `@docs/how-to/event-driven-workflows.md`:
- Around line 164-185: Reconcile the Dapr Subscription manifest examples in the
local YAML blocks and the Helm example by either standardizing them on one
supported API version and field shape, or explicitly documenting that
dapr.io/v1alpha1 with spec.route and v2alpha1 with spec.routes.default are
intentional alternatives. Apply the same clarification or consistency update to
the related examples around the Helm configuration.
In
`@i18n/en/docusaurus-plugin-content-docs/current/components/tasks/get-instance.md`:
- Around line 1-6: Add the required id and sidebar_label fields to the
frontmatter of the Get Instance Task page, using the original Turkish id and
slug conventions and an English-translated sidebar_label consistent with the
page title. Preserve the existing title, description, and sidebar_position
fields.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: cc3480e7-4581-4d85-9527-539324a51709
⛔ Files ignored due to path filters (1)
static/img/favicon.icois excluded by!**/*.ico
📒 Files selected for processing (26)
blog/2026-07-21-v0-0-71.mddocs/api-reference/rest-api.mddocs/components/functions/built-in.mddocs/components/functions/custom.mddocs/components/interfaces.mddocs/components/schema.mddocs/components/tasks/get-instance.mddocs/components/tasks/get-instances.mddocs/components/tasks/index.mddocs/components/tasks/trigger.mddocs/components/workflow.mddocs/how-to/async-sync.mddocs/how-to/event-driven-workflows.mddocs/how-to/instance-filtering.mdi18n/en/docusaurus-plugin-content-docs/current/components/functions/built-in.mdi18n/en/docusaurus-plugin-content-docs/current/components/functions/custom.mdi18n/en/docusaurus-plugin-content-docs/current/components/interfaces.mdi18n/en/docusaurus-plugin-content-docs/current/components/schema.mdi18n/en/docusaurus-plugin-content-docs/current/components/tasks/get-instance.mdi18n/en/docusaurus-plugin-content-docs/current/components/tasks/get-instances.mdi18n/en/docusaurus-plugin-content-docs/current/components/tasks/index.mdi18n/en/docusaurus-plugin-content-docs/current/components/tasks/trigger.mdi18n/en/docusaurus-plugin-content-docs/current/components/workflow.mdi18n/en/docusaurus-plugin-content-docs/current/how-to/event-driven-workflows.mdi18n/en/docusaurus-plugin-content-docs/current/how-to/instance-filtering.mdsidebars.ts
| --- | ||
| slug: release-v0-0-71 | ||
| title: Release v0.0.71 | ||
| authors: [vnext-team] | ||
| tags: [release, duyuru, events, caching] | ||
| date: 2026-07-21 | ||
| --- |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Add required documentation frontmatter to both pages.
The repository requires id, title, and sidebar_label on documentation pages.
blog/2026-07-21-v0-0-71.md#L1-L7: addidandsidebar_labelwhile retaining the releaseslug.docs/components/tasks/get-instance.md#L1-L5: addidandsidebar_labelalongside the existingtitle.
📍 Affects 2 files
blog/2026-07-21-v0-0-71.md#L1-L7(this comment)docs/components/tasks/get-instance.md#L1-L5
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@blog/2026-07-21-v0-0-71.md` around lines 1 - 7, Add the required id and
sidebar_label frontmatter fields to blog/2026-07-21-v0-0-71.md while preserving
its existing release slug, title, and other metadata. Also add id and
sidebar_label to docs/components/tasks/get-instance.md alongside its existing
title, using values consistent with each page’s documentation path and naming.
Source: Coding guidelines
| > **Not:** Workflow tanımında [`output` mapping](/docs/components/workflow#output-mapping) varsa ve istek `sync=true` ise, yanıt standart `TransitionOutput` zarfı yerine doğrudan output script'in ürettiği gövde olur. | ||
|
|
||
| > **Not (Content-Type):** Function ve instance **output script'leri** artık yanıtın `content-type` header'ını da belirleyebilir (önceden bu header ayıklanıyordu). Script bir değer set etmezse varsayılan `application/json` kullanılır. Entegrasyon senaryolarında (örn. XML/text dönen legacy sözleşmeler) kullanışlıdır. |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Fix the blank line between adjacent blockquotes.
markdownlint reports MD028 at Line 159. Replace the empty line with a > marker so both notes remain part of the blockquote structure.
Proposed fix
> **Not:** Workflow tanımında [`output` mapping](/docs/components/workflow#output-mapping) varsa ve istek `sync=true` ise, yanıt standart `TransitionOutput` zarfı yerine doğrudan output script'in ürettiği gövde olur.
-
+>
> **Not (Content-Type):** Function ve instance **output script'leri** artık yanıtın `content-type` header'ını da belirleyebilir...📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
| > **Not:** Workflow tanımında [`output` mapping](/docs/components/workflow#output-mapping) varsa ve istek `sync=true` ise, yanıt standart `TransitionOutput` zarfı yerine doğrudan output script'in ürettiği gövde olur. | |
| > **Not (Content-Type):** Function ve instance **output script'leri** artık yanıtın `content-type` header'ını da belirleyebilir (önceden bu header ayıklanıyordu). Script bir değer set etmezse varsayılan `application/json` kullanılır. Entegrasyon senaryolarında (örn. XML/text dönen legacy sözleşmeler) kullanışlıdır. | |
| > **Not:** Workflow tanımında [`output` mapping](/docs/components/workflow#output-mapping) varsa ve istek `sync=true` ise, yanıt standart `TransitionOutput` zarfı yerine doğrudan output script'in ürettiği gövde olur. | |
| > | |
| > **Not (Content-Type):** Function ve instance **output script'leri** artık yanıtın `content-type` header'ını da belirleyebilir (önceden bu header ayıklanıyordu). Script bir değer set etmezse varsayılan `application/json` kullanılır. Entegrasyon senaryolarında (örn. XML/text dönen legacy sözleşmeler) kullanışlıdır. |
🧰 Tools
🪛 markdownlint-cli2 (0.23.0)
[warning] 159-159: Blank line inside blockquote
(MD028, no-blanks-blockquote)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/api-reference/rest-api.md` around lines 158 - 160, Update the adjacent
blockquotes in the documentation by replacing the blank line between the two Not
paragraphs with a standalone blockquote marker, preserving both notes within one
continuous blockquote and satisfying markdownlint MD028.
Source: Linters/SAST tools
| ## Fonksiyon Cache | ||
|
|
||
| Bir fonksiyon, isteğe bağlı **`attributes.cache`** bloğu ile **tüm yanıtını** bir Dapr state store'da cache'leyebilir. Cache **hit** olduğunda yanıt tek bir cache okumasıyla döner — task'lar hiç çalıştırılmaz; **miss** olduğunda fonksiyon normal çalışır ve sonuç cache'e yazılır (read-through). Gerçek bir konfigürasyon-değerlendirme fonksiyonunda yanıt süresi ~230ms'den ~93ms'ye düşmüştür. | ||
|
|
||
| :::warning Yalnızca yan etkisiz fonksiyonlar | ||
| Cache, fonksiyon başına **opt-in**'dir ve yalnızca **yan etkisiz (read) fonksiyonlar** için etkinleştirilmelidir. Yazma/aksiyon içeren bir fonksiyonu cache'lemek, task'ların atlanması nedeniyle yan etkilerin kaybolmasına yol açar. | ||
| ::: | ||
|
|
||
| ```json | ||
| "attributes": { | ||
| "scope": "I", | ||
| "task": { "...": "..." }, | ||
| "cache": { | ||
| "keyExpression": { | ||
| "location": "dynamicExpresso", | ||
| "code": "\"config:\" + Instance.Key + \":\" + Instance.Version" | ||
| }, | ||
| "ttlInSeconds": 300, | ||
| "consistency": "Eventual", | ||
| "bypassOnCacheError": true | ||
| } | ||
| } | ||
| ``` |
There was a problem hiding this comment.
🔒 Security & Privacy | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Locate the cache documentation and related mentions.
git ls-files 'docs/components/functions/custom.md' \
'i18n/en/docusaurus-plugin-content-docs/current/components/functions/custom.md' \
'docs/components/functions/*' \
'i18n/en/docusaurus-plugin-content-docs/current/components/functions/*' | sed 's#^`#FILE` #'
echo
echo '--- Turkish source around cache section ---'
sed -n '180,270p' docs/components/functions/custom.md
echo
echo '--- English translation around cache section ---'
sed -n '180,250p' i18n/en/docusaurus-plugin-content-docs/current/components/functions/custom.md
echo
echo '--- Search for cache semantics / auth / tenant / role ---'
rg -n --hidden --glob '!**/node_modules/**' --glob '!**/dist/**' \
-e 'cache' -e 'authorization' -e 'auth' -e 'tenant' -e 'role' -e 'caller' -e 'generationKey' \
docs i18n/en/docusaurus-plugin-content-docs/current | sed -n '1,220p'Repository: burgan-tech/vnext-docs
Length of output: 49885
🏁 Script executed:
#!/bin/bash
set -euo pipefail
# Read only the cache schema and field descriptions, if present nearby.
python3 - <<'PY'
from pathlib import Path
paths = [
Path("docs/components/functions/custom.md"),
Path("i18n/en/docusaurus-plugin-content-docs/current/components/functions/custom.md"),
]
for p in paths:
text = p.read_text(encoding="utf-8")
print(f"\n=== {p} ===")
for needle in ["attributes.cache", "keyExpression", "generationKey", "bypassOnCacheError", "consistency", "storeName"]:
idx = text.find(needle)
if idx != -1:
start = max(0, text.rfind("\n", 0, idx - 200))
end = min(len(text), text.find("\n## ", idx + 1) if text.find("\n## ", idx + 1) != -1 else len(text))
print(f"\n--- around {needle} ---")
print(text[start:end])
PYRepository: burgan-tech/vnext-docs
Length of output: 21865
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo '--- docs/components/functions/custom.md cache section ---'
nl -ba docs/components/functions/custom.md | sed -n '210,250p'
echo
echo '--- i18n/en/docusaurus-plugin-content-docs/current/components/functions/custom.md cache section ---'
nl -ba i18n/en/docusaurus-plugin-content-docs/current/components/functions/custom.md | sed -n '196,228p'
echo
echo '--- cache/auth related matches in docs ---'
rg -n --hidden --glob '!**/node_modules/**' --glob '!**/dist/**' \
'authorization|auth|tenant|role|caller|generationKey|keyExpression|cache' \
docs/components/functions/custom.md i18n/en/docusaurus-plugin-content-docs/current/components/functions/custom.mdRepository: burgan-tech/vnext-docs
Length of output: 258
Document cache-key isolation for caller-specific responses. The key example only includes instance/version data. If the response can vary by caller, role, or tenant, add those dimensions to the cache key or explicitly forbid caching personalized responses; mirror the same warning in the English page.
📍 Affects 2 files
docs/components/functions/custom.md#L218-L240(this comment)i18n/en/docusaurus-plugin-content-docs/current/components/functions/custom.md#L204-L220
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/components/functions/custom.md` around lines 218 - 240, Update the cache
documentation in docs/components/functions/custom.md (lines 218-240) and mirror
the same guidance in
i18n/en/docusaurus-plugin-content-docs/current/components/functions/custom.md
(lines 204-220): explain that caller-, role-, or tenant-specific responses must
include those dimensions in the cache key, or explicitly prohibit caching
personalized responses, and ensure the example and warning communicate this
isolation requirement.
| ### Cache Alanları | ||
|
|
||
| | Alan | Tip | Zorunlu | Varsayılan | Açıklama | | ||
| |------|-----|---------|------------|----------| | ||
| | `keyExpression` | `object` | Hayır | — | Cache key'ini hesaplayan **Dynamic Expresso** ifadesi (`location: "dynamicExpresso"` olan bir ScriptCode). Script context üzerinden değerlendirilir ve string döner. `key`'den önceliklidir | | ||
| | `key` | `string` | Hayır | — | Statik cache key'i (`keyExpression` yoksa kullanılır) | | ||
| | `storeName` | `string` | Hayır | `DAPR_STATE_STORE_NAME` | Dapr state store component adı. Boşsa çalışan runtime'ın konfigürasyon değeri kullanılır | | ||
| | `ttlInSeconds` | `integer` | Hayır | — | Cache'lenen yanıtın yaşam süresi. Null veya pozitif olmayan değer: süresiz | | ||
| | `consistency` | `string` | Hayır | `Eventual` | Tutarlılık modu: `Eventual` veya `Strong` | | ||
| | `bypassOnCacheError` | `boolean` | Hayır | `true` | `true`: cache okuma/yazma hataları isteği bozmaz, fonksiyon normal çalıştırılır. `false`: cache hatası isteği başarısız kılar | | ||
| | `generationKeyExpression` | `object` | Hayır | — | Generation stamp'inin tutulduğu state key'ini çözen Dynamic Expresso ifadesi. `generationKey`'den önceliklidir | | ||
| | `generationKey` | `string` | Hayır | — | Generation stamp'ini tutan statik state key'i | |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win
Add a dedicated enum table for cache consistency.
consistency has the fixed values Eventual and Strong, but they are only listed inline. Component reference pages must provide enum tables for fixed value sets.
As per coding guidelines: “Component reference pages must follow the fixed template: ... enum tables for fixed value sets.”
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/components/functions/custom.md` around lines 242 - 253, Add a dedicated
enum table for the cache `consistency` field in the custom component
documentation, listing the allowed values `Eventual` and `Strong` with their
descriptions. Keep the existing cache fields table focused on field metadata and
follow the page’s established enum-table format.
Source: Coding guidelines
| ``` | ||
| "config:" + Instance.Key + ":" + Instance.Version | ||
| ``` |
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win
Specify a language for the fenced code block.
The Dynamic Expresso expression block is unlabeled, triggering markdownlint MD040. Use an appropriate language such as text.
🧰 Tools
🪛 markdownlint-cli2 (0.23.0)
[warning] 261-261: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/components/functions/custom.md` around lines 261 - 263, Update the
fenced code block containing the Dynamic Expresso expression near “Instance.Key”
and “Instance.Version” to include an appropriate language identifier, such as
text, while preserving the block’s contents.
Source: Linters/SAST tools
| | Parametre | Tip | Açıklama | | ||
| |---|---|---| | ||
| | `context` | `ScriptContext` | Ham event payload'ı **`context.EventPayload`** üzerinden erişilir. CloudEvent zarfları script çalışmadan önce runtime tarafından açılır — producer'ın `data`'sı görülür. `context.Headers` ve `context.Workflow` da kullanılabilir. | |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Inconsistency in ScriptContext property name (EventPayload vs Body).
The newly added documentation references a context.EventPayload property, but the ScriptContext class definition provided later in this same file only defines a Body property for payloads. This will cause confusion or C# compilation errors for users.
docs/components/interfaces.md#L415-L417: Verify the actual property name. If it isBody, update this table row. IfEventPayloadwas recently added, update theScriptContextclass definition later in the document.docs/components/interfaces.md#L434-L436: Update the example code to usevar p = context.Body;(or keepEventPayloadif it's the correct new property and the class definition is updated).
📍 Affects 1 file
docs/components/interfaces.md#L415-L417(this comment)docs/components/interfaces.md#L434-L436
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/components/interfaces.md` around lines 415 - 417, The ScriptContext
documentation inconsistently uses EventPayload and Body for the payload
property. Verify the actual ScriptContext definition, then use that property
name consistently in the parameter table at
docs/components/interfaces.md:415-417 and the example at
docs/components/interfaces.md:434-436; if the canonical property is Body,
replace both EventPayload references with Body, otherwise update the class
definition and retain EventPayload.
| ```yaml | ||
| # start: topic'e gelen her mesaj bir instance oluşturur | ||
| apiVersion: dapr.io/v1alpha1 | ||
| kind: Subscription | ||
| metadata: | ||
| name: order-flow-start-subscription | ||
| spec: | ||
| topic: my-domain.order-flow | ||
| route: /api/v1/my-domain/workflows/order-flow/instances/events?action=start | ||
| pubsubname: vnext-pubsub | ||
| ``` | ||
|
|
||
| ```yaml | ||
| # transition: topic'e gelen her mesaj korele instance'ı abort eder | ||
| apiVersion: dapr.io/v1alpha1 | ||
| kind: Subscription | ||
| metadata: | ||
| name: order-flow-abort-subscription | ||
| spec: | ||
| topic: my-domain.order-flow.abort | ||
| route: "/api/v1/my-domain/workflows/order-flow/instances/events?action=transition&transitionKey=abort-order&sync=true" | ||
| pubsubname: vnext-pubsub |
There was a problem hiding this comment.
🎯 Functional Correctness | 🟠 Major | ⚡ Quick win
Reconcile the Dapr Subscription API versions and field shapes.
The local example uses dapr.io/v1alpha1 with spec.route, while the Helm example describes v2alpha1 with spec.routes.default. Clarify that these are intentionally different supported formats, or standardize the examples; otherwise users may apply the wrong manifest shape.
Also applies to: 197-222
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In `@docs/how-to/event-driven-workflows.md` around lines 164 - 185, Reconcile the
Dapr Subscription manifest examples in the local YAML blocks and the Helm
example by either standardizing them on one supported API version and field
shape, or explicitly documenting that dapr.io/v1alpha1 with spec.route and
v2alpha1 with spec.routes.default are intentional alternatives. Apply the same
clarification or consistency update to the related examples around the Helm
configuration.
| --- | ||
| sidebar_position: 8 | ||
| title: Get Instance Task | ||
| description: Task for retrieving a full single-instance projection from other workflows | ||
| --- | ||
|
|
There was a problem hiding this comment.
📐 Maintainability & Code Quality | 🟠 Major | ⚡ Quick win
Add missing id and sidebar_label to frontmatter.
This is a new documentation page, and its frontmatter is missing the required id and sidebar_label fields. As per coding guidelines, English translation pages must include translated title and sidebar_label, while preserving the original Turkish id and slug fields from the source document.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
In
`@i18n/en/docusaurus-plugin-content-docs/current/components/tasks/get-instance.md`
around lines 1 - 6, Add the required id and sidebar_label fields to the
frontmatter of the Get Instance Task page, using the original Turkish id and
slug conventions and an English-translated sidebar_label consistent with the
page title. Preserve the existing title, description, and sidebar_position
fields.
Source: Coding guidelines
Özet
Runtime v0.0.71 (schema 0.0.50) release notu ve release kapsamındaki tüm doküman güncellemeleri: event-driven workflows how-to sayfası, GetInstance task (type 19) referansı, fluent InstanceQuery builder, function cache, data-vocab (
x-context-source/x-context-target), master schema function, state interaction (terminateLongPoll), form-urlencoded + 202 Accepted + content-type. Ayrıca portal favicon'u amorphie ikonu ile değiştirildi.Yeni sayfalar:
docs/how-to/event-driven-workflows.md— event kavramı,IEventMapping, korelasyon (InstanceKey/Selector), Dapr Subscription YAML'ları, helmpubsubComponents/subscriptionComponentsörneği (vnext-helm-charts #25), runtime davranış tablosudocs/components/tasks/get-instance.md— type 19 tam referansGüncellenen sayfalar: workflow (event alanları + Event Transition bölümü + interaction yanıt objesi), interfaces (IEventMapping), instance-filtering (Fluent InstanceQuery Builder), functions/custom (cache bloğu), functions/built-in (master function + State yanıtı), schema (Data Context Vocabulary), tasks/index (enum 19), get-instances (SetFilterSpec), trigger, rest-api (form-urlencoded, 202, content-type), async-sync.
Şema alanları
@burgan-tech/vnext-schema@0.0.50(unpkg diff) ile, runtime davranışları vnext kaynak commit'leri ile doğrulandı (#86, #806, #819, #821, #825).Etkilenen Bölüm
docs/)architecture/)business/)product/)blog/)Dil
Local Doğrulama
npm run buildbaşarılı (tr + en)npm run startile gözle kontrol edildiİlgili Phase / Issue
v0.0.71 release — vnext #86, #806, #819, #821, #825; helm vnext-helm-charts #25
🤖 Generated with Claude Code
Summary by Sourcery
Document release v0.0.71 and schema 0.0.50, introducing event-driven workflows, new querying and instance access capabilities, function caching, client context vocabulary, and request/response protocol updates across Turkish and English docs.
New Features:
x-context-source/x-context-target) for schema-driven client context-store binding in master and input schemas.Enhancements:
interactionobject description for long-poll behavior and acknowledge links in both TR and EN docs.Build:
Deployment:
Documentation:
Chores:
Summary by CodeRabbit
New Features
202 Accepted.Documentation