Skip to content

v1.0.3: v0.11 Block-First Notebook (Tracks 1–6)#7

Merged
KKranthi6881 merged 1 commit into
mainfrom
v0.11-block-first
Apr 22, 2026
Merged

v1.0.3: v0.11 Block-First Notebook (Tracks 1–6)#7
KKranthi6881 merged 1 commit into
mainfrom
v0.11-block-first

Conversation

@KKranthi6881

Copy link
Copy Markdown
Collaborator

Summary

Every notebook cell is a draft block; Block Picker is the primary Add-Cell tile; blocks are live-referenced with bound/forked state; promotion is governance-gated; bound cells flow into lineage.

  • T1 — unified @metric() / @dim() resolver across notebook SQL + Block Studio (fixes the 500 error on notebook cells containing semantic refs)
  • T2 — Block Picker promoted to left-most palette tile; picking drops a bound cell, not @include SQL
  • T3 — semantic-aware typed pickers for Chart / Pivot / SingleValue / Filter with # metric, ∴ dimension, abc column icons; graceful fallback + nag for unbound upstream
  • T4Save-as-Block runs BUILTIN_RULES inline; missing owner/domain/description blocks the save; git SHA/repo/branch auto-captured into companion YAML
  • T5BlockBinding { path, state: 'bound' | 'forked', originalContent? } on Cell; green chrome for bound, yellow for forked after edit; chip shows path · 🔒 · Revert (forked only) · Unbind
  • T6 — bound cells appear in lineage as block:<name> → dashboard:<notebook> edges; draft SQL cells stay excluded (design preserved)

Published to npm at 1.0.3 for all 10 packages: @duckcodeailabs/dql-cli, dql-core, dql-compiler, dql-runtime, dql-connectors, dql-charts, dql-project, dql-governance, dql-notebook, dql-lsp.

Test plan

  • Full workspace build (18/18 tasks)
  • Full test suite (32/32 tasks, 37 tests in dql-cli alone)
  • T1 preview — notebook SQL cell SELECT @metric(revenue) FROM @dim(date) runs green
  • T2 preview — press b → picker → select Monthly Revenue → bound cell lands with green chrome
  • T3 preview — SingleValue picker shows revenue with # icon ahead of raw columns when upstream has semantic refs
  • T4 preview — Save-as-Block with no owner blocks; filling owner/domain succeeds; git SHA stamped in companion YAML
  • T5 preview — bind → edit → yellow FORKED + Revert → click Revert → green BOUND restored → click Unbind → binding cleared, content preserved
  • T6 preview — /api/lineage returns block:Monthly Revenue → dashboard:t5_verify edge for a notebook with a bound cell

🤖 Generated with Claude Code

Every notebook cell is a draft block; Block Picker is the primary
Add-Cell tile; blocks are live-referenced with bound/forked state;
promotion is governance-gated; bound cells flow into lineage.

- T1: unified @Metric() / @dim() resolver across notebook SQL + Block Studio
- T2: Block Picker promoted to left-most palette tile; bound cell on pick
- T3: semantic-aware typed pickers (Chart / Pivot / SingleValue / Filter)
- T4: Save-as-Block runs BUILTIN_RULES inline; git metadata to companion YAML
- T5: BlockBinding state model + green/yellow chrome + Revert/Unbind
- T6: bound cells emit block:<name> → dashboard:<notebook> lineage edges

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@KKranthi6881 KKranthi6881 merged commit 7e71061 into main Apr 22, 2026
7 checks passed
@KKranthi6881 KKranthi6881 deleted the v0.11-block-first branch April 22, 2026 00:25
KKranthi6881 added a commit that referenced this pull request Apr 23, 2026
…r abstraction)

Closes the v1.2.1 gap audit — 9 fixes, ordered by severity. No behavior
changes beyond the #2 email-delivery correction; the rest add logging,
ignore patterns, and a provider-extension point.

Critical:
- #1 ignore .dql/runs/ and .dql/cache/ (root + `dql init` scaffold)
- #2 email notifier returns delivered:false in stub mode (was lying)

Bugs:
- #3 GET /api/blocks/body endpoint for bound-cell reloads
- #5 /api/schema returns 500 + fallback instead of silent file-only
- #6 log malformed scheduler run records to stderr
- #7 replace empty catches in runtime/html emitters with console.warn

Smells:
- #8 move LLM providers into providers/; add LLMProvider type alias
- #9 `dql schedule stop` via pidfile

#4 was a false-positive — bound-cell lineage is already wired via the
manifest builder's pathToBlockName lookup; comment updated.

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
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.

1 participant