Files
Oleksandr Bezdieniezhnykh 78dea8ebab
ci/woodpecker/push/build-arm Pipeline was successful
chore: update configuration and Docker setup for JWT and test results
Enhanced the .gitignore to exclude test results and updated the Dockerfile to include a new entrypoint script for improved container initialization. Refactored JWT configuration to support additional parameters for automatic refresh intervals, ensuring better control over token management. Updated the ConfigurationResolver to enforce required environment variables without hardcoded fallbacks, enhancing security and flexibility.
2026-05-15 03:23:23 +03:00

6.7 KiB

Ripple Log — Cycle 1 (2026-05-14 re-verification)

Source trigger: _docs/02_document/05_drift_findings_2026-05-14.md — targeted re-verification of Auth/JwtExtensions.cs, Program.cs, Infrastructure/ConfigurationResolver.cs, Infrastructure/CorsConfigurationValidator.cs, Database/DatabaseMigrator.cs, Services/AircraftService.cs, Services/FlightService.cs, Services/WaypointService.cs. Mode: document skill in Task mode (re-run on previously "complete" docs). The drift was discovered AFTER the initial pass declared current_step: complete; this cycle is a targeted refresh.

Files in the changed-source set (cycle trigger)

These code files are the observed-current-state that the docs were re-aligned against. None of them were modified during this documentation cycle — code stays as-is; only the docs change.

Source file Why it triggered ripple
Auth/JwtExtensions.cs ECDSA-SHA256 + JWKS + iss/aud (was HS256 + shared-secret in docs)
Program.cs Calls ResolveRequiredOrThrow + CorsConfigurationValidator.EnsureSafeForEnvironment (was hardcoded dev fallbacks in docs)
Infrastructure/ConfigurationResolver.cs New file, no module doc previously existed
Infrastructure/CorsConfigurationValidator.cs New file, no module doc previously existed
Database/DatabaseMigrator.cs TIMESTAMP (not TIMESTAMPTZ); explicit REFERENCES on every FK; DEFAULT on every non-nullable non-key column
Services/AircraftService.cs Case-INSENSITIVE name filter + OrderBy(Name) (docs said case-sensitive + no ordering)
Services/FlightService.cs Case-INSENSITIVE name filter + OrderByDescending(CreatedDate) (docs didn't specify)
Services/WaypointService.cs Composite (missionId, waypointId) predicate collapses two error cases into one 404

Doc updates in this cycle

Direct updates driven by the drift findings:

Doc Reason
_docs/02_document/modules/auth.md Full rewrite — ECDSA-JWKS model, iss/aud, alg pin, no shared secret
_docs/02_document/modules/program.md Startup section rewrite — 4 required vars, fail-fast, CORS gate
_docs/02_document/modules/database.md TIMESTAMP type, REFERENCES on FKs, DEFAULT clauses
_docs/02_document/components/05_identity/description.md Mechanism + Caveats rewrite (matches modules/auth.md)
_docs/02_document/components/07_host/description.md Configuration + CORS gating sections (matches modules/program.md)
_docs/02_document/diagrams/flows/flow_jwt_validation.md Sequence + flowchart + data flow + error scenarios — full rewrite for JWKS
_docs/02_document/diagrams/flows/flow_startup_migration.md Config resolution + CORS validation; no JWT_SECRET fallback
_docs/02_document/architecture.md § Vision, § Components, § Major flows, § Principles, § Tech Stack (Auth row), § External Integrations (admin row), § Deployment env table, § Security, ADR-005
_docs/02_document/data_model.md ERD + Owned-table invariants — explicit TIMESTAMP, DEFAULT, REFERENCES
_docs/02_document/system-flows.md Cross-cutting JWT + F5 + F6 detailed flows + error scenarios
_docs/02_document/04_verification_log.md Re-issued § 3 F5 + F6 rows; demoted § 4.2 F3 CORS-unconditional; added § 4.3
_docs/00_problem/problem.md "What is", "Problem", "Users", "How it works", "Cross-cutting contracts" sections
_docs/00_problem/restrictions.md E1, E3, E4, E9 — 4 env vars, no fallback, gated CORS
_docs/00_problem/acceptance_criteria.md AC-1.5, AC-1.6, AC-2.3, AC-2.8, AC-4.2, AC-5 entire group (rewrite), AC-6.1, AC-6.2, AC-6.4, AC-6.5, AC-6.11, AC-6.12, AC-9.1
_docs/00_problem/security_approach.md § 1 (full rewrite), § 2 (FL claim semantics), § 3 (secrets), § 5 (CORS), § 6 (footguns), § 7 (audit) untouched, § 8 (threat model), § 9 (refs)
_docs/00_problem/input_data/data_parameters.md § 1 env vars (4 required), § 2.1 / § 2.2 query case sensitivity, § 3 schema (TIMESTAMP, REFERENCES, DEFAULT)
_docs/01_solution/solution.md Topology paragraph, component table rows 05 + 07, § 2.2 ADR-005 row, § 3.3 JWT scenario, § 5.1 + § 5.2 references

Import-graph ripple (computed, not provided by trigger)

Two new C# files were introduced under Infrastructure/:

  • Infrastructure/ConfigurationResolver.cs (Azaion.Flights.Infrastructure.ConfigurationResolver)
  • Infrastructure/CorsConfigurationValidator.cs (Azaion.Flights.Infrastructure.CorsConfigurationValidator)

Reverse-dependency scan (rg "ConfigurationResolver|CorsConfigurationValidator" in C# sources) finds only Program.cs consumes them today. No additional components are reached transitively. Both files belong to component 07_host (composition root); they did NOT warrant a new component — the host doc was extended to cover them.

The JWT changes in Auth/JwtExtensions.cs (Azaion.Flights.Auth.JwtExtensions) are consumed only by Program.cs. The downstream ClaimsPrincipal is consumed by every [Authorize(Policy="FL")] controller, but the wire-shape contract of those controllers is unchanged — the policy still requires permissions=FL, the policy name is still "FL". No component doc refresh needed beyond 05_identity + 07_host.

The DB schema changes (TIMESTAMP, REFERENCES, DEFAULT) ripple to:

  • _docs/02_document/data_model.md (already in the direct list) — ERD + invariants.
  • _docs/00_problem/input_data/data_parameters.md (already in the direct list) — § 3 schema tables.
  • _docs/00_problem/acceptance_criteria.md AC-2.8 (already in the direct list) — TOCTOU mitigation via FK error 23503.

No further out-of-list ripple discovered.

Verdict

All ripple-traced docs are included in the direct update list above; the import-graph scan surfaced no new candidates not already covered. The remaining suite-level docs (../suite/_docs/05_identity*.md, ../suite/_docs/00_roles_permissions.md) likely carry correlated drift on the JWT model but are out of scope for this repo's /autodev cycle and are flagged in 04_verification_log.md § 4.3 for the next suite-level autodev run.

State at end of cycle

  • All Phase 1 (doc revisions) tasks from 05_drift_findings_2026-05-14.md are complete.
  • Phase 2 (test-spec re-issue) is queued — next sub-skill invocation: test-spec in cycle-update mode.
  • Phase 3 (resume Step 4) is the autodev step transition after Phase 2 lands.
  • _docs/02_document/state.json is updated to record the re-verification entry.
  • _docs/_autodev_state.md advances sub_step from targeted-reverification-neededcomplete, then Step 1 → Step 2 (Plan) per the existing-code flow auto-chain.