Skip to content

fix(devops): unsigned-commit fallback for config integrity log - #69

Merged
github-actions[bot] merged 1 commit into
mainfrom
dan/config-integrity-unsigned-fallback
Jul 2, 2026
Merged

fix(devops): unsigned-commit fallback for config integrity log#69
github-actions[bot] merged 1 commit into
mainfrom
dan/config-integrity-unsigned-fallback

Conversation

@dizhaky

@dizhaky dizhaky commented Jul 2, 2026

Copy link
Copy Markdown
Owner

Summary

When the 1Password ssh-agent is locked (unattended Mac), commit signing fails and the integrity log stays uncommitted — making every subsequent hermes config verify exit 2 (log-tampering false positive, would page Slack every 30 min).

  • git_commit() now retries with --no-gpg-sign when the signed commit fails; unsigned commits are tagged [unsigned: signer unavailable] in the message for auditability.
  • restore() reuses git_commit() instead of its own silent add+commit block (which swallowed the same failure).

Found while wiring the Config Integrity Watchdog cron (fbe11786e4d1) to hermes config verify — first cron-context seal wrote the log but could not commit it (Pro's 1Password locked), leaving verify stuck at exit 2. Deployed copies on the Pro/Air are already patched; this makes the repo source match.

Refs: DAN-1880, follow-up to #67.

Test plan

  • Manual on MacBook Pro: seal → log committed unsigned when signer unavailable → hermes config verify exits 0
  • hermes config restore no-op path exits 0

🤖 Generated with Claude Code

When the 1Password ssh-agent is locked (unattended Mac), commit signing
fails and the integrity log stays uncommitted -- making every subsequent
`hermes config verify` exit 2 (log tampering false positive). Fall back
to --no-gpg-sign for seal/restore log commits, tagged
'[unsigned: signer unavailable]' in the message. restore() now reuses
git_commit() instead of its own silent add+commit block.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@linear-code

linear-code Bot commented Jul 2, 2026

Copy link
Copy Markdown

DAN-1880

@github-actions
github-actions Bot merged commit cac9726 into main Jul 2, 2026
19 of 25 checks passed
@github-actions
github-actions Bot deleted the dan/config-integrity-unsigned-fallback branch July 2, 2026 12:52
@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown

🔎 Lint report: dan/config-integrity-unsigned-fallback vs origin/main

ruff

Total: 0 on HEAD, 0 on base (➖ 0)

🆕 New issues: none

✅ Fixed issues: none

Unchanged: 0 pre-existing issues carried over.

ty (type checker)

Total: 8613 on HEAD, 8613 on base (➖ 0)

🆕 New issues: none

✅ Fixed issues: none

Unchanged: 4580 pre-existing issues carried over.

Diagnostics are surfaced as warnings — this check never fails the build.

github-actions Bot pushed a commit that referenced this pull request Jul 2, 2026
… mark arc complete (#76)

Session close-out audit found the Outcome section only mentioned PR #67.
PR #69 explicitly self-describes as "follow-up to #67" (unsigned-commit
git fallback) and PR #68 (AGENTS.md docs) is also a direct follow-up;
neither was recorded. Also clarifies that #71/#72 (cron ticker
heartbeat/stall fix) are an unrelated arc shipped the same day, not
part of this project.


Claude-Session: https://claude.ai/code/session_01PQKCc5mDedYAiCNyXnTezh

Co-authored-by: Claude <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant