Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 18 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,24 @@

## Unreleased

## 0.2.1

- The AWS Dialect presents AWS resources with the official AWS Architecture
Icons, and the Azure Dialect presents node pools, blob containers, storage
queues, public IP addresses and virtual network peerings with official Azure
icons.
- The Google Cloud Dialect presents Google Cloud resources with the official
Google Cloud product icons: a core product shows its own icon and other
products the icon of their category. A product without an icon in the
library, such as the Google Cloud project, keeps a neutral symbol.
- Exported HTML pages draw the official provider icons instead of a neutral
symbol.
- Explorer boxes keep to two rows, the label and then the resource kind, and
widen a little for a long label. The module path moves to the tooltip and
the Inspector.
- In planned changes and comparisons, a container without a change of its own
shows a compact tally of the changes it holds, by kind of change.

## 0.2.0

- Analyze Terraform and OpenTofu plan and state exports into portable Forms,
Expand Down
6 changes: 4 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,9 @@ contain secrets.
## Compare and check

Try the synthetic [commerce sample](examples/playground/commerce-platform/)
from the repository root:
from the repository root. Its `base` plan reads the existing infrastructure
with no changes, its `head` plan is the proposed change against the same
state, and the first command compares the two:

```bash
rootform run examples/playground/commerce-platform/base/plan.json \
Expand All @@ -60,7 +62,7 @@ rootform run examples/playground/commerce-platform/base/plan.json \
rootform check comparison.json --policy-pack ./policy-packs/baseline -o results.sarif
```

Comparison reports differences between the supplied evidence. Policy checks
The comparison reports the architectural difference between the two plans. Policy checks
return `0` on pass, `1` on a violation and `3` for indeterminate evidence or
no target. See [outputs and exit status](docs/reference/outputs.md),
[review workflows](docs/workflows/index.md), [evidence limits](docs/limitations.md)
Expand Down
330 changes: 285 additions & 45 deletions THIRD_PARTY_NOTICES.txt

Large diffs are not rendered by default.

