P23 — Skinny Packages: - Break conf→bib circular dependency with lazy guarded import - Extract aco.table.base → conf.table_base (shared foundation) - Add try/except ImportError guards on all cross-module imports - Define per-module optional-dependencies in pyproject.toml - Slim base deps to just pydantic; all heavy deps in optional groups - Add gen_config.py --check validation for module/dep sync - Add skinny-install CI matrix job (tests each extra in isolation) P24 — Tree Reorganization: - Move service configs to infra/ (traefik, coredns, grafana, etc.) - Consolidate Dockerfiles under infra/images/ - Move styles/ → assets/css/ + assets/icons/ + assets/nature.py - Update compose.yml, stack.toml, gen_config.py, all backend emitters - Update bootstrap scripts and install_certs.sh P25 — Cloud Provider Abstraction: - Add cloud/ directory with self-hosted, aws, gcp, azure stubs - Add cloud contexts (aws, gcp, azure) to stack.toml - Add conf/storage.py — get_filesystem() dispatches per context - Add aws, gcp, azure optional dependency groups - Document service mapping for each provider All 11955 tests pass. Zero functionality lost.
58 lines
966 B
XML
58 lines
966 B
XML
<svg viewBox="0 0 373 373" xmlns="http://www.w3.org/2000/svg">
|
|
|
|
<style>
|
|
|
|
#camera {
|
|
transform-origin: 186.5px 186.5px;
|
|
animation: zoomOut 3s ease forwards;
|
|
}
|
|
|
|
#pan {
|
|
animation: panOut 3s ease forwards;
|
|
}
|
|
|
|
#man {
|
|
transform-origin: 32px 364px;
|
|
animation: pivot 3s ease forwards;
|
|
}
|
|
|
|
/* camera zoom out */
|
|
@keyframes zoomOut {
|
|
0% { transform: scale(1.35); }
|
|
100% { transform: scale(1); }
|
|
}
|
|
|
|
/* camera pan */
|
|
@keyframes panOut {
|
|
0% { transform: translate(70px,0); }
|
|
100% { transform: translate(0,0); }
|
|
}
|
|
|
|
/* subtle pivot */
|
|
@keyframes pivot {
|
|
0% { transform: rotate(18deg); }
|
|
100% { transform: rotate(0deg); }
|
|
}
|
|
|
|
</style>
|
|
|
|
<g id="camera">
|
|
<g id="pan">
|
|
|
|
<!-- fire layer -->
|
|
<image href="fire_layer.png"
|
|
x="0" y="0"
|
|
width="373" height="373"/>
|
|
|
|
<!-- F silhouette -->
|
|
<g id="man">
|
|
<image href="f_layer.png"
|
|
x="0" y="0"
|
|
width="373" height="373"/>
|
|
</g>
|
|
|
|
</g>
|
|
</g>
|
|
|
|
</svg>
|