Skip to content

build(deps): bump the npm_and_yarn group across 5 directories with 7 updates - #5

Merged
LeXwDeX merged 1 commit into
devfrom
dependabot/npm_and_yarn/packages/console/app/npm_and_yarn-eb028ad470
Apr 14, 2026
Merged

build(deps): bump the npm_and_yarn group across 5 directories with 7 updates#5
LeXwDeX merged 1 commit into
devfrom
dependabot/npm_and_yarn/packages/console/app/npm_and_yarn-eb028ad470

Conversation

@dependabot

@dependabotdependabotBot commented on behalf of githubApr 14, 2026

Copy link
Copy Markdown
Contributor

Bumps the npm_and_yarn group with 1 update in the /packages/console/app directory: wrangler.
Bumps the npm_and_yarn group with 1 update in the /packages/desktop-electron directory: electron.
Bumps the npm_and_yarn group with 2 updates in the /packages/opencode directory: @hono/node-server and minimatch.
Bumps the npm_and_yarn group with 1 update in the /packages/ui directory: dompurify.
Bumps the npm_and_yarn group with 2 updates in the /packages/web directory: @astrojs/cloudflare and astro.

Updates wrangler from 4.50.0 to 4.59.1

Commits
  • 37a8607 Version Packages (#11890)
  • 99b1f32 fix: execute git commands in pages deploy safely (#11889)
  • e98c95a Version Packages (#11836)
  • ad65efa Add --check flag to wrangler types (#11852)
  • beb96af feat(unenv-preset): add support for native node:sqlite module (#11841)
  • b0e54b2 [wrangler] Add AI agent detection to analytics events (#11820)
  • 2203af4 Add Node.js 24 and 25 compatibility to the test suites for Miniflare, Wrangle...
  • b6148ed chore(deps): bump the workerd-and-workers-types group with 2 updates (#11872)
  • 0eb973d Do not warn user when using a redirected config that came from a config with ...
  • 0f8d69d containers: users can set multiple tiers for constraints (#11755)
  • Additional commits viewable in compare view

Updates electron from 40.4.1 to 40.8.5

Release notes

Sourced from electron's releases.

electron v40.8.5

Release Notes for v40.8.5

Fixes

  • Fixed a bug where Windows notification icons could fail to save because their temporary filenames contained invalid characters. #50484 (Also in 41)
  • Fixed a crash in clipboard.readImage() when the clipboard contains malformed image data. #50491 (Also in 39, 41, 42)
  • Fixed a crash when calling an offscreen shared texture's release() after the texture object was garbage collected. #50500 (Also in 39, 41, 42)
  • Fixed an accessibility issue where the AXMenuOpened event was not fired on menu creation. #50505 (Also in 41, 42)
  • Fixed an issue where an app shortcut may lose its icon after auto-updating on Windows. #50518

Other Changes

  • Backported fix for chromium:475877320. #50438

electron v40.8.4

Release Notes for v40.8.4

Fixes

  • Fixed an issue where nodeIntegrationInWorker overrides in setWindowOpenHandler were not honored for child windows sharing a renderer process with their opener. #50467 (Also in 38, 39, 41)
  • Fixed crash when handling JavaScript dialogs from windows opened with invalid or empty URLs. #50401 (Also in 39, 41, 42)
  • Fixed improper focus tracking in BaseWindow on MacOS. #50337 (Also in 39, 41, 42)
  • Fixed logic bug that rendered certain window types un-resizable on MAS builds. #50355 (Also in 41, 42)
  • Fixed utilityProcess exit event reporting incorrect exit codes on Windows when the exit code has the high bit. #50387 (Also in 41, 42)
  • Fixed window freeze when failing to enter/exit fullscreen on macOS. #50344 (Also in 39, 41, 42)

Other Changes

  • Added support for using a proxy during yarn install. #50352 (Also in 39, 41, 42)
  • Backported fix for 485935305. #50441
  • Backported fix for 489381399. #50449
  • Backported fixes for 484751092, 487117772. #50460

electron v40.8.3

Release Notes for v40.8.3

Fixes

  • Added additional ASAR support to additional fs copy methods. #50287 (Also in 39, 41, 42)
  • Fixed an issue where some DevTools functionality didn't work as expected. #50275 (Also in 41, 42)
  • Fixed user resizing of transparent windows on win32 platform. #50301 (Also in 39, 41, 42)

electron v40.8.2

Release Notes for v40.8.2

Other Changes

  • Backported fix for b/491421267. #50229
  • Fixed an issue where running app icons were not correctly retrieved on macOS Tahoe. #50188

electron v40.8.1

... (truncated)

Commits
  • c09e2aa fix: outdated execution path for COM activation (#50518)
  • 44f02f6 fix: hex-encode Windows notification icon temp filenames (#50484)
  • 904fbbd fix: fall back to default DPI when GTK returns 0 on Linux (#50488)
  • 36c88a4 fix: [a11y] fire AXMenuOpened event when ARIA menu is added to DOM (#50505)
  • 9bf9c36 refactor: remove dead named-window lookup from guest-window-manager (#50495)
  • d284168 fix: crash calling OSR shared texture release() after texture GC'd (#50500)
  • 4aa3610 fix: crash in clipboard.readImage() on malformed image data (#50491)
  • e1c17fd chore: cherry-pick fbfb27470bf6 from chromium (#50438)
  • 2871c1d fix: read nodeIntegrationInWorker from per-frame WebPreferences (#50122) (#50...
  • 0d3f57f chore: cherry-pick 074d472db745 from chromium (#50449)
  • Additional commits viewable in compare view

Updates @hono/node-server from 1.19.11 to 1.19.13

Release notes

Sourced from @​hono/node-server's releases.

v1.19.13

Security Fix

Fixed an issue in Serve Static Middleware where inconsistent handling of repeated slashes (//) between the router and static file resolution could allow middleware to be bypassed. Users of Serve Static Middleware are encouraged to upgrade to this version.

See GHSA-92pp-h63x-v22m for details.

v1.19.12

What's Changed

Full Changelog: honojs/node-server@v1.19.11...v1.19.12

Commits

Updates minimatch from 10.0.3 to 10.2.3

Changelog

Sourced from minimatch's changelog.

change log

10.2

  • Add braceExpandMax option

10.1

  • Add magicalBraces option for escape
  • Fix makeRe when partial: true is set.
  • Fix makeRe when pattern ends in a final ** path part.

10.0

  • Require node 20 or 22 and higher

9.0

  • No default export, only named exports.

8.0

  • Recursive descent parser for extglob, allowing correct support for arbitrarily nested extglob expressions
  • Bump required Node.js version

7.4

  • Add escape() method
  • Add unescape() method
  • Add Minimatch.hasMagic() method

7.3

  • Add support for posix character classes in a unicode-aware way.

7.2

  • Add windowsNoMagicRoot option

7.1

  • Add optimizationLevel configuration option, and revert the default back to the 6.2 style minimal optimizations, making the advanced transforms introduced in 7.0 opt-in. Also, process provided file paths in the same way in optimizationLevel:2 mode, so most things that matched with optimizationLevel 1 or 0 should match with level 2 as well. However, level 1 is the default, out of an abundance of caution.

... (truncated)

Commits

Updates dompurify from 3.3.1 to 3.3.2

Release notes

Sourced from dompurify's releases.

DOMPurify 3.3.2

  • Fixed a possible bypass caused by jsdom's faulty raw-text tag parsing, thanks multiple reporters
  • Fixed a prototype pollution issue when working with custom elements, thanks @​christos-eth
  • Fixed a lenient config parsing in _isValidAttribute, thanks @​christos-eth
  • Bumped and removed several dependencies, thanks @​Rotzbua
  • Fixed the test suite after bumping dependencies, thanks @​Rotzbua
Commits

Updates @astrojs/cloudflare from 12.6.3 to 12.6.6

Changelog

Sourced from @​astrojs/cloudflare's changelog.

12.6.6

Patch Changes

  • 9ecf359 Thanks @​alexanderniebuhr! - Improves the image proxy endpoint when using the default compile option to adhere to user configuration regarding the allowed remote domains

  • Updated dependencies []:

    • @​astrojs/underscore-redirects@​1.0.0

12.6.5

Patch Changes

  • #1425902366e9 Thanks @​ascorbic! - Removes warning when using the adapter with a static build.

    The Cloudflare adapter now has several uses outside of on-demand rendered pages, so this warning is misleading. Similar warnings have already been removed from other adapters.

  • #1423415b55f3 Thanks @​yanthomasdev! - Fixes an issue that could cause duplicate exports when configuring workerEntrypoint.namedExports

  • #1424077b18fb Thanks @​delucis! - Increases the minimum supported version of Astro to 5.7.0

  • Updated dependencies []:

    • @​astrojs/underscore-redirects@​1.0.0

12.6.4

Patch Changes

  • Updated dependencies [4d16de7]:
    • @​astrojs/internal-helpers@​0.7.2
    • @​astrojs/underscore-redirects@​1.0.0
Commits

Updates astro from 5.7.13 to 5.18.1

Release notes

Sourced from astro's releases.

astro@5.18.1

Patch Changes

  • Updated dependencies [c2cd371]:
    • @​astrojs/internal-helpers@​0.7.6
    • @​astrojs/markdown-remark@​6.3.11
Changelog

Sourced from astro's changelog.

5.18.1

Patch Changes

  • Updated dependencies [c2cd371]:
    • @​astrojs/internal-helpers@​0.7.6
    • @​astrojs/markdown-remark@​6.3.11

5.18.0

Minor Changes

  • #15589b7dd447 Thanks @​qzio! - Adds a new security.actionBodySizeLimit option to configure the maximum size of Astro Actions request bodies.

    This lets you increase the default 1 MB limit when your actions need to accept larger payloads. For example, actions that handle file uploads or large JSON payloads can now opt in to a higher limit.

    If you do not set this option, Astro continues to enforce the 1 MB default to help prevent abuse.

    // astro.config.mjsexportdefaultdefineConfig({security: {actionBodySizeLimit: 10*1024*1024,// set to 10 MB},});

Patch Changes

  • #15594efae11c Thanks @​qzio! - Fix X-Forwarded-Proto validation when allowedDomains includes both protocol and hostname fields. The protocol check no longer fails due to hostname mismatch against the hardcoded test URL.

5.17.3

Patch Changes

  • #15564522f880 Thanks @​matthewp! - Add a default body size limit for server actions to prevent oversized requests from exhausting memory.

  • #15569e01e98b Thanks @​matthewp! - Respect image allowlists when inferring remote image sizes and reject remote redirects.

5.17.2

Patch Changes

  • c13b536 Thanks @​matthewp! - Improves Host header handling for SSR deployments behind proxies

5.17.1

Patch Changes

... (truncated)

Commits
Maintainer changes

This version was pushed to npm by [GitHub Actions](https://www.npmjs.com/~GitHub Actions), a new releaser for astro since your current version.


Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore <dependency name> major version will close this group update PR and stop Dependabot creating any more for the specific dependency's major version (unless you unignore this specific dependency's major version or upgrade to it yourself)
  • @dependabot ignore <dependency name> minor version will close this group update PR and stop Dependabot creating any more for the specific dependency's minor version (unless you unignore this specific dependency's minor version or upgrade to it yourself)
  • @dependabot ignore <dependency name> will close this group update PR and stop Dependabot creating any more for the specific dependency (unless you unignore this specific dependency or upgrade to it yourself)
  • @dependabot unignore <dependency name> will remove all of the ignore conditions of the specified dependency
  • @dependabot unignore <dependency name> <ignore condition> will remove the ignore condition of the specified dependency and ignore conditions
    You can disable automated security fix PRs for this repo from the Security Alerts page.

…updates
Bumps the npm_and_yarn group with 1 update in the /packages/console/app directory: [wrangler](https://github.com/cloudflare/workers-sdk/tree/HEAD/packages/wrangler).
Bumps the npm_and_yarn group with 1 update in the /packages/desktop-electron directory: [electron](https://github.com/electron/electron).
Bumps the npm_and_yarn group with 2 updates in the /packages/opencode directory: [@hono/node-server](https://github.com/honojs/node-server) and [minimatch](https://github.com/isaacs/minimatch).
Bumps the npm_and_yarn group with 1 update in the /packages/ui directory: [dompurify](https://github.com/cure53/DOMPurify).
Bumps the npm_and_yarn group with 2 updates in the /packages/web directory: [@astrojs/cloudflare](https://github.com/withastro/astro/tree/HEAD/packages/integrations/cloudflare) and [astro](https://github.com/withastro/astro/tree/HEAD/packages/astro).
Updates `wrangler` from 4.50.0 to 4.59.1
- [Release notes](https://github.com/cloudflare/workers-sdk/releases)
- [Commits](https://github.com/cloudflare/workers-sdk/commits/wrangler@4.59.1/packages/wrangler)
Updates `electron` from 40.4.1 to 40.8.5
- [Release notes](https://github.com/electron/electron/releases)
- [Commits](electron/electron@v40.4.1...v40.8.5)
Updates `@hono/node-server` from 1.19.11 to 1.19.13
- [Release notes](https://github.com/honojs/node-server/releases)
- [Commits](honojs/node-server@v1.19.11...v1.19.13)
Updates `minimatch` from 10.0.3 to 10.2.3
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)
- [Commits](isaacs/minimatch@v10.0.3...v10.2.3)
Updates `dompurify` from 3.3.1 to 3.3.2
- [Release notes](https://github.com/cure53/DOMPurify/releases)
- [Commits](cure53/DOMPurify@3.3.1...3.3.2)
Updates `@astrojs/cloudflare` from 12.6.3 to 12.6.6
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/main/packages/integrations/cloudflare/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/@astrojs/cloudflare@12.6.6/packages/integrations/cloudflare)
Updates `astro` from 5.7.13 to 5.18.1
- [Release notes](https://github.com/withastro/astro/releases)
- [Changelog](https://github.com/withastro/astro/blob/astro@5.18.1/packages/astro/CHANGELOG.md)
- [Commits](https://github.com/withastro/astro/commits/astro@5.18.1/packages/astro)
---
updated-dependencies:
- dependency-name: wrangler
dependency-version: 4.59.1
dependency-type: direct:development
dependency-group: npm_and_yarn
- dependency-name: electron
dependency-version: 40.8.5
dependency-type: direct:development
dependency-group: npm_and_yarn
- dependency-name: "@hono/node-server"
dependency-version: 1.19.13
dependency-type: direct:production
dependency-group: npm_and_yarn
- dependency-name: minimatch
dependency-version: 10.2.3
dependency-type: direct:production
dependency-group: npm_and_yarn
- dependency-name: dompurify
dependency-version: 3.3.2
dependency-type: direct:production
dependency-group: npm_and_yarn
- dependency-name: "@astrojs/cloudflare"
dependency-version: 12.6.6
dependency-type: direct:production
dependency-group: npm_and_yarn
- dependency-name: astro
dependency-version: 5.18.1
dependency-type: direct:production
dependency-group: npm_and_yarn
...
Signed-off-by: dependabot[bot] <support@github.com>
@github-actions

Copy link
Copy Markdown
Contributor

This PR doesn't fully meet our contributing guidelines and PR template.

What needs to be fixed:

  • PR description is missing required template sections. Please use the PR template.

Please edit this PR description to address the above within 2 hours, or it will be automatically closed.

If you believe this was flagged incorrectly, please let a maintainer know.

@github-actions

Copy link
Copy Markdown
Contributor

Hey! Your PR title build(deps): bump the npm_and_yarn group across 5 directories with 7 updates doesn't follow conventional commit format.

Please update it to start with one of:

  • feat: or feat(scope): new feature
  • fix: or fix(scope): bug fix
  • docs: or docs(scope): documentation changes
  • chore: or chore(scope): maintenance tasks
  • refactor: or refactor(scope): code refactoring
  • test: or test(scope): adding or updating tests

Where scope is the package name (e.g., app, desktop, opencode).

See CONTRIBUTING.md for details.

@LeXwDeX
LeXwDeX merged commit f9b7f01 into devApr 14, 2026
4 of 12 checks passed
@dependabot
dependabotBot deleted the dependabot/npm_and_yarn/packages/console/app/npm_and_yarn-eb028ad470 branch April 14, 2026 06:38
LeXwDeX pushed a commit that referenced this pull request Jun 7, 2026
… 20/21 scenarios
The replan feature (commit bd8c007) ships with full code-path
coverage via the existing 96 session tests + 462 DAG suite but no
dedicated tests exercising replan logic. This commit adds dedicated
unit-test coverage.
Architectural ruling (COMBINED path):
- Path A (pure helpers) as primary — extracted 6 helpers from the
replanWorkflow closure to module-level exports for direct testing.
- 3 @internal module-private read getters (__internal_spawnedNodes /
__internal_replanInFlight / __internal_concurrencyRegistry) for
scenarios 18-20 (module-registry coordination).
- Scenario 21 (history row correctness) deferred to integration
tier — requires DB state inspection beyond unit-test scope.
Coverage: 20/21 unit-testable scenarios, 1 deferred.
Total tests added: 42 across 7 describe blocks.
Session suite total: 96 existing + 42 new = 138 pass / 0 fail.
Production code changes in workflow-engine.ts (pure extract-and-delegate):
- 6 extracted helpers: validateReplanPreconditions,
classifyReplanNodes, validateFrozenAndExistence,
applyReplanPatchToConfig, validateReplanPostConfig,
buildReplanDbInputs.
- detectCycle (module-level, previously private) now exported for
validateReplanPostConfig use and test access.
- 3 @internal test-only getters at lines 313, 315, 317.
- replanWorkflow body refactored to delegate to helpers in sequence
(L668-695); all validation completes before atomicReplan call at
L704 (sequential guard preserved).
Helper signatures follow the ReplanResult discriminated-union
pattern (types.ts:495-505): { ok: true, data? } | { ok: false,
reason, detail? }. This avoids throwing inside pure helpers and
makes test assertions simple (assert ok boolean + reason string).
P0-fix test coverage (critical regression safety):
- 'namespaces new_dependencies on updates' (test at L512-528): asserts
['n2'] -> [wf::n2] after applyReplanPatchToConfig.
- 'preserves existing deps when new_dependencies is absent' (test at
L530-553): asserts ['wf::old-dep'] -> ['wf::old-dep'] when patch
omits new_dependencies field (the existing-deps fallback).
- 'namespaces add_nodes dependencies for DB layer' (test at L555-570):
asserts add_nodes deps receive the same wfNs treatment as updates.
Behavioral tests for scenarios 18-20 (module registry coordination):
- Use beforeEach to clear registries via the @internal getters (Set/Map
mutable types — ReadonlySet would break .delete() test cleanup).
- Assert .has().size().get() on module state AFTER patch application
(not just 'no exception thrown') — real state verification.
Sequential guard preserved: validateReplanPostConfig at L691 is the
last validation before atomicReplan at L704. Effect.fail semantics
from helpers short-circuit the Effect.gen before any DB writes.
Iron Laws re-verified:
- #1 state-machine only: replan modifies only config/dependencies
JSON columns, never status.
- #2 terminal irreversible: frozen-set covers all non-pending states.
- #3 event broadcast: replan is structural mutation, not status
transition; dag_workflow_history row is the audit (event emission
is a pre-existing gap noted but not blocking per archgate).
- #4 persist first: atomicReplan uses Database.transaction for 5
atomic writes.
Verification: typecheck 0 errors; 138/138 session tests pass;
504/504 non-worktree DAG tests pass; all sanity greps (7 helpers +
3 internal getters + 6 helper call sites + sequential-guard
ordering) match expected patterns.
Deferred (separate follow-up WPs):
- Scenario 21 — history-row DB-state inspection (integration tier).
- detectCycle @internal JSDoc (INFO #1 from review #2, optional).
- Test n1/n2/n3 scope hygiene refactor (INFO #5, currently safe).
- Iron Law #3 replan event emission (pre-existing gap, tracked).
LeXwDeX pushed a commit that referenced this pull request Jun 7, 2026
- restore API_NATIVE_MODEL_TEMPLATES for @ai-sdk/openai (gpt-5.5) and @ai-sdk/anthropic (claude-opus-4-6/4-8)
- restore COPILOT_MODEL_TEMPLATES for claude-opus-4.6/4-8 and gpt-5.5
- only correct fields of already-existing models; never add/delete/rename model keys
- never modify provider URL/API Key
- small_model/compaction boundaries preserved (only fill on missing key, skip on bad type)
- renumber sections: #4 model correction, #5 health check
- OC_VERSION 1.3.5 → 1.3.6
- restore 'import copy' for deepcopy safety
LeXwDeX pushed a commit that referenced this pull request Jun 14, 2026
…rompts (AHE discipline)
Problem observed:
WP1-WP4 delivered recoverable non-terminal state, failure_policy
config field, replan remove+add replacement, and TUI/API visibility
enhancements, but the agent-facing prompt files (dag.txt,
dagworker.txt, dagworker-reference.md) remained at pre-WP0 state. The
LLM agent could not discover or exploit the recoverable retry path
because:
- Node status table listed only pending/queued/running/completed/
failed/skipped — no 'recoverable'
- DAGNodeConfig schema lacked 'failure_policy' field documentation
- State machine diagram lacked running→recoverable/recoverable→pending/
recoverable→failed transitions
- Required+recoverable nodes silently skipped required_node_failed
violation — documented as always terminalizing
- Replan three-tier classification (Frozen/Removable/Mutable) missing;
agent couldn't know recoverable nodes are removable (not frozen)
- Failure investigation flow lacked recoverable recovery sequence
This made all four recoverable-related WPs effectively invisible to
the orchestrating agent, defeating the core retry intent.
Design intent (AHE discipline, aligned with commit bfbd5a1/95a4b3fac):
- Description paragraph = facts only ('what is this', schema shapes,
state machine topology)
- Rules paragraph = hard constraints + rejection evidence ('cannot do
what + why' with error message / rejection code)
- No behavior guidance ('you should consider', 'usually', 'typically')
- No cross-layer duplication beyond the allowed summary→detail
expansion (dag.txt Part II → dagworker-reference.md Part II)
- Every rule must state falsifiable condition (rejection code / error
message / state transition legality)
Implementation (3 files, +53 lines within +80 budget):
dag.txt (+6 lines, 219→225):
- Node status union: added 'recoverable' row with non-terminal +
waiting-for-replan semantics (L19, L24)
- Workflow status semantics: recoverable nodes block
computeFinalWorkflowStatus from completing/failing (L35)
- Action list: dagworker status output includes recoverable count;
replan treats recoverable as removable (L44, L49)
- DAGConfig JSON example: added failure_policy field with default
'fail' and 'recoverable' alternatives (L105)
- node_complete: child agent doesn't control recoverable transition
(engine decides by failure_policy; L149)
- required+recoverable exception: does NOT trigger required_node_failed
violation (L178; aligns with workflow-engine.ts:1514-1560 early
return before L1765 violation)
- Terminal immutability: recoverable non-terminal, only pending (reset)
or failed (abandon) outgoing transitions allowed (L185; aligns with
execution-core.ts:431)
- Replan classification: recoverable = Removable; update_nodes
targeting recoverable rejected (L197; aligns with
execution-core.ts:287-288 + reason at L293)
- **DELETED** L200 'Trigger keywords' paragraph (AHE behavioral
guidance violation — 'keywords: X, Y, Z trigger this' is guidance,
not constraint)
- L209-215: Failure investigation replaced vague 'usually make the
workflow terminal' with precise policy-based semantics:
failure_policy='fail' (or unset) cascades → may terminalize;
failure_policy='recoverable' stays running; replan is the recovery
path; recoverable node recovery sequence (status → find recoverable
→ replan remove+add → resume)
dagworker.txt (+1 line, 29→30):
- status action: recoverable count added to real-time polling state
(L11)
- replan action: recoverable nodes removable for retry/replacement;
frozen nodes (queued/running/completed/failed/skipped) remain
immutable (L16)
- Failure recovery rule #5 (new): failure_policy='recoverable'
transitions running→recoverable instead of running→failed; workflow
stays running/paused; parent agent uses replan to remove recoverable
+ add replacement with corrected worker_config; recoverable→running
illegal (must reset to pending first to prevent state-machine
bypass; L30)
dagworker-reference.md (+46 lines, 711→757):
- §5 DAGNodeConfig Schema: added failure_policy?: 'fail'|'recoverable'
field with semantics (L248, L263-266)
- §6 Node Status State Machine: updated diagram with running→
recoverable and recoverable→pending/recoverable→failed transitions
(L324-335); added 3-row transition table entries:
| running | recoverable | failure_policy='recoverable' on node failure |
| recoverable | pending | reset for re-run (via replan remove+add) |
| recoverable | failed | abandon — terminal, no outgoing transitions |
- §7 Workflow Status State Machine: recoverable blocks completion
paragraph (L388); required+recoverable note (does NOT trigger
required_node_failed violation; stays running)
- §11 Event Bus: added node.recoverable event with payload { workflow_id,
node_name, trigger_reason, error? } (L447; aligns with
state-machine/types.ts:340-345 and session-service.ts:143-150)
- §13 Replan: three-tier classification subsection Frozen/Removable/
Mutable (L505-509); remove_nodes includes recoverable (L527)
- §15 State Machine Rules: 'Recoverable non-terminal' subsection with
3 rules — allowed pending/failed outgoing, rejected recoverable→
running (must reset through pending first; L621-625); aligns with
execution-core.ts:429/431
- §16 Replan Constraints: updated classification table adds recoverable
= Removable row (L647); required+recoverable exception note (L660);
common mistake: 'update_nodes on recoverable — rejected' with
execution-core.ts:293 rejection reason (L668)
- §17 Failure Investigation & Recovery: updated partial failure recovery
subsection to explicitly use 'recoverable' term (L688-710); new
'Recoverable node recovery sequence' 5-step procedure:
1. Query workflow status; identify node with status='recoverable'
2. Optionally pause workflow (prevent further spawn attempts)
3. Replan remove_nodes=[recoverable] + add_nodes=[replacement]
4. Resume workflow; forked scheduleReadyNodes auto-triggers
5. Observe WP4 notification metadata (dag_failed_nodes array)
3 new common mistakes at L751-753: update_nodes on recoverable
(rejected), recoverable→running direct (illegal bypass), skipping
status query before replan
Bonus fix (not in spec, harmless):
- 3 pre-existing 'dapworker' typos → 'dagworker' at §17 L692/L694/
L704 (pre-existing from stable branch)
Foundation code fidelity (15/15 claims validated by archgate):
- execution-core.ts:429 running→recoverable legal transition
- execution-core.ts:431 recoverable→[pending,failed] only
- execution-core.ts:244-265 three-tier classifyReplanNodes
- execution-core.ts:287-288 recoverable NOT updatable
- execution-core.ts:293 rejection reason text matches §16 L668
- execution-core.ts:90 recoverable excluded from ready set
- execution-core.ts:116 recoverable blocks finalization
- types.ts:253 failure_policy field shape matches §5 L248
- types.ts:584-586 recoverable NOT in isNodeTerminalStatus
- workflow-engine.ts:1514-1560 recoverable branch early returns before
L1765 required_node_failed violation
- workflow-engine.ts:1990-2013 WorkflowStatusSnapshot.recoverableCount
- state-machine/types.ts:340-345 node.recoverable event shape
- session-service.ts:143-150 node.recoverable event emission
- dag-bus-bridge.ts:271-272 node.recoverable bridges 'recoverable'
status string
- scenario-36/37 TDD validates all claims
INFO-level findings (non-blocking, for future iteration):
- §12 Examples lacks recoverable-specific scenario (e.g., 3-node
pipeline with one recoverable demonstrating remove+add). Deferred
acceptable — agent can infer procedure from §17 5-step sequence.
- dag.txt L176 vs dagworker-reference.md L605: pre-existing node cap
discrepancy ('≤20' vs '≤100'). Not introduced by this diff (stable
branch pre-existing). Recommend reconciling in separate WP to avoid
agent confusion.
Workflow: archgate (1 round, PASS with 15/15 foundation claims
validated), implement (1 round, +53 lines in +80 budget), review (1
round, 0 blocking / 3 info all P2 non-blocking), direct commit (no
patcher step required for text-only edits).
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependenciesPull requests that update a dependency filejavascriptPull requests that update javascript codeneeds:complianceneeds:title

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@LeXwDeX