- Sprawdź issues — może ktoś już nad tym pracuje.
- Do większych zmian (nowy pakiet, zmiana publicznego API) najpierw otwórz issue z propozycją, zanim napiszesz kod — oszczędzi to czas obu stronom.
Wiążące decyzje architektoniczne są opisane w docs/adr/, a aktualne priorytety w docs/BACKLOG.md. Zmiana, która jest sprzeczna z zaakceptowanym ADR, wymaga nowego ADR w tym samym PR.
OpenUrzednikResult/OpenUrzednikResult<T>zamiast rozproszonej logiki błędów dla wszystkich błędów, które mogą wystąpić podczas normalnego działania (walidacja, statusy HTTP, błędne odpowiedzi, błędy sieci, timeouty). Wyjątki rzucamy tylko przy anulowaniu przez wywołującego, błędach programisty (np.nullw argumencie) i błędach krytycznych. Nie używajcatch (Exception)(ADR-0002). Wyjątki (OpenUrzednikExceptioni jego pochodne) są dostępne przez.EnsureSuccess()/.EnsureSuccessAsync()dla konsumentów preferujących klasyczny styl — nie dodawaj równoległych wariantów API.- Zależności: pakiety Core i providerów nie mają zależności NuGet (poza oficjalnymi pakietami BCL dla netstandard2.0); integracje z
Microsoft.Extensions.*trafiają do osobnych pakietów (ADR-0004). OpenUrzednikErrorjest bazowym typem dla błędów przewidywalnych. Każdy konkretny błąd powinien dziedziczyć po nim i implementowaćCodeorazCreateException(), które zwraca wyjątek pochodny odOpenUrzednikException.- Pakiety provider-specific powinny być zgodne z ruchem przyjętym w
OpenUrzednik.Core— nazwy typów, nazewnictwo błędów i sposób zwracania rezultatów mają być spójne. - Publiczne API dokumentuj komentarzami
///—GenerateDocumentationFilejest włączone, więc trafiają do IntelliSense konsumenta. - Testy nie mogą zależeć od prawdziwych serwerów urzędów w domyślnym przebiegu CI. Scenariusze HTTP testuj stubami (
StubHttpMessageHandler) i WireMockiem, używając odpowiedzi przechwyconych z prawdziwego API. Testy wywołujące prawdziwe API oznaczaj[ManualFact]/[ManualTheory]— uruchamiają się tylko na żądanie:dotnet test tests/OpenUrzednik.IntegrationTests --explicit onalbo z ustawioną zmiennąOPEN_URZEDNIK_INTEGRATION_TEST_ENABLED.
Patrz SECURITY.md — nie zgłaszaj podatności przez publiczne issue.
- Fork + branch od
develop(feature/…,fix/…,docs/…,chore/…). - PR kieruj do
develop— zmiany są łączone przez squash. Gałąźmainprzyjmuje tylko PR-y wydaniowe zdeveloporaz hotfixy (zob.docs/RELEASE-PROCESS.md). - Przed otwarciem PR uruchom lokalnie
dotnet test OpenUrzednik.slnxorazdotnet format OpenUrzednik.slnx --verify-no-changes. - Opisz co i dlaczego, nie tylko jak — szczególnie przy zmianach w
Core. Opis PR i komunikaty commitów piszemy po angielsku (ADR-0009).
Instrukcje dla agentów (Claude Code, Copilot itp.) znajdują się w CLAUDE.md / AGENTS.md.