@carecard/validate 3.29.0 → 3.31.0

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.
@@ -1,10 +1,18 @@
1
1
  ---
2
2
  name: carecard-must-do
3
- description: 'Non-negotiable startup requirements for every agent, including Codex, Claude, other assistants, and delegated agents. Load first whenever beginning or resuming any task to govern questions, visible working copies, and agent-named branches.'
3
+ description: 'Non-negotiable startup requirements for every agent, including Codex, Claude, other assistants, and delegated agents. Load first whenever beginning or resuming any task to govern questions, visible working copies, and working-branch continuity.'
4
4
  ---
5
5
 
6
6
  # CareCard Must Do
7
7
 
8
+ ## Explicit approval before GitHub settings changes
9
+
10
+ Before changing any GitHub setting, explain the exact proposed change, ask the
11
+ user explicitly, and wait for their approval. This includes temporary changes
12
+ to GitHub Actions, workflow enablement, branch protection, and repository or
13
+ organization settings. Authorization to commit, push, merge, tag, cancel runs,
14
+ or clean up branches does not authorize settings changes.
15
+
8
16
  ## Mandatory for every agent
9
17
 
10
18
  Every agent must read and follow this skill before beginning or resuming work
@@ -61,18 +69,34 @@ resources owned by the task when cleanup is authorized. Ordinary temporary
61
69
  logs, build artifacts, and test fixtures are permitted when they are not used
62
70
  as an undisclosed replacement working repository.
63
71
 
64
- ## Work on an agent-named branch
65
-
66
- Before changing repository files, create and switch to a task-specific branch
67
- named `<agent-name>/<task-name>` in the owning repository. Use the agent's
68
- recognizable lowercase name and a descriptive task name, such as
69
- `codex/carecard-must-do`, `claude/fix-login`, or `junie/update-validation`.
70
- Reuse an existing agent-named branch only when continuing that same task.
71
- Read-only investigation and planning do not require creating a branch.
72
+ ## Choose and refresh the working branch
73
+
74
+ Reuse the current working branch for every follow-up request, even when the
75
+ subject changes or the working tree is clean. Create a branch only when no
76
+ working branch exists or the checkout is on `main` or `development`. Otherwise,
77
+ fetch remote `main` HEAD and rebase the same working branch onto that fetched
78
+ commit, preserving its commits and uncommitted work.
79
+
80
+ Identify the repository directory, current branch, and working-tree state.
81
+ Fetch `origin/main` at task start before making task changes.
82
+
83
+ - Create and switch to a new `<agent-name>/<branch-name>` branch from freshly
84
+ fetched `origin/main` only when no working branch exists or the current branch is
85
+ `main` or `development`. Use the agent's recognizable lowercase name and a
86
+ descriptive
87
+ branch name, or the exact branch name supplied by the user.
88
+ - On every other branch, keep the current branch and rebase it onto freshly
89
+ fetched `origin/main` before starting task changes. Preserve its existing
90
+ commits and build the new task's commits on top of that work. Reuse this
91
+ branch for subsequent tasks, including when the working tree is clean or
92
+ the new task differs from the previous one.
93
+
94
+ Preserve uncommitted changes when preparing the rebase and restore any changes
95
+ that were temporarily set aside. Do not reset, replace, squash, or discard the
96
+ current branch's work merely to start a new task. Honor explicit user
97
+ working-branch instructions. Read-only investigation and planning do not
98
+ require creating a branch.
72
99
 
73
- Identify the repository directory and working branch before making changes.
74
- Preserve existing commits and unrelated local changes. Start new work from
75
- freshly fetched `origin/main`, or rebase continuing work onto it when needed.
76
100
  Fetch again before every source-branch push and rebase when the branch does
77
101
  not already contain the latest `origin/main`.
78
102
 
@@ -193,11 +193,20 @@ making a new commit in the affected repository.
193
193
 
194
194
  ## Agent Guidance Git Workflow
195
195
 
