diff --git a/.beads/.beads-credential-key b/.beads/.beads-credential-key new file mode 100644 index 0000000..bd386db --- /dev/null +++ b/.beads/.beads-credential-key @@ -0,0 +1 @@ +4©¹ÄÒðã˜ýçpáW3á„J’R9“(:ƒÞš \ No newline at end of file diff --git a/.beads/.gitignore b/.beads/.gitignore index e6fb002..aef2b5b 100644 --- a/.beads/.gitignore +++ b/.beads/.gitignore @@ -7,6 +7,19 @@ bd.sock bd.sock.startlock sync-state.json last-touched +.exclusive-lock + +# Daemon runtime (lock, log, pid) +daemon.* + +# Interactions log (runtime, not versioned) +interactions.jsonl + +# Push state (runtime, per-machine) +push-state.json + +# Lock files (various runtime locks) +*.lock # Local version tracking (prevents upgrade notification spam after git ops) .local_version @@ -30,6 +43,13 @@ ephemeral.sqlite3-shm dolt-server.pid dolt-server.log dolt-server.lock +dolt-server.port + +# Corrupt backup directories (created by bd doctor --fix recovery) +*.corrupt.backup/ + +# Backup data (auto-exported JSONL, local-only) +backup/ # Legacy files (from pre-Dolt versions) *.db @@ -39,10 +59,6 @@ dolt-server.lock *.db-shm db.sqlite bd.db -daemon.lock -daemon.log -daemon-*.log.gz -daemon.pid # NOTE: Do NOT add negation patterns here. # They would override fork protection in .git/info/exclude. # Config files (metadata.json, config.yaml) are tracked by git by default diff --git a/.beads/dolt-monitor.pid b/.beads/dolt-monitor.pid deleted file mode 100644 index 526f378..0000000 --- a/.beads/dolt-monitor.pid +++ /dev/null @@ -1 +0,0 @@ -16696 \ No newline at end of file diff --git a/.beads/dolt-server.activity b/.beads/dolt-server.activity deleted file mode 100644 index 7eb8c6a..0000000 --- a/.beads/dolt-server.activity +++ /dev/null @@ -1 +0,0 @@ -1774391767 \ No newline at end of file diff --git a/.beads/dolt-server.port b/.beads/dolt-server.port index b67857a..44ec4ce 100644 --- a/.beads/dolt-server.port +++ b/.beads/dolt-server.port @@ -1 +1 @@ -3307 \ No newline at end of file +64072 \ No newline at end of file diff --git a/.beads/dolt-sql-server.pid b/.beads/dolt-sql-server.pid deleted file mode 100644 index f39b36f..0000000 --- a/.beads/dolt-sql-server.pid +++ /dev/null @@ -1 +0,0 @@ -7624 diff --git a/.beads/hooks/post-checkout b/.beads/hooks/post-checkout index 206fe24..2a650b1 100644 --- a/.beads/hooks/post-checkout +++ b/.beads/hooks/post-checkout @@ -1,9 +1,24 @@ #!/usr/bin/env sh -# --- BEGIN BEADS INTEGRATION v0.57.0 --- +# --- BEGIN BEADS INTEGRATION v0.61.0 --- # This section is managed by beads. Do not remove these markers. if command -v bd >/dev/null 2>&1; then export BD_GIT_HOOK=1 - bd hooks run post-checkout "$@" - _bd_exit=$?; if [ $_bd_exit -ne 0 ]; then exit $_bd_exit; fi + _bd_timeout=${BEADS_HOOK_TIMEOUT:-30} + if command -v timeout >/dev/null 2>&1; then + timeout "$_bd_timeout" bd hooks run post-checkout "$@" + _bd_exit=$? + if [ $_bd_exit -eq 124 ]; then + echo >&2 "beads: hook 'post-checkout' timed out after ${_bd_timeout}s — continuing without beads" + _bd_exit=0 + fi + else + bd hooks run post-checkout "$@" + _bd_exit=$? + fi + if [ $_bd_exit -eq 3 ]; then + echo >&2 "beads: database not initialized — skipping hook 'post-checkout'" + _bd_exit=0 + fi + if [ $_bd_exit -ne 0 ]; then exit $_bd_exit; fi fi -# --- END BEADS INTEGRATION --- +# --- END BEADS INTEGRATION v0.61.0 --- diff --git a/.beads/hooks/post-merge b/.beads/hooks/post-merge index 73fc60c..bd1c175 100644 --- a/.beads/hooks/post-merge +++ b/.beads/hooks/post-merge @@ -1,9 +1,24 @@ #!/usr/bin/env sh -# --- BEGIN BEADS INTEGRATION v0.57.0 --- +# --- BEGIN BEADS INTEGRATION v0.61.0 --- # This section is managed by beads. Do not remove these markers. if command -v bd >/dev/null 2>&1; then export BD_GIT_HOOK=1 - bd hooks run post-merge "$@" - _bd_exit=$?; if [ $_bd_exit -ne 0 ]; then exit $_bd_exit; fi + _bd_timeout=${BEADS_HOOK_TIMEOUT:-30} + if command -v timeout >/dev/null 2>&1; then + timeout "$_bd_timeout" bd hooks run post-merge "$@" + _bd_exit=$? + if [ $_bd_exit -eq 124 ]; then + echo >&2 "beads: hook 'post-merge' timed out after ${_bd_timeout}s — continuing without beads" + _bd_exit=0 + fi + else + bd hooks run post-merge "$@" + _bd_exit=$? + fi + if [ $_bd_exit -eq 3 ]; then + echo >&2 "beads: database not initialized — skipping hook 'post-merge'" + _bd_exit=0 + fi + if [ $_bd_exit -ne 0 ]; then exit $_bd_exit; fi fi -# --- END BEADS INTEGRATION --- +# --- END BEADS INTEGRATION v0.61.0 --- diff --git a/.beads/hooks/pre-commit b/.beads/hooks/pre-commit index 90dc813..6244403 100644 --- a/.beads/hooks/pre-commit +++ b/.beads/hooks/pre-commit @@ -1,9 +1,24 @@ #!/usr/bin/env sh -# --- BEGIN BEADS INTEGRATION v0.57.0 --- +# --- BEGIN BEADS INTEGRATION v0.61.0 --- # This section is managed by beads. Do not remove these markers. if command -v bd >/dev/null 2>&1; then export BD_GIT_HOOK=1 - bd hooks run pre-commit "$@" - _bd_exit=$?; if [ $_bd_exit -ne 0 ]; then exit $_bd_exit; fi + _bd_timeout=${BEADS_HOOK_TIMEOUT:-30} + if command -v timeout >/dev/null 2>&1; then + timeout "$_bd_timeout" bd hooks run pre-commit "$@" + _bd_exit=$? + if [ $_bd_exit -eq 124 ]; then + echo >&2 "beads: hook 'pre-commit' timed out after ${_bd_timeout}s — continuing without beads" + _bd_exit=0 + fi + else + bd hooks run pre-commit "$@" + _bd_exit=$? + fi + if [ $_bd_exit -eq 3 ]; then + echo >&2 "beads: database not initialized — skipping hook 'pre-commit'" + _bd_exit=0 + fi + if [ $_bd_exit -ne 0 ]; then exit $_bd_exit; fi fi -# --- END BEADS INTEGRATION --- +# --- END BEADS INTEGRATION v0.61.0 --- diff --git a/.beads/hooks/pre-push b/.beads/hooks/pre-push index 7c3dd9b..9a5ee48 100644 --- a/.beads/hooks/pre-push +++ b/.beads/hooks/pre-push @@ -1,9 +1,24 @@ #!/usr/bin/env sh -# --- BEGIN BEADS INTEGRATION v0.57.0 --- +# --- BEGIN BEADS INTEGRATION v0.61.0 --- # This section is managed by beads. Do not remove these markers. if command -v bd >/dev/null 2>&1; then export BD_GIT_HOOK=1 - bd hooks run pre-push "$@" - _bd_exit=$?; if [ $_bd_exit -ne 0 ]; then exit $_bd_exit; fi + _bd_timeout=${BEADS_HOOK_TIMEOUT:-30} + if command -v timeout >/dev/null 2>&1; then + timeout "$_bd_timeout" bd hooks run pre-push "$@" + _bd_exit=$? + if [ $_bd_exit -eq 124 ]; then + echo >&2 "beads: hook 'pre-push' timed out after ${_bd_timeout}s — continuing without beads" + _bd_exit=0 + fi + else + bd hooks run pre-push "$@" + _bd_exit=$? + fi + if [ $_bd_exit -eq 3 ]; then + echo >&2 "beads: database not initialized — skipping hook 'pre-push'" + _bd_exit=0 + fi + if [ $_bd_exit -ne 0 ]; then exit $_bd_exit; fi fi -# --- END BEADS INTEGRATION --- +# --- END BEADS INTEGRATION v0.61.0 --- diff --git a/.beads/hooks/prepare-commit-msg b/.beads/hooks/prepare-commit-msg index a9023a4..4312713 100644 --- a/.beads/hooks/prepare-commit-msg +++ b/.beads/hooks/prepare-commit-msg @@ -1,9 +1,24 @@ #!/usr/bin/env sh -# --- BEGIN BEADS INTEGRATION v0.57.0 --- +# --- BEGIN BEADS INTEGRATION v0.61.0 --- # This section is managed by beads. Do not remove these markers. if command -v bd >/dev/null 2>&1; then export BD_GIT_HOOK=1 - bd hooks run prepare-commit-msg "$@" - _bd_exit=$?; if [ $_bd_exit -ne 0 ]; then exit $_bd_exit; fi + _bd_timeout=${BEADS_HOOK_TIMEOUT:-30} + if command -v timeout >/dev/null 2>&1; then + timeout "$_bd_timeout" bd hooks run prepare-commit-msg "$@" + _bd_exit=$? + if [ $_bd_exit -eq 124 ]; then + echo >&2 "beads: hook 'prepare-commit-msg' timed out after ${_bd_timeout}s — continuing without beads" + _bd_exit=0 + fi + else + bd hooks run prepare-commit-msg "$@" + _bd_exit=$? + fi + if [ $_bd_exit -eq 3 ]; then + echo >&2 "beads: database not initialized — skipping hook 'prepare-commit-msg'" + _bd_exit=0 + fi + if [ $_bd_exit -ne 0 ]; then exit $_bd_exit; fi fi -# --- END BEADS INTEGRATION --- +# --- END BEADS INTEGRATION v0.61.0 --- diff --git a/.beads/metadata.json b/.beads/metadata.json index 68ef479..2e24b07 100644 --- a/.beads/metadata.json +++ b/.beads/metadata.json @@ -2,6 +2,6 @@ "database": "dolt", "backend": "dolt", "dolt_mode": "server", - "dolt_server_port": 3307, - "dolt_database": "beadboard" + "dolt_database": "beadboard", + "project_id": "f4cfaa47-ce9f-4cf2-a269-78e46625e5ea" } \ No newline at end of file diff --git a/AGENTS.md b/AGENTS.md index 3c534bd..21699da 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -209,7 +209,7 @@ networkingMode=mirrored ``` Then `wsl --shutdown`. Not required for single-platform setups. - + ## Issue Tracking with bd (beads) **IMPORTANT**: This project uses **bd (beads)** for ALL issue tracking. Do NOT use markdown TODOs, task lists, or other tracking methods. @@ -294,4 +294,30 @@ bd automatically syncs via Dolt: For more details, see README.md and docs/QUICKSTART.md. +## Landing the Plane (Session Completion) + +**When ending a work session**, you MUST complete ALL steps below. Work is NOT complete until `git push` succeeds. + +**MANDATORY WORKFLOW:** + +1. **File issues for remaining work** - Create issues for anything that needs follow-up +2. **Run quality gates** (if code changed) - Tests, linters, builds +3. **Update issue status** - Close finished work, update in-progress items +4. **PUSH TO REMOTE** - This is MANDATORY: + ```bash + git pull --rebase + bd dolt push + git push + git status # MUST show "up to date with origin" + ``` +5. **Clean up** - Clear stashes, prune remote branches +6. **Verify** - All changes committed AND pushed +7. **Hand off** - Provide context for next session + +**CRITICAL RULES:** +- Work is NOT complete until `git push` succeeds +- NEVER stop before pushing - that leaves work stranded locally +- NEVER say "ready to push when you are" - YOU must push +- If push fails, resolve and retry until it succeeds +