@exellix/ai-tasks 10.0.13 → 10.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/CHANGELOG.md +479 -458
  2. package/dist/activix/activixClient.d.ts +3 -0
  3. package/dist/activix/activixClient.d.ts.map +1 -1
  4. package/dist/activix/activixClient.js +42 -27
  5. package/dist/activix/activixClient.js.map +1 -1
  6. package/dist/core/task-sdk.d.ts.map +1 -1
  7. package/dist/core/task-sdk.js +13 -7
  8. package/dist/core/task-sdk.js.map +1 -1
  9. package/dist/index.d.ts +1 -1
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +1 -1
  12. package/dist/index.js.map +1 -1
  13. package/dist/node-execution/buildRequestFromNodePlan.d.ts +2 -0
  14. package/dist/node-execution/buildRequestFromNodePlan.d.ts.map +1 -1
  15. package/dist/node-execution/buildRequestFromNodePlan.js.map +1 -1
  16. package/dist/node-execution/createNodeExecutionHost.d.ts +5 -1
  17. package/dist/node-execution/createNodeExecutionHost.d.ts.map +1 -1
  18. package/dist/node-execution/createNodeExecutionHost.js +18 -5
  19. package/dist/node-execution/createNodeExecutionHost.js.map +1 -1
  20. package/dist/node-execution/dispatchExecutionUnit.d.ts.map +1 -1
  21. package/dist/node-execution/dispatchExecutionUnit.js +12 -14
  22. package/dist/node-execution/dispatchExecutionUnit.js.map +1 -1
  23. package/dist/node-execution/executeNodeFromPlan.d.ts.map +1 -1
  24. package/dist/node-execution/executeNodeFromPlan.js +19 -7
  25. package/dist/node-execution/executeNodeFromPlan.js.map +1 -1
  26. package/dist/node-execution/liftTraceObservations.d.ts +6 -0
  27. package/dist/node-execution/liftTraceObservations.d.ts.map +1 -0
  28. package/dist/node-execution/liftTraceObservations.js +53 -0
  29. package/dist/node-execution/liftTraceObservations.js.map +1 -0
  30. package/dist/node-execution/mapObservationToTrace.d.ts +10 -0
  31. package/dist/node-execution/mapObservationToTrace.d.ts.map +1 -0
  32. package/dist/node-execution/mapObservationToTrace.js +74 -0
  33. package/dist/node-execution/mapObservationToTrace.js.map +1 -0
  34. package/dist/node-execution/traceLifecycle.d.ts +13 -0
  35. package/dist/node-execution/traceLifecycle.d.ts.map +1 -0
  36. package/dist/node-execution/traceLifecycle.js +24 -0
  37. package/dist/node-execution/traceLifecycle.js.map +1 -0
  38. package/dist/node-execution/traceLifecycleLocal.d.ts +42 -0
  39. package/dist/node-execution/traceLifecycleLocal.d.ts.map +1 -0
  40. package/dist/node-execution/traceLifecycleLocal.js +312 -0
  41. package/dist/node-execution/traceLifecycleLocal.js.map +1 -0
  42. package/dist/node-execution/unitTrace.d.ts +13 -2
  43. package/dist/node-execution/unitTrace.d.ts.map +1 -1
  44. package/dist/node-execution/unitTrace.js +106 -35
  45. package/dist/node-execution/unitTrace.js.map +1 -1
  46. package/dist/post-steps/audit/runAudit.d.ts +3 -0
  47. package/dist/post-steps/audit/runAudit.d.ts.map +1 -1
  48. package/dist/post-steps/audit/runAudit.js +54 -16
  49. package/dist/post-steps/audit/runAudit.js.map +1 -1
  50. package/dist/post-steps/polish/runPolish.d.ts +3 -0
  51. package/dist/post-steps/polish/runPolish.d.ts.map +1 -1
  52. package/dist/post-steps/polish/runPolish.js +7 -1
  53. package/dist/post-steps/polish/runPolish.js.map +1 -1
  54. package/documenations/node-execution-graphenix.md +4 -4
  55. package/package.json +96 -96
