{ "app": "pbls", "app_cn": "PBL Agent OS 验证原型(Phase 0/1)", "port": 9300, "host": "0.0.0.0", "port_source": "projects/pbls/env/test.json(唯一事实源,本文件与其同值 9300)", "debug": false, "password_key": "pbls$[env:PASSWORD_KEY]$2026", "logger": { "name": "pbls", "level": "INFO", "file": "$[workdir]$/logs/pbls.log", "max_bytes": 104857600, "backup_count": 10 }, "logging": { "level": "INFO", "dir": "logs", "rotate_mb": 50, "backup_count": 10, "audit_enabled": true }, "filesroot": "$[workdir]$/files", "databases": { "pbls": { "driver": "mysql", "kwargs": { "host": "127.0.0.1", "port": 3306, "user": "pbls", "password": "Pbls#Test2026", "database": "pbls", "charset": "utf8mb4" } } }, "db": { "engine": "mariadb", "host": "127.0.0.1", "port": 3306, "user": "pbls", "password": "Pbls#Test2026", "dbname": "pbls", "charset": "utf8mb4", "collation": "utf8mb4_general_ci", "tcp_only": true, "pool": { "min": 2, "max": 16, "idle_timeout": 600 } }, "website": { "root": "wwwroot", "indexes": [ "index.ui", "index.tmpl", "index.html" ], "processors": [ [ ".tmpl", "tmpl" ], [ ".ui", "bui" ], [ ".dspy", "dspy" ] ], "static": [ ".js", ".css", ".png", ".jpg", ".jpeg", ".gif", ".svg", ".ico", ".woff", ".woff2", ".ttf", ".map" ], "session": { "enabled": true, "timeout": 7200, "cookie_name": "pbls_sid" }, "upload": { "max_size": 104857600, "allow_ext": [ ".png", ".jpg", ".jpeg", ".gif", ".mp4", ".mp3", ".wav", ".pdf", ".docx", ".xlsx", ".json", ".zip", ".glb", ".gltf" ], "store_dir": "upload" } }, "module_dbname": { "apppublic": "pbls", "sqlor": "pbls", "ahserver": "pbls", "appbase": "pbls", "rbac": "pbls", "accounting": "pbls", "world": "pbls", "scene": "pbls", "entity": "pbls", "script_engine": "pbls", "scense_runtime": "pbls", "scense": "pbls", "scense_game": "pbls", "pbl_common": "pbls", "pbl_appcodes": "pbls", "pbl_governance": "pbls", "pbl_blueprint": "pbls", "pbl_template": "pbls", "pbl_validation": "pbls", "pbl_compiler": "pbls", "pbl_agent_runtime": "pbls", "pbl_evidence": "pbls", "pbl_assessment": "pbls", "pbl_domain_ext": "pbls", "pbl_scense_ext": "pbls", "pbl_runtime_ext": "pbls", "pbl_kdb_ext": "pbls", "pbl_analytics": "pbls" }, "load_order": [ "apppublic", "sqlor", "ahserver", "appbase", "rbac", "accounting", "world", "scene", "entity", "script_engine", "scense_runtime", "scense", "scense_game", "pbl_common", "pbl_appcodes", "pbl_governance", "pbl_blueprint", "pbl_template", "pbl_validation", "pbl_compiler", "pbl_agent_runtime", "pbl_evidence", "pbl_assessment", "pbl_domain_ext", "pbl_scense_ext", "pbl_runtime_ext", "pbl_kdb_ext", "pbl_analytics" ], "rbac": { "enabled": true, "anonymous_paths": [ "/api/public/health", "/favicon.ico" ], "roles": [ "owner.pbls", "admin.pbls", "teacher.pbls", "assistant.pbls", "student.pbls", "observer.pbls", "owner.audit" ] }, "agent_tools": { "arbitration": "fail-closed", "enabled_count": 13, "disabled_count": 9, "contract_doc": "projects/pbls/docs/01-design/agent-tool-contract.md", "deny_on": [ "not_in_whitelist", "invalid_params", "missing_tenant_context" ] }, "pbl": { "tenant_required": true, "fail_closed_on_missing_tenant": true, "validation_dimensions": 14, "quality_levels": 5, "append_only_tables": 11, "compiler_deterministic": true, "evidence_idempotent": true, "runtime_single_transaction": true, "kdb_write_allowed": false, "referenced_base_table_alter_allowed": false } }