wip(#19): privacy-safe model metrics in progress — preserved snapshot before nightly release
Local work in progress, not reviewed and not part of any PR. Committed only so the nightly release can build from a clean main without discarding it.
This commit is contained in:
1 parent
9067ce5306
commit
3e2253a052
15 files changed
+768
-9
No files matched your search
@@ -57,13 +57,14 @@ enforces that distinction and the app withholds the AI control until it passes.
|
||||
|
||||
## Secrets
|
||||
|
||||
Four secrets exist, and every one of them is injected at runtime:
|
||||
Five secrets exist, and every one of them is injected at runtime:
|
||||
|
||||
| Secret | Source | Scope |
|
||||
|---|---|---|
|
||||
| `TIMMY_DATASET_SALT` | mode-600 environment file on the host | Corpus subject keys and split assignment. Rotating it re-splits future ingests, so it is not rotated casually. |
|
||||
| Vision provider key or worker token | mode-600 environment file on the host | Only the app process reads it; the browser never receives it. |
|
||||
| Agent access code | mode-600 environment file on the host | Unlocks `/api/agent/unlock`; the cookie it mints is `HttpOnly` and same-origin. |
|
||||
| `TIMMY_METRICS_TOKEN` | mode-600 environment file on the host | Optional. Bearer token for the operator-only `/api/metrics` snapshot. When it is unset the route returns 404, so an unconfigured deployment exposes no counters at all. |
|
||||
| Gitea access token | local operator shell or secret store | Issue and PR automation only. It is never written into a release tree, an archive, or a log. |
|
||||
|
||||
Rules:
|
||||
|
||||
Reference in new issue
Block a user