32 changes: 21 additions & 11 deletions dependencies/runtime-components.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,15 @@
{
"components": [
{
"copyright_text": "Copyright 2020 Amazon.com, Inc. or its affiliates. All Rights Reserved.",
"kind": "asset",
"license_concluded": "CC-BY-ND-2.0",
"license_declared": "CC-BY-ND-2.0",
"license_text_sha256": "a00df63944f7c11b496c28701e752686275c4332829519e2c5813bea52690c1c",
"name": "AWS Icons for PlantUML",
"upstream": "https://github.com/awslabs/aws-icons-for-plantuml/tree/v23.1",
"version": "v23.1"
},
{
"copyright_text": "© GitHub, Inc.",
"kind": "asset",
Expand All @@ -14,13 +24,13 @@
{
"copyright_text": "NOASSERTION",
"kind": "asset",
"extracted_text": "Google Cloud product icons — development preview notice\n\nStatus: DEVELOPMENT PREVIEW. This is not a release decision.\n\nOfficial page: https://cloud.google.com/icons\nOfficial archive: https://services.google.com/fh/files/misc/google-cloud-legacy-icons.zip\nArchive version: legacy-product-icons-2021-10-14\nArchive SHA-256: a6d9d7921758042538b462f03cf64614c2cebd96743b3ed63580a769fc7de3e9\nArchive entry date: 2021-10-14\nArchive downloaded: 2026-09-28\n\nRootform has not cleared Google Cloud icon terms for redistribution. These\nicons are embedded only so that Google visual identity can be validated during\nrenderer development. No redistribution right is claimed, granted, or implied\nby their presence in this repository.\n\nSelected Google Cloud product icons are preserved unmodified apart from\nrender-preserving SVG optimization that changes no geometry, color, or shape.\nRootform does not crop, flip, rotate, distort, recolor, or redraw them, and\nnever uses a Google icon as Rootform product identity. Rootform is not\naffiliated with, endorsed by, or sponsored by Google.\n\nGoogle Cloud and other Google product names and logos are trademarks of\nGoogle LLC.\n\nBefore any release, publication, or distribution that carries these assets,\nRootform must review Google's current icon and brand terms, clear\nredistribution rights, and record the outcome. If rights are not secured,\nthese assets and their google/* identities must be removed and Google semantic\nrules must resolve to provider-neutral symbols again.\n",
"license_concluded": "LicenseRef-Google-Cloud-Icons-Development-Preview-Rights-Not-Cleared",
"license_declared": "LicenseRef-Google-Cloud-Icons-Development-Preview-Rights-Not-Cleared",
"license_text_sha256": "107464954ea982fad2d1205102a9ace7b14400cc0cf689fc374bbb941ab24150",
"name": "Google Cloud Product Icons (development preview)",
"extracted_text": "Google Cloud product icons usage notice\n\nOfficial page: https://cloud.google.com/icons\nCore product icons: https://services.google.com/fh/files/misc/core-products-icons.zip\nCore archive SHA-256: 6531a10f58bc599c24d9a455d81dd757c1a03c3c43da9cddf639b859c1c1eece\nCategory icons: https://services.google.com/fh/files/misc/category-icons.zip\nCategory archive SHA-256: e5bc3abd3527dc2500e9bff7f15870783e2c764129c49b7cd4c1b4e105345002\nProduct icon guide: https://services.google.com/fh/files/misc/google-cloud-product-icons.pdf\nGuide SHA-256: 3cea6ac3abf8183462addffc2e3533a4c75f681f91981a2061131cbdc0c800a0\nGuide updated: 2026-05\nDownloaded: 2026-10-10\n\nGoogle publishes these icons as its official library of Google Cloud product\nicons for architecture diagrams and technical documentation. Rootform embeds\nselected icons only to identify Google Cloud products in its architecture\ndiagrams, as the product icon guide assigns them: a core product carries its\nunique icon and another product carries the icon of its category.\n\nEach selected SVG is embedded byte for byte as published in the official\narchives. Rootform does not crop, flip, rotate, recolor, redraw or reshape an\nicon, and never uses a Google icon as Rootform product identity. Rootform is\nnot affiliated with, endorsed by, or sponsored by Google.\n\nGoogle Cloud and the related product names and logos are trademarks of\nGoogle LLC.\n",
"license_concluded": "LicenseRef-Google-Cloud-Product-Icons-Usage",
"license_declared": "LicenseRef-Google-Cloud-Product-Icons-Usage",
"license_text_sha256": "03f5401055e047320f1b4f0b6ca47e7ae243021639b6603cc509144471b457ac",
"name": "Google Cloud product icons",
"upstream": "https://cloud.google.com/icons",
"version": "legacy-product-icons-2021-10-14"
"version": "2026-05"
},
{
"copyright_text": "Copyright © 2017 IBM Corp. with Reserved Font Name \"Plex\"",
Expand Down Expand Up @@ -70,8 +80,8 @@
"license_declared": "MPL-2.0",
"license_text_sha256": "1f256ecad192880510e84ad60474eab7589218784b9a50bc7ceee34c2b91f1d5",
"name": "Rootform Dialects presentation catalogs",
"upstream": "https://github.com/rootform-dev/rootform/tree/0dfca817f82cbe73fed2d3fc87d705360d63b7fb",
"version": "0dfca817f82cbe73fed2d3fc87d705360d63b7fb"
"upstream": "https://github.com/rootform-dev/rootform/tree/97fb96cea06c5da5015a7dbc4e399677888fa370",
"version": "97fb96cea06c5da5015a7dbc4e399677888fa370"
},
{
"copyright_text": "(c) under Patent Claims infringed by Covered Software in the absence of",
Expand All @@ -80,8 +90,8 @@
"license_declared": "MPL-2.0",
"license_text_sha256": "1f256ecad192880510e84ad60474eab7589218784b9a50bc7ceee34c2b91f1d5",
"name": "Rootform Dialects",
"upstream": "https://github.com/rootform-dev/rootform/tree/7261d3d94cf888812d180993c8f32158151227fc",
"version": "7261d3d94cf888812d180993c8f32158151227fc"
"upstream": "https://github.com/rootform-dev/rootform/tree/97fb96cea06c5da5015a7dbc4e399677888fa370",
"version": "97fb96cea06c5da5015a7dbc4e399677888fa370"
},
{
"copyright_text": "(c) You must retain, in the Source form of any Derivative Works; Copyright 2016 ALRUX Inc.",
Expand Down Expand Up @@ -232,7 +242,7 @@
"license_text_sha256": "cfc7749b96f63bd31c3c42b5c471bf756814053e847c10f3eb003417bc523d30",
"name": "github.com/rootform-dev/rootform/cli",
"upstream": "https://github.com/rootform-dev/rootform/cli",
"version": "v0.0.0-20261008111621-7261d3d94cf8"
"version": "v0.0.0-20261010220204-97fb96cea06c"
},
{
"copyright_text": "(c) You must retain, in the Source form of any Derivative Works",
Expand Down
15 changes: 7 additions & 8 deletions dependencies/verification-runtime.json
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
{
"format_version": "1",
"repository": "rootform-dev/rootform",
"version": "0.1.0-pr.117.1",
"version": "0.2.0",
"archives": {
"linux_amd64": "ef1dfd4eb00d8627a3146c1174516124b6d7b2375bb6db32796b77fb910c4396",
"darwin_arm64": "a2426008d5601478c1328e590ecd6edccbfd1f275b6d8e965e1ce56b3ee514ff"
"linux_amd64": "9b91e15efc70d7d33a03044f3693864f74d2c89a7452afd8f601210829f36ffc",
"darwin_arm64": "766ee9b96166cba95ec6ed2d9812d3aa58cb436460633b4f6c95b7b5d8eaceb4"
},
"release_tag": "verification-runtime-0.1.0-pr.117.1",
"origin": {
"repository": "rootform-dev/rootform",
"repository_id": 1351756902,
"release_id": 401631093,
"release_tag": "v0.1.0-pr.117.1",
"release_commit": "74bd643f3001a37f8b4f881c0ae33db047b6aba3",
"published_at": "2026-10-02T08:56:47Z"
"release_id": 407493810,
"release_tag": "v0.2.0",
"release_commit": "f0282833b14c4456cb9c1d762b8eb0a90e3ba8de",
"published_at": "2026-10-09T04:09:38Z"
}
}
14 changes: 11 additions & 3 deletions dialects/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,11 @@ with Rootform. Each owner keeps its own semantic version and content identity;
there is no collection version.

Sources use the native `.rf.hcl` format. `dialects.json` is the release-set
inventory used to build Rootform's embedded semantics. `evidence/` and
`fixtures/` hold public validation evidence for these sources.
inventory used to build Rootform's embedded semantics. `fixtures/` holds the
Terraform configurations that validate these sources.
`provider-registry-equivalence.json` records, for each provider a Dialect binds
without a registry host, the release archive digests showing that the
Terraform and OpenTofu registries serve the same provider.

Third-party Dialects and explicit replacements use the OCI distribution
contract documented by the parent Rootform repository. They are not copied
Expand Down Expand Up @@ -49,7 +52,12 @@ without planning:
ROOTFORM_BIN=/path/to/rootform bun run update:goldens
```

`evidence/plan-fixture-inventory.json` lists every fixture with the digest of
`fixtures/expectations/<dialect>.json` holds the reviewed scenarios of each
Dialect: the fixture a scenario uses and what its recorded analysis must and
must not contain. `ROOTFORM_BIN=/path/to/rootform bun run verify:dialects`
replays the fixtures and checks every statement against their goldens.

`fixtures/inventory.json` lists every fixture with the digest of
its source, its providers and its outcome. A fixture that cannot plan offline
keeps its source, records why with the status `not_planned`, and proves nothing:
verification reports every scenario naming it as not verified. Resource types a
Expand Down
8 changes: 4 additions & 4 deletions dialects/THIRD_PARTY_NOTICES.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ This repository contains no vendor logo or icon files. Each
approved visual assets remain in the proprietary Rootform renderer under their
original terms.

Provider baselines and compatibility evidence summarize public APIs and public
documentation. Upstream source URLs and versions are recorded in each
`evidence/<dialect>/` directory. Upstream code is not copied into this
repository.
Each Dialect names the provider source and version it reads in its
`dialect.rf.hcl`, and `provider-registry-equivalence.json` records the
digests of the provider release archives checked for those versions. Upstream
code is not copied into this repository.
Loading
Loading