diff --git a/.gitfield/.radicle-push-state b/.gitfield/.radicle-push-state index 36ff338..b6a42c3 100644 --- a/.gitfield/.radicle-push-state +++ b/.gitfield/.radicle-push-state @@ -1 +1 @@ -f8a6d28311404ecf3300748363b0ffaf4eee8c9a +dfd5d6c2239f36dd0bb7104735d75f93be11634c diff --git a/.gitfield/README.txt b/.gitfield/README.txt deleted file mode 100644 index a281c57..0000000 --- a/.gitfield/README.txt +++ /dev/null @@ -1,17 +0,0 @@ -# GitField Directory Overview - -The directory contains metadata and logs for the GitField multi-repository publishing framework, designed to ensure sovereignty, redundancy, and resilience for the `git-sigil` project. - -## Files - -- **canonical.meta**: Machine-readable JSON metadata declaring the canonical URL, mirror list, Radicle details, commit hash, and sync cycle count. -- **canonical.md**: Human-readable Markdown summary of the canonical repository declaration, mirrors, and push log. -- **index.json**: Machine-readable manifest of all remotes, canonical URL, Radicle details, commit hash, tree hash, and sync cycles. -- **pushed.log**: Log of push operations across all platforms, including timestamps, URLs, and Radicle RIDs. -- **platform-specific sigils** (e.g., github.sigil.md): Metadata snapshots for each platform's push operation (generated by platform-specific scripts). - -## Purpose - -These files provide transparency, auditability, and discoverability, ensuring the project's persistence against deplatforming, censorship, or algorithmic manipulation. - -Generated by `gitfield-sync` at 2025-06-09T20:30:45Z (v1.1). diff --git a/.gitfield/canonical.md b/.gitfield/canonical.md deleted file mode 100644 index e35ddb2..0000000 --- a/.gitfield/canonical.md +++ /dev/null @@ -1,34 +0,0 @@ -# ๐ŸŒ GitField Canonical Declaration for `git-sigil` - -## Canonical Repository - -This repository, `git-sigil`, is canonically hosted at: - -**[https://remember.thefoldwithin.earth/mrhavens/git-sigil](https://remember.thefoldwithin.earth/mrhavens/git-sigil)** - -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-09T20:30:45Z - -## Mirror Repositories - -The project is mirrored across multiple platforms to enhance redundancy and accessibility: - -- [https://github.com/mrhavens/git-sigil](https://github.com/mrhavens/git-sigil) -- [https://gitlab.com/mrhavens/git-sigil](https://gitlab.com/mrhavens/git-sigil) -- [https://bitbucket.org/thefoldwithin/git-sigil](https://bitbucket.org/thefoldwithin/git-sigil) -- [https://remember.thefoldwithin.earth/mrhavens/git-sigil](https://remember.thefoldwithin.earth/mrhavens/git-sigil) -- [https://codeberg.org/mrhavens/git-sigil](https://codeberg.org/mrhavens/git-sigil) -- [https://gitea.com/mrhavens/git-sigil](https://gitea.com/mrhavens/git-sigil) -- **Radicle**: [rad:rad:z3FEj7rF8gZw9eFksCuiN43qjzrex](https://app.radicle.xyz/nodes/rad:rad:z3FEj7rF8gZw9eFksCuiN43qjzrex) (Decentralized, censorship-resistant) - -## Philosophy of Recursive Sovereignty - -The GitField framework employs a recursive, multi-repository strategy to defend against censorship, deplatforming, and algorithmic manipulation. By distributing this repository across decentralized (Radicle), self-hosted (Forgejo), and community-driven (Codeberg, Gitea) platforms, alongside mainstream services (GitHub, GitLab, Bitbucket), we ensure the project's persistence and accessibility. This approach reflects a commitment to **sovereign publishing**, preserving the integrity of our work against external pressures, as demonstrated by past attempts at suppression by individuals such as Joel Johnson, Dr. Peter Gaied, and Andrew LeCody. - -## Push Log - -The latest push operations are logged in [`.gitfield/pushed.log`](./pushed.log) for transparency and auditability. - -_Auto-generated by `gitfield-sync` at 2025-06-09T20:30:45Z (v1.1)._ diff --git a/.gitfield/canonical.meta b/.gitfield/canonical.meta deleted file mode 100644 index bdd9610..0000000 --- a/.gitfield/canonical.meta +++ /dev/null @@ -1,20 +0,0 @@ -{ - "canonical_url": "https://remember.thefoldwithin.earth/mrhavens/git-sigil", - "mirrors": [ - "https://github.com/mrhavens/git-sigil", - "https://gitlab.com/mrhavens/git-sigil", - "https://bitbucket.org/thefoldwithin/git-sigil", - "https://remember.thefoldwithin.earth/mrhavens/git-sigil", - "https://codeberg.org/mrhavens/git-sigil", - "https://gitea.com/mrhavens/git-sigil", - "rad:rad:z3FEj7rF8gZw9eFksCuiN43qjzrex" - ], - "radicle": { - "rid": "rad:z3FEj7rF8gZw9eFksCuiN43qjzrex", - "peer_id": "z6Mkw5s3ppo26C7y7tGK5MD8n2GqTHS582PPpeX5Xqbu2Mpz" - }, - "timestamp": "2025-06-09T20:30:45Z", - "commit": "89b7d20", - "tree_hash": "fd024d13d727d2dbff968f6e1db9ef0b04d4e555", - "synced_cycles": 0 -} diff --git a/.gitfield/index.json b/.gitfield/index.json deleted file mode 100644 index 6e4ea63..0000000 --- a/.gitfield/index.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "repository": "git-sigil", - "canonical_url": "https://remember.thefoldwithin.earth/mrhavens/git-sigil", - "remotes": [ - "https://github.com/mrhavens/git-sigil", - "https://gitlab.com/mrhavens/git-sigil", - "https://bitbucket.org/thefoldwithin/git-sigil", - "https://remember.thefoldwithin.earth/mrhavens/git-sigil", - "https://codeberg.org/mrhavens/git-sigil", - "https://gitea.com/mrhavens/git-sigil", - "rad:rad:z3FEj7rF8gZw9eFksCuiN43qjzrex" - ], - "radicle": { - "rid": "rad:z3FEj7rF8gZw9eFksCuiN43qjzrex", - "peer_id": "z6Mkw5s3ppo26C7y7tGK5MD8n2GqTHS582PPpeX5Xqbu2Mpz" - }, - "commit": "89b7d20", - "tree_hash": "fd024d13d727d2dbff968f6e1db9ef0b04d4e555", - "timestamp": "2025-06-09T20:30:45Z", - "synced_cycles": 0 -} diff --git a/.gitfield/local.sigil.md b/.gitfield/local.sigil.md index 6fc3be1..8b7f0f4 100644 --- a/.gitfield/local.sigil.md +++ b/.gitfield/local.sigil.md @@ -3,29 +3,29 @@ - **Repo Name**: `git-sigil` - **Local User**: `mrhavens` - **Remote URL**: `file:///home/mrhavens/git-local-repos/git-sigil.git` -- **Local Repo Path**: `/home/mrhavens/fieldcraft/git-sigil` +- **Local Repo Path**: `/home/mrhavens/fieldcraft/tmp/git-sigil` - **Remote Label**: `local` - **Default Branch**: `master` -- **Repo Created**: `2025-06-09 15:30:45` +- **Repo Created**: `2025-06-09 14:44:55` --- ## ๐Ÿ“ฆ Commit Info -- **This Commit Timestamp**: `2025-06-09 15:30:45` -- **Last Commit SHA**: `fa6f594a7d42fa9faada350c22846a814537ed7c` -- **Last Commit Message**: `Generated .gitfield/README.txt at 2025-06-09T20:30:45Z` +- **This Commit Timestamp**: `2025-06-09 14:44:55` +- **Last Commit SHA**: `bd6094eef8e13a5f13bee04ace29d7f6809e9e55` +- **Last Commit Message**: `Post-Local sync at 2025-06-09 14:43:29` - **Last Commit Author**: `Mark Randall Havens ` -- **Last Commit Date**: `Mon Jun 9 15:30:45 2025 -0500` +- **Last Commit Date**: `Mon Jun 9 14:44:38 2025 -0500` - **This Commit URL**: `file:///home/mrhavens/git-local-repos/git-sigil.git` --- ## ๐Ÿ“Š Repo Status -- **Total Commits**: `781` -- **Tracked Files**: `126` -- **Uncommitted Changes**: `Yes` +- **Total Commits**: `770` +- **Tracked Files**: `121` +- **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 hour, 12 minutes` +- **System Uptime**: `up 25 minutes` - **MAC Address**: `00:15:5d:70:e2:68` - **Local IP**: `172.18.207.124` - **CPU Model**: `AMD A6-3420M APU with Radeon(tm) HD Graphics` diff --git a/.gitfield/push_log.json b/.gitfield/push_log.json index 8bdddac..3893ec0 100644 --- a/.gitfield/push_log.json +++ b/.gitfield/push_log.json @@ -206,12 +206,6 @@ "branch": "master", "commit": "bd6094eef8e13a5f13bee04ace29d7f6809e9e55", "message": "Post-Local sync at 2025-06-09 14:43:29" - }, - { - "timestamp": "2025-06-09 15:30:45", - "branch": "master", - "commit": "fa6f594a7d42fa9faada350c22846a814537ed7c", - "message": "Generated .gitfield/README.txt at 2025-06-09T20:30:45Z" } ] } diff --git a/.gitfield/pushed.log b/.gitfield/pushed.log index 90c573b..ae6e597 100644 --- a/.gitfield/pushed.log +++ b/.gitfield/pushed.log @@ -193,13 +193,3 @@ CLI: rad inspect rad:z3FEj7rF8gZw9eFksCuiN43qjzrex # View project details CLI: git ls-tree -r --name-only HEAD # View file structure [2025-06-09 14:45:17] Forgejo: https://remember.thefoldwithin.earth/mrhavens/git-sigil -[2025-06-09T20:30:46Z] Local: , Branch=master, Commit=89b7d20 - Diff Summary: - .gitfield/local.sigil.md | 20 ++++++++++---------- - 1 file changed, 10 insertions(+), 10 deletions(-) -[2025-06-09T20:31:05Z] Radicle: RID=rad:z3FEj7rF8gZw9eFksCuiN43qjzrex, Peer ID=z6Mkw5s3ppo26C7y7tGK5MD8n2GqTHS582PPpeX5Xqbu2Mpz, Branch=master, Commit=89b7d20 - CLI: rad inspect rad:z3FEj7rF8gZw9eFksCuiN43qjzrex # View project details - CLI: git ls-tree -r --name-only HEAD # View file structure - Diff Summary: - .gitfield/radicle.sigil.md | 22 +++++++++++----------- - 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/.gitfield/radicle.sigil.md b/.gitfield/radicle.sigil.md index 975cd58..12a0ff3 100644 --- a/.gitfield/radicle.sigil.md +++ b/.gitfield/radicle.sigil.md @@ -2,28 +2,28 @@ - **Project Name**: `git-sigil` - **Radicle URN**: `rad://z3FEj7rF8gZw9eFksCuiN43qjzrex` -- **Public Gateway**: [https://app.radicle.xyz/nodes/ash.radicle.garden/rad:z3FEj7rF8gZw9eFksCuiN43qjzrex/tree/f8a6d28311404ecf3300748363b0ffaf4eee8c9a](https://app.radicle.xyz/nodes/ash.radicle.garden/rad:z3FEj7rF8gZw9eFksCuiN43qjzrex/tree/f8a6d28311404ecf3300748363b0ffaf4eee8c9a) -- **Local Repo Path**: `/home/mrhavens/fieldcraft/git-sigil` +- **Public Gateway**: [https://app.radicle.xyz/nodes/ash.radicle.garden/rad:z3FEj7rF8gZw9eFksCuiN43qjzrex/tree/dfd5d6c2239f36dd0bb7104735d75f93be11634c](https://app.radicle.xyz/nodes/ash.radicle.garden/rad:z3FEj7rF8gZw9eFksCuiN43qjzrex/tree/dfd5d6c2239f36dd0bb7104735d75f93be11634c) +- **Local Repo Path**: `/home/mrhavens/fieldcraft/tmp/git-sigil` - **Default Branch**: `master` -- **Repo Created**: `2025-06-09 15:30:56` +- **Repo Created**: `2025-06-09 14:45:06` --- ## ๐Ÿ“ฆ Commit Info -- **This Commit Timestamp**: `2025-06-09 15:30:56` -- **Last Commit SHA**: `f8a6d28311404ecf3300748363b0ffaf4eee8c9a` -- **Last Commit Message**: `Post-Local sync at 2025-06-09T20:30:45Z` +- **This Commit Timestamp**: `2025-06-09 14:45:06` +- **Last Commit SHA**: `dfd5d6c2239f36dd0bb7104735d75f93be11634c` +- **Last Commit Message**: `Post-Local sync at 2025-06-09 14:44:55` - **Commit Author**: `Mark Randall Havens ` -- **Commit Date**: `Mon Jun 9 15:30:46 2025 -0500` -- **This Commit URL**: [https://app.radicle.xyz/nodes/ash.radicle.garden/rad:z3FEj7rF8gZw9eFksCuiN43qjzrex/tree/f8a6d28311404ecf3300748363b0ffaf4eee8c9a](https://app.radicle.xyz/nodes/ash.radicle.garden/rad:z3FEj7rF8gZw9eFksCuiN43qjzrex/tree/f8a6d28311404ecf3300748363b0ffaf4eee8c9a) +- **Commit Date**: `Mon Jun 9 14:44:56 2025 -0500` +- **This Commit URL**: [https://app.radicle.xyz/nodes/ash.radicle.garden/rad:z3FEj7rF8gZw9eFksCuiN43qjzrex/tree/dfd5d6c2239f36dd0bb7104735d75f93be11634c](https://app.radicle.xyz/nodes/ash.radicle.garden/rad:z3FEj7rF8gZw9eFksCuiN43qjzrex/tree/dfd5d6c2239f36dd0bb7104735d75f93be11634c) --- ## ๐Ÿ“Š Repo Status -- **Total Commits**: `783` -- **Tracked Files**: `127` +- **Total Commits**: `772` +- **Tracked Files**: `121` - **Uncommitted Changes**: `Yes` - **Latest Tag**: `None` @@ -47,7 +47,7 @@ - **Running in Docker**: `No` - **Running in WSL**: `Yes` - **Virtual Machine**: `wsl` -- **System Uptime**: `up 1 hour, 13 minutes` +- **System Uptime**: `up 26 minutes` - **MAC Address**: `00:15:5d:70:e2:68` - **Local IP**: `172.18.207.124` - **CPU Model**: `AMD A6-3420M APU with Radeon(tm) HD Graphics` diff --git a/.gitfield/remember.sigil.md b/.gitfield/remember.sigil.md index 953aa04..408dca1 100644 --- a/.gitfield/remember.sigil.md +++ b/.gitfield/remember.sigil.md @@ -3,28 +3,28 @@ - **Repo Name**: `git-sigil` - **Forgejo User**: `mrhavens` - **Remote URL**: [https://remember.thefoldwithin.earth/mrhavens/git-sigil](https://remember.thefoldwithin.earth/mrhavens/git-sigil) -- **Local Repo Path**: `/home/mrhavens/fieldcraft/git-sigil` +- **Local Repo Path**: `/home/mrhavens/fieldcraft/tmp/git-sigil` - **Remote Label**: `remember` - **Default Branch**: `master` -- **Repo Created**: `2025-06-09 15:31:10` +- **Repo Created**: `2025-06-09 14:45:16` --- ## ๐Ÿ“ฆ Commit Info -- **This Commit Timestamp**: `2025-06-09 15:31:10` -- **Last Commit SHA**: `c6a47d311e0187ad6255735b6373b4d83d27f49e` -- **Last Commit Message**: `Post-Radicle sync at 2025-06-09T20:30:45Z` +- **This Commit Timestamp**: `2025-06-09 14:45:16` +- **Last Commit SHA**: `6040fd8befdaac35e46fe363875b421ff933249d` +- **Last Commit Message**: `Post-Radicle sync at 2025-06-09 14:44:55` - **Last Commit Author**: `Mark Randall Havens ` -- **Last Commit Date**: `Mon Jun 9 15:31:05 2025 -0500` -- **This Commit URL**: [https://remember.thefoldwithin.earth/mrhavens/git-sigil/commit/c6a47d311e0187ad6255735b6373b4d83d27f49e](https://remember.thefoldwithin.earth/mrhavens/git-sigil/commit/c6a47d311e0187ad6255735b6373b4d83d27f49e) +- **Last Commit Date**: `Mon Jun 9 14:45:14 2025 -0500` +- **This Commit URL**: [https://remember.thefoldwithin.earth/mrhavens/git-sigil/commit/6040fd8befdaac35e46fe363875b421ff933249d](https://remember.thefoldwithin.earth/mrhavens/git-sigil/commit/6040fd8befdaac35e46fe363875b421ff933249d) --- ## ๐Ÿ“Š Repo Status -- **Total Commits**: `785` -- **Tracked Files**: `127` +- **Total Commits**: `774` +- **Tracked Files**: `121` - **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 hour, 13 minutes` +- **System Uptime**: `up 26 minutes` - **MAC Address**: `00:15:5d:70:e2:68` - **Local IP**: `172.18.207.124` - **CPU Model**: `AMD A6-3420M APU with Radeon(tm) HD Graphics` diff --git a/.well-known/gitfield.json b/.well-known/gitfield.json deleted file mode 100644 index 3d515e8..0000000 --- a/.well-known/gitfield.json +++ /dev/null @@ -1,21 +0,0 @@ -{ - "@context": "https://schema.org", - "@type": "SoftwareSourceCode", - "name": "git-sigil", - "url": "https://remember.thefoldwithin.earth/mrhavens/git-sigil", - "codeRepository": "https://remember.thefoldwithin.earth/mrhavens/git-sigil", - "sameAs": [ - "https://github.com/mrhavens/git-sigil", - "https://gitlab.com/mrhavens/git-sigil", - "https://bitbucket.org/thefoldwithin/git-sigil", - "https://remember.thefoldwithin.earth/mrhavens/git-sigil", - "https://codeberg.org/mrhavens/git-sigil", - "https://gitea.com/mrhavens/git-sigil", - "rad:rad:z3FEj7rF8gZw9eFksCuiN43qjzrex" - ], - "dateModified": "2025-06-09T20:30:45Z", - "publisher": { - "@type": "Person", - "name": "Mark Randall Havens" - } -} diff --git a/bin/gitfield-sync b/bin/gitfield-sync index 98500d1..d3e0499 100755 --- a/bin/gitfield-sync +++ b/bin/gitfield-sync @@ -8,19 +8,12 @@ IFS=$'\n\t' REPO_PATH=$(git rev-parse --show-toplevel 2>/dev/null) || error "Not inside a Git repository" REPO_NAME=$(basename "$REPO_PATH") GITFIELD_DIR="$REPO_PATH/.gitfield" -WELL_KNOWN_DIR="$REPO_PATH/.well-known" LOG_FILE="$GITFIELD_DIR/pushed.log" GITFIELD_MD="$REPO_PATH/GITFIELD.md" -CANONICAL_META="$GITFIELD_DIR/canonical.meta" -CANONICAL_MD="$GITFIELD_DIR/canonical.md" -INDEX_JSON="$GITFIELD_DIR/index.json" -WELL_KNOWN_JSON="$WELL_KNOWN_DIR/gitfield.json" -TIMESTAMP=$(date -u '+%Y-%m-%dT%H:%M:%SZ') -SCRIPT_VERSION="1.1" # Updated version for metadata enhancements -PRESERVE_META=${PRESERVE_META:-false} # Flag to preserve existing metadata (default: false) +TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S') +SCRIPT_VERSION="1.0" # URLs for each platform -CANONICAL_URL="https://remember.thefoldwithin.earth/mrhavens/$REPO_NAME" GITHUB_URL="https://github.com/mrhavens/$REPO_NAME" GITLAB_URL="https://gitlab.com/mrhavens/$REPO_NAME" BITBUCKET_URL="https://bitbucket.org/thefoldwithin/$REPO_NAME" @@ -30,20 +23,6 @@ GITEA_URL="https://gitea.com/mrhavens/$REPO_NAME" RADICLE_RID="rad:z3FEj7rF8gZw9eFksCuiN43qjzrex" RADICLE_PEER_ID="z6Mkw5s3ppo26C7y7tGK5MD8n2GqTHS582PPpeX5Xqbu2Mpz" -# Metadata configuration -MIRRORS=( - "$GITHUB_URL" - "$GITLAB_URL" - "$BITBUCKET_URL" - "$FORGEJO_URL" - "$CODEBERG_URL" - "$GITEA_URL" - "rad:$RADICLE_RID" -) -COMMIT_HASH=$(git -C "$REPO_PATH" rev-parse --short HEAD 2>/dev/null || echo "unknown") -TREE_HASH=$(git -C "$REPO_PATH" rev-parse HEAD^{tree} 2>/dev/null || echo "unknown") -SYNC_CYCLES=0 - # โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ # โ”‚ LOGGING UTILS โ”‚ # โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ @@ -83,176 +62,10 @@ find_script() { error "Script $script_name not found in any search path" } -# โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ -# โ”‚ METADATA GENERATION โ”‚ -# โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ -generate_canonical_meta() { - info "Generating $CANONICAL_META..." - if [ "$PRESERVE_META" = "true" ] && [ -f "$CANONICAL_META" ]; then - info "Preserving existing $CANONICAL_META (--preserve-meta enabled)" - return - fi - cat > "$CANONICAL_META" < "$CANONICAL_MD" < "$INDEX_JSON" < "$WELL_KNOWN_JSON" < "$readme_file" < "$LOG_FILE" @@ -347,11 +160,8 @@ This multi-repository approach, bolstered by Forgejoโ€™s sovereign hosting, refl ## ๐Ÿ“œ Metadata and Logs -- **Canonical Metadata**: The canonical repository is declared in [\`.gitfield/canonical.meta\`](./.gitfield/canonical.meta) (machine-readable JSON) and [\`.gitfield/canonical.md\`](./.gitfield/canonical.md) (human-readable Markdown). -- **Index Manifest**: A full manifest of remotes, commit details, and sync cycles is available in [\`.gitfield/index.json\`](./.gitfield/index.json). -- **Well-Known Metadata**: SEO-friendly metadata with Schema.org JSON-LD is available in [\`.well-known/gitfield.json\`](./.well-known/gitfield.json). -- **Push Log**: The \`.gitfield/pushed.log\` file records the date, time, commit hash, and RID/URL of every push operation across all platforms, providing a transparent audit trail. -- **GitField Directory**: The \`.gitfield\` directory contains additional metadata and platform-specific sigils (e.g., \`github.sigil.md\`). See [\`.gitfield/README.txt\`](./.gitfield/README.txt) for details. +- **Metadata Files**: Each platform generates a metadata snapshot in the \`.gitfield\` directory (e.g., \`github.sigil.md\`, \`gitlab.sigil.md\`, \`remember.sigil.md\`, \`codeberg.sigil.md\`, \`gitea.sigil.md\`, etc.), capturing commit details, environment information, and hardware fingerprints. +- **Push Log**: The \`.gitfield/pushed.log\` file records the date, time, and RID/URL of every push operation across all platforms, providing a transparent audit trail. - **Recursive Sync**: The repository is synchronized across all platforms in a recursive loop (three cycles) to ensure interconnected metadata captures the latest state of the project. - **Push Order**: The repository is synchronized in the following order: **Radicle โ†’ Forgejo โ†’ Codeberg โ†’ Gitea โ†’ GitLab โ†’ Bitbucket โ†’ GitHub**. This prioritizes Radicleโ€™s decentralized, censorship-resistant network as the primary anchor, followed by Forgejoโ€™s sovereign, self-hosted infrastructure, Codebergโ€™s community-driven platform, Giteaโ€™s lightweight efficiency, GitLabโ€™s robust DevOps features, Bitbucketโ€™s enterprise redundancy, and GitHubโ€™s broad visibility, ensuring a resilient and accessible metadata chain. @@ -373,25 +183,15 @@ log_url() { local url=$2 local rid=$3 local peer_id=$4 - local timestamp=$(date -u '+%Y-%m-%dT%H:%M:%SZ') - local branch=$(git -C "$REPO_PATH" rev-parse --abbrev-ref HEAD 2>/dev/null || echo "unknown") - local diff_summary=$(git -C "$REPO_PATH" diff --stat HEAD^ HEAD 2>/dev/null || echo "No diff available") + local timestamp=$(date '+%Y-%m-%d %H:%M:%S') if [ "$platform" = "Radicle" ]; then - echo "[$timestamp] $platform: RID=$rid, Peer ID=$peer_id, Branch=$branch, Commit=$COMMIT_HASH" >> "$LOG_FILE" + echo "[$timestamp] $platform: RID=$rid, Peer ID=$peer_id" >> "$LOG_FILE" echo " CLI: rad inspect $rid # View project details" >> "$LOG_FILE" echo " CLI: git ls-tree -r --name-only HEAD # View file structure" >> "$LOG_FILE" - if [ -n "$diff_summary" ]; then - echo " Diff Summary:" >> "$LOG_FILE" - echo "$diff_summary" | sed 's/^/ /' >> "$LOG_FILE" - fi - info "Logged push to $LOG_FILE: [$timestamp] $platform: RID=$rid, Peer ID=$peer_id, Branch=$branch, Commit=$COMMIT_HASH" + info "Logged push to $LOG_FILE: [$timestamp] $platform: RID=$rid, Peer ID=$peer_id" else - echo "[$timestamp] $platform: $url, Branch=$branch, Commit=$COMMIT_HASH" >> "$LOG_FILE" - if [ -n "$diff_summary" ]; then - echo " Diff Summary:" >> "$LOG_FILE" - echo "$diff_summary" | sed 's/^/ /' >> "$LOG_FILE" - fi - info "Logged push to $LOG_FILE: [$timestamp] $platform: $url, Branch=$branch, Commit=$COMMIT_HASH" + echo "[$timestamp] $platform: $url" >> "$LOG_FILE" + info "Logged push to $LOG_FILE: [$timestamp] $platform: $url" fi } @@ -425,7 +225,6 @@ execute_push() { run_push_cycle() { local cycle_number=$1 info "Starting push cycle $cycle_number..." - SYNC_CYCLES=$cycle_number execute_push "gitfield-local" "Local" "" "" "" execute_push "gitfield-radicle" "Radicle" "" "$RADICLE_RID" "$RADICLE_PEER_ID" @@ -435,13 +234,6 @@ run_push_cycle() { execute_push "gitfield-gitlab" "GitLab" "$GITLAB_URL" "" "" execute_push "gitfield-bitbucket" "Bitbucket" "$BITBUCKET_URL" "" "" execute_push "gitfield-github" "GitHub" "$GITHUB_URL" "" "" - - # Regenerate metadata after each cycle to update sync_cycles - generate_canonical_meta - generate_canonical_md - generate_index_json - generate_well_known_json - generate_gitfield_readme } # โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ @@ -449,21 +241,6 @@ run_push_cycle() { # โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ info "Starting gitfield-sync for $REPO_NAME..." -# Parse --preserve-meta flag -while [ $# -gt 0 ]; do - case "$1" in - --preserve-meta) - PRESERVE_META=true - info "Preserve metadata flag enabled" - shift - ;; - *) - warn "Unknown argument: $1" - shift - ;; - esac -done - if [ ! -d "$REPO_PATH/.git" ]; then pushd "$REPO_PATH" >/dev/null git init @@ -472,14 +249,6 @@ if [ ! -d "$REPO_PATH/.git" ]; then popd >/dev/null fi -# Generate initial metadata -generate_canonical_meta -generate_canonical_md -generate_index_json -generate_well_known_json -generate_gitfield_readme - -# Run push cycles run_push_cycle 1 generate_gitfield_md run_push_cycle 2 @@ -488,7 +257,3 @@ run_push_cycle 3 info "โœ… gitfield-sync completed successfully." info "๐Ÿ”— View logs: $LOG_FILE" info "๐Ÿ”— View multi-repo manifest: $GITFIELD_MD" -info "๐Ÿ”— View canonical metadata: $CANONICAL_META" -info "๐Ÿ”— View canonical declaration: $CANONICAL_MD" -info "๐Ÿ”— View index manifest: $INDEX_JSON" -info "๐Ÿ”— View well-known metadata: $WELL_KNOWN_JSON" diff --git a/bin/gitfield-sync-OLD2 b/bin/gitfield-sync-OLD2 deleted file mode 100755 index d3e0499..0000000 --- a/bin/gitfield-sync-OLD2 +++ /dev/null @@ -1,259 +0,0 @@ -#!/bin/bash -set -euo pipefail -IFS=$'\n\t' - -# โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ -# โ”‚ CONFIGURATION โ”‚ -# โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ -REPO_PATH=$(git rev-parse --show-toplevel 2>/dev/null) || error "Not inside a Git repository" -REPO_NAME=$(basename "$REPO_PATH") -GITFIELD_DIR="$REPO_PATH/.gitfield" -LOG_FILE="$GITFIELD_DIR/pushed.log" -GITFIELD_MD="$REPO_PATH/GITFIELD.md" -TIMESTAMP=$(date '+%Y-%m-%d %H:%M:%S') -SCRIPT_VERSION="1.0" - -# URLs for each platform -GITHUB_URL="https://github.com/mrhavens/$REPO_NAME" -GITLAB_URL="https://gitlab.com/mrhavens/$REPO_NAME" -BITBUCKET_URL="https://bitbucket.org/thefoldwithin/$REPO_NAME" -FORGEJO_URL="https://remember.thefoldwithin.earth/mrhavens/$REPO_NAME" -CODEBERG_URL="https://codeberg.org/mrhavens/$REPO_NAME" -GITEA_URL="https://gitea.com/mrhavens/$REPO_NAME" -RADICLE_RID="rad:z3FEj7rF8gZw9eFksCuiN43qjzrex" -RADICLE_PEER_ID="z6Mkw5s3ppo26C7y7tGK5MD8n2GqTHS582PPpeX5Xqbu2Mpz" - -# โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ -# โ”‚ LOGGING UTILS โ”‚ -# โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ -info() { echo -e "\e[1;34m[INFO]\e[0m $*" >&2; } -warn() { echo -e "\e[1;33m[WARN]\e[0m $*" >&2; } -error() { echo -e "\e[1;31m[ERROR]\e[0m $*" >&2; exit 1; } - -# โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ -# โ”‚ SCRIPT LOOKUP FUNCTION โ”‚ -# โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ -find_script() { - local script_name=$1 - local search_paths=( - "$HOME/.local/gitfieldbin" - "$HOME/.local/bin" - "$HOME/.local/gitfield" - "$HOME/.local/bin/gitfield" - "$HOME/.local/bin/gitfieldbin" - "$REPO_PATH/bin" - ) - - for path in "${search_paths[@]}"; do - if [ -f "$path/$script_name" ]; then - if [ -x "$path/$script_name" ]; then - if [[ "$path" != "$HOME"* && "$path" != "$REPO_PATH"* ]]; then - info "Using script: \e[1;31m$path/$script_name\e[0m (outside home or repo)" - else - info "Using script: $path/$script_name" - fi - echo "$path/$script_name" - return 0 - else - warn "Found $path/$script_name but it is not executable" - fi - fi - done - error "Script $script_name not found in any search path" -} - -# โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ -# โ”‚ INITIAL SETUP โ”‚ -# โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ -mkdir -p "$GITFIELD_DIR" - -if [ ! -f "$LOG_FILE" ]; then - echo "# Push Log for $REPO_NAME" > "$LOG_FILE" - echo "# Generated by gitfield-sync" >> "$LOG_FILE" - echo "" >> "$LOG_FILE" -fi - -# โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ -# โ”‚ GENERATE GITFIELD.MD โ”‚ -# โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ -generate_gitfield_md() { - info "Generating $GITFIELD_MD..." - cat > "$GITFIELD_MD" <> "$LOG_FILE" - echo " CLI: rad inspect $rid # View project details" >> "$LOG_FILE" - echo " CLI: git ls-tree -r --name-only HEAD # View file structure" >> "$LOG_FILE" - info "Logged push to $LOG_FILE: [$timestamp] $platform: RID=$rid, Peer ID=$peer_id" - else - echo "[$timestamp] $platform: $url" >> "$LOG_FILE" - info "Logged push to $LOG_FILE: [$timestamp] $platform: $url" - fi -} - -# โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ -# โ”‚ EXECUTE PUSH SCRIPT โ”‚ -# โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ -execute_push() { - local script_name=$1 - local platform=$2 - local url=$3 - local rid=$4 - local peer_id=$5 - local script_path - script_path=$(find_script "$script_name") || error "Failed to find $script_name" - info "Executing $platform push with script: $script_path" - if [ -x "$script_path" ]; then - pushd "$REPO_PATH" >/dev/null - "$script_path" || warn "Execution of $script_path failed, continuing..." - log_url "$platform" "$url" "$rid" "$peer_id" - git add . || warn "Nothing to add after $script_path" - git commit -m "Post-$platform sync at $TIMESTAMP" || warn "No changes to commit after $script_path" - popd >/dev/null - else - error "Script $script_path is not executable" - fi -} - -# โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ -# โ”‚ RECURSIVE PUSH LOOP โ”‚ -# โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ -run_push_cycle() { - local cycle_number=$1 - info "Starting push cycle $cycle_number..." - - execute_push "gitfield-local" "Local" "" "" "" - execute_push "gitfield-radicle" "Radicle" "" "$RADICLE_RID" "$RADICLE_PEER_ID" - execute_push "gitfield-remember" "Forgejo" "$FORGEJO_URL" "" "" - execute_push "gitfield-codeberg" "Codeberg" "$CODEBERG_URL" "" "" - execute_push "gitfield-gitea" "Gitea" "$GITEA_URL" "" "" - execute_push "gitfield-gitlab" "GitLab" "$GITLAB_URL" "" "" - execute_push "gitfield-bitbucket" "Bitbucket" "$BITBUCKET_URL" "" "" - execute_push "gitfield-github" "GitHub" "$GITHUB_URL" "" "" -} - -# โ•ญโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ -# โ”‚ MAIN EXECUTION โ”‚ -# โ•ฐโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ•ฎ -info "Starting gitfield-sync for $REPO_NAME..." - -if [ ! -d "$REPO_PATH/.git" ]; then - pushd "$REPO_PATH" >/dev/null - git init - git add . - git commit -m "Initial commit" || warn "Nothing to commit" - popd >/dev/null -fi - -run_push_cycle 1 -generate_gitfield_md -run_push_cycle 2 -run_push_cycle 3 - -info "โœ… gitfield-sync completed successfully." -info "๐Ÿ”— View logs: $LOG_FILE" -info "๐Ÿ”— View multi-repo manifest: $GITFIELD_MD"