Autonomous daily run. - Regenerated STATUS.md (76/76 paired, 13 domains, 100% fresh). - POLISH pass #2 of W20: cs-concept-builder.skill (issue #4). - Four low-severity trigger-coverage findings; drafted description rewrite. - No .skill file edits applied (out of autonomous-edit allowlist). Generated by automotive-skills-daily-standup scheduled task.
149 lines
8.7 KiB
Markdown
149 lines
8.7 KiB
Markdown
# cs-concept-builder polish log
|
||
|
||
_Polish target for W20 (issue [#4](https://github.com/jherrodthomas/automotive-skills-suite/issues/4)). Reviewer: autonomous daily-standup task._
|
||
|
||
---
|
||
|
||
## 2026-05-13 — first POLISH pass
|
||
|
||
**Mode:** POLISH (Wednesday)
|
||
**File reviewed:** `skills/cs-concept-builder.skill` (ZIP archive; SKILL.md is 9,760 bytes / ~120 lines).
|
||
**DoD recap (from `docs/weekly/WEEK-2026-W20.md`):**
|
||
description reviewed for accuracy of the six security properties (AAICAN), and
|
||
trigger phrases include both formal terms (CSR derivation, CAL allocation) and
|
||
casual framings ("derive cyber controls from goals").
|
||
|
||
### What's good
|
||
|
||
- **AAICAN list is correct, complete, and in canonical order.** The six properties
|
||
appear as `(Authentication, Authorization, Integrity, Confidentiality, Availability,
|
||
Non-repudiation)` — all six letters of AAICAN, no duplicates, no omissions — and
|
||
all sit comfortably inside the first 400 chars of the description (the parenthetical
|
||
ends at char ~358). This is the DoD's "accuracy" check; passes cleanly.
|
||
- **Frontmatter is clean.** Both required keys present (`name`, `description`); no
|
||
drift fields; YAML parses without complaint. Description is 784 / 1024 chars with
|
||
~240 chars of headroom — comfortable runway for a polish-only re-write without
|
||
hitting the cap.
|
||
- **Pipeline framing is explicit and correct.** The description names both upstream
|
||
(`reading a CS Goals xlsx (produced by cs-goals-builder)`) and downstream (`produces
|
||
the CSI (Cybersecurity Implementation) hand-off`) artefacts, which is exactly the
|
||
cross-builder linkage that prevents users from invoking this skill before the TARA →
|
||
CS Goals step has run. Same pattern as `fsc-builder`'s HARA→FSC linkage.
|
||
- **Workflow doc is strong.** Step 2's enumeration of node types (gateways → ECUs →
|
||
memory → key stores → channels → debug-ifs) is the right order — network-facing
|
||
first, then progressively inward — and the closing sentinel question ("Is there
|
||
any node that, if compromised or disabled, could violate a cybersecurity goal but
|
||
isn't on this list?") is the kind of forcing-function that catches the 10% of nodes
|
||
analysts skip on first pass. Mentor-quality.
|
||
- **Common-pitfalls section earns its keep.** All five anti-patterns (skipped debug
|
||
interfaces, missing key-management CSRs, authn-vs-authz conflation, over-specifying
|
||
algorithms, missing non-repudiation for audit-critical actions) are real failure
|
||
modes a junior security engineer hits. None are filler.
|
||
- **Six-property derivation prose is concrete.** Each property comes with the
|
||
attacker-question framing ("Does the attacker impersonate or forge identity?" etc.).
|
||
That's what makes the property selection mechanical rather than judgment-only.
|
||
|
||
### What to fix
|
||
|
||
1. **DoD miss: "CAL allocation" is NOT in the description at all.**
|
||
The closest phrasing is `allocates CAL per architectural element` (char ~430),
|
||
which uses the verb form but not the noun phrase the DoD asks for. Severity: **low**
|
||
— the description still triggers reliably on the surrounding terms (CSR, six
|
||
security properties, Cybersecurity Concept), but per the strict W20 DoD this is the
|
||
one missing formal trigger.
|
||
|
||
2. **DoD miss: "CSR derivation" is past the 400-char threshold.**
|
||
The phrase first appears at char ~607 inside the "Use this skill whenever the user
|
||
mentions Cybersecurity Concept, CSR derivation, threat modeling requirements, or
|
||
deriving cybersecurity controls from goals" trigger list. Falls inside the
|
||
description (under the 1024-char cap), but outside the 400-char fast-trigger
|
||
window. Same shape as yesterday's `hara-builder` "safety goal" miss. Severity:
|
||
**low**.
|
||
|
||
3. **DoD partial: casual framings are thin.**
|
||
Only one casual variant is present (`deriving cybersecurity controls from goals`).
|
||
The DoD's example (`derive cyber controls from goals`) is essentially covered but
|
||
not verbatim, and there are no alternate-phrasing safety nets like the ones
|
||
`hara-builder` ships ("'I need the safety analysis for this ECU' or 'what is the
|
||
ASIL for X'"). Severity: **low**, optional.
|
||
|
||
4. **`CSI handoff` trigger only appears with the long form.**
|
||
The description writes `CSI (Cybersecurity Implementation) hand-off` (with paren
|
||
gloss and hyphen). A user typing "do the CSI handoff for this ECU" (no parens, no
|
||
hyphen) will still hit `CSI`, but a pattern-matching trigger pass on the literal
|
||
phrase `CSI handoff` would miss. Severity: **low**, optional.
|
||
|
||
### Suggested edits (NOT applied this run)
|
||
|
||
The autonomous-edit allowlist for the daily-standup task is narrow — typo / over-length
|
||
/ missing-required-frontmatter-field. None of the four findings match that list:
|
||
all are trigger-coverage edits, which are editorial rewrites, not surgical fixes.
|
||
**No edits committed today.** Captured here for the next human review pass.
|
||
|
||
A minimal proposed re-write of the description (still inside 1024 chars, AAICAN
|
||
preserved verbatim, all four DoD trigger phrases now in the first 400 chars):
|
||
|
||
```
|
||
description: Generate an audit-ready ISO/SAE 21434 Cybersecurity Concept workbook
|
||
with CSR derivation, CAL allocation, and CSI handoff by reading a CS Goals xlsx
|
||
(produced by cs-goals-builder) plus a system block-diagram JSON. Builds one
|
||
requirement-derivation tree per cybersecurity goal across six security
|
||
properties (Authentication, Authorization, Integrity, Confidentiality,
|
||
Availability, Non-repudiation), generates one CSR per goal-property-node
|
||
combination, allocates CAL per architectural element, proposes verification
|
||
methods per CAL, and produces the CSI (Cybersecurity Implementation) hand-off.
|
||
Use this skill whenever the user mentions Cybersecurity Concept, CSR derivation,
|
||
CAL allocation, threat-modeling requirements, or deriving cybersecurity controls
|
||
from goals — even casual framings like "derive cyber controls from goals" or
|
||
"what CSRs do I need for this ECU". Always use this skill instead of producing
|
||
a freeform Cybersecurity Concept in chat.
|
||
```
|
||
|
||
Quick stats on the proposed rewrite:
|
||
|
||
| Check | Result |
|
||
|---|---|
|
||
| Char count | ~970 (under the 1024 cap) |
|
||
| `CSR derivation` first appears | char ~85 (inside 400) |
|
||
| `CAL allocation` first appears | char ~99 (inside 400) |
|
||
| `CSI handoff` first appears | char ~117 (inside 400) |
|
||
| AAICAN list intact | yes, char ~300–415 |
|
||
| Casual framings | two (`derive cyber controls from goals`, `what CSRs do I need for this ECU`) |
|
||
|
||
### Other observations (not fixes, just notes for future passes)
|
||
|
||
- The SKILL.md body is **prose with one well-bounded reference-table block** for the
|
||
10 output tabs — matches system style guidance. Don't refactor it.
|
||
- The "Files in this skill" tree at the bottom is accurate against `unzip -l
|
||
skills/cs-concept-builder.skill`: SKILL.md, scripts/{generate_cs_concept.py,
|
||
cs_goals_reader.py, recalc.py, office/{__init__.py, soffice.py}}, references/
|
||
{methodology.md, csr_templates.md}, examples/sample_cs_concept_input_esc.json. OK.
|
||
- The skill ships a non-trivial pair of Python scripts plus a soffice helper, same
|
||
as the safety-side builders. Out of scope for description-polish, but worth noting
|
||
that the CAL inheritance logic in `generate_cs_concept.py` is the one piece a
|
||
human reviewer should re-validate against ISO/SAE 21434 §15 next time the file
|
||
comes up — the SKILL.md asserts "If a node is allocated multiple CSRs from
|
||
different CSGs, its CAL is the maximum" and that should match what the script does.
|
||
- The CSI-handoff tab is described as "placeholder cybersecurity implementation
|
||
requirement rows" — that wording is fine, but a future docs pass should make
|
||
clear that the CSI is its own SDLC artefact (not produced by this skill), so the
|
||
rows here are intentionally skeleton-only. Not a polish item — a docs item.
|
||
|
||
### Severity roll-up
|
||
|
||
| Finding | Severity | Action |
|
||
|---|---|---|
|
||
| `CAL allocation` absent from description | low | proposed rewrite drafted; await human review |
|
||
| `CSR derivation` outside first 400 chars | low | folded into the same rewrite |
|
||
| Casual framings thin / not verbatim | low (optional) | included in the proposed rewrite |
|
||
| `CSI handoff` plain form absent | low (optional) | included in the proposed rewrite |
|
||
|
||
**No code edits committed in this run.** Issue #4 stays open with this log linked
|
||
from the journal entry. Next autonomous touch on this skill: probably W21 if it
|
||
stays in the LRT bucket, otherwise close on human approval of the rewrite. The
|
||
pattern (description hits AAICAN cleanly but misses one or two formal trigger
|
||
phrases in the first 400 chars) is now the second consecutive POLISH finding —
|
||
`hara-builder` (W20-T1, Tue) and `cs-concept-builder` (W20-T2, today) both shipped
|
||
this same shape. Worth flagging in the next PLAN as a suite-wide DoD audit
|
||
candidate rather than per-skill chasing.
|