security: establish native Forgejo receive-hook baseline
All checks were successful
CI Smoke / host-smoke (push) Successful in 1s
CI Smoke / container-smoke (push) Successful in 2s
Reject generated-only commits / generated-commit-guard (push) Successful in 7s

This commit is contained in:
codex 2026-10-12 18:15:56 +02:00
parent 355b6b9720
commit 6502bfe4d8
4 changed files with 933 additions and 0 deletions

View file

@ -0,0 +1,14 @@
import json,subprocess,re,datetime
shell='set -eu\nbase=/data/git/gitea-repositories\nprintf \'repository_directory_count\\t\'\nfind "$base" -mindepth 2 -maxdepth 2 -type d -name \'*.git\' | wc -l\nfor name in access-engine approval-engine audit-core gate-house glas-harness key-cape kings-guard maturity-engine net-kingdom ops-mason ops-warden policy-nexus railiance-forge railiance-platform repo-manager role-engine secrets-engine security-canon tenant-engine the-custodian user-engine zone-engine; do\n repo="$base/coulomb/$name.git"\n if ! test -d "$repo"; then printf \'missing\\t%s\\n\' "$name"; continue; fi\n printf \'repo\\t%s\\n\' "$name"\n git --git-dir="$repo" config --get core.hooksPath || test "$?" = 1\n if test -n "$(find "$repo/hooks" -maxdepth 2 -type l -print -quit)"; then exit 77; fi\nfind "$repo/hooks" -maxdepth 2 -type f ! -name \'*.sample\' -exec sha256sum {} \\;\ndone\n'
r=subprocess.run(["kubectl","-n","forgejo","exec","forgejo-gitea-7d94988c79-8k76l","-c","gitea","--","sh","-c",shell],capture_output=True,text=True,timeout=60)
if r.returncode: raise SystemExit("Read-only hook inventory failed; raw diagnostics suppressed.")
rows=[];current=None;count=None
for line in r.stdout.splitlines():
if line.startswith("repository_directory_count\t"): count=int(line.split("\t")[1])
elif line.startswith("repo\t"):
current={"repo":line.split("\t")[1],"hook_files":[],"core_hooks_path":"unset"};rows.append(current)
elif line.startswith("missing\t"): rows.append({"repo":line.split("\t")[1],"missing":True})
elif re.fullmatch(r"[0-9a-f]{64} /data/git/gitea-repositories/coulomb/[a-z0-9_.-]+/hooks/[a-zA-Z0-9_./-]+",line):
digest,path=line.split(" ",1);current["hook_files"].append({"relative_path":path.split("/hooks/",1)[1],"sha256":digest})
else: raise SystemExit("Unrecognized metadata suppressed; no inventory claim.")
print(json.dumps({"observed_at":datetime.datetime.now(datetime.timezone.utc).isoformat(),"host":"railiance01","image":"code.forgejo.org/forgejo/forgejo:11.0.3-rootless","pod":"forgejo-gitea-7d94988c79-8k76l","repository_root":"/data/git/gitea-repositories","repository_directory_count":count,"repositories":rows,"scope":"Filesystem hook metadata for 22 reviewed repos only; directory count includes unmanaged/archived/wiki possibilities, not an admitted production denominator. Hashes do not establish scanner behavior or branch protection. No repository content, credentials, logs, database or remote mutation."},indent=2))

View file

