6 Commits

Author SHA1 Message Date
Stefan Lohmaier 0b58185af7 fix(ci): fetch full history so 'git describe --tags' works
Validate / build-test (macos-latest) (push) Failing after 1s
Validate / build-test (ubuntu-latest) (push) Successful in 17s
Validate / build-test (windows-latest) (push) Failing after 17s
Validate / reports (push) Successful in 49s
The landing page showed 'version (no tag)' because actions/checkout@v4
defaults to a shallow clone (fetch-depth: 1) and pulls no tags. The
landing-page generator's 'git describe --tags --abbrev=0' then failed
and fell back to the placeholder.

Add fetch-depth: 0 to every checkout step in validate.yml + release.yml
so the runner sees all tags (current head: v0.5.0 + 6 commits).
2026-05-13 00:33:04 -07:00
Stefan Lohmaier 2167c100e8 fix(landing-page): diagram links - use bundle path, not docs/diagrams/
Validate / build-test (macos-latest) (push) Failing after 4s
Validate / build-test (ubuntu-latest) (push) Successful in 18s
Validate / build-test (windows-latest) (push) Failing after 30s
Validate / reports (push) Successful in 53s
Architecture diagram links on the deployed landing page returned 404
because the generator emitted 'docs/diagrams/<file>.svg' (repo-relative)
while validate.yml/release.yml deploy the SVGs to '<bundle>/diagrams/'.

Use the same bundle-relative pattern as coverage/cppcheck/traceability
(emit just 'diagrams/<file>.svg').

