| 0001 |
GAR-360 — Scaffold Inicial (Fase 1) |
GAR-360 |
✅ Merged |
| 0002 |
GAR-361 — Agentes e Providers (Fase 2.1) |
GAR-361 |
✅ Merged |
| 0003 |
GAR-362 — Channels (Fase 2.2) |
GAR-362 |
✅ Merged |
| 0004 |
GAR-363 — Plugins WASM (Fase 2.3) |
GAR-363 |
✅ Merged |
| 0005 |
GAR-364 — Fase 3.1 Postgres Multi-tenant Schema |
GAR-364 |
✅ Merged |
| 0006 |
GAR-365 — Fase 3.2 Auth JWT + RBAC |
GAR-365 |
✅ Merged |
| 0007 |
GAR-366 — Fase 3.3 Groups API |
GAR-366 |
✅ Merged |
| 0008 |
GAR-367 — Fase 3.4 Channels REST |
GAR-367 |
✅ Merged |
| 0009 |
GAR-368 — Fase 3.5 Storage S3 + LocalFS |
GAR-368 |
✅ Merged |
| 0010 |
GAR-386 — pgvector HNSW + memory_embeddings migration |
GAR-386 |
✅ Merged |
| 0011 |
GAR-388 — task system Tier 1 migration + RLS |
GAR-388 |
✅ Merged |
| 0011.5 |
GAR-391b — hash_upgraded_at prereq migration (009) |
GAR-391b |
✅ Merged |
| 0012 |
GAR-391c — extractor + wiring (/v1/auth/* default-on) |
GAR-391c |
✅ Merged |
| 0013 |
GAR-392 — Pure RLS matrix (81 cenários) |
GAR-392 |
✅ Merged |
| 0014 |
GAR-391d — App-layer cross-group authz via HTTP |
GAR-391d |
✅ Merged |
| 0015 |
GAR-393 — REST /v1 surface scaffold (OpenAPI + Swagger UI + /me) |
GAR-393 |
✅ Merged |
| 0016 |
GAR-393 slice 2 — Groups CRUD (/v1/groups) |
GAR-393 |
✅ Merged |
| 0017 |
GAR-393 slice 2b — Group Read + Update (GET/PATCH /v1/groups/{id}) |
GAR-393 |
✅ Merged |
| 0018 |
GAR-393 slice 2c — Group Invites (POST /v1/groups/{id}/invites) |
GAR-393 |
✅ Merged |
| 0019 |
GAR-393 slice 3 — Invite Accept (POST /v1/invites/{token}/accept) |
GAR-393 |
✅ Merged |
| 0020 |
GAR-394 — ObjectStore trait + LocalFs (storage slice 1) |
GAR-394 |
✅ Merged |
| 0021 |
GAR-408 — tus 1.0 uploads (Fase 3.5 slice 1) |
GAR-408 |
✅ Merged |
| 0022 |
GAR-412 — /metrics dedicated listener + Prometheus auth |
GAR-412 |
✅ Merged |
| 0023 |
GAR-411 — Rate limiter (Governor/tower-governor) |
GAR-411 |
✅ Merged |
| 0024 |
(renumbered → see 0022) |
— |
— |
| 0025 |
GAR-415 — Trusted proxy + real_client_ip |
GAR-415 |
✅ Merged |
| 0026 |
GAR-416 — Request-ID propagation |
GAR-416 |
✅ Merged |
| 0027 |
GAR-417 — Health check /health |
GAR-417 |
✅ Merged |
| 0028 |
GAR-418 — Graceful shutdown |
GAR-418 |
✅ Merged |
| 0029 |
GAR-419 — TLS termination (axum-server) |
GAR-419 |
✅ Merged |
| 0030 |
GAR-420 — Config watcher (hot reload) |
GAR-420 |
✅ Merged |
| 0031 |
GAR-421 — Cluster mode (multi-process) |
GAR-421 |
✅ Merged |
| 0032 |
GAR-422 — OpenTelemetry baseline |
GAR-422 |
✅ Merged |
| 0033 |
GAR-379 slice 1 — garraia config check |
GAR-379 |
✅ Merged |
| 0034 |
GAR-413 Stage 0 — migrate workspace scaffold |
GAR-413 |
✅ Merged |
| 0035 |
(renumbered → see 0033) |
— |
— |
| 0036 |
GAR-382 — update_mobile_user_hash lazy PBKDF2→Argon2id upgrade |
GAR-382 |
✅ Merged |
| 0037 |
GAR-394 slice 1 — ObjectStore trait + LocalFs baseline |
GAR-394 |
✅ Merged |
| 0038 |
GAR-394 slice 2 — S3Compatible backend |
GAR-394 |
✅ Merged |
| 0039 |
GAR-413 Stage 1 — users + user_identities migration |
GAR-413 |
✅ Merged |
| 0040 |
GAR-413 Stage 3 — groups + group_members migration |
GAR-413 |
✅ Merged |
| 0041 |
GAR-395 slice 1 — tus 1.0 Creation + Resume + OPTIONS |
GAR-395 |
✅ Merged |
| 0042 |
GAR-390 — garraia_signup BYPASSRLS role (migration 010) |
GAR-390 |
✅ Merged |
| 0043 |
GAR-389 — group_invites UNIQUE + single-owner idx (migrations 011-012) |
GAR-389 |
✅ Merged |
| 0044 |
GAR-395 slice 2 — tus PATCH commit (ObjectStore wire) |
GAR-395 |
✅ Merged |
| 0045 |
GAR-413 Stage 5 — chats + chat_members migration |
GAR-413 |
✅ Merged |
| 0046 |
GAR-379 slice 3 — AuthSection config knobs + fail-closed sentinel |
GAR-379 |
✅ Merged |
| 0047 |
GAR-395 slice 3 — tus DELETE + expiration worker + put_stream |
GAR-395 |
✅ Merged |
| 0048 |
GAR-427 — garraia migrate workspace Stage 2 (user_identities) |
GAR-427 |
✅ Merged |
| 0049 |
GAR-429 Lote Q.1 — clippy strict baseline (26 warnings cleared) |
GAR-429 |
✅ Merged |
| 0050 |
GAR-438 — CI pipeline fix (e2e + playwright binário correto) |
GAR-438 |
✅ Merged |
| 0051 |
GAR-444 — Playwright MCP spec → data-testid anchors |
GAR-444 |
✅ Merged |
| 0052 |
GAR-443 Lote 4 — Playwright spec migration to data-testid |
GAR-443 |
✅ Merged |
| 0053 |
GAR-458 — cargo-deny advisories gate (RUSTSEC triage) |
GAR-458 |
✅ Merged |
| 0054 |
GAR-506 — REST /v1 chats slice 1 (POST + GET /v1/groups/{id}/chats) |
GAR-506 |
✅ Merged |
| 0055 |
GAR-507 — REST /v1 messages slice 2 (POST + GET /v1/chats/{id}/messages) |
GAR-507 |
✅ Merged |
| 0056 |
GAR-508 — REST /v1 messages slice 3 (POST /v1/messages/{id}/threads) |
GAR-508 |
✅ Merged |
| 0057 |
GAR-462 — Security Audit gate (cargo audit --deny unsound) |
GAR-462 |
✅ Merged |
| 0058 |
GAR-463 — Coverage gate (cargo-llvm-cov soft-gate) |
GAR-463 |
✅ Merged |
| 0059 |
GAR-464 — Dependency Review gate |
GAR-464 |
✅ Merged |
| 0060 |
GAR-465 — Secret scan (gitleaks) |
GAR-465 |
✅ Merged |
| 0061 |
GAR-466 — MSRV check (1.92) |
GAR-466 |
✅ Merged |
| 0062 |
GAR-514 — memory API slice 1 (GET/POST/DELETE /v1/memory) |
GAR-514 |
✅ Merged |
| 0063 |
GAR-515 — memory slice 2 (pin/unpin) |
GAR-515 |
✅ Merged |
| 0064 |
GAR-500 — Quality Ratchet PR-1 scaffold |
GAR-500 |
✅ Merged |
| 0065 |
GAR-516 — tasks API slice 1 (task-lists + tasks CRUD) |
GAR-516 |
✅ Merged |
| 0066 |
(merged into 0065) |
— |
— |
| 0067 |
(merged into 0065) |
— |
— |
| 0068 |
GAR-518 — tasks slice 2 (PATCH + DELETE) |
GAR-518 |
✅ Merged |
| 0069 |
GAR-520 — tasks slice 3 (GET single task) |
GAR-520 |
✅ Merged |
| 0070 |
GAR-572 — audit API slice 1 (GET /v1/groups/{id}/audit) |
GAR-572 |
✅ Merged |
| 0071 |
GAR-522 — tasks slice 4 (task comments) |
GAR-522 |
✅ Merged |
| 0072 |
GAR-523 — tasks slice 5 (task assignees) |
GAR-523 |
✅ Merged |
| 0073 |
GAR-524 — tasks slice 6 (subscriptions) |
GAR-524 |
✅ Merged |
| 0074 |
GAR-528 — memory slice 3 (GET + PATCH /v1/memory/{id}) |
GAR-528 |
✅ Merged |
| 0075 |
GAR-525 — tasks slice 7 (task labels) |
GAR-525 |
✅ Merged |
| 0076 |
GAR-530 — chats slice 2 (individual chat ops + member CRUD) |
GAR-530 |
✅ Merged |
| 0077 |
GAR-533 — tasks slice 4b (task assignees API) |
GAR-533 |
✅ Merged |
| 0078 |
GAR-526 — tasks slice 8 (label assignments) |
GAR-526 |
✅ Merged |
| 0079 |
GAR-539 — tasks slice 6b (subscriptions API) |
GAR-539 |
✅ Merged |
| 0080 |
GAR-541 — tasks slice 9 (task activity log) |
GAR-541 |
✅ Merged |
| 0081 |
GAR-543 — tasks slice 10 (task comments full CRUD) |
GAR-543 |
✅ Merged |
| 0082 |
GAR-544 — tasks slice 11 (task move) |
GAR-544 |
✅ Merged |
| 0083 |
GAR-546 — tasks slice 12 (subtasks) |
GAR-546 |
✅ Merged |
| 0084 |
GAR-549 — unified FTS search (GET /v1/search) |
GAR-549 |
✅ Merged |
| 0085 |
GAR-551 — files API slice 1 (POST + GET /v1/groups/{id}/files) |
GAR-551 |
✅ Merged |
| 0086 |
GAR-553 — files API slice 2 (folders CRUD) |
GAR-553 |
✅ Merged |
| 0087 |
GAR-555 — files API slice 3 (file versions) |
GAR-555 |
✅ Merged |
| 0088 |
GAR-556 — files API slice 4 (file download) |
GAR-556 |
✅ Merged |
| 0089 |
GAR-557 — files API slice 5 (PATCH /v1/groups/{id}/files/{fid}) |
GAR-557 |
✅ Merged |
| 0090 |
GAR-558 — files API slice 6 (DELETE /v1/groups/{id}/files/{fid}) |
GAR-558 |
✅ Merged |
| 0091 |
GAR-559 — files API slice 7 (GET /v1/groups/{id}/files/{fid}) |
GAR-559 |
✅ Merged |
| 0092 |
GAR-560 — files API slice 8 (folder ops) |
GAR-560 |
✅ Merged |
| 0093 |
GAR-561 — files API slice 9 (file versions list) |
GAR-561 |
✅ Merged |
| 0094 |
GAR-562 — files API slice 10 (new version upload) |
GAR-562 |
✅ Merged |
| 0095 |
GAR-563 — files API slice 11 (folder get + patch + delete) |
GAR-563 |
✅ Merged |
| 0096 |
GAR-572 — tasks slice 9b (task attachments API) |
GAR-572 |
✅ Merged |
| 0097 |
GAR-574 — groups slice 2 (GET members + invites) |
GAR-574 |
✅ Merged |
| 0098 |
GAR-575 — groups slice 3 (set member role + delete member) |
GAR-575 |
✅ Merged |
| 0099 |
GAR-576 — groups slice 4 (delete group + leave group) |
GAR-576 |
✅ Merged |
| 0100 |
GAR-577 — messages slice 4 (GET /v1/messages/{id} + DELETE) |
GAR-577 |
✅ Merged |
| 0101 |
GAR-578 — tasks API slice 13 (task activity read) |
GAR-578 |
✅ Merged |
| 0102 |
GAR-579 — tasks slice 14 (task labels read + delete) |
GAR-579 |
✅ Merged |
| 0103 |
GAR-580 — invites slice 2 (GET + DELETE /v1/groups/{id}/invites) |
GAR-580 |
✅ Merged |
| 0104 |
GAR-581 — tasks slice 15 (GET /v1/groups/{id}/tasks/{tid}/subtasks) |
GAR-581 |
✅ Merged |
| 0105 |
GAR-580 — groups slice 5 (GET /v1/groups list) |
GAR-580 |
✅ Merged |
| 0106 |
GAR-582 — tasks slice 16 (unsubscribe from task) |
GAR-582 |
✅ Merged |
| 0107 |
GAR-592 — messages slice 5 (PATCH + DELETE /v1/messages/{id}) |
GAR-592 |
✅ Merged 2026-05-12 via PR #300 (3c843e4) |
| 0108 |
GAR-593 — chats slice 3 (GET /v1/chats/{id}/messages thread listing) |
GAR-593 |
✅ Merged |
| 0109 |
GAR-595 — messages slice 6: GET /v1/messages/{id} + GET /v1/messages/{id}/threads |
GAR-595 |
✅ Merged 2026-05-13 via PR #305 (e8cc44d) |
| 0110 |
GAR-599 — GET /v1/groups/{group_id}/task-lists/{list_id} + PATCH /v1/me |
GAR-599 |
✅ Merged 2026-05-13 via PR #307 (d43d025) |
| 0111 |
GAR-600 — patch-and-minor batch May 13: 17 dep upgrades (tokio, axum, hyper, tower-http, jsonwebtoken, uuid, …) |
GAR-600 |
✅ Merged 2026-05-13 via PR #309 (c9196ac4) |
| 0112 |
GAR-465 — Q6.3 Session TTL + Boundary Mutation Coverage |
GAR-465 |
✅ Merged 2026-05-13 via PR #312 (5197581) |
| 0113 |
GAR-601 — bump aws-actions/configure-aws-credentials v4 → v6 (Node20 deprecation) |
GAR-601 |
✅ Merged 2026-05-13 via PR #313 (4374623) |
| 0114 |
GAR-483 — Q6.6.b Debug-Redaction Tests for SignupPool + AppPool |
GAR-483 |
✅ Merged 2026-05-13 via PR #317 (fc138f3) |
| 0115 |
GAR-604 — DM creation via POST /v1/groups/{id}/chats with type=dm |
GAR-604 |
✅ Merged 2026-05-14 via PR #324 (4ce9d75) |
| 0116 |
GAR-605 — add actions language to CodeQL matrix (close 15 stale Medium alerts) |
GAR-605 |
✅ Merged 2026-05-14 via PR #323 (f6698c7) |
| 0116a |
Web Console redesign "Garra Glass" — Chat slice |
GAR-607 |
✅ Merged 2026-05-14 via PRs #330 (foundation), #331 (chat), #332 (right panel) |
| 0116b |
Web Console multi-page vision |
GAR-607 |
✅ Merged 2026-05-14 via PRs #333, #335, #337, #338, #339, #340 + plan 0123 finalization |
| 0117 |
GAR-618 — Web Console PR-4: Dashboard page + GET /api/stats |
GAR-618 |
✅ Merged 2026-05-14 via PR #334 (9e9deab) |
| 0118 |
GAR-612 — Web Console PR-5: /api/health + /api/capabilities |
GAR-612 |
✅ Merged 2026-05-14 via PR #335 |
| 0119 |
GAR-613 — Web Console PR-6: Providers page + /api/providers/{test,default} |
GAR-613 |
✅ Merged 2026-05-14 via PR #337 |
| 0120 |
GAR-614 — Web Console PR-7: Channels + Sessions pages + /api/channels |
GAR-614 |
✅ Merged 2026-05-14 via PR #338 |
| 0121 |
GAR-615 — Web Console PR-8: Settings Registry + /api/settings/{schema,effective} + PATCH /api/settings |
GAR-615 |
✅ Merged 2026-05-14 via PR #339 |
| 0122 |
GAR-616 — Web Console PR-9: Diagnostics + Logs pages + /api/diagnostics |
GAR-616 |
✅ Merged 2026-05-14 via PR #340 |
| 0123 |
GAR-617 — Web Console PR-10: E2E Playwright matrix + ROADMAP/README/CLAUDE finalization |
GAR-617 |
✅ Merged 2026-05-14 via PR #341 (e570631) |
| 0124 |
GAR-620 — bump metrics 0.24.5 (yanked) → 0.24.6 (health routine 2026-05-14) |
GAR-620 |
✅ Merged 2026-05-14 via PR #336 (adbe00af) |
| 0125 |
GAR-623 — docs(bookkeeping): plan 0123 / PR #341 self-ref fix — CLAUDE.md + ROADMAP + plans/README |
GAR-623 |
✅ Merged 2026-05-14 via PR #346 (079b2c6) |
| 0126 |
curl | sh auto-bootstrap PR-A: garraia init foundation |
TBD |
✅ Merged 2026-05-14 via PR #348 (6a2279e) |
| 0127 |
curl | sh auto-bootstrap PR-B: install.sh wiring |
TBD |
✅ Merged 2026-05-15 via PR #350 (bfddf78) |
| 0128 |
GAR-470 — Q9.b: extract admin/providers.rs from admin/handlers.rs (3240 → 2900 LOC) |
GAR-470 |
✅ Merged 2026-05-15 via PR #349 (eacbf9b) |
| 0129 |
GAR-471 — Q9.c: extract admin/mcp.rs from admin/handlers.rs (2900 → 2550 LOC) |
GAR-471 |
✅ Merged 2026-05-15 via PR #354 (17f68d0) |
| 0130 |
GAR-472 — Q9.d: extract admin/mcp_templates.rs (2550 → 2326 LOC) |
GAR-472 |
✅ Merged 2026-05-15 via PR #358 (1555b70) |
| 0131 |
GAR-473 — Q9.e: extract admin/observability.rs (2326 → 2103 LOC) |
GAR-473 |
✅ Merged 2026-05-15 via PR #360 (b862b72) |
| 0132 |
GAR-474 — Q9.g: extract admin/users.rs (2103 → 1738 LOC) |
GAR-474 |
✅ Merged 2026-05-16 via PR #362 (4c97276) |
| 0133 |
GAR-475 — Q9.f: extract admin/secrets.rs (1738 → ~1270 LOC) — security-audit required |
GAR-475 |
✅ Merged 2026-05-16 via PR #363 (4ab6821) |
| 0134 |
GAR-634 — Unblock tokio 1.52.3 via nix 0.31.3 + process-wrap 9.1.0 |
GAR-634 |
✅ Merged 2026-05-16 via PR #367 (40ee126) |
| 0135 |
GAR-635 — Q11 slice 1: extract rest_v1/tasks/task_lists.rs |
GAR-635 |
✅ Merged 2026-05-17 via PR #368 (c01bbd9) |
| 0136 |
GAR-635 — Q11 slice 2: extract rest_v1/tasks/comments.rs |
GAR-635 |
✅ Merged 2026-05-17 via PR #370 (8872026) |
| 0137 |
GAR-635 — Q11 slice 3: extract rest_v1/tasks/assignees.rs |
GAR-635 |
✅ Merged 2026-05-17 via PR #371 (efb295c) |
| 0138 |
GAR-641 — Garra Learning Agent / Self-Improving Operations Manual (epic + ADR 0010) |
GAR-641 (+10 sub: GAR-642..GAR-651) |
✅ Merged 2026-05-17 (planning only, ADR 0010 Proposed at time of merge) |
| 0139 |
GAR-635 — Q11 slice 4: extract rest_v1/tasks/labels.rs |
GAR-635 |
✅ Merged 2026-05-17 via PR #372 (62036a8) |
| 0140 |
GAR-653 — Q11 slice 5: extract rest_v1/tasks/subscriptions.rs |
GAR-653 |
✅ Merged 2026-05-17 via PR #376 (1be73cd) |
| 0141 |
GAR-655 — Q11 slice 6: extract rest_v1/tasks/activity.rs |
GAR-655 |
✅ Merged 2026-05-17 via PR #386 (a82ef2b) |
| 0142 |
GAR-656 — replace daemonize 0.5 with nix syscalls (RUSTSEC-2025-0069) |
GAR-656 |
✅ Merged 2026-05-17 via PR #382 (a5daf344) |
| 0143 |
GAR-658 — Q11 slice 7: extract rest_v1/tasks/attachments.rs |
GAR-658 |
✅ Merged 2026-05-17 via PR #388 (e04fc2c) |
| 0144 |
GAR-642 — Learning Agent Architecture: scaffold crate garraia-learning + ADR 0010 Accepted |
GAR-642 |
✅ Merged 2026-05-18 via PR #393 (9526368) |
| 0145 |
GAR-372 — Embeddings & Vector Search: scaffold garraia-embeddings |
GAR-372 |
✅ Merged 2026-05-18 via PR #396 (cfda7ad) |
| 0146 |
GAR-643 — Skill Miner: detect repeatable patterns in session logs |
GAR-643 |
✅ Merged 2026-05-18 via PR #400 (3bb473a) |
| 0147 |
GAR-644 — Skill Generator: LLM-assisted skill drafting |
GAR-647 |
✅ Merged 2026-05-18 via PR #402 (da65c63) |
| 0148 |
GAR-645 — Skill Registry: dual-scope persist, list, promote, deprecate |
GAR-645 |
✅ Merged 2026-05-18 via PR #404 (b67d030) |
| 0149 |
GAR-647 — Skill Evaluator: objective metrics + EMA score update |
GAR-647 |
✅ Merged 2026-05-18 via PR #406 (a79321b) |
| 0150 |
GAR-648 — Skill Auto-Updater: diff + branch + PR via gh, never auto-merge |
GAR-648 |
✅ Merged 2026-05-18 via PR #409 (0000c883) |
| 0151 |
GAR-650 — Skill Versioning/Rollback: git-tracked history + git revert |
GAR-650 |
✅ Merged 2026-05-19 via PR #414 (896b2fe) |
| 0152 |
GAR-668 — Health Run 2 (2026-05-19): RUSTSEC-2026-0145 merged + tokio-tungstenite 0.29 upgrade |
GAR-668 |
✅ Merged 2026-05-19 via PR #433 (51382a9c) |
| 0153 |
GAR-494 — garra max-power skeleton CLI subcommand |
GAR-494 |
✅ Merged 2026-05-19 via PR #431 (8a9a915) |
| 0154 |
GAR-497 — Bash Safety Gate: centralize denylist in garraia-common |
GAR-497 |
✅ Merged 2026-05-19 via PR #437 (f2ab1d9) |
| 0155 |
GAR-501 — garra verify — local idempotent validation pipeline |
GAR-501 |
✅ Merged 2026-05-19 via PR #441 (ca9f1fa2) |
| 0156 |
GAR-651 — Learning Agent Web UI: skills + learning-logs pages in Garra Glass |
GAR-651 |
✅ Merged 2026-05-20 via PR #443 (21a13f1) |
| 0157 |
GAR-500 — Auto Dream / handoff via .garra-estado.md |
GAR-500 |
✅ Merged 2026-05-20 via PR #445 (f1fb596) |
| 0158 |
GAR-669 Slice 1 — rand_chacha 0.9 + rand 0.9 co-bump (garraia-workspace dev-deps) |
GAR-669 |
✅ Merged 2026-05-20 via PR #446 (d9f811ac) |
| 0159 |
GAR-669 Slice 2 — windows-sys 0.52 → 0.61 (garraia-cli + HANDLE type fix) |
GAR-669 |
✅ Merged 2026-05-20 via PR #451 (1e7ce50) |
| 0160 |
GAR-495 — Capability prompt nativo: provider-agnostic runtime description for garra max-power |
GAR-495 |
✅ Merged 2026-05-21 via PR #453 (e5a2a08) |
| 0161 |
GAR-496 — Repo workflow seguro: safe git/gh wrappers with protected-branch + clean-tree guards |
GAR-496 |
✅ Merged 2026-05-21 via PR #455 (1b7f04c) |
| 0162 |
GAR-678 — REST /v1/chats SSE stream — GET /v1/chats/{id}/stream |
GAR-678 |
✅ Merged 2026-05-21 via PR #459 (d25b64c) |
| 0163 |
GAR-679 — SSE rate-limit per user on /v1/chats/{id}/stream (DoS hardening) |
GAR-679 |
✅ Merged 2026-05-21 via PR #466 (0513149) |
| 0164 |
GAR-456 partial fix — jsonwebtoken rust_crypto → aws_lc_rs (removes rsa 0.9.10 from compiled tree) |
GAR-456 |
✅ Merged 2026-05-22 via PR #469 (partial; root blocker deferred to sqlx 0.9+) |
| 0164b |
GAR-476 — Q10.b: extract bootstrap/channels.rs (44 LOC, zero behaviour change) |
GAR-476 |
✅ Merged 2026-05-22 via PR #470 (f337cb9) |
| 0165 |
GAR-477 — Q10.c: extract bootstrap/discord.rs (270 LOC, zero behaviour change) |
GAR-477 |
✅ Merged 2026-05-22 via PR #471 (b594ace) |
| 0166 |
GAR-478 — Q10.d: extract bootstrap/slack.rs (166 LOC, zero behaviour change) |
GAR-478 |
✅ Merged 2026-05-22 via PR #474 (4a51841) |
| 0167 |
GAR-479 — Q10.e: extract bootstrap/whatsapp.rs (180 LOC, zero behaviour change) |
GAR-479 |
✅ Merged 2026-05-22 via PR #476 (60a8dff) |
| 0168 |
GAR-480 — Q10.f: extract bootstrap/imessage.rs (123 LOC, macOS-only, zero behaviour change) |
GAR-480 |
✅ Merged 2026-05-23 via PR #484 (b3f62fd) |
| 0169 |
GAR-513 — deny.toml advisory-not-detected cleanup: remove stale RUSTSEC-2024-0429 + RUSTSEC-2026-0097 from deny.toml, retain in audit.toml |
GAR-513 |
✅ Merged 2026-05-23 via PR #484 (b3f62fd) |
| 0170 |
GAR-691 — Q10.g: extract bootstrap/telegram.rs (423 LOC, zero behaviour change) |
GAR-691 |
✅ Merged 2026-05-23 via PR #485 (a0b0c99) |
| 0171 |
GAR-498 — native skill registry slice: brainstorm, write-spec, write-plan, pre-commit, verify as first-class Rust entries in garraia-skills |
GAR-498 |
✅ Merged 2026-05-23 via direct commit (c65e099) |
| 0172 |
GAR-692 — Health run 20 (2026-05-23): plans 0168+0169 bookkeeping, all surfaces clean, priority (i) |
GAR-692 |
✅ Merged 2026-05-23 via PR #486 (07070f5) |
| 0173 |
GAR-693 — Health run 21 (2026-05-23): merge run-20 PRs + plan numbering fix, all surfaces clean, priority (i) |
GAR-693 |
✅ Merged 2026-05-23 via PR #489 (133fef8) |
| 0174 |
GAR-694 — Health run 22 (2026-05-23): all surfaces clean, GAR-499 agent team reviewed clean, priority (i) |
GAR-694 |
✅ Merged 2026-05-23 via PR #491 (d161dd3) |
| 0175 |
GAR-499 — Agent Team MVP: OrchestratorAgent + ExecutorAgent + ReviewerAgent via mpsc channels, wired into garra max-power |
GAR-499 |
✅ Merged 2026-05-24 via PR #490 (7e45ec5) |
| 0176 |
GAR-493 — GarraMaxPower ADR 0011: Native Agent-Advanced Mode decision record |
GAR-493 |
✅ Merged 2026-05-24 via PR #492 (95618d3) |
| 0177 |
GAR-695 — Health run 23 (2026-05-24): all surfaces clean, routine/ PR #492 pending (skipped), priority (i) |
GAR-695 |
✅ Merged 2026-05-24 via PR #493 (3344a04) |
| 0178 |
GAR-696 — Health run 24 (2026-05-24): all surfaces clean, routine/ PR #496 noted, priority (i) |
GAR-696 |
✅ Merged 2026-05-25 via PR #497 (149b91b) |
| 0179 |
GAR-697 — Search slice 4: has_attachment filter + migration 020 (message_attachments) |
GAR-697 |
✅ Merged 2026-05-25 via PR #498 (be8c880) |
| 0180 |
GAR-698 — Health run 25 (2026-05-25): all surfaces clean, routine/ PR #498 noted, priority (i) |
GAR-698 |
✅ Merged 2026-05-25 via PR #499 (61bd6a7) |
| 0181 |
GAR-699 — Health run 26 (2026-05-25): all surfaces clean, routine/ PR #498 noted, priority (i) |
GAR-699 |
✅ Merged 2026-05-25 via PR #501 (312f046) |
| 0182 |
GAR-700 — Message Attachments API: POST/GET/DELETE /v1/messages/{id}/attachments |
GAR-700 |
✅ Merged 2026-05-25 via PR #502 (8e44c76) |
| 0183 |
GAR-701 — Health run 27 (2026-05-25): all surfaces clean, health/ PR #501 run 26 open 20/20 CI green, priority (i) |
GAR-701 |
✅ Merged 2026-05-25 via PR #503 (ba8482b) |
| 0184 |
GAR-702 — Health run 28 (2026-05-25): all surfaces clean, priority (i) |
GAR-702 |
✅ Merged 2026-05-25 via PR #504 (1b68238) |
| 0185 |
GAR-703 — Search slice 5: types=files — file name FTS in unified search |
GAR-703 |
✅ Merged 2026-05-25 via PR #505 (bb8c040) |
| 0186 |
GAR-704 — Health run 29 (2026-05-25): all surfaces clean, routine/ PR #505 noted, priority (i) |
GAR-704 |
✅ Merged 2026-05-25 via PR #507 (ec683e9) |
| 0187 |
GAR-705 — Health run 30 (2026-05-25): all surfaces clean, PR #506 conflict resolved, priority (i) |
GAR-705 |
✅ Merged 2026-05-25 via PR #508 (ef040ad) |
| 0188 |
GAR-467 — Q6.5 Mutation Testing — audit_event observability coverage |
GAR-467 |
✅ Merged 2026-05-26 via PR #509 (a1b0fdd) |
| 0189 |
GAR-706 — Health run 31 (2026-05-25 ~20:45 ET): all surfaces clean, PR #508 run 30 merged, priority (i) |
GAR-706 |
✅ Merged 2026-05-26 via PR #510 (d669b5b) |
| 0190 |
GAR-708 — wasmtime 44→45 path_open(TRUNCATE) FilePerms bypass fix (health run 32) |
GAR-708 |
✅ Merged 2026-05-26 via PR #528 (ff07bff) |
| 0191 |
GAR-709 — Health run 33 (2026-05-26 ~00:45 ET): PR #528 GAR-708 merged, all surfaces clean, 11 non-security Dependabot PRs, priority (i) |
GAR-709 |
✅ Merged 2026-05-26 via PR #530 (83dee9a) |
| 0192 |
GAR-707 — Search slice 6: types=tasks — task title/description FTS in unified search |
GAR-707 |
✅ Merged 2026-05-26 via PR #526 (c902051) |
| 0193 |
GAR-710 — Search slice 7: types=task_comments — task comment body FTS in unified search |
GAR-710 |
✅ Merged 2026-05-26 via PR #532 (238299d) |
| 0194 |
GAR-712 — Health run 34 (2026-05-26 ~04:45 ET): all surfaces clean, priority (i) |
GAR-712 |
✅ Merged 2026-05-26 via PR #534 (885ed2e) |
| 0195 |
GAR-713 — REST /v1 search slice 8: sort_by parameter |
GAR-713 |
✅ Merged 2026-05-26 via PR #535 (bea868b) |
| 0196 |
GAR-714 — Health run 35 (2026-05-26 ~12:45 ET): all surfaces clean, routine/ PR #535 GAR-713 noted, priority (i) |
GAR-714 |
✅ Merged 2026-05-26 via PR #536 (9a52349) |
| 0197 |
GAR-715 — Health run 36 (2026-05-26 ~12:45 ET): all surfaces clean, PR #536 GAR-714 run 35 merged, priority (i) |
GAR-715 |
✅ Merged 2026-05-26 via PR #541 (95ed89b) |
| 0198 |
GAR-717 — Health run 37 (2026-05-26 ~20:45 ET): all surfaces clean, PR #541 GAR-715 run 36 merged, priority (i) |
GAR-717 |
✅ Merged 2026-05-27 via PR #542 (d36d5f4) |
| 0199 |
GAR-716 — Search slice 9: types=folders — folder name FTS in unified search |
GAR-716 |
✅ Merged 2026-05-27 via PR #540 (d6d0487) |
| 0200 |
GAR-718 — REST /v1 search slice 10: types=chats — chat name/topic FTS |
GAR-718 |
✅ Merged 2026-05-27 via PR #543 (5472b63) |
| 0201 |
GAR-719 — Health run 38 (2026-05-27 ~00:45 ET): all surfaces clean, PR #540 GAR-716 slice 9 merged, priority (i) |
GAR-719 |
✅ Merged 2026-05-27 via PR #544 (fa6fe50) |
| 0202 |
GAR-720 — Health run 39 (2026-05-27 ~04:45 ET): all surfaces clean, routine/ PR #543 GAR-718 noted, priority (i) |
GAR-720 |
✅ Merged 2026-05-27 via PR #545 (61d0514) |
| 0203 |
GAR-722 — Health run 40 (2026-05-27 ~07:15 ET): all surfaces clean, PR #543 GAR-718 20/20 CI green, priority (i) |
GAR-722 |
✅ Merged 2026-05-27 via PR #546 (fa679e6c) |
| 0204 |
GAR-723 — Health run 41 (2026-05-27 ~08:45 ET): all surfaces clean, PR #546 GAR-722 run 40 merged, priority (i) |
GAR-723 |
✅ Merged 2026-05-27 via PR #547 (3f7c345) |
| 0205 |
GAR-724 — Health run 42 (2026-05-27 ~12:50 ET): all surfaces clean, routine/ PR #548 GAR-721 noted, priority (i) |
GAR-724 |
✅ Merged 2026-05-27 via PR #549 (4ad84a1) |
| 0206 |
GAR-725 — Health run 43 (2026-05-27 ~16:45 ET): all surfaces clean, docker/build-push-action merged, priority (i) |
GAR-725 |
✅ Merged 2026-05-27 via PR #550 (7143a85) |
| 0207 |
GAR-727 — Health run 44 (2026-05-27 ~20:45 ET): all surfaces clean, 8 non-security Dependabot PRs, priority (i) |
GAR-727 |
✅ Merged 2026-05-27 via PR #551 (d418248) |
| 0208 |
GAR-721 — Search slice 11: types=task_lists — task list name/description FTS in unified search |
GAR-721 |
✅ Merged 2026-05-27 via PR #548 |
| 0209 |
GAR-728 — Health run 45 (2026-05-27 ~20:45 ET): all surfaces clean, 8 non-security Dependabot PRs, priority (i) |
GAR-728 |
✅ Merged 2026-05-28 via PR #553 (c573a3e) |
| 0210 |
GAR-729 — Health run 46 (2026-05-28 ~00:45 ET): all surfaces clean, PR #553 GAR-728 merged, routine/ PR #552 GAR-726 noted, priority (i) |
GAR-729 |
✅ Merged 2026-05-28 via PR #554 (e797b3c) |
| 0211 |
GAR-731 — Health run 47 (2026-05-28 ~03:15 ET): all surfaces clean, cargo audit 0 vulns 19 unmaintained warnings, wasmtime 45.0.0 confirmed clean, priority (i) |
GAR-731 |
✅ Merged 2026-05-28 via PR #557 (a6e368a) |
| 0212 |
GAR-732 — Health run 48 (2026-05-28 ~08:45 ET): all surfaces clean, PR #557 GAR-731 run 47 merged, priority (i) |
GAR-732 |
✅ Merged 2026-05-28 via PR #559 (1130c4f) |
| 0213 |
GAR-726 — Search slice 12: types=threads — message thread title FTS in unified search |
GAR-726 |
✅ Merged 2026-05-28 via PR #552 (e897691) |
| 0214 |
GAR-730 — Search slice 13: types=users — group member display_name FTS in unified search |
GAR-730 |
✅ Merged 2026-05-28 via PR #556 (4e5c3d8) |
| 0215 |
GAR-733 — Search slice 14: types=groups — group name FTS in unified search |
GAR-733 |
✅ Merged 2026-05-29 via PR #561 (1bb2f10) |
| 0216 |
GAR-734 — Health run 49 (2026-05-28 ~12:45 ET): all surfaces clean, PR #555 docs dirty, priority (i) |
GAR-734 |
✅ Merged 2026-05-28 via PR #560 (96fb68b) |
| 0217 |
GAR-735 — Health run 50 (2026-05-28 ~16:45 ET): all surfaces clean, PR #560 GAR-734 merged, priority (i) |
GAR-735 |
✅ Merged 2026-05-28 via PR #562 (d92e57c) |
| 0218 |
GAR-736 — Health run 51 (2026-05-28 ~20:45 ET): all surfaces clean, PR #562 GAR-735 merged, priority (i) |
GAR-736 |
✅ Merged 2026-05-28 via PR #563 (46eadc5) |
| 0219 |
GAR-737 — Search slice 15: types=labels — task label name FTS in unified search |
GAR-737 |
✅ Merged 2026-05-29 via PR #564 (e0d3e3e) |
| 0220 |
GAR-738 — Health run 52 (2026-05-29 ~00:45 ET): all surfaces clean, PR #563 GAR-736 merged, priority (i) |
GAR-738 |
✅ Merged 2026-05-29 via PR #565 (c86d8ef) |
| 0221 |
GAR-739 — Health run 53 (2026-05-29 ~05:05 ET): all surfaces clean, PR #565 GAR-738 merged, priority (i) |
GAR-739 |
✅ Merged 2026-05-29 via PR #567 (9cb8038) |
| 0222 |
GAR-741 — Health run 54 (2026-05-29 ~07:10 ET): all surfaces clean, PR #567 GAR-739 merged, priority (i) |
GAR-741 |
✅ Merged 2026-05-29 via PR #569 (fa38656) |
| 0223 |
GAR-742 — Health run 55 (2026-05-29 ~04:55 ET): all surfaces clean, PR #569 GAR-741 merged, priority (i) |
GAR-742 |
✅ Merged 2026-05-29 via PR #570 (0d3924f) |
| 0224 |
GAR-743 — Health run 56 (2026-05-29 ~08:45 ET): all surfaces clean, PR #570 GAR-742 merged, priority (i) |
GAR-743 |
✅ Merged 2026-05-29 via PR #571 (ab6e0ee) |
| 0225 |
GAR-740 — REST /v1 chats slice 6: GET /v1/chats/{chat_id}/threads — list threads in a chat |
GAR-740 |
✅ Merged 2026-05-29 via PR #574 (3fa24d3) |
| 0226 |
GAR-744 — Health run 57 (2026-05-29 ~12:49 ET): all surfaces clean, PR #571 GAR-743 merged, priority (i) |
GAR-744 |
✅ Merged 2026-05-29 via PR #574 (3fa24d3) |
| 0227 |
GAR-745 — Chats slice 7: PATCH /v1/threads/{id} (resolve/title) + PATCH /v1/chats/{id}/members/{uid} (muted/last_read/role) |
GAR-745 |
✅ Merged 2026-05-30 via PR #575 (0778ff3) |
| 0228 |
GAR-746 — Health run 58 (2026-05-29 ~20:46 ET): all surfaces clean, PR #573 closed superseded, priority (i) |
GAR-746 |
✅ Merged 2026-05-29 via PR #576 (3dbe48c) |
| 0229 |
GAR-748 — Health run 59 (2026-05-29 ~20:48 ET): all surfaces clean, routine/ PR #575 noted, priority (i) |
GAR-748 |
✅ Merged 2026-05-30 via PR #579 (358b3d4) |
| 0230 |
GAR-749 — Health run 60 (2026-05-30 ~00:46 ET): all surfaces clean, PR #578 closed superseded, priority (i) |
GAR-749 |
✅ Merged 2026-05-30 via PR #581 (4986c1f) |
| 0231 |
GAR-747 — Chats slice 8: message reactions — POST/DELETE/GET /v1/messages/{id}/reactions |
GAR-747 |
✅ Merged 2026-05-30 via PR #580 (86d8c55) |
| 0232 |
GAR-751 — Health run 62 (2026-05-30 ~08:46 ET): all surfaces clean, run 61 bare note, priority (i) |
GAR-751 |
✅ Merged 2026-05-30 via PR #583 (593f029) |
| 0233 |
GAR-752 — Chats slice 9: POST /v1/chats/{chat_id}/typing — typing indicators via SSE |
GAR-752 |
✅ Merged 2026-05-30 via PR #586 (9a1664a) |
| 0234 |
GAR-753 — Health run 63 (2026-05-30 ~08:49 ET): all surfaces clean, priority (i) |
GAR-753 |
✅ Merged 2026-05-30 via PR #585 (07db8f6) |
| 0235 |
GAR-754 — Health run 64 (2026-05-30 ~12:50 ET): all surfaces clean, priority (i) |
GAR-754 |
✅ Merged 2026-05-30 via PR #589 (fb9df70) |
| 0236 |
GAR-756 — Health run 65 (2026-05-30 ~20:45 ET): PR #588 closed superseded, all surfaces clean, priority (i) |
GAR-756 |
✅ Merged 2026-05-30 via PR #590 (f372a55) |
| 0237 |
GAR-755 — Chats slice 10: @mentions — migration 022 + POST /v1/chats/{id}/messages mentions field + GET /v1/me/mentions |
GAR-755 |
✅ Merged 2026-05-31 via PR #591 (21f7f55) |
| 0238 |
GAR-757 — Health run 66 (2026-05-31 ~00:47 ET): all surfaces clean, priority (i) |
GAR-757 |
✅ Merged 2026-05-31 via PR #592 (6fd3c9b) |
| 0239 |
GAR-758 — Health run 67 (2026-05-31 ~00:46 ET): all surfaces clean, priority (i) |
GAR-758 |
✅ Merged 2026-05-31 via PR #593 (e317136) |
| 0240 |
GAR-761 — Health run 69 (2026-05-31 ~08:45 ET): all surfaces clean, priority (i) |
GAR-761 |
✅ Merged 2026-05-31 via PR #596 (1a4a15f) |
| 0241 |
GAR-759 — Chats slice 11: Bot Garra no chat — /garra detection + AgentRuntime async reply |
GAR-759 |
✅ Merged 2026-05-31 via PR #595 (22fddb9) |
| 0242 |
GAR-763 — GET /v1/me/tasks (caller-scoped task inbox) |
GAR-763 |
✅ Merged 2026-05-31 via PR #598 (f732cb5) |
| 0243 |
GAR-762 — Health run 70 (2026-05-31 ~12:45 ET): PR #594 closed superseded, all surfaces clean, priority (i) |
GAR-762 |
✅ Merged 2026-05-31 via PR #597 (b66f6db) |
| 0244 |
GAR-764 — Health run 71 (2026-05-31 ~17:05 ET): PR #597+#599 merged, all surfaces clean, priority (i) |
GAR-764 |
✅ Merged 2026-05-31 via PR #600 (5e126b1) |
| 0245 |
GAR-765 — GET /v1/me/chats (caller-scoped chat membership inbox) |
GAR-765 |
✅ Merged 2026-05-31 via PR #601 (2bf1f5b) |
| 0246 |
GAR-767 — GET /v1/me/files (caller-scoped uploaded-files inbox) |
GAR-767 |
✅ Merged 2026-06-01 via PR #603 |
| 0247 |
GAR-768 — Health run 72 (2026-05-31 ~20:45 ET): all surfaces clean, priority (i) |
GAR-768 |
✅ Merged 2026-06-01 via PR #604 (5f08141) |
| 0248 |
GAR-769 — Health run 73 (2026-06-01 ~00:45 ET): all surfaces clean, priority (i) |
GAR-769 |
✅ Merged 2026-06-01 via PR #607 (b2848a8) |
| 0249 |
GAR-770 — GET /v1/me/memory (caller-scoped personal memory inbox) |
GAR-770 |
✅ Merged 2026-06-01 via PR #608 (ec6922c) |
| 0250 |
GAR-771 — Persona amistosa do Garra (inspirado em OpenHuman): persona default + copy humanizada + erros amigáveis |
GAR-771 |
✅ Merged 2026-06-01 via PR #610 (cbdc702) |
| 0251 |
GAR-771 — Health run 74 (2026-06-01 ~08:45 ET): PR #610 persona merged, all surfaces clean, priority (i) |
GAR-771 |
✅ Merged 2026-06-01 via PR #611 (3dd4ce3) |
| 0252 |
GAR-711 — Upgrade OpenTelemetry 0.26 → 0.32 (RUSTSEC-2025-0052 async-std) |
GAR-711 |
✅ Merged 2026-06-01 via PR #614 (138d89f) |
| 0253 |
GAR-774 — Health run 75 (2026-06-01 ~20:45 ET): Q6.11 extractor unit tests — kill 4 security-bypass mutations |
GAR-774 |
✅ Merged 2026-06-02 via PR #616 (67700a0) |
| 0254 |
GAR-775 — Q6.12: kill is_unique_violation positive-case + fix broken mutants::skip on redact_urls |
GAR-775 |
✅ Merged 2026-06-02 via PR #618 (20f8979) |
| 0255 |
GAR-777 — GET /v1/me/invites pending group invites inbox |
GAR-777 |
✅ Merged 2026-06-02 via PR #621 (762d63c) |
| 0256 |
GAR-778 — Health run 76 (2026-06-02 ~09:10 ET): restore Node.js 24 action versions regressed by PR #561 (checkout@v4→v6) |
GAR-778 |
✅ Merged 2026-06-02 via PR #622 (43b1fd0) |
| 0257 |
GAR-780 — GET + DELETE /v1/groups/{id}/invites/{invite_id} (invite revocation) |
GAR-780 |
✅ Merged 2026-06-03 via PR #625 (46a8658) |
| 0258 |
GAR-783 — POST /v1/me/invites/{invite_id}/decline (invitee-side invite decline) |
GAR-783 |
✅ Merged 2026-06-03 via PR #632 (593206f) |
| 0259 |
GAR-784+GAR-785 — lopdf 0.34→0.40 + rand_chacha 0.9→0.10 compat fixes |
GAR-784 + GAR-785 |
✅ Merged 2026-06-03 via PR #634 (fa8e3c0) |
| 0260 |
GAR-788 — GET /v1/me/reactions — emoji-reactions inbox |
GAR-788 |
✅ Merged 2026-06-03 via PR #637 (5ddb2ed) |
| 0261 |
GAR-790 — GET /v1/me/threads — caller-scoped thread participation inbox |
GAR-790 |
✅ Merged 2026-06-03 via PR #638 (9a36727) |
| 0262 |
GAR-789 — Drop stale RUSTSEC-2026-0097 (rand 0.7.3) from audit.toml |
GAR-789 |
✅ Done (PR #640 / 9f3e760) |
| 0263 |
GAR-794 — POST /v1/me/invites/{invite_id}/accept (invitee-side authenticated invite acceptance) |
GAR-794 |
✅ Merged 2026-06-05 via PR #642 (cec4545) |
| 0264 |
GAR-795 — PATCH /v1/groups/{group_id}/tasks/{task_id}/comments/{comment_id} (edit task comment body) |
GAR-795 |
✅ Merged 2026-06-05 via PR #644 (6974812) |
| 0265 |
GAR-798 — GET /v1/threads/{thread_id} — fetch single thread detail |
GAR-798 |
✅ Merged PR #646 (7913904) |
| 0266 |
GAR-800 — PATCH /v1/groups/{group_id}/task-labels/{label_id} (edit task label name/color) |
GAR-800 |
✅ Merged PR #649 (28d052a) |
| 0267 |
GAR-802 — GET /v1/groups/{group_id}/task-labels/{label_id} (fetch single task label) |
GAR-802 |
✅ Merged PR #651 (afe02ce) |
| 0268 |
GAR-805 — Health run 85 (2026-06-06 ~12:47 ET): all surfaces clean, priority (i) |
GAR-805 |
✅ Merged 2026-06-06 via PR #654 (99448bb) |
| 0269 |
GAR-806 — GET /v1/groups/{group_id}/tasks/{task_id}/comments/{comment_id} (fetch single task comment) |
GAR-806 |
✅ Merged 2026-06-06 via PR #655 (760dfd8) |
| 0270 |
GAR-807 — Health run 86 (2026-06-06 ~16:46 ET): PR #656 merged, all surfaces clean, priority (i) |
GAR-807 |
✅ Merged 2026-06-06 via PR #657 (a4d365f) |
| 0271 |
GAR-808 — GET /v1/groups/{group_id}/tasks/{task_id}/labels — list labels assigned to a task |
GAR-808 |
✅ Merged 2026-06-07 via PR #659 (d7d8a82) |
| 0272 |
GAR-809 — Health run 87 (2026-06-07 ~20:45 ET): all surfaces clean, priority (i) |
GAR-809 |
✅ Merged 2026-06-07 via PR #660 (95e2860) |
| 0273 |
GAR-810 — Health run 88 (2026-06-07 ~00:45 ET): all surfaces clean, priority (i) |
GAR-810 |
✅ Merged via PR #662 (9b529dd) |
| 0274 |
GAR-812 — Health run 89 (2026-06-07 ~04:15 ET): all surfaces clean, priority (i) |
GAR-812 |
✅ Merged via PR #665 (75c311ab) |
| 0275 |
GAR-813 — Health run 90 (2026-06-07 ~04:45 ET): all surfaces clean, priority (i) |
GAR-813 |
✅ Merged via PR #667 (f254585) |
| 0276 |
GAR-815 — Health run 91 (2026-06-07 ~12:47 ET): all surfaces clean, priority (i) |
GAR-815 |
✅ Merged via PR #670 (d3c3324) |
| 0277 |
GAR-816 — Health run 92 (2026-06-07 ~12:45 ET): all surfaces clean, priority (i) |
GAR-816 |
✅ Merged via PR #671 (be1ccdf5) |
| 0278 |
GAR-811 — POST /v1/threads/{thread_id}/messages (thread reply) |
GAR-811 |
✅ Merged via PR #664 (6b168f3) |
| 0279 |
GAR-814 — GET /v1/threads/{thread_id}/messages (list replies by thread_id) |
GAR-814 |
✅ Merged 2026-06-08 via PR #675 (b30d18e) |
| 0280 |
GAR-817 — Health run 93 (2026-06-07 ~20:47 ET): all surfaces clean, priority (i) |
GAR-817 |
✅ Merged via PR #673 (cf16c4e) |
| 0281 |
GAR-818 — Health run 94 (2026-06-07 ~21:01 ET): all surfaces clean, priority (i) |
GAR-818 |
✅ Merged via PR #676 (4e2c2a4) |
| 0282 |
GAR-819 — Health run 95 (2026-06-08 ~00:45 ET): all surfaces clean, priority (i) |
GAR-819 |
✅ Merged via PR #677 (5f8540f) |
| 0283 |
GAR-820 — Health run 96 (2026-06-08 ~03:09 ET): all surfaces clean, priority (i) |
GAR-820 |
✅ Merged via PR #681 (a6b6343) |
| 0284 |
GAR-822 — fix(ci): cache swagger-ui zip to eliminate utoipa-swagger-ui reqwest build failure (health run 97) |
GAR-822 |
✅ Done — PR #682 5f0dfeb |
| 0285 |
GAR-820 — GET /v1/groups/{group_id}/files/{file_id}/versions/{version} (fetch single file version) |
GAR-820 |
✅ Merged via PR #680 (3d4ae04) |
| 0286 |
GAR-823 — GET /v1/groups/{group_id}/members/{user_id} (fetch single group member) |
GAR-823 |
✅ Merged via PR #683 (91ce9b0) |
| 0287 |
GAR-824 — Q6.13: mutation testing 2026-06-08 — kill sessions.rs ct_eq/expiry mutations + pool Debug skips (health run 98) |
GAR-824 |
✅ Merged via PR #684 (8f5ab8f) |
| 0288 |
GAR-827 — PATCH /v1/groups/{group_id}/tasks/{task_id}/subscriptions — update muted flag |
GAR-827 |
✅ Done (PR #690 2bde6a6) |
| 0289 |
GAR-828 — Health run 101 (2026-06-09 ~00:45 ET): all surfaces clean, Dependabot tauri resolver noted, priority (i) |
GAR-828 |
✅ Merged 2026-06-09 via PR #691 (6c3eb62) |
| 0290 |
GAR-829 — Health run 102 (2026-06-09 ~01:00 ET): PR #691 merged, all surfaces clean, priority (i) |
GAR-829 |
✅ Merged 2026-06-09 via PR #693 (7100851) |
| 0292 |
GAR-830 — Health run 103 (2026-06-09 ~07:15 ET): all surfaces clean, priority (i) |
GAR-830 |
✅ Merged 2026-06-09 via PR #697 (dd96289) |
| 0293 |
GAR-831 — Health run 104 (2026-06-09 ~04:46 ET): all surfaces clean, PRs #695+#697 merged, priority (i) |
GAR-831 |
✅ Merged via PR #698 (7f0f8e6) |
| 0294 |
GAR-825 — Q6.14: 3-way shard + --features test-support in mutants.yml |
GAR-825 |
✅ Merged via PR #701 (6060116) |
| 0295 |
GAR-832 — Health run 105 (2026-06-09 ~08:45 ET): all surfaces clean, priority (i) |
GAR-832 |
✅ Merged 2026-06-09 via PR #702 (3cc8771) |
| 0296 |
GAR-833 — Health run 106 (2026-06-09 ~12:45 ET): all surfaces clean, priority (i) |
GAR-833 |
✅ Merged via PR #704 (7b0bade) |
| 0297 |
GAR-835 — Docs Tier 2 scaffold: migration 026 + POST/GET /v1/groups/{group_id}/doc-pages |
GAR-835 |
✅ Merged 2026-06-10 via PR #706 (54f88bc) |
| 0298 |
GAR-836 — Health run 107 (2026-06-09 ~20:47 ET): all surfaces clean, priority (i) |
GAR-836 |
✅ Merged via PR #707 (7a20572) |
| 0299 |
GAR-838 — Health run 108 (2026-06-10 ~00:45 ET): all surfaces clean, priority (i) |
GAR-838 |
✅ Merged via PR #710 (8495527) |
| 0300 |
GAR-839 — Health run 109 (2026-06-10 ~04:45 ET): PR #710 merged, all surfaces clean, priority (i) |
GAR-839 |
✅ Merged 2026-06-10 via PR #711 (59a13e7) |
| 0301 |
GAR-837 — GET/PATCH/DELETE /v1/doc-pages/{page_id} — Docs Tier 2 single-page CRUD |
GAR-837 |
✅ Merged 2026-06-10 via PR #709 (ed1093f) |
| 0302 |
GAR-841 — Health run 110 (2026-06-10 ~07:07 ET): all surfaces clean, priority (i) |
GAR-841 |
✅ Merged 2026-06-10 via PR #713 (5662253) |
| 0303 |
GAR-842 — Health run 111 (2026-06-10 ~08:45 ET): PR #713 merged, all surfaces clean, priority (i) |
GAR-842 |
✅ Merged 2026-06-10 via PR #714 (6c3ce88) |
| 0304 |
GAR-840 — POST/GET /v1/doc-pages/{page_id}/blocks + PATCH/DELETE /v1/doc-blocks/{block_id} — Docs Tier 2 blocks CRUD (migration 027) |
GAR-840 |
✅ Merged 2026-06-10 via PR #712 (c1aa9ec) |
| 0305 |
GAR-843 — Health run 112 (2026-06-10 ~12:45 ET): all surfaces clean, priority (i) |
GAR-843 |
✅ Merged 2026-06-10 via PR #715 (343597a) |
| 0306 |
GAR-844 — garra-routine-trigger.yml: add retry on transient 401 (gh issue list) |
GAR-844 |
✅ Merged 2026-06-10 via PR #716 (3f33d5a) |
| 0307 |
GAR-845 — POST/GET /v1/doc-pages/{page_id}/versions + GET /v1/doc-pages/{page_id}/versions/{version_id} — Docs Tier 2 page versions (migration 028) |
GAR-845 |
✅ Merged 2026-06-11 via PR #717 (4105473) |
| 0308 |
GAR-846 — Health run 113 (2026-06-10 ~20:45 ET): PR #716 merged, all surfaces clean, priority (i) |
GAR-846 |
✅ Merged 2026-06-10 via PR #718 (128627a) |
| 0309 |
GAR-847 — POST /v1/doc-pages/{page_id}/duplicate — Docs Tier 2 page duplication |
GAR-847 |
✅ Merged 2026-06-11 via PR #720 (d8e80e2) |
| 0310 |
GAR-848 — Health run 114 (2026-06-11 ~00:45 ET): all surfaces clean, priority (i) |
GAR-848 |
✅ Merged 2026-06-11 via PR #721 (de123ec) |
| 0311 |
GAR-849 — Health run 115 (2026-06-11 ~04:45 ET): PR #721 merged, all surfaces clean, priority (i) |
GAR-849 |
✅ Merged 2026-06-11 via PR #722 (2a58538) |
| 0312 |
GAR-850 — POST /v1/doc-pages/{page_id}/versions/{version_id}/restore — Docs Tier 2 version restore |
GAR-850 |
✅ Merged 2026-06-11 via PR #723 (198e3fb) |
| 0313 |
GAR-852 — Health run 116 (2026-06-11 ~07:05 ET): PR #722 merged, all surfaces clean, priority (i) |
GAR-852 |
✅ Merged 2026-06-11 via PR #724 (ead6f6c) |
| 0314 |
GAR-853 — GET /v1/doc-blocks/{block_id} — Docs Tier 2 single block fetch |
GAR-853 |
✅ Merged 2026-06-11 via PR #725 (7f13deb) |
| 0315 |
GAR-854 — Health run 117 (2026-06-11 ~08:45 ET): PR #724 merged, all surfaces clean, priority (i) |
GAR-854 |
✅ Merged 2026-06-11 via PR #726 (6575f88) |
| 0316 |
GAR-855 — Health run 118 (2026-06-11 ~12:45 ET): all surfaces clean, priority (i) |
GAR-855 |
✅ Merged 2026-06-11 via PR #727 (709da2b) |
| 0317 |
GAR-856 — GET /v1/search?types=doc_pages,doc_blocks — Search slices 16+17: Docs Tier 2 unified search |
GAR-856 |
✅ Merged (#728 · 0af46b9) |
| 0318 |
GAR-857 — Health run 119 (2026-06-12 ~00:45 ET): all surfaces clean, priority (i) |
GAR-857 |
✅ Merged 2026-06-12 via PR #731 (f13e868) |
| 0319 |
GAR-859 — Health run 120 (2026-06-12 ~00:45 ET): all surfaces clean, priority (i) |
GAR-859 |
✅ Merged 2026-06-12 via PR #732 (a7a73aa) |
| 0320 |
GAR-858 — doc_page_mentions: migration 029, REST handlers, inbox endpoint, OpenAPI wiring |
GAR-858 |
✅ Merged 2026-06-12 via PR #730 (cf8be02) |
| 0321 |
GAR-861 — Health run 121 (2026-06-12 ~04:45 ET): all surfaces clean, priority (i) |
GAR-861 |
✅ Merged 2026-06-12 via PR #733 (dcb12c6) |
| 0322 |
GAR-860 — GET /v1/me/doc-pages — caller-scoped authored doc pages inbox |
GAR-860 |
✅ Merged 2026-06-12 via PR #735 (21e52ec) |
| 0323 |
GAR-863 — Health run 122 (2026-06-12 ~16:45 ET): all surfaces clean, priority (i) |
GAR-863 |
✅ Merged 2026-06-12 via PR #736 (f75a51c) |
| 0324 |
GAR-865 — Health run 123 (2026-06-12 ~20:45 ET): all surfaces clean, priority (i) |
GAR-865 |
✅ Merged 2026-06-12 via PR #739 (4b18dcf) |
| 0325 |
GAR-864 — GET /v1/chats/{chat_id}/members/{user_id} — fetch single chat member |
GAR-864 |
✅ Merged 2026-06-12 via PR #738 (1d3142f) |
| 0326 |
GAR-867 — Health run 124 (2026-06-13 ~00:45 ET): all surfaces clean, priority (i) |
GAR-867 |
✅ Merged 2026-06-13 via PR #744 (76d6808) |
| 0327 |
GAR-866 — GET /v1/me/sessions + DELETE /v1/me/sessions/{session_id} — list and revoke active sessions |
GAR-866 |
✅ Merged 2026-06-13 via PR #742 (fc5d996) |
| 0328 |
GAR-869 — DELETE /v1/me/sessions — revoke all active sessions ("sign out from all devices") |
GAR-869 |
✅ Merged 2026-06-13 via PR #747 (ed38d1a) |
| 0329 |
GAR-868 — Health run 125 (2026-06-13 ~04:45 ET): all surfaces clean, priority (i) |
GAR-868 |
✅ Merged 2026-06-13 via PR #746 (0691153) |
| 0330 |
GAR-870 — Health run 126 (2026-06-13 ~08:45 ET): all surfaces clean, priority (i) |
GAR-870 |
✅ Merged 2026-06-13 via PR #749 (1f36836) |
| 0331 |
GAR-871 — POST/GET /v1/me/api-keys + DELETE /v1/me/api-keys/{key_id} |
GAR-871 |
✅ Merged 2026-06-13 via PR #751 (b63a2d4) |
| 0332 |
GAR-872 — Health run 127 (2026-06-13 ~12:45 ET): all surfaces clean, priority (i) |
GAR-872 |
✅ Merged 2026-06-13 via PR #752 (bca5a36) |
| 0333 |
GAR-873 — Health run 128 (2026-06-13 ~16:45 ET): all surfaces clean, priority (i) |
GAR-873 |
✅ Merged 2026-06-13 via PR #754 (a1ce9c6) |
| 0334 |
GAR-874 — PATCH /v1/me/api-keys/{key_id} — update API key label/scopes |
GAR-874 |
✅ Merged 2026-06-13 via PR #755 (9e36b47) |
| 0335 |
GAR-876 — PATCH /v1/me/password — self-service password change |
GAR-876 |
✅ Merged 2026-06-14 via PR #757 (0c9a024) |
| 0336 |
GAR-877 — Health run 130 (2026-06-14 ~00:45 ET): all surfaces clean, priority (i) |
GAR-877 |
✅ Merged 2026-06-14 via PR #758 (02dc199) |
| 0337 |
GAR-878 — Health run 131 (2026-06-14 ~00:48 ET): all surfaces clean, priority (i) |
GAR-878 |
✅ Merged 2026-06-14 via PR #760 (e3044c29) |
| 0338 |
GAR-879 — Health run 132 (2026-06-14 ~02:27 ET): all surfaces clean, priority (i) |
GAR-879 |
✅ Merged 2026-06-14 via PR #763 (7425541) |
| 0339 |
GAR-880 — Health run 133 (2026-06-14 ~08:45 ET): all surfaces clean, priority (i) |
GAR-880 |
✅ Merged 2026-06-14 via PR #764 (0cba31c) |
| 0340 |
GAR-881 — GET /v1/me/audit — personal audit trail |
GAR-881 |
✅ Merged 2026-06-14 via PR #766 (cf20882) |
| 0341 |
GAR-882 — Health run 134 (2026-06-14 ~12:45 ET): all surfaces clean, priority (i) |
GAR-882 |
✅ Merged 2026-06-14 via PR #769 (a88efb1) |
| 0342 |
GAR-883 — Health run 135 (2026-06-14 ~20:45 ET): all surfaces clean, priority (i) |
GAR-883 |
✅ Merged 2026-06-14 via PR #772 (c7448dd) |
| 0343 |
GAR-884 — DELETE /v1/me — self-service account soft-deletion (LGPD/GDPR right to erasure) |
GAR-884 |
✅ Merged 2026-06-15 via PR #771 (137f16c) |
| 0344 |
GAR-885 — GET /v1/me/export — personal data export (LGPD art. 20 / GDPR arts. 15 & 20) |
GAR-885 |
✅ Merged 2026-06-15 via PR #774 (a00f480) |
| 0345 |
GAR-888 — POST /v1/me/anonymize — LGPD art. 12 / GDPR art. 4(5) personal data anonymization |
GAR-888 |
✅ Merged 2026-06-15 via PR #777 (46e2733) |
| 0346 |
GAR-890 — DELETE /v1/groups/{id} — owner-only group soft-deletion |
GAR-890 |
✅ Merged 2026-06-15 via PR #779 (d67563d) |
| 0347 |
GAR-891 — Q6.15: kill 4 missed mutants in password.rs + audit_workspace.rs (health run 137) |
GAR-891 |
✅ Merged 2026-06-15 via PR #780 (f622d9c) |
| 0348 |
GAR-892 — Health run 144 (2026-06-15 ~12:45 ET): 4 non-security Dependabot PRs all CI-green, priority (i) |
GAR-892 |
✅ Merged 2026-06-15 via PR #785 (fb7903a) |
| 0349 |
GAR-893 — Health run 145 (2026-06-15 ~20:45 ET): all surfaces clean, sqlx compat noted, priority (i) |
GAR-893 |
✅ Merged 2026-06-15 via PR #786 (d12478e) |
| 0350 |
GAR-894 — chore(deps): split sqlx runtime-tokio-native-tls → runtime-tokio + tls-native-tls (workspace root compat) |
GAR-894 |
🔄 In progress |