--- title: Key Architectural and Technical Decisions type: curated permalink: main/projects/6f47523e-e22e-4cdd-bd18-76e5e474ee0c/curated/key-architectural-and-technical-decisions stable_id: 4f3555d5-bffb-45c9-9c35-a04e7c41800f scope: project project_id: 6f47523e-e22e-4cdd-bd18-76e5e474ee0c workspace_type: general usage_profile_id: null preference_context: general document_type: decisions revision: 1 source_memory_ids: [] source_checkpoint_ids: [] source_file_ids: [] source_git_commit: a066d95b43240f85f5abcf18305c2edfe1da91a3 source_git_commits: - a066d95b43240f85f5abcf18305c2edfe1da91a3 source_agent_sync_ids: [] model_connection: Sub2API model_name: git-restore source_count: 52 source_revisions: memory:7687d956-f904-4629-bd5d-4f5b55ec2b84: '1' memory:98bc33f7-c293-4e7c-aca8-f54752e2d5fa: '1' memory:86452d01-8146-41aa-80f9-7d5481135394: '1' memory:61e30ee3-0e26-4d64-b00e-f77bc3a3fd60: '1' memory:afa3e76f-eb77-49b5-9769-6ba559026c35: '1' memory:1033d1fb-6d87-4009-8b39-498c8963f6aa: '1' memory:e61163f1-50db-49d4-839b-a8bdb67741c2: '1' memory:77f1fcf5-022f-47b4-a605-52c12ba91612: '1' memory:86a5a0e1-2536-48c2-b48a-5e6b8e85cd50: '1' memory:814d437d-2c21-4f02-b17b-97fd3ec03f7e: '1' source_dispositions: processed: 52 unchanged: 0 unsupported: 0 skipped: 0 cited_source_ids: - memory:77f1fcf5-022f-47b4-a605-52c12ba91612 - memory:86a5a0e1-2536-48c2-b48a-5e6b8e85cd50 - memory:814d437d-2c21-4f02-b17b-97fd3ec03f7e - memory:7687d956-f904-4629-bd5d-4f5b55ec2b84 - memory:98bc33f7-c293-4e7c-aca8-f54752e2d5fa - memory:86452d01-8146-41aa-80f9-7d5481135394 - memory:61e30ee3-0e26-4d64-b00e-f77bc3a3fd60 - memory:afa3e76f-eb77-49b5-9769-6ba559026c35 - memory:1033d1fb-6d87-4009-8b39-498c8963f6aa - memory:e61163f1-50db-49d4-839b-a8bdb67741c2 job_cited_source_ids: [] conflicts: [] supersedes: [] preferences: [] source_cursor: 700 source_hash: 425f69c7d615a0522a06a54c0b88e30cbb169b3da8e430a957345bc06a169bb7 prompt_version: 2026-08-12.3 schema_version: '3' curation_job_id: null created_at: '2026-08-12T17:42:31.241856+00:00' updated_at: '2026-09-23T14:58:50.230700+00:00' tags: - decisions restored_from_commit: 6a6a895eafcca6052e81a14fca103a42635dd1c2 --- | Dec# | Decision | Rationale | Source | |------|-----------|------------|---------| | 1 | FastAPI + Vue dedicated console | Decoupled architecture | `4f3555d5-bffb-45c9-9c35-a04e7c41800f` | | 2 | Replace `patch_ax9000.py` with formal `.patch` | Avoid fragile text replacement | `67e34406-4966-4e48-ab88-69e2fb15a144` | | 3 | FRPC UI bug fix, bump to r12 | UI consistency in Chinese | `77f1fcf5-022f-47b4-a605-52c12ba91612` | | 4 | Adopt single JSON‑Schema for config | Remove UI/backend mismatch | `67e34406-4966-4e48-ab88-69e2fb15a144` | | 5 | Lock Docker digest, Git SHA, `uv.lock` | Deterministic builds | `67e34406-4966-4e48-ab88-69e2fb15a144` | | 6 | Vault‑only credential store | Security compliance | `67e34406-4966-4e48-ab88-69e2fb15a144` | | 7 | FastAPI JWT auth scoped to 127.0.0.1 | Reduce external risk | `67e34406-4966-4e48-ab88-69e2fb15a144` | Decisions are presented in order of priority and are corroborated by the decision table in the memorandum.