--- title: Global Development Workflows type: curated permalink: main/global/curated/7aee455b-24cc-4008-bdaf-443721e6f939/global-development-workflows stable_id: e4fc35f2-1606-4b79-9c1e-367edeea97d0 scope: global project_id: null workspace_type: global usage_profile_id: 0c9feb46-d06e-43cd-9ef0-c5813c84a998 preference_context: global document_type: workflows revision: 1 source_memory_ids: - d8161df6-3159-46c9-9402-c5ab30d1436e source_checkpoint_ids: [] source_file_ids: [] source_git_commit: null source_git_commits: [] source_agent_sync_ids: [] model_connection: Sub2API model_name: git-restore source_count: 90 source_revisions: memory:5ed86f53-b53e-4534-8e51-d3a010069d5e: '2' memory:105b328f-4bda-4641-90a7-7282ef156316: '2' memory:3f91189b-11a1-45bb-8357-4f413dc1609d: '1' source_dispositions: processed: 90 unchanged: 0 unsupported: 0 skipped: 0 cited_source_ids: - curated_baseline:e4fc35f2-1606-4b79-9c1e-367edeea97d0 - cross_workspace_memory:df065dbf-85de-4f2b-bbb1-5d8b115de08c - cross_workspace_memory:9f00df57-ec45-4d63-9da6-9b2fb16c2d6b - cross_workspace_memory:0f19c98d-0d69-4702-af18-e75edae6370a - cross_workspace_memory:1dfbc803-3390-4cc7-9a17-6bf86c9bb165 - cross_workspace_memory:6e63a053-fea4-4785-984c-b61fab08810a - cross_workspace_memory:dd093dd7-71be-46a2-bcb1-4a87c3d4b9ab - cross_workspace_memory:dc70f54c-8e29-4834-a5c1-a63bc9ac9e68 - cross_workspace_memory:e1b8d25d-f638-4fbe-8a8d-0eda8f2d7d46 - cross_workspace_memory:6b129c78-a412-41e9-af9f-63ab071e03d9 - cross_workspace_memory:5924806e-b234-49f7-b971-3c844fd07cf3 - cross_workspace_memory:2bff13bb-b5cc-40fd-8b2f-774f5c6b9dba - cross_workspace_memory:61e30ee3-0e26-4d64-b00e-f77bc3a3fd60 - memory:5ed86f53-b53e-4534-8e51-d3a010069d5e - memory:105b328f-4bda-4641-90a7-7282ef156316 - memory:3f91189b-11a1-45bb-8357-4f413dc1609d job_cited_source_ids: - curated_baseline:e4fc35f2-1606-4b79-9c1e-367edeea97d0 conflicts: [] supersedes: [] preferences: [] source_cursor: 571 source_hash: b84354eb37ab531c5be3076d5c3f130399f235bc33c8cf9453cbfcecae042e49 prompt_version: 2026-08-12.3 schema_version: '3' curation_job_id: null created_at: '2026-08-08T07:55:35.371609+00:00' updated_at: '2026-09-23T14:50:02.231152+00:00' tags: - workflows - global restored_from_commit: 6a6a895eafcca6052e81a14fca103a42635dd1c2 --- # Global Development Workflow 1. **Project memory & Git process** - All notes are kept in `aidocs/project_context.md`. `aidocs/` is in `.gitignore` and never committed. - After completing a task, perform: delete temporary files, debug logs, unused code → update memory (what/why/validation/issues/next steps) → check `.gitignore` → commit with `type: 中文一句话描述`. Default is *commit only*; push only when explicitly requested. 2. **Credential Retrieval Workflow** - Before any login, SSH, database or API call, query Vaultwarden. If exactly one match, use it directly. If multiple or none, prompt for selection or manual input. - When adding or updating credentials, immediately write them to the password vault; memory records only the entry name, purpose, and usage method. 3. **Technical Notes** - **FastAPI async** – Never perform blocking I/O inside `async def`; change to normal `def` so FastAPI handles it in a thread‑pool. - **PowerShell JSON** – Write JSON to a temporary file and send with `curl.exe --data-binary @file` to preserve quotes. - **Large‑table SQL** – Add indexes on frequently queried text columns, raise DB `read/write_timeout` along with client `upload_timeout`/`run_timeout`. - **Docker exec timeout** – Obtain raw socket and call `socket.settimeout(None)` to disable default 3 s timeout. - **Docker Hub proxy** – Configure Docker Desktop to **Manual** with HTTP/HTTPS pointing to `http://127.0.0.1:7897` and restart Docker. 4. **Version & Deployment Rules** - For OTA, always use the official release version matching the device's ABI and keep the device’s firmware tightly coupled to the release channel. - Do not flash generic RK3568 images; use the project‑provided U‑Boot, DTB and RTL8367S/DSA configurations. 5. **Testing & Validation** - Regression tests should use real timestamps and ensure that the JSON output from `memrelay://capabilities` rendered via `jsonable_encoder` matches the raw resource structure. - FastAPI handlers that perform blocking I/O should be switched to synchronous functions.