Open
Conversation
Consolidated design home for the next generation of the module system. Reconciles and supersedes design docs scattered across workspace-artifacts and collections branches. Components: workspace, lockfile, artifacts, execution plans, collections, provenance, stdlib. Sequencing: Artifacts → Execution Plans → Collections, with stdlib as a parallel track. Archived superseded docs as gists: - workspace-artifacts.md → https://gist.github.com/shykes/948cd5d82610d762d8d4473089d19cae - artifacts-on-collections-report.md → https://gist.github.com/shykes/6fa6ad9e478ab5c4572133d814ba350a - do-we-need-artifact-addresses.md → https://gist.github.com/shykes/9c800d491ab62f7da6a83cfe46ce4a41 - workspace-artifacts-tracking.md → https://gist.github.com/shykes/d26874aaa1b0a8216957e59b8639d478 Signed-off-by: Solomon Hykes <solomon@dagger.io>
Artifacts: - Replace key + ancestors with scope-relative coordinates - Add scope back-reference so coordinates are always interpretable - Move column disambiguation question to collections.md Plans: - Add Action.withAfter to public API schema - Lock decision: engine and users share the same plan construction API Collections: - Add open question for column disambiguation (moved from artifacts.md) Also add handoff preparation doc with recommendations for remaining open questions and suggested implementation task breakdown. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replace the terse Problem/Solution sections with a plain-language intro that explains what artifacts are, why they matter on their own, and what they make possible for downstream designs. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Explain what artifacts are, how to discover them with dagger list, how to select them with dimension flags, and how dimensions are synthesized from module type structure. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Cut opening list, get to the gap faster - Drop "until now" framing, describe the system as-is - Bridge concept-to-CLI transition in discovery section - Add verb variety to selection examples (ship, generate) - Explain grouping objects aren't artifacts in tree example - Add intro line before verb-scoped discovery examples - Fold module/check relationships into relevant sections - Explain root artifact row in the table - Address single-module case - Soften Next Steps link text Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Rename Design Summary to Detailed Design with transition line - Fold Identity into Selector Model as first subsection - Cut repeated dimension-source and UX bullets from Selector Model - Consolidate verb composition rules in Selector Algebra - Move disambiguation example to Selector Algebra - Add singleton fallback concrete example - Flag context switch in coordinates example - Promote Filter Algebra from Notes to its own section - Add empty-list and presence+value chaining rules to Filter Algebra - Move normative content from Notes into Synthesis Constraints section - Annotate UP verb as reserved - Cross-reference CI Collision test from Naming section - Fix TOC (add Detailed Design, Filter Algebra, Synthesis Constraints, Locked Decisions) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Signed-off-by: Solomon Hykes <solomon@dagger.io>
Signed-off-by: Solomon Hykes <solomon@dagger.io>
Signed-off-by: Solomon Hykes <solomon@dagger.io>
artifacts.md is the foundation doc and already defines `enum Verb` and `Artifacts.filterVerb(...)`. plans.md had drifted: it declared a parallel `enum ActionKind` with the same members and used `actionKind` / `kind:` field and parameter names throughout, while its prose still called `filterVerb` from artifacts.md. README.md also describes Ship in terms of `filterVerb(SHIP)`, confirming Verb is the umbrella vocabulary. This commit removes the duplicate `enum ActionKind` and renames the remaining ActionKind references in plans.md so that the schema and prose are consistent with the rest of the design. No new primitives are introduced; this brings plans.md back into sync with its dependency. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Modules v2 redesigns, in a backwards-compatible way, how Dagger modules are developed, configured, and operated.
Module developers don't have enough control over their user's workspace. End users are exposed to too much complexity. Modules v2 addresses both: more powerful APIs for module developers, a simpler experience for end users.
This PR contains the design specs and their rollout sequence:
checkandgenerateexecuteDependency graph
graph TD M(("💡")) --> WP["Workspace plumbing ✅"] M --> WA["Workspace API ✅"] M --> LF["Lockfile 🏗️"] WP --> AR["Artifacts 📝"] AR --> EP["Execution Plans 📝"] AR --> PR["Provenance 📝"] WA --> PR EP --> SH["Ship 📝"] EP --> CO["Collections 🏗️"] WP --> WC["Workspace configuration 🏗️"] LF --> WC SH --> E(("🎉")) CO --> E PR --> E WC --> E