emulebb-mfc Agent Policy¶
Read the Workspace Policy first. This annex is
mandatory for emulebb-main, MFC maintenance, C++ app builds,
resources/localization, and MFC releases.
Lifecycle And Source¶
- eMuleBB MFC is the Windows
eMule broadband editionfork. Its active source isworkspaces\workspace\app\emulebb-main;repos\emulebbis a detached branch-store anchor atorigin/main, not an edit location. mainis the integration and bounded maintenance branch. The0.7.xline accepts compatibility-preserving, low-risk fixes and bounded UX, performance, build, packaging, documentation, diagnostics, and release improvements. It must not add new subsystems, broad controller/API capability, protocol expansion, or architectural modernization.- No MFC
0.8.xlane is active. Frozen unsupported surfaces remain unsupported unless shared infrastructure, security, or stability is affected. - Release stabilization uses
release/MAJOR.MINOR.PATCH. Do not start routine work there. Backport applicable fixes tomain; one-off stable patches branch from the latest stable tag when needed. - The first post-community commit remains the global source-encoding normalization commit. Put changes at the earliest layer where they are true.
Compatibility And Build¶
- Preserve stock/community eMule eD2K/Kad semantics and default behavior. Protocol-adjacent changes need explicit parity evidence.
- Build, validation, tests, and packaging use
repos\emulebb-buildandpython -m emule_workspace. Do not invoke MSBuild directly from the app or tests tree. - Every app code change rebuilds
Debug|x64,Release|x64, and diagnosticsRelease|x64before commit. The active C++ baseline is C++17 with MSVCv143.v145is probe-only, not a release baseline.
python -m emule_workspace build app --variant main --config Debug --platform x64 --build-output-mode ErrorsOnly
python -m emule_workspace build app --variant main --config Release --platform x64 --build-output-mode ErrorsOnly
python -m emule_workspace build app --variant main --config Release --platform x64 --build-output-mode ErrorsOnly --diagnostics
- The active matrix has no Win32. Build support is x64 and ARM64; shared test execution remains x64-only. Toolset probes flow through orchestration rather than hardcoded project changes.
- Debug uses
RuntimeLibrary=MultiThreadedDebug,Optimization=Disabled,IncrementalLink=truefor executables, andDebugInformationFormat=ProgramDatabase. Release usesRuntimeLibrary=MultiThreaded, speed optimization,FunctionLevelLinking=true,IntrinsicFunctions=truewhere applicable,IncrementalLink=false, andLinkTimeCodeGeneration=UseLinkTimeCodeGeneration. Active compiled targets useBufferSecurityCheck=trueandMultiProcessorCompilation=truewhere structurally applicable.
Naming And Release¶
- Public name:
eMule broadband edition. Compact app/mod/API name:eMuleBB. Organization and URL slug:emulebb. 0.7.3is the first stable release after the fixed0.7.3-rc.1through0.7.3-rc.3train. Later stable maintenance starts atemulebb-v0.7.4; prereleases use explicit suffixes such as0.7.5-rc.1or0.7.5-beta.1. Superseded1.0.0,1.0.1, and1.1.1are evidence/rehearsal labels only.- Stable tags use
emulebb-vMAJOR.MINOR.PATCH; prerelease tags useemulebb-vMAJOR.MINOR.PATCH-rc.Noremulebb-vMAJOR.MINOR.PATCH-beta.N. Tags are annotated and require separate operator approval after release proof. - ZIPs use
emulebb-MAJOR.MINOR.PATCH[-rc.N|-beta.N]-ARCH.zipandemulebb-MAJOR.MINOR.PATCH[-rc.N|-beta.N]-diagnostics-ARCH.zip. Executables remainemulebb.exeandemulebb-diagnostics.exewithout embedded versions. - Runtime artifact renames are strict unless compatibility aliases are
explicitly requested. New runs use UTC
YYYYMMDDTHHMMSSZids and the canonicalbuild-result.json,certification-result.json,release-campaign-run-result.json, and suite result/summary names. - Each published release from
0.7.3-rc.2has version-specific release notes and a power-user changelog describing operational changes, compatibility, packaging/controllers, diagnostics, defaults, risks, and migration/testing notes. Finalize it only with release approval. The0.7.3-rc.2changelog retains a distinct RC1-versus-community-baseline section and RC1 release date.
Runtime Artifact Names¶
- Logs remain
emulebb.log,emulebb-verbose.log,emulebb-crt-debug.log,emulebb-startup-errors.log,emulebb-diagnostics-packet.log,emulebb-diagnostics-upload-slot.log,emulebb-diagnostics-download-slot.log,emulebb-diagnostics-bad-peer.log,emulebb-diagnostics-kad.log,emulebb-diagnostics-startup.trace.json,emulebb-performance.csv,emulebb-performance.mrtg,emulebb-performance-data.mrtg, andemulebb-performance-overhead.mrtg. - Current common diagnostic events use retained v2 run segments named
emulebb-mfc-diag-<processId>-<runId>-<segmentId:06>.jsonlplus the atomicemulebb-mfc-diag-health.jsonwriter-health sidecar. The fixedemulebb-diagnostics-diag.logname is retired for current runs. - Rotated logs insert
-YYYYMMDD-HHMMSSbefore the extension. Dumps useemulebb-dump-YYYYMMDD-HHMMSS-pid<PID>-mini|full.dmpandemulebb-crash-YYYYMMDD-HHMMSS-pid<PID>.dmp. - Test suites publish timestamped run directories plus
<suite>\latestand<suite>-result.json,<suite>-result.partial.json, and<suite>-summary.jsonleaves.
Localization¶
- Every stock
srchybrid\lang\*.rcfile is a supported release language.helpers\rc-release-languages.jsonenumerates exactly that set. - New release-facing strings land in
srchybrid\emule.rcand every stock language before proof. Preserve existing community translations unless a targeted correction is requested; never mass-retranslate them. - New eMuleBB labels need meaningful reviewed translations. External or historical translation engines are not authoritative.
- Use
helpers\rc-string-table.py,helpers\rc-localization-preflight.py,helpers\rc-translate-missing.py,helpers\rc-release-localization-layout.json, andhelpers\rc-release-localization-ignored-ids.txt. Every new EnglishIDS_*row is classified as required or ignored. Mechanical edits are keyed by resource id and must not modify unrelated labels. Do not run concurrent.rcwrites.
Live Path Scope¶
For mixed-client harness rules, read the Harness And Live Policy. Community/baseline/aMule clients remain short-path. Deep-path and folder-mounted VHD scenarios are eMuleBB-only.