# Week of 2026-05-18 → 2026-05-24 (ISO 2026-W21)

_Autonomous PLAN entry — generated by the daily-standup task on 2026-05-18._

## Recap (past 7 days)

```
ec1696f auto(triage): bootstrap label taxonomy, surface unlabeled issue, pair ppap-package
936e446 auto(release): same-day RELEASE re-run — journal-only, no re-tag
766d56f auto(release): v2026.05.W20 weekly snapshot, RELEASES.md, STATUS regen
c4fad8a auto(polish): W20 #5 aspice-assessment-builder pass, regen STATUS.md
49fd9a9 auto(polish): regen STATUS.md and log W20 cs-concept-builder polish findings
5b6ad4e auto(polish): regen STATUS.md and log W20 hara-builder polish findings
16df7a5 auto(plan): W20 targets — hara, cs-concept, aspice-assessment, 8d
```

W20 produced 7 commits: 1 PLAN, 3 POLISH, 2 RELEASE (one was a same-day re-run, no-op
by design), 1 TRIAGE. POLISH targets #3 hara, #4 cs-concept, #5 aspice-assessment
landed; #6 8d-problem-solving did not get a polish pass and carries to W21. Tag
`v2026.05.W20` was cut and `RELEASES.md` opened. The label taxonomy was bootstrapped on
Sunday — all 17 expected labels now exist on the remote, so this week's create-issue
step can route directly to the right buckets. Open-issues count steady at 5.

## Targets for this week (5)

Each target gets a paired GitHub issue (`weekly-target` + domain label) — target 1
reuses the existing open issue #6 rather than duplicating. Definition of Done is the
one-sentence check below; if a target balloons, defer to W22 and record the why.

### 1. `8d-problem-solving-builder.skill` — domain: **quality** (carryover)
- **Why:** W20 carryover. Issue #6 was opened on Monday but the planned POLISH pass
  never landed because Tue/Wed/Thu serviced #3/#4/#5. Don't let it slip a second week.
- **DoD:** description names all 8 disciplines (D1–D8) and triggers include "warranty
  response," "customer complaint," and "corrective action tracking."
- **Issue:** reuses **#6** (already labeled `weekly-target` + `quality`).

### 2. `dbc-builder.skill` — domain: **comms**
- **Why:** addresses the W20 spread gap (no comms target last week). DBC is the CAN
  signal-database backbone every downstream comms artifact (communication-matrix,
  bus-load, gateway-routing) is keyed against, so polishing here pays out across the
  whole comms cluster (8 builders).
- **DoD:** description trigger list includes "CAN database," "signal definition," "DBC
  file," "Vector CANdb," and at least one casual phrasing ("define CAN messages");
  description ≤ 1024 chars; frontmatter complete.

### 3. `autosar-swc-builder.skill` — domain: **autosar**
- **Why:** addresses the W20 spread gap (no autosar target last week). Software
  Component is the AUTOSAR Classic atomic unit — composition, RTE-mapping, and BSW
  builders all consume it, so SWC's I/O contract gates the whole 5-builder autosar
  cluster.
- **DoD:** description distinguishes Classic vs Adaptive SWC modeling, port interfaces
  (sender-receiver vs client-server) named explicitly, trigger list covers ARXML
  output, runnables, and both formal ("AUTOSAR SWC") and casual ("define an AUTOSAR
  component") phrasings.

### 4. `uds-services-builder.skill` — domain: **diagnostics**
- **Why:** addresses the W20 spread gap (no diagnostics target last week). UDS is the
  ISO 14229 service catalog every downstream diagnostics builder (cdd, odx, dem-config,
  dtc-catalog) cross-references. Anchor of the 5-builder diagnostics cluster.
- **DoD:** description names the canonical service IDs (0x10/0x11/0x14/0x19/0x22/0x27/
  0x2E/0x31/0x34-0x37/0x3E/0x85), trigger list mentions "UDS," "ISO 14229,"
  "diagnostic services," "DID," and "security access"; frontmatter complete.

### 5. Freeze the STATUS classifier — domain: **ci** (tooling, not a skill polish)
- **Why:** three consecutive autonomous-run entries (2026-05-16 RELEASE re-run,
  2026-05-16 RELEASE original, 2026-05-17 TRIAGE) have flagged classifier drift
  between the spec text and the canonical STATUS body. Today's PLAN regen produced a
  zero-domain-label-drift STATUS only because the classifier was hand-tuned to match
  yesterday's labels — that's not durable. Land a checked-in script so every future
  run reproduces the same labels deterministically.
- **DoD:** `scripts/classify_skill.py` exists, is invoked by the daily run, implements
  the spec literally (program-mgmt sub-prefixes before generic `safety-`, sotif before
  safety to catch `triggering-conditions-`, quality list is `apqp/dfmea/pfmea/ppap/
  control-plan/5-why/8d-/fishbone`, msa-/spc- → other) with an explicit `OVERRIDES`
  dict for irregular names; a unit-test-style golden file (`tests/STATUS_golden.md`)
  asserts the 76-row output is byte-identical to the W20 canonical STATUS body.

## Domain spread check

| Domain | Count |
|---|---|
| quality | 1 |
| comms | 1 |
| autosar | 1 |
| diagnostics | 1 |
| ci (tooling) | 1 |

Spread is healthy — 4 distinct skill domains plus a tooling target. W21 deliberately
pulls from comms / autosar / diagnostics — the three clusters W20's PLAN flagged as
under-rotated — and keeps quality on the bench only because of the carryover. Notable
gaps still unaddressed this week: **calibration, mbse, sysml, sotif, v&v,
program-mgmt, cyber, safety, aspice**. W22 PLAN should pull from calibration, mbse,
and sysml next to keep the long-tail clusters from going stale.

## Issue links

_Filled in by the create-issue step of this same run; if any cell is blank the API
call failed and the follow-up is captured in the journal._

| Target | Issue |
|---|---|
| 8d-problem-solving-builder | [#6](https://github.com/jherrodthomas/automotive-skills-suite/issues/6) (carryover) |
| dbc-builder | [#7](https://github.com/jherrodthomas/automotive-skills-suite/issues/7) |
| autosar-swc-builder | [#8](https://github.com/jherrodthomas/automotive-skills-suite/issues/8) |
| uds-services-builder | [#9](https://github.com/jherrodthomas/automotive-skills-suite/issues/9) |
| classifier-freeze (scripts/classify_skill.py) | [#10](https://github.com/jherrodthomas/automotive-skills-suite/issues/10) |
