Autonomous daily run. - POLISH pass on dbc-builder.skill; wrote docs/skill-polish-log/dbc-builder.md - DoD: 2 missing trigger phrases (DBC file, Vector CANdb); proposed rewrite drafted, not applied - Flagged non-DoD defect: SKILL.md tree claims examples/ dir the archive never shipped - Regenerated STATUS.md (76/76 paired, no domain drift) Generated by automotive-skills-daily-standup scheduled task.
181 lines
11 KiB
Markdown
181 lines
11 KiB
Markdown
# dbc-builder polish log
|
||
|
||
_Polish target for W21 (issue [#7](https://github.com/jherrodthomas/automotive-skills-suite/issues/7)). Reviewer: autonomous daily-standup task._
|
||
|
||
---
|
||
|
||
## 2026-05-20 — first POLISH pass (W21 Wednesday)
|
||
|
||
**Mode:** POLISH (Wednesday)
|
||
**File reviewed:** `skills/dbc-builder.skill` (ZIP archive; `SKILL.md` is 6,878 bytes / 115 lines).
|
||
**DoD recap (from `docs/weekly/WEEK-2026-W21.md`, target #2):**
|
||
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.
|
||
|
||
### DoD verdict
|
||
|
||
| DoD check | Result | Evidence |
|
||
|---|---|---|
|
||
| Trigger phrase "CAN database" | **PASS** | verbatim twice — "from a CAN database definition" and in the "mentions DBC, CAN database, Vector DBC..." trigger list |
|
||
| Trigger phrase "signal definition" | **MARGINAL PASS** | present only as a substring of "signal definitions with bit positions" in the descriptive sentence; **not** in the explicit "mentions ..." trigger list (which carries "signal catalog" instead) |
|
||
| Trigger phrase "DBC file" | **FAIL** | description carries "DBC" and "Vector DBC" but never the bigram "DBC file"; "DBC file" appears only in the SKILL.md body |
|
||
| Trigger phrase "Vector CANdb" | **FAIL** | description says "Vector DBC"; Vector's authoring tool / format family is CANdb (CANdb++). The DoD-specified phrase "Vector CANdb" is absent |
|
||
| At least one casual phrasing | **PASS** | two present — "document our CAN signals" and "audit the message catalog" (the DoD's "define CAN messages" is one example of the class, not a literal requirement) |
|
||
| Description ≤ 1024 chars | **PASS** | 674 chars — generous headroom |
|
||
| Frontmatter complete | **PASS** | `name` + `description` both present; YAML parses; no drift fields |
|
||
|
||
**Headline:** the W20 pattern (one missing formal trigger phrase per polish target)
|
||
**resumes and doubles** — dbc-builder is missing two DoD trigger phrases, not one.
|
||
Predicted in yesterday's 8d log ("comms cluster hasn't been touched yet so
|
||
trigger-coverage drift is plausible"); confirmed. Separately, this pass turned up a
|
||
**doc-vs-archive accuracy defect** that is more impactful than the trigger gaps (see
|
||
"What to fix" #3).
|
||
|
||
### What's good
|
||
|
||
- **11-tab claim is exact and matches the generator.** Cross-checked SKILL.md's
|
||
"11-tab xlsx" + the Output structure table against `scripts/generate_dbc.py`:
|
||
the generator emits `00_Title_Page` · `01_Document_Control` · `02_ECU_Inventory` ·
|
||
`03_Message_Catalog` · `04_Signal_Catalog` · `05_Signal-to-Message_Mapping` ·
|
||
`06_Value_Tables` · `07_Signal_Group_Definitions` · `08_Network_Topology` ·
|
||
`09_Validation_Rules` · `10_References` — 11 `create_sheet` calls, 00–10. Count,
|
||
names, and ordering all match the doc. No drift between description, the Output
|
||
structure table, and code.
|
||
- **Description char count is generous.** 674 / 1024 — ~350 chars of headroom, so the
|
||
proposed rewrite (adds three trigger phrases + one casual phrasing) lands well under
|
||
the cap.
|
||
- **Frontmatter is clean.** Both required keys present; YAML parses; no stray fields.
|
||
- **Body is well-structured.** Five-step workflow (Capture → Read refs → Build JSON →
|
||
Generate → Present/iterate), an explicit "When to use" list, a "Common pitfalls"
|
||
list, and a "Files in this skill" tree. Among the more complete SKILL.md bodies in
|
||
the suite — the comms cluster is in good shape structurally.
|
||
- **Standards anchoring is correct.** CAN 2.0A/2.0B, ISO 11898-1:2015, AUTOSAR
|
||
Communication module all cited accurately; generator's References tab matches.
|
||
- **JSON-is-source-of-truth guidance is explicit.** Step 5 tells the model to edit the
|
||
input JSON and regenerate rather than hand-editing the xlsx — good operational
|
||
hygiene, consistent with peer builders.
|
||
|
||
### What to fix
|
||
|
||
1. **"DBC file" absent from the description trigger list.** DoD-required phrase.
|
||
The description has "DBC" and "Vector DBC"; a user who types "generate a DBC file"
|
||
or "we need a DBC file for this bus" gets only a partial-token match on "DBC".
|
||
Adding the literal bigram "DBC file" to the "mentions ..." list closes it.
|
||
Severity: **medium** (DoD gap, common user phrasing).
|
||
|
||
2. **"Vector CANdb" absent; description says "Vector DBC" instead.** DoD-required
|
||
phrase. "Vector DBC" and "Vector CANdb" are both real — CANdb / CANdb++ is Vector's
|
||
DBC-authoring product line — but the DoD specifies "Vector CANdb". Best fix keeps
|
||
*both*: a user may search either. Severity: **medium** (DoD gap).
|
||
|
||
3. **`SKILL.md` "Files in this skill" tree claims `examples/sample_input_can.json`,
|
||
but the archive ships NO `examples/` directory.** Extracted the `.skill` ZIP and
|
||
enumerated all 7 files: `SKILL.md`, `references/dbc_conventions.md`,
|
||
`references/methodology.md`, `scripts/generate_dbc.py`, `scripts/recalc.py`,
|
||
`scripts/office/__init__.py`, `scripts/office/soffice.py`. There is no
|
||
`examples/` folder. Yet the SKILL.md tree block lists
|
||
`examples/sample_input_can.json # full example to clone for new projects`, and
|
||
Step 3 of the workflow leans on cloning a worked example. This is a real accuracy
|
||
defect: a model/engineer following SKILL.md will look for a file that was never
|
||
packaged. Note the contrast with `8d-problem-solving-builder` (yesterday's target),
|
||
whose archive *does* ship a populated `examples/sample_8d_input.json`. Two
|
||
candidate remedies: (a) author and bundle `examples/sample_input_can.json` — the
|
||
generator docstring already documents the schema, so a worked CAN example is
|
||
straightforward to produce; or (b) drop the `examples/` line from the tree and
|
||
soften Step 3. Remedy (a) is preferred — it brings dbc-builder to parity with the
|
||
suite norm. Severity: **medium** (doc references a non-existent shipped artifact).
|
||
|
||
4. **"signal definition" only reaches the description as a substring.** It rides
|
||
inside "signal definitions with bit positions" in the descriptive sentence; the
|
||
explicit trigger list carries "signal catalog" but not "signal definition". A
|
||
substring match is weaker than a list entry. Folding "signal definition" into the
|
||
"mentions ..." list makes the DoD check unambiguous. Severity: **low**.
|
||
|
||
5. **Casual-phrasing coverage is adequate but misses the canonical verb "define".**
|
||
The two casual phrasings present ("document our CAN signals", "audit the message
|
||
catalog") are document/audit framed. A very common authoring-intent phrasing —
|
||
"define CAN messages" / "define the CAN signals" — has no match. The DoD's
|
||
parenthetical names exactly this phrase. Adding it is cheap and closes a realistic
|
||
invocation path. Severity: **low**.
|
||
|
||
### Suggested edits (NOT applied this run)
|
||
|
||
The autonomous-edit allowlist for the daily-standup task is narrow — typo,
|
||
over-length description, missing required frontmatter field. None of findings #1–#5
|
||
match that list: #1, #2, #4, #5 are editorial trigger-coverage rewrites and #3 is
|
||
either a content-authoring task (bundle a new example file) or a doc accuracy rewrite.
|
||
Per the hard rule "stop short of any change you'd need to think hard about," and
|
||
consistent with the 8d-problem-solving-builder pass on 2026-05-19, **no edits were
|
||
committed to the `.skill` archive this run.** Findings captured here for the next
|
||
human review pass. Issue #7 stays open with this log linked from the journal entry.
|
||
|
||
Minimal proposed rewrite of the description — adds "DBC file", "Vector CANdb"
|
||
(keeping "Vector DBC"), "signal definition", and the casual phrasing "define CAN
|
||
messages" to the trigger surface; all existing phrases preserved; 741 chars, under
|
||
the 1024 cap:
|
||
|
||
```
|
||
description: Generate an audit-ready DBC specification workbook from a CAN database
|
||
definition. Produces an 11-tab xlsx capturing ECU inventory, message catalog with
|
||
IDs and DLC, signal definitions with bit positions/length/byte order/scaling/units/
|
||
value tables, message-signal allocation, network topology, and validation rules per
|
||
CAN 2.0A/2.0B and ISO 11898. Use this skill whenever the user mentions DBC, DBC
|
||
file, CAN database, Vector CANdb, Vector DBC, communication matrix for CAN, message
|
||
catalog, signal catalog, signal definition, or CAN message specification, even in
|
||
casual phrasings like "document our CAN signals", "define CAN messages", or "audit
|
||
the message catalog". Always use this skill instead of producing freeform DBC notes
|
||
in chat.
|
||
```
|
||
|
||
| Check | Result |
|
||
|---|---|
|
||
| Char count | 741 (under 1024 cap) |
|
||
| "CAN database" in trigger list | yes |
|
||
| "DBC file" in trigger list | yes (added) |
|
||
| "Vector CANdb" in trigger list | yes (added) |
|
||
| "signal definition" in trigger list | yes (added) |
|
||
| Casual phrasing "define CAN messages" | yes (added) |
|
||
| Existing phrases preserved | yes — DBC, Vector DBC, communication matrix for CAN, message catalog, signal catalog, CAN message specification all retained |
|
||
|
||
Finding #3 (the missing `examples/` file) is **not** addressed by the description
|
||
rewrite — it needs either a new bundled example JSON or a tree-block edit, and is
|
||
left for human review.
|
||
|
||
### Other observations (not fixes, just notes for future passes)
|
||
|
||
- The comms cluster (8 builders) all key off this skill's vocabulary —
|
||
communication-matrix, bus-load, gateway-routing, arxml-system. The
|
||
`examples/` gap (finding #3) is worth a spot-check across the rest of the comms
|
||
cluster on a future pass: if dbc-builder shipped without its example, sibling
|
||
comms builders may have the same packaging miss.
|
||
- `references/dbc_conventions.md` mentions J1939 awareness; the description does not.
|
||
J1939 is a CAN higher-layer protocol with its own large user base. Not a DoD item
|
||
and arguably out of scope for a generic DBC builder, but a "J1939" trigger token is
|
||
a plausible future addition if the suite ever wants J1939 reach. Flagged, no action.
|
||
- CAN FD: Step 1 of the workflow mentions "CAN FD awareness" in the interview prompts,
|
||
but neither the description nor the Output structure surfaces CAN FD. If the
|
||
generator does not actually model CAN FD (64-byte payloads, BRS), the workflow
|
||
prompt slightly over-promises. Worth a generator spot-check next pass — out of DoD
|
||
scope today.
|
||
- `recalc.py` and `scripts/office/soffice.py` are present — the shared helper pair
|
||
every builder in the suite carries. Consistent.
|
||
|
||
### Severity roll-up
|
||
|
||
| Finding | Severity | Action |
|
||
|---|---|---|
|
||
| "DBC file" absent from trigger list | medium | proposed rewrite drafted; await human review |
|
||
| "Vector CANdb" absent (has "Vector DBC") | medium | folded into the same rewrite |
|
||
| `examples/sample_input_can.json` claimed but not shipped | medium | needs bundled example or tree edit; left for human |
|
||
| "signal definition" only a substring, not a list entry | low | folded into the rewrite |
|
||
| Casual phrasing "define CAN messages" missing | low | folded into the rewrite |
|
||
|
||
**No code edits committed in this run.** Issue #7 stays open with this log linked.
|
||
The W20 trigger-coverage-drift pattern resumed and intensified (two missing DoD
|
||
phrases vs. one). The standout finding is non-DoD: the SKILL.md "Files in this skill"
|
||
tree advertises an `examples/` file the archive never shipped. Recommendation for the
|
||
next POLISH (W21 #8 autosar-swc-builder, Thursday): when extracting the archive,
|
||
explicitly diff the SKILL.md "Files in this skill" tree against the actual ZIP
|
||
contents — the dbc-builder `examples/` miss suggests this drift may be cluster-wide.
|