196
+ Reuse the current working branch for every follow-up request, even when the
197
+ subject changes or the working tree is clean. Create a branch only when no
198
+ working branch exists or the checkout is on `main` or `development`. Otherwise,
199
+ fetch remote `main` HEAD and rebase the same working branch onto that fetched
200
+ commit, preserving its commits and uncommitted work.
201
+
196
202
  Work from the owning repository root and stage only intended guidance changes.
197
- Use freshly fetched `origin/main` as the default base. Start `<agent-name>/<task-name>`
198
- from it, or rebase existing work when it does not already contain the latest
199
- `origin/main`. An explicit user instruction to use the current or another
200
- working branch overrides the default `<agent-name>/<task-name>` selection.
203
+ Fetch fresh `origin/main` at task start. Create `<agent-name>/<branch-name>`
204
+ from it only when no working branch exists or the current branch is `main` or
205
+ `development`. Otherwise keep
206
+ and rebase the current branch onto it, preserving existing commits and
207
+ uncommitted changes. Build subsequent task commits on that same branch, even
208
+ for a different task or a clean working tree. Honor explicit user
209
+ working-branch instructions.
201
210
 
202
211
  Fetch again before every source-branch push and rebase only when the branch
203
212
  does not already contain the latest `origin/main`. Required fetches need no
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: github-pr-create-update
3
- description: 'Use when asked to push, create, update, or ready a GitHub pull request. Default to main, fetch origin/main at the start and before source pushes, rebase when needed, and preserve main from deletion or force pushes.'
3
+ description: 'Use when asked to push, create, update, or ready a GitHub pull request. Default PRs to main. Create a branch from fresh origin/main only without a working branch or from main or development; otherwise preserve and rebase the current branch for subsequent tasks. Fetch again before source pushes and preserve main from deletion or force pushes.'
4
4
  ---
5
5
 
6
6
  Non-negotiable root-cause solution rule: Always identify and solve the verified root cause, use the stronger solution, and deliver a correct, durable, production-quality result. Never treat a temporary workaround, resource increase, retry, suppression, bypass, or symptom-only patch as completion. Validate the root-cause fix against the real failing workflow and prove the end state.
@@ -19,6 +19,12 @@ Non-negotiable code organization rule: Functions with the same or equivalent beh
19
19
 
20
20
  ## Default Git Policy
21
21
 
22
+ Reuse the current working branch for every follow-up request, even when the
23
+ subject changes or the working tree is clean. Create a branch only when no
24
+ working branch exists or the checkout is on `main` or `development`. Otherwise,
25
+ fetch remote `main` HEAD and rebase the same working branch onto that fetched
26
+ commit, preserving its commits and uncommitted work.
27
+
22
28
  Apply these defaults unless the user explicitly specifies otherwise. The
23
29
  prohibition on deleting or force-pushing `main` always applies.
24
30
 
@@ -26,9 +32,13 @@ prohibition on deleting or force-pushing `main` always applies.
26
32
  truth. `origin/HEAD`, a stale local `main`, and the presence of `development`
27
33
  do not change this default. If remote `main` is missing or cannot be fetched,
28
34
  report the blocker instead of selecting another base.
29
- 2. At task start, fetch `origin/main`, then create new work from that commit or
30
- rebase the existing working branch onto it when needed. Honor an explicit
31
- working-branch instruction; it changes branch selection, not freshness.
35
+ 2. At task start, fetch `origin/main`. Create `<agent-name>/<branch-name>`
36
+ from that commit only when no working branch exists or the current branch is
37
+ `main` or `development`.
38
+ Otherwise keep and rebase the current branch onto that commit, preserving
39
+ its existing commits and building subsequent task commits on top. Honor an
40
+ explicit working-branch instruction; it changes branch selection, not
41
+ freshness.
32
42
  3. Fetch again before every source-branch push. Rebase when the working branch
33
43
  does not already contain the latest `origin/main`; a clean mergeability
