sf-plugin-permission-sets 0.0.0-dev.18 → 0.0.0-dev.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,10 +1,12 @@
1
1
  # sf-plugin-permission-sets
2
2
 
3
- [![NPM](https://img.shields.io/npm/v/sf-plugin-permission-sets.svg?label=sf-plugin-permission-sets)](https://www.npmjs.com/package/sf-plugin-permission-sets) [![Downloads/week](https://img.shields.io/npm/dw/sf-plugin-permission-sets.svg)](https://npmjs.org/package/sf-plugin-permission-sets) [![License](https://img.shields.io/badge/License-BSD%203--Clause-brightgreen.svg)](https://raw.githubusercontent.com/zaclummys/sf-plugin-permission-sets/main/LICENSE.txt)
3
+ [![NPM](https://img.shields.io/npm/v/sf-plugin-permission-sets.svg?label=sf-plugin-permission-sets)](https://www.npmjs.com/package/sf-plugin-permission-sets) [![Downloads/week](https://img.shields.io/npm/dw/sf-plugin-permission-sets.svg)](https://npmjs.org/package/sf-plugin-permission-sets) [![Stability: experimental](https://img.shields.io/badge/stability-experimental-orange.svg)](https://semver.org/#spec-item-4) [![License](https://img.shields.io/badge/License-BSD%203--Clause-brightgreen.svg)](https://raw.githubusercontent.com/zaclummys/sf-plugin-permission-sets/main/LICENSE.txt)
4
4
 
5
5
  > Declarative, GitOps-style management of **permission set assignments** for Salesforce orgs.
6
6
  > Define who gets what in version-controlled YAML. The plugin reconciles your org to match it: `plan` then `apply`, just like Terraform.
7
7
 
8
+ > ⚠️ **Under active development.** This plugin is `0.x`. Per [semver's major-version-zero rule](https://semver.org/#spec-item-4), anything (commands, flags, the YAML schema) may change in a breaking way between `0.x` releases. Pin a version in CI. The public API stabilizes at `v1.0.0`.
9
+
8
10
  Stop clicking through Setup to grant access. Commit a YAML file, open a PR, let CI show the diff, and merge to apply. Your git history becomes the audit log of who-had-access-when.
9
11
 
10
12
  ---
@@ -16,8 +18,8 @@ Stop clicking through Setup to grant access. Commit a YAML file, open a PR, let
16
18
  - [Quick start](#quick-start)
17
19
  - [Permission files](#permission-files)
18
20
  - [Organizing files](#organizing-files)
19
- - [Validations](#validations)
20
21
  - [Modes](#modes)
22
+ - [Validations](#validations)
21
23
  - [Commands](#commands)
22
24
  - [Inspiration & equivalents](#inspiration--equivalents)
23
25
  - [Versioning](#versioning)
@@ -157,18 +159,6 @@ sf ps apply -o qa --file "permissions/qa/*.yml"
157
159
 
158
160
  The two compose: a directory per environment, each split into functional files.
159
161
 
160
- ## Validations
161
-
162
- Every run checks the files first. `check` runs the offline checks with no org, and `validate` adds the org-side checks. When files merge, most overlaps are unions rather than errors.
163
-
164
- | Situation | Checked by | Severity | Result |
165
- | --- | --- | :---: | --- |
166
- | Same username key appears twice in one file | `check` (offline) | ❌ error | Rejected, the intent is ambiguous |
167
- | Same target listed twice for a user | `check` (offline) | ⚠️ warning | Deduped |
168
- | A user with no scopes, or an empty list | `check` (offline) | ⚠️ warning | Ignored as a no-op |
169
- | Same user in two files with different targets | `check` (offline) | ✅ ok | Merged into one model, the point of slicing |
170
- | Declared user, permission set, group, or license missing or not unique | `validate` (online) | ❌ error | Run fails before any change |
171
-
172
162
  ## Modes
173
163
 
174
164
  A run performs two atomic operations: **add** missing assignments and **remove** undeclared ones. The mode selects which it actually executes. Set it with `--mode` (default `additive`):
@@ -181,6 +171,18 @@ A run performs two atomic operations: **add** missing assignments and **remove**
181
171
 
182
172
  `plan` always shows the *full* picture (both adds **and** would-be removes) regardless of mode, so you can preview the impact before running it. Whatever the chosen mode won't act on is surfaced as **drift**. Gate CI on it with `--fail-on-drift`.
183
173
 
174
+ ## Validations
175
+
176
+ Every run checks the files first. `check` runs the offline checks with no org, and `validate` adds the org-side checks. When files merge, most overlaps are unions rather than errors.
177
+
178
+ | Situation | Checked by | Severity | Result |
179
+ | --- | --- | :---: | --- |
180
+ | Same username key appears twice in one file | `check` (offline) | ❌ error | Rejected, the intent is ambiguous |
181
+ | Same target listed twice for a user | `check` (offline) | ⚠️ warning | Deduped |
182
+ | A user with no scopes, or an empty list | `check` (offline) | ⚠️ warning | Ignored as a no-op |
183
+ | Same user in two files with different targets | `check` (offline) | ✅ ok | Merged into one model, the point of slicing |
184
+ | Declared user, permission set, group, or license missing or not unique | `validate` (online) | ❌ error | Run fails before any change |
185
+
184
186
  ## Commands
185
187
 
186
188
  | Command | Purpose |
@@ -321,6 +323,8 @@ Releases follow [semantic versioning](https://semver.org). Snapshots are automat
321
323
  - Choosing the version bump (patch, minor, or major).
322
324
  - Creating the GitHub Release, which is what triggers the publish above.
323
325
 
326
+ **While on `0.x`:** breaking changes may ship in **any** release, including minor bumps. The plugin is under active development and the public API is not yet stable. The table below describes the contract that takes effect at `v1.0.0`.
327
+
324
328
  | Bump | When | Example tag |
325
329
  | --- | --- | --- |
326
330
  | patch | bug fix, no behavior change | `v0.1.1` |
@@ -182,5 +182,5 @@
182
182
  ]
183
183
  }
184
184
  },
185
- "version": "0.0.0-dev.18"
185
+ "version": "0.0.0-dev.20"
186
186
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "sf-plugin-permission-sets",
3
- "description": "",
3
+ "description": "Declarative permission set assignment management for Salesforce. Under active development, with breaking changes possible until v1.0.0.",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/zaclummys/sf-plugin-permission-sets.git"
@@ -133,5 +133,5 @@
133
133
  "exports": "./lib/index.js",
134
134
  "type": "module",
135
135
  "author": "Isaac Ferreira",
136
- "version": "0.0.0-dev.18"
136
+ "version": "0.0.0-dev.20"
137
137
  }