chore(ops): version the fleet ops scripts — fleet-status, fleet-alert, papers-digest - #453

Merged
aarontrowbridge merged 1 commit into
mainfrom
amico/issue-427-version-ops-scripts
Aug 20, 2026
Merged

chore(ops): version the fleet ops scripts — fleet-status, fleet-alert, papers-digest#453
aarontrowbridge merged 1 commit into
mainfrom
amico/issue-427-version-ops-scripts

Conversation

@aarontrowbridge

@aarontrowbridgeaarontrowbridge commented Aug 20, 2026

Copy link
Copy Markdown
Member

Closes#427.

Problem — three production launchd scripts lived only on the mini's disk, hand-maintained, outside any repo. A disk failure loses them; scripts that page humans had no review trail.

What's here — the three scripts verbatim from the mini (fleet-status.sh 5-min, fleet-alert.sh 15-min → #fleet, papers-digest/daily.sh daily → #papers), reference copies of their launchd plists, install.sh (idempotent deploy to ~/.amico/ops/; touches no state, no plists, no bundle), and a README documenting cadences, posting targets, and the frozen-bundle upgrade pattern (copy dist + refresh sha sidecar).

~/.amico/ops/ becomes a deploy target; this repo is the source of truth.

Summary by CodeRabbit

  • New Features

    • Added automated fleet health monitoring for device reachability, server status, session data, vault sync, and repository health.
    • Added Slack notifications for meaningful fleet transitions and prolonged outages.
    • Added a daily papers digest for the quant-ph feed, limited to five papers.
    • Added scheduled macOS background jobs and an installer for operations scripts.
  • Documentation

    • Added operational documentation covering schedules, deployment, inputs, outputs, and runtime state.

