feat(generator): дефолт профиля — daily-wave, ci стал служебным

- Зачем:
  - менти доставался плоский тестовый профиль ci; учебный профиль
    должен быть один — daily-wave с суточной волной (issue #6).
- Что:
  - дефолт daily-wave во всех точках: форма пульта generator_control,
    launch.py (API и CLI), Config, Makefile, четыре shell-скрипта.
  - автопроверки передают ci явно; контрактный тест пульта теперь
    проверяет сам дефолт Param профиля (через AST), а не подстроку.
  - доки в том же изменении: README, OPERATIONS, TEST_PLAN,
    generator/README, runbook startup-history.
- Проверка:
  - make test (206 + 31 passed) и make lint — зелёные.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-22 17:16:07 +03:00
co-authored by Claude Fable 5
parent 5791d42db8
commit b87dde79b7
17 changed files with 78 additions and 54 deletions
@@ -102,7 +102,7 @@ class Config:
else None
)
launch_profile: str = field(
default_factory=lambda: os.getenv("GEN_LAUNCH_PROFILE", "ci")
default_factory=lambda: os.getenv("GEN_LAUNCH_PROFILE", "daily-wave")
)
def __post_init__(self):
@@ -88,7 +88,7 @@ def parse_duration(value: str) -> timedelta:
def build_launch_env(
verb: str,
*,
profile_name: str = "ci",
profile_name: str = "daily-wave",
duration: str | None = None,
overrides: dict[str, str] | None = None,
) -> dict[str, str]:
@@ -161,7 +161,11 @@ def _parse_args(argv: list[str]) -> argparse.Namespace:
)
parser.add_argument(
"--profile",
default=os.getenv("PROFILE") or os.getenv("GEN_LAUNCH_PROFILE") or "ci",
default=(
os.getenv("PROFILE")
or os.getenv("GEN_LAUNCH_PROFILE")
or "daily-wave"
),
choices=sorted(PROFILES),
)
parser.add_argument("--duration", default=os.getenv("GEN_HISTORY_DURATION"))