34
44
  check is not proof that rebasing is unnecessary. If it already contains that
@@ -65,11 +75,15 @@ with `--force-with-lease`.
65
75
 
66
76
  Work from the owning repository root. Inspect status, the current branch,
67
77
  upstream, and worktrees before changing refs. Preserve unrelated changes and
68
- existing commits; do not reset a working branch to discard its work. Use the
69
- user-named branch, or the current source branch for a single-repository task.
70
- If starting new work while on `main`, create a task branch from fresh
71
- `origin/main`. Do not use `main` or the selected base as a PR source branch.
72
- Stop if the source branch cannot be resolved or HEAD is detached.
78
+ existing commits; do not reset a working branch to discard its work. Honor the
79
+ user's explicit working-branch instruction. Create a new
80
+ `<agent-name>/<branch-name>` from fresh `origin/main` only when no working branch
81
+ exists or the current branch is `main` or `development`. Otherwise keep the current
82
+ branch, rebase it
83
+ onto fresh `origin/main`, and build the new task's commits on its existing
84
+ work. A different task or a clean working tree does not require a new branch.
85
+ Do not use `main` or the selected base as a PR source branch. Stop if the source
86
+ branch cannot be resolved or HEAD is detached.
73
87
 
74
88
  Fetch the authoritative ref explicitly:
75
89
 
@@ -77,22 +91,16 @@ Fetch the authoritative ref explicitly:
77
91
  git fetch origin refs/heads/main:refs/remotes/origin/main
78
92
  ```
79
93
 
80
- For an existing working branch, check whether it includes the fetched commit:
94
+ For an existing working branch, preserve any uncommitted changes and rebase
95
+ before starting task changes; restore any changes temporarily set aside:
81
96
 
82
97
  ```sh
