Skip to content

Commit 503db63

Browse files
committed
feat: establish the Edition 2026 witness contract
1 parent 36eef23 commit 503db63

70 files changed

Lines changed: 2742 additions & 1134 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.rustfmt.toml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,6 @@ use_try_shorthand = true
44
use_small_heuristics = "Max"
55
newline_style = "auto"
66
edition = "2024"
7-
# Keep the established layout while the language edition migrates. A future
8-
# style-edition change can be reviewed as a dedicated mechanical diff.
7+
# Formatting dialect only; this is not a CellScript or Rust language
8+
# compatibility edition.
99
style_edition = "2021"

‎BRANCHES.md‎

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,16 @@ The 0.12-era work is the formal proposal baseline for grant-style acceptance
66
discussions. Do not use that historical baseline to describe the current
77
`main` branch state.
88

9+
## nightly-0.23
10+
11+
`nightly-0.23` is the active edition and native-release-tooling line. It has one
12+
mandatory source/ABI contract, `edition = "2026"`, and deliberately rejects
13+
older package, lock, deployment, receipt, builder, and raw entry-witness
14+
identities rather than migrating them. Treat the line as merge-ready only when
15+
the edition/profile identity is consistent across compiler, metadata, WASM,
16+
builders, initialized submodules, docs, and the `dev`, `ci`, and `backend`
17+
gates.
18+
919
## nightly-0.22
1020

1121
`nightly-0.22` is the active implementation line for the 0.22 type-and-set

‎CHANGELOG.md‎

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,17 @@
22

33
## Unreleased
44

5+
- Make `edition = "2026"` the single mandatory CellScript package contract.
6+
The resolved edition profile now binds source semantics, target and primitive
7+
assurance, entry payload ABI, and group-relative
8+
`WitnessArgs.input_type` placement across metadata, cache keys, registry
9+
records, `Cell.lock` v2, `Deployed.toml` v2, compile receipts v2, generated
10+
builders, native APIs, WASM, LSP, and the playground. Missing or different
11+
editions and older persisted schemas are rejected; no migration or
12+
compatibility reader is provided. Generated CKB entries also remove the
13+
raw-`CSARGv1` witness fallback, so Edition 2026 accepts the payload only
14+
inside canonical `WitnessArgs.input_type`. See the
15+
[0.23 development release notes](docs/releases/CELLSCRIPT_0_23_RELEASE_NOTES.md).
516
- Complete the native-tooling cleanup: neutralize migration-era identifiers,
617
remove tracked legacy traceback logs and cache exclusions, rename the native
718
tooling integration suite, and add a repository-wide source-policy command
@@ -25,8 +36,8 @@
2536
parameterized CKB entries. Generated wrappers now resolve witnesses relative
2637
to the active script group, decode the `CSARGv1` payload from
2738
`WitnessArgs.input_type`, preserve wallet/multisig ownership of `lock`, reject
28-
malformed or wrongly placed payloads, and retain group-relative raw-v1
29-
compatibility. Builders place `input_type` before SDK signing because the
39+
malformed or wrongly placed payloads, and reject group-relative raw-v1
40+
placement. Builders place `input_type` before SDK signing because the
3041
complete `WitnessArgs` is signed. A canonical signed multisig-v2 CKB-VM
3142
regression covers a type group whose first input is not transaction input
3243
zero and rejects post-signing witness mutation. The Rust-native v0.23

‎Cargo.lock‎

Lines changed: 2 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎Cargo.toml‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ exclude = [
4040
"AGENTS.md",
4141
"BRANCHES.md",
4242
"README_REVIEW.md",
43+
"audits/",
4344
"cellscript-*.png",
4445
"docs/",
4546
"docs/wiki/",

‎README.md‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -491,6 +491,7 @@ or CellFabric intent engine.
491491

492492
- [VS Code extension](editors/vscode-cellscript)
493493
- [Runtime error codes](docs/CELLSCRIPT_RUNTIME_ERROR_CODES.md)
494+
- [Edition policy](docs/CELLSCRIPT_EDITION_POLICY.md)
494495
- [Entry witness ABI](docs/CELLSCRIPT_ENTRY_WITNESS_ABI.md)
495496
- [BIP340 verifier CellDep ABI](docs/CELLSCRIPT_SIGNATURE_VERIFIER_ABI.md)
496497
- [Collections support matrix](docs/CELLSCRIPT_COLLECTIONS_SUPPORT_MATRIX.md)
@@ -716,6 +717,7 @@ policy defaults:
716717

717718
```toml
718719
[package]
720+
edition = "2026"
719721
name = "token"
720722
version = "0.22.0"
721723
entry = "src/main.cell"
@@ -732,7 +734,11 @@ deny_ckb_runtime = false
732734
deny_runtime_obligations = false
733735
```
734736

735-
Command-line flags can tighten policy checks for a build or CI job.
737+
`edition = "2026"` is mandatory and is the only supported edition. It binds
738+
the source, ABI, metadata, lockfile, deployment, receipt, and builder contract;
739+
older or missing editions are rejected rather than migrated. Command-line
740+
flags can tighten policy checks for a build or CI job. The full contract is in
741+
the [edition policy](docs/CELLSCRIPT_EDITION_POLICY.md).
736742

737743
### Package Workflow
738744

‎crates/cellscript-tools/Cargo.toml‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ path = "src/main.rs"
1414
[dependencies]
1515
anyhow = "1.0"
1616
blake2b-ref = "0.3"
17+
ckb-jsonrpc-types = "1.0.0"
18+
ckb-types = "1.0.0"
1719
clap = { version = "=4.5.49", features = ["derive"] }
1820
hex = "0.4"
1921
hex-literal = "0.4"

0 commit comments

Comments
 (0)