Согласовать единый процентный формат весов UI/config/runtime #28

Closed
opened 2026-10-26 02:19:06 +01:00 by yury · 5 comments
Owner

Запрос владельца в продолжении #26: удобнее видеть и вводить проценты, хочет единый формат в админке/config/преленде без поломки. Работы были явно отложены до согласования eye/skрытия; затем добавлен drag-порядок и поручён выпуск #26. Никаких миграций весов в #26 нет. Это отдельный незавершённый продуктовый вопрос, не дефект hide/order. Текущий предварительный readonly факт: runtime использует относительные веса и нормирует сумму, поэтому 0.8 само по себе100%, 0.8/0.2→80/20,3/1→75/25; нельзя бездумно умножить каждый вес на100. Требуется предложить варианты владельцу: только UI-представление vs единые stored percentages под weights с сохранением chooser semantics; уточнить точность/округление для неделимых долей и правило суммы. Все нули должны показывать0%, без придуманного100%fallback, это уже прямое правило владельца. После выбора — отдельные spec/план/тесты compatibility/copy/restore/runtime и разрешённые ключи runtime с CAS/backup. До согласования веса и конфиги не менять. Эта задача фиксирует ранее запрошенное продолжение, реализация ещё не начата.

Запрос владельца в продолжении #26: удобнее видеть и вводить проценты, хочет единый формат в админке/config/преленде без поломки. Работы были явно отложены до согласования eye/skрытия; затем добавлен drag-порядок и поручён выпуск #26. Никаких миграций весов в #26 нет. Это отдельный незавершённый продуктовый вопрос, не дефект hide/order. Текущий предварительный readonly факт: runtime использует относительные веса и нормирует сумму, поэтому 0.8 само по себе100%, 0.8/0.2→80/20,3/1→75/25; нельзя бездумно умножить каждый вес на100. Требуется предложить варианты владельцу: только UI-представление vs единые stored percentages под weights с сохранением chooser semantics; уточнить точность/округление для неделимых долей и правило суммы. Все нули должны показывать0%, без придуманного100%fallback, это уже прямое правило владельца. После выбора — отдельные spec/план/тесты compatibility/copy/restore/runtime и разрешённые ключи runtime с CAS/backup. До согласования веса и конфиги не менять. Эта задача фиксирует ранее запрошенное продолжение, реализация ещё не начата.
Author
Owner

Владелец выбрал процентный ввод до двух знаков (33,33/66,67), сумма100% либо все0%, без автоматического перераспределения при редактировании. Это согласованное правило #28, не UI-only conversion. Сначала завершаем29 (статические номера/датачтения), затем единые stored weights percentages, совместимые с действующим relativechooser. Перед миграцией нужны свежие RAW4baseline и проверка точной представимости текущих долей с0,01%; не придумывать округлительное распределение для неоднозначныхстарых данных, если обнаружатся. Scope всехписателей: inlineSave/APIapply/copy/historicalrestore/регистрацияновогодомена/прямойruntimeFTP/обычныйdeploy (config сохраняется). Дефолты/aliases/порядоквариантов/allzero/runtimechooser не менять. Это пока запись решения и планирование, #28 код/веса ещё не менялись.

Владелец выбрал процентный ввод до двух знаков (33,33/66,67), сумма100% либо все0%, без автоматического перераспределения при редактировании. Это согласованное правило #28, не UI-only conversion. Сначала завершаем29 (статические номера/датачтения), затем единые stored weights percentages, совместимые с действующим relativechooser. Перед миграцией нужны свежие RAW4baseline и проверка точной представимости текущих долей с0,01%; не придумывать округлительное распределение для неоднозначныхстарых данных, если обнаружатся. Scope всехписателей: inlineSave/APIapply/copy/historicalrestore/регистрацияновогодомена/прямойruntimeFTP/обычныйdeploy (config сохраняется). Дефолты/aliases/порядоквариантов/allzero/runtimechooser не менять. Это пока запись решения и планирование, #28 код/веса ещё не менялись.
Author
Owner

