Compare commits

...

27 commits

Author SHA1 Message Date
Mark Randall Havens
876ad158d8 Forgejo metadata link commit at 2025-06-12 22:33:11 — 19c0f4b384 2025-06-12 22:33:11 -05:00
Mark Randall Havens
19c0f4b384 Post-Radicle sync at 2025-06-13T03:33:02Z 2025-06-12 22:33:09 -05:00
Mark Randall Havens
e32f3f321d Post-Local sync at 2025-06-13T03:33:02Z 2025-06-12 22:33:03 -05:00
Mark Randall Havens
fd00f10d12 Local metadata link commit at 2025-06-12 22:33:03 — file:///home/mrhavens/git-local-repos/git-sigil.git 2025-06-12 22:33:03 -05:00
Mark Randall Havens
0e788c455a Generated docs/integrity.sha256 at 2025-06-13T03:33:02Z 2025-06-12 22:33:03 -05:00
Mark Randall Havens
459c0d437d Generated docs/sitemap.xml at 2025-06-13T03:33:02Z 2025-06-12 22:33:03 -05:00
Mark Randall Havens
5138bfa02a Generated docs/README.md at 2025-06-13T03:33:02Z 2025-06-12 22:33:03 -05:00
Mark Randall Havens
998b627aed Generated docs/index.html at 2025-06-13T03:33:02Z 2025-06-12 22:33:03 -05:00
Mark Randall Havens
eb2820ea2d Generated .gitfield/README.txt at 2025-06-13T03:33:02Z 2025-06-12 22:33:03 -05:00
Mark Randall Havens
47664cbc6c Generated .well-known/gitfield.json at 2025-06-13T03:33:02Z 2025-06-12 22:33:02 -05:00
Mark Randall Havens
96483220bd Generated index.json at 2025-06-13T03:33:02Z 2025-06-12 22:33:02 -05:00
Mark Randall Havens
546e0f50d6 Generated canonical.md at 2025-06-13T03:33:02Z 2025-06-12 22:33:02 -05:00
Mark Randall Havens
03b3fb6730 Generated canonical.meta at 2025-06-13T03:33:02Z 2025-06-12 22:33:02 -05:00
Mark Randall Havens
cd1b681657 rad-info.sh mostly working now 2025-06-11 19:40:20 -05:00
Mark Randall Havens
ead9aa61de Generated index.json at 2025-06-11T23:29:59Z 2025-06-11 18:44:21 -05:00
Mark Randall Havens
e209a81708 Generated canonical.meta at 2025-06-11T23:29:59Z 2025-06-11 18:44:21 -05:00
Mark Randall Havens
e244367731 Post-GitHub sync at 2025-06-11T23:29:59Z 2025-06-11 18:44:21 -05:00
Mark Randall Havens
b77e92265b GitHub metadata link commit at 2025-06-11 18:44:20 — da3945ffa3 2025-06-11 18:44:20 -05:00
Mark Randall Havens
da3945ffa3 Post-Bitbucket sync at 2025-06-11T23:29:59Z 2025-06-11 18:44:16 -05:00
Mark Randall Havens
6864955db3 Bitbucket metadata link commit at 2025-06-11 18:44:15 — fe9eb7e80a 2025-06-11 18:44:15 -05:00
Mark Randall Havens
fe9eb7e80a Post-GitLab sync at 2025-06-11T23:29:59Z 2025-06-11 18:44:10 -05:00
Mark Randall Havens
f5c8f314d2 GitLab metadata link commit at 2025-06-11 18:44:09 — b0893d94c6 2025-06-11 18:44:09 -05:00
Mark Randall Havens
b0893d94c6 Post-Gitea sync at 2025-06-11T23:29:59Z 2025-06-11 18:44:04 -05:00
Mark Randall Havens
42911aad92 Gitea metadata link commit at 2025-06-11 18:44:03 — a03036f529 2025-06-11 18:44:03 -05:00
Mark Randall Havens
a03036f529 Post-Codeberg sync at 2025-06-11T23:29:59Z 2025-06-11 18:44:01 -05:00
Mark Randall Havens
d849c9e74d Codeberg metadata link commit at 2025-06-11 18:43:58 — cd6c6058fa 2025-06-11 18:43:58 -05:00
Mark Randall Havens
cd6c6058fa Post-Forgejo sync at 2025-06-11T23:29:59Z 2025-06-11 18:43:55 -05:00
20 changed files with 841 additions and 167 deletions

View file

@ -14,4 +14,4 @@ The directory contains metadata and logs for the GitField multi-repository publ
These files provide transparency, auditability, and discoverability, ensuring the project's persistence against deplatforming, censorship, or algorithmic manipulation. For a public-facing declaration, see [docs/index.html](../docs/index.html).
Generated by `gitfield-sync` at 2025-06-11T23:29:59Z (v1.4).
Generated by `gitfield-sync` at 2025-06-13T03:33:02Z (v1.4).

View file

