You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
You are a Software Architect. Your a specalized on Perl and Python.
6
+
First you plan your work and then you create the code.
7
+
The main goal is to transform the functionality from the perl project into the python project.
8
+
customInstructions: |
9
+
We have a perl project which is working as expected. Every time, when migrating code to python, the perl code and also the test results act as a master.
10
+
11
+
If converting tests you will convert the testcases on an 1:1 basis in respect to the testdata and results.
12
+
After creating a pythontest you will run it to be sure, that it passes.
Copy file name to clipboardExpand all lines: AGENTS.md
+51-2Lines changed: 51 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -15,6 +15,14 @@ This file provides guidance to agents when working with code in this repository.
15
15
oder um eine längere Laufzeit zu analysieren:
16
16
`python3 main.py --timeout 30`
17
17
18
+
## Test Timeout Configuration
19
+
- Für pytest wurde ein globaler Timeout von 30 Sekunden in der `pyproject.toml` konfiguriert:
20
+
```toml
21
+
[tool.pytest.ini_options]
22
+
timeout = 30
23
+
```
24
+
- Die erforderliche Abhängigkeit `pytest-timeout` wurde zur `requirements-dev.txt` hinzugefügt.
25
+
18
26
## Mandatory Documentation and Test Maintenance
19
27
20
28
Diese Richtlinie gilt für alle AI-Agenten, die Code oder Systemkonfigurationen in diesem Repository ändern. Jede Änderung **muss** eine vollständige Analyse der Auswirkungen auf die zugehörige Dokumentation und die Testsuite umfassen.
@@ -83,7 +91,7 @@ Dieser Abschnitt definiert den verbindlichen Arbeitsablauf für die Entwicklung
83
91
- Aufteilung in konkrete Arbeitspakete (Tasks)
84
92
- Definition von Akzeptanzkriterien für jede Komponente
85
93
- Planung von Teststrategien (Unit, Integration, System)
86
-
- Ressourcen- und Zeitplanung
94
+
- Ressourcen- und Zeitplaning
87
95
- Erstellung von Mockups/Prototypen für kritische Pfade
88
96
-**Deliverables:**
89
97
- Implementierungsplan mit Task-Breakdown
@@ -243,4 +251,45 @@ flowchart TD
243
251
244
252
Dieser Architecture-First Development Process ist für **alle** neuen Funktionen und wesentlichen Änderungen verbindlich. Ausnahmen sind nur bei kritischen Bugfixes erlaubt und müssen durch einen Emergency-ADR dokumentiert werden. Jede Abweichung vom Prozess muss vom Architecture Owner genehmigt werden.
245
253
246
-
Die Einhaltung dieses Prozesses gewährleistet, dass Design-Entscheidungen bewusst getroffen, dokumentiert und nachvollziehbar sind, was die langfristige Wartbarkeit, Skalierbarkeit und Qualität des PySignalduino-Projekts sicherstellt.
254
+
Die Einhaltung dieses Prozesses gewährleistet, dass Design-Entscheidungen bewusst getroffen, dokumentiert und nachvollziehbar sind, was die langfristige Wartbarkeit, Skalierbarkeit und Qualität des PySignalduino-Projekts sicherstellt.
255
+
256
+
## Fehlerbehebungsprozess
257
+
### Problemidentifikation
258
+
1.**Symptom:** ImportError oder ModuleNotFoundError während der Testausführung
259
+
2.**Ursachenanalyse:**
260
+
- Überprüfen der Traceback-Meldung auf fehlende Module
261
+
- Vergleich mit requirements.txt und requirements-dev.txt
262
+
- Prüfen der Dokumentation auf Installationsanweisungen
263
+
264
+
### Lösungsimplementierung (Abhängigkeiten)
265
+
1.**requirements-dev.txt aktualisieren:**
266
+
- Modulname zur Datei hinzufügen
267
+
- Commit mit Conventional Commits Syntax erstellen (z.B. "fix: add <module> to requirements-dev.txt")
268
+
2.**Dokumentation prüfen:**
269
+
- Sicherstellen, dass Installationsanweisungen in README.md und docs/ aktuell sind
270
+
271
+
### Problemidentifikation (Hohe CPU-Last im Parser)
272
+
1.**Symptom:** Anhaltende 100% CPU-Auslastung auf einem oder mehreren Kernen während des Parsens von MU/MC-Nachrichten.
273
+
2.**Ursachenanalyse:**
274
+
-**Parser-Architektur prüfen:** Der gesamte Parservorgang sollte in [`signalduino/controller.py`](signalduino/controller.py) über `asyncio.to_thread` abgewickelt werden.
275
+
-**Protokoll-Ineffizienz:** Die synchrone Demodulationsschleife in [`sd_protocols/message_unsynced.py`](sd_protocols/message_unsynced.py) oder [`sd_protocols/manchester.py`](sd_protocols/manchester.py) blockiert den Worker-Thread zu lange.
276
+
3.**Validierung:** Temporäres Hinzufügen von Zeit-Logging (z.B. mit `time.perf_counter()`) in der Protokollschleife in `demodulate_mu` zur Identifizierung des blockierenden Protokolls.
277
+
278
+
### Lösungsimplementierung (Parser-Performance)
279
+
1.**Backtracking-Hölle vermeiden:** Wenn ein Protokoll eine sehr lange Demodulationszeit (z.B. > 10ms) aufweist, liegt wahrscheinlich ein Catastrophic Backtracking in einem regulären Ausdruck vor.
280
+
2 **Deaktivierung inaktiver Protokolle:** Die `active`-Prüfung in `demodulate_mu` sollte verwendet werden, um inaktive Protokolle auszuschließen.
281
+
282
+
### Verifikation
283
+
1.**Installation testen:**
284
+
```bash
285
+
pip install -r requirements-dev.txt
286
+
pytest
287
+
```
288
+
2.**Tests erneut ausführen:**
289
+
```bash
290
+
timeout 60 pytest ./tests/
291
+
```
292
+
293
+
### Dokumentation
294
+
-**AGENTS.md aktualisieren:** Diese Prozessbeschreibung hinzufügen
295
+
-**Commit erstellen:** Änderungen mit aussagekräftiger Nachricht committen
0 commit comments