package/CHANGELOG.md CHANGED
@@ -1,458 +1,479 @@
1
- # Changelog
2
-
3
- All notable changes to `@exellix/ai-tasks` are documented here.
4
-
5
- The published **npm version** always matches **`version`** in [`package.json`](package.json). If this file skips a semver, treat [`BREAKING-CHANGES.md`](BREAKING-CHANGES.md) and [`RUNTASK_REQUEST.md`](RUNTASK_REQUEST.md) as the source of truth for cross-version upgrades.
6
-
7
- ## [10.0.13] - 2026-06-20
8
-
9
- ### Changed
10
-
11
- - **`@exellix/ai-skills`** **^6.12.5** (graphenix 2.7.3 + catalox 5.9.8 train).
12
- - **`@x12i/catalox`** / **`@x12i/catalox-contracts`** **^5.9.8**.
13
-
14
- ## [10.0.12] - 2026-06-20
15
-
16
- ### Changed
17
-
18
- - **Graphenix alignment:** all `@x12i/graphenix-*` packages **^2.7.3** (full format suite train).
19
-
20
- ## [10.0.11] - 2026-06-20
21
-
22
- ### Fixed
23
-
24
- - **`@exellix/fact-guard-*` dependencies:** publish semver **`^1.0.1`** in `dependencies` (10.0.10 accidentally shipped **`file:../fact-guard/...`** in `dependencies`, which breaks installs outside this monorepo).
25
- - **`prepublishOnly`:** fail fast if `file:` / `link:` / `workspace:` specs remain in `package.json` at publish time.
26
-
27
- ### Changed
28
-
29
- - **Graphenix alignment:** all `@x12i/graphenix-*` packages **^2.7.2** (compiler emits `webQueryTemplate` on `webScope` units; legacy `webScoping` rejected on plans).
30
- - **`@exellix/ai-skills`** **^6.12.4** (graphenix 2.7.2 train).
31
- - **Web scope validation:** enabled `webScope` PRE units require non-empty **`unitParams.webQueryTemplate`** (or `webQueryTemplates[]`); rejects legacy **`webScoping`** / NARRIX question fallbacks on unit params (`LEGACY_WEB_SCOPE_UNIT_PARAMS`, `WEB_QUERY_TEMPLATE_REQUIRED`, `WEB_QUERY_TEMPLATE_UNRESOLVED`).
32
-
33
- ## [10.0.10] - 2026-06-20
34
-
35
- ### Changed
36
-
37
- - **Web scoping:** migrate from **`@exellix/narrix-web-scoper`** to published **`@x12i/web-scoper@^1.1.1`**. New adapter module **`src/web-scope/`** compiles graph/task input to **`{ question, record?, options? }`** or **`searchMany`** packs; **`executionMemory.webContext`** uses **`{ ok, context?, error? }`** (replaces legacy **`available`**).
38
- - **Standalone PRE `webScope` unit:** playground and Graphenix plans invoke the same adapter via **`unitParams.enableWebScope`** + **`unitParams.options`**.
39
- - **Docs:** README, RUNTASK_REQUEST, and **`documenations/web-scoping-in-ai-tasks.md`** updated for the new contract.
40
-
41
- ### Removed
42
-
43
- - Dependency on **`@exellix/narrix-web-scoper`**. Legacy **`narrix.webScoping`** / template fields are still mapped at invoke time where supported.
44
-
45
- ## [10.0.9] - 2026-06-18
46
-
47
- ### Changed
48
-
49
- - **Graphenix alignment:** all `@x12i/graphenix-*` packages **^2.7.0** (fact-guard schema/validation/compiler train; optional `unitParams.factGuard` fully validated upstream).
50
- - **`@exellix/ai-skills`** **^6.12.3** (graphenix 2.7.0 train).
51
-
52
- ## [10.0.8] - 2026-06-18
53
-
54
- ### Changed
55
-
56
- - **`@exellix/fact-guard-*`** **^1.0.0** — re-scoped from `@x12i` to **`@exellix`** (npm publish train).
57
- - **`@exellix/xynthesis`** **^4.8.4**.
58
-
59
- ## [10.0.7] - 2026-06-18
60
-
61
- ### Changed
62
-
63
- - **Graphenix alignment:** all `@x12i/graphenix-*` packages **^2.6.0** (optional `unitParams.factGuard` on sub-action units; validates against graphenix `FactGuardStepConfig`).
64
- - **`@exellix/ai-skills`** **^6.12.2** (graphenix 2.6.0 train).
65
- - **`@exellix/fact-guard-*`** **^1.0.0** (npm semver; was monorepo `file:` link).
66
-
67
- ### Added
68
-
69
- - Node-plan validation tests for graphenix 2.6.0 fact-guard golden fixtures (`node-synthesis-fact-guard-*`, `node-polish-fact-guard-enabled`, `node-audit-fact-guard-nested`).
70
-
71
- ## [10.0.6] - 2026-06-17
72
-
73
- ### Added
74
-
75
- - **Fact-guard sub-actions (optional):** optional atom integrity checks on PRE synthesis, POST audit/polish/scoping, and execution-strategy planner/optimizer hops via **`@exellix/fact-guard-*` ^1.0.0**. Disabled by default (`factGuard.enabled: false` or absent = unchanged behavior). Kill-switch: **`FACT_GUARD_DISABLED=1`**. MAIN **`runSkill`** path unchanged.
76
- - **`FactGuardStepConfig`** on `SynthesisConfig`, `AuditConfig`, `PolishConfig`, `ExecutionStrategyInvocation`, and `aiScopingOptions`.
77
- - **`npm run test:fact-guard`**integration tests (mocked LLM).
78
-
79
- ### Changed
80
-
81
- - **`@exellix/xynthesis`** **^4.8.3** (fact-guard passthrough on `executeXynthesisAction`).
82
-
83
- ## [10.0.5] - 2026-06-17
84
-
85
- ### Changed
86
-
87
- - **Graphenix alignment:** all `@x12i/graphenix-*` packages **^2.5.0** (CRS-FRS-003 train; jobMemory.context authoring preserved upstream).
88
- - **`@exellix/ai-skills`** **^6.12.1** — consumes graphenix 2.5.0 train.
89
-
90
- ## [10.0.4] - 2026-06-15
91
-
92
- ### Changed
93
-
94
- - **Graphenix alignment:** all `@x12i/graphenix-*` packages **^2.4.0** (suite train bump from 2.3.0).
95
- - **`@exellix/ai-skills`** **^6.12.0** — consumes graphenix 2.4.0 train.
96
-
97
- ## [10.0.2] - 2026-06-14
98
-
99
- ### Added
100
-
101
- - **Graphenix 2.1.0 alignment:** `@x12i/graphenix-plan-format` and `@x12i/graphenix-executable-contracts` **^2.1.0** — rejects plans with `unitParams.synthesisInputStrategy` (`LEGACY_SYNTHESIS_INPUT_STRATEGY_ON_PLAN`).
102
- - **`resolveSynthesisContextStrategyKey`** — PRE synthesis template key from skill catalog (`@exellix/ai-skills` **^6.11.0**); path-driven source material via `invokeContract.reads` / `memoryPaths`.
103
- - Validation test for legacy synthesis field on compiled plans.
104
-
105
- ### Changed
106
-
107
- - **`synthesisConfigFromUnit`** strips `unitParams.synthesisInputStrategy` from plan wire; no longer defaults plan enum to `policy`.
108
- - Wire fixture `graph-engine-pre-synthesis.json` path-only synthesis unit (no `synthesisInputStrategy`).
109
- - **Docs:** README / RUNTASK_REQUESTskill-catalog-only template key; graphenix **2.1.0** deps.
110
-
111
- ## [10.0.1] - 2026-06-13
112
-
113
- ### Added
114
-
115
- - **Graphenix 2.0.3 alignment:** `@x12i/graphenix-executable-contracts` and `@x12i/graphenix-plan-format` **^2.0.3** — orchestration strategy registry (`plan`, `split`, `merge`, `pick-best`, `webScope`), path-driven synthesis units (`invokeContract.reads`).
116
- - Golden tests for graphenix plan fixtures: `node-synthesis-execution-memory-only`, `node-split-merge`, `node-web-scope-standalone`.
117
- - **Synthesis path bridge:** `synthesisConfigFromUnit` copies `invokeContract.reads` → `memoryPaths` when omitted; defaults `synthesisInputStrategy` to `policy` for path-driven plans.
118
-
119
- ### Changed
120
-
121
- - Graph authoring fixtures: removed deprecated `preInputStrategy` from `aiTaskStrategies`.
122
- - Wire fixture `graph-engine-pre-synthesis.json` aligned with graphenix 2.0.3 compile output (`reads`: `input`, `executionMemory`).
123
- - **Docs:** README Graphenix 10.x section; downstream [graph-model-change-2026-06-13.md](../temp/downstream/graph-model-change-2026-06-13.md).
124
-
125
- ## [10.0.0] - 2026-06-13
126
-
127
- ### Breaking
128
-
129
- - **Removed** `taskConfiguration` and `executionPipeline` from `RunTaskRequest` use frozen `nodePlan` only.
130
- - **Removed** compile pipeline (`src/compile/*`, `taskConfigurationCompileError`).
131
-
132
- ### Added
133
-
134
- - **PRE synthesis wiring:** `resolveRawTemplate(role: synthesisContext, strategyKey)` via `@exellix/ai-skills` **^6.10.0**.
135
- - **PRE/POST orchestration runtime:** `externalPreUtility` (`plan`, `split`, `webScope`), `externalPostUtility` (`merge`, `pick-best`), multi-shard MAIN + FuncX fan-in.
136
- - **Web scope:** Narrix preprocessor `enableWebScope` + standalone `webScope` unit.
137
- - **Strategy catalogs:** synthesis-input, pre/post orchestration (publish via `npm run publish:task-strategies`).
138
- - **nodePlan audit parity:** real `reRunMain` + synthesized `contextMarkdown`.
139
-
140
- ### Changed
141
-
142
- - **`@exellix/ai-skills`** **^6.10.0** (support templates + single `professional-answer` Catalox seed).
143
-
144
- ## [9.1.1] - 2026-06-13
145
-
146
- ### Changed
147
-
148
- - **Run-task handoff closure:** Stale docs updated — node template scope is `nodePlan.invokeContract.taskVariable`, not `executionMemory.taskVariables`.
149
- - **`@exellix/ai-skills`** **^6.9.1** (WM source-of-truth alignment).
150
-
151
- ### Added
152
-
153
- - Golden parity tests for all **7** node plan fixtures (`node-post-audit`, `node-input-synthesis-profile` added to `golden-fixtures.test.ts`).
154
-
155
- ## [9.1.0] - 2026-06-09
156
-
157
- ### Changed
158
-
159
- - **Graphenix 2.1.0 alignment:** Accept parent plan format `"executable-plan"` (v2) and trace format `"execution-trace"` (v2).
160
- - **Snapshot isolation:** `overlayUnitModelOnRequest` ignores concrete wire ids in `resolvedInvocationSnapshot.modelId`, preferring authored `modelSelection` (CR-1.3).
161
-
162
- ## [9.0.5] - 2026-06-08
163
-
164
- ### Changed
165
-
166
- - **`@x12i/funcx`** **^4.9.5** (direct dependency + npm override) — aligns PRE/POST xynthesis with funcx catalog gate via **`@x12i/ai-profiles`** (requires funcx ≥ 4.9.5; fixes subnet-style PRE `Unknown model "google/gemini-2.5-flash-lite"`).
167
- - **`@x12i/ai-profiles`** **^3.4.0**, **`@exellix/xynthesis`** **^4.6.5** (publish **4.6.6** for funcx bump).
168
-
169
- ## [9.0.1] - 2026-06-07
170
-
171
- ### Changed
172
-
173
- - Graphenix dependency alignment with latest CP release train: **`graphenix-plan-format`** and **`graphenix-trace-format`** @ **^1.1.1**; dev **`graphenix-authoring-format`** @ **^1.2.1**, **`graphenix-plan-compiler`** @ **^1.1.1**. **`graphenix-executable-contracts`** remains **^1.1.0**.
174
- - **`npm` overrides:** Pin transitive **`@x12i/funcx`** to **^4.6.0** (aligns with **`@exellix/xynthesis` 4.6.2** and **`@x12i/logxer` ^4.6.0**).
175
-
176
- ## [9.0.0] - 2026-06-07
177
-
178
- ### Changed (breaking)
179
-
180
- - **Graphenix node execution v2.1:** `runTask()` requires **`nodePlan`** (`NodeExecutionPlan`); production path is **`executeNodeFromPlan`** (unit loop + per-unit model selection). Legacy **`executionPipeline`** / **`taskConfiguration`** compile is **off the hot path** (still exported for migration tooling).
181
- - **Forbidden wire fields** when `nodePlan` is set: root **`modelConfig`**, **`executionPipeline`**, **`taskConfiguration`** model slots come from `nodePlan.executionUnits[].modelSelection`.
182
- - **`executionTrace`** (optional): graphenix v2 trace append (`unit.*`, `model.invocation.*`).
183
-
184
- ### Added
185
-
186
- - **`src/node-execution/`** — unit dispatch, Narrix units, PRE/MAIN/POST handlers, trace bridge.
187
- - Dependencies: **`@x12i/graphenix-executable-contracts`**, **`graphenix-plan-format`**, **`graphenix-trace-format`** @ **^1.1.0**; dev **`graphenix-plan-compiler`** @ **^1.1.0**.
188
- - Docs: [`documenations/node-execution-graphenix.md`](documenations/node-execution-graphenix.md), [`reports/graphenix-graph-engine-handoff.md`](../archived/ai-tasks/reports/graphenix-graph-engine-handoff.md); updated [`RUNTASK_REQUEST.md`](RUNTASK_REQUEST.md) and JSON schema.
189
-
190
- ### Fixed
191
-
192
- - **`xynthesizedOutput`:** PRE synthesis restores `request.xynthesized` updates and **`response.xynthesizedPatch`** for graph-engine merge (`applySynthesisPreStepToRequest`).
193
- - **Polish POST:** wire **`structuredOutput`** (JSON mode) on polish LLM calls; node-execution POST handler merges **`parsed`** and **`intermediateSteps`**.
194
-
195
- ## [8.8.0] - 2026-06-05
196
-
197
- ### Fixed
198
-
199
- - **MAIN gateway wire shape:** `prepareMainSkillModelConfigForInvoke` applies ai-skills **`normalizeModelConfigForGatewayInvoke`** after profile resolution so MAIN invoke sends `{ provider, model }` tuple (never composite `openrouter/…` slug with `provider: unspecified`).
200
- - Consumes **`skillModel`** slot only for MAIN routing — no graph `modelConfig` merge at the execution boundary.
201
-
202
- ### Changed
203
-
204
- - Bumped **`@exellix/ai-skills`** to **^6.5.0**, **`@exellix/xynthesis`** to **^4.6.0**, **`@x12i/ai-profiles`** to **^3.2.0** (`normalizeInvokeModel` contract).
205
-
206
- ## [8.7.0] - 2026-06-05
207
-
208
- ### Changed
209
-
210
- - Bumped **`@exellix/ai-skills`** to **^6.4.0** and **`@exellix/xynthesis`** to **^4.5.0** (gateway **≥ 10.1.0**, **`@x12i/ai-profiles` ^3.0.0**, **`@x12i/activix` ^8.6.0**).
211
- - Added direct **`@x12i/ai-profiles` ^3.0.0** dependency so orchestrator model resolution aligns with ai-skills / xynthesis (avoids hoisted **2.1.x** from legacy narrix transitive paths).
212
- - README stack alignment table and gateway 10.x notes updated for the new minimums.
213
-
214
- ## [8.6.3] - 2026-06-05
215
-
216
- ### Fixed (CR-13)
217
-
218
- - **`prepareMainSkillModelConfigForInvoke`:** Resolves `skillModel` / `llmCall.model` profile/choice aliases to concrete gateway wire ids once before ai-skills invoke (via `resolveModelReference`).
219
- - **`MAIN_SKILL_MODEL_RESOLUTION_FAILED`:** New `RunTaskModelResolutionError` code when MAIN alias resolution fails; Activix classification event `skill_model_resolution_failed`.
220
- - Bumped **`@exellix/ai-skills`** to **^6.3.0** for Optimixer `modelProfile` split + `SKILL_MODEL_RESOLUTION_FAILED`.
221
-
222
- ## [8.5.0] - 2026-06-03
223
-
224
- ### Changed (breaking)
225
-
226
- - **Execution strategies:** planner/optimizer invoke **`@exellix/xynthesis` ≥ 4.4.0** (`execution-plan`, `execution-evaluate-result`) with `modelConfig.preActionModel` / `postActionModel`. Removed direct `@x12i/funcx` `run()` from ai-tasks.
227
- - **`runPlanWebScopeQuestions`:** xynthesis `plan-web-scope-questions` only; removed `backend: "funcx"`.
228
- - **Catalog:** `runtimeKind: "xynthesis-action"`, `defaultSidekickAction` on planner/optimizer rows.
229
-
230
- ### Added
231
-
232
- - `runPlannerViaXynthesis`, `runOptimizerViaXynthesis`, `setExecutionStrategyActionInvoker`, `setPlanWebScopeQuestionsActionInvoker`, `resolveSafeExecutionStrategyCatalogDefaultSidekickAction`.
233
-
234
- ### Removed
235
-
236
- - `setFuncxExecutionStrategyInvoker`, `setResearchPlanQuestionsFuncxInvoker`, direct `@x12i/funcx` dependency.
237
-
238
- ## [8.6.0] - 2026-06-04
239
-
240
- ### Removed (breaking)
241
-
242
- - **Studio skill analysis** removed from the runtime package: **`analyzeRunTaskRequest`**, re-exports of **`buildSkillRequestAnalysisPacket`**, **`formatSkillRequestAnalysisMarkdown`**, **`FUNCX_ANALYZE_GATEWAY_INVOKE_REQUEST_ID`**, and related analysis types. Invoke preflight belongs in **studio / skills-manager** — see **[`documenations/studio-skill-invoke-preflight.md`](documenations/studio-skill-invoke-preflight.md)** (suggested design, not mandatory). Orchestrator static checks remain: **`validateRunTaskConfig`**, **`analyzeExpectedRunTaskInput`**.
243
-
244
- ## [8.5.3] - 2026-06-04
245
-
246
- ### Changed
247
-
248
- - Bumped **`@exellix/xynthesis`** to **^4.4.5** and **`@exellix/ai-skills`** to **^6.0.2** for Optimixer **max-token retry** on PRE/POST (xynthesis) and MAIN (ai-skills): one automatic re-invoke when output hits the token limit and Optimixer returns **`retryPrediction`** (no host **`maxTokens`** required).
249
-
250
- ### Added
251
-
252
- - Unit test **`runPostStepLlmCall.maxTokenRetry.test.ts`** (mock Optimixer + synthesis invoker; no live LLM).
253
-
254
- ## [8.4.0] - 2026-06-01 — `preActionModel`, `skillModel`, `postActionModel`. **`xynthesisModel` removed** (validation rejects with `NON_CANONICAL_MODEL_CONFIG`). PRE uses `preActionModel`; POST uses `postActionModel`.
255
- - **`@x12i/ai-profiles` ^2.0.0:** Required `catalogLane` on profile resolution; ai-tasks defaults `"text"` ( `"image"` for `vision` ). Registry source defaults to `auto`.
256
- - **`@exellix/xynthesis` ^4.2.1:** Minimum for ai-profiles v2 alignment.
257
-
258
- ### Added
259
-
260
- - **`defaultAiTasksResolveAiProfileOptions`**, slot helpers `resolvePreActionModel` / `resolvePostActionModel`, builder `withPreActionModel` / `withPostActionModel`.
261
-
262
- ### Removed
263
-
264
- - Exports **`resolveXynthesisModelForPre`**, **`getXynthesisModelFromSlots`**, builder **`withXynthesisModel`**.
265
-
266
- ## [Unreleased — prior notes]
267
-
268
- ### Changed
269
-
270
- - **`@x12i/ai-profiles` ≥1.8.0:** Direct dependency bumped from **^1.7.2**; **`npm` override** pins transitive `@x12i/ai-profiles` to this package's direct version (required fix in **1.8.0** for profile alias resolution). Live coverage: `npm run test:live` → `test/e2e/ai-profiles-live.test.ts` (registry `auto` + real xynthesis alias call).
271
- - **`@exellix/xynthesis` ^4.1.8:** Fixes OpenRouter **400 invalid model ID** on PRE/POST hops (wire id was `openrouter/<slug>` instead of bare OR API slug). ai-tasks invocation routing aligned (skill gateway shape vs xynthesis Funcx slug). Requires **≥4.1.8** — do not use **4.1.7** for alias-based xynthesis calls with OpenRouter.
272
- - **`@x12i/logxer` ^4.4.2:** Package diagnostics use **`createLogxer`** with diagnostic catalog (`.metadata/log-diagnostics.json`), **`warnCode`** / **`DebugLogAbstract`**, **`fieldEvidence`**, **`runWithLogContext`** during **`runTask()`**, and in-process **`getAiTasksJobLogs`** for debug UIs. Override pins transitive logxer to **4.4.2** (no nested **4.4.0** from `@x12i/optimixer`).
273
-
274
- ## [8.1.1] - 2026-05-28
275
-
276
- ### Changed
277
-
278
- - **`npm` overrides:** Pin transitive **`@x12i/activix`**, **`@x12i/catalox`**, and **`@x12i/funcx`** to this package's direct versions so graph-engine and other consumers resolve a single copy (no nested **funcx 3.9.x** / **activix 7.x** / **catalox 4.x** from `@exellix/narrix-web-scoper` or `@x12i/funcx`).
279
-
280
- ## [8.1.0] - 2026-05-28
281
-
282
- ### Added
283
-
284
- - **Model profile aliases (`@x12i/ai-profiles`):** Resolve ai-profiles profile/shortcut names and legacy tiers (`weak`, `strong`, `default`) to concrete provider model ids for **ai-skills MAIN** (`skillModel` / `llmCall.model`). Keep **ai-profiles aliases** on **xynthesis** paths (`modelConfig.xynthesisModel`, POST/PRE/scoping `llmCall.model`). Exports: `resolveModelReference`, `resolveModelReferenceForXynthesis`, `normalizeXynthesisModelAlias`, `resolveRunTaskModelReferences`, `isResolvableModelAlias`, `formatResolvedProfileModelId`.
285
- - **Dual-root `RunTaskRequest.inputs`:** Optional top-level plural payload bucket (distinct from `executionMemory.inputs`); forwarded on MAIN like `input`.
286
-
287
- ### Changed
288
-
289
- - **Smart-input validation context:** `inputs.*` resolves against top-level **`request.inputs`** only (not `executionMemory.inputs`). Use **`executionMemory.inputs.*`** for execution-memory plural paths.
290
- - **PRE `memoryPaths`:** Dual-root fallback — `executionMemory.input.<rest>` falls back to `executionMemory.inputs.<firstKey>.<rest>` when singular path is missing.
291
- - **`@exellix/xynthesis` ^4.0.6:** Xynthesis LLM calls use alias-only model resolution (`resolveModelReferenceForXynthesis`); default post-step model is **`balanced`** when omitted. **`skillModel`** resolution for **`@exellix/ai-skills` ^5.8.6** unchanged.
292
- - **Validation:** `modelConfig.xynthesisModel` rejects concrete provider ids; accepts ai-profiles aliases (replaces 8.0.0 `MODEL_CONFIG_NOT_RESOLVED` for legacy tiers on both slots).
293
-
294
- ### Documentation
295
-
296
- - README — [Model profile aliases](#model-profile-aliases-x12iai-profiles); [`.docs/ai-tasks-model-profile-aliases-7x.md`](../archived/ai-tasks/.docs/ai-tasks-model-profile-aliases-7x.md).
297
-
298
- ## [8.0.9] - 2026-05-28
299
-
300
- ### Changed
301
-
302
- - **Dependencies (graph-engine alignment):** **`@x12i/funcx` ^4.2.0** (no 3.9.x path), **`@x12i/activix` ^8.0.5**, **`@x12i/catalox` ^5.1.1**; **`@x12i/funcx/functions`** re-exports (`FUNCX_EXECUTION_PLAN_FUNCTION_ID`, etc.).
303
-
304
- ## [8.0.8] - 2026-05-27
305
-
306
- ### Added
307
-
308
- - **`getModelCapabilities`** re-export from `@exellix/xynthesis` (replaces removed **`MODEL_CAPABILITIES`** constant).
309
-
310
- ### Fixed
311
-
312
- - **Exports:** Removed broken **`MODEL_CAPABILITIES`** re-export from `@exellix/xynthesis` 4.x (symbol removed upstream). Use **`getModelCapabilities(modelId)`** from `@exellix/ai-tasks` or `@exellix/xynthesis` instead.
313
-
314
- ### Deprecated
315
-
316
- - **`8.0.7`** — do not use; re-exported **`MODEL_CAPABILITIES`** against **`@exellix/xynthesis` ≥ 4.x** where the symbol no longer exists. Upgrade to **8.0.8+**.
317
-
318
- ## [7.7.1] - 2026-05-25
319
-
320
- ### Added
321
-
322
- - **`RunTaskRequest.taskConfiguration`:** Graph-engine may forward the node `taskConfiguration` blob; **`compileTaskConfigurationOnRunTaskRequest`** (also at **`runTask()`** entry) maps **`aiTaskStrategies.pre: "synthesis"`** and **`aiTaskProfile.inputSynthesis.enabled`** into PRE **`synthesized-context`** + **`includeContextInPrompt: true`**. Exports **`TaskConfigurationCompileError`**, **`AI_TASK_PRE_ENABLE_SYNTHESIS`**.
323
-
324
- ### Documentation
325
-
326
- - **`RUNTASK_REQUEST.md`**, **README**, [`.docs/flow-io/xynthesis-pre.md`](../archived/ai-tasks/.docs/flow-io/xynthesis-pre.md), graph-engine task [`reports/graph-engine-task-pre-synthesis-compile.md`](../archived/ai-tasks/reports/graph-engine-task-pre-synthesis-compile.md).
327
- - Fixtures: [`test/fixtures/run-task/graph-engine-pre-synthesis.json`](test/fixtures/run-task/graph-engine-pre-synthesis.json), [`test/fixtures/graphs/graph-qcrbz6t-pre-synthesis.json`](test/fixtures/graphs/graph-qcrbz6t-pre-synthesis.json).
328
-
329
- ## [7.6.4] - 2026-05-18
330
-
331
- ### Changed
332
-
333
- - **`@exellix/ai-skills` ≥ 5.5.0:** Dependency **5.5.2**; `pickRunSkillRequestFields` forwards top-level **`executionMemory`** on `runSkill` (native `buildWorkingMemory` support). Removed the 7.6.3 `jobMemory.executionMemory` nest bridge.
334
-
335
- ### Dependencies
336
-
337
- - **`@exellix/ai-skills`:** `5.5.2` (was `5.4.0`).
338
-
339
- ## [7.6.3] - 2026-05-18
340
-
341
- ### Fixed
342
-
343
- - **Gateway `executionMemory` paths (interim):** `DirectExecutionStrategy` nested `request.executionMemory` on `jobMemory.executionMemory` before `runSkill` for ai-skills **&lt; 5.5.0**. Superseded in **7.6.4** by native top-level forward. Strips `RunTaskRequest`-only fields from the `runSkill` payload.
344
-
345
- ### Documentation
346
-
347
- - **Change request:** [`reports/change-request-tasknode-variable-scopes-7.6.2.md`](../archived/ai-tasks/reports/change-request-tasknode-variable-scopes-7.6.2.md) — upstream work for `@exellix/ai-skills`, `@x12i/rendrix`, and optional gateway path aliases.
348
-
349
- ## [7.6.2] - 2026-05-18
350
-
351
- ### Fixed
352
-
353
- - **`smartInput.strict`:** Accepted on `RunTaskRequest.smartInput` and forwarded through `normalizeSmartInputConfig` to the gateway path.
354
-
355
- ### Changed
356
-
357
- - **MAIN template variables:** `runTask` forwards **`variables`** (job/graph bucket) **as-is** via `passthroughJobTemplateVariables` — no longer folds `jobContext`, `input`, `xynthesized`, or `smartInput` into `variables`. Node scope remains on **`executionMemory.taskVariables`**.
358
-
359
- ### Documentation
360
-
361
- - **`RUNTASK_REQUEST.md`:** TaskNode authoring map (`taskConfiguration`, `inputsConfig`, `taskVariable`, two-bucket `jobVariables` / `taskVariables`), dual `outputValidation`, `inputSynthesis` compile table, forbidden metadata.
362
- - **README**, web-scoping doc, Narrix JSDoc: authoring path **`taskConfiguration.narrix`** (not `metadata.narrix`).
363
-
364
- ### Schema
365
-
366
- - **`run-task-request.json`:** `executionStrategyCatalogItems`, `smartInputRenderOptions`, Rendrix path objects, `smartInput.strict`, variable-bucket descriptions.
367
-
368
- ## [7.6.0] - 2026-05-18
369
-
370
- ### Added
371
-
372
- - **`xynthesized.execution` scope:** `XynthesizedMemory.execution`, `XynthesizedDestinationScope` includes **`"execution"`**, PRE **`xynthesizedOutput.destination: "execution"`** writes and returns **`xynthesizedPatch.execution`** (same replace/merge semantics as job/task; no redirect to other buckets).
373
- - **Smart-input:** `xynthesized.*` paths must use scope **`job`**, **`task`**, or **`execution`**; **`resolveXynthesizedSmartInputPath`** helper for in-package resolution against request **`xynthesized`**.
374
- - **`TaskRequestBuilder.withXynthesizedExecution(key, value)`**.
375
-
376
- ### Documentation
377
-
378
- - **`RUNTASK_REQUEST.md`**, **`documenations/synthesized-context-guide.md`**, and **`documenations/schemas/v1/run-task-request.json`** updated for the execution bucket.
379
-
380
- ## [7.2.0] - 2026-05-06
381
-
382
- ### Changed
383
-
384
- - **Breaking (exports):** Replaced **`AI_TASKS_FUNCX_*`** constants with **`FUNCX_EXECUTION_PLAN_FUNCTION_ID`** (`execution/plan`), **`FUNCX_EXECUTION_EVALUATE_RESULT_FUNCTION_ID`** (`execution/evaluate-result`), **`FUNCX_RESEARCH_PLAN_QUESTIONS_FUNCTION_ID`** (`research/plan-questions`).
385
- - **Execution strategies:** Planner and optimizer call **`run(functionId, payload)`** with the **generic FuncX envelope** only (`goal`, `input`, `context`, `result?`, `args`, `attribution`). Responses are adapted via **`adaptExecutionPlanResult`** / **`adaptEvaluateResultResponse`** ([`genericExecutionFuncxEnvelope.ts`](src/execution-strategies/genericExecutionFuncxEnvelope.ts)).
386
- - **`runPlanWebScopeQuestions`:** Optional **`backend: "funcx"`** for **`research/plan-questions`**; **`setResearchPlanQuestionsFuncxInvoker`** for tests.
387
- - **`ExecutionType`:** Re-exported from **`@exellix/ai-tasks`** via local [`executionType.ts`](src/types/executionType.ts) (`DIRECT`) because **`@exellix/ai-skills`** no longer exports this symbol on supported versions.
388
- - **`@x12i/funcx` ≥ 3.8.2:** **`unwrapFuncxRunValue`** delegates to **`getRunJsonResult`** (use **3.8.2+** for current normalization behavior). Re-exports: **`getRunJsonResult`**, **`isHttpRunSuccessBody`**, **`genericExecutionEnvelopeJsonSchema`**, **`buildAskAttribution`**, type **`GenericExecutionEnvelope`**.
389
-
390
- ## [7.1.2] - 2026-05-06
391
-
392
- ### Added
393
-
394
- - **`narrix.webScopeQuestions`:** optional explicit web-scope questions on `RunTaskRequest.narrix`; when `webScopeTemplates` is unset, the NARRIX preprocessor runs `@exellix/narrix-web-scoper` **`scopeQuestionPack`** and stores a normalized `WebScoperResult` in `executionMemory.webContext`.
395
- - **`runPlanWebScopeQuestions`** (and **`parseAndValidatePlanWebScopeQuestionsOutput`**, **`buildPlanWebScopeQuestionsUserPrompt`**) for AI-driven web-scope planning; FuncX path uses **`research/plan-questions`** (see **Unreleased** / **`FUNCX_RESEARCH_PLAN_QUESTIONS_FUNCTION_ID`**). FR tracker: **`documenations/funcx-scoping-integration-gaps.md`** §6.
396
-
397
- ### Documentation
398
-
399
- - **`documenations/web-scoping-in-ai-tasks.md`**, **README**, **RUNTASK_REQUEST.md:** documented `webScopeQuestions` shape and precedence vs templates.
400
-
401
- ## [7.1.1] - 2026-05-06
402
-
403
- ### Added
404
-
405
- - **Package root type exports:** `XynthesizedMemory`, `SmartInputConfig`, `XynthesizedDestinationScope`, `XynthesizedOutputConfig`, `ExecutionStrategyInvocation`, `ExecutionStrategyPhase`, and `ExecutionStrategyWrapperKey` are re-exported from `@exellix/ai-tasks` alongside `RunTaskRequest`, so hosts can depend on stable names instead of `NonNullable<RunTaskRequest['xynthesized']>` or `RunTaskRequest['executionStrategies'][number]`.
406
-
407
- ### Documentation
408
-
409
- - **CHANGELOG discipline:** Documented that `package.json` is authoritative for the shipped semver and pointed cross-version migration readers at `BREAKING-CHANGES.md` / `RUNTASK_REQUEST.md` when intermediate entries are missing.
410
-
411
- _Note: Releases **after 6.0.1** through **before 7.1.1** were not listed here chronologically; consult git history and `BREAKING-CHANGES.md` for that span._
412
-
413
- ## [6.0.1] - 2026-05-05
414
-
415
- ### Fixed
416
-
417
- - **Synthesis E2E gate:** `test/synthesis/e2e-synthesis-real.test.ts` no longer requires `LLM_MODEL_STRONG` / `LLM_MODEL_NORMAL`; it runs when **`RUN_SYNTHESIS_E2E=1`** and a recognized provider key is set (`OPEN_ROUTER_KEY`, `GROK_API_KEY`, etc.). Warns when a model env var is missing.
418
-
419
- ### Documentation
420
-
421
- - **Xynthesis upstream work:** [`documenations/xynthesis-upstream-fixes-checklist.md`](documenations/xynthesis-upstream-fixes-checklist.md) (Activix `diagnostics.owner`, `jobId`/`taskId` hardening in `runSidekickGatewayCall`, tests to add in xynthesis).
422
-
423
- ## [6.0.0] - 2026-05-04
424
-
425
- ### Breaking
426
-
427
- - **`runTask` / `RunTaskRequest`:** `agentId`, `jobTypeId`, and `taskTypeId` are **required** again (aligned with `@exellix/ai-skills` `RunSkillRequest`). `runTask()` calls **`assertRequiredRunSkillCorrelation`** and throws if any value is missing or whitespace-only.
428
- - **`TaskRequestBuilder.build()`** throws unless those three fields were set (use **`withAiSkillsCorrelation`** or **`withAgentId` / `withJobTypeId` / `withTaskTypeId`**).
429
- - **`TaskConvenienceMethods.executeDirect`** now requires an **`options`** object including **`agentId`**, **`jobTypeId`**, and **`taskTypeId`** (third argument is no longer optional).
430
- - **`TaskConvenienceMethods.executeWithType`** now requires the **`options`** argument (same correlation fields as `RunTaskRequest`).
431
-
432
- ### Added
433
-
434
- - Exported **`assertRequiredRunSkillCorrelation`** from the package root for hosts that validate payloads before calling `runTask`.
435
-
436
- ## [5.7.1] - 2026-05-04
437
-
438
- ### Fixed
439
-
440
- - **Types:** `RunTaskRequest` now **omits and re-declares** `agentId`, `jobTypeId`, and `taskTypeId` as **optional**, matching `runTask()` usage and latest `@exellix/ai-skills` `RunSkillRequest` where those fields are required. Callers can still pass them when the gateway requires them.
441
-
442
- ## [5.7.0] - 2026-05-04
443
-
444
- ### Added
445
-
446
- - **RunTask request contract documentation:** [`RUNTASK_REQUEST.md`](RUNTASK_REQUEST.md) — normative field list, template merge precedence, `executionMemory` vs `jobMemory.execution`, `executionPipeline` semantics, xynthesis visibility notes, and examples.
447
- - **JSON Schema fragment:** [`documenations/schemas/v1/run-task-request.json`](documenations/schemas/v1/run-task-request.json) and OpenAPI component `RunTaskRequestSubset` in [`documenations/schemas/openapi-3.1-components.yaml`](documenations/schemas/openapi-3.1-components.yaml).
448
- - **Request shape helpers** (exported from package root): `normalizeRunTaskRequest`, `collectRunTaskRequestWarnings`, `collectExecutionPipelineWarnings`, `isRunTaskRequestWarningsEnabled`.
449
- - **Env-gated diagnostics:** `AI_TASKS_REQUEST_WARNINGS=1` (also `true` / `yes`) logs structured JSON for deprecated duplicate fields, ignored pipeline steps, and observability hints at the start of each `runTask` call.
450
-
451
- ### Changed
452
-
453
- - **Types:** `RunTaskRequest` documents deprecated mirrors: optional root `question`, `inputs`, and `jobInput` (typed for discoverability; removal deferred to a future major after hosts migrate).
454
-
455
- ### Notes
456
-
457
- - **Additive / non-breaking:** Runtime merge behavior is unchanged; warnings are opt-in via env.
458
- - **Cross-package:** Minimum orchestrator (e.g. graph-engine) version is **not declared** in `@exellix/ai-tasks` — follow the consuming app’s pinned `@exellix/ai-tasks` range; see `RUNTASK_REQUEST.md` § Orchestrator integration.
1
+ # Changelog
2
+
3
+ All notable changes to `@exellix/ai-tasks` are documented here.
4
+
5
+ The published **npm version** always matches **`version`** in [`package.json`](package.json). If this file skips a semver, treat [`BREAKING-CHANGES.md`](BREAKING-CHANGES.md) and [`RUNTASK_REQUEST.md`](RUNTASK_REQUEST.md) as the source of truth for cross-version upgrades.
6
+
7
+ ## [10.1.1] - 2026-06-24
8
+
9
+ ### Changed
10
+
11
+ - **Graphenix alignment:** all `@x12i/graphenix-*` packages **^2.11.0** (2.11 train).
12
+ - `traceLifecycle.ts` adapter prefers GTF-FR-001 exports from `@x12i/graphenix-trace-format` when present; falls back to local impl until upstream exports `markUnitStarted` / `recordModelInvocation*`.
13
+
14
+ ## [10.1.0] - 2026-06-24
15
+
16
+ ### Added
17
+
18
+ - **AT-CR-001:** Dual-write v2 `executionTrace` indexes during node-plan execution — `unitExecutions`, `modelInvocations`, and `nodeExecutions` stay in sync with `unit.*` / `model.invocation.*` events when `RunTaskRequest.executionTrace` is present.
19
+ - Lifecycle helpers in [`src/node-execution/traceLifecycle.ts`](src/node-execution/traceLifecycle.ts) (GTF-FR-001-compatible API; delegates event append to `@x12i/graphenix-trace-format`).
20
+ - Observation sink for PRE / MAIN / POST plan units → gateway `usage` / `cost` on `modelInvocations` when available.
21
+ - Tests: [`test/trace/executionTraceDualWrite.test.ts`](test/trace/executionTraceDualWrite.test.ts) (T1–T6).
22
+
23
+ ### Changed
24
+
25
+ - **Graphenix alignment:** all `@x12i/graphenix-*` packages **^2.10.0** (bundled with AT-CR-001).
26
+ - Requires `@x12i/graphenix-trace-format` **^2.10.0** (index dual-write; upstream GTF-FR-001 export planned).
27
+
28
+ ## [10.0.13] - 2026-06-20
29
+
30
+ ### Changed
31
+
32
+ - **`@exellix/ai-skills`** **^6.12.5** (graphenix 2.7.3 + catalox 5.9.8 train).
33
+ - **`@x12i/catalox`** / **`@x12i/catalox-contracts`** **^5.9.8**.
34
+
35
+ ## [10.0.12] - 2026-06-20
36
+
37
+ ### Changed
38
+
39
+ - **Graphenix alignment:** all `@x12i/graphenix-*` packages **^2.7.3** (full format suite train).
40
+
41
+ ## [10.0.11] - 2026-06-20
42
+
43
+ ### Fixed
44
+
45
+ - **`@exellix/fact-guard-*` dependencies:** publish semver **`^1.0.1`** in `dependencies` (10.0.10 accidentally shipped **`file:../fact-guard/...`** in `dependencies`, which breaks installs outside this monorepo).
46
+ - **`prepublishOnly`:** fail fast if `file:` / `link:` / `workspace:` specs remain in `package.json` at publish time.
47
+
48
+ ### Changed
49
+
50
+ - **Graphenix alignment:** all `@x12i/graphenix-*` packages **^2.7.2** (compiler emits `webQueryTemplate` on `webScope` units; legacy `webScoping` rejected on plans).
51
+ - **`@exellix/ai-skills`** **^6.12.4** (graphenix 2.7.2 train).
52
+ - **Web scope validation:** enabled `webScope` PRE units require non-empty **`unitParams.webQueryTemplate`** (or `webQueryTemplates[]`); rejects legacy **`webScoping`** / NARRIX question fallbacks on unit params (`LEGACY_WEB_SCOPE_UNIT_PARAMS`, `WEB_QUERY_TEMPLATE_REQUIRED`, `WEB_QUERY_TEMPLATE_UNRESOLVED`).
53
+
54
+ ## [10.0.10] - 2026-06-20
55
+
56
+ ### Changed
57
+
58
+ - **Web scoping:** migrate from **`@exellix/narrix-web-scoper`** to published **`@x12i/web-scoper@^1.1.1`**. New adapter module **`src/web-scope/`** compiles graph/task input to **`{ question, record?, options? }`** or **`searchMany`** packs; **`executionMemory.webContext`** uses **`{ ok, context?, error? }`** (replaces legacy **`available`**).
59
+ - **Standalone PRE `webScope` unit:** playground and Graphenix plans invoke the same adapter via **`unitParams.enableWebScope`** + **`unitParams.options`**.
60
+ - **Docs:** README, RUNTASK_REQUEST, and **`documenations/web-scoping-in-ai-tasks.md`** updated for the new contract.
61
+
62
+ ### Removed
63
+
64
+ - Dependency on **`@exellix/narrix-web-scoper`**. Legacy **`narrix.webScoping`** / template fields are still mapped at invoke time where supported.
65
+
66
+ ## [10.0.9] - 2026-06-18
67
+
68
+ ### Changed
69
+
70
+ - **Graphenix alignment:** all `@x12i/graphenix-*` packages **^2.7.0** (fact-guard schema/validation/compiler train; optional `unitParams.factGuard` fully validated upstream).
71
+ - **`@exellix/ai-skills`** **^6.12.3** (graphenix 2.7.0 train).
72
+
73
+ ## [10.0.8] - 2026-06-18
74
+
75
+ ### Changed
76
+
77
+ - **`@exellix/fact-guard-*`** **^1.0.0** re-scoped from `@x12i` to **`@exellix`** (npm publish train).
78
+ - **`@exellix/xynthesis`** **^4.8.4**.
79
+
80
+ ## [10.0.7] - 2026-06-18
81
+
82
+ ### Changed
83
+
84
+ - **Graphenix alignment:** all `@x12i/graphenix-*` packages **^2.6.0** (optional `unitParams.factGuard` on sub-action units; validates against graphenix `FactGuardStepConfig`).
85
+ - **`@exellix/ai-skills`** **^6.12.2** (graphenix 2.6.0 train).
86
+ - **`@exellix/fact-guard-*`** **^1.0.0** (npm semver; was monorepo `file:` link).
87
+
88
+ ### Added
89
+
90
+ - Node-plan validation tests for graphenix 2.6.0 fact-guard golden fixtures (`node-synthesis-fact-guard-*`, `node-polish-fact-guard-enabled`, `node-audit-fact-guard-nested`).
91
+
92
+ ## [10.0.6] - 2026-06-17
93
+
94
+ ### Added
95
+
96
+ - **Fact-guard sub-actions (optional):** optional atom integrity checks on PRE synthesis, POST audit/polish/scoping, and execution-strategy planner/optimizer hops via **`@exellix/fact-guard-*` ^1.0.0**. Disabled by default (`factGuard.enabled: false` or absent = unchanged behavior). Kill-switch: **`FACT_GUARD_DISABLED=1`**. MAIN **`runSkill`** path unchanged.
97
+ - **`FactGuardStepConfig`** on `SynthesisConfig`, `AuditConfig`, `PolishConfig`, `ExecutionStrategyInvocation`, and `aiScopingOptions`.
98
+ - **`npm run test:fact-guard`** — integration tests (mocked LLM).
99
+
100
+ ### Changed
101
+
102
+ - **`@exellix/xynthesis`** **^4.8.3** (fact-guard passthrough on `executeXynthesisAction`).
103
+
104
+ ## [10.0.5] - 2026-06-17
105
+
106
+ ### Changed
107
+
108
+ - **Graphenix alignment:** all `@x12i/graphenix-*` packages **^2.5.0** (CRS-FRS-003 train; jobMemory.context authoring preserved upstream).
109
+ - **`@exellix/ai-skills`** **^6.12.1**consumes graphenix 2.5.0 train.
110
+
111
+ ## [10.0.4] - 2026-06-15
112
+
113
+ ### Changed
114
+
115
+ - **Graphenix alignment:** all `@x12i/graphenix-*` packages **^2.4.0** (suite train bump from 2.3.0).
116
+ - **`@exellix/ai-skills`** **^6.12.0** consumes graphenix 2.4.0 train.
117
+
118
+ ## [10.0.2] - 2026-06-14
119
+
120
+ ### Added
121
+
122
+ - **Graphenix 2.1.0 alignment:** `@x12i/graphenix-plan-format` and `@x12i/graphenix-executable-contracts` **^2.1.0** rejects plans with `unitParams.synthesisInputStrategy` (`LEGACY_SYNTHESIS_INPUT_STRATEGY_ON_PLAN`).
123
+ - **`resolveSynthesisContextStrategyKey`** PRE synthesis template key from skill catalog (`@exellix/ai-skills` **^6.11.0**); path-driven source material via `invokeContract.reads` / `memoryPaths`.
124
+ - Validation test for legacy synthesis field on compiled plans.
125
+
126
+ ### Changed
127
+
128
+ - **`synthesisConfigFromUnit`** strips `unitParams.synthesisInputStrategy` from plan wire; no longer defaults plan enum to `policy`.
129
+ - Wire fixture `graph-engine-pre-synthesis.json` path-only synthesis unit (no `synthesisInputStrategy`).
130
+ - **Docs:** README / RUNTASK_REQUEST — skill-catalog-only template key; graphenix **2.1.0** deps.
131
+
132
+ ## [10.0.1] - 2026-06-13
133
+
134
+ ### Added
135
+
136
+ - **Graphenix 2.0.3 alignment:** `@x12i/graphenix-executable-contracts` and `@x12i/graphenix-plan-format` **^2.0.3** — orchestration strategy registry (`plan`, `split`, `merge`, `pick-best`, `webScope`), path-driven synthesis units (`invokeContract.reads`).
137
+ - Golden tests for graphenix plan fixtures: `node-synthesis-execution-memory-only`, `node-split-merge`, `node-web-scope-standalone`.
138
+ - **Synthesis path bridge:** `synthesisConfigFromUnit` copies `invokeContract.reads` `memoryPaths` when omitted; defaults `synthesisInputStrategy` to `policy` for path-driven plans.
139
+
140
+ ### Changed
141
+
142
+ - Graph authoring fixtures: removed deprecated `preInputStrategy` from `aiTaskStrategies`.
143
+ - Wire fixture `graph-engine-pre-synthesis.json` aligned with graphenix 2.0.3 compile output (`reads`: `input`, `executionMemory`).
144
+ - **Docs:** README Graphenix 10.x section; downstream [graph-model-change-2026-06-13.md](../temp/downstream/graph-model-change-2026-06-13.md).
145
+
146
+ ## [10.0.0] - 2026-06-13
147
+
148
+ ### Breaking
149
+
150
+ - **Removed** `taskConfiguration` and `executionPipeline` from `RunTaskRequest` — use frozen `nodePlan` only.
151
+ - **Removed** compile pipeline (`src/compile/*`, `taskConfigurationCompileError`).
152
+
153
+ ### Added
154
+
155
+ - **PRE synthesis wiring:** `resolveRawTemplate(role: synthesisContext, strategyKey)` via `@exellix/ai-skills` **^6.10.0**.
156
+ - **PRE/POST orchestration runtime:** `externalPreUtility` (`plan`, `split`, `webScope`), `externalPostUtility` (`merge`, `pick-best`), multi-shard MAIN + FuncX fan-in.
157
+ - **Web scope:** Narrix preprocessor `enableWebScope` + standalone `webScope` unit.
158
+ - **Strategy catalogs:** synthesis-input, pre/post orchestration (publish via `npm run publish:task-strategies`).
159
+ - **nodePlan audit parity:** real `reRunMain` + synthesized `contextMarkdown`.
160
+
161
+ ### Changed
162
+
163
+ - **`@exellix/ai-skills`** **^6.10.0** (support templates + single `professional-answer` Catalox seed).
164
+
165
+ ## [9.1.1] - 2026-06-13
166
+
167
+ ### Changed
168
+
169
+ - **Run-task handoff closure:** Stale docs updated — node template scope is `nodePlan.invokeContract.taskVariable`, not `executionMemory.taskVariables`.
170
+ - **`@exellix/ai-skills`** **^6.9.1** (WM source-of-truth alignment).
171
+
172
+ ### Added
173
+
174
+ - Golden parity tests for all **7** node plan fixtures (`node-post-audit`, `node-input-synthesis-profile` added to `golden-fixtures.test.ts`).
175
+
176
+ ## [9.1.0] - 2026-06-09
177
+
178
+ ### Changed
179
+
180
+ - **Graphenix 2.1.0 alignment:** Accept parent plan format `"executable-plan"` (v2) and trace format `"execution-trace"` (v2).
181
+ - **Snapshot isolation:** `overlayUnitModelOnRequest` ignores concrete wire ids in `resolvedInvocationSnapshot.modelId`, preferring authored `modelSelection` (CR-1.3).
182
+
183
+ ## [9.0.5] - 2026-06-08
184
+
185
+ ### Changed
186
+
187
+ - **`@x12i/funcx`** **^4.9.5** (direct dependency + npm override) — aligns PRE/POST xynthesis with funcx catalog gate via **`@x12i/ai-profiles`** (requires funcx ≥ 4.9.5; fixes subnet-style PRE `Unknown model "google/gemini-2.5-flash-lite"`).
188
+ - **`@x12i/ai-profiles`** **^3.4.0**, **`@exellix/xynthesis`** **^4.6.5** (publish **4.6.6** for funcx bump).
189
+
190
+ ## [9.0.1] - 2026-06-07
191
+
192
+ ### Changed
193
+
194
+ - Graphenix dependency alignment with latest CP release train: **`graphenix-plan-format`** and **`graphenix-trace-format`** @ **^1.1.1**; dev **`graphenix-authoring-format`** @ **^1.2.1**, **`graphenix-plan-compiler`** @ **^1.1.1**. **`graphenix-executable-contracts`** remains **^1.1.0**.
195
+ - **`npm` overrides:** Pin transitive **`@x12i/funcx`** to **^4.6.0** (aligns with **`@exellix/xynthesis` ≥ 4.6.2** and **`@x12i/logxer` ^4.6.0**).
196
+
197
+ ## [9.0.0] - 2026-06-07
198
+
199
+ ### Changed (breaking)
200
+
201
+ - **Graphenix node execution v2.1:** `runTask()` requires **`nodePlan`** (`NodeExecutionPlan`); production path is **`executeNodeFromPlan`** (unit loop + per-unit model selection). Legacy **`executionPipeline`** / **`taskConfiguration`** compile is **off the hot path** (still exported for migration tooling).
202
+ - **Forbidden wire fields** when `nodePlan` is set: root **`modelConfig`**, **`executionPipeline`**, **`taskConfiguration`** — model slots come from `nodePlan.executionUnits[].modelSelection`.
203
+ - **`executionTrace`** (optional): graphenix v2 trace append (`unit.*`, `model.invocation.*`).
204
+
205
+ ### Added
206
+
207
+ - **`src/node-execution/`** — unit dispatch, Narrix units, PRE/MAIN/POST handlers, trace bridge.
208
+ - Dependencies: **`@x12i/graphenix-executable-contracts`**, **`graphenix-plan-format`**, **`graphenix-trace-format`** @ **^1.1.0**; dev **`graphenix-plan-compiler`** @ **^1.1.0**.
209
+ - Docs: [`documenations/node-execution-graphenix.md`](documenations/node-execution-graphenix.md), [`reports/graphenix-graph-engine-handoff.md`](../archived/ai-tasks/reports/graphenix-graph-engine-handoff.md); updated [`RUNTASK_REQUEST.md`](RUNTASK_REQUEST.md) and JSON schema.
210
+
211
+ ### Fixed
212
+
213
+ - **`xynthesizedOutput`:** PRE synthesis restores `request.xynthesized` updates and **`response.xynthesizedPatch`** for graph-engine merge (`applySynthesisPreStepToRequest`).
214
+ - **Polish POST:** wire **`structuredOutput`** (JSON mode) on polish LLM calls; node-execution POST handler merges **`parsed`** and **`intermediateSteps`**.
215
+
216
+ ## [8.8.0] - 2026-06-05
217
+
218
+ ### Fixed
219
+
220
+ - **MAIN gateway wire shape:** `prepareMainSkillModelConfigForInvoke` applies ai-skills **`normalizeModelConfigForGatewayInvoke`** after profile resolution so MAIN invoke sends `{ provider, model }` tuple (never composite `openrouter/…` slug with `provider: unspecified`).
221
+ - Consumes **`skillModel`** slot only for MAIN routing — no graph `modelConfig` merge at the execution boundary.
222
+
223
+ ### Changed
224
+
225
+ - Bumped **`@exellix/ai-skills`** to **^6.5.0**, **`@exellix/xynthesis`** to **^4.6.0**, **`@x12i/ai-profiles`** to **^3.2.0** (`normalizeInvokeModel` contract).
226
+
227
+ ## [8.7.0] - 2026-06-05
228
+
229
+ ### Changed
230
+
231
+ - Bumped **`@exellix/ai-skills`** to **^6.4.0** and **`@exellix/xynthesis`** to **^4.5.0** (gateway **≥ 10.1.0**, **`@x12i/ai-profiles` ^3.0.0**, **`@x12i/activix` ^8.6.0**).
232
+ - Added direct **`@x12i/ai-profiles` ^3.0.0** dependency so orchestrator model resolution aligns with ai-skills / xynthesis (avoids hoisted **2.1.x** from legacy narrix transitive paths).
233
+ - README stack alignment table and gateway 10.x notes updated for the new minimums.
234
+
235
+ ## [8.6.3] - 2026-06-05
236
+
237
+ ### Fixed (CR-13)
238
+
239
+ - **`prepareMainSkillModelConfigForInvoke`:** Resolves `skillModel` / `llmCall.model` profile/choice aliases to concrete gateway wire ids once before ai-skills invoke (via `resolveModelReference`).
240
+ - **`MAIN_SKILL_MODEL_RESOLUTION_FAILED`:** New `RunTaskModelResolutionError` code when MAIN alias resolution fails; Activix classification event `skill_model_resolution_failed`.
241
+ - Bumped **`@exellix/ai-skills`** to **^6.3.0** for Optimixer `modelProfile` split + `SKILL_MODEL_RESOLUTION_FAILED`.
242
+
243
+ ## [8.5.0] - 2026-06-03
244
+
245
+ ### Changed (breaking)
246
+
247
+ - **Execution strategies:** planner/optimizer invoke **`@exellix/xynthesis` ≥ 4.4.0** (`execution-plan`, `execution-evaluate-result`) with `modelConfig.preActionModel` / `postActionModel`. Removed direct `@x12i/funcx` `run()` from ai-tasks.
248
+ - **`runPlanWebScopeQuestions`:** xynthesis `plan-web-scope-questions` only; removed `backend: "funcx"`.
249
+ - **Catalog:** `runtimeKind: "xynthesis-action"`, `defaultSidekickAction` on planner/optimizer rows.
250
+
251
+ ### Added
252
+
253
+ - `runPlannerViaXynthesis`, `runOptimizerViaXynthesis`, `setExecutionStrategyActionInvoker`, `setPlanWebScopeQuestionsActionInvoker`, `resolveSafeExecutionStrategyCatalogDefaultSidekickAction`.
254
+
255
+ ### Removed
256
+
257
+ - `setFuncxExecutionStrategyInvoker`, `setResearchPlanQuestionsFuncxInvoker`, direct `@x12i/funcx` dependency.
258
+
259
+ ## [8.6.0] - 2026-06-04
260
+
261
+ ### Removed (breaking)
262
+
263
+ - **Studio skill analysis** removed from the runtime package: **`analyzeRunTaskRequest`**, re-exports of **`buildSkillRequestAnalysisPacket`**, **`formatSkillRequestAnalysisMarkdown`**, **`FUNCX_ANALYZE_GATEWAY_INVOKE_REQUEST_ID`**, and related analysis types. Invoke preflight belongs in **studio / skills-manager** — see **[`documenations/studio-skill-invoke-preflight.md`](documenations/studio-skill-invoke-preflight.md)** (suggested design, not mandatory). Orchestrator static checks remain: **`validateRunTaskConfig`**, **`analyzeExpectedRunTaskInput`**.
264
+
265
+ ## [8.5.3] - 2026-06-04
266
+
267
+ ### Changed
268
+
269
+ - Bumped **`@exellix/xynthesis`** to **^4.4.5** and **`@exellix/ai-skills`** to **^6.0.2** for Optimixer **max-token retry** on PRE/POST (xynthesis) and MAIN (ai-skills): one automatic re-invoke when output hits the token limit and Optimixer returns **`retryPrediction`** (no host **`maxTokens`** required).
270
+
271
+ ### Added
272
+
273
+ - Unit test **`runPostStepLlmCall.maxTokenRetry.test.ts`** (mock Optimixer + synthesis invoker; no live LLM).
274
+
275
+ ## [8.4.0] - 2026-06-01 — `preActionModel`, `skillModel`, `postActionModel`. **`xynthesisModel` removed** (validation rejects with `NON_CANONICAL_MODEL_CONFIG`). PRE uses `preActionModel`; POST uses `postActionModel`.
276
+ - **`@x12i/ai-profiles` ^2.0.0:** Required `catalogLane` on profile resolution; ai-tasks defaults `"text"` ( `"image"` for `vision` ). Registry source defaults to `auto`.
277
+ - **`@exellix/xynthesis` ^4.2.1:** Minimum for ai-profiles v2 alignment.
278
+
279
+ ### Added
280
+
281
+ - **`defaultAiTasksResolveAiProfileOptions`**, slot helpers `resolvePreActionModel` / `resolvePostActionModel`, builder `withPreActionModel` / `withPostActionModel`.
282
+
283
+ ### Removed
284
+
285
+ - Exports **`resolveXynthesisModelForPre`**, **`getXynthesisModelFromSlots`**, builder **`withXynthesisModel`**.
286
+
287
+ ## [Unreleased — prior notes]
288
+
289
+ ### Changed
290
+
291
+ - **`@x12i/ai-profiles` ≥1.8.0:** Direct dependency bumped from **^1.7.2**; **`npm` override** pins transitive `@x12i/ai-profiles` to this package's direct version (required fix in **1.8.0** for profile alias resolution). Live coverage: `npm run test:live` → `test/e2e/ai-profiles-live.test.ts` (registry `auto` + real xynthesis alias call).
292
+ - **`@exellix/xynthesis` ^4.1.8:** Fixes OpenRouter **400 invalid model ID** on PRE/POST hops (wire id was `openrouter/<slug>` instead of bare OR API slug). ai-tasks invocation routing aligned (skill gateway shape vs xynthesis Funcx slug). Requires **≥4.1.8** — do not use **4.1.7** for alias-based xynthesis calls with OpenRouter.
293
+ - **`@x12i/logxer` ^4.4.2:** Package diagnostics use **`createLogxer`** with diagnostic catalog (`.metadata/log-diagnostics.json`), **`warnCode`** / **`DebugLogAbstract`**, **`fieldEvidence`**, **`runWithLogContext`** during **`runTask()`**, and in-process **`getAiTasksJobLogs`** for debug UIs. Override pins transitive logxer to **4.4.2** (no nested **4.4.0** from `@x12i/optimixer`).
294
+
295
+ ## [8.1.1] - 2026-05-28
296
+
297
+ ### Changed
298
+
299
+ - **`npm` overrides:** Pin transitive **`@x12i/activix`**, **`@x12i/catalox`**, and **`@x12i/funcx`** to this package's direct versions so graph-engine and other consumers resolve a single copy (no nested **funcx 3.9.x** / **activix 7.x** / **catalox 4.x** from `@exellix/narrix-web-scoper` or `@x12i/funcx`).
300
+
301
+ ## [8.1.0] - 2026-05-28
302
+
303
+ ### Added
304
+
305
+ - **Model profile aliases (`@x12i/ai-profiles`):** Resolve ai-profiles profile/shortcut names and legacy tiers (`weak`, `strong`, `default`) to concrete provider model ids for **ai-skills MAIN** (`skillModel` / `llmCall.model`). Keep **ai-profiles aliases** on **xynthesis** paths (`modelConfig.xynthesisModel`, POST/PRE/scoping `llmCall.model`). Exports: `resolveModelReference`, `resolveModelReferenceForXynthesis`, `normalizeXynthesisModelAlias`, `resolveRunTaskModelReferences`, `isResolvableModelAlias`, `formatResolvedProfileModelId`.
306
+ - **Dual-root `RunTaskRequest.inputs`:** Optional top-level plural payload bucket (distinct from `executionMemory.inputs`); forwarded on MAIN like `input`.
307
+
308
+ ### Changed
309
+
310
+ - **Smart-input validation context:** `inputs.*` resolves against top-level **`request.inputs`** only (not `executionMemory.inputs`). Use **`executionMemory.inputs.*`** for execution-memory plural paths.
311
+ - **PRE `memoryPaths`:** Dual-root fallback — `executionMemory.input.<rest>` falls back to `executionMemory.inputs.<firstKey>.<rest>` when singular path is missing.
312
+ - **`@exellix/xynthesis` ^4.0.6:** Xynthesis LLM calls use alias-only model resolution (`resolveModelReferenceForXynthesis`); default post-step model is **`balanced`** when omitted. **`skillModel`** resolution for **`@exellix/ai-skills` ^5.8.6** unchanged.
313
+ - **Validation:** `modelConfig.xynthesisModel` rejects concrete provider ids; accepts ai-profiles aliases (replaces 8.0.0 `MODEL_CONFIG_NOT_RESOLVED` for legacy tiers on both slots).
314
+
315
+ ### Documentation
316
+
317
+ - README — [Model profile aliases](#model-profile-aliases-x12iai-profiles); [`.docs/ai-tasks-model-profile-aliases-7x.md`](../archived/ai-tasks/.docs/ai-tasks-model-profile-aliases-7x.md).
318
+
319
+ ## [8.0.9] - 2026-05-28
320
+
321
+ ### Changed
322
+
323
+ - **Dependencies (graph-engine alignment):** **`@x12i/funcx` ^4.2.0** (no 3.9.x path), **`@x12i/activix` ^8.0.5**, **`@x12i/catalox` ^5.1.1**; **`@x12i/funcx/functions`** re-exports (`FUNCX_EXECUTION_PLAN_FUNCTION_ID`, etc.).
324
+
325
+ ## [8.0.8] - 2026-05-27
326
+
327
+ ### Added
328
+
329
+ - **`getModelCapabilities`** re-export from `@exellix/xynthesis` (replaces removed **`MODEL_CAPABILITIES`** constant).
330
+
331
+ ### Fixed
332
+
333
+ - **Exports:** Removed broken **`MODEL_CAPABILITIES`** re-export from `@exellix/xynthesis` 4.x (symbol removed upstream). Use **`getModelCapabilities(modelId)`** from `@exellix/ai-tasks` or `@exellix/xynthesis` instead.
334
+
335
+ ### Deprecated
336
+
337
+ - **`8.0.7`** — do not use; re-exported **`MODEL_CAPABILITIES`** against **`@exellix/xynthesis` ≥ 4.x** where the symbol no longer exists. Upgrade to **8.0.8+**.
338
+
339
+ ## [7.7.1] - 2026-05-25
340
+
341
+ ### Added
342
+
343
+ - **`RunTaskRequest.taskConfiguration`:** Graph-engine may forward the node `taskConfiguration` blob; **`compileTaskConfigurationOnRunTaskRequest`** (also at **`runTask()`** entry) maps **`aiTaskStrategies.pre: "synthesis"`** and **`aiTaskProfile.inputSynthesis.enabled`** into PRE **`synthesized-context`** + **`includeContextInPrompt: true`**. Exports **`TaskConfigurationCompileError`**, **`AI_TASK_PRE_ENABLE_SYNTHESIS`**.
344
+
345
+ ### Documentation
346
+
347
+ - **`RUNTASK_REQUEST.md`**, **README**, [`.docs/flow-io/xynthesis-pre.md`](../archived/ai-tasks/.docs/flow-io/xynthesis-pre.md), graph-engine task [`reports/graph-engine-task-pre-synthesis-compile.md`](../archived/ai-tasks/reports/graph-engine-task-pre-synthesis-compile.md).
348
+ - Fixtures: [`test/fixtures/run-task/graph-engine-pre-synthesis.json`](test/fixtures/run-task/graph-engine-pre-synthesis.json), [`test/fixtures/graphs/graph-qcrbz6t-pre-synthesis.json`](test/fixtures/graphs/graph-qcrbz6t-pre-synthesis.json).
349
+
350
+ ## [7.6.4] - 2026-05-18
351
+
352
+ ### Changed
353
+
354
+ - **`@exellix/ai-skills` ≥ 5.5.0:** Dependency **5.5.2**; `pickRunSkillRequestFields` forwards top-level **`executionMemory`** on `runSkill` (native `buildWorkingMemory` support). Removed the 7.6.3 `jobMemory.executionMemory` nest bridge.
355
+
356
+ ### Dependencies
357
+
358
+ - **`@exellix/ai-skills`:** `5.5.2` (was `5.4.0`).
359
+
360
+ ## [7.6.3] - 2026-05-18
361
+
362
+ ### Fixed
363
+
364
+ - **Gateway `executionMemory` paths (interim):** `DirectExecutionStrategy` nested `request.executionMemory` on `jobMemory.executionMemory` before `runSkill` for ai-skills **&lt; 5.5.0**. Superseded in **7.6.4** by native top-level forward. Strips `RunTaskRequest`-only fields from the `runSkill` payload.
365
+
366
+ ### Documentation
367
+
368
+ - **Change request:** [`reports/change-request-tasknode-variable-scopes-7.6.2.md`](../archived/ai-tasks/reports/change-request-tasknode-variable-scopes-7.6.2.md) — upstream work for `@exellix/ai-skills`, `@x12i/rendrix`, and optional gateway path aliases.
369
+
370
+ ## [7.6.2] - 2026-05-18
371
+
372
+ ### Fixed
373
+
374
+ - **`smartInput.strict`:** Accepted on `RunTaskRequest.smartInput` and forwarded through `normalizeSmartInputConfig` to the gateway path.
375
+
376
+ ### Changed
377
+
378
+ - **MAIN template variables:** `runTask` forwards **`variables`** (job/graph bucket) **as-is** via `passthroughJobTemplateVariables` no longer folds `jobContext`, `input`, `xynthesized`, or `smartInput` into `variables`. Node scope remains on **`executionMemory.taskVariables`**.
379
+
380
+ ### Documentation
381
+
382
+ - **`RUNTASK_REQUEST.md`:** TaskNode authoring map (`taskConfiguration`, `inputsConfig`, `taskVariable`, two-bucket `jobVariables` / `taskVariables`), dual `outputValidation`, `inputSynthesis` compile table, forbidden metadata.
383
+ - **README**, web-scoping doc, Narrix JSDoc: authoring path **`taskConfiguration.narrix`** (not `metadata.narrix`).
384
+
385
+ ### Schema
386
+
387
+ - **`run-task-request.json`:** `executionStrategyCatalogItems`, `smartInputRenderOptions`, Rendrix path objects, `smartInput.strict`, variable-bucket descriptions.
388
+
389
+ ## [7.6.0] - 2026-05-18
390
+
391
+ ### Added
392
+
393
+ - **`xynthesized.execution` scope:** `XynthesizedMemory.execution`, `XynthesizedDestinationScope` includes **`"execution"`**, PRE **`xynthesizedOutput.destination: "execution"`** writes and returns **`xynthesizedPatch.execution`** (same replace/merge semantics as job/task; no redirect to other buckets).
394
+ - **Smart-input:** `xynthesized.*` paths must use scope **`job`**, **`task`**, or **`execution`**; **`resolveXynthesizedSmartInputPath`** helper for in-package resolution against request **`xynthesized`**.
395
+ - **`TaskRequestBuilder.withXynthesizedExecution(key, value)`**.
396
+
397
+ ### Documentation
398
+
399
+ - **`RUNTASK_REQUEST.md`**, **`documenations/synthesized-context-guide.md`**, and **`documenations/schemas/v1/run-task-request.json`** updated for the execution bucket.
400
+
401
+ ## [7.2.0] - 2026-05-06
402
+
403
+ ### Changed
404
+
405
+ - **Breaking (exports):** Replaced **`AI_TASKS_FUNCX_*`** constants with **`FUNCX_EXECUTION_PLAN_FUNCTION_ID`** (`execution/plan`), **`FUNCX_EXECUTION_EVALUATE_RESULT_FUNCTION_ID`** (`execution/evaluate-result`), **`FUNCX_RESEARCH_PLAN_QUESTIONS_FUNCTION_ID`** (`research/plan-questions`).
406
+ - **Execution strategies:** Planner and optimizer call **`run(functionId, payload)`** with the **generic FuncX envelope** only (`goal`, `input`, `context`, `result?`, `args`, `attribution`). Responses are adapted via **`adaptExecutionPlanResult`** / **`adaptEvaluateResultResponse`** ([`genericExecutionFuncxEnvelope.ts`](src/execution-strategies/genericExecutionFuncxEnvelope.ts)).
407
+ - **`runPlanWebScopeQuestions`:** Optional **`backend: "funcx"`** for **`research/plan-questions`**; **`setResearchPlanQuestionsFuncxInvoker`** for tests.
408
+ - **`ExecutionType`:** Re-exported from **`@exellix/ai-tasks`** via local [`executionType.ts`](src/types/executionType.ts) (`DIRECT`) because **`@exellix/ai-skills`** no longer exports this symbol on supported versions.
409
+ - **`@x12i/funcx` 3.8.2:** **`unwrapFuncxRunValue`** delegates to **`getRunJsonResult`** (use **3.8.2+** for current normalization behavior). Re-exports: **`getRunJsonResult`**, **`isHttpRunSuccessBody`**, **`genericExecutionEnvelopeJsonSchema`**, **`buildAskAttribution`**, type **`GenericExecutionEnvelope`**.
410
+
411
+ ## [7.1.2] - 2026-05-06
412
+
413
+ ### Added
414
+
415
+ - **`narrix.webScopeQuestions`:** optional explicit web-scope questions on `RunTaskRequest.narrix`; when `webScopeTemplates` is unset, the NARRIX preprocessor runs `@exellix/narrix-web-scoper` **`scopeQuestionPack`** and stores a normalized `WebScoperResult` in `executionMemory.webContext`.
416
+ - **`runPlanWebScopeQuestions`** (and **`parseAndValidatePlanWebScopeQuestionsOutput`**, **`buildPlanWebScopeQuestionsUserPrompt`**) for AI-driven web-scope planning; FuncX path uses **`research/plan-questions`** (see **Unreleased** / **`FUNCX_RESEARCH_PLAN_QUESTIONS_FUNCTION_ID`**). FR tracker: **`documenations/funcx-scoping-integration-gaps.md`** §6.
417
+
418
+ ### Documentation
419
+
420
+ - **`documenations/web-scoping-in-ai-tasks.md`**, **README**, **RUNTASK_REQUEST.md:** documented `webScopeQuestions` shape and precedence vs templates.
421
+
422
+ ## [7.1.1] - 2026-05-06
423
+
424
+ ### Added
425
+
426
+ - **Package root type exports:** `XynthesizedMemory`, `SmartInputConfig`, `XynthesizedDestinationScope`, `XynthesizedOutputConfig`, `ExecutionStrategyInvocation`, `ExecutionStrategyPhase`, and `ExecutionStrategyWrapperKey` are re-exported from `@exellix/ai-tasks` alongside `RunTaskRequest`, so hosts can depend on stable names instead of `NonNullable<RunTaskRequest['xynthesized']>` or `RunTaskRequest['executionStrategies'][number]`.
427
+
428
+ ### Documentation
429
+
430
+ - **CHANGELOG discipline:** Documented that `package.json` is authoritative for the shipped semver and pointed cross-version migration readers at `BREAKING-CHANGES.md` / `RUNTASK_REQUEST.md` when intermediate entries are missing.
431
+
432
+ _Note: Releases **after 6.0.1** through **before 7.1.1** were not listed here chronologically; consult git history and `BREAKING-CHANGES.md` for that span._
433
+
434
+ ## [6.0.1] - 2026-05-05
435
+
436
+ ### Fixed
437
+
438
+ - **Synthesis E2E gate:** `test/synthesis/e2e-synthesis-real.test.ts` no longer requires `LLM_MODEL_STRONG` / `LLM_MODEL_NORMAL`; it runs when **`RUN_SYNTHESIS_E2E=1`** and a recognized provider key is set (`OPEN_ROUTER_KEY`, `GROK_API_KEY`, etc.). Warns when a model env var is missing.
439
+
440
+ ### Documentation
441
+
442
+ - **Xynthesis upstream work:** [`documenations/xynthesis-upstream-fixes-checklist.md`](documenations/xynthesis-upstream-fixes-checklist.md) (Activix `diagnostics.owner`, `jobId`/`taskId` hardening in `runSidekickGatewayCall`, tests to add in xynthesis).
443
+
444
+ ## [6.0.0] - 2026-05-04
445
+
446
+ ### Breaking
447
+
448
+ - **`runTask` / `RunTaskRequest`:** `agentId`, `jobTypeId`, and `taskTypeId` are **required** again (aligned with `@exellix/ai-skills` `RunSkillRequest`). `runTask()` calls **`assertRequiredRunSkillCorrelation`** and throws if any value is missing or whitespace-only.
449
+ - **`TaskRequestBuilder.build()`** throws unless those three fields were set (use **`withAiSkillsCorrelation`** or **`withAgentId` / `withJobTypeId` / `withTaskTypeId`**).
450
+ - **`TaskConvenienceMethods.executeDirect`** now requires an **`options`** object including **`agentId`**, **`jobTypeId`**, and **`taskTypeId`** (third argument is no longer optional).
451
+ - **`TaskConvenienceMethods.executeWithType`** now requires the **`options`** argument (same correlation fields as `RunTaskRequest`).
452
+
453
+ ### Added
454
+
455
+ - Exported **`assertRequiredRunSkillCorrelation`** from the package root for hosts that validate payloads before calling `runTask`.
456
+
457
+ ## [5.7.1] - 2026-05-04
458
+
459
+ ### Fixed
460
+
461
+ - **Types:** `RunTaskRequest` now **omits and re-declares** `agentId`, `jobTypeId`, and `taskTypeId` as **optional**, matching `runTask()` usage and latest `@exellix/ai-skills` `RunSkillRequest` where those fields are required. Callers can still pass them when the gateway requires them.
462
+
463
+ ## [5.7.0] - 2026-05-04
464
+
465
+ ### Added
466
+
467
+ - **RunTask request contract documentation:** [`RUNTASK_REQUEST.md`](RUNTASK_REQUEST.md) — normative field list, template merge precedence, `executionMemory` vs `jobMemory.execution`, `executionPipeline` semantics, xynthesis visibility notes, and examples.
468
+ - **JSON Schema fragment:** [`documenations/schemas/v1/run-task-request.json`](documenations/schemas/v1/run-task-request.json) and OpenAPI component `RunTaskRequestSubset` in [`documenations/schemas/openapi-3.1-components.yaml`](documenations/schemas/openapi-3.1-components.yaml).
469
+ - **Request shape helpers** (exported from package root): `normalizeRunTaskRequest`, `collectRunTaskRequestWarnings`, `collectExecutionPipelineWarnings`, `isRunTaskRequestWarningsEnabled`.
470
+ - **Env-gated diagnostics:** `AI_TASKS_REQUEST_WARNINGS=1` (also `true` / `yes`) logs structured JSON for deprecated duplicate fields, ignored pipeline steps, and observability hints at the start of each `runTask` call.
471
+
472
+ ### Changed
473
+
474
+ - **Types:** `RunTaskRequest` documents deprecated mirrors: optional root `question`, `inputs`, and `jobInput` (typed for discoverability; removal deferred to a future major after hosts migrate).
475
+
476
+ ### Notes
477
+
478
+ - **Additive / non-breaking:** Runtime merge behavior is unchanged; warnings are opt-in via env.
479
+ - **Cross-package:** Minimum orchestrator (e.g. graph-engine) version is **not declared** in `@exellix/ai-tasks` — follow the consuming app’s pinned `@exellix/ai-tasks` range; see `RUNTASK_REQUEST.md` § Orchestrator integration.