38 lines
12 KiB
JSON
38 lines
12 KiB
JSON
{"ts": "2026-04-26T00:00:00Z", "type": "design", "status": "accepted", "note": "Repixelizer has one live reconstruction engine: phase-field in src/repixelizer/phase_field.py. The old tray-based optimizer is gone and should not be revived without a new design map."}
|
|
{"ts": "2026-04-26T00:00:00Z", "type": "metric", "status": "accepted", "note": "source_structure is tracked alongside source_fidelity because lattice-only scoring can rank visibly better outputs as worse."}
|
|
{"ts": "2026-04-26T03:57:11+00:00", "type": "docs", "status": "accepted", "note": "State surface boundaries: docs/lean-optimizer-algorithm-map.md is live control-flow truth, docs/implementation-plan.md is the forward plan, state/map.yaml is durable current truth, scratch is disposable, and evidence is distilled belief only."}
|
|
{"ts": "2026-04-26T04:52:53+00:00", "type": "design", "status": "accepted", "note": "Hosted convenience is the monetization path; keep the code open, let self-hosting remain the escape hatch, and do not prioritize native desktop packaging unless it clearly beats hosted access on revenue, support burden, or strategy."}
|
|
{"ts": "2026-04-26T13:53:17+00:00", "type": "inference", "status": "accepted", "note": "Dense landscape exposed that hard automatic caps can silently discard the useful high-detail branch. Autocorr candidate inference must preserve plausible high-size candidates before reranking rather than pruning detail early."}
|
|
{"ts": "2026-04-26T15:46:23+00:00", "type": "research", "status": "rejected", "note": "Projected edge-energy spectral lattice prior was removed before ship: on dense landscape it floor-hugged to a 2px rhythm and widened toward bogus 626-family aliases. Do not revive it casually."}
|
|
{"ts": "2026-04-26T17:58:43+00:00", "type": "inference", "status": "accepted", "note": "Autocorr inference keeps near-best lag plateaus and searches for cross-axis consensus before collapsing to one lattice size. This restored badge inference to the 125-family while dense landscape stayed around 418."}
|
|
{"ts": "2026-04-26T22:40:02+00:00", "type": "hosted", "status": "accepted", "note": "Hosted mode owns the public front door in src/repixelizer/gui.py: / serves a landing page there, while local/self-host runs redirect root to /app/. Keep hosted auth/member-gating in the web layer, not the solver."}
|
|
{"ts": "2026-04-26T23:34:24+00:00", "type": "hosted", "status": "accepted", "note": "Repixelizer consumes Heimdall only inside the hosted web layer. GC_ACCESS_MODE=heimdall verifies Heimdall Ed25519 access tokens locally and adopts httpOnly local sessions without dragging provider tokens through browser URLs or solver code."}
|
|
{"ts": "2026-04-28T16:23:58+00:00", "type": "tuning", "status": "accepted", "note": "Manual tuning proved the first robust improvement came from reducing explicit solver local search movement, not from increasing signal. Stronger signal worsened early slices; higher spring weight above the cap did nothing."}
|
|
{"ts": "2026-04-28T16:23:59+00:00", "type": "tuning", "status": "accepted", "note": "Full-corpus manual tuning initially selected radius=0.60/blend=0.05: score 0.5483, mean 0.2732, worst 1.1902 across 38 cases x soft/crisp/ai, improving 100/114 rows over baseline. Superseded later as current config, but useful as movement-geometry history."}
|
|
{"ts": "2026-04-29T00:00:00+00:00", "type": "signal", "status": "accepted", "note": "The old quiet-near-boundary / context-energy signal and the wall-distance detour were both wrong shapes. The live signal is direct hierarchical flatness: multiscale luminance gradient/Laplacian energy, one normalization, inverted to flatness, then peak-shaped."}
|
|
{"ts": "2026-04-29T00:30:00+00:00", "type": "benchmark", "status": "accepted", "note": "Benchmark/tune paths gained CPU worker parallelism for row-level roundtrip evaluation. Use workers for future tuning instead of dragging the harness through serial mud."}
|
|
{"ts": "2026-04-29T08:36:03+00:00", "type": "tuning", "status": "accepted", "note": "Focused supervised tuning around the corrected signal found the current live motion geometry: radius=0.215, blend=0.24, move=0.09, grid=4.75, energy=1.4, peak=3.25. It is shippable but not fully signal-retuned."}
|
|
{"ts": "2026-04-29T08:54:03+00:00", "type": "tuning", "status": "accepted", "note": "docs/solver-tuning-lessons-2026-04-29.md is the detailed tuning ledger. Future tuning should sweep signal knobs around radius=0.215/blend=0.24 first, then movement/coherence, then combinations, with full-corpus validation only at the end."}
|
|
{"ts": "2026-04-29T09:23:44+00:00", "type": "asset", "status": "accepted", "note": "Landing character asset must be regenerated through hosted GUI/autocorr defaults, not obsolete searched inference. The wrong path produced 106x106; hosted autocorr defaults produce the expected 139x139."}
|
|
{"ts": "2026-04-29T09:34:39+00:00", "type": "implementation", "status": "accepted", "note": "Searched inference was removed as a vestigial organ. Automatic inference is autocorr-only; autocorr candidates remain rerankable; hosted mode no longer forces rerank off."}
|
|
{"ts": "2026-04-29T09:48:26+00:00", "type": "implementation", "status": "accepted", "note": "Lattice phase controls/search were removed. The solver initializes from fixed lattice centers and moves the explicit source-position field directly; users should not be exposed to lattice phase knobs."}
|
|
{"ts": "2026-04-29T10:09:47+00:00", "type": "implementation", "status": "accepted", "note": "Source hygiene pass removed dead SolverHyperParams, stale tuning-campaign knobs, fake iterative cleanup, old guidance observer names, and solver-analysis call sites. Analysis remains only as a diagnostic edge preview; it does not steer the solver."}
|
|
{"ts": "2026-04-29T10:09:47+00:00", "type": "verification", "status": "ok", "note": "Post-cleanup verification passed: AST parse succeeded across source/script/tool/test Python files and targeted stale-string scans found no removed solver params, fake cleanup hooks, old guidance observer names, or solver-analysis call sites."}
|
|
{"ts": "2026-04-29T10:20:00+00:00", "type": "process", "status": "accepted", "note": "When warned about imminent compaction, immediately write hot context from memory to a GUID-named scratch file before reading files or running commands. The trapdoor eats tidy workflows."}
|
|
{"ts": "2026-04-29T10:23:52+00:00", "type": "verification", "status": "ok", "note": "Source hygiene audit read all 60 source files under src/scripts/tools/tests, removed stale GUI lattice_search event handling and outdated spec text, kept PhaseFieldSourceAnalysis only as a diagnostic gauge, aligned config/solver_params.json to the documented shipping basin, and passed the full pytest suite: 89 passed."}
|
|
{"ts": "2026-04-29T10:41:17+00:00", "type": "docs", "status": "accepted", "note": "Documentation hygiene rule accepted: project-facing docs should describe the live machine and current tradeoffs directly, not take victory laps about removed approaches. Historical contrast belongs only in evidence, changelogs, postmortems, or compact rejected-path notes when it changes future decisions."}
|
|
{"ts": "2026-04-29T12:24:23+00:00", "type": "hosted", "status": "accepted", "note": "Repixelizer now owns its Discord guild/role access policy through REPIXELIZER_ACCESS_DISCORD_* and sends it to Heimdall as a caller-owned discord_role_access entitlementPolicy during backend-callback OAuth start. Heimdall evaluates the supplied policy but no longer needs Repixelizer-specific role env."}
|
|
{"ts": "2026-04-29T13:37:17+00:00", "type": "hosted", "status": "accepted", "note": "Hosted Repixelizer now enables Patreon alongside Discord. Patreon access policy is title-only: REPIXELIZER_ACCESS_PATREON_TIER_TITLE=Inner Sanctum is sent to Heimdall as patreon_membership_access during backend-callback OAuth start."}
|
|
{"ts": "2026-04-29T17:20:00+00:00", "type": "implementation", "status": "ok", "note": "Removed the hosted solver loss chart because the explicit solver's loss-like diagnostic is not a useful live objective; solver status now surfaces step, signal, grid alignment, and displacement terms instead."}
|
|
{"ts": "2026-04-29T17:29:40+00:00", "type": "implementation", "status": "ok", "note": "Hosted GUI now emits explicit service logs for queue saturation, job queue/start/completion/failure/cancel events, and wait/run/total seconds so load pressure shows up in journald instead of only in transient SSE state."}
|
|
{"ts": "2026-04-29T21:40:11+00:00", "type": "implementation", "status": "ok", "note": "Fixed GUI failed-response handling so submit/config/queue/cancel errors read the Response body once, preserving the real server error instead of throwing 'body stream already read'."}
|
|
{"ts": "2026-04-29T21:42:58+00:00", "type": "implementation", "status": "ok", "note": "Oversize uploads were hitting nginx 413 before FastAPI and the GUI masked the response with a double-read error; GUI now preflights file size and reads failed responses once so users see the actual upload limit."}
|
|
{"ts": "2026-05-20T12:43:01+00:00", "type": "implementation", "status": "ok", "note": "Repixelizer Heimdall mode now stores a separate httpOnly refresh cookie and calls Heimdall's session-refresh endpoint with app-owned Discord/Patreon entitlement policies before forcing provider OAuth again."}
|
|
{"ts": "2026-05-20T17:56:36+00:00", "type": "deployment", "status": "ok", "note": "Deployed Repixelizer hosted refresh-cookie support to Yggdrasil and verified repixelizer-gui.service active, public health/config checks passing, and installed access.py contains the Heimdall sessions/refresh call."}
|
|
{"ts": "2026-05-24T10:01:54+00:00", "type": "implementation", "status": "ok", "note": "Added GameCult Patreon and Discord links to Repixelizer hosted/app headers using GameCult-site URLs; verified GUI tests and desktop/mobile header link boxes."}
|
|
{"ts": "2026-05-24T10:03:31+00:00", "type": "deployment", "status": "ok", "note": "Deployed Repixelizer header community links to Yggdrasil; service check passed and hosted root HTML contains Patreon and Discord links."}
|
|
{"ts": "2026-05-30T22:47:57+00:00", "type": "implementation", "status": "ok", "note": "Added spritesheet CLI mode: detect separated foreground regions or select requested largest components, call run_pipeline_rgba per crop, pack outputs in source-row order, and write spritesheet diagnostics; fixture auto-detects six sprites."}
|
|
{"ts": "2026-05-30T23:39:55+00:00", "type": "implementation", "status": "ok", "note": "Spritesheet automatic sizing now uses a sheet-level median texel density before reconstruction; on the 12 generated spritesheets in 019e7aa3-4bbb-7302-bafd-273f2aa31e53, worst per-sheet density drift improved from 42.21% to 1.786% across 153 sprites."}
|
|
{"ts": "2026-05-31T01:13:17+00:00", "type": "implementation", "status": "ok", "note": "Spritesheet mode now supports explicit grid ownership via sheet_columns/sheet_rows plus individual sprite export. The 12 generated character sheets were rerun as 3x2 grids, producing 72 exports with no component chopping and worst within-sheet density deviation 0.124%."}
|
|
{"ts": "2026-06-03T02:21:02+00:00", "type": "implementation", "status": "ok", "note": "Added read-only Repixelizer provider advertisement fixture/export naming job/queue/event/runtime/auth witness schemas and reserved state/repixelizer.witness.cc path without moving gui.py queue ownership."}
|
|
{"ts": "2026-06-04T01:55:00+00:00", "type": "implementation", "status": "ok", "note": "Added read-only Repixelizer Eve surface projection: CLI fixture/export, hosted /eve/surface route, retro pixel style tokens, route-owned command descriptors, and Android/Periwinkle lowering comparison without moving gui.py queue ownership."}
|