Последнее прямое решение владельца отменяет legacyветку: «можешь прямо сейчас все домены перевести на новую схему ... в гите тоже ... Нам этот легаси абсолютно не нужен». Все4runtime+singleGitstageconfig переводим, новыеlegacyконфиги не поддерживать. План KB/Спеки/2026-10-26 Единые проценты весов — 28.md. Strictpercent0..100,2decimals,sum100or0; alias/defaulttypes внеscope. Runtimechooserunchanged. Historicalbackups не удалять, restoreстарыхвесов отклонять с понятнойошибкой вместоsilentnormalize. Preflightall4 beforewrite, точныедоли безпридуманногоroundremainder, rawbytes-onlyweightpatch/CAS/backup/readback. #29 commit отдельно послеgate, adminrelease можно общийпосле28. Никаких runtimewrites пока.

Последнее прямое решение владельца отменяет legacyветку: «можешь прямо сейчас все домены перевести на новую схему ... в гите тоже ... Нам этот легаси абсолютно не нужен». Все4runtime+singleGitstageconfig переводим, новыеlegacyконфиги не поддерживать. План KB/Спеки/2026-10-26 Единые проценты весов — 28.md. Strictpercent0..100,2decimals,sum100or0; alias/defaulttypes внеscope. Runtimechooserunchanged. Historicalbackups не удалять, restoreстарыхвесов отклонять с понятнойошибкой вместоsilentnormalize. Preflightall4 beforewrite, точныедоли безпридуманногоroundremainder, rawbytes-onlyweightpatch/CAS/backup/readback. #29 commit отдельно послеgate, adminrelease можно общийпосле28. Никаких runtimewrites пока.
Author
Owner

Releasegate28: root independently fullcomposer12scripts exit0 (430PASS), private4targetCLI/CAS/resume/0600 suiteexit0; publictests/check-*+assets--check exit0 послеобновленияexpectedfocusweights1→100 безизмененияdefault/distribution. UI matrix+percent+12adjacentGREEN; independentreview APPPROVED CLI/code/native. Найденный P2precision EPSacceptlongfloat reproduced→strictvalue===round(value,2) fix→independent3reject+fullgateGREEN. Нормализация миграции: independentlyroundeachshare2digits, еслиsumnot100or0 STOP beforeanywrite, noautoremainder. Userinputnotnormalized. Gitconfig уже rawpatchedonly7numericweights1→100, otherbytes/defaults unchanged, source ещёнеcommitted28. Runtime ещёнеписали. Далее sourcecommit/image изexactтекущего00fbef9 unchangedlock, privateall4preflight, CAS+backup+reread migration, adminswitch, nativeprodread/percent/cancel/error/retry, stageGitsnapshot/invariants;29 и28 покаOPEN.

Releasegate28: root independently fullcomposer12scripts exit0 (430PASS), private4targetCLI/CAS/resume/0600 suiteexit0; publictests/check-*+assets--check exit0 послеобновленияexpectedfocusweights1→100 безизмененияdefault/distribution. UI matrix+percent+12adjacentGREEN; independentreview APPPROVED CLI/code/native. Найденный P2precision EPSacceptlongfloat reproduced→strictvalue===round(value,2) fix→independent3reject+fullgateGREEN. Нормализация миграции: independentlyroundeachshare2digits, еслиsumnot100or0 STOP beforeanywrite, noautoremainder. Userinputnotnormalized. Gitconfig уже rawpatchedonly7numericweights1→100, otherbytes/defaults unchanged, source ещёнеcommitted28. Runtime ещёнеписали. Далее sourcecommit/image изexactтекущего00fbef9 unchangedlock, privateall4preflight, CAS+backup+reread migration, adminswitch, nativeprodread/percent/cancel/error/retry, stageGitsnapshot/invariants;29 и28 покаOPEN.
Author
Owner

