feat: generalize framework artifact pipeline foundations - #21
Draft
forhappy wants to merge 17 commits into
Draft
Conversation
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.
Summary
Introduce the framework-neutral Trail artifact pipeline described by the
generalize-framework-artifact-pipelineOpenSpec change.This PR now completes 31 of 87 planned deliverables. It remains a foundation PR, not a claim that the full v2/v3 resolver, execution, export, and native-backend rollout is complete.
What changed
Why
Trail's existing environment layers couple correctness identity to one key-derived physical cache directory. That prevents framework-neutral resolution, deduplication of equal content across different desired keys, safe detection of non-reproducible producers, and reliable reconstruction of evicted materializations.
The new model separates desired identity, pure tree content, artifact envelopes, and future generation bindings. Framework names do not grant reuse; adapters must provide bounded evidence and unproven portability falls back to lane-private, non-reusable output.
User and developer impact
WorkspaceLayerKeyV1identities remain explicitly legacy and are never presented as desired-key v2The remaining 56 OpenSpec tasks include actual resolve-all/component execution, repository schema v2, adapter protocol v3, native lazy materialization, CAS reachability GC/accounting, attestations/capability enforcement, public artifact CLI/HTTP/MCP operations, framework migrations, documentation, and real-repository/native qualification.
Validation
openspec validate generalize-framework-artifact-pipeline --strictcargo fmt --all -- --checkcargo check --workspace --lockedcargo clippy --workspace --all-targets --all-features --locked -- -D warningsRUST_TEST_THREADS=1One aggregate
cargo test --workspace --lockedrun encountered a nondeterministic macOS native-observer failure in the 64-observer initialization stress test after all affected artifact, restore, schema, and E2E cases had passed. The exact test passed in isolation, and the complete 28-test initialization-fault binary passed on rerun. CI native-host gates remain authoritative.All compiling commands used
/Volumes/Workspace/crabbuild-target/trail-optimize-large-repo-lanesas the checkout-specificCARGO_TARGET_DIR.