Skip to content

fix: framework-wide hardening pass (v26.05.06)#17

Merged
ancongui merged 1 commit into
mainfrom
fix/framework-hardening-v26.05.06
May 31, 2026
Merged

fix: framework-wide hardening pass (v26.05.06)#17
ancongui merged 1 commit into
mainfrom
fix/framework-hardening-v26.05.06

Conversation

@ancongui
Copy link
Copy Markdown
Contributor

Summary

A deep audit of the whole framework surfaced a class of silent wiring gaps and correctness bugs — features that existed but were never connected to the runtime path, so the test suite passed while the behaviour was broken. This PR fixes ~39 verified high/critical findings (each with regression/integration tests) and bumps the version to v26.05.06.

  • Tests: 3146 passing (was 3099)
  • CI gates: ruff · ruff format · mypy --strict all green

Highlights

Admin dashboard — traces now recorded (collector joins the filter chain), SSE actually streams (the filter chain was buffering entire responses → broke all SSE framework-wide), server info resolves.

DI & AOP — same-type @bean collapse fixed (list[T] returns every bean); AOP woven regardless of registration order; a side-effecting @property no longer aborts startup; RequestContextFilter wired by default.

Webstructlog-absent request crash; FastAPI OpenAPI + @controller_advice; /actuator health rescan; /actuator/prometheus text format.

Transactional — workflow @compensation_step executes on failure; REST controllers mounted; saga compensator outcomes + recovery TypeError; wait timeouts; child correlation id.

CQRS / EDA / messaging / scheduling — query cache + domain-event publishing wired; circuit breaker no longer stuck OPEN; Kafka/RabbitMQ subscribe-after-start; scheduler fixed_delay survives errors.

Data / config / eventsourcing / notifications / callbacks — derived-query stub detection; mongo LIKE wildcards; Config.bind() placeholders + nested dataclasses; ConfigServer save/fetch; projection cursor data-loss; SMTP BCC; canonical-JSON HMAC.

Docs — full CHANGELOG.md v26.05.06 entry; new docs/modules/logging.md + config-server.md.

See CHANGELOG.md for the complete itemized list.

🤖 Generated with Claude Code

A deep audit surfaced a class of silent wiring gaps and correctness bugs —
features that existed but were never connected to the runtime path, so the
suite passed while behaviour was broken. This fixes them. 3146 tests pass;
ruff / ruff-format / mypy --strict all green. See CHANGELOG.md for the full list.

Admin dashboard
- traces are recorded (TraceCollectorFilter now joins the filter chain)
- SSE streams instead of buffering (fixed all Server-Sent Events framework-wide)
- server info resolves lazily (was "unknown")

Dependency injection & AOP
- same-type @bean methods no longer collapse; list[T] returns every bean
- AOP woven regardless of registration order (two-pass post-processing)
- weaving/scheduling/wiring scans no longer trigger @Property getters at startup
- RequestContextFilter wired by default (REQUEST scope + @pre/@post_authorize)

Web
- RequestLoggingFilter no longer crashes without structlog (pyfly.logging.get_logger)
- FastAPI adapter: correct OpenAPI generation + @controller_advice handlers
- /actuator health rescan now runs; /actuator/prometheus returns text format

Transactional engine
- workflow @compensation_step executes on failure (reverse-order rollback)
- REST controllers (orchestration/dlq/workflow) are mounted
- saga compensator records outcomes; recovery TypeError fixed
- workflow @wait_for_all/@wait_for_any timeouts honoured; child correlation id

CQRS / EDA / messaging / scheduling
- query cache + domain-event publishing wired
- EDA circuit breaker no longer stuck OPEN
- Kafka/RabbitMQ subscribe-after-start; scheduler fixed_delay survives errors

Data / config / eventsourcing / notifications / callbacks
- derived-query stub detection; mongo LIKE wildcards
- Config.bind() placeholders + nested dataclasses; ConfigServer save/fetch
- projection cursor no longer skips failed events; SMTP BCC; HMAC canonical JSON

Docs: CHANGELOG v26.05.06, new docs/modules/logging.md + config-server.md.
Version synced (pyfly.__version__ was stale).

🤖 Generated with Claude Code (https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
@ancongui ancongui merged commit 84b3594 into main May 31, 2026
4 checks passed
@ancongui ancongui deleted the fix/framework-hardening-v26.05.06 branch May 31, 2026 17:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant