Updated: 2026-04-11
- Sidecar operator workspace name:
Web Terminal - Local/server reference doc: WEB-TERMINAL.md
- Live host today:
https://lab.deploymatecloud.ru - Source project today: products/codex-mobile-terminal
- Главная цель сейчас: не просто наращивать deploy/control функции, а сделать путь понятным с первого прохода.
- Долгоживущий стратегический source of truth теперь отдельно зафиксирован в PRODUCT-STRATEGY.md.
- Ближайший продуктовый ориентир:
- подключить сервер
- увидеть, жив ли сервис
- понять, что делать дальше без длинного скролла и лишнего жаргона
- Для быстрой ресинхронизации Codex теперь использовать короткие команды из CODEX-PROTOCOL.md.
- Новый жёсткий проектный принцип: runtime-данные не могут быть "по умолчанию общими" просто потому, что пользователь уже вошёл в систему.
- Базовая безопасная модель на текущем этапе:
adminвидит весь продуктовый runtime и admin depthmemberвидит только свои deployments/templates/activity/notifications- remote server inventory и remote server execution остаются
admin-only, пока у проекта нет явной sharing/ownership модели для серверов
- Дополнительные жёсткие guardrails теперь тоже часть текущей boundary:
- auth throttling должен жить в shared state, а не в памяти одного процесса
- bootstrap
admin/adminне допускается без явного local-only override - SSH host trust по умолчанию должен быть strict/pinned, а не
accept-new
- Production/release boundary теперь тоже зафиксирована как часть security contract:
DEPLOYMATE_ADMIN_PASSWORDдолжен быть реальным секретомDEPLOYMATE_AUTH_RATE_LIMIT_BACKENDдолжен быть shared, а неmemoryDEPLOYMATE_SSH_HOST_KEY_CHECKING=yesиDEPLOYMATE_SSH_KNOWN_HOSTS_FILEобязательны для remote runtime- post-deploy smoke должен проверять реальный runtime path, а не только
/api/health
- Любой новый runtime surface дальше нужно оценивать не только по clarity, но и по ownership boundary: кто именно может это видеть, экспортировать и менять.
/appсейчас работает как обзорный входной экран./app/server-reviewсейчас главный экран для подключения и review серверов./app/deployment-workflowсейчас главный runtime/deploy workspace.deployment detailстал более decision-first, чем раньше.- Week 1 now has a clearer first-pass story across the four main surfaces:
/appchooses the obvious next path instead of surfacing too many competing actions/app/server-reviewnow reads assave -> verify -> deploy/app/deployment-workflownow behaves like one active lane at a time: live, create, or templatesdeployment detailnow answers state, risk, and next action more directly
- продукт стал заметно понятнее с первого прохода, но живой walkthrough на проде показал более глубокую проблему: новичок всё ещё не понимает, что делает продукт и какой у него первый шаг
- Одновременно infra/release слой теперь тоже сильно жёстче:
- production env audit и contract gate уже часть нормального release path
- post-deploy smoke теперь умеет явный host resolve
- если локальный runner не видит staging по DNS/TLS, smoke можно и нужно запускать прямо на deploy host через SSH
- Week 2 beginner story теперь уже началась в реальном UI:
/appобъясняет three-step path и даёт plain-language meaning дляserver,what to run, иhealthy/appтеперь начинается как простой product-entry экран: large product statement, one next action, short signal strip, then the three-step path/app/server-reviewтеперь жёстко framed как один job: save one server target, run one check, then leave for Step 2/app/deployment-workflowтеперь явно framed как Step 2 with one-lane-at-a-time guidance instead of operator-first scanning
- Task-first framing уже усилился ещё на один шаг:
/appnow shows one explicitDo this nowtask card before the rest of the three-step map- opening a saved server now shows
what to do with this serverbefore edit/delete surfaces - server edit/delete are now secondary details instead of competing with the main path
- login can now hide demo access by default unless a dedicated demo user is explicitly configured
- member blocked flow in
/app/deployment-workflowis being simplified so it stops showing dead create/template surfaces before admin Step 1 is done - after a live walkthrough, overview primary CTA was corrected so
memberusers waiting on admin Step 1 no longer see a falsestart deploymentmain action
- 2026-04-10 живой staging walkthrough завершён end-to-end успешно на хосте
deploymate. - Проверенный release path теперь реально включает:
- remote audits
- compose rebuild
- login/auth smoke
- backup bundle + restore dry-run
- runtime smoke deploy with health/diagnostics/logs/activity/delete
- В процессе walkthrough были пойманы и закрыты три настоящих release-path дефекта:
- локальный smoke runner зависел от внешнего DNS/TLS
post_deploy_smoke.shне умелcurl --resolve- в
post_deploy_smoke.shотсутствовалjson_query()helper
- Важный operational вывод: release path нельзя считать здоровым, пока он не прогнан на реальном staging host, даже если локальные тесты зелёные.
- Проверить новый beginner story не только глазами автора, а живым walkthrough:
- first-time admin path:
/app -> /app/server-review -> /app/deployment-workflow - member path under admin-managed server inventory
- confirm that the next click is still obvious after login, after saving a server, and after the first deploy
- first-time admin path:
- Для следующего прохода уже есть явный артефакт и guardrail:
- manual checklist: docs/beginner-walkthrough.md
- local smoke:
npm --prefix frontend run smoke:beginner
- После walkthrough уже добивать remaining clarity gaps instead of blindly rewriting copy.
- Параллельно не ослаблять новый release contract и не превращать его во временный workaround.
- Следующий стратегический слой после beginner clarity уже зафиксирован:
first deploy in 10 minutesproduction-useful runtimeteam and agency fitdeployment passportкак главный продуктовый differentiator
- The main product story is now more explicit:
server -> deploy -> observe. - The first pass should stay inside four surfaces only:
OverviewServersDeploymentsTemplates
- Admin, recovery, import, audit-heavy, and queue-heavy flows remain valid, but should stay secondary until the main path is already clear.
- The current UI standard is no longer “show everything important”.
- The new standard is “show the next obvious action first”.
- Make the product understandable to a full novice without author explanation.
- Turn
/appinto a simplewhat this is / what to do first / what happens nextscreen. - Reframe
/app/server-reviewasStep 1instead of an operator review console. - Reframe
/app/deployment-workflowasStep 2with plain language about image, deploy, and next action. - Remove or demote text that sounds like internal ops jargon on the first pass.
- The
Server Review -> Deployment Workflowbridge is now partially real, not just conceptual. - When a reviewed server is ready,
server-reviewnow opensdeployment-workflowwith that target preselected. - The create form now says more clearly when the target already came from
Server Review, so the user knows the next move is simply setting the image. - After the first successful deploy, the success state now points straight to runtime detail instead of leaving the user in a vague success-only state.
- The first-pass copy is now much closer to a real novice path:
/appnow explains the product in a three-step story instead of only reflecting workspace state/appalso now starts with one explicitDo this nowaction instead of making the user choose from the whole pageserver-reviewnow reads as one job: save one server target, check it, then move on- opening a saved server now shows ordered tasks first, while edit/delete moved behind a secondary disclosure
deployment-workflownow explains Step 2 with one-lane-at-a-time guidance and simpler language around image, template, and health
- The blocked member path is now more internally consistent:
/appno longer presents Step 2 and Step 3 as if they were already open before admin Step 1 is complete/app/server-reviewno longer shows a false remote-only CTA intoDeployment Workflow/app/deployment-workflownow opens the live lane directly when a blocked member already has deployments to review
- The first-time admin overview is now stricter too:
- when no server is connected yet,
/appno longer renders Step 2 as if app choice were already open /appalso no longer renders Step 3 as if live runtime review already existed before the first deploy- the new
smoke:beginnerguardrail now checks those blocked-step states directly
- when no server is connected yet,
server-reviewis now stricter in the first saved-but-unconfirmed state too:- once one server already exists, the live check queue now appears before the
add another serverform - the page now stops competing with its own main action when the right next move is
run one check smoke:serversnow includes a pending-server fixture pass to hold that ordering in place
- once one server already exists, the live check queue now appears before the
deployment-workflowis now stricter in the first-deploy-after-server-review state too:- when Step 1 is already done and no deployment exists yet, the main CTA stays
Create deployment - an empty first draft no longer gets mislabeled as the primary blocker just because
Imageis still blank smoke:beginnernow includes a server-ready first-deploy fixture so templates do not hijack the main lane again
- when Step 1 is already done and no deployment exists yet, the main CTA stays
- The first manual walkthrough pass found one remaining Step 2 hesitation:
- screen:
/app/deployment-workflowafter coming fromServer Review - issue: the empty first draft still showed
Image is required.before the user typed anything - fix: preflight errors now wait until the user has actually started a rollout draft
- guardrail: the first-deploy beginner smoke now fails if that premature error comes back
- screen:
- The first Step 3 runtime walkthrough pass found one remaining healthy-detail hesitation:
- screen:
/deployments/smoke-deploymentwith a running and healthy runtime - issue: the primary action still pushed
Prepare rollout changeeven though the safer next step was to open the running app and verify it - fix: healthy runtimes with a live endpoint now make
Open running appprimary and keep rollout changes secondary - guardrail:
smoke:runtimenow fails if a healthy runtime detail makesPrepare rollout changethe main next-step action again
- screen:
- The failed-runtime walkthrough path is now review-first too:
- screen:
/app/deployment-workflow -> /deployments/review-worker - issue: the workflow queue exposed delete before the failed runtime had been reviewed, and smoke detail did not represent the failed deployment
- fix: failed cards now point to detail review before delete, and smoke detail resolves
review-workeras a failed runtime - guardrail:
smoke:runtimenow fails if the failed queue exposes early delete or if failed detail stops makingReview runtime issuesprimary
- screen:
- The failed-runtime focus card now makes the review action explicit:
- screen: failed primary card on
/app/deployment-workflow - issue: the card no longer exposed delete first, but its main CTA still said
View details, which left the safest next step too vague during a failed rollout - fix: failed focus cards now make
Review runtime issuesthe primary action and keep the inline warning aligned with that same review-first wording - guardrail:
smoke:runtimenow fails if the failed focus card loses its primaryReview runtime issuesCTA
- screen: failed primary card on
- The live queue now uses one action hierarchy across focus and secondary cards:
- screen:
/app/deployment-workflow - issue: focus cards had started using review-first/open-first actions, but secondary cards still collapsed everything into low-emphasis
View detailsandOpen applinks - fix: runtime cards now follow one status-based matrix everywhere in the queue: failed cards make
Review runtime issuesprimary, healthy cards with a URL makeOpen appprimary, and detail review stays visibly secondary when the app is already reachable - guardrail:
smoke:runtimenow checks healthy secondary cards, healthy focus cards, and a failed-secondary smoke scenario so queue action hierarchy stays aligned
- screen:
- The internal-only runtime path now follows the same review-first story:
- screen:
/app/deployment-workflowand/deployments/internal-runtime - issue: healthy runtimes without a public URL still fell back to vague
View detailslanguage in the queue, while detail copy said the runtime was stable without making the review step explicit enough - fix: no-public-URL runtime cards now make detail review the primary action, running internal-only cards use
Review stable runtime, and internal-only detail now explains that overview/ports/health/activity review comes before rollout changes - guardrail:
smoke:runtimenow checks an internal-only detail fixture plus focus/secondary workflow cards so private-runtime review cannot regress back into ambiguous queue copy
- screen:
- The blocked member overview CTA now says what the click actually does:
- screen: member remote-only
/appbefore admin Step 1 is complete - issue: the primary CTA still said
See what opens next, which was directionally correct but too vague for a first-time user trying to understand why rollout is blocked - fix: the blocked member overview now uses
Review rollout status, matching the fact that the click opens the blocked deployment workflow state instead of a hidden next-step surprise - guardrail:
smoke:beginnernow fails if the member waiting overview loses that explicit rollout-status action
- screen: member remote-only
- The ready server-review state now points forward instead of backward:
- screen: ready server task panel on
/app/server-review - issue: once a server was already ready, the open task grid still kept
Check server readinessas a primary action, so the page visually competed with the actual next move into app setup - fix: ready server cards now make
Choose what to runthe primary CTA, while readiness check is demoted to an explicit recheck-only action - guardrail:
smoke:serversnow runs a ready-server fixture and fails if the continue action stops being primary or the recheck action regains primary weight
- screen: ready server task panel on
- The first-deploy workflow tabs now stop competing with the blank create path:
- screen:
/app/deployment-workflowright after Step 1 is done and no deployment exists yet - issue: the page still showed
Check live appsand a neutral template tab before the first deploy existed, which made Step 2 read like several equal paths instead of one obvious first click - fix: the live-review tab now stays hidden until at least one deployment exists, and the template path is explicitly framed as
Use saved setup insteadwith a first-deploy fallback note - guardrail:
smoke:beginnernow fails if the first-deploy fixture brings back the live tab or loses the explicit template-fallback framing
- screen:
- Template deploy success now lands on the same next step as manual create:
- screen: template deploy success banner on
/app/deployment-workflow - issue: manual create already made
Open runtime detailthe obvious next click, but template deploy success still fell back to low-emphasisView detailscopy without a secondary route back into the live queue - fix: template deploy success now uses the same review-first wording as manual create, with
Open runtime detailas the primary action andReview live queueas the secondary follow-up - guardrail:
smoke:runtimenow runs a template-success workflow fixture and fails if runtime detail stops being the primary success action
- screen: template deploy success banner on
- The first runtime-detail screen now preserves the verify-first story after success:
- screen:
/app/deployment-workflow -> /deployments/*after a fresh create/template success click - issue: the success banner pointed to runtime detail correctly, but the detail page still immediately offered
Prepare rollout changeas the secondary path even when the rollout had just been created and still needed first verification - fix: workflow success links now carry explicit
workflow-successcontext, and healthy runtime detail uses that context to show a fresh-rollout review banner plusReview runtime overviewinstead of early change-prep - guardrail:
smoke:runtimenow loads healthy runtime detail with?source=workflow-successand fails if the fresh-rollout bridge banner or review-first secondary action disappears
- screen:
- The fresh-rollout detail path now closes the verification loop more explicitly:
- screen: healthy
/deployments/*?source=workflow-successand success banners on/app/deployment-workflow - issue: even after the first bridge, a fresh rollout still landed on a fairly generic overview, and smoke did not yet prove that create/template success links were preserving the workflow-success context
- fix: fresh rollout detail now shows a dedicated
verify app / health / activitychecklist in overview, create success got its own smoke fixture, and both create/template success links are now held to theworkflow-successhref contract - guardrail:
smoke:runtimenow fails if the fresh-rollout checklist disappears or if either success path stops linking into detail with?source=workflow-success
- screen: healthy
- The member-safe pass found one blocked-path leak:
- screen: member
/app/deployment-workflowand member runtime detail in remote-only mode - issue: blocked create/template lanes and runtime mutation controls were hidden but still rendered in HTML
- fix: member remote-only workflow no longer renders blocked create/templates lanes, and admin-managed runtime detail no longer renders redeploy/delete controls
- guardrail:
smoke:beginnernow checks that member workflow/detail HTML stays free of those controls while preservingOpen running appandReview runtime issues
- screen: member
- The next member-safe pass closed one remaining identity leak:
- screen: member live queue on
/app/deployment-workflowand member/deployments/*detail for admin-managed remote runtimes - issue: the blocked/member-safe path still rendered admin-managed server labels like
Ops BatchandSmoke VPSin review UI even after mutation controls were hidden - fix: member-safe runtime review now falls back to generic admin-managed target labels instead of server inventory names/host labels
- guardrail:
smoke:beginnernow fails if the member workflow/detail fixtures expose those admin-managed server identities again
- screen: member live queue on
- The member export/handoff pass closed the same boundary at generated-payload level:
- screen: member runtime detail utility/handoff layer
- issue: the visual UI was generic, but downloadable incident JSON/markdown and copy/export payloads could still be built from raw deployment/diagnostics/activity objects
- fix: member export payloads now strip server inventory fields, replace admin-managed targets with generic labels, redact matching activity/attention text, and omit remote suggested ports
- guardrail:
smoke:beginnernow imports the payload sanitizer directly and fails if member exports contain raw server inventory keys, server names, SSH targets, server ids, or suggested ports
- The backend now enforces the same member boundary instead of relying on frontend sanitizers:
- issue: owned legacy/admin-managed remote deployments and templates could still expose
server_id,server_name,server_host, or SSH target text through API reads/exports/activity, and member API calls could still reach remote runtime live actions - fix: non-admin API reads/exports redact admin-managed server inventory fields, activity/notifications redact matching server identity text, and remote runtime diagnostics/logs/health/redeploy/delete now return admin-only
403 - guardrail:
tests.test_member_ownership_isolationnow covers owned remote deployment/template reads, ops exports, notifications/activity redaction, and blocked remote live/mutation actions
- issue: owned legacy/admin-managed remote deployments and templates could still expose
- The frontend now understands backend-redacted admin-managed runtimes:
- issue: once the backend hid
server_id, member runtime detail could mistake an admin-managed remote runtime for a local target and show dead mutation/template controls - fix: API responses include a non-sensitive
server_managed_by_adminmarker, and runtime detail uses it to hide redeploy/delete/local-template save, skip live diagnostics/logs/health calls, and show clear admin-managed live-check/template notices - guardrail:
smoke:beginnernow renders a redactedadmin-managed-runtimedetail fixture and fails if mutation controls, local template save, local-runtime copy, or server identity returns
- issue: once the backend hid
- The member deployment workflow now separates two remote-only states:
- if member already has deployments,
/app/deployment-workflowframes the page as live review with admin-managed targets instead of saying Step 2 is still waiting - member live-search no longer matches hidden admin-managed server names/hosts
- if member has no deployments, the page still stays blocked on admin Step 1 and keeps create/templates/live cards out of the HTML
- guardrail:
smoke:beginnernow checks both the live-review member path and the waiting-for-admin member path
- if member already has deployments,
- The member overview now follows the same split:
- if member already has deployments,
/appmakes live review the main path and keeps new remote deployment gated behind admin target control - the smoke fixture for that path uses redacted admin-managed deployments so the overview does not reintroduce server identity leaks
- guardrail:
smoke:beginnernow checks the member overview live-review path separately from the waiting path
- if member already has deployments,
- The admin overview now has an explicit server-ready/no-deployments guardrail:
- if one server is already connected and no deployments exist,
/apppoints to first deployment instead of server setup - guardrail:
smoke:beginnernow checks that the hero CTA isLaunch first deployment, Step 2 is active, andAdd first server targetdoes not return as the primary action
- if one server is already connected and no deployments exist,
- The admin first-deploy bridge now keeps target context from overview into workflow:
- if overview knows exactly one ready server and no deployments exist,
/applinks intodeployment-workflowwith that target already selected deployment-workflownow explains when the first-deploy target came from Overview, not only from Server Review- guardrail:
smoke:beginnernow follows the overview link, checks the preservedserverquery, and fails if Step 2 loses the selected target or shows a premature image error
- if overview knows exactly one ready server and no deployments exist,
- The overview first screen now has a stronger product-entry hierarchy:
- screen:
/app - issue: the overview story was behaviorally clearer, but still felt too much like an admin/status dashboard with several similarly weighted cards
- fix:
/appnow opens with a large product statement, one focused next-step panel, a compact signal strip, and then the three-step path; ops/admin depth stays below the first-pass path - guardrail:
smoke:beginnernow requires the product hero/signal strip and checks that hero -> next task -> three-step path render before operations depth
- screen:
- The overview first screen now reduces scroll friction:
- screen:
/app - issue: after the product-entry pass, the user still had to scroll down to understand the three-step usage model
- fix: the hero now includes a top quick-action rail for
Connect server,Deploy app, andReview health, using the same real enabled/blocked state as the beginner path - fix: the longer three-step explanation and plain-language copy are now collapsed details, so the first screen stays action-first instead of reading-first
- guardrail:
smoke:beginnernow requires the quick-action rail and checks it renders before the deeper path/ops sections
- screen:
- The overview quick-action layer now reads more like one premium step grid than a button strip:
- screen:
/app - issue: the first quick-action pass reduced scrolling, but the dark active middle button still looked like an extra primary CTA and made the top row feel visually uneven
- fix: the top layer is now a three-card glass grid with equal step cards, soft state tints, clearer
Start here / Ready / Lockedstatus labels, and a lighter current-step action treatment instead of a black active slab - fix: the top surfaces now use a restrained glass treatment with soft neutral/ice/sage tones, while the rest of the page stays quiet and readable
- guardrail: the existing beginner smoke still holds the quick-action layer above the deeper overview/ops sections, and live browser smoke now validates the desktop grid/collapsed-detail shape before handoff
- screen:
- The product shell is now moving out of the page body and into a shared top bar:
- screen:
/app,/app/server-review,/app/deployment-workflow,/deployments/*,/change-password - issue:
/appkept turning into a giant hero with secondary explanation blocks, while account/help controls were not anchored as one shared product shell - fix: workspace routes now use one fixed top bar with a centered DeployMate badge, right-side
Help,Profile, andLogout, while/loginstays clean and separate - fix:
/appitself now starts as one full-width action board forStep 1 / Step 2 / Step 3instead of hero + signal strip + next panel; deeper ops/admin sections stay below the fold - guardrail:
smoke:beginnernow checks the new action-surface structure and no longer depends on the old hero/next-panel markup
- screen:
- The healthy runtime happy path is now reinforced in workflow as well as detail:
- on the primary healthy runtime card in
deployment-workflow,Open appnow comes first and uses the primary action styling smoke:runtimenow runs a healthy-only workflow fixture so the safe verify path is checked in live queue before detail review- the existing detail guardrail still holds
Open running appas the main next step on healthy runtime detail
- on the primary healthy runtime card in
- Local frontend smoke for the beginner path passed after this slice:
scripts/frontend_beginner_smoke.shscripts/frontend_servers_smoke.shscripts/frontend_runtime_smoke.sh
- The remaining question is no longer "do we have the right frame?" but "does a real beginner now follow it without hesitation?"
- Local working branch for current product work:
deploymate/product-wip - Latest published
developcommit:0384fa3 - Staging host
deploymate:/opt/deploymatebranchdevelopcurrently points to0384fa3- remote
origin/developalso points to0384fa3 - pre-cleanup dirty remote state was preserved in backup branch
codex/remote-host-backup-20260410-023502
- Latest validated package now includes:
- member/admin runtime ownership isolation
- shared auth throttling, explicit bootstrap admin password, strict SSH trust with persistent known_hosts
- production env audit and production contract gate
- remote release smoke that can run on the deploy host and can pin host resolution explicitly
- successful end-to-end staging walkthrough with runtime smoke create/health/diagnostics/logs/activity/delete
- first-pass beginner story rewrite across overview, server step, and deployment step
- blocked member first-pass alignment across overview, server step, and deployment step
- local frontend smoke confirmation for
/app,/app/server-review,/app/deployment-workflow, and deployment detail
- Host-specific note:
- saved runtime smoke server
prod-runtime-smokecurrently points to103.88.241.103 - do not switch it back to
deploymatecloud.ruuntil backend-container DNS resolution is explicitly re-verified
- saved runtime smoke server
- интерфейс DeployMate должен становиться не просто функциональным, а интуитивно понятным
- для любого важного сценария пользователю должно быть очевидно, куда нажать, чтобы пойти по основному пути
- главный следующий шаг на экране должен читаться сразу, без чтения документации и без догадок
- если на экране есть много действий, главный путь не должен теряться среди второстепенных controls
- если логика уже работает, но пользователь всё ещё не понимает, что делать дальше, такой экран считать незаконченным
Практический вывод из текущего состояния проекта:
- сейчас проект уже сильнее как operator/review console, чем как интуитивный продуктовый интерфейс
- главная UX-проблема не в отсутствии функций, а в том, что основной путь местами тонет среди exports, filters, refresh и второстепенных tools
- ближайшие продуктовые пакеты нужно оценивать не только по safety и полноте логики, но и по тому, стал ли следующий шаг очевиднее для клиента
Если совсем по-человечески:
- scaffold уже не просто “улучшали”
- его реально прогнали на живой продуктовой задаче
- результат этой проверки: появился новый surface server-review/page.js
- это теперь полноценное место для работы с серверами
Что это значит:
- серверы больше не должны жить в двух местах сразу
/appтеперь обзорный экран/app/deployment-workflowтеперь основной экран для rollout creation, template reuse и live deployment review/app/server-reviewтеперь основной экран для серверной работы- deployment detail теперь лучше объясняет текущее runtime-состояние и даёт готовый handoff-артефакт, а не только raw diagnostics
- backend activity теперь лучше объясняет не только результат mutation, но и сам старт runtime-операции
- restore dry-run теперь понятнее отвечает на вопрос “готов ли этот bundle хотя бы к import preparation”
- restore dry-run теперь ещё и заранее ловит битые связи между секциями bundle
- restore workspace теперь проще отфильтровать под конкретный риск, а не глазами читать всё подряд
- restore workspace теперь ещё и явно показывает, что можно готовить к import дальше, что держать на merge review, а что оставлять только в dry-run
- удаление deployment теперь требует явного review и typed confirmation вместо одного случайного confirm popup
Через scaffold был создан и затем доведён до реального состояния новый surface:
Это уже не scaffold-demo и не mock page.
Это живая страница поверх настоящего server API.
Сейчас в server-review есть:
- просмотр серверов
- поиск и review filters
- table view
- saved views
- export
- локальный audit trail на странице
- create server
- edit server
- test connection
- diagnostics
- suggested ports
- delete server
Простой вывод:
- серверный workflow теперь собран в одном месте
- для работы с серверами не нужно прыгать обратно на
/app
На page.js:
- серверный блок больше не тащит на себе полный CRUD + diagnostics flow
- там теперь короткий обзор и вход в
Server review - в верхних actions тоже добавлена ссылка на
Server review
Простой вывод:
/appснова стал обзорной панельюserver-reviewстал рабочим экраном по серверам
Scaffold сначала нагенерил отдельный fake backend под server_review, но после перевода страницы на реальные /servers endpoints этот слой стал лишним.
Он был убран.
Что осталось правильным:
- реальный backend
/servers - реальный frontend
server-review
Что это значит:
- нет дублирующего API только ради шаблона
- меньше лишней поддержки
На backend добавлен настоящий update путь для серверов:
- db update:
- route update:
- schema update:
- test update:
Простой вывод:
- сервер теперь можно не только создать и удалить, но и нормально редактировать
На page.js:
- добавлен plain-language runtime summary для людей без технического контекста
- добавлен downloadable incident snapshot в JSON
- добавлен downloadable handoff в Markdown
- activity лента получила search / level filter / sort
- текущий activity view теперь можно экспортировать в CSV
На project_automation_smoke_checks.sh:
- runtime smoke теперь проверяет новый handoff/export слой deployment detail
Простой вывод:
- deployment detail теперь годится не только для диагностики, но и для нормальной передачи состояния дальше
- оператору больше не нужно вручную собирать картину из health, logs, diagnostics и activity
- create/redeploy/delete теперь пишут явные
startedactivity events - стартовые activity messages теперь содержат более человеческое описание target, image, ports и env-shape
- failure activity messages теперь лучше объясняют, на каком шаге и в каком target произошёл сбой
На test_deployment_routes.py и test_deployment_api_flow.py:
- добавлены проверки на эти новые mutation-start events и richer activity messages
Простой вывод:
- runtime detail activity теперь показывает более полезную историю
- при create/redeploy/delete оператору легче понять не только чем всё закончилось, но и что именно система пыталась сделать
На backend:
Что добавлено:
- restore summary теперь возвращает
readiness_status - summary теперь возвращает human-readable
plain_language_summary - summary теперь возвращает явный
next_step - summary теперь возвращает
highest_risk_sections
На frontend:
Что добавлено:
- import readiness card
- next-step card
- plain-language import-preparation summary
- markdown export для restore preparation handoff
- restore smoke теперь проверяет новый preparation слой
Простой вывод:
- оператору теперь проще понять, можно ли вообще двигаться к import preparation
- даже человеку без технического бэкграунда стало проще объяснить, почему bundle safe, review или blocked
На backend:
Что добавлено:
- upgrade requests теперь предупреждают о ссылках на отсутствующих пользователей
- templates теперь предупреждают о ссылках на отсутствующие серверы
- deployments теперь блокируются, если ссылаются на отсутствующий сервер
- deployments теперь предупреждают о ссылках на отсутствующий template
Простой вывод:
- bundle теперь раньше сообщает, что в нём сломано между секциями
- оператору не нужно догадываться, почему import preparation нельзя считать безопасным
На frontend:
Что добавлено:
- search по restore sections
- highest-risk-only filter
- summary по текущей видимой выборке sections
- CSV export именно текущего видимого restore view
- per-section issue summary прямо в карточках sections
Простой вывод:
- теперь проще быстро сузить restore review до реальных проблемных зон
- и проще отдать кому-то именно текущую отфильтрованную картину, а не весь отчёт целиком
На frontend:
На smoke checks:
Что изменилось:
- вместо простого
window.confirmтеперь открывается delete review panel - пользователь видит impact summary перед удалением
- для удаления нужно руками ввести имя deployment
- smoke checks теперь проверяют новый delete-review слой и новые restore preparation controls
Простой вывод:
- случайно удалить deployment стало заметно сложнее
- runtime detail теперь лучше подходит для осторожной операторской работы, а не только для быстрых кликов
На backend:
Что добавлено:
- каждый restore section теперь возвращает
preparation_mode - каждый restore section теперь возвращает
recommended_action - общий restore summary теперь возвращает
preparation_summary - summary теперь считает секции по четырём режимам:
prepare_import,merge_review,validate_only,dry_run_only
На frontend:
Что добавлено:
- новая
Preparation mixcard в restore overview - новый preparation summary внутри import-preparation card
- per-section preparation mode и recommended action прямо в restore section cards
- markdown/CSV export теперь тоже тащит structured preparation guidance
- restore smoke anchors теперь проверяют новый planning слой
Простой вывод:
- restore dry-run теперь объясняет не только риск, но и следующий безопасный способ работы с каждой секцией bundle
- оператору проще отделить реальные import candidates от merge-review и dry-run-only зон
На repo tooling:
Что добавлено:
- новый
make scaffold-deploymate-feature - wrapper поверх
scaffold_deploymate_surface.shдля текущих DeployMate-паттернов - три узких режима:
review-workflow,recovery-workflow,guardrail-workflow - кроме базового surface scaffold теперь сразу создаются:
- frontend feature-pack helper stub
- generated smoke checks file
- dedicated frontend smoke runner script
Что это значит practically:
- следующая review/recovery/admin-heavy фича теперь стартует не только со страницы и backend route
- она сразу получает ещё и project-specific pack для summary/export/smoke слоя
- это должно уменьшить повторную ручную сборку на ближайших пакетах, а не когда-нибудь потом
На backend:
Что добавлено:
- новый
GET /import-review - backend собирает current backup bundle, restore dry-run и controlled import plan в один workspace response
import-reviewбольше не starter queue, а recovery-specific review surface
На frontend:
Что добавлено:
- отдельная страница
/app/import-review - bundle card, dry-run readiness card и plan-status card
- controlled import boundary card с scope summary, reviewer guidance и typed confirmation phrase
- фильтрация import-plan sections по
plan_stateи search - JSON / Markdown / visible-sections CSV export для текущего import review
- ссылка обратно в
/app/usersдля полного restore workspace
Что это делает:
- controlled import/apply boundary теперь видна как отдельный экран, а не только как кусок внутри users/restore workspace
- оператору проще быстро увидеть текущий backup, readiness и import scope без лишнего admin шума
На frontend:
- page.js
- page.js
- admin-page-utils.js
- import-review-feature-pack.js
- import-review.txt
- project_automation_smoke_checks.sh
Что добавлено:
- из restore import plan card теперь можно открыть dedicated
import-reviewименно с тем bundle, dry-run и import plan, которые оператор только что собрал - handoff идёт через browser session storage, без отдельного backend session-layer
import-reviewтеперь явно показывает source workspace:restore handoffилиlive backup- на
import-reviewможно принудительно сбросить handoff и вернуться к current live backup baseline - smoke anchors теперь покрывают и restore-side handoff кнопку, и import-review source card
Что это значит practically:
- recovery flow больше не выглядит как два несвязанных экрана
- review теперь можно продолжать на отдельной странице без потери именно того bundle-контекста, который только что проверяли
- при этом всё ещё остаётся явная возможность вернуться к live backup и не перепутать источники данных
На backend:
Что добавлено:
- import plan summary теперь отдаёт
approval_packet_title - import plan summary теперь отдаёт
approval_subject_line - import plan summary теперь отдаёт
approval_share_summary - import plan summary теперь отдаёт
approval_next_step
На frontend:
Что добавлено:
- approval card теперь показывает packet title, subject line, share summary и next step
- можно скачать не только markdown approval packet, но и structured
approval trail JSON - можно скопировать короткий handoff summary без ручной сборки текста
Что это значит practically:
import-reviewтеперь не только объясняет решение, но и сразу собирает короткий пакет для передачи дальше- оператору не нужно руками пересказывать bundle name, plan status, decision question и следующий шаг
- approval handoff стал больше похож на законченный workflow-артефакт, а не на один markdown-файл
На backend:
Что добавлено:
- import plan summary теперь отдаёт
preparation_status - import plan summary теперь отдаёт
preparation_packet_title - import plan summary теперь отдаёт
preparation_share_summary - import plan summary теперь отдаёт
preparation_summary - import plan summary теперь отдаёт
preparation_checklist - import plan summary теперь отдаёт
preparation_handoff_note - import plan summary теперь отдаёт
preparation_next_step
На frontend:
Что добавлено:
- новый
Controlled preparation handoffcard внутриimport-review - markdown export для preparation packet
- structured
preparation trail JSON - copy action для короткой preparation summary
Что это значит practically:
- recovery flow теперь не обрывается на approval handoff
- следующий безопасный шаг тоже упакован: можно передать дальше scope, checklist и next step для preparation работы
- это всё ещё не apply-path и не скрытый destructive flow, а отдельный handoff на следующую безопасную стадию
На frontend:
- admin-ui.js
- users/page.js
- server-review/page.js
- import-review/page.js
- import-review.txt
- project_automation_smoke_checks.sh
Что добавлено:
AdminPageHeaderтеперь умеет принимать явныйprimaryAction, аRefreshбольше не считается главным действием по умолчаниюUsersheader теперь ведёт прямо кCreate userServer Reviewheader теперь ведёт прямо кAdd server targetImport Reviewheader теперь ведёт прямо кDownload preparation packet- внутри
import-reviewпоявился отдельныйMain next stepcard, который явно говорит, что делать дальше после review
Что это значит practically:
- проект начал переход от “мощной панели инструментов” к более понятному продукту с читаемым главным путём
- на ключевых admin/recovery поверхностях теперь заметнее, что является главным действием, а что просто вспомогательным инструментом
- это ещё не полный UX-рефактор всего продукта, но правильный системный сдвиг уже начался
На frontend:
Что добавлено:
- на верхнем уровне
/appпоявился отдельный сценарный блок с понятными путями - теперь сверху страницы виднее основные сценарии: deployment, runtime review, server review и recovery/admin path
- этот блок не заменяет deeper workspace sections ниже, а помогает сначала выбрать очевидный основной путь
Что это значит practically:
/appстал меньше похож на просто обзорный dashboard и больше на продуктовый входной экран- новый пользователь быстрее понимает не только текущее состояние системы, но и с какого сценария начать работу
- это продолжает тот же UX-сдвиг: сначала очевидный next step, потом уже детали и второстепенные инструменты
На backend:
Что добавлено:
- import plan summary теперь отдаёт
workflow_focus - import plan summary теперь отдаёт
workflow_summary - import plan summary теперь отдаёт
workflow_steps
На frontend:
Что добавлено:
- в
import-reviewпоявился отдельныйRecovery sequencecard - экран теперь явно показывает текущий фокус и порядок безопасных следующих шагов
- markdown export теперь тоже тащит sequencing summary
Что это значит practically:
- recovery flow теперь легче воспринимается как последовательность действий, а не как набор отдельных packet/export блоков
- пользователю проще понять, где он находится сейчас: на review, blocked cleanup или preparation handoff
- это усиливает продуктовую понятность без открытия скрытого apply-path
На frontend:
Что добавлено:
Upgrade Requestsheader теперь ведёт не просто в refresh/export pattern, а даёт явный вход в inbox review- наверху страницы появился отдельный
Main next stepcard - экран теперь сразу показывает, на чём фокус: new, in-review или approved requests
Что это значит practically:
upgrade-requestsстал меньше похож на технический inbox с bulk-tools наверху- пользователю теперь проще понять, что сначала нужно пройти текущий queue slice, а уже потом идти в bulk, saved views и audit
- это продолжает общий UX-сдвиг проекта: сначала очевидный review path, потом supporting tools
На frontend:
Что добавлено:
Usersheader теперь ведёт вReview team access, а не в создание пользователя как главный путь- наверху страницы появился
Main next stepcard для обычного team-access review - recovery получил отдельный верхний
Recovery pathcard - recovery path теперь виден как отдельный маршрут, а не только как часть большого
Advanced audit and recoverydisclosure
Что это значит practically:
- один из самых смешанных экранов проекта стал понятнее по структуре
- пользователь теперь быстрее видит, идёт ли он в обычный доступ/команду или в recovery workflow
- это уменьшает путаницу между ежедневным access review и редким, более опасным recovery path
На frontend:
Что добавлено:
- появился отдельный
deployment-workflowscreen - туда переехали live deployments, create deployment и deployment templates
/appостался обзорным scenario-entry экраном и перестал быть смешанным toolbox-экраном для rollout path- smoke checks теперь тоже считают deployment/template path отдельной поверхностью, а не частью обзорного
/app
Что это значит practically:
- основной путь деплоя теперь не тонет среди ops overview, admin и recovery surfaces
- пользователю проще понять, куда идти для следующего rollout: в один отдельный deployment workspace
- проект стал ближе к intent-first структуре: обзор отдельно, rollout workflow отдельно, server review отдельно, recovery отдельно
На frontend:
Что добавлено:
- у deployment detail появился отдельный верхний
Main next stepслой - back path теперь ведёт в
deployment-workflow, а не в общий обзорный/app - runtime detail теперь явнее разделяет: сначала review/decision, потом redeploy, потом handoff/delete/tools
- handoff, delete review и deeper runtime history теперь меньше конкурируют с главным действием страницы
Что это значит practically:
- deployment detail стал не просто страницей с большим количеством мощных блоков, а более понятным рабочим экраном
- пользователю теперь проще увидеть, нужно ли сначала стабилизировать rollout, подготовить change, отдать handoff или идти в delete review
- это продолжает тот же продуктовый сдвиг: сначала очевидный safe next step, потом supporting diagnostics/history/tools
На frontend:
Что добавлено:
- после сохранения шаблона на deployment detail появился явный переход в
deployment-workflow deployment-workflowтеперь умеет открываться сразу на нужном template context из detail-страницы- template review/reuse/edit теперь меньше ощущается как два несвязанных места
Что это значит practically:
- пользователь теперь не теряет шаблон сразу после сохранения на runtime detail
- стало понятнее, что detail умеет сохранить текущую реальность как template, а основной lifecycle шаблона продолжается уже в deployment workflow
- это делает template path ближе к человеческому сценарию: сохранить -> открыть -> проверить -> переиспользовать
На frontend:
Что добавлено:
redeployтеперь тоже делает preflight-проверку на image, парность портов и ошибки в env rows- у
redeployпоявился такой же draft summary, как у guided create - create и redeploy теперь лучше ощущаются как один rollout language, а не как два слегка разных технических flows
Что это значит practically:
- пользователю теперь проще доверять экрану изменения rollout: он заранее видит очевидные проблемы в форме, а не только backend error после submit
- переход между “создать новый deploy” и “изменить существующий deploy” стал понятнее по языку и поведению
- это уменьшает ощущение, что workflow и detail живут по разным правилам
На frontend:
Что добавлено:
- кнопка
Redeployпревратилась вReview redeploy - перед реальным redeploy теперь открывается review panel с impact summary
- для redeploy теперь тоже нужен typed confirmation, как и для delete
Что это значит practically:
- risky runtime change теперь сложнее сделать случайно
- пользователь сначала видит, что именно изменится или что redeploy просто заново прогонит тот же rollout
- delete и redeploy теперь выглядят как два осознанных review-действия, а не как две кнопки с разным уровнем осторожности
На frontend:
Что добавлено:
- delete и redeploy теперь используют одинаковый confirmation phrase pattern
- review panels у risky действий теперь объясняют подтверждение в одном и том же тоне
- wording стал меньше зависеть от разных случайных формулировок на каждой кнопке
Что это значит practically:
- пользователю легче понять логику опасных действий, потому что они больше не разговаривают на разных языках
- review layer на runtime detail стал восприниматься как один цельный safety pattern, а не как набор отдельных решений
- это делает risky actions более предсказуемыми даже без чтения документации
На frontend:
Что добавлено:
- общий reviewer-facing copy layer для трёх основных runtime экранов
- overview, deployment workflow и deployment detail теперь объясняют основной путь более одинаковым языком
- меньше дрейфа между “obvious path”, “main next step”, “review first” и похожими product формулировками
Что это значит practically:
- человеку проще читать продукт как один связный маршрут, а не как три экрана, написанные разным тоном
- главный путь деплоя и review теперь ощущается стабильнее даже при переходе между разными surface
- это уменьшает риск, что пользователь поймёт overview, но потеряется на workflow или detail из-за смены языка
Если коротко:
- server-review теперь можно считать законченным отдельным экраном
- это уже не “заготовка”
- это уже не “нужно ещё чуть-чуть, чтобы стало usable”
- это уже рабочее место для серверов
- deployment detail теперь тоже стал сильнее как рабочее место для runtime review и incident handoff
- restore layer теперь уже не просто report, а более структурированный preparation handoff
- у проекта теперь есть ещё и более узкий ускоритель именно под текущие DeployMate feature slices, а не абстрактный scaffold “на будущее”
- recovery layer теперь ещё и получил отдельный import-review экран для controlled import boundary
- restore и import-review теперь уже связаны в один маршрут, а не живут как две параллельные поверхности без handoff
- import-review теперь ещё и умеет выдавать короткий approval trail, который проще отправить дальше без пересказа руками
- import-review теперь доводит review ещё и до preparation handoff, то есть следующий безопасный шаг тоже оформлен как рабочий артефакт
- поверх этого началась явная UX-пересборка: главный следующий шаг стали выводить вперёд, а не прятать среди второстепенных действий
/appповерх этого тоже начал меняться в сторону сценарного входа, а не просто обзорной панели- теперь это касается не только CTA-слоя, но и самого deploy/runtime/templates workflow: он вынесен в отдельный
deployment-workflow - recovery path поверх этого теперь ещё и показывает последовательность шагов, а не только отдельные handoff-артефакты
upgrade-requestsповерх этого тоже начал смещаться от inbox-toolbox к guided review pathusersповерх этого теперь тоже начал разделяться на отдельные intent-first маршруты вместо одного смешанного admin/recovery экрана- deployment detail поверх этого теперь тоже начал смещаться от dense runtime toolbox к более явному decision-first экрану
- поверх этого template path между detail и workflow теперь тоже стал более непрерывным, а не разорванным между двумя страницами
- поверх этого create и redeploy теперь ещё и говорят с пользователем более одинаковым языком и одинаково рано показывают draft-проблемы
- поверх этого redeploy теперь ещё и получил свой review boundary, а не оставался прямым submit-действием
- поверх этого delete и redeploy теперь ещё и подтверждаются более одинаковым человеческим языком
- поверх этого overview, workflow и detail теперь ещё и объясняют основной rollout path более одинаковым reviewer-facing языком
Проверено локально:
bash -n scripts/scaffold_deploymate_surface.sh-> okcd backend && venv/bin/python -m unittest tests.test_server_api_flow-> oknpm --prefix frontend run build-> okFRONTEND_SMOKE_PORT=3006 npm --prefix frontend run smoke:runtime-> okcd backend && venv/bin/python -m unittest tests.test_deployment_routes tests.test_deployment_api_flow-> okcd backend && venv/bin/python -m unittest tests.test_restore_dry_run-> okFRONTEND_SMOKE_PORT=3007 npm --prefix frontend run smoke:restore-> okFRONTEND_SMOKE_PORT=3006 npm --prefix frontend run smoke:runtime-> ok- повторный
cd backend && venv/bin/python -m unittest tests.test_restore_dry_runпосле structured preparation plan -> ok - повторный
npm --prefix frontend run buildпосле restore UI/export updates -> ok bash -n scripts/scaffold_deploymate_feature.sh-> ok- dry run
scaffold_deploymate_feature.shна временном target repo -> ok cd backend && venv/bin/python -m unittest tests.test_import_review_api_flow tests.test_restore_dry_run-> oknpm --prefix frontend run buildпослеimport-reviewsurface -> okgit diff --check-> ok- повторный
cd backend && venv/bin/python -m unittest tests.test_import_review_api_flow tests.test_restore_dry_runпосле restore -> import-review handoff -> ok - повторный
npm --prefix frontend run buildпосле handoff/source-layer updates -> ok - повторный
cd backend && venv/bin/python -m unittest tests.test_import_review_api_flow tests.test_restore_dry_runпосле approval trail layer -> ok - повторный
npm --prefix frontend run buildпосле approval trail updates -> ok - повторный
cd backend && venv/bin/python -m unittest tests.test_import_review_api_flow tests.test_restore_dry_runпосле preparation handoff layer -> ok - повторный
npm --prefix frontend run buildпосле preparation handoff updates -> ok npm --prefix frontend run buildпосле primary-action / main-next-step UX package -> okgit diff --checkпосле primary-action / main-next-step UX package -> oknpm --prefix frontend run buildпосле/appscenario-entry UX package -> okgit diff --checkпосле/appscenario-entry UX package -> okcd backend && venv/bin/python -m unittest tests.test_import_review_api_flow tests.test_restore_dry_runпосле recovery sequencing layer -> oknpm --prefix frontend run buildпосле recovery sequencing layer -> okgit diff --checkпосле recovery sequencing layer -> oknpm --prefix frontend run buildпосле upgrade inbox UX package -> okgit diff --checkпосле upgrade inbox UX package -> oknpm --prefix frontend run buildпосле users dual-path UX package -> okgit diff --checkпосле users dual-path UX package -> oknpm --prefix frontend run buildпосле deployment workflow split -> okFRONTEND_SMOKE_PORT=3006 npm --prefix frontend run smoke:runtimeпосле deployment workflow split -> okFRONTEND_SMOKE_PORT=3008 npm --prefix frontend run smoke:templatesпосле deployment workflow split -> okgit diff --checkпосле deployment workflow split -> oknpm --prefix frontend run buildпосле deployment detail intent-first layer -> okFRONTEND_SMOKE_PORT=3006 npm --prefix frontend run smoke:runtimeпосле deployment detail intent-first layer -> okgit diff --checkпосле deployment detail intent-first layer -> oknpm --prefix frontend run buildпосле template lifecycle bridge -> okgit diff --checkпосле template lifecycle bridge -> oknpm --prefix frontend run buildпосле create/redeploy consistency layer -> okFRONTEND_SMOKE_PORT=3006 npm --prefix frontend run smoke:runtimeпосле create/redeploy consistency layer -> okgit diff --checkпосле create/redeploy consistency layer -> oknpm --prefix frontend run buildпосле redeploy review-first guardrails -> okFRONTEND_SMOKE_PORT=3006 npm --prefix frontend run smoke:runtimeпосле redeploy review-first guardrails -> okgit diff --checkпосле redeploy review-first guardrails -> oknpm --prefix frontend run buildпосле shared risky-action language layer -> okFRONTEND_SMOKE_PORT=3006 npm --prefix frontend run smoke:runtimeпосле shared risky-action language layer -> okgit diff --checkпосле shared risky-action language layer -> oknpm --prefix frontend run buildпосле shared reviewer-facing rollout copy layer -> okFRONTEND_SMOKE_PORT=3006 npm --prefix frontend run smoke:runtimeпосле shared reviewer-facing rollout copy layer -> okgit diff --checkпосле shared reviewer-facing rollout copy layer -> oknpm --prefix frontend run buildпосле member live/waiting deployment workflow split -> oknpm --prefix frontend run smoke:beginnerпосле member live/waiting deployment workflow split -> oknpm --prefix frontend run buildпосле member overview live-review split -> oknpm --prefix frontend run smoke:beginnerпосле member overview live-review split -> oknpm --prefix frontend run buildпосле admin server-ready overview guardrail -> oknpm --prefix frontend run smoke:beginnerпосле admin server-ready overview guardrail -> oknpm --prefix frontend run buildпосле overview-to-workflow first-deploy bridge -> oknpm --prefix frontend run smoke:beginnerпосле overview-to-workflow first-deploy bridge -> oknpm --prefix frontend run buildпосле healthy workflow open-app priority slice -> oknpm --prefix frontend run smoke:runtimeпосле healthy workflow open-app priority slice -> oknpm --prefix frontend run buildпосле failed workflow review-first CTA slice -> oknpm --prefix frontend run smoke:runtimeпосле failed workflow review-first CTA slice -> oknpm --prefix frontend run buildпосле deployment workflow runtime queue consistency package -> oknpm --prefix frontend run smoke:runtimeпосле deployment workflow runtime queue consistency package -> oknpm --prefix frontend run buildпосле internal-only runtime review path package -> oknpm --prefix frontend run smoke:runtimeпосле internal-only runtime review path package -> oknpm --prefix frontend run buildпосле blocked member overview CTA wording slice -> oknpm --prefix frontend run smoke:beginnerпосле blocked member overview CTA wording slice -> oknpm --prefix frontend run buildпосле ready server-review CTA hierarchy slice -> oknpm --prefix frontend run smoke:serversпосле ready server-review CTA hierarchy slice -> oknpm --prefix frontend run buildпосле first-deploy workflow tab hierarchy slice -> oknpm --prefix frontend run smoke:beginnerпосле first-deploy workflow tab hierarchy slice -> oknpm --prefix frontend run buildпосле template deploy success consistency slice -> oknpm --prefix frontend run smoke:runtimeпосле template deploy success consistency slice -> oknpm --prefix frontend run buildпосле fresh rollout detail verify-first bridge slice -> oknpm --prefix frontend run smoke:runtimeпосле fresh rollout detail verify-first bridge slice -> oknpm --prefix frontend run buildпосле fresh rollout detail verification checklist slice -> oknpm --prefix frontend run smoke:runtimeпосле fresh rollout detail verification checklist slice -> oknpm --prefix frontend run buildпосле overview product-entry hierarchy slice -> oknpm --prefix frontend run smoke:beginnerпосле overview product-entry hierarchy slice -> oknpm --prefix frontend run buildпосле overview quick-action rail slice -> oknpm --prefix frontend run smoke:beginnerпосле overview quick-action rail slice -> oknpm --prefix frontend run buildпосле overview glass step-grid slice -> oknpm --prefix frontend run smoke:beginnerпосле overview glass step-grid slice -> oknpm --prefix frontend run buildпосле workspace shell + action-board slice -> oknpm --prefix frontend run smoke:beginnerпосле workspace shell + action-board slice -> okREADME.md/RUNBOOK.mdобновлены подserver-reviewкак основной server workspace
Простой вывод:
- текущий пакет по scaffold + server-review + runtime detail handoff + richer backend mutation trace + stronger restore preparation guardrails + structured restore preparation guidance + DeployMate-specific feature scaffold + import-review workspace + restore/import-review handoff + approval trail layer + preparation handoff layer + primary-action UX package +
/appscenario-entry layer + recovery sequencing layer + upgrade inbox UX package + users dual-path UX package + dedicated deployment workflow split + deployment detail intent-first layer + template lifecycle bridge + create/redeploy consistency layer + redeploy-review guardrails + shared risky-action language layer + shared reviewer-facing rollout copy layer + overview product-entry hierarchy + overview quick-action rail + overview glass step-grid polish + workspace shell + action-board slice находится в рабочем состоянии
Самый разумный следующий шаг сейчас:
- Считать restore/runtime review layer уже достаточно сильным на уровне review/preparation и не раздувать его бесконечной полировкой.
- Если делать ускоритель разработки, то только такой, который окупится прямо на следующих пакетах DeployMate, а не абстрактный framework “на будущее”.
- Узкий DeployMate-specific vertical feature scaffold теперь уже есть, значит дальше его надо проверять только на реальной ближайшей фиче.
import-reviewуже проверил scaffold на реальной recovery фиче, значит дальше можно использовать тот же путь только там, где он реально экономит ручную сборку.- Следующий продуктовый пакет теперь логичнее брать уже после entry/CTA/sequencing/inbox-review/users-split/deployment-workflow/deployment-detail/template-bridge/create-redeploy-consistency/redeploy-review-first слоя: не возвращаться к смешанному rollout toolbox, а идти дальше в reviewer-facing rollout copy и delete/redeploy shared confirmation language.
Что из ускорения реально стоит делать сейчас:
- только то, что ускорит следующие реальные DeployMate фичи уже в ближайших пакетах
- vertical feature scaffold под текущие review/recovery/admin patterns проекта
- повторно используемые примитивы именно для review/export/guardrail flows, если они сразу войдут в следующую работу
Что из ускорения сейчас делать НЕ надо:
- ещё один общий automation framework ради красоты
- слишком абстрактный scaffold “для любых будущих проектов”
- крупный refactor, который не сокращает время до следующей законченной фичи в самом DeployMate
Что сейчас уже НЕ является хорошим следующим шагом:
- ещё один абстрактный раунд улучшения scaffold
- возврат полного server CRUD обратно на
/app - создание второго server screen рядом с
server-review
Чтобы GitHub выглядел презентабельно, правило должно быть простое:
- коммитить не по каждой мелочи, а по каждому законченному логическому куску
- пушить не после каждого коммита, а после осмысленного checkpoint
Практически это значит:
- хороший коммит:
- одна понятная тема
- проходит релевантную локальную проверку
- имеет внятное сообщение
- плохой коммит:
- смесь scaffold, backend, docs и UI без общей идеи
- “fix”, “wip”, “tmp”, если этого можно избежать
- промежуточное сломанное состояние без причины
Нормальная частота:
- коммит: когда завершён один смысловой кусок работы
- push: когда собран 1 хороший коммит или маленькая серия из 2-3 связанных коммитов
- для длинной сессии: лучше несколько чистых коммитов и один push серии, чем 12 мелких push подряд
Простой ориентир:
- если изменение уже можно объяснить одной короткой фразой, это кандидат на коммит
- если локально уже не стыдно открыть diff в PR, это кандидат на push
Для этого репо хороший стиль такой:
- 1 коммит на платформенный/infra кусок
- 1 коммит на конкретную продуктовую фичу
- push после того, как оба куска собираются в аккуратную историю
- Открой HANDOFF.md.
- Проверь текущее состояние:
git status --shortgit rev-parse --short HEAD
- Если продолжаешь server-review track:
- открой server-review/page.js
- открой starter-api.js
- открой servers.py
- открой test_server_api_flow.py
- Если продолжаешь runtime detail track:
- открой page.js
- открой project_automation_smoke_checks.sh
- Если продолжаешь backend runtime trace track:
- открой deployment_mutations.py
- открой test_deployment_routes.py
- открой test_deployment_api_flow.py
- Если продолжаешь restore preparation track:
- открой users/page.js
- открой root.py
- открой test_restore_dry_run.py
- Если продолжаешь runtime destructive-guardrails track:
- открой page.js
- открой project_automation_smoke_checks.sh
- Быстрые проверки:
cd backend && venv/bin/python -m unittest tests.test_server_api_flowcd backend && venv/bin/python -m unittest tests.test_deployment_routes tests.test_deployment_api_flowcd backend && venv/bin/python -m unittest tests.test_restore_dry_runnpm --prefix frontend run buildFRONTEND_SMOKE_PORT=3006 npm --prefix frontend run smoke:runtimeFRONTEND_SMOKE_PORT=3007 npm --prefix frontend run smoke:restore
- Если цель — завершить этот пакет:
- проверить docs/handoff diff
- собрать commit