Repository navigation
Releases: BerryUIKI/Axiara
Releases · BerryUIKI/Axiara
Release list
Axiara v0.1.1
Added
- Skills (
skills/):axiara-onboarding(create/join dual-path init, pre-filled inference),csv-data-import(template validation, manifest & ledger),price-crawler(robots-protocol, 7-step pipeline) + infrastructure (validation/verification scripts, YAML configs: sources/adapters/normalization/settings, references, assets, LICENSE). - Docs: skill-requirements (backlog, platform scope, decisions D-SK1–11, implementer split), crawler-spec (commodity price crawler), data-sources (source registry template + candidates), workspace-config (create/join + config templates + pre-filled inference), learning-plan (learn_db training plan), training-scenarios (S1–S13), learn-sync (hub model) + learn-sync-text / learn-sync-sql (implementation variants), development-handoff (Batch 1 brief).
- Multi-user learning (hub model): personalized tuning library → weekly manual upload → central training Agent review → admin confirmation → public library; upload triggers ("upload my data" / "re-submit" / "submit my library"), date + user-id export (
learn_inbox/<user-id>/<yyyymmdd>/bundle.yaml), data-repo branch rules (protectedmain, per-useruser/<user-id>branches,archive/branch, branch-strategy choice A/B with default A, scale thresholds + dynamic monitoring, migration paths Git A→B→SQL, inactive-branch archiving). - Decision records: D-SK1–D-SK11 (platform scope, crawler triggers, sources, init model, training report output, single-source skills, AI-friendly format, upload/branch rules, dynamic scale monitoring, inactive-branch archiving).
- Batch 1 implementation (PR #25): storage layer (
core/storage/—permissions.pydefense-in-depth write permission,cache.pySQLite cache,manifest.pySHA-256 manifest,git_sync.py,file_backend.py), crawler engine (core/crawler/— 7-step pipeline: prepare/fetch/parse/normalize/store with robots check + user confirmation), init script enhancement (--default-currency, language→currency inference,workspace.config.yamlexport), deps (httpx/beautifulsoup4/lxml/pyyaml), tests (42 passing). - Batch 2 implementation (PR #32): costing engine (
core/costing/—engine.pymulti-dimensional cost model with formulatotal = material + labor + loss + processing,UnitConverterfor weight/length/area/volume conversions, read-only access via storagePermissionManager, graceful degradation on missing data) + quotation generator (core/quote/—generator.pyMode 3.2 smart quotation with three-tier pricing (low/mid/high), constraint negotiation (min_margin, price_cap, price_floor), template adaptation (default + user-provided),LearningEventemission for approved/corrected quotes), tests (43 new: 155 total passing). - Batch 3 implementation (this PR): LangGraph agents (
src/axiara/agents/—state.pyAgentStateTypedDict,nodes.py9 agent nodes for four modes,graphs.py4 graph builders withinterrupt()support +MemorySavercheckpointer), FastAPI REST API (src/axiara/api/—main.pyendpoints for archive/query/quote/review + upload + review-confirm + health, Pydantic models, TestClient support), APScheduler jobs (src/axiara/scheduler/—jobs.pyweekly upload reminder, optional weekly crawler refresh, monthly scale health report, archive detection), tests (42 new: 197 total passing). - Batch 4 implementation (this PR): multi-user learning sync hub model (
core/learnsync/—user_id.pystable user identity with machine-code fallback,bundle.pyYAML export with provenance & validation,upload.pymanual upload flow with user confirmation & user/ branch push,review.pycentral review (ingest → compare → propose → admin confirm → apply),monitor.pydynamic scale monitoring (rolling 90-day metrics, 🟢/🟡/🟠/🔴 tier classification, Git→SQL migration proposals),archive.pyinactive-branch archiving (180-day idle detection, admin-confirmed archive merge, reactivation with seed)), init script new fields (--user-id,--branch-strategy A|B,--enable-branch-archive), tests (70 new: 112 total passing). - Batch 2/3 task briefs (this PR):
development-handoff.md§8 Task 5 (costing engine + quotation generator — multi-dimensional cost model, three-tier quoting, template adaptation, learning feedback loop) and §9 Task 6 (LangGraph four-mode graphs +interrupt()confirm, FastAPI app, APScheduler jobs). - Review engine implementation (this PR): anomaly-detection engine (
core/review/—engine.pyReviewEnginewith tunableReviewThresholds; Mode 1.3 three-way cross-check (main/learn/market): price anomalies (±25% default, ±50% high), missing processes, stale prices (30-day default), missing baselines; Mode 4 cost-table validation: abnormal high/low vs baseline, market-band check, unvalidatable rows; read-only — never writes main_db), agent nodes wired (edit_review_node/user_review_agent_nodeproduce structuredreview_suggestionswith severity + confirmation gate), tests (28 new: 234 total passing).
Changed
- Initialization model: create vs join — everything pre-filled from inference (currency by language, timezone by OS, date/quote formats), confirm-or-edit;
workspace.config.yamlauto-exported. - Document discipline: docs must be updated before push (including README + 9 locales); changes tracked in
.workbuddy/doc-sync-todo.md. - Learned-data format: AI-friendly first — YAML preferred, JSON only for machine exchange.
- Doc sync (2026-08-05): README + 9 locales updated (Skills, multi-user hub, docs index, roadmap); AGENTS.md hard rule "docs must be updated before push"; PLAN.md D-SK1–11 reference;
.data.template/README.mdstore layout;auto-release.ymlrelease notes now read from CHANGELOG version entries. - Batch 4 doc sync (2026-08-05): README + 9 locales — roadmap checkbox for the multi-user learning hub ticked, "what's implemented" section now lists
core/learnsync/and 112 tests (catch-up after PR #29). - Batch 3 hotfix (2026-08-05): utf-8 reads for crawler YAML (
pipeline.py/prepare.py— fixes Windows gbkUnicodeDecodeErroron Chinese YAML); graph entry routing via_archive_route/_quote_routeonuser_input.action(fixesunhashable type: dictfromdispatcher_node),edit_reviewconditional edge"__end__": END; APIainvokecalls passconfigurable.thread_id(checkpointer requirement); schedulerregister_jobs()idempotent viaremove_all_jobs()(fixes duplicate registration 44≠4); tests updated (test_schedulerasync,test_agentsthread_id). Full suite: 206 passing. - Trigger-word localization (2026-08-05): upload triggers localized per locale — English docs now use "upload my data" / "re-submit" / "submit my library" (DE/ES/FR/JA/KO/PT/RU locales in their own languages; zh-CN/zh-TW keep Chinese); "专属调教库" → "personalized tuning library", "唯一机器码" → "unique machine code" (README + 8 locales,
docs/learn-sync*.md,docs/skill-requirements.mdD-SK9). Cleanup:output/*.jsonruntime artifacts gitignored (keepsoutput/.gitkeep). - P0+P1 hardening batch (2026-08-06, PRs #37–#43): deprecated
datetime.utcnow()→datetime.now(timezone.utc)across all modules (fixes Python 3.12 deprecation; includes timezone-aware comparison fixes in crawlerprepare.py&learnsync/monitor.py); unifiedDataLayerenum (single source incore/storage/permissions.py, was defined in 4 files); dependency upper bounds added (fastapi<1, langgraph<1, pandas<3, etc.); storage hardening (file_backendpermission manager always initialized, SQLite WAL mode for FastAPI concurrency,git_sync.push()no longer autoadd -A— only commits staged files); crawlerFetcherreuses a pooledhttpx.Client(was new client per retry); quote_build_items()now reports real process costs fromCostResult(was hardcoded 0.0);build_review_graphnow passesMemorySavercheckpointer;_quote_routedefaults to safe "quote" instead of "batch_fill"; API uses per-requestthread_id(uuid); version synced to 0.2.0; README + PLAN roadmap updated; CItest.ymladded (ruff + pytest coverage). Full suite: 205 passing (1 pre-existingoutput/permission flake). - Dev scripts relocation (2026-08-06): moved
docs/developer/i18n_svg.py+i18n_dicts.pyintodocs/developer/scripts/(dev-only reorganization; VI-GUIDE commands, dev README repo layout, and in-script path resolution —BASE,--extractoutput — updated accordingly; verified zero asset churn).
Axiara v0.1.0
Automated release from main (54e4680)
GitHub automatically attaches source archives (zip / tar.gz) to this release.