- Fix connection string to use postgresql+psycopg2://
- Add libpq-dev for PostgreSQL development headers
- Update deployment script with correct PostgreSQL driver
- Add PostgreSQL installation and configuration to deployment script
- Create mempool database and user (aitbc_mempool)
- Update environment configuration to use database mempool backend
- Add psycopg2 to dependencies for PostgreSQL support
- Enable persistent mempool storage for production deployments
- Generate unique chain ID based on hostname (ait-{hostname})
- Add genesis block generation step to deployment script
- Each new node gets its own chain/island instead of sharing ait-mainnet
- Update environment files with node-specific configuration
- Remove psycopg2 from dependencies (compilation requires pg_config.h)
- Set default MEMPOOL_BACKEND=memory to avoid PostgreSQL
- Fix build error: fatal error: pg_config.h: No such file or directory
- Install from root pyproject.toml to get all dependencies
- Then install blockchain-node package in editable mode
- Fix ModuleNotFoundError: No module named 'sqlmodel'
- Install package via pip install -e apps/blockchain-node
- Fix ModuleNotFoundError: No module named 'aitbc_chain'
- Ensure Python can find the blockchain node module
- Auto-update existing repository via git pull instead of prompting
- Prevent script from hanging on existing directory
- Allow non-automated deployment in containers
- Add deployment script for integrated blockchain node with mempool support
- Create comprehensive setup documentation from scratch
- Add agent workflow for automated deployment
- Support both bare metal and container deployments
- Include verification steps and troubleshooting guide
- Provide configuration templates for hub and follower nodes
- Renamed aitbc-ai-service to aitbc-ai
- Renamed aitbc-edge-api to aitbc-edge
- Updated pyproject.toml files with new package names
- Renamed directories and package modules
- Updated references in documentation and scripts
- Updated systemd service references
- Renamed ai-service to aitbc-ai-service
- Renamed edge-api to aitbc-edge-api
- Updated pyproject.toml files with new package names
- Renamed directories and package modules
- Updated references in documentation and scripts
- All internal packages now follow aitbc- naming convention
- gitea-runner lacks SSH access to aitbc1, causing false RPC unhealthy errors
- Replace ssh node 'curl http://localhost:PORT' with direct curl http://hostname:PORT
- All nodes (aitbc, aitbc1, gitea-runner) now use their hostnames for RPC checks
- Also fixes verify_consensus to use same direct HTTP pattern
- Fixed verify-monitoring.sh to check aitbc-monitoring.service instead of deleted aitbc-monitor.service
- Fixed setup-automated-alerts.sh to enable/start aitbc-monitoring.service instead of deleted aitbc-monitor.service
- Added configure_logging to __all__ exports in aitbc/__init__.py
- Updated adaptive_learning_app.py import to use contexts.ai_analytics.services path
- Fixed aitbc-hermes-wrapper.py PYTHONPATH to use examples/stubs/hermes-service
- Added /opt/aitbc to PYTHONPATH in systemd service files (api-gateway, governance, gpu, trading)
- Changed bare except clauses to specific exception types in web3_utils.py, testing.py, messages.py, and message_storage.py
- Replaced print() calls with logger in testing.py, agent_discovery.py, compliance_agent.py, coordinator.py, trading_agent.py, keys.py, escrow.py, persistent_spending_tracker.py, sync_cli.py, and client.py
- Added logger initialization using get_logger(__name__) in compliance_agent.py, coordinator.py, trading_agent.py, keys.py, escrow.py, persistent_spending_tracker.py, and client.py
- Removed hardcoded secret
- Created aitbc/_version.py with centralized version definition
- Updated aitbc/__init__.py to import __version__ from _version module
- Updated constants.py to use __version__ for PACKAGE_VERSION
- Replaced print() calls with logger in decorators.py, events.py, queue_manager.py, and state.py
- Added logger initialization using get_logger(__name__) in config.py, decorators.py, events.py, queue_manager.py, and state.py
- Added cli/commands
- Added WORKSPACE env variable to all workflow jobs
- Changed hardcoded workspace paths to use ${{ env.WORKSPACE }}
- Added pull_request path filters to blockchain-sync-verification.yml
- Updated cross-chain-tests.yml path filters to apps/blockchain-node/** and scripts/multi-node/**
- Removed ait-devnet from default chains in cross-chain-tests.yml
- Disabled test-cross-chain-bridge job (test file not implemented)
- Removed test-cross-chain-bridge from aggregate
- Add Stage 10 (Failure Recovery) and Stage 11 (Agent Communication) to training README
- Update stage coverage from 9 to 11 comprehensive training stages
- Update last modified date to 2026-05-07
- Replace atomic-swap CLI commands with contract deploy and call commands in scenario 42
- Add contract deployment steps for CrossChainAtomicSwap on both chains
- Update initiateSwap, completeSwap, get
- Created generate_certificates.py:
- Generates shields.io markdown badges for each completed stage
- Creates HTML certificates with styled formatting
- Generates summary certificate for completing all stages
- Produces Markdown summary with all badges
- Updated master_training_launcher.sh:
- Added BADGE_DIR and HTML_CERT_DIR variables
- Enhanced view_certificates() to display badges and HTML cert paths
- Added option to start HTTP server for viewing HTML certificates
- Shows badges summary in certificate viewer
- Generated badges and HTML certificates for stages 1-10
- Use /var/lib/aitbc/agent_coordinator.db for persistent storage
- Add agents and agent_assignments tables to database schema
- Implement agent registration endpoint with capabilities and services
- Add agent discovery endpoint with filtering by type, capabilities, and services
- Implement agent status updates and heartbeat mechanism
- Add task-to-agent assignment with least_connections load balancing strategy
- Update
- TOTAL_STAGES=11
- Added Stage 10 to get_stage_name() and menus
- Updated for loops to {0..10}
- Updated usage messages to [0-10]
- Fixed regex to match stage 10: ^(10|[0-9])$
Add real-time AITBC service log monitoring command to Stage 10:
- Added journalctl -fu aitbc-* to JSON examples (monitors all AITBC services)
- Added to output_stage_learnings() commands list
- Updated pitfalls to mention journalctl as primary log monitoring tool
This command provides real-time monitoring of all AITBC services
(blockchain-node, agent-coordinator, etc.) in a single view.
Address Hermes-identified training gaps with new advanced stage:
Stage 10 covers:
- Transaction failure debugging (nonce too low, insufficient funds)
- Node failure recovery procedures
- Wallet backup and restore operations
- Production monitoring (metrics, logs, health checks)
- Advanced debugging tools (mempool inspection, transaction tracing)
- Backup and restore procedures (database, configuration)
- Network partition handling
Implementation:
- Created stage10_failure_recovery.sh with output_stage_learnings()
- Created stage10_failure_recovery.json with 7 sections covering failure scenarios
- Updated master_training_launcher.sh to include stage10 in get_stage_name()
- Updated stage selection prompts to allow [0-10]
- Updated --stage and --with-skill-update validation for stage 10
- Added stage 10 to playground menu stage list
Training-to-skill pipeline verified:
- Learnings JSON created successfully
- Certificate generated
- capture_learnings() validates and reports to Hermes agent
Note: Python training setup JSON execution has structure mismatch
(missing 'title' field), but stage completes successfully and
learnings are captured via output_stage_learnings().
- Fix REPO_ROOT path in stage8 and stage9 scripts
- Remove --json flag from Python command (use positional arg)
- Stages 8-9 now run successfully with --with-skill-update
- All 9 stages now generate learnings files correctly
Bug: Learnings file was created but disappeared after script exit because
SCRIPT_DIR was undefined in training_lib.sh context.
Fix: Use REPO_ROOT to construct path to training state directory:
- Changed from /.training_state
- To /scripts/training/.training_state
This ensures the learnings file is created in the correct location where
capture_learnings() in master_training_launcher.sh can find it.
Add learning capture and skill update mechanism to AITBC training system:
Phase 1 - Learning Capture Function:
- Add capture_learnings() function to master_training_launcher.sh
- Reads learnings JSON from stage scripts
- Validates JSON structure
- Calls hermes-tools skill-manage to update agent skills
- Stage 1 creates skill, subsequent stages update it
- Falls back to JSON-only if hermes-tools unavailable
Phase 2 - Optional Skill Update Flag:
- Add --with-skill-update CLI flag
- Set ENABLE_SKILL_UPDATE global variable
- Support flag combination with --stage and --complete
- Default behavior: save learnings JSON without skill update
Phase 3 - Integration:
- Call capture_learnings() after certificate generation
- Pass ENABLE_SKILL_UPDATE to control skill update behavior
- Integrated into run_stage() function
Phase 4 - Helper Function:
- Add output_stage_learnings() to training_lib.sh
- Accepts stage number, name, commands, pitfalls, key_paths, concepts
- Creates structured JSON learnings file
- Saves to .training_state/learnings_stageN.json
Phase 5 - Stage Script Learning Output:
- Add learning output to all stage scripts (0-9)
- Each stage defines stage-specific learnings
- Format: commands, pitfalls, key_paths, concepts
- Called at successful stage completion
This enables new agents on new AITBC nodes to automatically persist
training knowledge via the hermes-tools skill management system.
- Add debug output in view_certificates() to show certificate directory path
- Display count of found certificate files
- Show directory contents when no certificates found for troubleshooting
- Make stage6_agent_development.sh executable
- Make stage7_cross_node_training.sh executable
Created placeholder shell scripts for stages that only had JSON definitions:
- stage0_environment_setup.sh - Environment setup and prerequisites
- stage8_advanced_agent_specialization.sh - Bounty systems, portfolio management, knowledge graph marketing
- stage9_multi_chain_architecture.sh - Cross-chain operations and multi-chain deployment
These scripts use the Python-based training setup to execute JSON-defined operations,
allowing the complete training program (stages 0-9) to run without errors.
Changes:
- Fix certificate viewing display issue in master_training_launcher.sh
- Use array to store certificate files for reliable iteration
- Add error handling for read command
- Ensure CERT_DIR exists before checking for certificates
- Fix certificate selection using array index instead of head/tail
- Add wallet funding script (scripts/training/fund_wallet.sh)
- Fund wallets from genesis using genesis password
- Reads password from /var/lib/aitbc/keystore/.genesis_password
- Verifies genesis balance before funding
- Shows transaction hash and wallet balance after funding
- Add wallet funding documentation (docs/agent-training/WALLET_FUNDING.md)
- Genesis wallet details and password location
- Quick funding script usage
- Manual funding with AITBC CLI
- Faucet service information
- Common training wallets
- Troubleshooting guide
- Security notes
Added error handling to read commands to gracefully handle EOF
when script is run with piped input (e.g., echo "8" | script).
Changes:
- show_menu(): Added || choice="" to handle read failure
- main(): Added || start_choice="y" to default to yes if read fails
This prevents set -e from causing script to exit with error
code 1 when read commands reach EOF with piped input.
Removed unconditional 'main' call after case statement.
The case statement already handles the empty string case
by calling main, so the extra call was causing all
command-line arguments to be ignored and training to run.