@ -0,0 +1,901 @@
{
"observed_at": "2026-10-12T15:53:14.407749+00:00",
"host": "railiance01",
"image": "code.forgejo.org/forgejo/forgejo:11.0.3-rootless",
"pod": "forgejo-gitea-7d94988c79-8k76l",
"repository_root": "/data/git/gitea-repositories",
"repository_directory_count": 165,
"repositories": [
{
"repo": "access-engine",
"hook_files": [
{
"relative_path": "proc-receive.d/gitea",
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"relative_path": "post-receive.d/gitea",
"sha256": "a3a87fd152133783f14859bfa738eb3fcc38d3090147ad8df81724ed62fa97a5"
},
{
"relative_path": "pre-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "proc-receive",
"sha256": "ca4eb127414b2c85164b9366a3311218ed7b5a2f6cac93c2d654da97e1ba4748"
},
{
"relative_path": "update",
"sha256": "a53caf562b0cdd47b08d20c27c63059ba41cd410c3264a61cda1a531f1810ae6"
},
{
"relative_path": "update.d/gitea",
"sha256": "d32f9f382dc1511c93e9e2ce61a60c068ac83a933376368b474faad1399be79f"
},
{
"relative_path": "post-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "pre-receive.d/gitea",
"sha256": "2572c08b2aa9ec9db475f03e6ed43bf64d18f64f9a2364c5341ad277e31149fc"
}
],
"core_hooks_path": "unset"
},
{
"repo": "approval-engine",
"hook_files": [
{
"relative_path": "proc-receive.d/gitea",
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"relative_path": "post-receive.d/gitea",
"sha256": "a3a87fd152133783f14859bfa738eb3fcc38d3090147ad8df81724ed62fa97a5"
},
{
"relative_path": "pre-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "proc-receive",
"sha256": "ca4eb127414b2c85164b9366a3311218ed7b5a2f6cac93c2d654da97e1ba4748"
},
{
"relative_path": "update",
"sha256": "a53caf562b0cdd47b08d20c27c63059ba41cd410c3264a61cda1a531f1810ae6"
},
{
"relative_path": "update.d/gitea",
"sha256": "d32f9f382dc1511c93e9e2ce61a60c068ac83a933376368b474faad1399be79f"
},
{
"relative_path": "post-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "pre-receive.d/gitea",
"sha256": "2572c08b2aa9ec9db475f03e6ed43bf64d18f64f9a2364c5341ad277e31149fc"
}
],
"core_hooks_path": "unset"
},
{
"repo": "audit-core",
"hook_files": [
{
"relative_path": "proc-receive.d/gitea",
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"relative_path": "post-receive.d/gitea",
"sha256": "a3a87fd152133783f14859bfa738eb3fcc38d3090147ad8df81724ed62fa97a5"
},
{
"relative_path": "pre-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "proc-receive",
"sha256": "ca4eb127414b2c85164b9366a3311218ed7b5a2f6cac93c2d654da97e1ba4748"
},
{
"relative_path": "update",
"sha256": "a53caf562b0cdd47b08d20c27c63059ba41cd410c3264a61cda1a531f1810ae6"
},
{
"relative_path": "update.d/gitea",
"sha256": "d32f9f382dc1511c93e9e2ce61a60c068ac83a933376368b474faad1399be79f"
},
{
"relative_path": "post-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "pre-receive.d/gitea",
"sha256": "2572c08b2aa9ec9db475f03e6ed43bf64d18f64f9a2364c5341ad277e31149fc"
}
],
"core_hooks_path": "unset"
},
{
"repo": "gate-house",
"hook_files": [
{
"relative_path": "proc-receive.d/gitea",
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"relative_path": "post-receive.d/gitea",
"sha256": "a3a87fd152133783f14859bfa738eb3fcc38d3090147ad8df81724ed62fa97a5"
},
{
"relative_path": "pre-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "proc-receive",
"sha256": "ca4eb127414b2c85164b9366a3311218ed7b5a2f6cac93c2d654da97e1ba4748"
},
{
"relative_path": "update",
"sha256": "a53caf562b0cdd47b08d20c27c63059ba41cd410c3264a61cda1a531f1810ae6"
},
{
"relative_path": "update.d/gitea",
"sha256": "d32f9f382dc1511c93e9e2ce61a60c068ac83a933376368b474faad1399be79f"
},
{
"relative_path": "post-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "pre-receive.d/gitea",
"sha256": "2572c08b2aa9ec9db475f03e6ed43bf64d18f64f9a2364c5341ad277e31149fc"
}
],
"core_hooks_path": "unset"
},
{
"repo": "glas-harness",
"hook_files": [
{
"relative_path": "proc-receive.d/gitea",
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"relative_path": "post-receive.d/gitea",
"sha256": "a3a87fd152133783f14859bfa738eb3fcc38d3090147ad8df81724ed62fa97a5"
},
{
"relative_path": "pre-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "proc-receive",
"sha256": "ca4eb127414b2c85164b9366a3311218ed7b5a2f6cac93c2d654da97e1ba4748"
},
{
"relative_path": "update",
"sha256": "a53caf562b0cdd47b08d20c27c63059ba41cd410c3264a61cda1a531f1810ae6"
},
{
"relative_path": "update.d/gitea",
"sha256": "d32f9f382dc1511c93e9e2ce61a60c068ac83a933376368b474faad1399be79f"
},
{
"relative_path": "post-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "pre-receive.d/gitea",
"sha256": "2572c08b2aa9ec9db475f03e6ed43bf64d18f64f9a2364c5341ad277e31149fc"
}
],
"core_hooks_path": "unset"
},
{
"repo": "key-cape",
"hook_files": [
{
"relative_path": "proc-receive.d/gitea",
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"relative_path": "post-receive.d/gitea",
"sha256": "a3a87fd152133783f14859bfa738eb3fcc38d3090147ad8df81724ed62fa97a5"
},
{
"relative_path": "pre-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "proc-receive",
"sha256": "ca4eb127414b2c85164b9366a3311218ed7b5a2f6cac93c2d654da97e1ba4748"
},
{
"relative_path": "update",
"sha256": "a53caf562b0cdd47b08d20c27c63059ba41cd410c3264a61cda1a531f1810ae6"
},
{
"relative_path": "update.d/gitea",
"sha256": "d32f9f382dc1511c93e9e2ce61a60c068ac83a933376368b474faad1399be79f"
},
{
"relative_path": "post-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "pre-receive.d/gitea",
"sha256": "2572c08b2aa9ec9db475f03e6ed43bf64d18f64f9a2364c5341ad277e31149fc"
}
],
"core_hooks_path": "unset"
},
{
"repo": "kings-guard",
"hook_files": [
{
"relative_path": "proc-receive.d/gitea",
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"relative_path": "post-receive.d/gitea",
"sha256": "a3a87fd152133783f14859bfa738eb3fcc38d3090147ad8df81724ed62fa97a5"
},
{
"relative_path": "pre-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "proc-receive",
"sha256": "ca4eb127414b2c85164b9366a3311218ed7b5a2f6cac93c2d654da97e1ba4748"
},
{
"relative_path": "update",
"sha256": "a53caf562b0cdd47b08d20c27c63059ba41cd410c3264a61cda1a531f1810ae6"
},
{
"relative_path": "update.d/gitea",
"sha256": "d32f9f382dc1511c93e9e2ce61a60c068ac83a933376368b474faad1399be79f"
},
{
"relative_path": "post-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "pre-receive.d/gitea",
"sha256": "2572c08b2aa9ec9db475f03e6ed43bf64d18f64f9a2364c5341ad277e31149fc"
}
],
"core_hooks_path": "unset"
},
{
"repo": "maturity-engine",
"hook_files": [
{
"relative_path": "proc-receive.d/gitea",
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"relative_path": "post-receive.d/gitea",
"sha256": "a3a87fd152133783f14859bfa738eb3fcc38d3090147ad8df81724ed62fa97a5"
},
{
"relative_path": "pre-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "proc-receive",
"sha256": "ca4eb127414b2c85164b9366a3311218ed7b5a2f6cac93c2d654da97e1ba4748"
},
{
"relative_path": "update",
"sha256": "a53caf562b0cdd47b08d20c27c63059ba41cd410c3264a61cda1a531f1810ae6"
},
{
"relative_path": "update.d/gitea",
"sha256": "d32f9f382dc1511c93e9e2ce61a60c068ac83a933376368b474faad1399be79f"
},
{
"relative_path": "post-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "pre-receive.d/gitea",
"sha256": "2572c08b2aa9ec9db475f03e6ed43bf64d18f64f9a2364c5341ad277e31149fc"
}
],
"core_hooks_path": "unset"
},
{
"repo": "net-kingdom",
"hook_files": [
{
"relative_path": "proc-receive.d/gitea",
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"relative_path": "post-receive.d/gitea",
"sha256": "a3a87fd152133783f14859bfa738eb3fcc38d3090147ad8df81724ed62fa97a5"
},
{
"relative_path": "pre-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "proc-receive",
"sha256": "ca4eb127414b2c85164b9366a3311218ed7b5a2f6cac93c2d654da97e1ba4748"
},
{
"relative_path": "update",
"sha256": "a53caf562b0cdd47b08d20c27c63059ba41cd410c3264a61cda1a531f1810ae6"
},
{
"relative_path": "update.d/gitea",
"sha256": "d32f9f382dc1511c93e9e2ce61a60c068ac83a933376368b474faad1399be79f"
},
{
"relative_path": "post-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "pre-receive.d/gitea",
"sha256": "2572c08b2aa9ec9db475f03e6ed43bf64d18f64f9a2364c5341ad277e31149fc"
}
],
"core_hooks_path": "unset"
},
{
"repo": "ops-mason",
"hook_files": [
{
"relative_path": "proc-receive.d/gitea",
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"relative_path": "post-receive.d/gitea",
"sha256": "a3a87fd152133783f14859bfa738eb3fcc38d3090147ad8df81724ed62fa97a5"
},
{
"relative_path": "pre-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "proc-receive",
"sha256": "ca4eb127414b2c85164b9366a3311218ed7b5a2f6cac93c2d654da97e1ba4748"
},
{
"relative_path": "update",
"sha256": "a53caf562b0cdd47b08d20c27c63059ba41cd410c3264a61cda1a531f1810ae6"
},
{
"relative_path": "update.d/gitea",
"sha256": "d32f9f382dc1511c93e9e2ce61a60c068ac83a933376368b474faad1399be79f"
},
{
"relative_path": "post-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "pre-receive.d/gitea",
"sha256": "2572c08b2aa9ec9db475f03e6ed43bf64d18f64f9a2364c5341ad277e31149fc"
}
],
"core_hooks_path": "unset"
},
{
"repo": "ops-warden",
"hook_files": [
{
"relative_path": "proc-receive.d/gitea",
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"relative_path": "post-receive.d/gitea",
"sha256": "a3a87fd152133783f14859bfa738eb3fcc38d3090147ad8df81724ed62fa97a5"
},
{
"relative_path": "pre-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "proc-receive",
"sha256": "ca4eb127414b2c85164b9366a3311218ed7b5a2f6cac93c2d654da97e1ba4748"
},
{
"relative_path": "update",
"sha256": "a53caf562b0cdd47b08d20c27c63059ba41cd410c3264a61cda1a531f1810ae6"
},
{
"relative_path": "update.d/gitea",
"sha256": "d32f9f382dc1511c93e9e2ce61a60c068ac83a933376368b474faad1399be79f"
},
{
"relative_path": "post-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "pre-receive.d/gitea",
"sha256": "2572c08b2aa9ec9db475f03e6ed43bf64d18f64f9a2364c5341ad277e31149fc"
}
],
"core_hooks_path": "unset"
},
{
"repo": "policy-nexus",
"hook_files": [
{
"relative_path": "proc-receive.d/gitea",
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"relative_path": "post-receive.d/gitea",
"sha256": "a3a87fd152133783f14859bfa738eb3fcc38d3090147ad8df81724ed62fa97a5"
},
{
"relative_path": "pre-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "proc-receive",
"sha256": "ca4eb127414b2c85164b9366a3311218ed7b5a2f6cac93c2d654da97e1ba4748"
},
{
"relative_path": "update",
"sha256": "a53caf562b0cdd47b08d20c27c63059ba41cd410c3264a61cda1a531f1810ae6"
},
{
"relative_path": "update.d/gitea",
"sha256": "d32f9f382dc1511c93e9e2ce61a60c068ac83a933376368b474faad1399be79f"
},
{
"relative_path": "post-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "pre-receive.d/gitea",
"sha256": "2572c08b2aa9ec9db475f03e6ed43bf64d18f64f9a2364c5341ad277e31149fc"
}
],
"core_hooks_path": "unset"
},
{
"repo": "railiance-forge",
"hook_files": [
{
"relative_path": "proc-receive.d/gitea",
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"relative_path": "post-receive.d/gitea",
"sha256": "a3a87fd152133783f14859bfa738eb3fcc38d3090147ad8df81724ed62fa97a5"
},
{
"relative_path": "pre-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "proc-receive",
"sha256": "ca4eb127414b2c85164b9366a3311218ed7b5a2f6cac93c2d654da97e1ba4748"
},
{
"relative_path": "update",
"sha256": "a53caf562b0cdd47b08d20c27c63059ba41cd410c3264a61cda1a531f1810ae6"
},
{
"relative_path": "update.d/gitea",
"sha256": "d32f9f382dc1511c93e9e2ce61a60c068ac83a933376368b474faad1399be79f"
},
{
"relative_path": "post-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "pre-receive.d/gitea",
"sha256": "2572c08b2aa9ec9db475f03e6ed43bf64d18f64f9a2364c5341ad277e31149fc"
}
],
"core_hooks_path": "unset"
},
{
"repo": "railiance-platform",
"hook_files": [
{
"relative_path": "proc-receive.d/gitea",
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"relative_path": "post-receive.d/gitea",
"sha256": "a3a87fd152133783f14859bfa738eb3fcc38d3090147ad8df81724ed62fa97a5"
},
{
"relative_path": "pre-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "proc-receive",
"sha256": "ca4eb127414b2c85164b9366a3311218ed7b5a2f6cac93c2d654da97e1ba4748"
},
{
"relative_path": "update",
"sha256": "a53caf562b0cdd47b08d20c27c63059ba41cd410c3264a61cda1a531f1810ae6"
},
{
"relative_path": "update.d/gitea",
"sha256": "d32f9f382dc1511c93e9e2ce61a60c068ac83a933376368b474faad1399be79f"
},
{
"relative_path": "post-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "pre-receive.d/gitea",
"sha256": "2572c08b2aa9ec9db475f03e6ed43bf64d18f64f9a2364c5341ad277e31149fc"
}
],
"core_hooks_path": "unset"
},
{
"repo": "repo-manager",
"hook_files": [
{
"relative_path": "proc-receive.d/gitea",
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"relative_path": "post-receive.d/gitea",
"sha256": "a3a87fd152133783f14859bfa738eb3fcc38d3090147ad8df81724ed62fa97a5"
},
{
"relative_path": "pre-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "proc-receive",
"sha256": "ca4eb127414b2c85164b9366a3311218ed7b5a2f6cac93c2d654da97e1ba4748"
},
{
"relative_path": "update",
"sha256": "a53caf562b0cdd47b08d20c27c63059ba41cd410c3264a61cda1a531f1810ae6"
},
{
"relative_path": "update.d/gitea",
"sha256": "d32f9f382dc1511c93e9e2ce61a60c068ac83a933376368b474faad1399be79f"
},
{
"relative_path": "post-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "pre-receive.d/gitea",
"sha256": "2572c08b2aa9ec9db475f03e6ed43bf64d18f64f9a2364c5341ad277e31149fc"
}
],
"core_hooks_path": "unset"
},
{
"repo": "role-engine",
"hook_files": [
{
"relative_path": "proc-receive.d/gitea",
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"relative_path": "post-receive.d/gitea",
"sha256": "a3a87fd152133783f14859bfa738eb3fcc38d3090147ad8df81724ed62fa97a5"
},
{
"relative_path": "pre-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "proc-receive",
"sha256": "ca4eb127414b2c85164b9366a3311218ed7b5a2f6cac93c2d654da97e1ba4748"
},
{
"relative_path": "update",
"sha256": "a53caf562b0cdd47b08d20c27c63059ba41cd410c3264a61cda1a531f1810ae6"
},
{
"relative_path": "update.d/gitea",
"sha256": "d32f9f382dc1511c93e9e2ce61a60c068ac83a933376368b474faad1399be79f"
},
{
"relative_path": "post-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "pre-receive.d/gitea",
"sha256": "2572c08b2aa9ec9db475f03e6ed43bf64d18f64f9a2364c5341ad277e31149fc"
}
],
"core_hooks_path": "unset"
},
{
"repo": "secrets-engine",
"hook_files": [
{
"relative_path": "proc-receive.d/gitea",
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"relative_path": "post-receive.d/gitea",
"sha256": "a3a87fd152133783f14859bfa738eb3fcc38d3090147ad8df81724ed62fa97a5"
},
{
"relative_path": "pre-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "proc-receive",
"sha256": "ca4eb127414b2c85164b9366a3311218ed7b5a2f6cac93c2d654da97e1ba4748"
},
{
"relative_path": "update",
"sha256": "a53caf562b0cdd47b08d20c27c63059ba41cd410c3264a61cda1a531f1810ae6"
},
{
"relative_path": "update.d/gitea",
"sha256": "d32f9f382dc1511c93e9e2ce61a60c068ac83a933376368b474faad1399be79f"
},
{
"relative_path": "post-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "pre-receive.d/gitea",
"sha256": "2572c08b2aa9ec9db475f03e6ed43bf64d18f64f9a2364c5341ad277e31149fc"
}
],
"core_hooks_path": "unset"
},
{
"repo": "security-canon",
"hook_files": [
{
"relative_path": "proc-receive.d/gitea",
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"relative_path": "post-receive.d/gitea",
"sha256": "a3a87fd152133783f14859bfa738eb3fcc38d3090147ad8df81724ed62fa97a5"
},
{
"relative_path": "pre-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "proc-receive",
"sha256": "ca4eb127414b2c85164b9366a3311218ed7b5a2f6cac93c2d654da97e1ba4748"
},
{
"relative_path": "update",
"sha256": "a53caf562b0cdd47b08d20c27c63059ba41cd410c3264a61cda1a531f1810ae6"
},
{
"relative_path": "update.d/gitea",
"sha256": "d32f9f382dc1511c93e9e2ce61a60c068ac83a933376368b474faad1399be79f"
},
{
"relative_path": "post-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "pre-receive.d/gitea",
"sha256": "2572c08b2aa9ec9db475f03e6ed43bf64d18f64f9a2364c5341ad277e31149fc"
}
],
"core_hooks_path": "unset"
},
{
"repo": "tenant-engine",
"hook_files": [
{
"relative_path": "proc-receive.d/gitea",
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"relative_path": "post-receive.d/gitea",
"sha256": "a3a87fd152133783f14859bfa738eb3fcc38d3090147ad8df81724ed62fa97a5"
},
{
"relative_path": "pre-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "proc-receive",
"sha256": "ca4eb127414b2c85164b9366a3311218ed7b5a2f6cac93c2d654da97e1ba4748"
},
{
"relative_path": "update",
"sha256": "a53caf562b0cdd47b08d20c27c63059ba41cd410c3264a61cda1a531f1810ae6"
},
{
"relative_path": "update.d/gitea",
"sha256": "d32f9f382dc1511c93e9e2ce61a60c068ac83a933376368b474faad1399be79f"
},
{
"relative_path": "post-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "pre-receive.d/gitea",
"sha256": "2572c08b2aa9ec9db475f03e6ed43bf64d18f64f9a2364c5341ad277e31149fc"
}
],
"core_hooks_path": "unset"
},
{
"repo": "the-custodian",
"hook_files": [
{
"relative_path": "proc-receive.d/gitea",
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"relative_path": "post-receive.d/gitea",
"sha256": "a3a87fd152133783f14859bfa738eb3fcc38d3090147ad8df81724ed62fa97a5"
},
{
"relative_path": "pre-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "proc-receive",
"sha256": "ca4eb127414b2c85164b9366a3311218ed7b5a2f6cac93c2d654da97e1ba4748"
},
{
"relative_path": "update",
"sha256": "a53caf562b0cdd47b08d20c27c63059ba41cd410c3264a61cda1a531f1810ae6"
},
{
"relative_path": "update.d/gitea",
"sha256": "d32f9f382dc1511c93e9e2ce61a60c068ac83a933376368b474faad1399be79f"
},
{
"relative_path": "post-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "pre-receive.d/gitea",
"sha256": "2572c08b2aa9ec9db475f03e6ed43bf64d18f64f9a2364c5341ad277e31149fc"
}
],
"core_hooks_path": "unset"
},
{
"repo": "user-engine",
"hook_files": [
{
"relative_path": "proc-receive.d/gitea",
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"relative_path": "post-receive.d/gitea",
"sha256": "a3a87fd152133783f14859bfa738eb3fcc38d3090147ad8df81724ed62fa97a5"
},
{
"relative_path": "pre-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "proc-receive",
"sha256": "ca4eb127414b2c85164b9366a3311218ed7b5a2f6cac93c2d654da97e1ba4748"
},
{
"relative_path": "update",
"sha256": "a53caf562b0cdd47b08d20c27c63059ba41cd410c3264a61cda1a531f1810ae6"
},
{
"relative_path": "update.d/gitea",
"sha256": "d32f9f382dc1511c93e9e2ce61a60c068ac83a933376368b474faad1399be79f"
},
{
"relative_path": "post-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "pre-receive.d/gitea",
"sha256": "2572c08b2aa9ec9db475f03e6ed43bf64d18f64f9a2364c5341ad277e31149fc"
}
],
"core_hooks_path": "unset"
},
{
"repo": "zone-engine",
"hook_files": [
{
"relative_path": "proc-receive.d/gitea",
"sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
},
{
"relative_path": "post-receive.d/gitea",
"sha256": "a3a87fd152133783f14859bfa738eb3fcc38d3090147ad8df81724ed62fa97a5"
},
{
"relative_path": "pre-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "proc-receive",
"sha256": "ca4eb127414b2c85164b9366a3311218ed7b5a2f6cac93c2d654da97e1ba4748"
},
{
"relative_path": "update",
"sha256": "a53caf562b0cdd47b08d20c27c63059ba41cd410c3264a61cda1a531f1810ae6"
},
{
"relative_path": "update.d/gitea",
"sha256": "d32f9f382dc1511c93e9e2ce61a60c068ac83a933376368b474faad1399be79f"
},
{
"relative_path": "post-receive",
"sha256": "38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef"
},
{
"relative_path": "pre-receive.d/gitea",
"sha256": "2572c08b2aa9ec9db475f03e6ed43bf64d18f64f9a2364c5341ad277e31149fc"
}
],
"core_hooks_path": "unset"
}
],
"scope": "Filesystem hook metadata for 22 reviewed repos only; directory count includes unmanaged/archived/wiki possibilities, not an admitted production denominator. Hashes do not establish scanner behavior or branch protection. No repository content, credentials, logs, database or remote mutation.",
"template_comparison": {
"source_url": "https://codeberg.org/forgejo/forgejo/src/tag/v11.0.3/modules/repository/hooks.go",
"source_sha256": "c7d149a66c2e1170e50b6f6bd9fd1c96cbfab68dfed3e664d503bfb05e4e1348",
"matches_by_sha256": {
"38f2197d49b27f315e3487664802e56bc888d4afaec9e30b3bcc6bd461554aef": {
"template_index": 2,
"shell": "bash",
"executable": null,
"config_path": null,
"quoted": true
},
"a53caf562b0cdd47b08d20c27c63059ba41cd410c3264a61cda1a531f1810ae6": {
"template_index": 1,
"shell": "bash",
"executable": null,
"config_path": null,
"quoted": true
},
"2572c08b2aa9ec9db475f03e6ed43bf64d18f64f9a2364c5341ad277e31149fc": {
"template_index": 3,
"shell": "bash",
"executable": "/usr/local/bin/gitea",
"config_path": "/data/gitea/conf/app.ini",
"quoted": false
},
"d32f9f382dc1511c93e9e2ce61a60c068ac83a933376368b474faad1399be79f": {
"template_index": 4,
"shell": "bash",
"executable": "/usr/local/bin/gitea",
"config_path": "/data/gitea/conf/app.ini",
"quoted": false
},
"a3a87fd152133783f14859bfa738eb3fcc38d3090147ad8df81724ed62fa97a5": {
"template_index": 5,
"shell": "bash",
"executable": "/usr/local/bin/gitea",
"config_path": "/data/gitea/conf/app.ini",
"quoted": false
},
"ca4eb127414b2c85164b9366a3311218ed7b5a2f6cac93c2d654da97e1ba4748": {
"template_index": 6,
"shell": "bash",
"executable": "/usr/local/bin/gitea",
"config_path": "/data/gitea/conf/app.ini",
"quoted": false
},
"e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855": {
"template": "empty proc-receive.d/gitea"
}
},
"result": "All seven unique hook hashes match upstream generated templates for bash, /usr/local/bin/gitea and /data/gitea/conf/app.ini; 22 hook directories contain only the eight observed standard files, with no symlinks at the inspected depth. No custom scanner hook is installed at this boundary. Forge internal policies and Actions/branch-protection checks were not assessed."
},
"observer_sha256": "db2bdb37794a427a9b9543ecb9a3b35d5310c77417e6edb6da726ad87992237d",
"next_action": "Define admitted production repository inventory and owner-controlled introduced-history prevention, preserving Forgejo hooks. Verify SSH/HTTP/merge paths and CI authority separately; do not enable arbitrary user Git-hook editing or replace the generated dispatchers."
}