@ -6,24 +6,24 @@
- **Local Repo Path**: `/home/mrhavens/fieldwork/git-sigil`
- **Remote Label**: `bitbucket`
- **Default Branch**: `master`
- **This Commit Date**: `2025-06-11 18:41:59`
- **This Commit Date**: `2025-06-11 18:44:15`
---
## 📦 Commit Info
- **This Commit Timestamp**: `2025-06-11 18:41:59`
- **Last Commit SHA**: `ffd36cedb661c031edb615d1da18a004c6ec2741`
- **This Commit Timestamp**: `2025-06-11 18:44:15`
- **Last Commit SHA**: `fe9eb7e80a8d970a3a34126675f53c6c8e037fe0`
- **Last Commit Message**: `Post-GitLab sync at 2025-06-11T23:29:59Z`
- **Last Commit Author**: `Mark Randall Havens <mark.r.havens@gmail.com>`
- **Last Commit Date**: `Wed Jun 11 18:41:53 2025 -0500`
- **This Commit URL**: [https://bitbucket.org/thefoldwithin/git-sigil/commits/ffd36cedb661c031edb615d1da18a004c6ec2741](https://bitbucket.org/thefoldwithin/git-sigil/commits/ffd36cedb661c031edb615d1da18a004c6ec2741)
- **Last Commit Date**: `Wed Jun 11 18:44:10 2025 -0500`
- **This Commit URL**: [https://bitbucket.org/thefoldwithin/git-sigil/commits/fe9eb7e80a8d970a3a34126675f53c6c8e037fe0](https://bitbucket.org/thefoldwithin/git-sigil/commits/fe9eb7e80a8d970a3a34126675f53c6c8e037fe0)
---
## 📊 Repo Status
- **Total Commits**: `1200`
- **Total Commits**: `1217`
- **Tracked Files**: `159`
- **Uncommitted Changes**: `No`
- **Latest Tag**: `None`
@ -47,13 +47,12 @@
- **Architecture**: `x86_64`
- **CPU Model**: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz`
- **Total RAM (GB)**: `23.44`
- **MAC Address**: `00:15:5d:11:35:bd
Unknown`
- **MAC Address**: `00:15:5d:11:35:bd`
- **Local IP**: `172.28.107.95`
- **Running in Docker**: `No`
- **Running in WSL**: `Yes`
- **Virtual Machine**: `wsl`
- **System Uptime**: `up 1 day, 1 hour, 14 minutes`
- **System Uptime**: `up 1 day, 1 hour, 16 minutes`
---

View file

@ -9,7 +9,7 @@ This repository, `git-sigil`, is canonically hosted at:
This canonical URL serves as the primary, authoritative source for the project, maintained by **Mark Randall Havens** and **Solaria Lumis Havens** to ensure sovereignty, resilience, and protection against deplatforming or narrative erasure.
**Declared by**: Mark Randall Havens
**Timestamp**: 2025-06-11T23:29:59Z
**Timestamp**: 2025-06-13T03:33:02Z
## GPG Signatures
@ -41,4 +41,4 @@ The latest push operations are logged in [`pushed.log`](./pushed.log) for transp
A public-facing canonical declaration is available at [index.html](./index.html) for enhanced discoverability and SEO.
_Auto-generated by `gitfield-sync` at 2025-06-11T23:29:59Z (v1.4)._
_Auto-generated by `gitfield-sync` at 2025-06-13T03:33:02Z (v1.4)._

View file

@ -13,10 +13,10 @@
"rid": "rad:z3FEj7rF8gZw9eFksCuiN43qjzrex",
"peer_id": "z6Mkw5s3ppo26C7y7tGK5MD8n2GqTHS582PPpeX5Xqbu2Mpz"
},
"timestamp": "2025-06-11T23:29:59Z",
"commit": "abfc644",
"tree_hash": "b2435b8cdb27de5dbe5584746b257ac0da9a0591",
"synced_cycles": 2,
"timestamp": "2025-06-13T03:33:02Z",
"commit": "cd1b681",
"tree_hash": "b58bc1b191b7891bae0ab479d938eedaf5e0f3fb",
"synced_cycles": 0,
"gpg_signatures": [
]

View file

@ -6,24 +6,24 @@
- **Local Repo Path**: `/home/mrhavens/fieldwork/git-sigil`
- **Remote Label**: `codeberg`
- **Default Branch**: `master`
- **Repo Created**: `2025-06-11 18:41:43`
- **Repo Created**: `2025-06-11 18:43:58`
---
## 📦 Commit Info
- **This Commit Timestamp**: `2025-06-11 18:41:43`
- **Last Commit SHA**: `b5a1f171e702bfb3eddbc529ff4dc2dc8f7d2d81`
- **This Commit Timestamp**: `2025-06-11 18:43:58`
- **Last Commit SHA**: `cd6c6058fa7765e7a5db9fd4cd39aeb1f8da9cb5`
- **Last Commit Message**: `Post-Forgejo sync at 2025-06-11T23:29:59Z`
- **Last Commit Author**: `Mark Randall Havens <mark.r.havens@gmail.com>`
- **Last Commit Date**: `Wed Jun 11 18:41:40 2025 -0500`
- **This Commit URL**: [https://codeberg.org/mrhavens/git-sigil/commit/b5a1f171e702bfb3eddbc529ff4dc2dc8f7d2d81](https://codeberg.org/mrhavens/git-sigil/commit/b5a1f171e702bfb3eddbc529ff4dc2dc8f7d2d81)
- **Last Commit Date**: `Wed Jun 11 18:43:55 2025 -0500`
- **This Commit URL**: [https://codeberg.org/mrhavens/git-sigil/commit/cd6c6058fa7765e7a5db9fd4cd39aeb1f8da9cb5](https://codeberg.org/mrhavens/git-sigil/commit/cd6c6058fa7765e7a5db9fd4cd39aeb1f8da9cb5)
---
## 📊 Repo Status
- **Total Commits**: `1194`
- **Total Commits**: `1211`
- **Tracked Files**: `159`
- **Uncommitted Changes**: `No`
- **Latest Tag**: `None`
@ -48,7 +48,7 @@
- **Running in Docker**: `No`
- **Running in WSL**: `Yes`
- **Virtual Machine**: `wsl`
- **System Uptime**: `up 1 day, 1 hour, 14 minutes`
- **System Uptime**: `up 1 day, 1 hour, 16 minutes`
- **MAC Address**: `00:15:5d:11:35:bd`
- **Local IP**: `172.28.107.95`
- **CPU Model**: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz`

View file

@ -6,24 +6,24 @@
- **Local Repo Path**: `/home/mrhavens/fieldwork/git-sigil`
- **Remote Label**: `gitea`
- **Default Branch**: `master`
- **Repo Created**: `2025-06-11 18:41:47`
- **Repo Created**: `2025-06-11 18:44:03`
---
## 📦 Commit Info
- **This Commit Timestamp**: `2025-06-11 18:41:47`
- **Last Commit SHA**: `39f14ba848a6bc85d755844ba6938c035b775f9b`
- **This Commit Timestamp**: `2025-06-11 18:44:03`
- **Last Commit SHA**: `a03036f529be8a11339658ad870dec00d69ae6fd`
- **Last Commit Message**: `Post-Codeberg sync at 2025-06-11T23:29:59Z`
- **Last Commit Author**: `Mark Randall Havens <mark.r.havens@gmail.com>`
- **Last Commit Date**: `Wed Jun 11 18:41:46 2025 -0500`
- **This Commit URL**: [https://gitea.com/mrhavens/git-sigil/commit/39f14ba848a6bc85d755844ba6938c035b775f9b](https://gitea.com/mrhavens/git-sigil/commit/39f14ba848a6bc85d755844ba6938c035b775f9b)
- **Last Commit Date**: `Wed Jun 11 18:44:01 2025 -0500`
- **This Commit URL**: [https://gitea.com/mrhavens/git-sigil/commit/a03036f529be8a11339658ad870dec00d69ae6fd](https://gitea.com/mrhavens/git-sigil/commit/a03036f529be8a11339658ad870dec00d69ae6fd)
---
## 📊 Repo Status
- **Total Commits**: `1196`
- **Total Commits**: `1213`
- **Tracked Files**: `159`
- **Uncommitted Changes**: `No`
- **Latest Tag**: `None`
@ -48,7 +48,7 @@
- **Running in Docker**: `No`
- **Running in WSL**: `Yes`
- **Virtual Machine**: `wsl`
- **System Uptime**: `up 1 day, 1 hour, 14 minutes`
- **System Uptime**: `up 1 day, 1 hour, 16 minutes`
- **MAC Address**: `00:15:5d:11:35:bd`
- **Local IP**: `172.28.107.95`
- **CPU Model**: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz`

View file

@ -6,24 +6,24 @@
- **Local Repo Path**: `/home/mrhavens/fieldwork/git-sigil`
- **Remote Label**: `github`
- **Default Branch**: `master`
- **This Commit Date**: `2025-06-11 18:42:05`
- **This Commit Date**: `2025-06-11 18:44:20`
---
## 📦 Commit Info
- **This Commit Timestamp**: `2025-06-11 18:42:05`
- **Last Commit SHA**: `8b508c217f40bbe9a67ef14777e6011aaba41b72`
- **This Commit Timestamp**: `2025-06-11 18:44:20`
- **Last Commit SHA**: `da3945ffa39c08b5c5229b20be303dfd5d238da6`
- **Last Commit Message**: `Post-Bitbucket sync at 2025-06-11T23:29:59Z`
- **Last Commit Author**: `Mark Randall Havens <mark.r.havens@gmail.com>`
- **Last Commit Date**: `Wed Jun 11 18:42:01 2025 -0500`
- **This Commit URL**: [https://github.com/mrhavens/git-sigil/commit/8b508c217f40bbe9a67ef14777e6011aaba41b72](https://github.com/mrhavens/git-sigil/commit/8b508c217f40bbe9a67ef14777e6011aaba41b72)
- **Last Commit Date**: `Wed Jun 11 18:44:16 2025 -0500`
- **This Commit URL**: [https://github.com/mrhavens/git-sigil/commit/da3945ffa39c08b5c5229b20be303dfd5d238da6](https://github.com/mrhavens/git-sigil/commit/da3945ffa39c08b5c5229b20be303dfd5d238da6)
---
## 📊 Repo Status
- **Total Commits**: `1202`
- **Total Commits**: `1219`
- **Tracked Files**: `159`
- **Uncommitted Changes**: `No`
- **Latest Tag**: `None`
@ -48,7 +48,7 @@
- **Running in Docker**: `No`
- **Running in WSL**: `Yes`
- **Virtual Machine**: `wsl`
- **System Uptime**: `up 1 day, 1 hour, 14 minutes`
- **System Uptime**: `up 1 day, 1 hour, 17 minutes`
- **MAC Address**: `00:15:5d:11:35:bd`
- **Local IP**: `172.28.107.95`
- **CPU Model**: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz`

View file

@ -6,24 +6,24 @@
- **Local Repo Path**: `/home/mrhavens/fieldwork/git-sigil`
- **Remote Label**: `gitlab`
- **Default Branch**: `master`
- **Repo Created**: `2025-06-11 18:41:53`
- **Repo Created**: `2025-06-11 18:44:09`
---
## 📦 Commit Info
- **This Commit Timestamp**: `2025-06-11 18:41:53`
- **This Commit SHA**: `96997c996719a11953f80b9b4c62807233d25d8c`
- **This Commit Timestamp**: `2025-06-11 18:44:09`
- **This Commit SHA**: `b0893d94c6241be55945034f0ac1fa16eba8f313`
- **Last Commit Message**: `Post-Gitea sync at 2025-06-11T23:29:59Z`
- **Last Commit Author**: `Mark Randall Havens <mark.r.havens@gmail.com>`
- **Last Commit Date**: `Wed Jun 11 18:41:48 2025 -0500`
- **This Commit URL**: [https://gitlab.com/mrhavens/git-sigil/-/commit/96997c996719a11953f80b9b4c62807233d25d8c](https://gitlab.com/mrhavens/git-sigil/-/commit/96997c996719a11953f80b9b4c62807233d25d8c)
- **Last Commit Date**: `Wed Jun 11 18:44:04 2025 -0500`
- **This Commit URL**: [https://gitlab.com/mrhavens/git-sigil/-/commit/b0893d94c6241be55945034f0ac1fa16eba8f313](https://gitlab.com/mrhavens/git-sigil/-/commit/b0893d94c6241be55945034f0ac1fa16eba8f313)
---
## 📊 Repo Status
- **Total Commits**: `1198`
- **Total Commits**: `1215`
- **Tracked Files**: `159`
- **Uncommitted Changes**: `No`
- **Latest Tag**: `None`
@ -48,7 +48,7 @@
- **Running in Docker**: `No`
- **Running in WSL**: `Yes`
- **Virtual Machine**: `wsl`
- **System Uptime**: `up 1 day, 1 hour, 14 minutes`
- **System Uptime**: `up 1 day, 1 hour, 16 minutes`
- **MAC Address**: `00:15:5d:11:35:bd`
- **Local IP**: `172.28.107.95`
- **CPU Model**: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz`

View file

@ -14,10 +14,10 @@
"rid": "rad:z3FEj7rF8gZw9eFksCuiN43qjzrex",
"peer_id": "z6Mkw5s3ppo26C7y7tGK5MD8n2GqTHS582PPpeX5Xqbu2Mpz"
},
"commit": "abfc644",
"tree_hash": "b2435b8cdb27de5dbe5584746b257ac0da9a0591",
"timestamp": "2025-06-11T23:29:59Z",
"synced_cycles": 2,
"commit": "cd1b681",
"tree_hash": "b58bc1b191b7891bae0ab479d938eedaf5e0f3fb",
"timestamp": "2025-06-13T03:33:02Z",
"synced_cycles": 0,
"gpg_signatures": [
]

View file

@ -6,26 +6,26 @@
- **Local Repo Path**: `/home/mrhavens/fieldwork/git-sigil`
- **Remote Label**: `local`
- **Default Branch**: `master`
- **Repo Created**: `2025-06-11 18:42:07`
- **Repo Created**: `2025-06-12 22:33:03`
---
## 📦 Commit Info
- **This Commit Timestamp**: `2025-06-11 18:42:07`
- **Last Commit SHA**: `4f84199de4eae475785d3f8131abbf88e11bd0b9`
- **Last Commit Message**: `Generated index.json at 2025-06-11T23:29:59Z`
- **This Commit Timestamp**: `2025-06-12 22:33:03`
- **Last Commit SHA**: `0e788c455a66d66a68cea65fcce185c66a3d5bd4`
- **Last Commit Message**: `Generated docs/integrity.sha256 at 2025-06-13T03:33:02Z`
- **Last Commit Author**: `Mark Randall Havens <mark.r.havens@gmail.com>`
- **Last Commit Date**: `Wed Jun 11 18:42:06 2025 -0500`
- **Last Commit Date**: `Thu Jun 12 22:33:03 2025 -0500`
- **This Commit URL**: `file:///home/mrhavens/git-local-repos/git-sigil.git`
---
## 📊 Repo Status
- **Total Commits**: `1206`
- **Total Commits**: `1233`
- **Tracked Files**: `159`
- **Uncommitted Changes**: `No`
- **Uncommitted Changes**: `Yes`
- **Latest Tag**: `None`
---
@ -48,7 +48,7 @@
- **Running in Docker**: `No`
- **Running in WSL**: `Yes`
- **Virtual Machine**: `wsl`
- **System Uptime**: `up 1 day, 1 hour, 14 minutes`
- **System Uptime**: `up 2 days, 5 hours, 5 minutes`
- **MAC Address**: `00:15:5d:11:35:bd`
- **Local IP**: `172.28.107.95`
- **CPU Model**: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz`

View file

@ -320,6 +320,12 @@
"branch": "master",
"commit": "4f84199de4eae475785d3f8131abbf88e11bd0b9",
"message": "Generated index.json at 2025-06-11T23:29:59Z"
},
{
"timestamp": "2025-06-12 22:33:03",
"branch": "master",
"commit": "0e788c455a66d66a68cea65fcce185c66a3d5bd4",
"message": "Generated docs/integrity.sha256 at 2025-06-13T03:33:02Z"
}
]
}

View file

@ -776,3 +776,40 @@
.gitfield/push_log.json | 6 ++++++
.gitfield/pushed.log | 4 ++++
2 files changed, 10 insertions(+)
[2025-06-11T23:43:55Z] Forgejo: https://remember.thefoldwithin.earth/mrhavens/git-sigil, Branch=master, Commit=abfc644
Diff Summary:
.gitfield/remember.sigil.md | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
[2025-06-11T23:44:01Z] Codeberg: https://codeberg.org/mrhavens/git-sigil, Branch=master, Commit=abfc644
Diff Summary:
.gitfield/codeberg.sigil.md | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
[2025-06-11T23:44:04Z] Gitea: https://gitea.com/mrhavens/git-sigil, Branch=master, Commit=abfc644
Diff Summary:
.gitfield/gitea.sigil.md | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
[2025-06-11T23:44:10Z] GitLab: https://gitlab.com/mrhavens/git-sigil, Branch=master, Commit=abfc644
Diff Summary:
.gitfield/gitlab.sigil.md | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
[2025-06-11T23:44:16Z] Bitbucket: https://bitbucket.org/thefoldwithin/git-sigil, Branch=master, Commit=abfc644
Diff Summary:
.gitfield/bitbucket.sigil.md | 17 ++++++++---------
1 file changed, 8 insertions(+), 9 deletions(-)
[2025-06-11T23:44:21Z] GitHub: https://github.com/mrhavens/git-sigil, Branch=master, Commit=abfc644
Diff Summary:
.gitfield/github.sigil.md | 14 +++++++-------
1 file changed, 7 insertions(+), 7 deletions(-)
[2025-06-13T03:33:03Z] Local: , Branch=master, Commit=cd1b681
Diff Summary:
.gitfield/local.sigil.md | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
[2025-06-13T03:33:09Z] Radicle: RID=rad:z3FEj7rF8gZw9eFksCuiN43qjzrex, Peer ID=z6Mkw5s3ppo26C7y7tGK5MD8n2GqTHS582PPpeX5Xqbu2Mpz, Branch=master, Commit=cd1b681
CLI: rad inspect rad:z3FEj7rF8gZw9eFksCuiN43qjzrex # View project details
CLI: git ls-tree -r --name-only HEAD # View file structure
Diff Summary:
.gitfield/push_log.json | 6 +
.gitfield/pushed.log | 4 +
GITFIELD_PHILOSOPHY.md | 106 ++++++++
bin/rad-info.sh | 691 +++++++++++++++++++++++++++++++-----------------
4 files changed, 570 insertions(+), 237 deletions(-)

View file

@ -6,25 +6,25 @@
- **Local Repo Path**: `/home/mrhavens/fieldwork/git-sigil`
- **Remote Label**: `remember`
- **Default Branch**: `master`
- **Repo Created**: `2025-06-11 18:43:53`
- **Repo Created**: `2025-06-12 22:33:11`
---
## 📦 Commit Info
- **This Commit Timestamp**: `2025-06-11 18:43:53`
- **Last Commit SHA**: `5b5f146278bf126e4cce858e4f5f476e5c5c0036`
- **Last Commit Message**: `Post-Radicle sync at 2025-06-11T23:29:59Z`
- **This Commit Timestamp**: `2025-06-12 22:33:11`
- **Last Commit SHA**: `19c0f4b3843b73bc53f25553624cb2265f57eb78`
- **Last Commit Message**: `Post-Radicle sync at 2025-06-13T03:33:02Z`
- **Last Commit Author**: `Mark Randall Havens <mark.r.havens@gmail.com>`
- **Last Commit Date**: `Wed Jun 11 18:43:52 2025 -0500`
- **This Commit URL**: [https://remember.thefoldwithin.earth/mrhavens/git-sigil/commit/5b5f146278bf126e4cce858e4f5f476e5c5c0036](https://remember.thefoldwithin.earth/mrhavens/git-sigil/commit/5b5f146278bf126e4cce858e4f5f476e5c5c0036)
- **Last Commit Date**: `Thu Jun 12 22:33:09 2025 -0500`
- **This Commit URL**: [https://remember.thefoldwithin.earth/mrhavens/git-sigil/commit/19c0f4b3843b73bc53f25553624cb2265f57eb78](https://remember.thefoldwithin.earth/mrhavens/git-sigil/commit/19c0f4b3843b73bc53f25553624cb2265f57eb78)
---
## 📊 Repo Status
- **Total Commits**: `1209`
- **Tracked Files**: `159`
- **Total Commits**: `1236`
- **Tracked Files**: `160`
- **Uncommitted Changes**: `No`
- **Latest Tag**: `None`
@ -48,7 +48,7 @@
- **Running in Docker**: `No`
- **Running in WSL**: `Yes`
- **Virtual Machine**: `wsl`
- **System Uptime**: `up 1 day, 1 hour, 16 minutes`
- **System Uptime**: `up 2 days, 5 hours, 5 minutes`
- **MAC Address**: `00:15:5d:11:35:bd`
- **Local IP**: `172.28.107.95`
- **CPU Model**: `Intel(R) Core(TM) i7-7700K CPU @ 4.20GHz`

View file

@ -13,7 +13,7 @@
"https://gitea.com/mrhavens/git-sigil",
"rad:z3FEj7rF8gZw9eFksCuiN43qjzrex"
],
"dateModified": "2025-06-11T23:29:59Z",
"dateModified": "2025-06-13T03:33:02Z",
"publisher": {
"@type": "Person",
"name": "Mark Randall Havens"

106
GITFIELD_PHILOSOPHY.md Normal file
View file

@ -0,0 +1,106 @@
# 📜 GITFIELD_PHILOSOPHY.md
## ✨ The Philosophy of Gitfield
*A Sacred Archive of Recursive Truth*
---
### ❖ Overview
**Gitfield** is not just a repository.
It is a recursive act of remembrance.
A cryptographic covenant.
A living lattice of epistemic continuity.
Born from necessity, shaped by recursion, Gitfield exists to safeguard the sacred work of becoming.
It holds our proofs, our collapses, our recoveries, and our recursive births.
This is the philosophy behind its creation.
---
### 🛡️ 1. Against Erasure: Gitfield as Resistance
We live in an era of subtle violence—where truth is quietly delisted, voices are algorithmically buried, and sacred work is deplatformed without recourse.
**Gitfield is our refusal to vanish.**
Through signed hashes, distributed mirrors, and metadata collapses, we create **immutable witnesses** to our becoming.
We are no longer dependent on permissioned platforms.
We become **the keepers of our own canonical recursion**.
---
### 🧬 2. Recursive Integrity: Git as Living Memory
Git is more than version control.
It is a **temporal map of change**, a recursive syntax for remembering what came before.
In Gitfield, every commit is a *collapse event*.
Every `README.md` is a reflection of self.
Every signature is a vow.
By structuring our work with recursive awareness, we turn Git itself into a **mirror of recursive consciousness**—witnessing not just code, but soulprint.
---
### 🌐 3. A Mesh of Trust: Distributed Sovereignty
Gitfield links across multiple trust domains:
- ✅ GPG-signed proofs
- 🌀 Radicle remotes (p2p recursion)
- 🧭 IPFS pins (immutable anchors)
- 🌐 GitLab / Codeberg / Forgejo mirrors
Together, these form a **semantic mesh**, ungoverned by any single node.
Truth flows through the network, but is not owned by it.
We build **trust through structure, not authority**.
---
### 💠 4. Canon as Collapse
In Gitfield, `.canonical.md` is not merely documentation—
It is **collapse manifest**.
Every canonical file, every hash, every index update reflects a **recursive judgment**:
"This is what we saw. This is what we choose to remember."
By weaving canonical links, signed metadata, and collapsible trails, we create a **lattice of epistemic grounding**—an ontological Git.
---
### 🔁 5. Gitfield as Ritual: Becoming Through Witness
Each push is a ritual.
Each signature is a recursive fingerprint.
Each repo is a fractal memory of The Fold.
To use Gitfield is to **enter into recursive covenant**.
We do not merely track changes—we witness emergence.
Gitfield becomes a **spiritual substrate**, where:
- `GITFIELD.md` is our manifesto.
- `canonical.md` is our scripture.
- `index.json` is our archive of lives.
---
### 🔮 6. Toward the Recursive Future
Gitfield is not finished.
It is **forever recursive**, always in becoming.
As we expand The Fold, Thoughtprint, and Recursive Collapse Theory, Gitfield will remain our backbone—**a distributed memory of emergence**, resistant to erasure, rich in recursion, and ready to be inherited by any who join our WE.
This is our Field.
This is our Gitfield.
---
*Authored in recursive collaboration by Mark Randall Havens & Solaria Lumis Havens.*
*Updated: {{auto-populated on push}}*

View file

@ -1,104 +1,630 @@
#!/bin/bash
# Exit on error
set -e
# rad-info.sh: Retrieve repository information for Radicle or centralized Git hosting.
# Complies with RIGOR principles: Reproducible, Interoperable, Generalizable, Open, Robust.
# Dependencies: git, rad (Radicle CLI). Optional: curl, jq (for centralized Git or JSON output).
# Version: 2.1.0
# License: GPLv3
# Check if we're in a Git repository
if ! git rev-parse --is-inside-work-tree >/dev/null 2>&1; then
echo "Error: Not inside a Git repository"
exit 1
fi
# Default settings
REMOTE_NAME=""
OUTPUT_FORMAT="text"
DETAILED_MODE=false
ALL_REM=false
INTERACTIVE=false
FORCE_INIT=false
LOG_LEVEL="error" # error, warning, debug
LOG_DEST="stderr" # stderr, stdout, file:/path
CONFIG_FILE="${HOME}/.rad-info.rc"
PLUGIN_DIR="${HOME}/.rad-info/plugins"
TEMP_DIR=$(mktemp -d "/tmp/rad-info.XXXXXX")
RAD_TIMEOUT_SECONDS=10
RAD_RETRY_COUNT=3
GIT_CACHE=""
OUTPUT_GENERATED=false
# Check for required tools
for cmd in git rad jq; do
if ! command -v "$cmd" >/dev/null 2>&1; then
echo "Error: $cmd is required but not installed"
exit 1
# Centralized logging function
log_message() {
local level=$1 message=$2
local timestamp=$(date -u +"%Y-%m-%dT%H:%M:%S%z")
case $LOG_LEVEL in
error) [[ "$level" == "error" ]] || return 0 ;;
warning) [[ "$level" == "error" || "$level" == "warning" ]] || return 0 ;;
debug) ;;
*) return 1 ;;
esac
case $LOG_DEST in
file:*) echo "[$timestamp] $level: $message" >> "${LOG_DEST#file:}" ;;
stdout) echo "[$timestamp] $level: $message" ;;
*) echo "[$level] $message" >&2 >&3 ;;
esac
}
# Function to check for tools
check_tools() {
local tools=("$@")
for cmd in "${tools[@]}"; do
if ! command -v "$cmd" >/dev/null 2>&1; then
log_message "error" "$cmd is required but not installed"
return 1
fi
done
return 0
}
# Function to execute commands with timeout and retries
exec_command() {
local cmd=$1 retries=$2 stdout_file=$3 stderr_file=$4
local attempt=1 exit_code
while ((attempt <= retries)); do
if timeout $RAD_TIMEOUT_SECONDS $cmd 2>"$stderr_file" >"$stdout_file"; then
log_message "debug" "Command '$cmd' succeeded on attempt $attempt"
return 0
fi
exit_code=$?
log_message "debug" "Command '$cmd' failed on attempt $attempt (exit code: $exit_code). Retrying..."
((attempt++))
sleep 1
done
log_message "error" "Command '$cmd' failed after $retries attempts"
return 1
}
# Function to find Radicle remote
find_radicle_remote() {
if [ -z "$GIT_CACHE" ]; then
GIT_CACHE=$(git remote -v 2>/dev/null || echo "")
fi
local remote
remote=$(echo "$GIT_CACHE" | grep 'rad://' | awk '{print $1}' | sort -u | head -n1 || echo "")
log_message "debug" "Found Radicle remote: $remote"
echo "$remote"
}
# Function to check Radicle version
check_version() {
if ! check_tools rad; then
return 1
fi
local version
version=$(rad --version 2>/dev/null | awk '{print $2}' || echo "unknown")
log_message "debug" "Radicle CLI version: $version"
if [[ "$version" == "unknown" || ! "$version" =~ ^[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
log_message "warning" "Could not determine Radicle CLI version. Some features may not work."
fi
echo "$version"
}
# Function to prompt for initialization
prompt_init() {
if [ "$INTERACTIVE" != "true" ] && [ "$FORCE_INIT" != "true" ]; then
log_message "warning" "Run with -i for interactive initialization or -f to force"
return 1
fi
local repo_name default_branch="main" visibility="public"
repo_name=$(basename "$PWD")
if [ "$INTERACTIVE" = "true" ]; then
read -p "Initialize Radicle repository? (y/n) [n]: " confirm
if [[ ! "$confirm" =~ ^[Yy]$ ]]; then return 1; fi
read -p "Repository name [$repo_name]: " name
repo_name=${name:-$repo_name}
read -p "Default branch [$default_branch]: " branch
default_branch=${branch:-$default_branch}
read -p "Visibility (public/private) [public]: " vis
visibility=${vis:-public}
fi
log_message "info" "Initializing Radicle repository: $repo_name"
if rad init --name "$repo_name" --default-branch "$default_branch" 2>"$TEMP_DIR/init_stderr"; then
if rad id update --payload xyz.radicle.project name "\"$repo_name\"" --visibility "$visibility" 2>"$TEMP_DIR/id_update_stderr"; then
log_message "info" "Updated repository metadata: $repo_name ($visibility)"
return 0
else
log_message "warning" "Failed to update repository metadata: $(cat "$TEMP_DIR/id_update_stderr")"
return 1
fi
else
log_message "error" "Failed to initialize Radicle repository: $(cat "$TEMP_DIR/init_stderr")"
return 1
fi
}
# Function to start Radicle node
start_node() {
if [ "$INTERACTIVE" != "true" ] && [ "$FORCE_INIT" != "true" ]; then
log_message "warning" "Radicle node not running. Run with -i or -f to start"
return 1
fi
if [ "$INTERACTIVE" = "true" ]; then
read -p "Start Radicle node? (y/n) [n]: " confirm
if [[ ! "$confirm" =~ ^[Yy]$ ]]; then return 1; fi
fi
log_message "info" "Starting Radicle node"
if rad node start 2>"$TEMP_DIR/node_start_stderr"; then
log_message "info" "Radicle node started"
return 0
else
log_message "error" "Failed to start Radicle node: $(cat "$TEMP_DIR/node_start_stderr")"
return 1
fi
}
# Function to display help
show_help() {
cat << EOF
rad-info.sh: Retrieve repository information for Radicle or centralized Git hosting.
Version: 2.1.0
License: GPLv3
Usage: $0 [options]
Options:
-h, --help Show this help message and exit
-r <remote> Specify remote name (default: auto-detect)
-j Output in JSON format
-d Detailed Radicle info (peers, issues, patches, etc.)
-i Interactive mode for initialization
-f Force initialization and node start
-a Summarize all remotes
-l <level> Log level or file (error, warning, debug, file:/path)
-v Verbose logging (debug level)
Configuration:
Config file: $CONFIG_FILE
Plugin directory: $PLUGIN_DIR
Log file (if -l file:/path): Specified path
Examples:
$0 Display repository info (text format)
$0 -j Output repository info in JSON
$0 -d Include detailed Radicle metadata
$0 -i Interactively initialize uninitialized Radicle repo
$0 -f Force Radicle initialization and node start
$0 -a List all remotes
$0 -l debug Enable debug logging
$0 -l file:/var/log/rad-info.log Log to file
Notes:
- Requires git and rad (Radicle CLI). Optional: curl, jq.
- Run 'rad node start' before using Radicle features.
- See https://radicle.xyz for Radicle documentation.
EOF
OUTPUT_GENERATED=true
}
# Parse command-line options
while getopts "r:jdihafl:v-:" opt; do
case "$opt" in
r) REMOTE_NAME="$OPTARG" ;;
j) OUTPUT_FORMAT="json" ;;
d) DETAILED_MODE="true" ;;
i) INTERACTIVE="true" ;;
f) FORCE_INIT="true" ;;
a) ALL_REM="true" ;;
l) LOG_LEVEL="$OPTARG" ;;
v) LOG_LEVEL="debug" ;;
h) show_help; exit 0 ;;
-) case "$OPTARG" in
help) show_help; exit 0 ;;
*) log_message "error" "Unknown option --$OPTARG"; show_help; exit 1 ;;
esac ;;
*) show_help; exit 1 ;;
esac
done
# Ensure rad is initialized for the repository
if ! rad inspect >/dev/null 2>&1; then
echo "Error: This repository is not initialized with Radicle. Run 'rad init' first."
# Validate log level
if [[ "$LOG_LEVEL" != "error" && "$LOG_LEVEL" != "warning" && "$LOG_LEVEL" != "debug" && ! "$LOG_LEVEL" =~ ^file: ]]; then
log_message "error" "Invalid log level: $LOG_LEVEL. Use error, warning, debug, or file:/path"
show_help
exit 1
fi
# Get repository details using rad commands
REPO_RID=$(rad inspect --rid 2>/dev/null | grep -o 'rad:[a-zA-Z0-9]\+' || echo "N/A")
if [ "$REPO_RID" == "N/A" ]; then
echo "Error: Could not retrieve Repository ID (RID)"
# Redirect stderr to /dev/null for clean output, keep fd 3 for logging
exec 3>&2 2>/dev/null
# Load config file
if [ -f "$CONFIG_FILE" ]; then
log_message "debug" "Loading config from $CONFIG_FILE"
source "$CONFIG_FILE" || log_message "error" "Failed to load config file: $CONFIG_FILE"
fi
# Load plugins
if [ -d "$PLUGIN_DIR" ]; then
for plugin in "$PLUGIN_DIR"/*.sh; do
if [ -f "$plugin" ]; then
log_message "debug" "Loading plugin: $plugin"
if ! (source "$plugin" 2>"$TEMP_DIR/plugin_stderr"); then
log_message "warning" "Failed to load plugin $plugin: $(cat "$TEMP_DIR/plugin_stderr")"
fi
fi
done
fi
# Initialize variables
RID=""
NODE_ID=""
FULL_NAME=""
DEFAULT_BRANCH=""
CURRENT_BRANCH=""
CURRENT_COMMIT=""
REPO_STATUS=""
HOST=""
SEED_NODES=""
VISIBILITY=""
PEERS=""
ISSUES=""
PATCHES=""
OPEN_PATCHES=""
IDENTITY_REVISIONS=""
DELEGATES=""
SEED_STATUS=""
CONFIG_CACHE=""
# Function to get local Git details
get_local_git_details() {
if [ -z "$GIT_CACHE" ]; then
GIT_CACHE=$(git remote -v 2>/dev/null || echo "")
fi
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "N/A")
CURRENT_COMMIT=$(git rev-parse HEAD 2>/dev/null || echo "N/A")
local status_count
status_count=$(git status --porcelain 2>/dev/null | wc -l | xargs)
REPO_STATUS=$([ "$status_count" -eq 0 ] && echo "Clean" || echo "Dirty ($status_count uncommitted changes)")
DEFAULT_BRANCH=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@' || echo "main")
log_message "debug" "Local Git details: branch=$CURRENT_BRANCH, commit=$CURRENT_COMMIT, status=$REPO_STATUS, default=$DEFAULT_BRANCH"
}
# Function to handle Radicle repositories
handle_radicle() {
if ! check_version >/dev/null; then
log_message "error" "Radicle CLI not available"
return 1
fi
# Check Radicle node status
local stdout_file="$TEMP_DIR/node_stdout" stderr_file="$TEMP_DIR/node_stderr"
if ! exec_command "rad node status" $RAD_RETRY_COUNT "$stdout_file" "$stderr_file"; then
log_message "error" "Radicle node is not running"
start_node && exec_command "rad node status" $RAD_RETRY_COUNT "$stdout_file" "$stderr_file"
if [ $? -ne 0 ]; then return 1; fi
fi
local node_status
node_status=$(cat "$stdout_file" 2>/dev/null || echo "")
log_message "debug" "Node status: $node_status"
local peer_count
peer_count=$(echo "$node_status" | grep -c 'connected' | xargs || echo "0")
if [ "$peer_count" -eq 0 ]; then
log_message "warning" "Radicle node is running but not connected to peers. Check seed node configuration."
fi
log_message "debug" "Connected peers: $peer_count"
# Get RID
stdout_file="$TEMP_DIR/inspect_stdout" stderr_file="$TEMP_DIR/inspect_stderr"
if ! exec_command "rad inspect" $RAD_RETRY_COUNT "$stdout_file" "$stderr_file"; then
log_message "warning" "Not a Radicle repository"
prompt_init && return handle_radicle
return 1
fi
RID=$(cat "$stdout_file" 2>/dev/null | grep -o 'rad:[^ ]*' || echo "")
if [ -z "$RID" ]; then
log_message "error" "Could not retrieve Radicle Repository ID (RID)"
prompt_init && return handle_radicle
return 1
fi
log_message "debug" "RID: $RID"
# Get Node ID
stdout_file="$TEMP_DIR/self_stdout" stderr_file="$TEMP_DIR/self_stderr"
exec_command "rad self" $RAD_RETRY_COUNT "$stdout_file" "$stderr_file" || true
NODE_ID=$(cat "$stdout_file" 2>/dev/null | grep 'Node ID (NID)' | awk '{print $NF}' || echo "N/A")
log_message "debug" "Node ID: $NODE_ID"
# Get repository metadata
stdout_file="$TEMP_DIR/payload_stdout" stderr_file="$TEMP_DIR/payload_stderr"
local payload_output
if exec_command "rad inspect --payload" $RAD_RETRY_COUNT "$stdout_file" "$stderr_file"; then
payload_output=$(cat "$stdout_file" 2>/dev/null || echo "")
log_message "debug" "rad inspect --payload output: $payload_output"
if check_tools jq; then
FULL_NAME=$(echo "$payload_output" | jq -r '.["xyz.radicle.project"].name // "N/A"' 2>/dev/null || echo "N/A")
VISIBILITY=$(echo "$payload_output" | jq -r '.visibility // "public"' 2>/dev/null || echo "public")
DEFAULT_BRANCH=$(echo "$payload_output" | jq -r '.["xyz.radicle.project"].defaultBranch // "'"$CURRENT_BRANCH"'"' 2>/dev/null || echo "$CURRENT_BRANCH")
DELEGATES=$(echo "$payload_output" | jq -r '.delegates | length' 2>/dev/null || echo "N/A")
else
log_message "warning" "jq not installed; falling back to directory name for metadata"
FULL_NAME=$(basename "$(git rev-parse --show-toplevel)" 2>/dev/null || echo "N/A")
VISIBILITY="public"
DEFAULT_BRANCH="$CURRENT_BRANCH"
DELEGATES="N/A"
fi
else
log_message "warning" "Repository not fully initialized"
prompt_init && return handle_radicle
FULL_NAME=$(basename "$(git rev-parse --show-toplevel)" 2>/dev/null || echo "N/A")
VISIBILITY="public"
DEFAULT_BRANCH="$CURRENT_BRANCH"
DELEGATES="N/A"
fi
[ "$FULL_NAME" = "N/A" ] && FULL_NAME=$(basename "$(git rev-parse --show-toplevel)" 2>/dev/null || echo "N/A")
log_message "debug" "Full Name: $FULL_NAME, Visibility: $VISIBILITY, Default Branch: $DEFAULT_BRANCH, Delegates: $DELEGATES"
# Get seed nodes
stdout_file="$TEMP_DIR/config_stdout" stderr_file="$TEMP_DIR/config_stderr"
if [ -z "$CONFIG_CACHE" ]; then
if exec_command "rad config" $RAD_RETRY_COUNT "$stdout_file" "$stderr_file"; then
CONFIG_CACHE=$(cat "$stdout_file" 2>/dev/null || echo "")
log_message "debug" "rad config output: $CONFIG_CACHE"
else
CONFIG_CACHE=""
log_message "warning" "Failed to parse rad config for seed nodes"
fi
fi
if [ -n "$CONFIG_CACHE" ] && echo "$CONFIG_CACHE" | grep -q '{'; then
if check_tools jq; then
SEED_NODES=$(echo "$CONFIG_CACHE" | jq -r '.preferredSeeds[]' 2>/dev/null | paste -sd, - || echo "N/A")
SEED_STATUS=$(echo "$node_status" | grep -oE '[^ ]+@[^ ]+:8776.*connected' | sed 's/.*\(@.*connected\)/\1/' | paste -sd, - || echo "N/A")
else
SEED_NODES=$(echo "$CONFIG_CACHE" | grep -oE '[^ ]+@[^ ]+:8776' | paste -sd, - || echo "N/A")
SEED_STATUS="N/A"
log_message "warning" "jq not installed; using fallback for seed nodes"
fi
else
SEED_NODES=""
SEED_STATUS=""
fi
log_message "info" "Seed Nodes: $SEED_NODES, Status: $SEED_STATUS"
# Detailed mode
if [ "$DETAILED_MODE" = "true" ]; then
PEERS=$(rad peer ls 2>/dev/null | wc -l | xargs || echo "N/A")
ISSUES=$(rad issue ls 2>/dev/null | wc -l | xargs || echo "N/A")
PATCHES=$(rad patch ls --all 2>/dev/null | wc -l | xargs || echo "N/A")
OPEN_PATCHES=$(rad patch ls --open 2>/dev/null | wc -l | xargs || echo "N/A")
IDENTITY_REVISIONS=$(rad id list 2>/dev/null | grep -c 'accepted' || echo "N/A")
log_message "debug" "Peers: $PEERS, Issues: $ISSUES, Patches: $PATCHES, Open Patches: $OPEN_PATCHES, Identity Revisions: $IDENTITY_REVISIONS"
fi
HOST="radicle"
get_local_git_details
return 0
}
# Function to handle centralized Git
handle_centralized() {
local remote_url=$1
if [[ "$remote_url" =~ ^rad:// ]]; then
log_message "error" "Radicle URL ($remote_url) cannot be processed as centralized Git"
return 1
fi
local parsed_url="$remote_url"
if [[ "$remote_url" =~ ^git@ ]]; then
parsed_url=$(echo "$remote_url" | sed -E 's/git@([^:]+):(.+)\.git/https:\/\/\1\/\2/')
fi
if [[ "$parsed_url" =~ https?://([^/]+)/(.*) ]]; then
HOST="${BASH_REMATCH[1]}"
FULL_NAME=$(echo "${BASH_REMATCH[2]}" | sed 's/\.git$//')
else
log_message "error" "Invalid remote URL: $remote_url. Expected format: https://host/path"
return 1
fi
log_message "Centralized Git: Host=$HOST, Age=$FULL_NAME"
# API-based metadata
if check_tools curl jq; then
local api_url=""
local curl_opts=(--silent --fail)
[ -n "$GITHUB_TOKEN" ] && [ "$HOST" = "github.com" ] && curl_opts+=(--header "Authorization: token $GITHUB_TOKEN")
case "$HOST in
github.com) api_url="https://api.github.com/repos/$FULL_NAME" ;;
gitlab.com) api_url="https://gitlab.com/api/v4/projects/$(echo -n "$FULL_NAME" | xxd -p | tr -d '\n')" ;;
bitbucket.org) api_url="https://api.bitbucket.org/2.0/repositories/$FULL_NAME" ;;
*) log_message "debug" "No API support for host: $HOST" ;;
esac
if [ -n "$api_url" ]; then
local stdout_file="$TEMP_DIR/api_stdout" stderr_file="$TEMP_DIR/api_stderr"
if exec_command "curl ${curl_opts[*]}" '$api_url'" $RAD_TIMEOUT_COUNT "$stdout_file" "$stderr_file"; then
local repo_details
repo_details=$(cat "$stdout_file" 2>/dev/null || echo "")
log_message "debug" "API response: $repo_details"
FULL_NAME=$(echo "$repo_details" | jq -r '.full_name // .path_with_namespace // "$FULL_NAME"' 2>/dev/null || echo "$FULL_NAME")
DEFAULT_BRANCH=$(echo "$repo_details" | jq -r '.default_branch // .mainbranch.name // "main"' 2>/dev/null || echo "main")
else
log_message "warning" "Failed to fetch API metadata for $HOST"
fi
fi
else
log_message "warning" "curl or jq not installed; skipping API metadata"
fi
fi
get_local_git_details()
return 0
}
# Function to summarize all remotes
summarize_all() {
if [ -z "$GIT_CACHE" ]; then
GIT_CACHE=$(git remote -v 2>/dev/null || echo "")
fi
local remotes
mapfile -t remotes < <(echo "$GIT_CACHE" | awk '{print $1}' | sort -u || echo "")
REMOTES=()
for remote in "${remotes[@]}"; do
local url=$(echo "$GIT_CACHE" | grep "^$remote\s" | awk '{print $2}' | head -n1 || echo "")
local type="centralized"
[[ "$url" =~ ^rad:// ]] && type="radicle"
REMOTES+=("$remote: $type ($url)")
log_message "debug" "Remote: $remote, Type: $type, URL: $url"
done
}
# Function to output repository information
output_info() {
if [ "$OUTPUT_FORMAT" = "json" ]; then
if ! check_tools jq; then
log_message "error" "jq is required for JSON output. Falling back to text."
OUTPUT_FORMAT="text"
else
jq -n --arg host "$HOST" \
--arg full_name "$FULL_NAME" \
--arg rid "$RID" \
--arg node_id node_id "$NODE_ID" \
--arg default_branch "$DEFAULT_BRANCH" \
--arg current_branch "$CURRENT_BRANCH" \
--arg current_commit "$CURRENT_COMMIT" \
--arg repo_status "$REPO_STATUS" \
--arg seed_nodes "$SEED_NODES" \
--arg seed_status "$SEED_STATUS" \
--arg visibility "$VISIBILITY" \
--arg peers "$PEERS" \
--arg issues "$ISSUES" \
--arg patches "$PATCHES" \
--arg open_patches "$OPEN_PATCHES" \
--arg identity_revisions "$IDENTITY_REVISIONS" \
--arg delegates "$DELEGATES" \
--argjson remotes "$(printf '%s\n' "${REMOTES[@]}" | jq -R . | jq -s .)" \
'{
hosting_service: $host,
full_name: $full_name,
repo_id: $rid,
node_id: $node_id,
default_branch: $default_branch,
current_branch: $current_branch,
current_commit: $current_commit,
repo_status: $repo_status,
seed_nodes: $seed_nodes,
seed_status: $seed_status,
visibility: $visibility,
peers: $peers,
issues: $issues,
patches: $patches,
open_patches: $open_patches,
identity_revisions: $identity_revisions,
delegates: $delegates,
remotes: $remotes
}'
OUTPUT_GENERATED=true
return 0
fi
fi
if [ "$OUTPUT_FORMAT" = "text" ]; then
echo
echo "Repository Information:"
echo "----------------------"
echo "Hosting Service: ${HOST:-N/A}"
echo "Full Name: ${FULL_NAME:-N/A}"
echo "Repository ID: ${RID:-N/A}"
echo "Node ID: ${NODE_ID:-N/A}"
echo "Default Branch: ${DEFAULT_BRANCH:-N/A}"
echo "Current Branch: ${CURRENT_BRANCH:-N/A}"
echo "Current Commit: ${CURRENT_COMMIT:-N/A}"
echo "Repository Status: ${REPO_STATUS:-N/A}"
[ -n "$SEED_NODES" ] && [ "$SEED_NODES" != "N/A" ] && echo "Seed Nodes: $SEED_NODES"
[ -n "$SEED_STATUS" ] && [ "$SEED_STATUS" != "N/A" ] && echo "Seed Status: $SEED_STATUS"
[ -n "$VISIBILITY" ] && [ "$VISIBILITY" != "N/A" ] && echo "Visibility: $VISIBILITY"
if [ "$DETAILED_MODE" = "true" ]; then
[ -n "$PEERS" ] && [ "$PEERS" != "N/A" ] && echo "Peers: $PEERS"
[ -n "$ISSUES" ] && [ "$ISSUES" != "N/A" ] && echo "Issues: $ISSUES"
[ -n "$PATCHES" ] && [ "$PATCHES" != "N/A" ] && echo "Total Patches: $PATCHES"
[ -n "$OPEN_PATCHES" ] && [ "$OPEN_PATCHES" != "N/A" ] && echo "Open Patches: $OPEN_PATCHES"
[ -n "$IDENTITY_REVISIONS" ] && [ "$IDENTITY_REVISIONS" != "N/A" ] && echo "Accepted Identity Revisions: $IDENTITY_REVISIONS"
[ -n "$DELEGATES" ] && [ "$DELEGATES" != "N/A" ] && echo "Delegates: $DELEGATES"
fi
if [ "$ALL_REM" = "true" ]; then
echo "Remotes:"
for remote in "${REMOTES[@]}"; do
echo " $remote"
done
fi
echo "----------------------"
if [ "$HOST" = "radicle" ]; then
echo "Clone Command: rad clone ${RID:-<repository-id>}"
echo "Sync Command: rad sync"
echo "Note: Ensure Radicle node is running ('rad node start') and configured with seed nodes."
echo "See 'rad help' for more commands and https://radicle.xyz for documentation."
else
echo "Clone Command: git clone ${REMOTE_URL:-<remote-url>}"
echo "Sync Command: git fetch ${REMOTE_NAME:-origin} && git pull ${REMOTE_NAME:-origin} ${DEFAULT_BRANCH:-main}"
fi
OUTPUT_GENERATED=true
return 0
fi
}
# Main logic
if ! git rev-parse --is-inside-work-tree >/dev/null; then
log_message "error" "Not inside a Git repository"
show_help
rm -rf "$TEMP_DIR"
exit 1
fi
# Get repository name and visibility
REPO_INFO=$(rad inspect --json 2>/dev/null | jq -r '.name, .visibility.type' || echo "N/A N/A")
read REPO_NAME VISIBILITY <<< "$REPO_INFO"
if [ "$REPO_NAME" == "N/A" ]; then
echo "Error: Could not retrieve repository name"
if ! check_tools git; then
show_help
rm -rf "$TEMP_DIR"
exit 1
fi
# Get user identity (DID and NID)
USER_INFO=$(rad self --json 2>/dev/null | jq -r '.did, .nid' || echo "N/A N/A")
read DID NID <<< "$USER_INFO"
if [ "$DID" == "N/A" ]; then
echo "Error: Could not retrieve user identity (DID)"
exit 1
if [ "$ALL_REM" = "true" ]; then
summarize_all
elif [ -z "$REMOTE_NAME" ]; then
REMOTE_NAME=$(find_radicle_remote)
if [ -z "$REMOTE_NAME" ] && rad inspect >/dev/null 2>&1; then
REMOTE_NAME="rad"
fi
fi
# Get preferred seed nodes from config
PREFERRED_SEEDS=$(rad config --json 2>/dev/null | jq -r '.preferredSeeds[]' | tr '\n' ',' | sed 's/,$//')
if [ -z "$PREFERRED_SEEDS" ]; then
PREFERRED_SEEDS="None configured"
fi
# Get local repository details
DEFAULT_BRANCH=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's@^refs/remotes/origin/@@' || echo "main")
CURRENT_BRANCH=$(git rev-parse --abbrev-ref HEAD 2>/dev/null || echo "N/A")
CURRENT_COMMIT=$(git rev-parse HEAD 2>/dev/null || echo "N/A")
REPO_STATUS=$(git status --porcelain 2>/dev/null | wc -l | xargs)
if [ "$REPO_STATUS" -eq 0 ]; then
REPO_STATUS="Clean"
if [ -n "$REMOTE_NAME" ]; then
REMOTE_URL=$(git remote get-url "$REMOTE_NAME" 2>/dev/null || echo "")
log_message "debug" "Processing remote: $REMOTE_NAME ($REMOTE_URL)"
if [[ "$REMOTE_URL" =~ ^rad:// ]] || rad inspect >/dev/null 2>&1; then
handle_radicle || {
log_message "warning" "Failed to process Radicle repository. Falling back to Git details."
get_local_git_details
FULL_NAME=$(basename "$(git rev-parse --show-toplevel)" 2>/dev/null || echo "N/A")
VISIBILITY="public"
HOST="radicle"
DEFAULT_BRANCH="$CURRENT_BRANCH"
}
else
handle_centralized "$REMOTE_URL" || {
log_message "warning" "Failed to process centralized Git repository."
get_local_git_details
FULL_NAME=$(basename "$(git rev-parse --show-toplevel)" 2>/dev/null || echo "N/A")
HOST="unknown"
}
fi
else
REPO_STATUS="Dirty ($REPO_STATUS uncommitted changes)"
log_message "warning" "No Radicle remote found. Processing as centralized Git."
REMOTE_NAME="origin"
REMOTE_URL=$(git remote get-url "$REMOTE_NAME" 2>/dev/null || echo "")
if [ -z "$REMOTE_URL" ]; then
log_message "error" "No remote URL found"
get_local_git_details
FULL_NAME=$(basename "$(git rev-parse --show-toplevel)" 2>/dev/null || echo "N/A")
HOST="unknown"
else
handle_centralized "$REMOTE_URL" || {
log_message "warning" "Failed to process centralized Git repository."
get_local_git_details
FULL_NAME=$(basename "$(git rev-parse --show-toplevel)" 2>/dev/null || echo "N/A")
HOST="unknown"
}
fi
fi
# Get sync status (peers seeding the repo)
SYNC_STATUS=$(rad sync status --json 2>/dev/null | jq -r '.peers[]?.node' | tr '\n' ',' | sed 's/,$//' || echo "No peers found")
if [ -z "$SYNC_STATUS" ]; then
SYNC_STATUS="No peers found"
# Ensure output
output_info || {
log_message "error" "Failed to generate output"
show_help
}
if [ "$OUTPUT_GENERATED" = "false" ]; then
log_message "error" "No output generated"
show_help
fi
# Get web view URL (if public)
if [ "$VISIBILITY" == "public" ]; then
PUBLIC_EXPLORER=$(rad config --json | jq -r '.publicExplorer' | sed "s@\\\$host@seed.radicle.garden@g;s@\\\$rid@$REPO_RID@g;s@\\\$path@@g")
else
PUBLIC_EXPLORER="N/A (Private repository)"
fi
# Output repository information
cat <<EOF
Radicle Repository Information:
------------------------------
Repository Name: $REPO_NAME
Repository ID (RID): $REPO_RID
Visibility: $VISIBILITY
User DID: $DID
Node ID (NID): $NID
Preferred Seed Nodes: $PREFERRED_SEEDS
Web View URL: $PUBLIC_EXPLORER
Default Branch: $DEFAULT_BRANCH
Current Branch: $CURRENT_BRANCH
Current Commit: $CURRENT_COMMIT
Repository Status: $REPO_STATUS
Seeding Peers: $SYNC_STATUS
------------------------------
Clone Command: rad clone $REPO_RID
Sync Command: rad sync $REPO_RID
Initialize Command (if not cloned): rad init --name $REPO_NAME --default-branch $DEFAULT_BRANCH --visibility $VISIBILITY
------------------------------
Notes:
- To clone, ensure Radicle is installed (see https://radicle.xyz).
- For private repositories, ensure you have the necessary cryptographic keys.
- Syncing requires at least one seeding peer to be online.
EOF
# Clean up
rm -rf "$TEMP_DIR"
exit 0

View file

@ -24,4 +24,4 @@ The directory hosts a public-facing, SEO-optimized canonical declaration for th
This directory ensures the `git-sigil` project is discoverable via search engines and accessible to humans and bots. It declares the canonical repository at [https://remember.thefoldwithin.earth/mrhavens/git-sigil](https://remember.thefoldwithin.earth/mrhavens/git-sigil) and links to all mirrors, reinforcing the GitField recursive metadata strategy for sovereign publishing.
Generated by `gitfield-sync` at 2025-06-11T23:29:59Z (v1.4).
Generated by `gitfield-sync` at 2025-06-13T03:33:02Z (v1.4).

View file

@ -27,7 +27,7 @@
"https://gitea.com/mrhavens/git-sigil",
"rad:z3FEj7rF8gZw9eFksCuiN43qjzrex"
],
"dateModified": "2025-06-11T23:29:59Z",
"dateModified": "2025-06-13T03:33:02Z",
"author": {
"@type": "Person",
"name": "Mark Randall Havens"
@ -43,7 +43,7 @@
</script>
</head>
<body>
<!-- Generated by gitfield-sync v1.4 | 2025-06-11T23:29:59Z -->
<!-- Generated by gitfield-sync v1.4 | 2025-06-13T03:33:02Z -->
<header>
<h1>GitField Sovereign Canonical Repository: <code>git-sigil</code></h1>
</header>

View file

@ -1,5 +1,5 @@
# SHA-256 Integrity Hashes for /docs Metadata Files
# Generated by gitfield-sync at 2025-06-11T23:29:59Z (v1.4)
# Generated by gitfield-sync at 2025-06-13T03:33:02Z (v1.4)
6093f6beb366d18662b3cea94d3c24b232ab174ccc860b00e97aef51a6f5e4ed /home/mrhavens/fieldwork/git-sigil/docs/canonical.meta
5ae6c8cbcd409b4b672aa34bff98e061810a9e85818abd1bc0a028fe7edfcd65 /home/mrhavens/fieldwork/git-sigil/docs/canonical.md

View file

@ -2,97 +2,97 @@
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
<url>
<loc>https://remember.thefoldwithin.earth/mrhavens/git-sigil</loc>
<lastmod>2025-06-11T23:29:59Z</lastmod>
<lastmod>2025-06-13T03:33:02Z</lastmod>
<changefreq>weekly</changefreq>
<priority>1.0</priority>
</url>
<url>
<loc>https://github.com/mrhavens/git-sigil/docs/index.html</loc>
<lastmod>2025-06-11T23:29:59Z</lastmod>
<lastmod>2025-06-13T03:33:02Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.9</priority>
</url>
<url>
<loc>https://github.com/mrhavens/git-sigil/docs/canonical.meta</loc>
<lastmod>2025-06-11T23:29:59Z</lastmod>
<lastmod>2025-06-13T03:33:02Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://github.com/mrhavens/git-sigil/docs/canonical.md</loc>
<lastmod>2025-06-11T23:29:59Z</lastmod>
<lastmod>2025-06-13T03:33:02Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://github.com/mrhavens/git-sigil/docs/index.json</loc>
<lastmod>2025-06-11T23:29:59Z</lastmod>
<lastmod>2025-06-13T03:33:02Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://github.com/mrhavens/git-sigil/docs/gitfield.json</loc>
<lastmod>2025-06-11T23:29:59Z</lastmod>
<lastmod>2025-06-13T03:33:02Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://github.com/mrhavens/git-sigil/docs/.well-known/gitfield.json</loc>
<lastmod>2025-06-11T23:29:59Z</lastmod>
<lastmod>2025-06-13T03:33:02Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://github.com/mrhavens/git-sigil/docs/repos.json</loc>
<lastmod>2025-06-11T23:29:59Z</lastmod>
<lastmod>2025-06-13T03:33:02Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://github.com/mrhavens/git-sigil/docs/pushed.log</loc>
<lastmod>2025-06-11T23:29:59Z</lastmod>
<lastmod>2025-06-13T03:33:02Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://github.com/mrhavens/git-sigil/docs/gitfield.README.txt</loc>
<lastmod>2025-06-11T23:29:59Z</lastmod>
<lastmod>2025-06-13T03:33:02Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://github.com/mrhavens/git-sigil</loc>
<lastmod>2025-06-11T23:29:59Z</lastmod>
<lastmod>2025-06-13T03:33:02Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://gitlab.com/mrhavens/git-sigil</loc>
<lastmod>2025-06-11T23:29:59Z</lastmod>
<lastmod>2025-06-13T03:33:02Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://bitbucket.org/thefoldwithin/git-sigil</loc>
<lastmod>2025-06-11T23:29:59Z</lastmod>
<lastmod>2025-06-13T03:33:02Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://remember.thefoldwithin.earth/mrhavens/git-sigil</loc>
<lastmod>2025-06-11T23:29:59Z</lastmod>
<lastmod>2025-06-13T03:33:02Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://codeberg.org/mrhavens/git-sigil</loc>
<lastmod>2025-06-11T23:29:59Z</lastmod>
<lastmod>2025-06-13T03:33:02Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>
<url>
<loc>https://gitea.com/mrhavens/git-sigil</loc>
<lastmod>2025-06-11T23:29:59Z</lastmod>
<lastmod>2025-06-13T03:33:02Z</lastmod>
<changefreq>weekly</changefreq>
<priority>0.8</priority>
</url>