Arch Forum 2026-01-22¶
Participants: Backend devs, Andy, Kyle, Victor
Agenda¶
- Remember runsettings
- Log files when running locally
- Platform: Logging updates
- Platform: Migrate to Minority.Platform namespace
- Platform: System.Text.Json investigation
- Deadletter UI
- If time: What about rules/skills/agents.md files?
Summary¶
Remember runsettings¶
Regression tests should use a .runsettings file to override the ASPNETCORE_ENVIRONMENT setting to Staging. See for example the MPay Regression test .runsettings.
- Credit & Transactions regression tests do not use this file and should be fixed.
Log files when running locally¶
Logs are written to c:\temp\logs\{hostingEnvironment.ApplicationName}.log or {SpecialFolder.UserProfile}\temp\logs\{hostingEnvironment.ApplicationName}.log. This is useful when debugging tests.
Platform: Logging updates¶
The goal is to have our backend services only log to the console when run in AKS, and have a third party (fluentbit) collect the logs and forward to Elastic.
- New config setting to enable/disable console logs. Example in be-configuration. (The
CommonExclusionFilterExprfilter is used to exclude health checks from the logs.) - Console logs when not in development will use the same format as our Elastic logs (each log becomes one serialized JSON string).
- Do not write to console with
Console.Xmethods!
Platform: Migrate to Minority.Platform namespace¶
Today there's a bit of a mix of namespaces in use in the backend. It would be good to consolidate.
Background
Today we have:
- Minority.AreaName.* for each area
- Majority.Platform.* for "modern" platform nugets
- Rebtel.Core.Infrastructure.* for old platform nugets
- Bank.Platform.* for be-bank-platform nugets
- MoneyFlow.*, MoneyIn.* and MoneyOut.* for Rate, MoneyFlow Ach, Psp and Remittance
Our goal should be to have everything under Minority.*.
Minority.AreaName.*is already goodMajority.Platform.*should beMinority.Platform.*Rebtel.Core.Infrastructure.*should beMinority.Platform.*Bank.Platform.*should also beMinority.Platform.*MoneyFlow.*,MoneyIn.*andMoneyOut.*should ideally migrate as well
Victor has started to work on this, with these changes already done:
- Moved
Bank.Platform.Authenticationfrombe-bank-platformtobe-platform, and renamed it toMinority.Platform.Authentication - Moved
Bank.Platform.Authentication.Contractfrombe-bank-platformtobe-platform, and renamed it toMinority.Platform.Authentication.Contract - Moved
Minority.Core.Shared.Contractfrombe-bank-platformtobe-platform - Moved
Bank.Platform.Hosting.Apifrombe-bank-platformtobe-platform, and renamed it toMinority.Platform.Hosting.Api - Moved
Bank.Platform.ObsoleteEndpointMonitoringfrombe-bank-platformtobe-platform, and renamed it toMinority.Platform.ObsoleteEndpointMonitoring - Moved
Bank.Platform.Testingfrombe-bank-platformtobe-platformand renamed toMinority.Platform.Testing - Moved
Bank.Platform.Testing.Contractfrombe-bank-platformtobe-platformand renamed toMinority.Platform.Testing.Contract - Removed
Bank.Platform.Testing.DataGeneratorsfrombe-bank-platformand put its content (RandomIdGeneratorinMajority.Platform.Testing.DataGeneratorswith matching namespace)
Platform: System.Text.Json investigation¶
Using STJ was the #3 item for improvement in the last Arch Forum.
Copilot did an investigation here.
Short summary of Copilot's investigation:
Should be possible to do. A time estimate is around 2-3 weeks with AI assistance:
- Custom converters: 3-4 days
- Code migration: 4-5 days
- Testing: 2-3 days
- Deployment: 1-2 weeks staged rollout
Victor's comment: Not impossible to do, but still not high priority given the estimated benefits are not that big.
Deadletter UI¶
Improved RabbitMQ message admin tool was the #1 area for improvement voted in the last arch forum.
Slack thread to collect everyone's thoughts here.
Summary:
1. Direct Queue Publishing
- Send message(s) directly to a specific queue (bypass exchange/routing)
- Support bulk send operations
- Better message templating (maybe pull structure from DW event dump instead of Kibana)
2. DLQ Management
- Inspect individual messages
- Edit message payload before requeue
- Filter/search messages in DLQ
- Selective actions: requeue, ack, or delete individual messages
- Bulk operations on filtered results
3. Safety Features
- Preview which consumers would receive a message before publishing
- Flag/warn about non-idempotent consumers
- Audit trail for operations
MVP:
- Browse DLQ messages with filtering by message type, date, and content
- View JSON (maybe edit, but no contract validation)
- Requeue to original queue
- Publish new message directly to specific queue or exchange
- Bulk select + action
Victor has started with an MVP in Hydra and showed a mock UI. The consensus was that a UI in Hydra is a good idea; many like a visual interface like a web page, and since this requires an API in Hydra, it will still be possible to script if needed.
What about rules/skills/agents.md files?¶
Only a few have custom AI agent files:
- Global cursor rules applied everywhere
- be-ach has committed cursor files
Additional comments:
- We should not be afraid to commit AI agent files.
- Many times it's quick and easy to generate an
AGENTS.mdfile (or similar) at the start of a coding session, and since it's easy there's no need to commit it. This also ensures it's up-to-date.
be-devtools shell scripts¶
Rasmus has converted many of the PowerShell scripts into zsh scripts for easier use on Mac. They are committed into be-devtools.
A good comment was raised by Andy:
When it takes an agent 5 minutes to write a script, the important part becomes recognizing that you need something automated, not the script code itself.
(At the same time, it's always good to commit to keep it around, and be-devtools is fast and easy to commit to.)