Productionpreflight28 PASS безruntimewrites: planmigration28-b8abd511af172304bb7f1f45, receipt7c236629bb99fd7fb437325d94744d6b0060057d74562436c83e036c3148c428. Все4цели представимы, по7numericweighttokens накаждой (28total); никакихroundambiguities. Source47405b27d84afe33371ce7ecdc75c7ab69235fdc/main,29отдельныйa22519e. Immutableimagepreland-admin:47405b2 sha256:bb64a4232cdd06876fce8fb242581c06a0d2846ffa662240cb63f19d1a6b2276 изexactbase00fbef9+unchangedlock, исходникизафиксированыreceipt. GitLFconfigSHA08b0024972dc5cbb7f09d2474ad6241ea81477430f5f172e24e13ac894e33e39 вточности совпадает сdesiredStage (workingCRLFсовпадаетсREGdesired); дополнительныхGitполейне меняли. Далее ровноapprovedplanapplyCAS+backups/readback, idleworker краткоостановитьдоadminimageswitch, envrollbackприhealthfail. Userorder/hidden/notes/credentialsсохранить.

Productionpreflight28 PASS безruntimewrites: planmigration28-b8abd511af172304bb7f1f45, receipt7c236629bb99fd7fb437325d94744d6b0060057d74562436c83e036c3148c428. Все4цели представимы, по7numericweighttokens накаждой (28total); никакихroundambiguities. Source47405b27d84afe33371ce7ecdc75c7ab69235fdc/main,29отдельныйa22519e. Immutableimagepreland-admin:47405b2 sha256:bb64a4232cdd06876fce8fb242581c06a0d2846ffa662240cb63f19d1a6b2276 изexactbase00fbef9+unchangedlock, исходникизафиксированыreceipt. GitLFconfigSHA08b0024972dc5cbb7f09d2474ad6241ea81477430f5f172e24e13ac894e33e39 вточности совпадает сdesiredStage (workingCRLFсовпадаетсREGdesired); дополнительныхGitполейне меняли. Далее ровноapprovedplanapplyCAS+backups/readback, idleworker краткоостановитьдоadminimageswitch, envrollbackприhealthfail. Userorder/hidden/notes/credentialsсохранить.
Author
Owner

Выпущено и проверено 26.10.2026. Source47405b27d84afe33371ce7ecdc75c7ab69235fdc/main включает отдельный #29/a22519e; imagepreland-admin:47405b2 sha256:bb64a4232cdd06876fce8fb242581c06a0d2846ffa662240cb63f19d1a6b2276. Webhealthy/workerrunning, runningfilehashes exactsource. KBmaster15b5f35603903ab925d62534c51c6cd532ceea47 опубликована (спеки28/29, инфраструктура, индекс); TODO/log синхронизированы.

Веса теперь storedpercent0..100 до2dec, sum100 илиall0; никакойавтонормализации ввода. Номерастатичны, толькоweight/default. StrictConfig/Transport/APIcopy/restore/connectiontest отклоняютстарые относительныевеса по прямомуотказувладельца отlegacy; самиархивынеудалены. Userdefaults/aliases/variantorder/unknown/requisites не менялись, Pixelconsabsent сохранён.

Production planmigration28-b8abd511af172304bb7f1f45: все4preflightPASS перед первойзаписью, по7numeric tokens1→100 накаждойцели (28total), CAS+4exactbackups+reread. Вфактическихданных округлениенепотребовалось. FinalTransport+publicHTTPS /config.json длякаждойцели точны desired, percentvalid, identityexact. Targets/order/hidden/notes byteexact, pendingnull. Gitblobconfig SHA08b0024972dc5cbb7f09d2474ad6241ea81477430f5f172e24e13ac894e33e39 точноравенStageRAW. Веткиstaging/publiccodeвыкат не запускались, новыйmainsnapshotнеперезаписываетruntime.

Root fullcomposer12scripts exit0/430PASS; publicchecks/assets--check exit0; privateCLI4target/CAS/receipt/resume/noextrabackup/0600/bytepatch independentlyPASS. UI matrix/percent+12adjacent и independentnative Save/default/allzero/errorrecovery PASS. Review P2strictprecision EPS gap reproducedRED→fixed→independent3reject+fullgateGREEN; finalAPPROVED0findings. Actualchooser seeded invariants passed, публичныйruntimechooser unchanged.

