docs(openspec): archive fpagent-release-installer and sync specs
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
# Tasks
|
||||
|
||||
- [x] 1. Server: `GITEA_URL`/`FPAGENT_REPO` constants, the installer key read
|
||||
from `GITEA_RELEASE_INSTALL_KEY`, and two public proxy routes registered
|
||||
before the session middleware: `GET /fpagent/releases/latest` (trimmed
|
||||
`{tag, assets:[{name,url}]}`, same-origin URLs, unsafe names dropped) and
|
||||
`GET /fpagent/releases/download/:tag/:name` (validated names, streamed with
|
||||
the key, 404/502 mapping, 503 when unconfigured).
|
||||
- [x] 2. Installer script `tools/public/fpagent/install.sh`: fetch metadata,
|
||||
prefer the host-codename offline bundle over the generic one, download and
|
||||
verify sha256, extract, and forward all options to the bundle's `install.sh`.
|
||||
Served uncached at `/fpagent/install.sh`.
|
||||
- [x] 3. Tests (`tools/test/fpagent-install.test.js`): latest proxy shape and
|
||||
token non-disclosure, asset streaming with upstream auth, invalid-name
|
||||
rejection, missing-asset 404, unconfigured 503, public script serving, and
|
||||
`bash -n` on the script.
|
||||
- [x] 4. Docs/config: `GITEA_RELEASE_INSTALL_KEY` in `.env.example`, installer
|
||||
and configuration notes in `README.md`.
|
||||
- [x] 5. Verified: 55 tests pass (48 existing + 7 new); routes exercised live
|
||||
against the forge (latest release `v1.0.0`, proxied checksum matches the
|
||||
publisher's, invalid name refused); the installer run end to end against a
|
||||
fake release base — codename bundle chosen, checksum pass and fail, options
|
||||
forwarded to the extracted bundle installer.
|
||||
Reference in New Issue
Block a user