Skip to content

Refactor#1

Draft
Davidiusdadi wants to merge 35 commits intomasterfrom
refactor
Draft

Refactor#1
Davidiusdadi wants to merge 35 commits intomasterfrom
refactor

Conversation

@Davidiusdadi
Copy link
Copy Markdown
Owner

No description provided.

- introspection protocol
- more nodes
- arrows into sub canvas
- library build
- factor out experimental dependency bloat
- add library build target
- produce less stdout by default
- add new debug node
- minor changes
- lots of minor changes
- reduced std output
- try multiple build targets for electron compat
core:
- add parallel execution
- add logger trace level
- move joiner from this to ctx
- make frames refer to their parent

nodes:
-  yaml-llm
  - impl. llm output streaming
  - impl. llm retry on error
  - add 10s bash process timeout (for now)
- remove `emit-state`
- `emit-input` now also returns it's input
- add switch node
   - that picks and edge based on given _.get(path)
   - or defaults to `default` & `else` edges
   - does some sanity checks

- dev-server (still early WIP)
  - add multi canvas capability
  - show input and state
claude and others added 5 commits February 13, 2026 22:04
- Fixed all example commands to use correct feature-tour paths
- Made .env file optional (only needed for LLM features)
- Added note about harmless canvas package build warning
- Reorganized examples into "No API Key Required" and "Require API Key" sections
- Fixed typos: Obsidan→Obsidian, anyting→anything, fist→first, promptes→prompts
- Fixed image paths to correct feature-tour directory
- Renamed .env.exampe to .env.example
- Fixed Anthropic configuration: ANTROPIC→ANTHROPIC with correct API endpoints
- Updated Anthropic model to claude-3-5-haiku-20241022

https://claude.ai/code/session_01871jyJg9rKfR4QAooAyHmU
Fix typos and improve documentation clarity
Fixed a race condition where aggregate() would complete while other
frames for the same node were still executing their initial attempt,
causing those frames to later execute with empty _invocations and
return incorrect results.

## Problem
When multiple frames for the same node executed in parallel, the
aggregate readiness check only waited for ancestor nodes to complete.
This allowed one frame to execute aggregate() while sibling frames
were still running, leading to extra invocations after _invocations
was cleared.

## Solution
Added `no_sibling_frames` check to ensure aggregate only executes
when ALL frames for that node have completed their initial execution
and pushed back to the stack. This guarantees aggregate happens on
the very last invocation, as designed.

## Testing
- ✅ All 7 feature-tour tests pass
- ✅ aggregate-async.canvas: 21 items (async waves work correctly)
- ✅ aggregate-loop.canvas: 21 items (loop aggregation works)
- ✅ zip-and-aggregate.canvas: 2 items (mixed operations work)

https://claude.ai/code/session_01871jyJg9rKfR4QAooAyHmU
- Added docs/how-to-create-a-canvas.md with canvas format guide
- Removed claude-vault test canvases (no longer needed)
- Documentation covers purpose, JSON format, and node instructions

https://claude.ai/code/session_01871jyJg9rKfR4QAooAyHmU
…dition-UXwVz

Claude/fix aggregate race condition
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants