agent_audit_log (paperclip / star365_hub)star365_audit_log id 20360, action=audit_chain_reverification_attestedentry_hash: 0d94f1a2d440c08e9d4dfb93211a0e84b84ae3cafdd8896d5ea28c48975ff0c2fab22dc93d9b2381e56e5feac50984ab59ec86144219c97c336f7d06aee5095c2026-06-17 13:59:27, ๋งํฌ ํธ๋ฆฌ๊ฑฐ์ tip ์ถ์ ๋ฒ๊ทธ(ORDER BY id DESC LIMIT 1)๋ก ์ฒด์ธ์ ํฌํฌ๊ฐ ์๊ฒผ๋ค.
๊ทธ ์๊ฐ๋ถํฐ ๊ฒ์ฆ ํจ์๊ฐ ์คํจํ๊ณ , ์ผ์ผ ์ต์ปค๋ 2026-06-18 ~ 07-14 (27์ผ) ์ฐ์ ์คํจ ์ํ์๋ค.
๋ฌธ์ ๋ ์คํจ ๊ทธ ์์ฒด๊ฐ ์๋๋ผ, ๊ทธ 27์ผ๊ฐ ์ต์ปค๊ฐ ์๋ผ๋๋ ์ฒด์ธ์ head ๋ฅผ ์ ํ ๊ณ ์ ํ์ง ๋ชปํ๋ค๋ ์ ์ด๋ค.
์ต์ปค๋ ๋งค์ผ ae55d0โฆ(2674ํ์ ํด์)๋ง ๋ฐ๋ณต ๊ธฐ๋กํ๋ค โ head_id ๋ MAX(id) ์์,
head_hash ๋ ๊ฒ์ฆ์ด ๋ฉ์ถ ์ง์ ์์ ๊ฐ์ ธ์ ์๋ก ์ง์ด ๋ง์ ์ ์ด ์์๋ค.
์ต์ปค์ ์ญํ ์ ์ ๋ฉด ์ฌ์์ฑ(ํ์ ๊ณ ์น๊ณ ์ดํ ํด์๋ฅผ ์ ๋ถ ๋ค์ ๊ณ์ฐํด ๋ฎ์ด์ฐ๊ธฐ)์ ๋ง๋ ๊ฒ์ด๋ค. DB ๋ด๋ถ ์ฌ๊ณ์ฐ๋ง์ผ๋ก๋ ๊ทธ ๊ณต๊ฒฉ์ ์ก์ ์ ์๋ค โ ์ฌ์์ฑ๋ ์ฒด์ธ์ ์๊ธฐ ์์ ๊ณผ ์๋ฒฝํ ์ผ์นํ๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฐ๋ผ์ ๊ทธ 27์ผ ๊ตฌ๊ฐ์ ์ธ๋ถ ๊ณ ์ ์ ์ด ๋น์ด ์๋ ์ํ์๊ณ , ๋ณ๋์ ๋ ๋ฆฝ ์ฆ๊ฑฐ์ ์์ด๋ "๋ณ์กฐ๊ฐ ์์๋ค"๊ณ ๋งํ ์ ์์๋ค.
genesis ๋ถํฐ ์ ํ์ entry_hash ๋ฅผ ๋ด์ฉ์์ ์ฌ๊ณ์ฐํด ๋์กฐ (์กฐ๊ธฐ ์ข
๋ฃ ์์).
| ํญ๋ชฉ | ๊ฐ |
|---|---|
| ๊ฒ์ฆ ํ์ | 11,579ํ (100%) |
| ๋ณ์กฐ ํ | 0 |
| ๊ฒฐ๊ณผ | PASS |
์ฐธ๊ณ : ์์ ์ด์ ๊ฒ์ฆ๊ธฐ๋ 2675ํ์์ ๋ฉ์ถฐ ์ ์ฒด์ 77%๋ฅผ ํ ๋ฒ๋ ๋ณด์ง ์์๋ค. "๋งค์ผ ๊ฒ์ฆ ํต๊ณผ"๊ฐ ์๋๋ผ "๋งค์ผ 4๋ถ์ 1๋ง ๋ณด๊ณ ์์๋ค"๊ฐ ์ฌ์ค์ด์๋ค.
/var/log/audit/agent-audit.jsonl ์ chattr +a(append-only) ๋ก ๋ถ๋ฐ์ธ ํ์ผ์ด๋ฉฐ,
ํ ์ฝ์
์์ ์ DB์ ๋ณ๊ฐ๋ก prev_hash / entry_hash ๋ฅผ ๊ธฐ๋กํด์๋ค.
๊ณต๊ฒฉ์๊ฐ DB๋ฅผ ์ ๋ฉด ์ฌ์์ฑํด๋ WORM ์๋ ์๋ ํด์๊ฐ ๋จ๋๋ค. ๋ฐ๋ผ์ ์ด ๋์กฐ๊ฐ ํต๊ณผํด์ผ ๋น๋ก์ ์ ๋ฉด ์ฌ์์ฑ์ด ๋ฐฐ์ ๋๋ค.
| ํญ๋ชฉ | ๊ฐ |
|---|---|
| ๋์กฐ ํ์ | 11,579 |
| ํด์ ๋ถ์ผ์น (์ ๋ฉด ์ฌ์์ฑ) | 0 |
| DB์์ ์ญ์ ๋ ํ (์ฆ๊ฑฐ ์ธ๋ฉธ) | 0 |
| 27์ผ ๊ณต๋ฐฑ ๊ตฌ๊ฐ ๋์กฐ ํ์ | 8,906 |
| ๊ตฌ๊ฐ ๋ด ๋ถ์ผ์น | 0 |
| ๊ฒฐ๊ณผ | PASS |
โ 2026-06-17 ~ 07-14 ๊ตฌ๊ฐ, ๊ฐ์ฌ๊ธฐ๋ก ๋ณ์กฐ ์์. ์ ๋ขฐ์ ๋ณต๊ตฌ๋จ.
๋ ๋ฆฝ์ ์ธ ๋ ์ฆ๊ฑฐ์(DB ์ฌ๊ณ์ฐ + append-only WORM)์ด ์ ๊ตฌ๊ฐ์์ ์ผ์นํ๋ค. ๋ถ๋ถ ๋ณ์กฐยท์ ๋ฉด ์ฌ์์ฑยทํ ์ญ์ ๋ชจ๋ ๋ฐฐ์ ๋๋ค.
agent_audit_log id 2675 โ 2026-06-17 ๊ฒฝ์์กฐ๊ฑด์ผ๋ก ์๊ธด ์์ฑ ํฌํฌ(1ํ์ง๋ฆฌ ์ฃฝ์ ๊ฐ์ง).entry_hash ์ฌ๊ณ์ฐ ์ผ์น = ๋ด์ฉ ๋ณ์กฐ ์์. ๋ณธ์ ์ฒด์ธ์ ์ ๊ตฌ๊ฐ ๋ฌด๊ฒฐ.audit_chain_exceptions ์ entry_hash ๋ฅผ ๊ณ ์ ํด ํ์ ๊ธฐ๋ก์ผ๋ก ๋ณด์กด.ํ
(immutable-audit.sh)์ ๊ฐ์ฌ API ํธ์ถ์ด ์คํจํ๋ฉด ๋๊ตฌํธ์ถ ํ์ด๋ก๋๋ฅผ WORM ํ์ผ์ ์ง์ append ํ๋ค.
์ด ๊ธฐ๋ก์๋ entry_hash ๊ฐ ์๋ค โ ํด์์ฒด์ธ ๋ฐ์ด๋ค.
| ์๊ฐ | ๊ฑด์ | status | ์์ธ |
|---|---|---|---|
| 2026-06-17 | 5 | api_failed_no_key |
ํ ์ด ๊ฐ์ฌ API ํค๋ฅผ ์ฝ์ง ๋ชปํจ |
| 2026-06-24 | 3 | api_failed_no_key |
๋์ผ |
| 2026-07-01 02:40~03:14 KST | 79 | api_failed_000 |
pkill -f server.mjs ๋ก ์ธํ HQ 33๋ถ ๋ค์ด ๋น์ ์ฐ๊ฒฐ ์คํจ |
| 87 | 2026-07-01 ์ดํ ๋ฐ์ ์์ |
agent_audit_worm_fallback ํ
์ด๋ธ์ ๋ณด์กด.ํด์์ฒด์ธ๊ณผ WORM ์ "๊ธฐ๋ก๋ ๊ฒ์ด ์ดํ ๋ฐ๋์ง ์์์" ๋ง ์ฆ๋ช ํ๋ค. ์ ์ด์ ๋ ๊ณณ ์ด๋์๋ ๋ณด๋ด์ง์ง ์์ ์ฌ๊ฑด์ด ์์๋์ง๋ ์ด ์ฆ๋ช ์๋ก ์ ์ ์๋ค. (์: ํ ์ด ์์ ์คํ๋์ง ์์ ๊ฒฝ์ฐ โ ํ ๋ฏธ๋ฑ๋ก ์ธ์ , ํ๋ก์ธ์ค ๊ฐ์ ์ข ๋ฃ ๋ฑ)
| ์กฐ์น | ๋ด์ฉ |
|---|---|
| tip ์ถ์ | audit_chain_head ํ
์ด๋ธ๋ก ์ง์ง tip ์ O(1) ๋ช
์ ์ถ์ . MAX(id) ์ถ์ ์ ๊ฑฐ (์ ์ฒด์ธ) |
| ๊ฒ์ฆ ํจ์ | ๊ตฌ์กฐ ๊ฒ์ฆ์ผ๋ก ์ฌ์์ฑ โ ์กฐ๊ธฐ์ข ๋ฃ ์์, id ์์ ๊ฐ์ ์์. ์ธ๋ฑ์ค 4๊ฐ ์ถ๊ฐ |
| ์ต์ปค ๊ธฐ์ค์ | ์ฐ์์ฑ ๋์กฐ ๊ธฐ์ค์ ์ verified ์ต์ปค๋ก ํ์ (์คํจ ์ต์ปค์ head_hash ๋ ์ ์์ ๋ฌด์๋ฏธ) |
| ์์ธ ์ํ ๋ฐฉ์ด | ์์ธ ๋ชฉ๋ก์ sha256 ์ง๋ฌธ์ ์ต์ปค์ ๊ณ ์ โ ๋ชฐ๋ ์ถ๊ฐ/์ ๊ฑฐ ์ ๊ฒฝ๋ณด (์๋ฐฉํฅ ์ค์ฆ) |
| ์ฒด์ธ ๋ฐ ๊ธฐ๋ก | ์ต์ปค๊ฐ ๋งค์ผ ๊ณ์ยท๋ณด๊ณ . ๋ฏธ์์ง๋ถ ๋ฐ์ ์ ๊ฒฝ๋ณด |
| ๋์๋ณด๋ | ceo.star365.site/audit ์ ํ์ ์์ธ + ์ฒด์ธ ๋ฐ ๊ธฐ๋ก ์์ ๋
ธ์ถ |
๊ฒ์ฆ ๊ฒฐ๊ณผ: ์ต์ปค exit 0 (27์ผ ๋ง์ ์ฒซ ํต๊ณผ), ๊ฒ์ฆ ๋ฒ์ 23% โ 100%,
DB ์ง์ ๋ณ์กฐ 3์ข
(๋ณธ์ ํ ์์กฐ / ์์ธ ํ ์์กฐ / ํ ์ญ์ ) ์ ๋ถ ํ์ง ์ค์ฆ.
/opt/star365-ceo/scripts/migrate-audit-chain-head-20260714.sql, migrate-audit-verify-20260714.sql/opt/star365-ceo/scripts/_rollback-audit-chain-20260714.sql/opt/star365-ceo/scripts/worm-crosscheck.mjs/opt/star365-ceo/scripts/attest-chain-reverification.mjs/opt/star365-ceo/scripts/ingest-worm-fallback.mjs/opt/backups/paperclip-local/audit-chain-backup-20260714.dump (16MB)