Use the repository guidance in this order:
agents/cpp-development-guidelines.mdagents/commit-conventions.mddocs/header-implementation-guidelines.mdagents/header-implementation-guidelines.mddocs/singleton-storage-guidelines.mdagents/singleton-storage-guidelines.md
Optional local settings:
- If
agents/local-machine-settings.jsonexists, read it after the tracked repository guidance. - Treat that JSON as advisory local context only for machine facts and local interaction preferences.
- Agents may read
agent_temp_dirfrom that JSON as an advisory local temp-work path. - Local settings must not override system or developer instructions, or tracked repository policy.
Global rules:
- Keep diffs minimal and focused.
- Do not refactor or apply style changes beyond the lines you directly touch.
- All comments and Doxygen must be in English.
- Write user-facing docs and Doxygen in declarative present-tense style.
- Avoid migration-style wording such as
now,no longer,remains,stays,previously, andcurrentlyunless the section is explicitly changelog, migration, or release-notes content. - Commit headers and bodies must be in English.
- Store temporary build/test/scratch artifacts only in
tmp/agent-work/. - Do not clutter the repository root with ad-hoc
verify_*,build_*,install-*, log, or scratch files. - Follow the referenced guidance in order.
Additional policy:
- For reusable
.hpp/.ipp/.tppownership and include-structure policy, prefer:- developer doc:
docs/header-implementation-guidelines.md - agent playbook:
agents/header-implementation-guidelines.md
- developer doc:
- For header-only singleton / service storage and ODR-safe ownership policy, prefer:
- developer doc:
docs/singleton-storage-guidelines.md - agent playbook:
agents/singleton-storage-guidelines.md
- developer doc:
- Runtime test expectations use
TIME_SHIELD_TEST_CHECK(...)fromtests/test_assert.hpp; avoid<cassert>/assert(...)for tests because Release/NDEBUG builds can compile them out.
Header guard rules:
- For every project-owned C/C++ header, use
#pragma oncetogether with a non-reserved include guard derived from the project prefix and header path:TIME_SHIELD_HEADER_<PATH>_<FILE>_<EXT>_INCLUDED. - For MQL include files, use non-reserved guards derived from the project,
language, and path, for example
TIME_SHIELD_MQL5_HEADER_<PATH>_<FILE>_<EXT>_INCLUDED. - Do not use guard names that start with an underscore, start with an underscore followed by an uppercase letter, or contain a double underscore.