- simulate.py: Import error function from utils with fallback implementation
- test_edge_advanced.sh: Remove --island-id flag from island leave commands (use positional argument)
- conftest.py: Add tests directory to Python path for test discovery
- Removes AITBC_FORCE_ENABLE_BLOCK_PRODUCTION, ENABLE_BLOCK_PRODUCTION, and enable_block_production environment variable overrides
- Block production is now controlled by env file settings (enable_block_production)
- Allows follower nodes to properly disable block production via configuration
- Clear env file at start to avoid appending duplicates when script runs multiple times
- Fixes issue where proposer_id was repeated many times in /run/aitbc/secrets/.env
- This was causing unwanted block production on follower nodes
- Update 01_preflight_setup.sh to create blockchain.env with defaults
- Update hermes preflight setup scripts to create blockchain.env with defaults
- Remove dependency on /opt/aitbc/.env which doesn't exist
- Fixed scripts/aitbc-cli to use correct module name aitbc_cli.core.main
- Prevents module resolution to hermes-agent or other cli packages
- Ensures AITBC CLI loads from correct aitbc_cli package
- Added symlink from /opt/aitbc/aitbc-cli to /usr/local/bin/aitbc-cli
- CLI now available system-wide without requiring /opt/aitbc in PATH
- Fixes hermes agent stumble when aitbc CLI not found
- Added error handling if symlink creation fails
- Provides manual PATH addition instructions as fallback
- Generate secure random passwords for all PostgreSQL database users
- Store passwords in /etc/aitbc/credentials/postgres_*_password files
- Update load-keystore-secrets.sh to load PostgreSQL passwords into runtime .env
- Set passwords for both new and existing users with ALTER USER
- Fixes PostgreSQL authentication failures in services
- Ensures secure password management for database access
- Added libpq-dev to apt-get prerequisites for psycopg2 compilation
- Added postgresql-devel to yum prerequisites for psycopg2 compilation
- Added fallback installation of psycopg2-binary when Poetry fails
- Added fallback installation of critical packages (fastapi, uvicorn, sqlmodel)
- Prevents service crashes due to missing psycopg2 module
- Ensures PostgreSQL database connectivity for services
- Added error handling for python3 secrets module failures
- Added OpenSSL fallback for credential generation
- Added timestamp-based fallback if both python3 and openssl fail
- Added fallback for proposer_id generation if not in .env
- Improved logging for each credential generation step
- Prevents setup failures when python3 secrets module unavailable
- Ensures credentials are always generated with fallback methods
- Added call to load-keystore-secrets.sh in setup_credentials function
- Generates /run/aitbc/secrets/.env during setup
- Required by blockchain-node and blockchain-rpc systemd services
- Added error handling if secrets generation fails
- Prevents service startup failures due to missing runtime secrets
- Fixes hermes setup stumble where services failed to start
- Added redis-server and redis-cli to prerequisite command checks
- Added installation cases for Redis (redis-server, redis-tools) for apt-get
- Added Redis to yum installation batch
- Redis is required for gossip configuration
- Ensures Redis is available for P2P network setup
- Add error handling for venv activation (both new and existing)
- Add error handling for pip upgrade (continues if fails)
- Add error handling for Poetry installation
- Add error handling for poetry install command
- Provide manual recovery instructions for each failure point
- Prevents script from failing completely on venv/poetry issues
- Improves hermes agent setup reliability
- Add automatic PostgreSQL service start if not running
- Add graceful handling of existing configs when venv creation fails
- Check for existing configs in /etc/aitbc before failing on venv error
- Provide manual recovery instructions when venv creation fails
- Change pyproject.toml error to warning to allow setup to continue
- Improves hermes agent setup experience by handling partial failures
- Added postgresql and psql to command checks
- Added python3-venv package check (tests venv module availability)
- Added installation cases for PostgreSQL (postgresql, postgresql-contrib, postgresql-client)
- Added installation case for python3-venv
- Updated apt-get and yum package managers to include these dependencies
- Fixes fatal venv setup error when python3-venv is missing
- Ensures PostgreSQL is available for database setup
- Updated git clone URL from Gitea to GitHub
- Updated deploy_common.sh download URL to GitHub
- Ensures public repository access for new installations
- Aligns with documentation that references GitHub as primary repo
- Added step-by-step progress markers [STEP X/10] for each setup phase
- Added clear completion markers with ✓ for each step
- Added STARTED and COMPLETED banners for easy detection
- Helps hermes agents track setup progress and identify stuck steps
- Improves debugging when setup hangs or fails
- Removed sudo from Node.js installation commands (curl ... | bash -)
- Script already runs as root (check_root enforced at start)
- Redundant sudo commands are unnecessary when script has root privileges
- Applied to both apt-get and yum package managers
- Updated Node.js installation commands to use sudo bash -
- Ensures proper execution when script is run with sudo
- Applied to both apt-get (deb.nodesource.com) and yum (rpm.nodesource.com)
- Follows standard NodeSource installation pattern
- Fixed GitHub raw URL in SETUP.md to use raw.githubusercontent.com format
- Updated setup.sh to automatically install missing prerequisites
- Added support for apt-get and yum package managers
- Auto-installs python3, pip3, git, systemd, nodejs, npm when missing
- Uses NodeSource repository for Node.js 24.x installation
- Improves hermes agent setup experience by reducing manual steps
- Updated Blockchain RPC port from legacy 8545 to current 8006
- Updated documentation files (SETUP.md, infrastructure README, etc.)
- Updated code files (config.py, wallet_adapter.py, base.py, blockchain_simple.py)
- Updated scripts (production-setup.sh, production-deploy.sh, dashboard.sh)
- Updated test configuration (tests/README.md)
- Fixed service endpoints table in SETUP.md
- hermes agents will now use correct port 8006 for blockchain RPC
- Change supported_chains validation from exact match to substring check for comma-separated values
- Add hostname detection to run appropriate checks based on current node (aitbc vs aitbc1)
- Add bidirectional remote node checking (aitbc checks aitbc1, aitbc1 checks aitbc)
- Update log messages to reflect "includes" rather than exact match semantics
- Add warning for unknown hostnames with fall
- Updated CI workflows to track poetry.lock instead of requirements.txt
- Removed check-requirements-sync.py step from python-tests.yml
- Updated dependency_scanner.py default from requirements.txt to pyproject.toml
- Replaced all print() with click.echo() in deploy_edge_node.py (CLI script)
- Replaced print() with logger.warning() in zk_cache.py
- Updated setup.py files to read dependencies from pyproject.toml via tomli
- Removed
- Set ENABLE_BLOCK_PRODUCTION=true to enable block creation
- Add BLOCK_PRODUCTION_CHAINS to specify which chains produce blocks
- Add PROPOSER_ID to set the block proposer identity
- Fixes heartbeat block creation on blockchain nodes
- Add fund_wallet function to directly update database with initial balance
- Bypasses SQLite INTEGER overflow by using direct database update
- Funds genesis wallet with 1 million tokens after node deployment
- Called in main deployment flow after systemd service setup
- Remove genesis allocation to work around SQLite INTEGER overflow
- Wallet generation now creates wallet without initial coin allocation
- Wallet can be funded via blockchain API after node startup
- Genesis allocation funding to be implemented separately
- Set initial wallet balance to 1 million tokens
- Compatible with BigInteger Account model fix
- Wallet receives initial coin allocation from genesis block
- Generate wallet with private/public keys during node deployment
- Create genesis allocation file with wallet address and initial coins
- Wallet receives 1 billion tokens from genesis block
- Save wallet to keystore for later use
- Replace genesis block generation with wallet+genesis generation
- 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