Skip to content

docs(canton): align with new canton-specs and canton-contracts repo structure - #228

Open
pepebndc wants to merge 6 commits into
mainfrom
docs/canton-align-repo-structure
Open

docs(canton): align with new canton-specs and canton-contracts repo structure#228
pepebndc wants to merge 6 commits into
mainfrom
docs/canton-align-repo-structure

Conversation

@pepebndc

@pepebndc pepebndc commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Summary

Aligns the Canton docs section with the restructured canton-contracts and canton-specs repositories, and validates every link and repo reference across all canton pages.

Repo-structure alignment

  • Package paths and names: library packages now live under packages/access/access-control-v1, packages/access/ownable-v1, and packages/security/pausable-v1, named openzeppelin-<component>-v1 (previously oz-* at the repo root). Updated the get-started DAR paths, data-dependencies examples, and the library overview.
  • Module names: imports updated to OpenZeppelin.AccessControlV1, OpenZeppelin.OwnableV1, OpenZeppelin.PausableV1.
  • Versioning convention: documented the -v1 package / V1 module convention on the library overview, matching canton-contracts ARCHITECTURE.md.
  • Build steps: added dpm install package before dpm build --all, matching the canton-contracts README.
  • Reference Implementations: the four design-document links pointed at docs/ri-reports/01-*.md files that no longer exist; they now point at docs/reference-architectures/{dex,lending,cross-chain-stablecoin,confidential-auction}.md with link text matching the current report titles.
  • Settlement: now points at the settlement and interoperability experiments in canton-specs, and describes the research-workspace vs released-package boundary between the two repos.

Maturity labeling

  • Access Control, Ownable, and Pausable pages (and the library overview) are now explicitly marked experimental, work in progress, and unaudited, matching the package status table in the canton-contracts README.

Link validation

  • Verified every internal route, every GitHub path (against origin/main of both repos), and every external URL across the 8 canton pages.
  • Fixed the broken Daml link (404; daml.com now redirects to docs.digitalasset.com) and pointed the settlement page's Library related-link at /canton/library instead of /canton.
  • pnpm run lint:links reports no canton errors (remaining failures are pre-existing contracts-sui links).

🤖 Generated with Claude Code

…tructure

- Update package paths, names, and module imports to the new canton-contracts
  layout (packages/access/*-v1, packages/security/pausable-v1,
  openzeppelin-*-v1 packages, OpenZeppelin.*V1 modules)
- Fix Reference Implementation design-document links to the relocated
  reference-architecture reports in canton-specs
- Point the settlement page at the settlement and interoperability experiments
  in canton-specs
- Mark Access Control, Ownable, and Pausable as experimental, work in
  progress, and unaudited
- Replace the broken digitalasset.com/developers link and fix the Library
  related-link on the settlement page

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@pepebndc
pepebndc requested a review from a team as a code owner August 5, 2026 15:29
@netlify

netlify Bot commented Aug 5, 2026

Copy link
Copy Markdown

Deploy Preview for openzeppelin-docs-v2 ready!

Name Link
🔨 Latest commit cb782ac
🔍 Latest deploy log https://app.netlify.com/projects/openzeppelin-docs-v2/deploys/6a759021d2ad48000844ee34
😎 Deploy Preview https://deploy-preview-228--openzeppelin-docs-v2.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

Comment thread content/canton/get-started.mdx Outdated
```

Each package's DAR lands in its own `.daml/dist/` directory (for example `pausable/.daml/dist/oz-pausable-0.1.0.dar`).
Library packages live under `packages/`, grouped by category (`packages/access/` for authorization and ownership, `packages/security/` for operational security). Each package's DAR lands in its own `.daml/dist/` directory (for example `packages/security/pausable-v1/.daml/dist/openzeppelin-pausable-v1-0.1.0.dar`).

@0xNeshi 0xNeshi Aug 6, 2026

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Since we'll be removing these packages from main, maybe it makes sense to not mention them, or at least somehow make it clear this is (will be) on a development branch?

cc @ericnordelo

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you confirm the actual destination? I checked canton-contracts directly: access-control-v1, ownable-v1, pausable-v1 are on main under packages/ right now. My understanding is they'll stay there, with main hosting a mix of mature WIP and already-audited/released code, until each is ready for a release branch tied to its own DAR. None are pulled off main entirely. Is that the right model, or is something actually moving out of main?

Either way, I think it's worth stating this explicitly in the docs: where audited code ends up, how main hosts both mature WIP and audited code side by side, and how canton-specs holds the earlier-stage implementation WIP before something even becomes a canton-contracts package.

Comment thread content/canton/get-started.mdx Outdated
Comment thread content/canton/get-started.mdx
Comment thread content/canton/index.mdx
## Settlement

- **[Settlement (CIP-112)](/canton/settlement)**: An experimental, interface-shaped settlement engine for atomic multi-leg, value-moving delivery-versus-payment, aligned with the Canton Token Standard.
- **[Settlement (CIP-112)](/canton/settlement)**: An experimental, interface-shaped settlement engine for atomic multi-leg, value-moving delivery-versus-payment, aligned with the Canton Token Standard. Developed as executable research in [`OpenZeppelin/canton-specs`](https://github.com/OpenZeppelin/canton-specs).

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Aren't we moving this to OpenZeppelin/canton-contracts?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

for now it's still in specs... will re-align when moved

Comment thread content/canton/reference-implementations.mdx Outdated
Comment thread content/canton/settlement.mdx Outdated
pepebndc and others added 5 commits August 7, 2026 09:42
Co-authored-by: Nenad <nenad.misic@openzeppelin.com>
Co-authored-by: Nenad <nenad.misic@openzeppelin.com>
Co-authored-by: Nenad <nenad.misic@openzeppelin.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ction DARs

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

@stevep0z stevep0z left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Overall, things look good. @0xNeshi 's made good points regarding referencing the dars/released/ as the ultimate home for releases to be integrated by devs. I think it's important to make these changes. One part of the solution could be a general note on the main page for Canton stating the general repo pipeline explicitly rather than leaving it implicit is ideal. Draft below, and happy to adjust as needed. See below.


## Where Things Live

OpenZeppelin's Canton work spans three homes, each serving a different stage of the same pipeline:

- **[`OpenZeppelin/canton-specs`](https://github.com/OpenZeppelin/canton-specs)**, the research and incubation workspace. New primitives start here as executable prototypes, real Daml packages proving out a design, alongside the design documents that justify them. Nothing here is a supported package: it exists to answer a bounded design or compatibility question before a primitive is mature enough to become a `canton-contracts` package.
- **[`OpenZeppelin/canton-contracts`](https://github.com/OpenZeppelin/canton-contracts) (`main`)**, the home for real, versioned packages once a primitive has graduated out of `canton-specs`. `main` hosts a mix of maturity levels at once: some packages may still be experimental, 0.x, and unaudited, while others have already cleared the bar for release. A package's own release branch and tag are cut from `main` once it's ready, independent of the others. Releases will be clearly labelled and these docs will be updated as they are created.
- **`dars/released/`** in `canton-contracts`, the home for tagged, immutable, hash-verified release artifacts, indexed in the repo's `manifest.yaml`. This is the actual "depend on this" target for consumers once it exists. No package has been cut as a tagged release yet, so building from `main` is the practical path today.

A primitive typically moves left to right: prototyped in `canton-specs`, promoted into a `canton-contracts` package once proven, then cut as a tagged release from `main` once that specific package clears the stability and audit bar. 

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants