This commit is contained in:
mr0xb 2026-05-22 15:54:54 -04:00
commit a89c144cd9
No known key found for this signature in database
GPG key ID: D61C4E28AAE1BC5C
476 changed files with 89929 additions and 0 deletions

View file

@ -0,0 +1,9 @@
{
"id": "1",
"subject": "Task 1: Initialize git repository",
"description": "git init in the obsidian vault, verify clean state, ensure branch is `main`.",
"activeForm": "Initializing git repository",
"status": "completed",
"blocks": [],
"blockedBy": []
}

View file

@ -0,0 +1,9 @@
{
"id": "10",
"subject": "Task 10: Pre-flight check before first commit",
"description": "Inspect git status, re-run hook test, run hook directly to confirm exit 0.",
"activeForm": "Running pre-flight checks",
"status": "completed",
"blocks": [],
"blockedBy": []
}

View file

@ -0,0 +1,9 @@
{
"id": "11",
"subject": "Task 11: Initial commit",
"description": "git add ., verify staged content, optionally spot-check encrypted blob, commit.",
"activeForm": "Making initial commit",
"status": "in_progress",
"blocks": [],
"blockedBy": []
}

View file

@ -0,0 +1,9 @@
{
"id": "12",
"subject": "Task 12: Create GitHub repo and push (manual auth)",
"description": "User creates private repo via gh CLI or web UI, sets origin, pushes, hook gates the push.",
"activeForm": "Creating GitHub repo and pushing",
"status": "pending",
"blocks": [],
"blockedBy": []
}

View file

@ -0,0 +1,9 @@
{
"id": "13",
"subject": "Task 13: Verify ciphertext on GitHub",
"description": "User opens an .md file on GitHub, confirms binary blob output, not plaintext.",
"activeForm": "Verifying ciphertext on GitHub",
"status": "pending",
"blocks": [],
"blockedBy": []
}

View file

@ -0,0 +1,9 @@
{
"id": "2",
"subject": "Task 2: Create .gitignore",
"description": "Write .gitignore with Obsidian churn and OS noise entries; verify it ignores test files.",
"activeForm": "Creating .gitignore",
"status": "completed",
"blocks": [],
"blockedBy": []
}

View file

@ -0,0 +1,9 @@
{
"id": "3",
"subject": "Task 3: Create .gitattributes for git-crypt",
"description": "Write .gitattributes with filter=git-crypt patterns for md/canvas/images/pdf; verify with git check-attr.",
"activeForm": "Creating .gitattributes",
"status": "completed",
"blocks": [],
"blockedBy": []
}

View file

@ -0,0 +1,9 @@
{
"id": "4",
"subject": "Task 4: Install git-crypt and initialize",
"description": "brew install git-crypt, run git-crypt init, verify .git/git-crypt/keys/default exists.",
"activeForm": "Installing and initializing git-crypt",
"status": "completed",
"blocks": [],
"blockedBy": []
}

View file

@ -0,0 +1,9 @@
{
"id": "5",
"subject": "Task 5: Write failing test for pre-push hook",
"description": "Create tests/test-pre-push-hook.sh with three scenarios; confirm it fails because the hook doesn't exist yet.",
"activeForm": "Writing pre-push hook test",
"status": "completed",
"blocks": [],
"blockedBy": []
}

View file

@ -0,0 +1,9 @@
{
"id": "6",
"subject": "Task 6: Write the pre-push hook",
"description": "Create hooks/pre-push, symlink into .git/hooks, run the test and confirm 3/3 pass.",
"activeForm": "Writing pre-push hook",
"status": "completed",
"blocks": [],
"blockedBy": []
}

View file

@ -0,0 +1,9 @@
{
"id": "7",
"subject": "Task 7: Sanity-check encryption with a test note",
"description": "Create a temporary note, stage it, verify the staged blob starts with \\0GITCRYPT, working tree stays plaintext, then remove.",
"activeForm": "Sanity-checking encryption",
"status": "completed",
"blocks": [],
"blockedBy": []
}

View file

@ -0,0 +1,9 @@
{
"id": "8",
"subject": "Task 8: Write the README",
"description": "Write README.md documenting bootstrap, daily use, restore, and key backup procedures.",
"activeForm": "Writing README",
"status": "completed",
"blocks": [],
"blockedBy": []
}

View file

@ -0,0 +1,9 @@
{
"id": "9",
"subject": "Task 9: Export key and store in 1Password (manual)",
"description": "git-crypt export-key ~/vault.key. User stores in 1Password. Then securely delete the temp file.",
"activeForm": "Exporting key for 1Password storage",
"status": "completed",
"blocks": [],
"blockedBy": []
}