Also translates two remaining German comments in release.yml
('CI-generierte Artefakte', 'Source-Code zum Anklicken...').
2026-05-12 23:51:15 -07:00
Stefan Lohmaier 39b7182e0b docs(i18n): release notes - last Review-Protokoll string
Validate / build-test (macos-latest) (push) Failing after 1s
Validate / build-test (windows-latest) (push) Failing after 15s
Validate / build-test (ubuntu-latest) (push) Successful in 16s
Validate / reports (push) Successful in 51s
2026-05-12 12:09:25 -07:00
Stefan Lohmaier ba7a3ebd27 refactor(i18n): rename docs/plaene/ -> docs/plans/
Validate / build-test (macos-latest) (push) Failing after 3s
Validate / build-test (ubuntu-latest) (push) Successful in 16s
Validate / build-test (windows-latest) (push) Failing after 17s
Validate / reports (push) Successful in 53s
Last German folder name in demo-epb. Pairs cleanly with docs/plans-md/
(markdown source) following the project convention. All references
in landing page generator, CI workflows, and cross-doc links updated.
2026-05-12 12:08:33 -07:00
Stefan Lohmaier c81121c3d5 feat(i18n): remaining German comments + CI strings in English
Validate / build-test (macos-latest) (push) Failing after 2s
Validate / build-test (ubuntu-latest) (push) Successful in 17s
Validate / build-test (windows-latest) (push) Failing after 18s
Validate / reports (push) Successful in 52s
Final residual translations found in code/comments/CI:
- .doorstop.yml: config comments, traceability mapping comments
- Doxyfile: header comment
- tools/render_plantuml.py: docstring
- tools/generate_test_report.py: docstring
- tests/unit_test_framework.h: doxygen brief + body
- tests/unit/test_safety_manager.c: section comment
- src/stubs/*.h: doxygen briefs for diag/display/inclinometer/logger/service/wheel-speed
- .gitea/workflows/release.yml: release notes 'Statische Analyse' + deploy error message
2026-05-12 06:14:23 -07:00
Stefan Lohmaier 8451099b90 docs(i18n): stubs README in English
Validate / build-test (macos-latest) (push) Failing after 3s
Validate / build-test (windows-latest) (push) Failing after 14s
Validate / build-test (ubuntu-latest) (push) Successful in 17s
Validate / reports (push) Successful in 50s
2026-05-12 03:46:35 -07:00
27 changed files with 53 additions and 47 deletions
+6 -6
View File
@@ -1,10 +1,10 @@
# Doorstop-Konfiguration fuer demo-epb
# Doorstop configuration for demo-epb
#
# Bidirektionale Traceability:
# SYS-XXX -> SA-XXX (System-Anforderung wird durch System-Arch abgedeckt)
# SA-XXX -> SWE-XXX (System-Arch verfeinert auf Software-Anforderung)
# SWE-XXX -> SWA-XXX (Software-Anforderung wird durch Software-Arch abgedeckt)
# SWA-XXX -> Code (via @arch Tag im Quellcode)
# Bidirectional traceability:
# SYS-XXX -> SA-XXX (system requirement covered by system arch)
# SA-XXX -> SWE-XXX (system arch refined to software requirement)
# SWE-XXX -> SWA-XXX (software requirement covered by software arch)
# SWA-XXX -> Code (via @arch tag in source code)
settings:
digits: 3
+12 -10
View File
@@ -12,6 +12,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install dependencies
run: |
@@ -59,7 +61,7 @@ jobs:
# Landing page in the bundle root
cp build/index.html "$BUNDLE/index.html"
# CI-generierte Artefakte
# CI-generated artefacts
cp -r build/coverage-html/* "$BUNDLE/coverage/" 2>/dev/null || true
cp -r docs/traceability/* "$BUNDLE/traceability/"
cp -r docs/diagrams/* "$BUNDLE/diagrams/"
@@ -69,14 +71,14 @@ jobs:
cp build/test-report.html "$BUNDLE/reports/" 2>/dev/null || true
cp build/test-report.md "$BUNDLE/reports/" 2>/dev/null || true
# Source-Code zum Anklicken aus dem Bundle (begrenzt auf das wichtigste)
# Source code from the bundle (limited to the essentials)
cp -r src/*.c src/*.h "$BUNDLE/src/" 2>/dev/null || true
cp -r src/stubs "$BUNDLE/src/" 2>/dev/null || true
# All Word documents (plans, safety, manuals, audit artefacts)
mkdir -p "$BUNDLE/docs/plaene" "$BUNDLE/docs/safety" "$BUNDLE/docs/manuals" \
mkdir -p "$BUNDLE/docs/plans" "$BUNDLE/docs/safety" "$BUNDLE/docs/manuals" \
"$BUNDLE/docs/reviews" "$BUNDLE/docs/non-conformities" "$BUNDLE/misra/records"
cp -r docs/plaene/* "$BUNDLE/docs/plaene/" 2>/dev/null || true
cp -r docs/plans/* "$BUNDLE/docs/plans/" 2>/dev/null || true
cp -r docs/safety/* "$BUNDLE/docs/safety/" 2>/dev/null || true
cp -r docs/manuals/* "$BUNDLE/docs/manuals/" 2>/dev/null || true
cp -r docs/reviews/* "$BUNDLE/docs/reviews/" 2>/dev/null || true
@@ -119,10 +121,10 @@ jobs:
- \`reports/test-report.html\` — Test summary with requirement mapping
**Documents (Word, curated):**
- \`docs/plaene/\` — PID, PM-/QA-/SWE-/Test-Plan
- \`docs/plans/\` — PID, PM-/QA-/SWE-/Test-Plan
- \`docs/safety/\` — HARA, Safety Case, FMEDA, MISRA-Compliance, Verification-Report, Tool-Qualification
- \`docs/manuals/\` — User-Manual + Service-Manual
- \`docs/reviews/\` — Review-Protokoll(e)
- \`docs/reviews/\` — Review minutes
- \`docs/non-conformities/\` — Non-conformity entries
- \`docs/misra/\` — MISRA Deviation Records
@@ -130,11 +132,11 @@ jobs:
- All 46 unit tests green (Linux runner required)
- Coverage measured with gcov/lcov
- Statische Analyse mit Cppcheck (0 Findings)
- Static analysis with Cppcheck (0 findings)
- MISRA C:2012 compliance confirmed (1 Advisory deviation)
- Traceability verified bidirectionally (50 Items)
- Traceability verified bidirectionally (50 items)
## Referenzen
## References
- Methodology: https://gitea.slohmaier.com/slohmaier/dev-process
- Commit: ${{ github.sha }}
@@ -177,7 +179,7 @@ jobs:
run: |
DEPLOY=/var/www/pages/demo-epb
if [ ! -d "$DEPLOY" ]; then
echo "Mount $DEPLOY nicht da — Runner-Config pruefen. Skip."
echo "Mount $DEPLOY missing - check runner config. Skip."
exit 0
fi
BUNDLE="release/demo-epb-${TAG}"
+5 -1
View File
@@ -19,6 +19,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install dependencies (Linux)
if: matrix.os == 'ubuntu-latest'
@@ -58,6 +60,8 @@ jobs:
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Install dependencies
run: |
@@ -164,7 +168,7 @@ jobs:
fi
mkdir -p "$DEPLOY"/{docs,coverage,traceability,diagrams,api-doc,reports/cppcheck,src,misra/records}
cp build/index.html "$DEPLOY/index.html"
cp -r docs/plaene docs/safety docs/manuals docs/reviews docs/non-conformities "$DEPLOY/docs/"
cp -r docs/plans docs/safety docs/manuals docs/reviews docs/non-conformities "$DEPLOY/docs/"
cp -r build/coverage-html/. "$DEPLOY/coverage/" 2>/dev/null || true
cp -r docs/traceability/. "$DEPLOY/traceability/"
cp -r docs/diagrams/. "$DEPLOY/diagrams/"
+1 -1
View File
@@ -1,4 +1,4 @@
# Minimal Doxygen-Konfiguration fuer demo-epb
# Minimal Doxygen configuration for demo-epb
# Generiert HTML-API-Dokumentation aus src/
PROJECT_NAME = "demo-epb"
+1 -1
View File
@@ -63,7 +63,7 @@ python3 tools/render_plantuml.py
## Guided tour (~30 min)
### 1. Project planning (Word)
`docs/plaene/`:
`docs/plans/`:
- **Project-Manual.docx** — Navigation guide, reading order, roles
- **PID.docx** — What is built and why
- **SWE-Plan.docx** — Language, standards, branching, reviews, coverage targets
+1 -1
View File
@@ -33,7 +33,7 @@ The following artefacts are under configuration control:
| Requirements | `reqs/{sys,swe}/*.md` | Git + Doorstop item hash |
| Architecture | `arch/{sys,swe}/*.md` | Git + Doorstop item hash |
| Safety Goals | `safety/sg/*.md` | Git |
| Plans (Word) | `docs/plaene/*.docx` | Git + document version block |
| Plans (Word) | `docs/plans/*.docx` | Git + document version block |
| Safety docs (Word) | `docs/safety/*.docx` | Git |
| Manuals (Word) | `docs/manuals/*.docx` | Git |
| Reviews + NCs | `docs/reviews/`, `docs/non-conformities/` | Git |
+2 -2
View File
@@ -31,7 +31,7 @@ This Project Manual is the entry point to the demo-epb project. It answers:
A complete demo of the **slohmaier Dev Process** using an EPB ECU software. The goal is **not** the productive software, but evidence of ASPICE 4.0 / ISO 26262-compliant development.
Detail: `docs/plaene/PID.docx`.
Detail: `docs/plans/PID.docx`.
## 3. Reading order for new project members
@@ -52,7 +52,7 @@ Detail: `docs/plaene/PID.docx`.
```
demo-epb/
├── docs/plaene/ ← PID, PM Plan, QA Plan, SWE Plan, Test Plan, CM Plan, RM Plan
├── docs/plans/ ← PID, PM Plan, QA Plan, SWE Plan, Test Plan, CM Plan, RM Plan
├── docs/safety/ ← HARA, Safety Case, FMEDA, MISRA Compliance, Verification Report, Tool Qualification
├── docs/manuals/ ← User Manual, Service Manual
├── docs/reviews/ ← Review minutes
+7 -7
View File
@@ -1,13 +1,13 @@
# Stubs — nicht implementierte Komponenten
# Stubs — components not implemented
Diese Komponenten sind in der Software-Architektur (`arch/swe/`) vollstaendig
spezifiziert, aber in dieser Demo nicht ausimplementiert. Sie zeigen nur die
Header-Schnittstellen.
These components are fully specified in the software architecture
(`arch/swe/`) but are not implemented in this demo. Only the header
interfaces are shown.
Im Real-Projekt wuerden hier vollstaendige `.c`-Implementierungen plus
Unit-Tests stehen.
In a real project, full `.c` implementations and unit tests would
live here.
| Komponente | ASIL | SWA |
| Component | ASIL | SWA |
|-------------------------|------|-----------|
| Safety Manager | D | SWA-001 |
| Wheel Speed Plausi | B | SWA-004 |
+1 -1
View File
@@ -1,6 +1,6 @@
/**
* @file diag_manager.h
* @brief UDS-Diagnose nach ISO 14229.
* @brief UDS diagnostics per ISO 14229.
*
* @arch SWA-008
* @reqs SWE-018 SWE-019
+1 -1
View File
@@ -1,6 +1,6 @@
/**
* @file display_manager.h
* @brief LED + CAN-Status-Frame Steuerung.
* @brief LED + CAN status frame control.
*
* @arch SWA-007
* @reqs SWE-020 SWE-021
+1 -1
View File
@@ -1,6 +1,6 @@
/**
* @file inclinometer.h
* @brief Inclinometer-Tiefpass-Filter.
* @brief Inclinometer low-pass filter.
*
* @arch SWA-005
* @reqs SWE-024
+1 -1
View File
@@ -1,6 +1,6 @@
/**
* @file logger.h
* @brief Logger — Ringpuffer + EEPROM-Persistenz.
* @brief Logger - ring buffer + EEPROM persistence.
*
* @arch SWA-010
*
+1 -1
View File
@@ -1,6 +1,6 @@
/**
* @file service_mode.h
* @brief Service-Modus fuer Werkstatt (Bremsbelag-Wechsel).
* @brief Service mode for workshop (brake-pad change).
*
* @arch SWA-009
* @reqs SWE-016 SWE-017
+1 -1
View File
@@ -1,6 +1,6 @@
/**
* @file wheel_speed_plausi.h
* @brief Wheel-Speed-Plausibilisierung + Stillstands-Erkennung.
* @brief Wheel-speed plausibility + standstill detection.
*
* @arch SWA-004
* @reqs SWE-022 SWE-023
+1 -1
View File
@@ -205,7 +205,7 @@ static void test_hillhold_armed_to_idle_if_grade_drops(void)
TEST_END();
}
/* ---- Mutually exclusive: nicht in beiden Modi gleichzeitig ---- */
/* ---- Mutually exclusive: never in both modes at once ---- */
/* ---- Drive-Away-Assist (SWE-011 + SWE-012) ---- */
+4 -4
View File
@@ -1,10 +1,10 @@
/**
* @file unit_test_framework.h
* @brief Minimaler Test-Runner fuer demo-epb.
* @brief Minimal test runner for demo-epb.
*
* In Produktion wuerde hier CppUTest oder Google Test stehen
* (siehe docs/SWE-Plan.docx, Abschnitt 7). Fuer die Demo
* bleibt das Framework klein, damit es ohne externe Abhaengigkeiten baut.
* In production CppUTest or Google Test would go here
* (see docs/SWE-Plan.docx, section 7). For the demo, the framework
* stays small so it builds without external dependencies.
*/
#ifndef UNIT_TEST_FRAMEWORK_H
#define UNIT_TEST_FRAMEWORK_H
+3 -3
View File
@@ -125,7 +125,7 @@ def main() -> int:
n_stubs = sum(1 for f in (REPO / "src" / "stubs").glob("*.h"))
# Word docs
plans = collect_docs("docs/plaene")
plans = collect_docs("docs/plans")
safety = collect_docs("docs/safety")
manuals = collect_docs("docs/manuals")
reviews = collect_docs("docs/reviews")
@@ -228,12 +228,12 @@ footer {{ text-align: center; color: #888; padding: 30px; font-size: 13px; }}
"Machine-readable format for your own tools")
html_body += "</ul></section>"
# Diagrams
# Diagrams (bundle layout: SVGs are at <bundle>/diagrams/, not docs/diagrams/)
diagrams = sorted((REPO / "docs" / "diagrams").glob("*.svg"))
if diagrams:
html_body += "<section><h2>Architecture Diagrams (PlantUML)</h2><ul>"
for d in diagrams:
href = os.path.relpath(d, REPO)
href = f"diagrams/{d.name}"
html_body += f" <li><a href='{html.escape(href)}'>{html.escape(d.stem)}</a></li>\n"
html_body += "</ul></section>"
+1 -1
View File
@@ -1,6 +1,6 @@
#!/usr/bin/env python3
"""
Erzeugt einen Test-Summary-Report aus dem Output unserer Unit-Tests.
Generate a test-summary report from the output of our unit tests.
Reads the test-output file (build/test-output.txt) and produces:
- build/test-report.md
+3 -3
View File
@@ -1,9 +1,9 @@
#!/usr/bin/env python3
"""
Rendert alle @startuml ... @enduml Bloecke aus arch/**/*.md als SVG.
Render all @startuml ... @enduml blocks from arch/**/*.md as SVG.
Verwendet einen erreichbaren PlantUML-HTTP-Server (Default: www.plantuml.com).
In CI kann die Server-URL ueber PLANTUML_SERVER ueberschrieben werden.
Uses a reachable PlantUML HTTP server (default: www.plantuml.com).
In CI the server URL can be overridden via PLANTUML_SERVER.
Output: docs/diagrams/<file>-<index>.svg