bd sync: 2026-01-04 15:16:35
This commit is contained in:
committed by
Steve Yegge
parent
ca99ceaa18
commit
67bbd7f96a
@@ -295,7 +295,7 @@
|
||||
{"id":"bd-b3og","title":"Fix TestImportBugIntegration deadlock in importer_test.go","description":"Code health review found internal/importer/importer_test.go has TestImportBugIntegration skipped with:\n\nTODO: Test hangs due to database deadlock - needs investigation\n\nThis indicates a potential unresolved concurrency issue in the importer. The test has been skipped for an unknown duration.\n\nFix: Investigate the deadlock, fix the underlying issue, and re-enable the test.","status":"tombstone","priority":1,"issue_type":"bug","created_at":"2025-12-16T18:17:22.103838-08:00","updated_at":"2025-12-25T01:21:01.952723-08:00","dependencies":[{"issue_id":"bd-b3og","depends_on_id":"bd-tggf","type":"blocks","created_at":"2025-12-16T18:19:05.740642-08:00","created_by":"daemon"}],"deleted_at":"2025-12-25T01:21:01.952723-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"bug"}
|
||||
{"id":"bd-b6xo","title":"Remove or fix ClearDirtyIssues() - race condition risk (bd-52)","description":"Code health review found internal/storage/sqlite/dirty.go still exposes old ClearDirtyIssues() method (lines 103-108) which clears ALL dirty issues without checking what was actually exported.\n\nData loss risk: If export fails after some issues written to JSONL but before ClearDirtyIssues called, changes to remaining dirty issues will be lost.\n\nThe safer ClearDirtyIssuesByID() (lines 113-132) exists and clears only exported issues.\n\nFix: Either remove old method or mark it deprecated and ensure no code paths use it.","status":"tombstone","priority":1,"issue_type":"bug","created_at":"2025-12-16T18:17:20.534625-08:00","updated_at":"2025-12-25T01:21:01.952723-08:00","dependencies":[{"issue_id":"bd-b6xo","depends_on_id":"bd-tggf","type":"blocks","created_at":"2025-12-16T18:19:05.633738-08:00","created_by":"daemon"}],"deleted_at":"2025-12-25T01:21:01.952723-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"bug"}
|
||||
{"id":"bd-bdc9","title":"Update Homebrew formula","description":"Update the Homebrew tap with new version:\n\n```bash\n./scripts/update-homebrew.sh 0.33.2\n```\n\nThis script waits for GitHub Actions to complete (~5 min), then updates the formula with new SHA256 hashes.","status":"tombstone","priority":1,"issue_type":"task","created_at":"2025-12-21T16:10:13.762399-08:00","updated_at":"2025-12-21T17:29:31.791368-08:00","deleted_at":"2025-12-21T17:29:31.791368-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"task"}
|
||||
{"id":"bd-beads-crew-dave","title":"Crew worker dave in beads - human-managed persistent workspace.","description":"Crew worker dave in beads - human-managed persistent workspace.\n\nrole_type: crew\nrig: beads\nagent_state: idle\nhook_bead: null\nrole_bead: gt-crew-role\ncleanup_status: null","status":"open","priority":2,"issue_type":"agent","created_at":"2025-12-30T23:14:04.538389-08:00","created_by":"deacon","updated_at":"2026-01-04T11:15:06.796747-08:00"}
|
||||
{"id":"bd-beads-crew-dave","title":"Crew worker dave in beads - human-managed persistent workspace.","description":"Crew worker dave in beads - human-managed persistent workspace.\n\nrole_type: crew\nrig: beads\nagent_state: idle\nhook_bead: null\nrole_bead: gt-crew-role\ncleanup_status: null","status":"open","priority":2,"issue_type":"agent","created_at":"2025-12-30T23:14:04.538389-08:00","created_by":"deacon","updated_at":"2026-01-04T15:15:30.9399-08:00"}
|
||||
{"id":"bd-beads-crew-emma","title":"Crew worker emma in beads - human-managed persistent workspace.","description":"Crew worker emma in beads - human-managed persistent workspace.\n\nrole_type: crew\nrig: beads\nagent_state: idle\nhook_bead: null\nrole_bead: gt-crew-role\ncleanup_status: null","status":"open","priority":2,"issue_type":"agent","created_at":"2025-12-30T23:14:04.604042-08:00","created_by":"deacon","updated_at":"2026-01-04T10:42:30.528607-08:00"}
|
||||
{"id":"bd-beads-crew-fang","title":"Crew worker fang in beads - human-managed persistent workspace.","description":"Crew worker fang in beads - human-managed persistent workspace.\n\nrole_type: crew\nrig: beads\nagent_state: idle\nhook_bead: null\nrole_bead: gt-crew-role\ncleanup_status: null","status":"open","priority":2,"issue_type":"agent","created_at":"2025-12-30T23:14:04.672037-08:00","created_by":"deacon","updated_at":"2026-01-04T11:17:05.023632-08:00"}
|
||||
{"id":"bd-beads-crew-giles","title":"Crew worker giles in beads - human-managed persistent workspace.","description":"Crew worker giles in beads - human-managed persistent workspace.\n\nrole_type: crew\nrig: beads\nagent_state: idle\nhook_bead: null\nrole_bead: gt-crew-role\ncleanup_status: null\nactive_mr: null\nnotification_level: null","status":"open","priority":2,"issue_type":"agent","created_at":"2026-01-04T11:22:11.009942-08:00","created_by":"mayor","updated_at":"2026-01-04T11:22:11.009942-08:00"}
|
||||
@@ -469,7 +469,7 @@
|
||||
{"id":"bd-hlsw.3","title":"Auto-recovery mode (bd sync --auto-recover)","description":"Add bd sync --auto-recover flag that: detects problematic sync state, backs up .beads/issues.db with timestamp, rebuilds DB from JSONL atomically, verifies consistency, reports what was fixed. Provides safety valve when sync integrity fails.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-14T10:40:20.599836875-07:00","updated_at":"2025-12-30T15:44:43.352476-08:00","closed_at":"2025-12-30T07:02:42.636957-08:00","close_reason":"Implemented --auto-recover flag with detection, backup, rebuild, verify, and reporting. Added tests.","dependencies":[{"issue_id":"bd-hlsw.3","depends_on_id":"bd-hlsw","type":"parent-child","created_at":"2025-12-14T10:40:20.600435888-07:00","created_by":"daemon"}]}
|
||||
{"id":"bd-hlsw.4","title":"Sync branch integrity guards","description":"Track sync branch parent commit. If sync branch was force-pushed, warn user and require confirmation before proceeding. Add option to reset to remote if user accepts rebase. Prevents silent corruption from forced pushes.","status":"closed","priority":3,"issue_type":"task","created_at":"2025-12-14T10:40:20.645402352-07:00","updated_at":"2025-12-30T17:05:23.464495-08:00","closed_at":"2025-12-30T17:05:23.464495-08:00","close_reason":"Implemented sync branch integrity guards: (1) Added force-push detection via stored remote SHA tracking, (2) Added user warning and confirmation prompt when force-push detected, (3) Added --accept-rebase flag for non-interactive reset to remote, (4) Added tests for new functionality","dependencies":[{"issue_id":"bd-hlsw.4","depends_on_id":"bd-hlsw","type":"parent-child","created_at":"2025-12-14T10:40:20.646425761-07:00","created_by":"daemon"}]}
|
||||
{"id":"bd-hlyr","title":"Merge: bd-m8ro","description":"branch: polecat/max\ntarget: main\nsource_issue: bd-m8ro\nrig: beads","status":"closed","priority":2,"issue_type":"merge-request","created_at":"2025-12-23T20:45:40.218445-08:00","updated_at":"2025-12-23T21:21:57.69886-08:00","closed_at":"2025-12-23T21:21:57.69886-08:00"}
|
||||
{"id":"bd-hmeb","title":"bd slot set doesn't support cross-beads prefix routing","description":"## Problem\n\n`bd slot set` fails when setting a slot to a bead that lives in a different beads database (cross-db routing).\n\n## Evidence\n\nWhen spawning a polecat:\n```\nWarning: could not set role slot: bd slot set gt-gastown-polecat-chumbucket role hq-polecat-role: \nError: failed to resolve bead hq-polecat-role: no issue found matching \"hq-polecat-role\"\n```\n\nThe agent bead `gt-gastown-polecat-chumbucket` is in rig beads (`gastown/mayor/rig/.beads/`).\nThe role bead `hq-polecat-role` is in town beads (`~/gt/.beads/`).\n\n`bd show hq-polecat-role` works fine (uses prefix routing via routes.jsonl).\n`bd slot set ... hq-polecat-role` fails (does not use routing).\n\n## Root Cause\n\n`bd slot set` resolves the target bead in the current database only, ignoring the `hq-` prefix that should route to town beads.\n\n## Expected Behavior\n\n`bd slot set \u003cagent\u003e \u003cslot\u003e \u003cbead\u003e` should:\n1. Check if `\u003cbead\u003e` has a routable prefix (e.g., `hq-`, `gt-`, `bd-`)\n2. If so, resolve it via routes.jsonl like `bd show` does\n3. Store the bead reference (cross-db references are valid for slots)\n\n## Workaround\n\nCurrently the warning is non-fatal - the role slot just is not set. But this breaks role-based queries.\n\n## Files\n\n- `cmd/slot.go` - slot set command implementation\n- Need to add routing logic similar to `cmd/show.go`","status":"in_progress","priority":1,"issue_type":"bug","assignee":"beads/polecats/garnet","created_at":"2026-01-04T15:12:40.230597-08:00","created_by":"mayor","updated_at":"2026-01-04T15:13:33.548834-08:00"}
|
||||
{"id":"bd-hmeb","title":"bd slot set doesn't support cross-beads prefix routing","description":"## Problem\n\n`bd slot set` fails when setting a slot to a bead that lives in a different beads database (cross-db routing).\n\n## Evidence\n\nWhen spawning a polecat:\n```\nWarning: could not set role slot: bd slot set gt-gastown-polecat-chumbucket role hq-polecat-role: \nError: failed to resolve bead hq-polecat-role: no issue found matching \"hq-polecat-role\"\n```\n\nThe agent bead `gt-gastown-polecat-chumbucket` is in rig beads (`gastown/mayor/rig/.beads/`).\nThe role bead `hq-polecat-role` is in town beads (`~/gt/.beads/`).\n\n`bd show hq-polecat-role` works fine (uses prefix routing via routes.jsonl).\n`bd slot set ... hq-polecat-role` fails (does not use routing).\n\n## Root Cause\n\n`bd slot set` resolves the target bead in the current database only, ignoring the `hq-` prefix that should route to town beads.\n\n## Expected Behavior\n\n`bd slot set \u003cagent\u003e \u003cslot\u003e \u003cbead\u003e` should:\n1. Check if `\u003cbead\u003e` has a routable prefix (e.g., `hq-`, `gt-`, `bd-`)\n2. If so, resolve it via routes.jsonl like `bd show` does\n3. Store the bead reference (cross-db references are valid for slots)\n\n## Workaround\n\nCurrently the warning is non-fatal - the role slot just is not set. But this breaks role-based queries.\n\n## Files\n\n- `cmd/slot.go` - slot set command implementation\n- Need to add routing logic similar to `cmd/show.go`","status":"closed","priority":1,"issue_type":"bug","assignee":"beads/polecats/garnet","created_at":"2026-01-04T15:12:40.230597-08:00","created_by":"mayor","updated_at":"2026-01-04T15:16:19.493134-08:00","closed_at":"2026-01-04T15:16:19.493134-08:00","close_reason":"Added prefix routing to bd slot set command. Now uses needsRouting() and resolveAndGetIssueWithRouting() to handle cross-beads references like hq-* from rig beads."}
|
||||
{"id":"bd-hnkg","title":"GH#540: Add silent quick-capture mode (bd q)","description":"Add bd q alias for quick capture that outputs only issue ID. Useful for piping/scripting. See GitHub issue #540.","status":"tombstone","priority":2,"issue_type":"feature","created_at":"2025-12-16T01:03:38.260135-08:00","updated_at":"2025-12-17T16:11:17.070763-08:00","deleted_at":"2025-12-17T16:11:17.070763-08:00","deleted_by":"batch delete","delete_reason":"batch delete","original_type":"feature"}
|
||||
{"id":"bd-hobo","title":"Distinct prefixes for protos, molecules, wisps","description":"Template/workflow entities should have visually distinct prefixes from regular issues.\n\n**Problem:**\n- Protos (bd-7bs4) look like regular issues - invites squashing\n- Molecules (poured instances) also use bd- prefix\n- Wisps are in separate DB but still use bd- when referenced\n\n**Proposed Prefixes:**\n- `proto-` for templates (e.g., proto-release, proto-review)\n- `mol-` for active molecules (poured from protos)\n- `wisp-` for ephemeral wisps (vapor phase)\n\n**Benefits:**\n- Instant visual recognition of entity type\n- Prevents accidental modification of templates\n- Clear lifecycle: proto → mol → wisp → digest\n\n**Implementation options:**\n1. Separate databases with different prefixes\n2. Issue type determines prefix generation\n3. Naming convention enforced by bd pour/wisp commands","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-24T16:45:24.940809-08:00","updated_at":"2025-12-25T02:04:52.459233-08:00","closed_at":"2025-12-25T02:04:52.459233-08:00","labels":["workflow"]}
|
||||
{"id":"bd-hp8g","title":"gt sling should look up formulas from .beads/formulas/ registry","description":"## Problem\n\ngt sling \u003cformula-name\u003e doesn't find formulas from the registry that bd formula list shows.\n\n## What I tried\n\n1. gt sling beads/crew/emma --formula beads-release --var version=0.42.0\n - Problem: --formula flag doesn't exist\n\n2. gt sling beads-release beads/crew/emma --var version=0.42.0\n - Error: open .../beads-release: no such file or directory\n - Problem: Looks for file in cwd, not formula registry\n\n## What worked\n\nbd mol wisp beads-release --var version=0.42.0 - correctly finds formula from .beads/formulas/\n\n## Expected\n\ngt sling should use the same formula lookup as bd mol wisp - checking .beads/formulas/*.formula.json\n\n## Documentation gap\n\nThe help shows examples like 'gt sling mol-release mayor/' suggesting formula slinging works, but it doesn't find registry formulas.","status":"closed","priority":2,"issue_type":"bug","assignee":"beads/polecats/jade","created_at":"2025-12-30T21:18:17.251292-08:00","created_by":"beads/crew/emma","updated_at":"2025-12-30T22:06:27.153176-08:00","closed_at":"2025-12-30T22:06:27.153176-08:00","close_reason":"Fixed in both repos: bd cook now looks up formulas from registry, and gt sling uses bd mol wisp"}
|
||||
@@ -882,7 +882,7 @@
|
||||
{"id":"bd-umbf","title":"Design contributor namespace isolation for beads pollution prevention","description":"## Problem\n\nWhen contributors work on beads-the-project using beads-the-tool, their personal work-tracking issues leak into PRs. The .beads/issues.jsonl is intentionally tracked (it's the project's issue database), but contributors' local issues pollute the diff.\n\nThis is a recursion problem unique to self-hosting projects.\n\n## Possible Solutions to Explore\n\n1. **Contributor namespaces** - Each contributor gets a private prefix (e.g., `bd-steve-xxxx`) that's gitignored or filtered\n2. **Separate database** - Contributors use BEADS_DIR pointing elsewhere for personal tracking\n3. **Issue ownership/visibility flags** - Mark issues as \"local-only\" vs \"project\"\n4. **Prefix-based filtering** - Configure which prefixes are committed vs ignored\n\n## Design Considerations\n\n- Should be zero-friction for contributors (no manual setup)\n- Must not break existing workflows\n- Needs to work with sync/collaboration features\n- Consider: what if a \"personal\" issue graduates to \"project\" issue?\n\n## Expansion Needed\n\nThis is a placeholder. Needs detailed design exploration before implementation.","status":"closed","priority":2,"issue_type":"feature","created_at":"2025-12-13T18:00:29.638743-08:00","updated_at":"2025-12-30T18:12:30.976419-08:00","closed_at":"2025-12-30T17:05:13.732967-08:00","close_reason":"Design complete. See docs/CONTRIBUTOR_NAMESPACE_ISOLATION.md. Recommends auto-routing approach with role detection. Key gap identified: bd-6x6g needs implementation to actually route issues to target repo."}
|
||||
{"id":"bd-uqfn","title":"Work on beads-wkt: Output control parameters for MCP tool...","description":"Work on beads-wkt: Output control parameters for MCP tools (GH#622). Add brief, fields, max_description_length params to ready/list/show. When done, submit MR (not PR) to integration branch for Refinery.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-19T22:57:10.675535-08:00","updated_at":"2025-12-20T00:49:51.929271-08:00","closed_at":"2025-12-19T23:28:25.362931-08:00"}
|
||||
{"id":"bd-usro","title":"Rename 'template instantiate' to 'mol bond'","description":"Rename the template instantiation command to match molecule metaphor.\n\nCurrent: bd template instantiate \u003cid\u003e --var key=value\nTarget: bd mol bond \u003cid\u003e --var key=value\n\nChanges needed:\n- Add 'mol' command group (or extend existing)\n- Add 'bond' subcommand that wraps template instantiate logic\n- Keep 'template instantiate' as deprecated alias for backward compat\n- Update help text and docs to use molecule terminology\n\nThe 'bond' verb captures:\n1. Chemistry metaphor (molecules bond to form structures)\n2. Dependency linking (child issues bonded in a DAG)\n3. Short and active\n\nSee also: molecule execution model in Gas Town","status":"closed","priority":1,"issue_type":"feature","created_at":"2025-12-20T16:56:37.582795-08:00","updated_at":"2025-12-20T23:22:43.567337-08:00","closed_at":"2025-12-20T23:22:43.567337-08:00"}
|
||||
{"id":"bd-usvv","title":"Defer SQLite metadata updates until after git commit succeeds","description":"Part of GH#885 fix: bulletproof sync atomicity.\n\nCurrently exportToJSONL() immediately:\n- Clears dirty flags in SQLite\n- Updates last_import_time metadata\n\nThis happens BEFORE git commit, so if commit fails, SQLite \"lies\" about sync state.\n\nFix: Move metadata updates to AFTER git commit succeeds:\n1. Export JSONL to disk (atomic file write)\n2. Stage and commit to git\n3. ONLY THEN clear dirty flags and update last_import_time\n\nKey files:\n- cmd/bd/sync_export.go:147-170 (premature updates)\n- cmd/bd/sync.go:555 (commit point)\n\nThis is the core fix for the atomicity gap.","status":"in_progress","priority":1,"issue_type":"task","assignee":"beads/crew/dave","created_at":"2026-01-04T13:53:23.619319-08:00","created_by":"beads/crew/emma","updated_at":"2026-01-04T15:07:37.691736-08:00","dependencies":[{"issue_id":"bd-usvv","depends_on_id":"bd-pnx2","type":"parent-child","created_at":"2026-01-04T13:53:55.798447-08:00","created_by":"beads/crew/emma"}]}
|
||||
{"id":"bd-usvv","title":"Defer SQLite metadata updates until after git commit succeeds","description":"Part of GH#885 fix: bulletproof sync atomicity.\n\nCurrently exportToJSONL() immediately:\n- Clears dirty flags in SQLite\n- Updates last_import_time metadata\n\nThis happens BEFORE git commit, so if commit fails, SQLite \"lies\" about sync state.\n\nFix: Move metadata updates to AFTER git commit succeeds:\n1. Export JSONL to disk (atomic file write)\n2. Stage and commit to git\n3. ONLY THEN clear dirty flags and update last_import_time\n\nKey files:\n- cmd/bd/sync_export.go:147-170 (premature updates)\n- cmd/bd/sync.go:555 (commit point)\n\nThis is the core fix for the atomicity gap.","status":"closed","priority":1,"issue_type":"task","assignee":"beads/crew/dave","created_at":"2026-01-04T13:53:23.619319-08:00","created_by":"beads/crew/emma","updated_at":"2026-01-04T15:16:21.245756-08:00","closed_at":"2026-01-04T15:16:21.245756-08:00","close_reason":"Implemented deferred metadata updates - finalizeExport() now runs after git commit succeeds","dependencies":[{"issue_id":"bd-usvv","depends_on_id":"bd-pnx2","type":"parent-child","created_at":"2026-01-04T13:53:55.798447-08:00","created_by":"beads/crew/emma"}]}
|
||||
{"id":"bd-uu8p","title":"Routing bypassed in daemon mode","description":"## Bug\n\nPrefix-based routing (routes.jsonl) only works in direct mode. When the daemon is running, it bypasses routing logic because:\n\n1. Daemon mode resolves IDs via RPC (`daemonClient.ResolveID`)\n2. Daemon uses its own store, which only knows about local beads\n3. The routing logic in `resolveAndGetIssueWithRouting` is only called in direct mode\n\n## Reproduction\n\n```bash\n# With daemon running:\ncd ~/gt\nbd show gt-1py3y # Fails - daemon can't find it\n\n# With daemon bypassed:\nbd --no-daemon show gt-1py3y # Works - uses routing\n```\n\n## Fix Options\n\n### Option A: Client-side routing detection (Recommended)\nBefore calling daemon RPC, check if the ID prefix matches a route to a different beads dir. If so, use direct mode with routing for that ID.\n\n```go\n// In show.go, before daemon mode:\nif daemonClient != nil \u0026\u0026 needsRouting(id) {\n // Fall back to direct mode for this ID\n result, err := resolveAndGetIssueWithRouting(ctx, store, id)\n ...\n}\n```\n\n### Option B: Daemon-side routing\nAdd routing support to the daemon RPC server. More complex - daemon would need to:\n- Load routes.jsonl on startup\n- Open connections to multiple databases\n- Route requests based on ID prefix\n\n### Option C: Hybrid\nDaemon returns \"not found + prefix hint\", client retries with routing.\n\n## Recommendation\n\nOption A is simplest. The client already has routing logic; just use it when we detect a routed prefix.","status":"closed","priority":1,"issue_type":"bug","created_at":"2025-12-26T14:52:00.452285-08:00","updated_at":"2025-12-26T14:54:51.572289-08:00","closed_at":"2025-12-26T14:54:51.572289-08:00"}
|
||||
{"id":"bd-uutv","title":"Work on beads-rs0: Namepool configuration for themed pole...","description":"Work on beads-rs0: Namepool configuration for themed polecat names. See bd show beads-rs0 for full details.","status":"closed","priority":2,"issue_type":"task","created_at":"2025-12-19T21:49:48.129778-08:00","updated_at":"2025-12-19T21:59:25.565894-08:00","closed_at":"2025-12-19T21:59:25.565894-08:00"}
|
||||
{"id":"bd-uwkp","title":"Phase 2.4: Git merge driver optimization for TOON format","description":"Optimize git 3-way merge for TOON line-oriented format.\n\n## Overview\nTOON is line-oriented (unlike binary formats), enabling smarter git merge strategies. Implement custom merge driver to handle TOON-specific merge patterns.\n\n## Required Work\n\n### 2.4.1 TOON Merge Driver\n- [ ] Create .git/info/attributes entry for *.toon files\n- [ ] Implement custom merge driver script/command\n- [ ] Handle tabular format row merges (line-based 3-way)\n- [ ] Handle YAML-style format merges\n- [ ] Conflict markers for unsolvable conflicts\n\n### 2.4.2 Merge Patterns\n- [ ] Row addition: both branches add different rows → union\n- [ ] Row deletion: one branch deletes, other modifies → conflict (manual review)\n- [ ] Row modification: concurrent field changes → intelligent merge or conflict\n- [ ] Field ordering changes: ignore (TOON format resilient to order)\n\n### 2.4.3 Testing \u0026 Documentation\n- [ ] Unit tests for merge scenarios (3-way merge logic)\n- [ ] Integration tests with actual git merges\n- [ ] Conflict scenario testing\n- [ ] Documentation of merge strategy\n\n## Success Criteria\n- Git merge handles TOON conflicts intelligently\n- Fewer manual merge conflicts than JSONL\n- Round-trip preserved through merges\n- All 70+ tests still passing\n- Git history stays clean (minimal conflict markers)","status":"closed","priority":1,"issue_type":"task","created_at":"2025-12-19T14:43:14.339238776-07:00","updated_at":"2025-12-21T14:42:26.434306-08:00","closed_at":"2025-12-21T14:42:26.434306-08:00","dependencies":[{"issue_id":"bd-uwkp","depends_on_id":"bd-iic1","type":"discovered-from","created_at":"2025-12-19T14:43:14.34427988-07:00","created_by":"daemon"}]}
|
||||
|
||||
Reference in New Issue
Block a user