83
- if git merge-base --is-ancestor origin/main HEAD; then
84
- printf '%s\n' 'Working branch already contains the latest origin/main.'
85
- else
86
- ancestry_result=$?
87
- if [ "$ancestry_result" -ne 1 ]; then
88
- exit "$ancestry_result"
89
- fi
90
- git rebase origin/main
91
- fi
98
+ git rebase origin/main
92
99
  ```
93
100
 
94
- Repeat the fetch and ancestry check before every source-branch push, including
95
- pushes after validation fixes. If rebasing changes the validated inputs, rerun
101
+ Before every source-branch push, including pushes after validation fixes,
102
+ fetch again and rebase when the branch does not already contain the latest
103
+ `origin/main`. If rebasing changes the validated inputs, rerun
96
104
  the affected validation. Preserve successful evidence for unchanged inputs.
97
105
  If a rebase conflicts, abort only the rebase started by this task and report
98
106
  the conflict; do not push or discard work. Preserve any pre-existing Git
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: github-pr-merge-cleanup
3
- description: 'Use for authorized GitHub PR squash merge and source cleanup. Default to fresh origin/main, rebase when needed, delete merged source branches, and synchronize main and development without deleting or force-pushing main.'
3
+ description: 'Use for authorized GitHub PR squash merge and source cleanup. Create a branch from fresh origin/main only without a working branch or from main or development; otherwise preserve and rebase the current branch for subsequent tasks. Delete merged source branches, and synchronize main and development without deleting or force-pushing main.'
4
4
  ---
5
5
 
6
6
  Non-negotiable root-cause solution rule: Always identify and solve the verified root cause, use the stronger solution, and deliver a correct, durable, production-quality result. Never treat a temporary workaround, resource increase, retry, suppression, bypass, or symptom-only patch as completion. Validate the root-cause fix against the real failing workflow and prove the end state.
@@ -19,6 +19,12 @@ Non-negotiable code organization rule: Functions with the same or equivalent beh
19
19
 
20
20
  ## Default Git Policy
21
21
 
22
+ Reuse the current working branch for every follow-up request, even when the
23
+ subject changes or the working tree is clean. Create a branch only when no
24
+ working branch exists or the checkout is on `main` or `development`. Otherwise,
25
+ fetch remote `main` HEAD and rebase the same working branch onto that fetched
26
+ commit, preserving its commits and uncommitted work.
27
+
22
28
  Apply these defaults unless the user explicitly specifies otherwise. The
23
29
  prohibition on deleting or force-pushing `main` always applies.
24
30
 
@@ -26,9 +32,13 @@ prohibition on deleting or force-pushing `main` always applies.
26
32
  truth. `origin/HEAD`, a stale local `main`, and the presence of `development`
27
33
  do not change this default. If remote `main` is missing or cannot be fetched,
28
34
  report the blocker instead of selecting another base.
29
- 2. At task start, fetch `origin/main`, then create new work from that commit or
30
- rebase the existing working branch onto it when needed. Honor an explicit
31
- working-branch instruction; it changes branch selection, not freshness.
35
+ 2. At task start, fetch `origin/main`. Create `<agent-name>/<branch-name>`
36
+ from that commit only when no working branch exists or the current branch is
37
+ `main` or `development`.
38
+ Otherwise keep and rebase the current branch onto that commit, preserving
39
+ its existing commits and building subsequent task commits on top. Honor an
40
+ explicit working-branch instruction; it changes branch selection, not
41
+ freshness.
32
42
  3. Fetch again before every source-branch push. Rebase when the working branch
33
43
  does not already contain the latest `origin/main`; a clean mergeability
34
44
  check is not proof that rebasing is unnecessary. If it already contains that
@@ -65,11 +75,15 @@ with `--force-with-lease`.
65
75
 
66
76
  Work from the owning repository root. Inspect status, the current branch,
67
77
  upstream, and worktrees before changing refs. Preserve unrelated changes and
68
- existing commits; do not reset a working branch to discard its work. Use the
69
- user-named branch, or the current source branch for a single-repository task.
70
- If starting new work while on `main`, create a task branch from fresh
71
- `origin/main`. Do not use `main` or the selected base as a PR source branch.
72
- Stop if the source branch cannot be resolved or HEAD is detached.
78
+ existing commits; do not reset a working branch to discard its work. Honor the
79
+ user's explicit working-branch instruction. Create a new
80
+ `<agent-name>/<branch-name>` from fresh `origin/main` only when no working branch
81
+ exists or the current branch is `main` or `development`. Otherwise keep the current
82
+ branch, rebase it
83
+ onto fresh `origin/main`, and build the new task's commits on its existing
84
+ work. A different task or a clean working tree does not require a new branch.
85
+ Do not use `main` or the selected base as a PR source branch. Stop if the source
86
+ branch cannot be resolved or HEAD is detached.
73
87
 
74
88
  Fetch the authoritative ref explicitly:
75
89
 
@@ -77,22 +91,16 @@ Fetch the authoritative ref explicitly:
77
91
  git fetch origin refs/heads/main:refs/remotes/origin/main
78
92
  ```
79
93
 
80
- For an existing working branch, check whether it includes the fetched commit:
94
+ For an existing working branch, preserve any uncommitted changes and rebase
95
+ before starting task changes; restore any changes temporarily set aside:
81
96
 
82
97
  ```sh
83
- if git merge-base --is-ancestor origin/main HEAD; then
84
- printf '%s\n' 'Working branch already contains the latest origin/main.'
85
- else
86
- ancestry_result=$?
87
- if [ "$ancestry_result" -ne 1 ]; then
88
- exit "$ancestry_result"
89
- fi
90
- git rebase origin/main
91
- fi
98
+ git rebase origin/main
92
99
  ```
93
100
 
94
- Repeat the fetch and ancestry check before every source-branch push, including
95
- pushes after validation fixes. If rebasing changes the validated inputs, rerun
101
+ Before every source-branch push, including pushes after validation fixes,
102
+ fetch again and rebase when the branch does not already contain the latest
103
+ `origin/main`. If rebasing changes the validated inputs, rerun
96
104
  the affected validation. Preserve successful evidence for unchanged inputs.