View file

@ -103,6 +103,14 @@ acceptance remain open. [Activation receipt](evidence/2026-10-12-netkingdom-secu
All four DSM-DETECT requirements now have incomplete assessments rather than
unverified placeholders. [Receipt and exact hook inventory](evidence/2026-10-12-netkingdom-security/secret-detection.json).
G07 server baseline: the 22 reviewed repositories on railiance01 have only
upstream-generated receive hooks, verified by matching all observed hashes to
[Forgejo v11.0.3 templates](https://codeberg.org/forgejo/forgejo/src/tag/v11.0.3/modules/repository/hooks.go).
No custom scanner hook is installed at that boundary. The 165 repository
directories are a discovery count, not a reviewed production denominator.
Actions/branch-protection and actual push refusal are still unverified.
[Read-only inventory](evidence/2026-10-12-netkingdom-security/forge-secret-detection-baseline.json).
## SEC DSM requirement coverage
Each numbered requirement in these families is in scope for assessment. The

View file

@ -163,6 +163,16 @@ exact proposal, backups and rollback: `docs/changes/CUST-WP-0080/`. Independent
forge/CI enforcement, other clones/history and detection-to-response remain open.
No DSM requirement or whole G07 closure is inferred from this local acceptance.
2026-10-12 G07 forge baseline: read-only observation confirmed railiance01 and
Forgejo 11.0.3. Its repository storage has 165 repository directories (not yet an
admitted production denominator). All 22 reviewed repositories exist and their
receive-hook files exactly match the seven distinct hashes generated by upstream
v11.0.3 templates, with no extra hook files/symlinks at the inspected depth.
No custom scanner hook is installed there. Branch-protection/Actions coverage,
internal policies and actual push rejection remain unverified. Metadata and
upstream comparison: `forge-secret-detection-baseline.json`. No server mutation,
credential read, repository-content scan or synthetic push was performed.
## Verify native closure against every requirement
```task