Skip to content

Commit bf7e55d

Browse files
fkautzclaude
andcommitted
Rename SAFE → SAF (Secure Agentic Framework)
Project-wide rebrand to Secure Agentic Framework (SAF). Renames brand tokens in content (SAF-MCP, SAF-K8S, SAF-T/SAF-M IDs, SAF-UC use-case IDs, SAF-AUCA project name), updates the org reference safe-agentic-framework → secure-agentic-framework, renames 33 use-case directories SAFE-UC-XXXX → SAF-UC-XXXX, and updates derived code identifiers (SAF_UC_ID, saf_uc_id, safUcId, saf-claim-bot, ID validation regexes). English-word 'safe'/'safety' and the repo name safe-agentic-use-cases are left unchanged. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Signed-off-by: Frederick F. Kautz IV <fkautz@alumni.cmu.edu>
1 parent 7b4f16b commit bf7e55d

46 files changed

Lines changed: 783 additions & 783 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.

.github/ISSUE_TEMPLATE/claim-existing-seed.yml

Lines changed: 33 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -18,42 +18,42 @@ body:
1818
- type: dropdown
1919
id: use_case_id
2020
attributes:
21-
label: SAFE Use Case ID
21+
label: SAF Use Case ID
2222
description: >
2323
Select the seed you want to work on. Only seeds (not drafts or published)
2424
are listed. If your use case is not here, use
25-
[Propose New Use Case](https://github.com/safe-agentic-framework/safe-agentic-use-cases/issues/new?template=propose-new-use-case.yml)
25+
[Propose New Use Case](https://github.com/secure-agentic-framework/safe-agentic-use-cases/issues/new?template=propose-new-use-case.yml)
2626
instead.
2727
options:
28-
- "SAFE-UC-0001 — AI-assisted seller listing creation"
29-
- "SAFE-UC-0002 — Personalized shopping sidekick"
30-
- "SAFE-UC-0003 — Buyer-seller messaging assistant"
31-
- "SAFE-UC-0004 — Listing media enhancement assistant"
32-
- "SAFE-UC-0005 — Visual search & image-based product discovery"
33-
- "SAFE-UC-0006 — Fleet telematics & vehicle-health monitoring assistant"
34-
- "SAFE-UC-0007 — Mobile fleet-maintenance dispatch & scheduling assistant"
35-
- "SAFE-UC-0008 — Over-the-air vehicle software update orchestration"
36-
- "SAFE-UC-0009 — Manufacturing line visual inspection assistant"
37-
- "SAFE-UC-0010 — In-vehicle voice assistant for local controls"
38-
- "SAFE-UC-0011 — Banking virtual assistant"
39-
- "SAFE-UC-0012 — Interactive fraud alert & card controls assistant"
40-
- "SAFE-UC-0013 — Virtual card number generation & checkout assistant"
41-
- "SAFE-UC-0014 — Digital dispute/chargeback intake assistant"
42-
- "SAFE-UC-0015 — AML suspicious-activity triage assistant"
43-
- "SAFE-UC-0016 — IT service-desk virtual agent"
44-
- "SAFE-UC-0017 — Service request triage assistant"
45-
- "SAFE-UC-0019 — Post-incident review drafting assistant"
46-
- "SAFE-UC-0020 — On-call incident context assistant"
47-
- "SAFE-UC-0021 — Contact-center agent assist"
48-
- "SAFE-UC-0022 — Security operations investigation assistant"
49-
- "SAFE-UC-0023 — Cloud ops troubleshooting assistant"
50-
- "SAFE-UC-0024 — Terminal-based outage assistant for SRE"
51-
- "SAFE-UC-0025 — Enterprise agent-building platform"
52-
- "SAFE-UC-0026 — At-scale content policy enforcement pipeline"
53-
- "SAFE-UC-0027 — Anti-scam messaging safety assistant"
54-
- "SAFE-UC-0028 — Fake-account & inauthentic behavior detection assistant"
55-
- "SAFE-UC-0029 — Automated ad campaign optimization assistant"
56-
- "SAFE-UC-0030 — Teen safety & age-assurance enforcement assistant"
28+
- "SAF-UC-0001 — AI-assisted seller listing creation"
29+
- "SAF-UC-0002 — Personalized shopping sidekick"
30+
- "SAF-UC-0003 — Buyer-seller messaging assistant"
31+
- "SAF-UC-0004 — Listing media enhancement assistant"
32+
- "SAF-UC-0005 — Visual search & image-based product discovery"
33+
- "SAF-UC-0006 — Fleet telematics & vehicle-health monitoring assistant"
34+
- "SAF-UC-0007 — Mobile fleet-maintenance dispatch & scheduling assistant"
35+
- "SAF-UC-0008 — Over-the-air vehicle software update orchestration"
36+
- "SAF-UC-0009 — Manufacturing line visual inspection assistant"
37+
- "SAF-UC-0010 — In-vehicle voice assistant for local controls"
38+
- "SAF-UC-0011 — Banking virtual assistant"
39+
- "SAF-UC-0012 — Interactive fraud alert & card controls assistant"
40+
- "SAF-UC-0013 — Virtual card number generation & checkout assistant"
41+
- "SAF-UC-0014 — Digital dispute/chargeback intake assistant"
42+
- "SAF-UC-0015 — AML suspicious-activity triage assistant"
43+
- "SAF-UC-0016 — IT service-desk virtual agent"
44+
- "SAF-UC-0017 — Service request triage assistant"
45+
- "SAF-UC-0019 — Post-incident review drafting assistant"
46+
- "SAF-UC-0020 — On-call incident context assistant"
47+
- "SAF-UC-0021 — Contact-center agent assist"
48+
- "SAF-UC-0022 — Security operations investigation assistant"
49+
- "SAF-UC-0023 — Cloud ops troubleshooting assistant"
50+
- "SAF-UC-0024 — Terminal-based outage assistant for SRE"
51+
- "SAF-UC-0025 — Enterprise agent-building platform"
52+
- "SAF-UC-0026 — At-scale content policy enforcement pipeline"
53+
- "SAF-UC-0027 — Anti-scam messaging safety assistant"
54+
- "SAF-UC-0028 — Fake-account & inauthentic behavior detection assistant"
55+
- "SAF-UC-0029 — Automated ad campaign optimization assistant"
56+
- "SAF-UC-0030 — Teen safety & age-assurance enforcement assistant"
5757
validations:
5858
required: true
5959

@@ -68,7 +68,7 @@ body:
6868
options:
6969
- "Write the full analysis (seed → draft)"
7070
- "Co-author with an existing contributor"
71-
- "Add specific sections (e.g., kill-chain, SAFE-MCP mapping)"
71+
- "Add specific sections (e.g., kill-chain, SAF-MCP mapping)"
7272
- "Review and provide feedback on an existing draft"
7373
validations:
7474
required: true
@@ -85,7 +85,7 @@ body:
8585
Sections I plan to cover:
8686
- Workflow description with tool inventory and trust boundaries
8787
- Kill-chain / failure analysis (at least 3 stages)
88-
- SAFE-MCP technique mappings with concrete control recommendations
88+
- SAF-MCP technique mappings with concrete control recommendations
8989
9090
Evidence sources:
9191
- <URL 1>

.github/ISSUE_TEMPLATE/config.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
blank_issues_enabled: false
22
contact_links:
33
- name: Contribution Guide
4-
url: https://github.com/safe-agentic-framework/safe-agentic-use-cases/blob/main/CONTRIBUTING.md
4+
url: https://github.com/secure-agentic-framework/safe-agentic-use-cases/blob/main/CONTRIBUTING.md
55
about: Read contribution, safety, and DSO requirements before opening issues.

.github/ISSUE_TEMPLATE/propose-new-use-case.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
name: Propose New Use Case
2-
description: Propose a new SAFE use case that is not yet listed in the registry
2+
description: Propose a new SAF use case that is not yet listed in the registry
33
title: "[Proposal] "
44
labels:
55
- use-case
@@ -10,7 +10,7 @@ body:
1010
attributes:
1111
value: |
1212
**Thanks for proposing a new use case!** Here's what happens next:
13-
1. Automation assigns the next available `SAFE-UC-XXXX` ID and updates this issue.
13+
1. Automation assigns the next available `SAF-UC-XXXX` ID and updates this issue.
1414
2. A maintainer reviews your proposal and comments `/accept` when ready.
1515
3. A scaffold PR is created with the seed README, registry entry, and index row — assigned to you.
1616

.github/pull_request_template.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ Follow [`CONTRIBUTING.md`](../CONTRIBUTING.md). This template only captures PR c
1313

1414
## Use Case Context
1515

16-
- Use case ID: `SAFE-UC-____`
16+
- Use case ID: `SAF-UC-____`
1717
- Related issue/claim (optional for existing IDs): # / N/A
1818
- Status transition: `seed -> draft` / `draft -> published` / `seed -> published`
1919

.github/workflows/assign-use-case-id.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ jobs:
3333
script: |
3434
const fs = require("fs");
3535
36-
const BOT_MARKER = "<!-- safe-claim-bot -->";
37-
const ID_REGEX = /SAFE-UC-\d{4}/;
36+
const BOT_MARKER = "<!-- saf-claim-bot -->";
37+
const ID_REGEX = /SAF-UC-\d{4}/;
3838
3939
const issue = context.payload.issue;
4040
const owner = context.repo.owner;
@@ -110,20 +110,20 @@ jobs:
110110
};
111111
112112
// ── Parse dropdown value ────────────────────────────────
113-
// Dropdown format: "SAFE-UC-XXXX — Title"
113+
// Dropdown format: "SAF-UC-XXXX — Title"
114114
115115
const sections = parseFormSections(issue.body || "");
116-
const idField = normalize(sections["SAFE Use Case ID"]);
116+
const idField = normalize(sections["SAF Use Case ID"]);
117117
118118
if (!idField) {
119-
core.info("Issue body is missing SAFE Use Case ID field; skipping.");
119+
core.info("Issue body is missing SAF Use Case ID field; skipping.");
120120
return;
121121
}
122122
123123
const idMatch = idField.match(ID_REGEX);
124124
if (!idMatch) {
125125
await upsertBotComment(
126-
"Hmm, couldn't find a valid `SAFE-UC-XXXX` ID in the selected value. Could you re-submit with an option from the dropdown?"
126+
"Hmm, couldn't find a valid `SAF-UC-XXXX` ID in the selected value. Could you re-submit with an option from the dropdown?"
127127
);
128128
return;
129129
}

.github/workflows/auto-seed.yml

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ permissions:
1212
issues: write
1313

1414
jobs:
15-
# ── Phase 1: Assign next SAFE-UC ID when a proposal issue is opened ───────
15+
# ── Phase 1: Assign next SAF-UC ID when a proposal issue is opened ───────
1616
assign-id:
1717
name: Assign use case ID
1818
runs-on: ubuntu-latest
@@ -52,9 +52,9 @@ jobs:
5252
fs.readFileSync('use-cases.naics2022.crosswalk.json', 'utf8')
5353
);
5454
const highest = Math.max(
55-
...registry.map(e => parseInt(e.id.replace('SAFE-UC-', ''), 10))
55+
...registry.map(e => parseInt(e.id.replace('SAF-UC-', ''), 10))
5656
);
57-
const nextId = `SAFE-UC-${String(highest + 1).padStart(4, '0')}`;
57+
const nextId = `SAF-UC-${String(highest + 1).padStart(4, '0')}`;
5858
5959
const author = context.payload.issue.user.login;
6060
const issueNumber = context.payload.issue.number;
@@ -128,11 +128,11 @@ jobs:
128128
const body = context.payload.issue.body;
129129
const issueTitle = context.payload.issue.title;
130130
131-
// Extract SAFE-UC-XXXX from issue title (assigned in Phase 1)
132-
const idMatch = issueTitle.match(/\[(SAFE-UC-\d{4})\]/);
131+
// Extract SAF-UC-XXXX from issue title (assigned in Phase 1)
132+
const idMatch = issueTitle.match(/\[(SAF-UC-\d{4})\]/);
133133
if (!idMatch) {
134134
core.setFailed(
135-
'No SAFE-UC ID found in issue title. Was Phase 1 (assign-id) run?'
135+
'No SAF-UC ID found in issue title. Was Phase 1 (assign-id) run?'
136136
);
137137
return;
138138
}
@@ -183,7 +183,7 @@ jobs:
183183
return;
184184
}
185185
186-
core.setOutput('safe_uc_id', idMatch[1]);
186+
core.setOutput('saf_uc_id', idMatch[1]);
187187
core.setOutput('title', title);
188188
core.setOutput('summary', summary);
189189
core.setOutput('naics_json', JSON.stringify(naicsEntries));
@@ -192,7 +192,7 @@ jobs:
192192
193193
- name: Run scaffold
194194
env:
195-
SAFE_UC_ID: ${{ steps.parse.outputs.safe_uc_id }}
195+
SAF_UC_ID: ${{ steps.parse.outputs.saf_uc_id }}
196196
TITLE: ${{ steps.parse.outputs.title }}
197197
SUMMARY: ${{ steps.parse.outputs.summary }}
198198
NAICS_JSON: ${{ steps.parse.outputs.naics_json }}
@@ -201,7 +201,7 @@ jobs:
201201
run: |
202202
chmod +x scripts/scaffold-use-case.sh
203203
./scripts/scaffold-use-case.sh \
204-
--id "$SAFE_UC_ID" \
204+
--id "$SAF_UC_ID" \
205205
--title "$TITLE" \
206206
--summary "$SUMMARY" \
207207
--naics "$NAICS_JSON" \
@@ -212,31 +212,31 @@ jobs:
212212
- name: Create branch, commit, and push
213213
id: branch
214214
env:
215-
SAFE_UC_ID: ${{ steps.parse.outputs.safe_uc_id }}
215+
SAF_UC_ID: ${{ steps.parse.outputs.saf_uc_id }}
216216
TITLE: ${{ steps.parse.outputs.title }}
217217
run: |
218218
SLUG=$(echo "$TITLE" | tr '[:upper:]' '[:lower:]' | tr -cs '[:alnum:]' '-' | sed 's/^-//;s/-$//' | head -c 50)
219-
BRANCH="seed/$(echo "${SAFE_UC_ID}" | tr '[:upper:]' '[:lower:]')-${SLUG}"
219+
BRANCH="seed/$(echo "${SAF_UC_ID}" | tr '[:upper:]' '[:lower:]')-${SLUG}"
220220
221221
git config user.name "github-actions[bot]"
222222
git config user.email "41898282+github-actions[bot]@users.noreply.github.com"
223223
git checkout -b "$BRANCH"
224224
git add -A
225-
git commit -m "feat: seed ${SAFE_UC_ID} — ${TITLE}"
225+
git commit -m "feat: seed ${SAF_UC_ID} — ${TITLE}"
226226
git push origin "$BRANCH"
227227
echo "branch=$BRANCH" >> "$GITHUB_OUTPUT"
228228
229229
- name: Create PR and update issue
230230
uses: actions/github-script@v7
231231
env:
232-
SAFE_UC_ID: ${{ steps.parse.outputs.safe_uc_id }}
232+
SAF_UC_ID: ${{ steps.parse.outputs.saf_uc_id }}
233233
TITLE: ${{ steps.parse.outputs.title }}
234234
SUMMARY: ${{ steps.parse.outputs.summary }}
235235
AUTHOR: ${{ steps.parse.outputs.author }}
236236
BRANCH: ${{ steps.branch.outputs.branch }}
237237
with:
238238
script: |
239-
const safeUcId = process.env.SAFE_UC_ID;
239+
const safUcId = process.env.SAF_UC_ID;
240240
const title = process.env.TITLE;
241241
const summary = process.env.SUMMARY;
242242
const author = process.env.AUTHOR;
@@ -247,15 +247,15 @@ jobs:
247247
const prBody = [
248248
`## Summary`,
249249
``,
250-
`Scaffolded seed for **${safeUcId}** \u2014 ${title}.`,
250+
`Scaffolded seed for **${safUcId}** \u2014 ${title}.`,
251251
``,
252252
summary,
253253
``,
254254
`Closes #${issueNumber}`,
255255
``,
256256
`## Changes`,
257257
``,
258-
`- \`use-cases/${safeUcId}/README.md\` \u2014 seed page`,
258+
`- \`use-cases/${safUcId}/README.md\` \u2014 seed page`,
259259
`- \`use-cases.naics2022.crosswalk.json\` \u2014 registry entry`,
260260
`- \`README.md\` \u2014 index table row`,
261261
``,
@@ -266,7 +266,7 @@ jobs:
266266
const { data: pr } = await github.rest.pulls.create({
267267
owner: context.repo.owner,
268268
repo: context.repo.repo,
269-
title: `feat: seed ${safeUcId} \u2014 ${title}`,
269+
title: `feat: seed ${safUcId} \u2014 ${title}`,
270270
head: branch,
271271
base: 'main',
272272
body: prBody,

CONTRIBUTING.md

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

33
This repo is a community library of **real-world agentic workflow (use case) analyses**.
44

5-
It complements **SAFE‑MCP**:
6-
- **SAFE‑MCP** catalogs *how agentic/MCP systems can be attacked or fail* (techniques).
7-
- **SAFE‑AUCA** makes those techniques actionable by grounding them in *real workflows* and producing **controls + tests**.
5+
It complements **SAF‑MCP**:
6+
- **SAF‑MCP** catalogs *how agentic/MCP systems can be attacked or fail* (techniques).
7+
- **SAF‑AUCA** makes those techniques actionable by grounding them in *real workflows* and producing **controls + tests**.
88

99
We use a **seed-first** model:
10-
- We publish a catalog of seeded `SAFE-UC-XXXX` IDs (short descriptions + NAICS crosswalk).
10+
- We publish a catalog of seeded `SAF-UC-XXXX` IDs (short descriptions + NAICS crosswalk).
1111
- Contributors pick a seed and expand it into a detailed write-up.
1212

1313
---
@@ -37,9 +37,9 @@ If you’re unsure who can provide DSO signoff, ask in the PR thread and a maint
3737

3838
Each use case has a single canonical page:
3939

40-
`use-cases/SAFE-UC-XXXX/README.md`
40+
`use-cases/SAF-UC-XXXX/README.md`
4141

42-
This mirrors the SAFE‑MCP pattern: one stable ID → one page that can evolve from seed → draft → published.
42+
This mirrors the SAF‑MCP pattern: one stable ID → one page that can evolve from seed → draft → published.
4343

4444
---
4545

@@ -48,7 +48,7 @@ This mirrors the SAFE‑MCP pattern: one stable ID → one page that can evolve
4848
Use one of the following in both the registry and the use case page:
4949

5050
- `seed` — ID reserved; short description exists; full analysis not written yet
51-
- `draft` — first real write-up exists (architecture + kill chain + SAFE‑MCP mapping + initial tests)
51+
- `draft` — first real write-up exists (architecture + kill chain + SAF‑MCP mapping + initial tests)
5252
- `published` — reviewed and ready for general use
5353

5454
---
@@ -64,14 +64,14 @@ Rules:
6464

6565
---
6666

67-
### 2) Pick a SAFE Use Case ID (or create a new one)
67+
### 2) Pick a SAF Use Case ID (or create a new one)
6868

69-
SAFE Use Case IDs are stable and never reused.
69+
SAF Use Case IDs are stable and never reused.
7070

7171
- Prefer adopting an existing `seed` from the root README index.
7272
- If you are using an existing ID, you can open a Draft PR directly (issue claim is optional).
7373
- If you need a new ID, open a **Use Case Claim / Proposal** issue and choose **Propose new ID**.
74-
- In that issue form, set **SAFE Use Case ID** to `new`. Automation assigns the next available `SAFE-UC-XXXX` and updates the issue title.
74+
- In that issue form, set **SAF Use Case ID** to `new`. Automation assigns the next available `SAF-UC-XXXX` and updates the issue title.
7575
- Do not manually choose a numeric new ID in the issue form.
7676

7777
---
@@ -86,7 +86,7 @@ Minimum fields for a `seed`:
8686
- `id`
8787
- `title`
8888
- `status`
89-
- `repo_path` = `use-cases/SAFE-UC-XXXX/README.md`
89+
- `repo_path` = `use-cases/SAF-UC-XXXX/README.md`
9090
- `naics_2022` (one or more NAICS codes)
9191

9292
Recommended fields (especially for `draft` / `published`):
@@ -103,7 +103,7 @@ If a use case maps to multiple NAICS codes, include all of them inside the same
103103
### 4) Create or update the use case page
104104

105105
Path:
106-
`use-cases/SAFE-UC-XXXX/README.md`
106+
`use-cases/SAF-UC-XXXX/README.md`
107107

108108
Start from:
109109
- `templates/use-case-template.md`
@@ -112,14 +112,14 @@ Start from:
112112
- Metadata filled (ID, status, NAICS, workflow family)
113113
- 5–15 line workflow description (what it is / who uses it / what tools it touches)
114114
- In-scope / out-of-scope bullets
115-
- SAFE‑MCP mapping table present (technique IDs may be `TBD` initially, but keep the structure)
115+
- SAF‑MCP mapping table present (technique IDs may be `TBD` initially, but keep the structure)
116116

117117
**To upgrade `seed``draft`,** complete at least:
118118
- workflow steps
119119
- architecture + trust boundaries
120120
- operating modes (manual → HITL → autonomous) and how risk changes
121121
- kill-chain table
122-
- SAFE‑MCP mapping table with concrete controls + tests
122+
- SAF‑MCP mapping table with concrete controls + tests
123123
- add public evidence links
124124

125125
---
@@ -135,7 +135,7 @@ Before merging, request DSO review on the PR and ensure there is an explicit DSO
135135

136136
If you added a new ID or changed status/title/NAICS mapping, update the big index table in `README.md` so people can discover it.
137137

138-
Tip: link the SAFE‑UC ID to `use-cases/SAFE-UC-XXXX/README.md`.
138+
Tip: link the SAF‑UC ID to `use-cases/SAF-UC-XXXX/README.md`.
139139

140140
---
141141

@@ -181,9 +181,9 @@ Before opening a PR:
181181
- [ ] No exploit steps included
182182
- [ ] Status values use canonical enum: `seed`, `draft`, `published`
183183
- [ ] `use-cases.naics2022.crosswalk.json` updated for the ID
184-
- [ ] Use case page exists at `use-cases/SAFE-UC-XXXX/README.md`
184+
- [ ] Use case page exists at `use-cases/SAF-UC-XXXX/README.md`
185185
- [ ] Metadata includes: ID, status, NAICS, workflow family
186-
- [ ] SAFE‑MCP mapping table included (technique IDs may be “TBD” for first draft)
186+
- [ ] SAF‑MCP mapping table included (technique IDs may be “TBD” for first draft)
187187
- [ ] Controls include testable items (not just recommendations)
188188
- [ ] Public evidence links included for `draft`/`published`
189189
- [ ] **DSO signoff obtained** (approval review or "DSO Approved" comment)

0 commit comments

Comments
 (0)