97
105
  If a rebase conflicts, abort only the rebase started by this task and report
98
106
  the conflict; do not push or discard work. Preserve any pre-existing Git
@@ -68,6 +68,12 @@ synchronization must reuse the same version; it is not a second release.
68
68
 
69
69
  ## Default Git Policy
70
70
 
71
+ Reuse the current working branch for every follow-up request, even when the
72
+ subject changes or the working tree is clean. Create a branch only when no
73
+ working branch exists or the checkout is on `main` or `development`. Otherwise,
74
+ fetch remote `main` HEAD and rebase the same working branch onto that fetched
75
+ commit, preserving its commits and uncommitted work.
76
+
71
77
  Apply these defaults unless the user explicitly specifies otherwise. The
72
78
  prohibition on deleting or force-pushing `main` always applies.
73
79
 
@@ -75,9 +81,13 @@ prohibition on deleting or force-pushing `main` always applies.
75
81
  truth. `origin/HEAD`, a stale local `main`, and the presence of `development`
76
82
  do not change this default. If remote `main` is missing or cannot be fetched,
77
83
  report the blocker instead of selecting another base.
78
- 2. At task start, fetch `origin/main`, then create new work from that commit or
79
- rebase the existing working branch onto it when needed. Honor an explicit
80
- working-branch instruction; it changes branch selection, not freshness.
84
+ 2. At task start, fetch `origin/main`. Create `<agent-name>/<branch-name>`
85
+ from that commit only when no working branch exists or the current branch is
86
+ `main` or `development`.
87
+ Otherwise keep and rebase the current branch onto that commit, preserving
88
+ its existing commits and building subsequent task commits on top. Honor an
89
+ explicit working-branch instruction; it changes branch selection, not
90
+ freshness.
81
91
  3. Fetch again before every source-branch push. Rebase when the working branch
82
92
  does not already contain the latest `origin/main`; a clean mergeability
83
93
  check is not proof that rebasing is unnecessary. If it already contains that
@@ -5,6 +5,25 @@ description: 'Use after carecard-must-do. Mandatory for every pkg-validate task,
5
5
 
6
6
  # Pkg Validate Coding Standards And Best Practices
7
7
 
8
+ ## Release 1.1.1 and production data
9
+
10
+ CareCard Release 1.1.1 is the production baseline. Seeding with
11
+ `--seed-release-data` is complete. Production cluster data, database rows,
12
+ and stored user files will be preserved going forward. There will be no
13
+ complete user-data wipeout and re-creation.
14
+
15
+ Future production changes must use data-preserving migrations. Do not replay
16
+ the completed initialization or run reset, rollback, or seed workflows as part
17
+ of ordinary production deployment.
18
+
19
+ ## Commit and merge documentation and skills with the task
20
+
21
+ In each owning repository, include all task-related documentation, plans, and
22
+ skill changes in the same commit as the related task changes. Merge them
23
+ together into remote `main`. Do not leave changed documentation or skills
24
+ uncommitted or unmerged, and do not declare the task complete until their
25
+ inclusion in the merged commit is verified. Preserve unrelated work.
26
+
8
27
  First read [carecard-must-do](../carecard-must-do/SKILL.md); it is mandatory for every agent and task.
9
28
  Then apply this engineering standard before selecting narrower skills.
10
29
 
@@ -175,6 +194,12 @@ them unused and replaced.
175
194
 
176
195
  ## Completion
177
196
 
197
+ Reuse the current working branch for every follow-up request, even when the
198
+ subject changes or the working tree is clean. Create a branch only when no
199
+ working branch exists or the checkout is on `main` or `development`. Otherwise,
200
+ fetch remote `main` HEAD and rebase the same working branch onto that fetched
201
+ commit, preserving its commits and uncommitted work.
202
+
178
203
  1. Review each changed repository's diff and status independently.
