Divarion_D
c289352d43
feat(build): per-build watermark (RELEASE_ID / XC_VM_BUILD_ID)
...
`make main`/`make lb` now stamp a unique per-build id — version + short git
SHA + UTC timestamp + 8 random bytes — into RELEASE_ID at the staged deploy
root (new stamp_release_id target, run after the copy step; the file is
generated per build, never git-tracked). ConstantsInitializer exposes it at
file scope as XC_VM_BUILD_ID by reading RELEASE_ID relative to __DIR__; a
source/dev checkout has no file and reports 'dev'.
This gives every build a traceable fingerprint so a leaked or rebranded copy
can be tied back to its origin (and, once activation ships, reported in the
phone-home alongside install_id). Kept at file scope to avoid adding a branch
to ConstantsInitializer::init() (CRAP ratchet). README discloses it.
Tests: XC_VM_BUILD_ID defined and defaults to 'dev' in a source checkout.
Full suite (817) + gates + CRAP + phpcs green; Makefile targets validated.
2026-09-18 15:45:34 +03:00
..
2026-09-13 14:14:23 +03:00
2026-09-13 14:14:23 +03:00
2026-09-12 21:43:59 +00:00
2026-09-17 08:07:02 +00:00
2026-09-17 07:42:42 +00:00
2026-09-13 08:49:06 +00:00
2026-09-13 21:17:06 +03:00
2026-09-18 15:10:43 +03:00
2026-09-13 14:42:08 +03:00
2026-09-13 21:17:06 +03:00
2026-09-18 15:10:43 +03:00
2026-09-16 18:38:31 +03:00
2026-06-25 20:57:37 +03:00
2026-09-18 09:57:17 +00:00
2026-09-13 17:27:42 +03:00
2026-09-13 14:42:08 +03:00
2026-09-13 21:21:09 +03:00
2026-08-31 20:58:23 +03:00
2026-06-24 22:18:52 +03:00
2026-06-25 20:57:37 +03:00
2026-09-18 15:45:34 +03:00
2026-09-16 17:23:33 +03:00
2026-06-25 19:03:39 +03:00
2026-09-13 16:05:56 +03:00
2026-09-12 22:40:36 +00:00
2026-09-13 14:39:43 +03:00
2026-09-13 08:49:06 +00:00
2026-09-18 15:10:43 +03:00
2026-06-24 22:18:52 +03:00
2026-09-13 14:14:23 +03:00
2026-09-18 00:45:37 +00:00
2026-09-18 07:40:43 +00:00
2026-09-13 14:16:29 +03:00
2026-06-25 18:55:35 +03:00
2026-09-13 14:45:12 +03:00
2026-09-13 14:16:29 +03:00
2026-09-10 16:11:29 +03:00
2026-09-11 16:19:22 +01:00
2026-09-13 14:22:55 +03:00
2026-09-11 16:19:50 +01:00
2026-09-18 09:57:17 +00:00
2026-09-11 16:17:09 +01:00
2026-09-17 07:45:48 +00:00
2026-08-11 21:41:11 +03:00
2026-09-18 15:32:50 +03:00
2026-06-24 22:18:52 +03:00
2026-09-13 08:34:00 +00:00
2026-09-13 21:17:06 +03:00
2026-06-25 19:03:39 +03:00
2026-06-30 22:41:46 +03:00
2026-06-24 22:18:52 +03:00
2026-07-03 20:12:01 +03:00
2026-07-03 20:12:01 +03:00
2026-09-13 14:51:45 +03:00
2026-09-13 14:26:46 +03:00
2026-06-24 22:23:42 +03:00
2026-07-03 20:10:41 +03:00
2026-09-13 17:27:42 +03:00
2026-07-29 19:37:43 +03:00
2026-09-09 22:32:37 +03:00
2026-09-12 21:59:27 +00:00
2026-09-17 07:48:24 +00:00
2026-09-12 21:27:38 +00:00
2026-06-24 21:15:06 +03:00
2026-09-13 18:57:54 +03:00
2026-09-13 18:33:02 +03:00
2026-09-13 18:57:54 +03:00
2026-08-31 20:58:23 +03:00
2026-09-13 14:39:43 +03:00
2026-09-13 14:29:54 +03:00
2026-08-31 20:58:23 +03:00
2026-09-17 07:45:14 +00:00
2026-09-12 22:42:10 +00:00
2026-09-13 16:10:40 +03:00
2026-06-24 22:13:35 +03:00
2026-09-18 11:32:15 +03:00
2026-09-13 09:02:40 +00:00
2026-09-13 14:39:43 +03:00
2026-09-13 14:51:45 +03:00
2026-08-09 13:01:57 +03:00
2026-08-31 20:58:23 +03:00
2026-06-25 18:39:28 +03:00
2026-06-24 21:32:10 +03:00
2026-09-11 16:19:02 +01:00
2026-08-07 19:31:18 +03:00
2026-08-07 21:01:59 +03:00
2026-09-17 08:41:26 +00:00
2026-09-17 07:51:18 +00:00
2026-09-11 16:19:02 +01:00
2026-09-11 11:03:06 +00:00
2026-06-25 18:39:28 +03:00
2026-09-18 09:57:17 +00:00
2026-09-13 21:17:06 +03:00
2026-09-09 22:32:37 +03:00
2026-08-31 20:58:23 +03:00
2026-06-24 22:35:33 +03:00
2026-09-13 14:45:12 +03:00
2026-09-13 14:26:46 +03:00
2026-09-18 09:57:17 +00:00
2026-09-13 14:39:43 +03:00