openvibers/openvibe.media Commits
Drop unused generateSlug re-export from pastes routes; mark F1/F2…
Changes
@@@ -256,12 +256,12 @@ metric. Budgets per class and provider with a forecast; `media.provider.cost_thr## 10. Build order--- **F1 foundation (now):** provider registry + capability probes; `media.cost_tiers` + per-class budgets in a revisioned++- **F1 foundation (shipped):** provider registry + capability probes; `media.cost_tiers` + per-class budgets in a revisioned`media.storage_policy` (retiring `media.storage_tier`/`media.object_tier`); the read router (EWMA latency, errorcircuit breaker, continuous health probe, fastest healthy copy) in `server/placement/`; presigned-URL LRU; two-phasemoves with a cleanup job; per-class hysteresis bands; `media_storage_alerts_total`, provider latency histograms; thecorrected price table; the nginx shield (slice + cache lock) on the Media host.--- **F2 one placement engine:** every class through one sweep, value-per-dollar under budgets, dry-run + simulator,++- **F2 one placement engine (shipped; close-out: Media PR #24):** every class through one sweep, value-per-dollar under budgets, dry-run + simulator,decision log with class and reason, the events above, Valkey rollups of demand (F2.4, shipped) and the sweep'seligibility on them with per-class hysteresis and a PostgreSQL fallback (F2.5, shipped), the provider-class gateand per-class monthly R2 storage ceilings on its moves (F2.6, shipped), the move cleanup job and its alert after@@@ -33,7 +33,7 @@ router.use((req, res, next) => {});// Screenshot directory, shared with the avatar ingest (server/pastes/storage.js).--const { SCREENSHOTS_DIR, generateSlug } = require('./storage');++const { SCREENSHOTS_DIR } = require('./storage');// ── Helpers ─────────────────────────────────────────────────@@@ -255,6 +255,5 @@ router.get('/:slug/comments', tenantAuth({ allowUser: true }), async (req, res)});module.exports = router;--module.exports.generateSlug = generateSlug;module.exports.SCREENSHOTS_DIR = SCREENSHOTS_DIR;module.exports.removePasteScreenshot = removePasteScreenshot;
@@ -256,12 +256,12 @@ metric. Budgets per class and provider with a forecast; `media.provider.cost_thr
@@ -256,12 +256,12 @@ metric. Budgets per class and provider with a forecast; `media.provider.cost_thr
## 10. Build order
## 10. Build order
-- **F1 foundation (now):** provider registry + capability probes; `media.cost_tiers` + per-class budgets in a revisioned
+- **F1 foundation (shipped):** provider registry + capability probes; `media.cost_tiers` + per-class budgets in a revisioned
`media.storage_policy` (retiring `media.storage_tier`/`media.object_tier`); the read router (EWMA latency, error
`media.storage_policy` (retiring `media.storage_tier`/`media.object_tier`); the read router (EWMA latency, error
circuit breaker, continuous health probe, fastest healthy copy) in `server/placement/`; presigned-URL LRU; two-phase
circuit breaker, continuous health probe, fastest healthy copy) in `server/placement/`; presigned-URL LRU; two-phase
moves with a cleanup job; per-class hysteresis bands; `media_storage_alerts_total`, provider latency histograms; the
moves with a cleanup job; per-class hysteresis bands; `media_storage_alerts_total`, provider latency histograms; the
corrected price table; the nginx shield (slice + cache lock) on the Media host.
corrected price table; the nginx shield (slice + cache lock) on the Media host.
-- **F2 one placement engine:** every class through one sweep, value-per-dollar under budgets, dry-run + simulator,
+- **F2 one placement engine (shipped; close-out: Media PR #24):** every class through one sweep, value-per-dollar under budgets, dry-run + simulator,
decision log with class and reason, the events above, Valkey rollups of demand (F2.4, shipped) and the sweep's
decision log with class and reason, the events above, Valkey rollups of demand (F2.4, shipped) and the sweep's
eligibility on them with per-class hysteresis and a PostgreSQL fallback (F2.5, shipped), the provider-class gate
eligibility on them with per-class hysteresis and a PostgreSQL fallback (F2.5, shipped), the provider-class gate
and per-class monthly R2 storage ceilings on its moves (F2.6, shipped), the move cleanup job and its alert after
and per-class monthly R2 storage ceilings on its moves (F2.6, shipped), the move cleanup job and its alert after
@@ -33,7 +33,7 @@ router.use((req, res, next) => {
@@ -33,7 +33,7 @@ router.use((req, res, next) => {
});
});
// Screenshot directory, shared with the avatar ingest (server/pastes/storage.js).
// Screenshot directory, shared with the avatar ingest (server/pastes/storage.js).
-const { SCREENSHOTS_DIR, generateSlug } = require('./storage');
+const { SCREENSHOTS_DIR } = require('./storage');
// ── Helpers ─────────────────────────────────────────────────
// ── Helpers ─────────────────────────────────────────────────
@@ -255,6 +255,5 @@ router.get('/:slug/comments', tenantAuth({ allowUser: true }), async (req, res)
@@ -255,6 +255,5 @@ router.get('/:slug/comments', tenantAuth({ allowUser: true }), async (req, res)
});
});
module.exports = router;
module.exports = router;
-module.exports.generateSlug = generateSlug;
module.exports.SCREENSHOTS_DIR = SCREENSHOTS_DIR;
module.exports.SCREENSHOTS_DIR = SCREENSHOTS_DIR;
module.exports.removePasteScreenshot = removePasteScreenshot;
module.exports.removePasteScreenshot = removePasteScreenshot;