179
204
  2. Run focused runtime, type, and coverage tests, then all broader checks
180
205
  required by local skills.
@@ -184,11 +209,15 @@ them unused and replaced.
184
209
  none exists, run the strongest repository-native focused validation.
185
210
  5. Fix every in-scope failure at its root cause and rerun the exact command.
186
211
  6. Report exact commands, results, limitations, and remaining risk.
187
- 7. Fetch the latest `origin/main` at task start and before every source-branch push;
188
- these required fetches need no separate approval. Start new work from that
189
- commit or rebase existing work when it does not already contain it. Commits,
190
- pushes, PR mutations, and branch cleanup still require an authorized task.
191
- Never delete local or remote `main` or force-push to remote `main`.
212
+ 7. Fetch the latest `origin/main` at task start and before every source-branch
213
+ push; these required fetches need no separate approval. Create
214
+ `<agent-name>/<branch-name>` from it only when no working branch exists or the
215
+ current branch is `main` or `development`. Otherwise rebase the current branch
216
+ onto it, preserving
217
+ existing commits and uncommitted changes, and build subsequent task commits
218
+ on that same branch. Commits, pushes, PR mutations, and branch cleanup still
219
+ require an authorized task. Never delete local or remote `main` or
220
+ force-push to remote `main`.
192
221
 
193
222
  ## TDD And Validation
194
223
 
@@ -211,11 +211,20 @@ with `--force-with-lease`.
211
211
 
212
212
  ## Agent Guidance Git Workflow
213
213
 
214
+ Reuse the current working branch for every follow-up request, even when the
215
+ subject changes or the working tree is clean. Create a branch only when no
216
+ working branch exists or the checkout is on `main` or `development`. Otherwise,
217
+ fetch remote `main` HEAD and rebase the same working branch onto that fetched
218
+ commit, preserving its commits and uncommitted work.
219
+
214
220
  Work from the owning repository root and stage only intended guidance changes.
215
- Use freshly fetched `origin/main` as the default base. Start `<agent-name>/<task-name>`
216
- from it, or rebase existing work when it does not already contain the latest
217
- `origin/main`. An explicit user instruction to use the current or another
218
- working branch overrides the default `<agent-name>/<task-name>` selection.
221
+ Fetch fresh `origin/main` at task start. Create `<agent-name>/<branch-name>`
222
+ from it only when no working branch exists or the current branch is `main` or
223
+ `development`. Otherwise keep
224
+ and rebase the current branch onto it, preserving existing commits and
225
+ uncommitted changes. Build subsequent task commits on that same branch, even
226
+ for a different task or a clean working tree. Honor explicit user
227
+ working-branch instructions.
219
228
 
220
229
  Fetch again before every source-branch push and rebase only when the branch
221
230
  does not already contain the latest `origin/main`. Required fetches need no
