HarperFast / HarperFast/harper
Track per-application deployment and restart timestamps
- Dominant language
- JavaScript
- Stars
- 89
- Forks
- 10
- Avg merge
- 2d 6h
- Merged PRs (30d)
- 200
Description
Surface the most recent deployment time and most recent restart time for each deployed application, so the Fabric UI (and other consumers) can display them without log scraping.
## Motivation
Customer-driven feature ask: surface deploy and restart timestamps per application in the Fabric UI without log scraping.
## Design considerations — needs discussion before implementation
Harper's existing model treats the **root configuration file** as the primary system of record for deployments (especially when an application is deployed by reference), and **backup configurations** form the historical record of past deployments and configuration changes that affect deployments. There are two broad directions:
1. **Double down on configuration as the system of record** — make deployment-affecting configuration changes more descriptive (a documented "what changed and when" for each backup config), and derive `deployedAt` from the latest deployment-relevant config-change timestamp. Restart timestamps would be a separate, lighter mechanism (process- or component-local).
2. **Track deployment/restart timestamps as first-class state** alongside the config-as-record model — explicit `deployedAt` / `restartedAt` per application, persisted (deployedAt) or refreshed-at-startup (restartedAt), exposed via the existing status/describe endpoint.
The first approach keeps the configuration history coherent and avoids a parallel source of truth; the second is simpler to consume but risks drifting from config history. Decision needs product/engineering alignment before this is marked Ready.
## Open questions
- "Deployment" granularity: install only, or every redeploy / deployment-affecting config change?
- Per-component vs. per-application timestamps?
- Cluster behavior: per-node (restart is local) vs. aggregated?
## Acceptance criteria (regardless of approach)
- Deploy and restart timestamps are queryable per application via the standard component/operations API, without log scraping.
- Persistence semantics defined (`deployedAt` survives restart; `restartedAt` updates on restart).
---
Tracked in Jira: [CORE-3076](https://harperdb.atlassian.net/browse/CORE-3076)
🤖 Filed by Claude on behalf of Kris.
Contributor guide
Assessment
This issue has not been assessed yet.