…, papers-digest (#427)
Three production launchd scripts lived only on the mini's disk, hand-maintained,
outside any repo: a mini disk failure loses them, and scripts that page humans
had no review trail. Now versioned in ops/ alongside scripts/:
- fleet-status.sh (5 min) — fleet health JSON for the dashboard + server guard
- fleet-alert.sh (15 min) — device transitions -> Slack #fleet (noise-gated)
- papers-digest/daily.sh (daily ~09:00) — frozen-bundle digest -> Slack #papers
- launchd/ — reference copies of the three plists
- install.sh — deploy scripts to ~/.amico/ops/ (idempotent, state-safe)
- README.md — what runs where, on what cadence, posting where; the
frozen-bundle upgrade pattern (copy dist + refresh sha sidecar)
~/.amico/ops/ becomes a deploy target, not the source of truth.
Closes#427
@coderabbitai

coderabbitaiBot commented Aug 20, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 41e3cebd-e68f-4c9c-9f6b-ede282db277a

📥 Commits

Reviewing files that changed from the base of the PR and between 9b97de8 and 4028d59.

📒 Files selected for processing (8)
  • ops/README.md
  • ops/fleet-alert.sh
  • ops/fleet-status.sh
  • ops/install.sh
  • ops/launchd/co.harmoniqs.amicode-papers-digest.plist
  • ops/launchd/co.harmoniqs.fleet-alert.plist
  • ops/launchd/co.harmoniqs.fleet-status.plist
  • ops/papers-digest/daily.sh

📝 Walkthrough

Walkthrough

The PR adds versioned fleet monitoring and alerting scripts, launchd schedules, an installer, operational documentation, and a daily papers digest runner that executes the frozen bundle.

Changes

Fleet operations automation

Layer / File(s)Summary
Fleet health collection
ops/fleet-status.sh
Collects device reachability, chat-server sessions, server database checks, vault-sync status, and repository state. It atomically writes fleet status JSON and emits notifications when guard signatures change.
Fleet transition alerting
ops/fleet-alert.sh
Tracks device state, suppresses first-run alerts, sends transition and prolonged-outage reminders for selected devices, and posts messages to Slack.
Operational deployment and scheduling
ops/install.sh, ops/launchd/*, ops/papers-digest/daily.sh, ops/README.md
Installs executable scripts, defines launchd schedules and logs, runs the frozen papers digest daily, and documents deployment and runtime state.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
participant launchd
participant fleet-status.sh
participant fleet-alert.sh
participant Slack
launchd->>fleet-status.sh: run every five minutes
fleet-status.sh->>fleet-status.sh: collect and write fleet-status.json
launchd->>fleet-alert.sh: run every fifteen minutes
fleet-alert.sh->>fleet-status.sh: read fleet status
fleet-alert.sh->>Slack: post transition or outage messages
Loading

Possibly related PRs

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch amico/issue-427-version-ops-scripts

Comment @coderabbitai help to get the list of available commands.

@aarontrowbridge
aarontrowbridge marked this pull request as ready for review August 20, 2026 10:14
@aarontrowbridge
aarontrowbridge merged commit d6b7825 into mainAug 20, 2026
7 checks passed
Sign up for freeto 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.

chore: version the fleet ops scripts (fleet-status, fleet-alert, papers-digest) — unversioned on the mini today

1 participant

@aarontrowbridge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

chore(ops): version the fleet ops scripts — fleet-status, fleet-alert, papers-digest - #453

Merged
aarontrowbridge merged 1 commit into
mainfrom
amico/issue-427-version-ops-scripts
Aug 20, 2026
Merged

chore(ops): version the fleet ops scripts — fleet-status, fleet-alert, papers-digest#453
aarontrowbridge merged 1 commit into
mainfrom
amico/issue-427-version-ops-scripts

Conversation

@aarontrowbridge

@aarontrowbridgeaarontrowbridge commented Aug 20, 2026

Copy link
Copy Markdown
Member

Closes#427.

Problem — three production launchd scripts lived only on the mini's disk, hand-maintained, outside any repo. A disk failure loses them; scripts that page humans had no review trail.

What's here — the three scripts verbatim from the mini (fleet-status.sh 5-min, fleet-alert.sh 15-min → #fleet, papers-digest/daily.sh daily → #papers), reference copies of their launchd plists, install.sh (idempotent deploy to ~/.amico/ops/; touches no state, no plists, no bundle), and a README documenting cadences, posting targets, and the frozen-bundle upgrade pattern (copy dist + refresh sha sidecar).

~/.amico/ops/ becomes a deploy target; this repo is the source of truth.

Summary by CodeRabbit

  • New Features

    • Added automated fleet health monitoring for device reachability, server status, session data, vault sync, and repository health.
    • Added Slack notifications for meaningful fleet transitions and prolonged outages.
    • Added a daily papers digest for the quant-ph feed, limited to five papers.
    • Added scheduled macOS background jobs and an installer for operations scripts.
  • Documentation

    • Added operational documentation covering schedules, deployment, inputs, outputs, and runtime state.

…, papers-digest (#427)
Three production launchd scripts lived only on the mini's disk, hand-maintained,
outside any repo: a mini disk failure loses them, and scripts that page humans
had no review trail. Now versioned in ops/ alongside scripts/:
- fleet-status.sh (5 min) — fleet health JSON for the dashboard + server guard
- fleet-alert.sh (15 min) — device transitions -> Slack #fleet (noise-gated)
- papers-digest/daily.sh (daily ~09:00) — frozen-bundle digest -> Slack #papers
- launchd/ — reference copies of the three plists
- install.sh — deploy scripts to ~/.amico/ops/ (idempotent, state-safe)
- README.md — what runs where, on what cadence, posting where; the
frozen-bundle upgrade pattern (copy dist + refresh sha sidecar)
~/.amico/ops/ becomes a deploy target, not the source of truth.
Closes#427
@coderabbitai

coderabbitaiBot commented Aug 20, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 41e3cebd-e68f-4c9c-9f6b-ede282db277a

📥 Commits

Reviewing files that changed from the base of the PR and between 9b97de8 and 4028d59.

📒 Files selected for processing (8)
  • ops/README.md
  • ops/fleet-alert.sh
  • ops/fleet-status.sh
  • ops/install.sh
  • ops/launchd/co.harmoniqs.amicode-papers-digest.plist
  • ops/launchd/co.harmoniqs.fleet-alert.plist
  • ops/launchd/co.harmoniqs.fleet-status.plist
  • ops/papers-digest/daily.sh

📝 Walkthrough

Walkthrough

The PR adds versioned fleet monitoring and alerting scripts, launchd schedules, an installer, operational documentation, and a daily papers digest runner that executes the frozen bundle.

Changes

Fleet operations automation

Layer / File(s)Summary
Fleet health collection
ops/fleet-status.sh
Collects device reachability, chat-server sessions, server database checks, vault-sync status, and repository state. It atomically writes fleet status JSON and emits notifications when guard signatures change.
Fleet transition alerting
ops/fleet-alert.sh
Tracks device state, suppresses first-run alerts, sends transition and prolonged-outage reminders for selected devices, and posts messages to Slack.
Operational deployment and scheduling
ops/install.sh, ops/launchd/*, ops/papers-digest/daily.sh, ops/README.md
Installs executable scripts, defines launchd schedules and logs, runs the frozen papers digest daily, and documents deployment and runtime state.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
participant launchd
participant fleet-status.sh
participant fleet-alert.sh
participant Slack
launchd->>fleet-status.sh: run every five minutes
fleet-status.sh->>fleet-status.sh: collect and write fleet-status.json
launchd->>fleet-alert.sh: run every fifteen minutes
fleet-alert.sh->>fleet-status.sh: read fleet status
fleet-alert.sh->>Slack: post transition or outage messages
Loading

Possibly related PRs

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch amico/issue-427-version-ops-scripts

Comment @coderabbitai help to get the list of available commands.

@aarontrowbridge
aarontrowbridge marked this pull request as ready for review August 20, 2026 10:14
@aarontrowbridge
aarontrowbridge merged commit d6b7825 into mainAug 20, 2026
7 checks passed
Sign up for freeto 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.

chore: version the fleet ops scripts (fleet-status, fleet-alert, papers-digest) — unversioned on the mini today

1 participant

@aarontrowbridge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore(ops): version the fleet ops scripts — fleet-status, fleet-alert, papers-digest - #453

Merged
aarontrowbridge merged 1 commit into
mainfrom
amico/issue-427-version-ops-scripts
Aug 20, 2026
Merged

chore(ops): version the fleet ops scripts — fleet-status, fleet-alert, papers-digest#453
aarontrowbridge merged 1 commit into
mainfrom
amico/issue-427-version-ops-scripts

Conversation

@aarontrowbridge

@aarontrowbridgeaarontrowbridge commented Aug 20, 2026

Copy link
Copy Markdown
Member

Closes#427.

Problem — three production launchd scripts lived only on the mini's disk, hand-maintained, outside any repo. A disk failure loses them; scripts that page humans had no review trail.

What's here — the three scripts verbatim from the mini (fleet-status.sh 5-min, fleet-alert.sh 15-min → #fleet, papers-digest/daily.sh daily → #papers), reference copies of their launchd plists, install.sh (idempotent deploy to ~/.amico/ops/; touches no state, no plists, no bundle), and a README documenting cadences, posting targets, and the frozen-bundle upgrade pattern (copy dist + refresh sha sidecar).

~/.amico/ops/ becomes a deploy target; this repo is the source of truth.

Summary by CodeRabbit

  • New Features

    • Added automated fleet health monitoring for device reachability, server status, session data, vault sync, and repository health.
    • Added Slack notifications for meaningful fleet transitions and prolonged outages.
    • Added a daily papers digest for the quant-ph feed, limited to five papers.
    • Added scheduled macOS background jobs and an installer for operations scripts.
  • Documentation

    • Added operational documentation covering schedules, deployment, inputs, outputs, and runtime state.

…, papers-digest (#427)
Three production launchd scripts lived only on the mini's disk, hand-maintained,
outside any repo: a mini disk failure loses them, and scripts that page humans
had no review trail. Now versioned in ops/ alongside scripts/:
- fleet-status.sh (5 min) — fleet health JSON for the dashboard + server guard
- fleet-alert.sh (15 min) — device transitions -> Slack #fleet (noise-gated)
- papers-digest/daily.sh (daily ~09:00) — frozen-bundle digest -> Slack #papers
- launchd/ — reference copies of the three plists
- install.sh — deploy scripts to ~/.amico/ops/ (idempotent, state-safe)
- README.md — what runs where, on what cadence, posting where; the
frozen-bundle upgrade pattern (copy dist + refresh sha sidecar)
~/.amico/ops/ becomes a deploy target, not the source of truth.
Closes#427
@coderabbitai

coderabbitaiBot commented Aug 20, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 41e3cebd-e68f-4c9c-9f6b-ede282db277a

📥 Commits

Reviewing files that changed from the base of the PR and between 9b97de8 and 4028d59.

📒 Files selected for processing (8)
  • ops/README.md
  • ops/fleet-alert.sh
  • ops/fleet-status.sh
  • ops/install.sh
  • ops/launchd/co.harmoniqs.amicode-papers-digest.plist
  • ops/launchd/co.harmoniqs.fleet-alert.plist
  • ops/launchd/co.harmoniqs.fleet-status.plist
  • ops/papers-digest/daily.sh

📝 Walkthrough

Walkthrough

The PR adds versioned fleet monitoring and alerting scripts, launchd schedules, an installer, operational documentation, and a daily papers digest runner that executes the frozen bundle.

Changes

Fleet operations automation

Layer / File(s)Summary
Fleet health collection
ops/fleet-status.sh
Collects device reachability, chat-server sessions, server database checks, vault-sync status, and repository state. It atomically writes fleet status JSON and emits notifications when guard signatures change.
Fleet transition alerting
ops/fleet-alert.sh
Tracks device state, suppresses first-run alerts, sends transition and prolonged-outage reminders for selected devices, and posts messages to Slack.
Operational deployment and scheduling
ops/install.sh, ops/launchd/*, ops/papers-digest/daily.sh, ops/README.md
Installs executable scripts, defines launchd schedules and logs, runs the frozen papers digest daily, and documents deployment and runtime state.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
participant launchd
participant fleet-status.sh
participant fleet-alert.sh
participant Slack
launchd->>fleet-status.sh: run every five minutes
fleet-status.sh->>fleet-status.sh: collect and write fleet-status.json
launchd->>fleet-alert.sh: run every fifteen minutes
fleet-alert.sh->>fleet-status.sh: read fleet status
fleet-alert.sh->>Slack: post transition or outage messages
Loading

Possibly related PRs

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch amico/issue-427-version-ops-scripts

Comment @coderabbitai help to get the list of available commands.

@aarontrowbridge
aarontrowbridge marked this pull request as ready for review August 20, 2026 10:14
@aarontrowbridge
aarontrowbridge merged commit d6b7825 into mainAug 20, 2026
7 checks passed
Sign up for freeto 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.

chore: version the fleet ops scripts (fleet-status, fleet-alert, papers-digest) — unversioned on the mini today

1 participant

@aarontrowbridge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore(ops): version the fleet ops scripts — fleet-status, fleet-alert, papers-digest - #453

Merged
aarontrowbridge merged 1 commit into
mainfrom
amico/issue-427-version-ops-scripts
Aug 20, 2026
Merged

chore(ops): version the fleet ops scripts — fleet-status, fleet-alert, papers-digest#453
aarontrowbridge merged 1 commit into
mainfrom
amico/issue-427-version-ops-scripts

Conversation

@aarontrowbridge

@aarontrowbridgeaarontrowbridge commented Aug 20, 2026

Copy link
Copy Markdown
Member

Closes#427.

Problem — three production launchd scripts lived only on the mini's disk, hand-maintained, outside any repo. A disk failure loses them; scripts that page humans had no review trail.

What's here — the three scripts verbatim from the mini (fleet-status.sh 5-min, fleet-alert.sh 15-min → #fleet, papers-digest/daily.sh daily → #papers), reference copies of their launchd plists, install.sh (idempotent deploy to ~/.amico/ops/; touches no state, no plists, no bundle), and a README documenting cadences, posting targets, and the frozen-bundle upgrade pattern (copy dist + refresh sha sidecar).

~/.amico/ops/ becomes a deploy target; this repo is the source of truth.

Summary by CodeRabbit

  • New Features

    • Added automated fleet health monitoring for device reachability, server status, session data, vault sync, and repository health.
    • Added Slack notifications for meaningful fleet transitions and prolonged outages.
    • Added a daily papers digest for the quant-ph feed, limited to five papers.
    • Added scheduled macOS background jobs and an installer for operations scripts.
  • Documentation

    • Added operational documentation covering schedules, deployment, inputs, outputs, and runtime state.

…, papers-digest (#427)
Three production launchd scripts lived only on the mini's disk, hand-maintained,
outside any repo: a mini disk failure loses them, and scripts that page humans
had no review trail. Now versioned in ops/ alongside scripts/:
- fleet-status.sh (5 min) — fleet health JSON for the dashboard + server guard
- fleet-alert.sh (15 min) — device transitions -> Slack #fleet (noise-gated)
- papers-digest/daily.sh (daily ~09:00) — frozen-bundle digest -> Slack #papers
- launchd/ — reference copies of the three plists
- install.sh — deploy scripts to ~/.amico/ops/ (idempotent, state-safe)
- README.md — what runs where, on what cadence, posting where; the
frozen-bundle upgrade pattern (copy dist + refresh sha sidecar)
~/.amico/ops/ becomes a deploy target, not the source of truth.
Closes#427
@coderabbitai

coderabbitaiBot commented Aug 20, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 41e3cebd-e68f-4c9c-9f6b-ede282db277a

📥 Commits

Reviewing files that changed from the base of the PR and between 9b97de8 and 4028d59.

📒 Files selected for processing (8)
  • ops/README.md
  • ops/fleet-alert.sh
  • ops/fleet-status.sh
  • ops/install.sh
  • ops/launchd/co.harmoniqs.amicode-papers-digest.plist
  • ops/launchd/co.harmoniqs.fleet-alert.plist
  • ops/launchd/co.harmoniqs.fleet-status.plist
  • ops/papers-digest/daily.sh

📝 Walkthrough

Walkthrough

The PR adds versioned fleet monitoring and alerting scripts, launchd schedules, an installer, operational documentation, and a daily papers digest runner that executes the frozen bundle.

Changes

Fleet operations automation

Layer / File(s)Summary
Fleet health collection
ops/fleet-status.sh
Collects device reachability, chat-server sessions, server database checks, vault-sync status, and repository state. It atomically writes fleet status JSON and emits notifications when guard signatures change.
Fleet transition alerting
ops/fleet-alert.sh
Tracks device state, suppresses first-run alerts, sends transition and prolonged-outage reminders for selected devices, and posts messages to Slack.
Operational deployment and scheduling
ops/install.sh, ops/launchd/*, ops/papers-digest/daily.sh, ops/README.md
Installs executable scripts, defines launchd schedules and logs, runs the frozen papers digest daily, and documents deployment and runtime state.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
participant launchd
participant fleet-status.sh
participant fleet-alert.sh
participant Slack
launchd->>fleet-status.sh: run every five minutes
fleet-status.sh->>fleet-status.sh: collect and write fleet-status.json
launchd->>fleet-alert.sh: run every fifteen minutes
fleet-alert.sh->>fleet-status.sh: read fleet status
fleet-alert.sh->>Slack: post transition or outage messages
Loading

Possibly related PRs

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch amico/issue-427-version-ops-scripts

Comment @coderabbitai help to get the list of available commands.

@aarontrowbridge
aarontrowbridge marked this pull request as ready for review August 20, 2026 10:14
@aarontrowbridge
aarontrowbridge merged commit d6b7825 into mainAug 20, 2026
7 checks passed
Sign up for freeto 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.

chore: version the fleet ops scripts (fleet-status, fleet-alert, papers-digest) — unversioned on the mini today

1 participant

@aarontrowbridge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

chore(ops): version the fleet ops scripts — fleet-status, fleet-alert, papers-digest - #453

Merged
aarontrowbridge merged 1 commit into
mainfrom
amico/issue-427-version-ops-scripts
Aug 20, 2026
Merged

chore(ops): version the fleet ops scripts — fleet-status, fleet-alert, papers-digest#453
aarontrowbridge merged 1 commit into
mainfrom
amico/issue-427-version-ops-scripts

Conversation

@aarontrowbridge

@aarontrowbridgeaarontrowbridge commented Aug 20, 2026

Copy link
Copy Markdown
Member

Closes#427.

Problem — three production launchd scripts lived only on the mini's disk, hand-maintained, outside any repo. A disk failure loses them; scripts that page humans had no review trail.

What's here — the three scripts verbatim from the mini (fleet-status.sh 5-min, fleet-alert.sh 15-min → #fleet, papers-digest/daily.sh daily → #papers), reference copies of their launchd plists, install.sh (idempotent deploy to ~/.amico/ops/; touches no state, no plists, no bundle), and a README documenting cadences, posting targets, and the frozen-bundle upgrade pattern (copy dist + refresh sha sidecar).

~/.amico/ops/ becomes a deploy target; this repo is the source of truth.

Summary by CodeRabbit

  • New Features

    • Added automated fleet health monitoring for device reachability, server status, session data, vault sync, and repository health.
    • Added Slack notifications for meaningful fleet transitions and prolonged outages.
    • Added a daily papers digest for the quant-ph feed, limited to five papers.
    • Added scheduled macOS background jobs and an installer for operations scripts.
  • Documentation

    • Added operational documentation covering schedules, deployment, inputs, outputs, and runtime state.

…, papers-digest (#427)
Three production launchd scripts lived only on the mini's disk, hand-maintained,
outside any repo: a mini disk failure loses them, and scripts that page humans
had no review trail. Now versioned in ops/ alongside scripts/:
- fleet-status.sh (5 min) — fleet health JSON for the dashboard + server guard
- fleet-alert.sh (15 min) — device transitions -> Slack #fleet (noise-gated)
- papers-digest/daily.sh (daily ~09:00) — frozen-bundle digest -> Slack #papers
- launchd/ — reference copies of the three plists
- install.sh — deploy scripts to ~/.amico/ops/ (idempotent, state-safe)
- README.md — what runs where, on what cadence, posting where; the
frozen-bundle upgrade pattern (copy dist + refresh sha sidecar)
~/.amico/ops/ becomes a deploy target, not the source of truth.
Closes#427
@coderabbitai

coderabbitaiBot commented Aug 20, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 41e3cebd-e68f-4c9c-9f6b-ede282db277a

📥 Commits

Reviewing files that changed from the base of the PR and between 9b97de8 and 4028d59.

📒 Files selected for processing (8)
  • ops/README.md
  • ops/fleet-alert.sh
  • ops/fleet-status.sh
  • ops/install.sh
  • ops/launchd/co.harmoniqs.amicode-papers-digest.plist
  • ops/launchd/co.harmoniqs.fleet-alert.plist
  • ops/launchd/co.harmoniqs.fleet-status.plist
  • ops/papers-digest/daily.sh

📝 Walkthrough

Walkthrough

The PR adds versioned fleet monitoring and alerting scripts, launchd schedules, an installer, operational documentation, and a daily papers digest runner that executes the frozen bundle.

Changes

Fleet operations automation

Layer / File(s)Summary
Fleet health collection
ops/fleet-status.sh
Collects device reachability, chat-server sessions, server database checks, vault-sync status, and repository state. It atomically writes fleet status JSON and emits notifications when guard signatures change.
Fleet transition alerting
ops/fleet-alert.sh
Tracks device state, suppresses first-run alerts, sends transition and prolonged-outage reminders for selected devices, and posts messages to Slack.
Operational deployment and scheduling
ops/install.sh, ops/launchd/*, ops/papers-digest/daily.sh, ops/README.md
Installs executable scripts, defines launchd schedules and logs, runs the frozen papers digest daily, and documents deployment and runtime state.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
participant launchd
participant fleet-status.sh
participant fleet-alert.sh
participant Slack
launchd->>fleet-status.sh: run every five minutes
fleet-status.sh->>fleet-status.sh: collect and write fleet-status.json
launchd->>fleet-alert.sh: run every fifteen minutes
fleet-alert.sh->>fleet-status.sh: read fleet status
fleet-alert.sh->>Slack: post transition or outage messages
Loading

Possibly related PRs

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch amico/issue-427-version-ops-scripts

Comment @coderabbitai help to get the list of available commands.

@aarontrowbridge
aarontrowbridge marked this pull request as ready for review August 20, 2026 10:14
@aarontrowbridge
aarontrowbridge merged commit d6b7825 into mainAug 20, 2026
7 checks passed
Sign up for freeto 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.

chore: version the fleet ops scripts (fleet-status, fleet-alert, papers-digest) — unversioned on the mini today

1 participant

@aarontrowbridge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore(ops): version the fleet ops scripts — fleet-status, fleet-alert, papers-digest - #453

Merged
aarontrowbridge merged 1 commit into
mainfrom
amico/issue-427-version-ops-scripts
Aug 20, 2026
Merged

chore(ops): version the fleet ops scripts — fleet-status, fleet-alert, papers-digest#453
aarontrowbridge merged 1 commit into
mainfrom
amico/issue-427-version-ops-scripts

Conversation

@aarontrowbridge

@aarontrowbridgeaarontrowbridge commented Aug 20, 2026

Copy link
Copy Markdown
Member

Closes#427.

Problem — three production launchd scripts lived only on the mini's disk, hand-maintained, outside any repo. A disk failure loses them; scripts that page humans had no review trail.

What's here — the three scripts verbatim from the mini (fleet-status.sh 5-min, fleet-alert.sh 15-min → #fleet, papers-digest/daily.sh daily → #papers), reference copies of their launchd plists, install.sh (idempotent deploy to ~/.amico/ops/; touches no state, no plists, no bundle), and a README documenting cadences, posting targets, and the frozen-bundle upgrade pattern (copy dist + refresh sha sidecar).

~/.amico/ops/ becomes a deploy target; this repo is the source of truth.

Summary by CodeRabbit

  • New Features

    • Added automated fleet health monitoring for device reachability, server status, session data, vault sync, and repository health.
    • Added Slack notifications for meaningful fleet transitions and prolonged outages.
    • Added a daily papers digest for the quant-ph feed, limited to five papers.
    • Added scheduled macOS background jobs and an installer for operations scripts.
  • Documentation

    • Added operational documentation covering schedules, deployment, inputs, outputs, and runtime state.

…, papers-digest (#427)
Three production launchd scripts lived only on the mini's disk, hand-maintained,
outside any repo: a mini disk failure loses them, and scripts that page humans
had no review trail. Now versioned in ops/ alongside scripts/:
- fleet-status.sh (5 min) — fleet health JSON for the dashboard + server guard
- fleet-alert.sh (15 min) — device transitions -> Slack #fleet (noise-gated)
- papers-digest/daily.sh (daily ~09:00) — frozen-bundle digest -> Slack #papers
- launchd/ — reference copies of the three plists
- install.sh — deploy scripts to ~/.amico/ops/ (idempotent, state-safe)
- README.md — what runs where, on what cadence, posting where; the
frozen-bundle upgrade pattern (copy dist + refresh sha sidecar)
~/.amico/ops/ becomes a deploy target, not the source of truth.
Closes#427
@coderabbitai

coderabbitaiBot commented Aug 20, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 41e3cebd-e68f-4c9c-9f6b-ede282db277a

📥 Commits

Reviewing files that changed from the base of the PR and between 9b97de8 and 4028d59.

📒 Files selected for processing (8)
  • ops/README.md
  • ops/fleet-alert.sh
  • ops/fleet-status.sh
  • ops/install.sh
  • ops/launchd/co.harmoniqs.amicode-papers-digest.plist
  • ops/launchd/co.harmoniqs.fleet-alert.plist
  • ops/launchd/co.harmoniqs.fleet-status.plist
  • ops/papers-digest/daily.sh

📝 Walkthrough

Walkthrough

The PR adds versioned fleet monitoring and alerting scripts, launchd schedules, an installer, operational documentation, and a daily papers digest runner that executes the frozen bundle.

Changes

Fleet operations automation

Layer / File(s)Summary
Fleet health collection
ops/fleet-status.sh
Collects device reachability, chat-server sessions, server database checks, vault-sync status, and repository state. It atomically writes fleet status JSON and emits notifications when guard signatures change.
Fleet transition alerting
ops/fleet-alert.sh
Tracks device state, suppresses first-run alerts, sends transition and prolonged-outage reminders for selected devices, and posts messages to Slack.
Operational deployment and scheduling
ops/install.sh, ops/launchd/*, ops/papers-digest/daily.sh, ops/README.md
Installs executable scripts, defines launchd schedules and logs, runs the frozen papers digest daily, and documents deployment and runtime state.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
participant launchd
participant fleet-status.sh
participant fleet-alert.sh
participant Slack
launchd->>fleet-status.sh: run every five minutes
fleet-status.sh->>fleet-status.sh: collect and write fleet-status.json
launchd->>fleet-alert.sh: run every fifteen minutes
fleet-alert.sh->>fleet-status.sh: read fleet status
fleet-alert.sh->>Slack: post transition or outage messages
Loading

Possibly related PRs

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch amico/issue-427-version-ops-scripts

Comment @coderabbitai help to get the list of available commands.

@aarontrowbridge
aarontrowbridge marked this pull request as ready for review August 20, 2026 10:14
@aarontrowbridge
aarontrowbridge merged commit d6b7825 into mainAug 20, 2026
7 checks passed
Sign up for freeto 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.

chore: version the fleet ops scripts (fleet-status, fleet-alert, papers-digest) — unversioned on the mini today

1 participant

@aarontrowbridge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

chore(ops): version the fleet ops scripts — fleet-status, fleet-alert, papers-digest - #453

Merged
aarontrowbridge merged 1 commit into
mainfrom
amico/issue-427-version-ops-scripts
Aug 20, 2026
Merged

chore(ops): version the fleet ops scripts — fleet-status, fleet-alert, papers-digest#453
aarontrowbridge merged 1 commit into
mainfrom
amico/issue-427-version-ops-scripts

Conversation

@aarontrowbridge

@aarontrowbridgeaarontrowbridge commented Aug 20, 2026

Copy link
Copy Markdown
Member

Closes#427.

Problem — three production launchd scripts lived only on the mini's disk, hand-maintained, outside any repo. A disk failure loses them; scripts that page humans had no review trail.

What's here — the three scripts verbatim from the mini (fleet-status.sh 5-min, fleet-alert.sh 15-min → #fleet, papers-digest/daily.sh daily → #papers), reference copies of their launchd plists, install.sh (idempotent deploy to ~/.amico/ops/; touches no state, no plists, no bundle), and a README documenting cadences, posting targets, and the frozen-bundle upgrade pattern (copy dist + refresh sha sidecar).

~/.amico/ops/ becomes a deploy target; this repo is the source of truth.

Summary by CodeRabbit

  • New Features

    • Added automated fleet health monitoring for device reachability, server status, session data, vault sync, and repository health.
    • Added Slack notifications for meaningful fleet transitions and prolonged outages.
    • Added a daily papers digest for the quant-ph feed, limited to five papers.
    • Added scheduled macOS background jobs and an installer for operations scripts.
  • Documentation

    • Added operational documentation covering schedules, deployment, inputs, outputs, and runtime state.

…, papers-digest (#427)
Three production launchd scripts lived only on the mini's disk, hand-maintained,
outside any repo: a mini disk failure loses them, and scripts that page humans
had no review trail. Now versioned in ops/ alongside scripts/:
- fleet-status.sh (5 min) — fleet health JSON for the dashboard + server guard
- fleet-alert.sh (15 min) — device transitions -> Slack #fleet (noise-gated)
- papers-digest/daily.sh (daily ~09:00) — frozen-bundle digest -> Slack #papers
- launchd/ — reference copies of the three plists
- install.sh — deploy scripts to ~/.amico/ops/ (idempotent, state-safe)
- README.md — what runs where, on what cadence, posting where; the
frozen-bundle upgrade pattern (copy dist + refresh sha sidecar)
~/.amico/ops/ becomes a deploy target, not the source of truth.
Closes#427
@coderabbitai

coderabbitaiBot commented Aug 20, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 41e3cebd-e68f-4c9c-9f6b-ede282db277a

📥 Commits

Reviewing files that changed from the base of the PR and between 9b97de8 and 4028d59.

📒 Files selected for processing (8)
  • ops/README.md
  • ops/fleet-alert.sh
  • ops/fleet-status.sh
  • ops/install.sh
  • ops/launchd/co.harmoniqs.amicode-papers-digest.plist
  • ops/launchd/co.harmoniqs.fleet-alert.plist
  • ops/launchd/co.harmoniqs.fleet-status.plist
  • ops/papers-digest/daily.sh

📝 Walkthrough

Walkthrough

The PR adds versioned fleet monitoring and alerting scripts, launchd schedules, an installer, operational documentation, and a daily papers digest runner that executes the frozen bundle.

Changes

Fleet operations automation

Layer / File(s)Summary
Fleet health collection
ops/fleet-status.sh
Collects device reachability, chat-server sessions, server database checks, vault-sync status, and repository state. It atomically writes fleet status JSON and emits notifications when guard signatures change.
Fleet transition alerting
ops/fleet-alert.sh
Tracks device state, suppresses first-run alerts, sends transition and prolonged-outage reminders for selected devices, and posts messages to Slack.
Operational deployment and scheduling
ops/install.sh, ops/launchd/*, ops/papers-digest/daily.sh, ops/README.md
Installs executable scripts, defines launchd schedules and logs, runs the frozen papers digest daily, and documents deployment and runtime state.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
participant launchd
participant fleet-status.sh
participant fleet-alert.sh
participant Slack
launchd->>fleet-status.sh: run every five minutes
fleet-status.sh->>fleet-status.sh: collect and write fleet-status.json
launchd->>fleet-alert.sh: run every fifteen minutes
fleet-alert.sh->>fleet-status.sh: read fleet status
fleet-alert.sh->>Slack: post transition or outage messages
Loading

Possibly related PRs

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch amico/issue-427-version-ops-scripts

Comment @coderabbitai help to get the list of available commands.

@aarontrowbridge
aarontrowbridge marked this pull request as ready for review August 20, 2026 10:14
@aarontrowbridge
aarontrowbridge merged commit d6b7825 into mainAug 20, 2026
7 checks passed
Sign up for freeto 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.

chore: version the fleet ops scripts (fleet-status, fleet-alert, papers-digest) — unversioned on the mini today

1 participant

@aarontrowbridge
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

chore(ops): version the fleet ops scripts — fleet-status, fleet-alert, papers-digest - #453

Merged
aarontrowbridge merged 1 commit into
mainfrom
amico/issue-427-version-ops-scripts
Aug 20, 2026
Merged

chore(ops): version the fleet ops scripts — fleet-status, fleet-alert, papers-digest#453
aarontrowbridge merged 1 commit into
mainfrom
amico/issue-427-version-ops-scripts

Conversation

@aarontrowbridge

@aarontrowbridgeaarontrowbridge commented Aug 20, 2026

Copy link
Copy Markdown
Member

Closes#427.

Problem — three production launchd scripts lived only on the mini's disk, hand-maintained, outside any repo. A disk failure loses them; scripts that page humans had no review trail.

What's here — the three scripts verbatim from the mini (fleet-status.sh 5-min, fleet-alert.sh 15-min → #fleet, papers-digest/daily.sh daily → #papers), reference copies of their launchd plists, install.sh (idempotent deploy to ~/.amico/ops/; touches no state, no plists, no bundle), and a README documenting cadences, posting targets, and the frozen-bundle upgrade pattern (copy dist + refresh sha sidecar).

~/.amico/ops/ becomes a deploy target; this repo is the source of truth.

Summary by CodeRabbit

  • New Features

    • Added automated fleet health monitoring for device reachability, server status, session data, vault sync, and repository health.
    • Added Slack notifications for meaningful fleet transitions and prolonged outages.
    • Added a daily papers digest for the quant-ph feed, limited to five papers.
    • Added scheduled macOS background jobs and an installer for operations scripts.
  • Documentation

    • Added operational documentation covering schedules, deployment, inputs, outputs, and runtime state.

…, papers-digest (#427)
Three production launchd scripts lived only on the mini's disk, hand-maintained,
outside any repo: a mini disk failure loses them, and scripts that page humans
had no review trail. Now versioned in ops/ alongside scripts/:
- fleet-status.sh (5 min) — fleet health JSON for the dashboard + server guard
- fleet-alert.sh (15 min) — device transitions -> Slack #fleet (noise-gated)
- papers-digest/daily.sh (daily ~09:00) — frozen-bundle digest -> Slack #papers
- launchd/ — reference copies of the three plists
- install.sh — deploy scripts to ~/.amico/ops/ (idempotent, state-safe)
- README.md — what runs where, on what cadence, posting where; the
frozen-bundle upgrade pattern (copy dist + refresh sha sidecar)
~/.amico/ops/ becomes a deploy target, not the source of truth.
Closes#427
@coderabbitai

coderabbitaiBot commented Aug 20, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 41e3cebd-e68f-4c9c-9f6b-ede282db277a

📥 Commits

Reviewing files that changed from the base of the PR and between 9b97de8 and 4028d59.

📒 Files selected for processing (8)
  • ops/README.md
  • ops/fleet-alert.sh
  • ops/fleet-status.sh
  • ops/install.sh
  • ops/launchd/co.harmoniqs.amicode-papers-digest.plist
  • ops/launchd/co.harmoniqs.fleet-alert.plist
  • ops/launchd/co.harmoniqs.fleet-status.plist
  • ops/papers-digest/daily.sh

📝 Walkthrough

Walkthrough

The PR adds versioned fleet monitoring and alerting scripts, launchd schedules, an installer, operational documentation, and a daily papers digest runner that executes the frozen bundle.

Changes

Fleet operations automation

Layer / File(s)Summary
Fleet health collection
ops/fleet-status.sh
Collects device reachability, chat-server sessions, server database checks, vault-sync status, and repository state. It atomically writes fleet status JSON and emits notifications when guard signatures change.
Fleet transition alerting
ops/fleet-alert.sh
Tracks device state, suppresses first-run alerts, sends transition and prolonged-outage reminders for selected devices, and posts messages to Slack.
Operational deployment and scheduling
ops/install.sh, ops/launchd/*, ops/papers-digest/daily.sh, ops/README.md
Installs executable scripts, defines launchd schedules and logs, runs the frozen papers digest daily, and documents deployment and runtime state.

Estimated code review effort: 4 (Complex) | ~45 minutes

Sequence Diagram(s)

sequenceDiagram
participant launchd
participant fleet-status.sh
participant fleet-alert.sh
participant Slack
launchd->>fleet-status.sh: run every five minutes
fleet-status.sh->>fleet-status.sh: collect and write fleet-status.json
launchd->>fleet-alert.sh: run every fifteen minutes
fleet-alert.sh->>fleet-status.sh: read fleet status
fleet-alert.sh->>Slack: post transition or outage messages
Loading

Possibly related PRs

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch amico/issue-427-version-ops-scripts

Comment @coderabbitai help to get the list of available commands.

@aarontrowbridge
aarontrowbridge marked this pull request as ready for review August 20, 2026 10:14
@aarontrowbridge
aarontrowbridge merged commit d6b7825 into mainAug 20, 2026
7 checks passed
Sign up for freeto 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.

chore: version the fleet ops scripts (fleet-status, fleet-alert, papers-digest) — unversioned on the mini today

1 participant

@aarontrowbridge