package/index.d.ts CHANGED
@@ -84,7 +84,7 @@ export interface ValidateWhitelistPropertiesFunction {
84
84
 
85
85
  export const validateWhitelistProperties: ValidateWhitelistPropertiesFunction;
86
86
 
87
- export type UserRoleRequestRole = 'student' | 'intern' | 'volunteer';
87
+ export type UserRoleRequestRole = 'student' | 'intern' | 'volunteer' | 'applicant';
88
88
  export type UserRoleRequestScopeRequirement =
89
89
  boolean | typeof REQUIRE_SCOPE_WHEN_ROLE_OR_SCOPE_PRESENT;
90
90
 
@@ -120,7 +120,7 @@ export interface ValidateNewUserRoleRequestPayload extends Record<string, unknow
120
120
 
121
121
  /**
122
122
  * Normalizes and validates an institutions.new_user_role_request payload.
123
- * Only student, intern, and volunteer are accepted. When scope is required,
123
+ * Only student, intern, volunteer, and applicant are accepted. When scope is required,
124
124
  * both institution_id and campus_id must be provided.
125
125
  */
126
126
  export function validateNewUserRoleRequestObject(
package/lib/validate.js CHANGED
@@ -229,7 +229,7 @@ const isUserRoleRequestStatusString = inputString => {
229
229
  };
230
230
 
231
231
  const isUserRoleRequestRoleString = inputString => {
232
- const roles = ['student', 'intern', 'volunteer'];
232
+ const roles = ['student', 'intern', 'volunteer', 'applicant'];
233
233
  return typeof inputString === 'string' && roles.includes(inputString.trim().toLowerCase());
234
234
  };
235
235
 
@@ -45,7 +45,7 @@ function normalizeNewUserRoleRequestRole(roleRequest) {
45
45
  if (!isUserRoleRequestRoleString(roleRequest.role_name)) {
46
46
  throwBadInputError({
47
47
  userMessage: 'Invalid property: role.role',
48
- details: { role: 'Role requests are limited to student, intern, or volunteer' },
48
+ details: { role: 'Role requests are limited to student, intern, volunteer, or applicant' },
49
49
  });
50
50
  }
51
51
  roleRequest.role_name = roleRequest.role_name.trim().toLowerCase();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@carecard/validate",
3
- "version": "3.29.0",
3
+ "version": "3.31.0",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "git+https://github.com/CareCard-ca/pkg-validate.git"
@@ -47,7 +47,7 @@
47
47
  "typescript": "6.0.3"
48
48
  },
49
49
  "dependencies": {
50
- "@carecard/common-util": "3.29.0"
50
+ "@carecard/common-util": "3.31.0"
51
51
  },
52
52
  "nyc": {
53
53
  "all": true,
package/readme.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @carecard/validate
2
2
 
3
+ ## Release 1.1.1 and production data
4
+
5
+ CareCard Release 1.1.1 is the production baseline. Seeding with
6
+ `--seed-release-data` is complete. Production cluster data, database rows,
7
+ and stored user files will be preserved going forward. There will be no
8
+ complete user-data wipeout and re-creation.
9
+
10
+ Future production changes must use data-preserving migrations. Do not replay
11
+ the completed initialization or run reset, rollback, or seed workflows as part
12
+ of ordinary production deployment.
13
+
14
+ The [completed seed inventory and verification record](https://github.com/CareCard-ca/cc-seed-data/blob/main/plans/production-seed-result.md)
15
+ documents the accepted release baseline and verification limitations.
16
+
3
17
  Non-negotiable test order invariance rule: Every test must pass independently of which tests run before or after it, and the suite must pass in every execution order. Each test must establish the state it needs, isolate mutable state, and clean up state it owns; it must never rely on another test's setup, mutations, or cleanup. Default test, CI, and Husky commands must use the test framework's ordinary ordering and must not force randomized ordering. Random-order execution is an explicit diagnostic only, and every failure it exposes must be fixed at the root cause.
4
18
 
5
19
  Non-negotiable root-cause solution rule: Always identify and solve the verified root cause, use the stronger solution, and deliver a correct, durable, production-quality result. Never treat a temporary workaround, resource increase, retry, suppression, bypass, or symptom-only patch as completion. Validate the root-cause fix against the real failing workflow and prove the end state.
@@ -463,3 +477,10 @@ A correct implementation may be completely rewritten or refactored without requi
463
477
  Any test that fails solely because the implementation changed while the externally observable behavior remained correct is incorrectly designed and must be rewritten or removed.
464
478
 
465
479
  This requirement is mandatory for all new tests and must be applied whenever existing tests are modified.
480
+
481
+ ### Institution request roles
482
+
483
+ `isUserRoleRequestRoleString`, `validateNewUserRoleRequest`, and the exported
484
+ `UserRoleRequestRole` type accept student, intern, volunteer, and applicant.
485
+ Institution and campus remain required. Provider-specific eligibility is owned
486
+ by ms-institutions; accepting applicant here does not grant assignment authority.