NEVER NEVER NEVER NEVER PUSH WITHOUT EXPLICIT INSTRUCTION
ABSOLUTELY NO EXCEPTIONS. NEVER PUSH TO GITHUB WITHOUT THE USER EXPLICITLY SAYING "PUSH" OR GIVING A DIRECT COMMAND TO PUSH.
DO NOT PUSH EVEN IF:
- All tests pass locally
- All tests pass on CI
- The changes look good
- You think it's ready
- You want to check CI
ALWAYS:
- Run tests locally
- Show results to user
- WAIT FOR EXPLICIT "PUSH" COMMAND
- Only then run
git push
ALL EXAMPLES IN README.rst AND docs/ MUST BE TESTED AND WORKING AT ALL TIMES
BEFORE ANY COMMIT THAT CHANGES APIs OR EXAMPLES:
- Test EVERY code example in
README.rst - Test EVERY code example in
docs/*.rst - All examples must run without errors
- Create/update test files in
coding_agents/directory to verify examples
TEST PROCEDURE:
# Test README examples
python coding_agents/test_readme_examples.py
# Test documentation examples
python coding_agents/test_doc_examples.pyWHEN UPDATING APIs:
- Search for ALL usages of the old API in README.rst and docs/
- Update ALL examples to use the new API
- Test ALL updated examples
- Never commit broken examples
COMMON PATTERNS TO CHECK:
LinearAdditiveUtilityFunction.random()- must useissues=oroutcome_space=keyword argSAOMetaNegotiatorwith aggregation methods - should beSAOAggMetaNegotiator- Any deprecated or changed class names
- Any deprecated or changed method signatures
pytest # Run all tests
pytest tests/core/test_sao.py # Run single test file
pytest tests/core/test_sao.py::test_name # Run single test function
pytest -k "pattern" # Run tests matching pattern
NEGMAS_FASTRUN=True pytest # Fast test moderuff check --fix --unsafe-fixes # Lint and auto-fix
ruff format # Format code
pre-commit run --all-files # Run all pre-commit hooks- Line length: 88 chars, indent: 4 spaces, quotes: double
- Python target: 3.10+ (use
|for unions:int | None) - Imports:
from __future__ import annotationsfirst, then stdlib, third-party, local - Naming: PascalCase for classes, snake_case for functions/variables,
_prefixfor private - Types: Use type hints everywhere; use
TYPE_CHECKINGblock for type-only imports - Classes: Use
@definefrom attrs for data classes; every module exports via__all__ - Errors: Raise
ValueError/TypeErrorwith descriptive messages; usenegmas.warningsfor deprecations - Source location: Main code in
src/negmas/, tests intests/ - Docstrings: ALWAYS test every docstring example you add using
python -c "..."orpytest --doctest-modulesbefore committing - Documentation examples: ALWAYS test README.rst and docs/*.rst examples using test files in
coding_agents/before committing
- File Storage: All files created for documentation, internal testing, or any other purpose must be placed in the
coding_agents/directory. This is to avoid polluting the root directory.
- Do not push: Never push commits to origin without explicit user approval. Commit changes locally, but wait for the user to say "push" or similar before running
git push. - Always add tests: Every new feature must have corresponding tests. Add tests to
tests/core/for core functionality. - Test naming: Use
test_<feature_name>naming convention for test functions. - Run tests: Always run relevant tests after implementing a feature to verify it works.
Task: Periodically update the publications list (approximately every 2 weeks).
Files to update:
docs/publications.rst- Full comprehensive list with all detailsREADME.rst- Condensed "Papers Using NegMAS" section
Search queries to use (Google Scholar):
"negmas" negotiation"SCML" "supply chain" negotiation agent"supply chain management league" ANAC"automated negotiating agents competition" SCML
Entry format for publications.rst:
- Author1, A., Author2, B. (Year).
`Paper Title <URL>`_.
In: *Venue Name*. Publisher. *Cited by N*Process:
- Search using the queries above
- Filter for papers that actually use/cite NegMAS or SCML
- Add new entries to the appropriate category in
docs/publications.rst - For significant papers (high citations or major venues), also add to
README.rst - Update the "Last updated" date in publications.rst
- Verify the documentation builds:
cd docs && make html
Task: Periodically review and update the NegMAS ecosystem documentation (approximately every 2 weeks).
Files to update:
docs/overview.rst- Ecosystem section in main documentationREADME.rst- Ecosystem section in project README
Repositories to check (all under github.com/yasserfarouk/):
| Category | Repositories |
|---|---|
| Competition Frameworks | anl, anl2025, scml |
| Agent Repositories | anl-agents, scml-agents |
| Bridges & Adapters | negmas-geniusweb-bridge, negmas-negolog, geniusbridge |
| Extensions | negmas-llm, negmas-rl-tutorial |
| Visualization | scml-vis |
| Language Bindings | jnegmas |
Process:
- Check each repository for recent updates, new releases, or status changes
- Look for new repositories in the yasserfarouk GitHub account related to NegMAS
- Verify all repository links are still valid
- Update descriptions if repository purposes have changed
- Add any new ecosystem projects to the appropriate category
- Remove or mark as deprecated any archived/abandoned projects
- Ensure both
docs/overview.rstandREADME.rstare in sync