- PySwiss gains its FIRST reverse lookup: GET /api/windows/?placements=
Uranus:Aquarius,…&next=Saturn — sign_windows (per-planet stride scan +
bisection edge refine to the hour) folds thru narrowed_windows
(slowest planet first, each scan restricted to the prior intersection
so the fast bodies only ever scan slivers) over the game window
(settings GAME_WINDOW_START/END, default 1781-03-13 — Uranus's
discovery — → 2100-12-31, the snapshot span); present_signs reports
the next planet's reachable signs. Self-validating UTs (every window
forward-checked at midpoint + edges) + 8 API ITs
- epic clock_windows endpoint (lazy, table_sky-shaped — room views stay
HTTP-free) proxies the lookup, cached per room+placements (six felts
polling one ritual state = ONE upstream call; failures cached 60s);
fails OPEN {available:false} when PySwiss is unreachable
- place_clock_planet enforces the HARD constraint: a sign outside the
narrowed windows' reach → 409 sign_unreachable; fail-open w.o PySwiss
(the ritual never bricks on microservice downtime); PlaceClockPlanet
ITs sever PySwiss in setUp so the turn walk stays deterministic
against a live local service
- felt: #id_clock_windows readout below the prompt for ALL viewers —
"1995-04-01 → 1998-04-17 · 2 windows" — fetched at parse + after own
placement + on every clock_placement broadcast; drawRim opts gain
allowedSigns → unreachable wedges .nw-sign--blocked (dimmed, inert,
no handlers); SkyWheelSpec R10/R11
- SeedMapClockNarrowingTest FT stubs PySwiss in-process (real proxy,
real gating): readout renders, blocked Aries won't place, allowed
Pisces lands Saturn, readout re-narrows
[[project-voronoi-spec]]
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
56 lines
1.5 KiB
Python
56 lines
1.5 KiB
Python
import os
|
|
from pathlib import Path
|
|
|
|
BASE_DIR = Path(__file__).resolve().parent.parent
|
|
|
|
SECRET_KEY = os.environ.get('SECRET_KEY', 'pyswiss-dev-only-key-replace-in-production')
|
|
DEBUG = os.environ.get('DEBUG', 'true').lower() != 'false'
|
|
ALLOWED_HOSTS = os.environ.get('ALLOWED_HOSTS', '*').split(',')
|
|
|
|
INSTALLED_APPS = [
|
|
'corsheaders',
|
|
'django.contrib.contenttypes',
|
|
'django.contrib.auth',
|
|
'apps.charts',
|
|
]
|
|
|
|
MIDDLEWARE = [
|
|
'corsheaders.middleware.CorsMiddleware',
|
|
'django.middleware.common.CommonMiddleware',
|
|
]
|
|
|
|
CORS_ALLOWED_ORIGIN_REGEXES = [
|
|
r'^https://.*\.earthmanrpg\.me$',
|
|
r'^http://localhost(:\d+)?$',
|
|
]
|
|
|
|
ROOT_URLCONF = 'core.urls'
|
|
|
|
DATABASES = {
|
|
'default': {
|
|
'ENGINE': 'django.db.backends.sqlite3',
|
|
'NAME': BASE_DIR / 'db.sqlite3',
|
|
}
|
|
}
|
|
|
|
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
|
|
|
|
STATIC_URL = '/static/'
|
|
MEDIA_URL = '/media/'
|
|
|
|
USE_TZ = True
|
|
TIME_ZONE = 'UTC'
|
|
|
|
# Swiss Ephemeris data files.
|
|
# Override via SWISSEPH_PATH env var on staging/production.
|
|
SWISSEPH_PATH = os.environ.get(
|
|
'SWISSEPH_PATH',
|
|
r'D:\OneDrive\Desktop\potentium\implicateOrder\libraries\swisseph-master\ephe',
|
|
)
|
|
|
|
# The game window — the date bounds the Set-the-Game-Clock ritual can resolve
|
|
# within (/api/windows/ reverse lookup). Defaults span the precomputed
|
|
# snapshot range: 1781-03-13 (Uranus's discovery) → 2100-12-31.
|
|
GAME_WINDOW_START = os.environ.get('GAME_WINDOW_START', '1781-03-13')
|
|
GAME_WINDOW_END = os.environ.get('GAME_WINDOW_END', '2100-12-31')
|