From 76b2ffff7db38f8a77efa56c9267edbd818bc07b Mon Sep 17 00:00:00 2001 From: Automotive Skills Autonomous Date: Wed, 20 May 2026 11:08:54 +0000 Subject: [PATCH] auto(polish): W21 #7 dbc-builder pass, regen STATUS.md 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. --- STATUS.md | 6 +- docs/AUTONOMOUS_LOG.md | 18 +++ docs/skill-polish-log/dbc-builder.md | 180 +++++++++++++++++++++++++++ 3 files changed, 201 insertions(+), 3 deletions(-) create mode 100644 docs/skill-polish-log/dbc-builder.md diff --git a/STATUS.md b/STATUS.md index 75dabbb..79121fc 100644 --- a/STATUS.md +++ b/STATUS.md @@ -1,6 +1,6 @@ # Automotive Skills Suite โ€” STATUS -_Generated: 2026-05-19 by autonomous daily run (POLISH mode)._ +_Generated: 2026-05-20 by autonomous daily run (POLISH mode)._ **Builders:** 76 ยท **Reviewers:** 76 ยท **Paired:** 76/76 (100.0%) @@ -87,5 +87,5 @@ _Generated: 2026-05-19 by autonomous daily run (POLISH mode)._ - Total builders: **76** | Total reviewers: **76** | Paired ratio: **100.0%** - Flags: ๐ŸŸข 76 fresh ยท ๐ŸŸก 0 stale (>30d) ยท ๐Ÿ”ด 0 unpaired -- Domain spread: safety=14, comms=8, quality=8, cyber=6, program-mgmt=6, autosar=5, diagnostics=5, v&v=5, aspice=4, sysml=4, calibration=3, mbse=3, sotif=3, other=2 -- Classifier note: implements spec literally โ€” `safety-program-/safety-gate-/wp-/change-impact-/lessons-learned/dia` โ†’ program-mgmt, `triggering-conditions/sotif-` โ†’ sotif, `msa-/spc-` โ†’ other (W21 target #5 will freeze this as a checked-in script). +- Domain spread: safety=14, quality=8, comms=8, program-mgmt=6, cyber=6, autosar=5, diagnostics=5, v&v=5, aspice=4, sysml=4, calibration=3, mbse=3, sotif=3, other=2 +- Classifier note: domain map preserved from W20 canonical STATUS; W21 target #10 (`scripts/classify_skill.py`) will freeze this as a checked-in deterministic script. diff --git a/docs/AUTONOMOUS_LOG.md b/docs/AUTONOMOUS_LOG.md index 5143bf8..6666e7d 100644 --- a/docs/AUTONOMOUS_LOG.md +++ b/docs/AUTONOMOUS_LOG.md @@ -168,3 +168,21 @@ Classifier regression caught and fixed during STATUS regen: my first pass had a - Thu POLISH: pick between #8 (autosar-swc) and #9 (uds-services). Recommend #9 uds-services โ€” it's the diagnostics anchor and the spec's strict-trigger demand list (canonical service IDs 0x10/0x11/...) is the longest of any W21 target, so the description is the most likely to drift. - W21 target #5 (classifier freeze) still unserviced. If Wed/Thu cycle time permits, slot it in as a fourth POLISH; otherwise it carries to W22. Three consecutive runs have now hit classifier bugs that would have been caught by the golden-file test. - Issue #2 ("goodd", empty body) still open and needs-triage; un-actioned again โ€” POLISH is the wrong venue. Flag this for the human if it's still open by Saturday's RELEASE. + +## 2026-05-20 (autonomous run, POLISH) + +**Mode:** POLISH (Wednesday) +**Action:** Polished `dbc-builder.skill` per W21 target #2 (issue #7, comms cluster). Wrote `docs/skill-polish-log/dbc-builder.md` (180 lines). Regenerated STATUS.md (header date/note diff only โ€” no skill-file mtimes changed). No edits applied to the .skill archive itself. +**Files touched:** STATUS.md, docs/skill-polish-log/dbc-builder.md, docs/AUTONOMOUS_LOG.md +**Tests:** N/A (no test suite in this repo yet) +**Skill count:** 76 builders / 76 reviewers / 100.0% paired +**Open issues:** 9 (#2 needs-triage + #3-#6 W20 targets + #7-#10 W21 targets) +**Notes:** As predicted in yesterday's 8d log and follow-up, the W20 trigger-coverage-drift pattern resumed for the comms cluster โ€” and intensified. dbc-builder misses TWO DoD-required trigger phrases, not one: "DBC file" (description has only "DBC"/"Vector DBC") and "Vector CANdb" (description says "Vector DBC"). "signal definition" only reaches the description as a substring of "signal definitions", not as an explicit trigger-list entry. Description is 674/1024 chars (healthy headroom); frontmatter complete; the "11-tab xlsx" claim was cross-checked against `generate_dbc.py` and is exact (00_Title_Page through 10_References, 11 create_sheet calls). Drafted a 741-char proposed rewrite that folds in "DBC file", "Vector CANdb", "signal definition", and the casual phrasing "define CAN messages" while preserving every existing phrase โ€” under the 1024 cap. Per the autonomous-edit allowlist (typo / over-length / missing-required-field only), the rewrite was NOT committed; consistent with the 8d pass, it stays in the polish log for human review. + +Standout finding is non-DoD and more impactful than the trigger gaps: the SKILL.md "Files in this skill" tree advertises `examples/sample_input_can.json` ("full example to clone for new projects"), but extracting the `.skill` ZIP shows NO `examples/` directory at all โ€” the archive ships 7 files, all under `references/` and `scripts/`. Step 3 of the workflow leans on cloning that worked example. Contrast: yesterday's 8d-problem-solving-builder archive DOES ship a populated `examples/sample_8d_input.json`. So this is dbc-builder-specific packaging drift, not a suite-wide convention change. Severity medium; remedy is either bundle a real CAN example JSON (preferred โ€” brings it to suite parity) or drop the `examples/` line from the tree. Left for human review โ€” authoring a new example file is outside the POLISH edit allowlist. + +**Follow-ups:** +- Thu POLISH: per yesterday's recommendation, take #9 uds-services-builder (diagnostics anchor, longest strict-trigger demand list of any W21 target). When extracting that archive, explicitly diff the SKILL.md "Files in this skill" tree against actual ZIP contents โ€” the dbc-builder `examples/` miss may be cluster-wide and a one-line diff catches it cheaply. +- W21 target #5 (classifier freeze, `scripts/classify_skill.py` + golden-file test) still unserviced โ€” carries forward. Three+ consecutive runs have hit classifier/regen bugs this would prevent. +- Issue #8 (autosar-swc) will not get a pass this week if Thu services #9 โ€” it carries to W22 PLAN. Note in Saturday's RELEASE notes. +- Issue #2 ("goodd", empty body) still open and needs-triage โ€” un-actioned again. POLISH is the wrong venue; flag for the human at Saturday's RELEASE if still open. diff --git a/docs/skill-polish-log/dbc-builder.md b/docs/skill-polish-log/dbc-builder.md new file mode 100644 index 0000000..81a5a53 --- /dev/null +++ b/docs/skill-polish-log/dbc-builder.md @@ -0,0 +1,180 @@ +# 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.