Repository navigation
1.0 becomes main: merge v1 into main (#431) - #475
Merged
Merged
Conversation
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012NdkF6p8Q3qkdxKCgbdjgb
…xempt The baseline and every plant now use produced_outputs() plus the fabricated paths, so a real generated file copied into the temp tree no longer fires. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012NdkF6p8Q3qkdxKCgbdjgb
…1_TOOLCHAIN registry:2 held only the basic tree, so four of five registry cases could not find their tags. push_tree.py loads every tree cases.json names. The report's toolchain now comes from CHTYPES_V1_TOOLCHAIN (matrix value; 'registry' here), documented in the runner contract. Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012NdkF6p8Q3qkdxKCgbdjgb
v1: selftests of the banner-exempt checks keep real generated files exempt
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012NdkF6p8Q3qkdxKCgbdjgb
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012NdkF6p8Q3qkdxKCgbdjgb
…OST digest) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012NdkF6p8Q3qkdxKCgbdjgb
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012NdkF6p8Q3qkdxKCgbdjgb
Replaces the inferred filter-zone paragraph with the contract the artifact producer measured on live servers of all four pinned lines (22 filters x 3 insert zones x 3 query zones, byte-identical), with no ABI change: - the filter compile's settings carry the filter's zone, the WHERE's session (else profile, then defaults, then the image zone); every evaluation runs the WHERE under it; - an evaluation's settings (Filter.rows, a block's parse, an attached rows call) are the body's INSERT settings: the parse zone only; - differing zones are an ordinary input, never refused; - K filters with K zones over one block each answer as their own session. Also: the literal-versus-column zone rules, the two zones spelled in all four bindings, the DefaultKind row moved into the vocabulary table, and the Rust options structs are plain structs with Default (a non_exhaustive struct cannot be built with ..Default::default() outside the crate). Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012NdkF6p8Q3qkdxKCgbdjgb
abi-v1: freeze the description on the owner's confirmation (F-Regen)
…fecycle and concurrent cases, regenerated layer) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012NdkF6p8Q3qkdxKCgbdjgb
…lter settings, lifecycle and concurrent cases) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012NdkF6p8Q3qkdxKCgbdjgb
…lter settings), lifecycle and concurrent cases Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012NdkF6p8Q3qkdxKCgbdjgb
…loader step 7, lifecycle and concurrent case runners) Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012NdkF6p8Q3qkdxKCgbdjgb
v1-network: produce each binding's registry-transport report
… loader refusal Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012NdkF6p8Q3qkdxKCgbdjgb
…head) The ruling on #468 changed before merge from "clear" to "unlock": after an open that attempted a load and failed, the setup record is KEPT but becomes replaceable, so a plain retry runs under the recorded zone, never the empty setup; and the binding's own input checks (a refused spelling, an unverified open without the caller's opt-in) unlock nothing. The shared cases now pin that: - setup.latches_only_on_success: a refused spelling and a withheld opt-in each leave a different setup refused; a refused load makes the record replaceable; a replaced record is locked again; a plain retry after a step 7 refusal is refused again under the recorded zone; the corrected setup opens, and the image reports that zone. - setup.a_retry_after_a_failed_open_keeps_the_recorded_setup: a refused load, then a plain retry with no new setup, which must load under the recorded zone. The stub gains a zone probe (_stubshared.ZONE_PROBE): chs_type_validate of exactly "!Z:" returns the zone the image holds, so each runner reads it back through its public validate_type. Open steps may now carry "request" (a registry over an empty cache) and "allow" (the caller's opt-in). This commit carries no binding change: on the clear head both cases fail, at the setup after the refused spelling and at the retry's image zone. refs #468 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The parent used to stop at the first failing case, so a later case's result was never seen. It now runs each case in its own process, reports every failure, then fails once. Still no binding change: on the clear head both cases must fail in Rust too. refs #468 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The lead refined the ruling before merge: clearing the record failed open, because a plain retry after a transient failure silently loaded under the empty setup (UTC) instead of the zone the caller chose. Now, while no image has completed load step 7: - an open that attempted a load and failed (resolve or fetch, signature, an incompatible artifact, a missing symbol, step 7) KEEPS the record but marks it replaceable: a retry with no new setup runs under the recorded zone and defaults, and a different setup replaces the record; - a replaced record is locked again, and so is any record an open commits for its load, so no setup replaces a record under a load; - the binding's own input checks fail before anything is attempted and unlock nothing: a refused version spelling (checked before the attempt begins) and an unverified open without both opt-ins (checked before the commit, through a gate the loader now exposes); - two different setups before any open is attempted are still a UsageError. After the first successful step 7 nothing changes. The generation guard stays: a failed open still never unlocks a setup that was recorded or replaced after it began (another caller's setup, replacing an unlocked record during a slow fetch, must stay locked). - Go: setup.go replaceable; failedOpen unlocks; Registry.open treats an ocifetch.SpellingError as misuse; OpenUnverified asks the new abi1.CheckUnverifiedAllowed first. - Python: _setup.py _replaceable; open_failed unlocks; Registry._open parses the request before the attempt; open_unverified checks opt-ins first. - TypeScript: setup.ts replaceable; settleFailedOpen unlocks; the spelling check is back before the settled opening; openUnverified asks the loader's exported checkUnverifiedAllowed first. - Rust: setup.rs replaceable and unlock_after_failed_open; Registry::open parses the spelling first; open_unverified checks opt-ins first. Section 6 rules 1, 2 and 4, the settings guide and the four [Unreleased] CHANGELOG entries say so. refs #468 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
setup: a failed open before the first step 7 unlocks setup (#468)
…d paths (#431) Approved by the maintainer (public issue #431). - delete the five Go v0 verification files, Python's fetch.py and _manifest.py, TS's fetch.ts, Rust's dead src/fetch/ and digest.rs, and tests/parity/manifest.json - policy-merge-check: drop their PROTECTED_GLOBS entries; the registry adapters' reasons describe v1; the docstring and the carve-out selftest use the v1 tree - CONTRIBUTING.md: the generated protected-glob block, and the carve-out prose - drop the build exclusions for the deleted files (pyproject, tsconfig x2, biome) - comments that cited the deleted files point at the v1 code; regenerated (gen-constants --write, abi-v1 gen --write; the ABI fingerprint is unchanged) - v1-abi-gen: check-no-hand-decls --scope all (0 findings over 221 files) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The comment fix in genfixtures/sign.go (it cited a deleted v0 file) changes the generator's recorded identity; every fixture file is otherwise byte-identical. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ocs (#431) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
The maintainer approved retiring the published 0.x versions. A Go version can never be deleted from the proxy; a retract directive in a later release is the only tool. It takes effect with the next go/v1.0.x release. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
retire v0 (1/2): delete the retained v0 binding code and prune its protected paths (#431)
…ing (#431) Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
retire v0 (2/2): the v0 channel tooling and the old download host's checks (#431)
Every 1.0 production build runs ClickHouse's own result-type validation and truthiness for a filter (FilterTransform) and a CHECK (CheckConstraintsTransform), measured clean on all four supported lines by the artifact producer. The two divergence entries and their register twins go, per the register's own rule (an entry disappears when an artifact stops diverging). main's #392 wording (fix in progress; retired lines never rebuilt) is replaced: 0.x is retired and 1.0 ships only the supported lines. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…istered for 1.0
The demangle DEFAULT over-accept was the last registered divergence. Measured
through the published go v1.0.2 binding against production builds
20261004.052404 on 26.3, 26.7, 26.8 and 26.9: each refuses the CREATE TABLE
with 446 (an upper() DEFAULT control compiles), as a real server does. The
entry and its register twin go. Also drops the Object('json') decline scoped
to 24.8-25.10, the ABI-revision-5 format aside, the 24.8-25.10 half of the
Enum DEFAULT note and the served index.json reference: 1.0 ships only the
supported lines.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
go: retract the 0.x line, v0.1.0 to v0.5.2 (#431)
docs: merge main's #392 into v1; the filter and CHECK over-admits are fixed in 1.0
This was referenced Oct 6, 2026
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.
The 1.0 SDK becomes
main. The maintainer approved this on #431, and the chtypes lead cleared it explicitly.v1has been the 1.0 release line since 1.0.0 shipped from it. All four bindings are published from it, with 1.0.2 the latest lockstep release. This merge makesmain, the default branch, carry 1.0, and retires the 0.x tree from it. 0.x stays reachable through its tags (go/v0.*,python/v0.*,ts/v0.*,rust/v0.*) and git history.What lands on
main:main's scheduled 0.x workflows, somainno longer reads the old download host.docs/limitations.mdcorrected for 1.0 (docs: merge main's #392 into v1; the filter and CHECK over-admits are fixed in 1.0 #474). The divergence register is empty, with each fix measured.retract [v0.1.0, v0.5.2]directive (go: retract the 0.x line, v0.1.0 to v0.5.2 (#431) #471). It takes effect at the nextgo/v1.0.xtag.Done with this PR, as cleared:
main's required status checks become exactlyv1's 21, with strict left off because the merge queue tests the combined commit.main's three 0.x contexts (abi,abi-fixtures,artifacts) no longer exist on this tree.Merge method: the merge queue's MERGE, so
v1's history is kept.Refs #431.
🤖 Generated with Claude Code