- Use .get() with default value instead of direct dictionary access
- Default title: 'Stage {stage_number}'
- Fixes Stage 10 and other JSON stages without 'title' field
- Tested: Stage 10 now loads successfully
- 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.
- Remove duplicate malformed case statement causing syntax error
- Fix prerequisite check path from ../agent-training to ../docs/agent-training
- Fix path in both check_prerequisites() and check_all_prerequisites()
- Remove --force flag from genesis command (not supported)
- Read genesis password from /var/lib/aitbc/keystore/.genesis_password
- Fix faucet funding to use proper genesis password
Note: Script is deprecated in favor of Python-based setup
(aitbc.training_setup.cli), but these fixes make it work
with current CLI for backwards compatibility.
Certificate System:
- JSON certificates stored in .training_state/certificates/
- Includes stage number, name, completion timestamp, wallet name
- Unique certificate_id for each completion
- Version tracking for future updates
New Functions:
- get_stage_name() - Map stage number to name
- generate_certificate() - Create JSON certificate file
- display_badge() - ASCII art badge on completion
- view_certificates() - List and view earned certificates
- export_certificate() - Export certificate to home directory
Integration:
- Certificate generation in run_stage() on success
- Certificate viewing in main menu (option 7)
- Certificate viewing/exporting in playground menu (options 6-7)
- Certificates cleared on training state reset
Updates:
- Added CERT_DIR variable for certificate storage
- Initialize CERT_DIR in main()
- Updated .gitignore for certificates directory
- Menu options increased to accommodate certificate features
Usage:
- Certificates auto-generated on stage completion
- View via menu option 7 or playground option 6
- Export to home directory via playground option 7
Training Playground Features:
- Interactive playground mode with prerequisite validation
- Reset capability to clear progress and state
- Progressive training that skips completed stages
- Progress tracking via .training_progress file
- Sandbox state directory for safe experimentation
New Functions:
- load_progress() - Load completed stages from progress file
- save_progress() - Save completed stages to progress file
- reset_training_state() - Clear all progress and state
- check_prerequisites() - Integrate with generate_prerequisite_checks.py
- show_playground_menu() - Interactive playground menu
- check_all_prerequisites() - Validate all stages
- playground_run_stage() - Run stage with prerequisite check
- playground_run_complete() - Progressive complete training
Updates:
- TOTAL_STAGES increased from 7 to 10 (includes stages 0, 8, 9)
- Updated training stages list in overview
- Updated show_menu() to add playground option
- Updated run_complete_training() for stages 0-9
- Updated review_progress() to load from progress file
- Updated view_logs() for stages 0, 8, 9
- Added --playground command-line option
- Added .training_progress and .training_state to .gitignore
- Move validate_stage_dependencies.py to scripts/training/
- Move generate_prerequisite_checks.py to scripts/training/
- Scripts/training is the standard location for training-related scripts
Prerequisite Checker Script:
- Create generate_prerequisite_checks.py for validating stage dependencies
- Checks stage order (depends_on stages must come before current stage)
- Checks resource dependencies (resource_depends references valid stages)
- Checks wallet_balance placement (must appear before wallet+password operations)
- Checks currency fields (operations with amount/price must have currency)
- Generates bash prerequisite scripts for individual stages
Stage Fixes:
- Add currency field to transaction_send in stage1_foundation.json
- Remove stage4_marketplace_economics from stage3_ai_operations depends_on (circular dependency)
Validation:
- All stages (0-9) now pass prerequisite validation
- Script can be run: python3 docs/agent-training/generate_prerequisite_checks.py docs/agent-training
Stage 0: Environment Setup:
- Create stage0_environment_setup.json with genesis wallet validation
- Add genesis_wallet_check, genesis_password_check, genesis_balance_check operations
- Add node_connectivity_check, peer_connectivity_check operations
- Update training_schema.json to include stage0_environment_setup in enum
Scenario Mappings:
- Update SCENARIO_STAGE_MAPPING.md to include Stage 0
- Add Stage 0 operations and purpose documentation
- Update current stage status for Stages 8 and 9 (both created)
- Mark Priority 1 and Priority 2 as completed in integration priority section
Schema enhancements:
- Add requires_balance_check property for operations with wallet+password
- Add requires_currency property for operations with amount/price parameters
- Add creates_resource property for operations that create IDs
- Add requires_resource property for operations that require IDs
Validation script:
- Create validate_stage_dependencies.py to check:
- Operations with wallet+password have wallet_balance check before them
- Operations with amount/price parameters have currency field
- Operations requiring resources have corresponding create operations
Stage fixes:
- Stage 2: Add wallet_balance check at beginning, add currency to wallet_send and staking_stake
- Stage 3: Add wallet_balance check at beginning, add market_gpu_register for listing_id dependency
- Update RESOURCE_CREATORS to handle multiple resources per operation
- Add multi_chain_island_setup as island_id creator for Stage 9
- Update workflow paths from docs/openclaw to docs/hermes
- Rename skill prefixes from openclaw-* to hermes-*
- Update agent skill references in refactoring and analysis docs
- Rename OPENCLAW_AITBC_MASTERY_PLAN.md to reflect hermes branding
- Update CLI examples and command references throughout documentation
- Add currency field (AIT) to all pricing parameters (market_gpu_register, market_bid, market_sell)
- Fix market_bid to reference gpu_id instead of listing_id (GPU-specific)
- Fix market_buy to reference gpu_id instead of listing_id for consistency
- Add market_my-listings operation to check seller's own listings
- Add economics_model operation for price prediction (model_type, features)
- Add wallet_balance check at beginning of marketplace operations
- Add stage4_marketplace_economics to depends_on (AI operations need GPU listings from marketplace)
- Make ai_training_agent operation optional (gpu_listing may not exist)
- Add resource_depends field to training_schema.json for cross-stage resource dependencies
- Add ai_jobs check after ai_submit to verify job appears in listing
- Add finetune_status polling after finetune_submit for job monitoring
- Add depends_on validation documentation to training_schema.json (verify prerequisite stages mastered)
- Add performance validation to network_ping (max_latency_ms: 100)
- Add wallet_balance check after wallet_send to verify transaction deduction
- Add mining_rewards verification after mining_stop to confirm rewards collected
- Move wallet_delete to end of operations array to prevent subsequent operations from failing
- Add curriculum fields to stages 7, 8, 9 (difficulty, skill_level, depends_on, skills, objectives)
- Add missing agent types to README (specialized, architect)
- Fix schema inconsistency in ENVIRONMENT_SETUP.md - update example to use official training_schema.json format
- Fix Stage 1 integration test - remove wallet_fund from operations, use existing operations
- Make messaging_send operation optional in Stage 1 (messaging configuration is optional per ENVIRONMENT_SETUP.md)
- Update scenario references in all stage files to point to correct directory (/docs/scenarios/)
- Add agent type definitions section to README.md (coordinator, genesis, follower, wallet, general)
- Clarify setup_method in Training Schema section - stages use Python-based setup system (aitbc.training_setup module) rather than individual shell scripts
- Fix Python version requirement from 3.10+ to 3.13.5 in Prerequisites
- Add skills field to training schema
- Add skill_level field to training schema (novice/apprentice/practitioner/expert/master)
- Add objectives field to training schema
- Add certifications field to training schema
- Add curriculum fields to stage1_foundation.json (skills, skill_level, objectives, certification)
- Add curriculum fields to stage2_operations_mastery.json (skills, skill_level, objectives, certification)
- Add curriculum fields to stage3_ai_operations.json (skills, skill_level, objectives)
- Add curriculum fields to stage4_marketplace_economics.json (skills, skill_level, objectives)
- Add curriculum fields to stage5_expert_operations.json (skills, skill_level, objectives)
- Add curriculum fields to stage6_agent_identity_sdk.json (skills, skill_level, objectives)
- Add integration_tests field to validation section
- Add coverage_target field for test coverage percentage
- Add coverage_report field for coverage reporting
- Add mock_data section with wallets, addresses, transactions
- Add integration test example to stage1_foundation.json
- Add coverage target and report to stage1_foundation.json
- Add mock data example to stage1_foundation.json
- Add examples field to operation schema (CLI command examples)
- Add errors field to operation schema (expected errors and resolution)
- Add verify field to operation schema (verification commands)
- Add resources field to operation schema (learning resource links)
- Add documentation examples to wallet_create operation in stage1_foundation.json
- Add idempotent field to operation schema
- Add check_exists field for resource existence validation
- Add verify_on_chain flag for transaction verification
- Add confirmations_required field for block confirmations
- Add timeout_seconds field for on-chain verification timeout
- Add retry configuration (max_attempts, backoff_seconds, retryable_errors)
- Add max_memory_mb to performance metrics
- Add validation examples to wallet_create operation (idempotent, check_exists, performance)
- Add validation examples to transaction_send operation (verify_on_chain, retry, performance)
- Add depends_on field to training schema for stage dependencies
- Add difficulty field to training schema (beginner/intermediate/advanced/expert)
- Add estimated_time_minutes field to training schema
- Add structural fields to stage1_foundation.json (beginner, 30min, no dependencies)
- Add structural fields to stage2_operations_mastery.json (beginner, 45min, depends on stage1)
- Add structural fields to stage3_ai_operations.json (intermediate, 60min, depends on stage2)
- Add structural fields to stage4_marketplace_economics.json (intermediate, 60min, depends on stage2)
- Add structural fields to stage5_expert_operations.json (advanced, 90min, depends on stage3, stage4)
- Add structural fields to stage6_agent_identity_sdk.json (advanced, 75min, depends on stage5)