Repository navigation
graft: recover orphan branch rescue/orphan-3790cd96f100-feat-den-1450-add-environmentplan-v2-con onto main - #3
Draft
ORESoftware wants to merge 95 commits into
Conversation
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- zed-interfaces: VersionScheme (semver/calver/opaque), tolerant version parsing (v-prefix, Go +incompatible, PEP 440), npm-style range parsing, shared sync contract types (SyncWriteMode/ErrorPolicy/ChangeEvent), regenerated schemas. - zed-cli: resolve via the shared calver-aware resolver; deterministic zip artifacts alongside tar.gz with magic-byte extraction. - zed-api-server: persist and serve version_scheme (entity + migration + handlers). - zed-clients: dependency-free sync wire types bridge. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…rl validation - PackageSection gains bin, build ([build] command+outputs), build_dependencies, workspace ([workspace] members), and overrides.build sections for the polyglot build-cache, binary-hoisting, monorepo, and consumer-patch features. - Validate repository URL scheme, bin names/targets, and build outputs; reject range-shaped requirements that don't parse (no silent degrade to opaque tag). - Add is_sha256_hex + is_safe_relative_path guards for the CLI trust boundary. - Add build_entry_rel/current_platform (per-platform build cache) and BIN_DIR. - Yank REST DTOs (YankRequest/YankResponse) + yank_path helper. - Regenerate JSON schemas; fix stale zed.toml/zed.lock doc references. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The generated schemas/ are the contract the non-Rust SDKs mirror; verify they stay in sync with the source types on every push. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Adds an [install] section with a `dir` (default `zed_modules`; e.g. `.vendor/.zed` or `.deps/.zed`) plus an optional `adapter`, and a Manifest::modules_dir() helper. The dir must be a safe relative path (InvalidInstallDir otherwise). This lets zed COMPLEMENT npm/maven rather than replace them: the few zed-sourced deps land in a project-relative tree the ecosystem adapter then wires into the toolchain. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The InstallSection addition (install.dir / install.adapter) landed in the Rust types but the committed JSON schemas were never regenerated, so the "Schemas are up to date" CI gate failed. Regenerated via `cargo run --example generate_schemas`. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The shared contract for the org audit trail (zed-docs issue #7), so the server, CLI, and generated client schemas cannot disagree on it. `AuditEntry` carries the raw `action` string alongside a parsed `action_kind`, and `AuditAction::parse` returns Option: an unrecognized action from a newer server deserializes cleanly on an older client instead of failing the whole response. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
…language
A client repo (fiducia-clients, zed-clients, …) ships the same library for
several ecosystems. Installing all of them into every consumer is wrong: a
Java build should never download the Node sources.
[targets.<lang>] declares one language subtree per ecosystem:
[targets.nodejs] dir = "clients/ts" adapter = "node"
[targets.java] dir = "clients/java" adapter = "java"
[targets.golang] dir = "clients/go"
Each target is its own PUBLISHED package, named <name>-<target> by default
(overridable per target), so one repo and one version fan out to
fiducia/fiducia-clients-{nodejs,java,golang}@1.1.2 — a consumer depends on
the one it needs and downloads only those bytes.
manifest_for_target() derives the standalone manifest that ships inside each
artifact: same org/version/repo, the target's own name and adapter, and no
[targets] (a slice is single-language by construction, so fan-out cannot
recurse). [install].target + target_subdir() cover the consumer side for
path/workspace deps that point at the polyglot root.
Target names and dirs are validated (slug names, no absolute/.. dirs).
Packages without [targets] are entirely unaffected.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
The schema-drift gate caught it: [targets] landed in the manifest without regenerating schemas/, which the non-Rust SDKs codegen from. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…Search*, EmbeddingUpsertRequest); regen schemas Companion to zed-api-server's package_embedding (pgvector 2050) + tags work. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Support whole-repository targets safely by excluding generated pack output and covering the boundary in tests.
Preserve the public Zed interface contract while adding a locked Nix shell, deterministic schema drift checks, pinned read-only workflows, strict current-stable Clippy, and a documented compatibility boundary for the older Nixpkgs Clippy style lint. Exact reviewed head: ff428c1 Refs DEN-359 and DEN-1354.
The audit log records who changed published state, but nothing made it tamper-evident: anyone with database access could delete or edit a row silently, which defeats a forensic trail. This adds the contract half of a hash chain, plus the query surface the log needs to be usable at scale. - AuditEntry gains seq/entry_hash/prev_hash. All are #[serde(default)] and the empties are skipped, so a body from a pre-chain server still deserializes and the serialized shape is unchanged when unset. - audit_chain_preimage() defines the exact bytes hashed, here in the shared contract rather than in the server, so a client can verify the chain itself. A tamper-evident log whose only checker is the party able to tamper is not much of a guarantee. - Every field is length-prefixed. A separator-joined encoding is forgeable: a token named `x|publish` could shift field boundaries and reproduce a different entry's digest. A test asserts distinct entries cannot collide and that each field participates. - The input is a named-field struct, not ten positional &str: transposing subject and actor_token_name would otherwise compile silently and change every digest. - audit_verify_path() + AuditIntegrityResponse report intactness, the first bad seq, the failure kind, and a head hash an operator can anchor externally so tail truncation is also detectable. - Both audit responses now generate JSON schemas like every other client-facing DTO; they had been missed. nix develop -c agent-check passes (fmt, clippy -D warnings, tests, doctests, schema generation, drift check). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Land the service-independent Nix interoperability contract defined by the merged RFC. Includes explicit systems/outputs, immutable Zed and Nix origin evidence, NAR and artifact identities, strict policy evidence, closure-free v1 imports, canonical JSON, fail-closed versioning, and public contract tests. Manifest/lock embedding and generated adapter schemas remain staged under DEN-1417.
Add the manager-neutral environment contract for mise/asdf/Devbox/Flox/Nix adapters and native Zed environments, including frozen portability validation, immutable provenance, canonicalization, and comprehensive unit coverage.
Make Nix interoperability a first-class, additive zed-pkg file-format contract. Adds validated single-package and per-target export intent, deterministic route planning, backward-compatible lock provenance with collision-safe upsert semantics, standalone JSON schemas, and compatibility/conformance tests. Exact-head Rust, pinned Nix, and agent-policy checks were green before merge.
…ronmentplan-v2-con into main (graft, scaffolding reconciled) `rescue/orphan-3790cd96f100-feat-den-1450-add-environmentplan-v2-con` was recovered from a dangling commit and shares no history with `main`. This is a real two-parent merge built with plumbing (no checkout). Every path the orphan adds is taken verbatim (61 file(s)). The overlap was scaffolding only: .gitignore: union (2 extra rule(s) carried over) kept main's current version: README.md The orphan's own copies remain readable at `git show 3790cd9:<path>`. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01KAAGBnXTSw7zE5xnY4tiBY
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.
Draft.
rescue/orphan-3790cd96f100-feat-den-1450-add-environmentplan-v2-conwas rescued from a dangling commit, so it has no common history withmainand GitHub would not open a pull request for it.This branch is a genuine two-parent merge of
origin/mainand3790cd96f1000602e1f570df1708df83389f1652, built withgit merge-tree/commit-treeplumbing — no checkout, no working-tree change anywhere.How the overlap was resolved (both sides carried these files; there is no common ancestor to diff against):
.gitignore— union (2 extra rule(s) carried over)main's current version:README.mdThose are scaffolding files that
mainhas regenerated since the orphan was written; the orphan's own copies are not lost — read them withgit show 3790cd96f1000602e1f570df1708df83389f1652:<path>. Everything else the orphan adds (61 file(s)) is here verbatim.🤖 Generated with Claude Code
https://claude.ai/code/session_01KAAGBnXTSw7zE5xnY4tiBY