Production native acceptance PASS: actualRefreshGET/read_at/loading/disabled/МСКseconds/error-retainsdate/realretry; staticnumbers; rawpercent4; draft33.33/66.67+Cancel, precision33.333blocks, allzeroallows, defaultuntouched; metadata+versionsexact, mobile390/nooverflow, errors[], logout401. Дополнительных UIconfigwrites вproduction не было. Evidence output/preland28/production-evidence.json и screenshots просмотрены; private finalreceiptpreland28-final-check.json. #29приняттемжесценарием.

Связанный #27 cleanbuildPECL остаётсяOPEN: image собран на exactpreviousruntime00fbef9+unchangedcomposer.lock. Это явный отдельный инфраструктурныйостаток, не скрыт в закрытии28. Все обязательные работы28/29 завершены; закрываю28.

Выпущено и проверено 26.10.2026. Source47405b27d84afe33371ce7ecdc75c7ab69235fdc/main включает отдельный #29/a22519e; imagepreland-admin:47405b2 sha256:bb64a4232cdd06876fce8fb242581c06a0d2846ffa662240cb63f19d1a6b2276. Webhealthy/workerrunning, runningfilehashes exactsource. KBmaster15b5f35603903ab925d62534c51c6cd532ceea47 опубликована (спеки28/29, инфраструктура, индекс); TODO/log синхронизированы. Веса теперь storedpercent0..100 до2dec, sum100 илиall0; никакойавтонормализации ввода. Номерастатичны, толькоweight/default. StrictConfig/Transport/APIcopy/restore/connectiontest отклоняютстарые относительныевеса по прямомуотказувладельца отlegacy; самиархивынеудалены. Userdefaults/aliases/variantorder/unknown/requisites не менялись, Pixelconsabsent сохранён. Production planmigration28-b8abd511af172304bb7f1f45: все4preflightPASS перед первойзаписью, по7numeric tokens1→100 накаждойцели (28total), CAS+4exactbackups+reread. Вфактическихданных округлениенепотребовалось. FinalTransport+publicHTTPS /config.json длякаждойцели точны desired, percentvalid, identityexact. Targets/order/hidden/notes byteexact, pendingnull. Gitblobconfig SHA08b0024972dc5cbb7f09d2474ad6241ea81477430f5f172e24e13ac894e33e39 точноравенStageRAW. Веткиstaging/publiccodeвыкат не запускались, новыйmainsnapshotнеперезаписываетruntime. Root fullcomposer12scripts exit0/430PASS; publicchecks/assets--check exit0; privateCLI4target/CAS/receipt/resume/noextrabackup/0600/bytepatch independentlyPASS. UI matrix/percent+12adjacent и independentnative Save/default/allzero/errorrecovery PASS. Review P2strictprecision EPS gap reproducedRED→fixed→independent3reject+fullgateGREEN; finalAPPROVED0findings. Actualchooser seeded invariants passed, публичныйruntimechooser unchanged. Production native acceptance PASS: actualRefreshGET/read_at/loading/disabled/МСКseconds/error-retainsdate/realretry; staticnumbers; rawpercent4; draft33.33/66.67+Cancel, precision33.333blocks, allzeroallows, defaultuntouched; metadata+versionsexact, mobile390/nooverflow, errors[], logout401. Дополнительных UIconfigwrites вproduction не было. Evidence output/preland28/production-evidence.json и screenshots просмотрены; private finalreceiptpreland28-final-check.json. #29приняттемжесценарием. Связанный #27 cleanbuildPECL остаётсяOPEN: image собран на exactpreviousruntime00fbef9+unchangedcomposer.lock. Это явный отдельный инфраструктурныйостаток, не скрыт в закрытии28. Все обязательные работы28/29 завершены; закрываю28.
yury closed this issue 2026-10-26 03:07:52 +01:00
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: anton/preland#28