EcoTermico-2.0.12.jar
Curse Maven Snippet
What's new
2.0.12 — Historical Release Evidence, Regression Gate Hardening e Test Suite Stability — V1
- Inicia a linha 2.0.12 sem reutilizar a release 2.0.11 já promovida.
- Estágio 1 corrige o gate histórico 2.0.9 para usar evidência congelada em vez do README/metadata da release atual.
- Estágio 2 cria
ReleaseEvidenceAssertionse separa explicitamenteCURRENT_RELEASEdeHISTORICAL_RELEASE. - Estágio 3 audita os gates históricos 2.0.x, classifica-os em
CURRENT_VERSION_GATE,HISTORICAL_EVIDENCE_GATE,STRUCTURAL_BASELINE_GATE,RUNTIME_UNCHANGED_GATEeAPI_COMPATIBILITY_GATE. - Estágio 4 sela 57 artefatos históricos de 2.0.9–2.0.11 por SHA-256 canônico, impede sobrescrita/regeneração silenciosa de manifests/baselines e cria uma baseline 2.0.12 nova gerada diretamente do estado atual, sem copiar a baseline 2.0.11.
- Estágio 5 blinda o mínimo temporal:
TOTAL_CYCLE=1permanece apenas como entrada legada de migração/rejeição,2/3/20/480permanecem operacionais,SPLIT_DAY_NIGHT 1+1continua válido, e gates históricos não podem voltar a tratar 1 minuto como configuração válida; cenários antigos equivalentes a 20x passam a testar a matemática diretamente. - Estágio 6 adiciona gate cumulativo da arquitetura temporal: preserva
gameTimecomo relógio técnico/monotônico edayTimecomo calendário/solar, selaSeasonCalendar → dayTime, mantémTemperatureAPI.API_VERSION = 1,GameTimeSnapshot,TemporalDiscontinuityAPIeTemporalForwardAdvanceAPI, exige um único writer absoluto server-side, valida avanço sazonal estritamente futuro e impede que avanço monotônico autorizado gere nova epoch,observedDayTimeRewindsouEXTERNAL_MOD_TIME_CHANGE;/time sete/time addmantêm contratos distintos. - Estágio 7 adiciona gate cumulativo de comandos, cliente, ecologia e compatibilidade: preserva
/ecotermico seasoncomo consulta e as 12 combinaçõesspring|summer|autumn|winter × early|mid|end, proíbe/eco,none,backeprevious, sela a cadeiaThermalCommands → SeasonTimeAdvanceService → SeasonForwardTargetMath → TemporalForwardAdvanceAPI, mantém rebase visual monotônico/revision ordering/snapshot autoritativo, exige reconciliação sazonal limitada a estado já carregado e preserva WildVitals, Sidereon e os consumidores API required/required-v1-legacy/optional. - Estágio 8 fecha a release 2.0.12 com gate final de evidência corrente/histórica, baseline runtime 2.0.11 ↔ 2.0.12 byte-idêntica, manifest full-source e propriedade estrutural
targetDayTime > currentDayTime; o fechamento definitivo exige a suíte automatizada completa com0 failed. - Fechamento 2.0.12 preserva API V1, runtime temporal, WildVitals, Sidereon, ausência de force-load e todas as features existentes; nenhuma remoção de feature ou mudança de
src/mainfoi necessária. - A comparação de versões passa a ter contrato semântico exato:
2.0.1não corresponde a2.0.10,2.0.11ou2.0.12, e2.0.9não corresponde a2.0.90. - Remove verificações frágeis por substring de
mod_versionnos gates 2.0.4 e nos validadores Python históricos auditados; o novo gate de Stage 3 impede sua reintrodução. - Releases históricas são comprovadas por baseline, manifest, hashes, changelog histórico e contratos congelados da própria release; nunca precisam continuar ativas em
gradle.propertiesou README. - Contratos
runtime unchangedcomparam baseline congelada da release anterior com baseline congelada da release que declarou não alterar runtime; não comparam baseline antiga contrasrc/mainfuturo. - Migra os gates de evidência/runtime-unchanged 2.0.5–2.0.11 para o contrato histórico canônico, preservando as regras específicas de cada gate.
src/mainpermanece byte-idêntico à 2.0.11 durante este hardening de testes/gates.- Sincroniza as regiões
CURRENT_RELEASEdos 13 living documents para 2.0.12 sem reclassificar conteúdo histórico como release ativa. - Versionamento continua exclusivamente manual; nenhum script de bump/set/promote version é introduzido.
2.0.11 — Temporal Test Suite Regression Hotfix — V1
- Promove manualmente EcoTermico 2.0.10 → EcoTermico 2.0.11; não reutiliza 2.0.10 e não regride para versões anteriores.
- Corrige as 9 falhas observadas no primeiro
./gradlew.bat clean test --stacktraceexecutado integralmente após a promoção 2.0.10:1392 tests completed, 9 failed. - Atualiza testes antigos de
TOTAL_CYCLEque ainda tentavam executar o valor legado de 1 minuto; testes operacionais passam a usar o mínimo vigente de 2 minutos, enquanto o caso1 → 2continua coberto exclusivamente como migração/rejeição. - Mantém matrizes históricas de apresentação que usam taxa 20x sem tratá-las como configuração
TOTAL_CYCLE=1; o gate de duração configurável usa explicitamenteCONFIGURABLE_CYCLE_MINUTES = {2, 5, 10, 20}. - Corrige o gate de integrações opcionais para reconhecer somente declarações Gradle reais no início da linha, evitando falso positivo com nomes de pacote/classe como
api.integration.EcoTermicoSidereonAuthorityPolicyTest. - Corrige os gates históricos 2.0.1/2.0.2 para comparar baseline congelada → baseline final da própria release, em vez de comparar o runtime 2.0.11 contra hashes históricos.
- Preserva o hash histórico do
Baseline201StructuralContractTestdentro da baseline 2.0.1 sem exigir que o arquivo de teste atual permaneça byte-idêntico para sempre. - Corrige o gate 2.0.3 de regressão de versão: deixa de usar substring
mod_version=2.0.1, que interpretava incorretamente2.0.10/2.0.11, e passa a usar correspondência de linha exata. - Preserva integralmente o limite mínimo de 2 minutos,
/ecotermico season, avanço estritamente para frente,TemporalForwardAdvanceAPI,GameTimeSnapshot,TemporalDiscontinuityAPI,TemperatureAPI.API_VERSION = 1, WildVitals e Sidereon. src/mainpermanece byte-idêntico à 2.0.10; API pública, config keys, registry/network IDs, SavedData, protocolo e comportamento de gameplay não mudam.- Mantém Minecraft 1.21.1, NeoForge 21.1.248 e Java 21.
- Versionamento permanece manual; nenhum
set-version,bump-versionoupromote-versionfoi criado.
2.0.10 — Minimum 2-Minute Day Cycle, Forward-Only Season Administration e Temporal Compatibility API Hardening — V1
- Promove manualmente EcoTermico 2.0.9 → EcoTermico 2.0.10; 2.0.9 e todas as baselines anteriores permanecem preservadas somente como histórico/evidência.
- Define
TOTAL_CYCLEcom mínimo operacional canônico de 2 minutos, mantendo o padrão de 20 minutos e a faixa máxima de 480 minutos. - Mantém
SPLIT_DAY_NIGHTcom mínimo individual de 1 minuto por fase, de modo que1 + 1 = 2 minutoscontinue válido como menor ciclo completo. - Migra uma única vez o valor legado
totalCycleMinutes=1para2, preservando a intenção administrativa sem converter indevidamente para 20;0e valores negativos nunca são durações operacionais válidas. - Adiciona
/ecotermico season [spring|summer|autumn|winter] [early|mid|end], mantendo/ecotermico seasonsem argumentos como consulta e/ecotermicocomo única raiz administrativa. - As 12 combinações sazonais usam a matemática proporcional canônica de
SeasonCalendarMath.stageForDay(...)e avançam para o primeiro dia do estágio solicitado. - Toda mudança administrativa de estação é somente para frente: o alvo satisfaz obrigatoriamente
targetDayTime > currentDayTime; alvos iguais ou passados são resolvidos no próximo ano climático, nunca por rewind. - Preserva exatamente
timeOfDayTicks, alterando apenas a quantidade de dias necessária para alcançar o destino futuro. - Centraliza a operação em
SeasonTimeAdvanceServicee mantémTemporalForwardAdvanceAPIcomo único writer absoluto server-side autorizado para avanço monotônico normal. - Avanço monotônico autorizado não escreve
gameTime, não trocaTOTAL_CYCLE/SPLIT_DAY_NIGHT, não alteradayTimeFraction/dayTimePerTick, não reseta rate controller, não cria novatemporalEpoche não é classificado comoEXTERNAL_MOD_TIME_CHANGE. - Saltos administrativos grandes permitem rebase visual para frente no cliente sem interpolar por dezenas/centenas de dias, preservando o
ClientMonotonicPresentationGuard, proteção contra micro-rewind/zero-crossing e ordering de snapshots. - Reutiliza os mecanismos existentes de
SeasonSyncData, foliage, phenology, plant dormancy, seasonal snow, precipitation, thermal season modifier e chunk seasonal reconciliation; nenhum chunk é force-loaded e não existe varredura global síncrona. - Adiciona a capability pública
time.forward_advance, preservandotime.dual_clocks,time.day_rateeseason.calendar. - Mantém
GameTimeSnapshotcomo contrato temporal completo, preservaTemporalDiscontinuityAPIe mantémTemperatureAPI.API_VERSION = 1porque a evolução é aditiva. - Preserva compatibilidade com WildVitals, Sidereon, consumidores obrigatórios/ opcionais e consumidor legado API V1; Sidereon não recebe autoridade sobre
dayTime,gameTime, estação física ou clima físico. - Não cria nova fonte temporal, não recria
/eco, não remove features e não introduz scripts de versionamento. - Gate final obrigatório:
temporalRelease210Stage8valida a cadeiaSeasonForwardTargetMath → TemporalForwardAdvancePolicy → TemporalForwardAdvanceAPIe uma matriz final de 50.400 destinos; remover a propriedade de avanço estrito quebra o release gate. - Mantém Minecraft 1.21.1, NeoForge 21.1.248 e Java 21.
- Nova linha mínima de manutenção: 2.0.10 → 2.0.11 → 2.0.12 → ....
2.0.9 — Gradle Configuration Cache Temporal Release Gate Hotfix — V1
- Promove manualmente EcoTermico 2.0.8 → EcoTermico 2.0.9; não reutiliza 2.0.8 e não regride nenhuma feature, API, protocolo, persistência ou hardening temporal.
- Confirma pelo resultado real do usuário que
clean testda 2.0.8 passa e que a falhaNoSuchFileException: mainargs.txtfoi encerrada. - Corrige a falha residual de
clean buildemtemporalReleaseGatecom Gradle 9.2.1/configuration cache: o gate não chama maisfile(...)dentro dedoLast. - Move a resolução dos caminhos obrigatórios para a fase de configuração, cria
temporalReleaseRequiredGateSourcescomoFileCollectione registra a coleção eminputs.files(...)com path sensitivity relativa. - A ação de execução usa somente
task.inputs.files.filespara validar ausência de fontes obrigatórias, sem capturarProject,Project.file(),projectDir,rootProjectou o objeto do script Gradle. - Preserva a arquitetura 2.0.8 de um único executor JUnit real, a task padrão
testpreparada pelo ModDevGradle/NeoForge; os aliases temporais históricos continuam desabilitados e dependentes detest. - Adiciona
temporalCompatibility209eTemporalConfigurationCache209ContractTestao gate cumulativo, mantendo todos os gates 2.0.0–2.0.8. - Mantém
org.gradle.parallel=trueeorg.gradle.configuration-cache=true; a correção não mascara o problema desligando recursos globais do Gradle. - Mantém
src/mainbyte-idêntico à baseline final 2.0.8; nenhuma regra de gameplay, relógio, epoch, revision, fingerprint, snapshot, atomic commit, REBASE/HUD, zero-crossing, sign-flip ou Monotonic Presentation Guard foi alterada. - Mantém Minecraft 1.21.1, NeoForge 21.1.248 e Java 21.
- Preserva versionamento exclusivamente manual; nenhum
set-version,bump-versionou promoção automática foi criado. - Nova linha mínima de manutenção: 2.0.9 → 2.0.10 → 2.0.11 → ....
2.0.8 — Canonical ModDevGradle JUnit Executor Hotfix — V1
- Promove manualmente EcoTermico 2.0.7 → EcoTermico 2.0.8; não reutiliza 2.0.7 e não regride nenhuma feature, API, protocolo, persistência ou hardening temporal.
- Corrige a falha ainda reproduzida no
clean builddo Windows/Gradle 9.2.1 emtemporalCompatibility203, onde um executor temporal customizado ainda podia falhar antes do JUnit comjava.nio.file.NoSuchFileException: mainargs.txt. - Substitui a estratégia de "vários executores
Testserializados" por uma autoridade única de execução JUnit: a task padrãotest, que é a task preparada peloneoForge.unitTest/ModDevGradle para o bootstrap de Minecraft/NeoForge. - Preserva os nomes históricos
temporalMatrix200atétemporalCompatibility207como aliases/gates de compatibilidade. Eles continuam registrados, mas suas açõesTestficam desabilitadas e cada alias depende detest; assim, qualquer gate temporal ainda executa a suíte JUnit, porém o processo JUnit é iniciado uma única vez. - Adiciona
temporalCompatibility208aotemporalReleaseGatee mantém todos os gates cumulativos 2.0.0–2.0.7. - Preserva
org.gradle.parallel=trueeorg.gradle.configuration-cache=true; não é necessário desligar o paralelismo global nem a configuration cache. - Mantém o contrato 2.0.7 (
TemporalTestExecutionLock,maxParallelForks=1,mustRunAfter(test)) como proteção histórica, embora os aliases não iniciem mais executores próprios. - Mantém
src/mainbyte-idêntico à baseline final 2.0.7; nenhuma regra de gameplay, clock, epoch, revision, fingerprint, snapshot, atomic commit, REBASE/HUD, zero-crossing, sign-flip ou Monotonic Presentation Guard foi alterada. - Mantém Minecraft 1.21.1, NeoForge 21.1.248 e Java 21.
- Preserva versionamento exclusivamente manual; nenhum
set-version,bump-versionou promoção automática foi criado. - Nova linha mínima de manutenção: 2.0.8 → 2.0.9 → 2.0.10 → ....
2.0.7 — Windows Gradle Temporal Test Executor Isolation Hotfix — V1
- Promove manualmente EcoTermico 2.0.6 → EcoTermico 2.0.7; não reutiliza 2.0.6 e não regride nenhuma feature, API, protocolo, persistência ou hardening temporal.
- Corrige o
clean buildno Windows/Gradle 9.2.1 em que as matrizes temporais customizadas eram lançadas simultaneamente comorg.gradle.parallel=truee os executores falhavam antes dos testes comjava.nio.file.NoSuchFileException: mainargs.txt. - Mantém o paralelismo global do Gradle habilitado e serializa somente as tasks temporais registradas por
registerTemporalMatrixTask, através de umBuildServicecompartilhado commaxParallelUsages=1. - Define
maxParallelForks=1em cada task temporal para impedir forks concorrentes dentro da mesma matriz, sem afetar a tasktestnormal nem outras tasks do projeto. - Preserva o working directory atual das matrizes; contratos históricos que leem arquivos do projeto não são deslocados para diretórios temporários.
- Mantém
temporalMatrix200,temporalMatrix201Residual,temporalMatrix202MicroRewind,temporalCompatibility203, todos os gates 2.0.4,temporalCompatibility205etemporalCompatibility206; adicionatemporalCompatibility207aotemporalReleaseGate. - Mantém
org.gradle.parallel=true; a correção não reduz o paralelismo do restante do build. - Mantém
src/mainbyte-idêntico à baseline final 2.0.6; nenhuma regra de gameplay, clock, epoch, revision, fingerprint, snapshot, atomic commit, REBASE/HUD ou Monotonic Presentation Guard foi alterada. - Preserva versionamento exclusivamente manual; nenhum
set-version,bump-versionou promoção automática foi criado. - Nova linha mínima de manutenção: 2.0.7 → 2.0.8 → 2.0.9 → ....
2.0.6 — Temporal Residual Test Contract Hotfix — V1
- Promove manualmente EcoTermico 2.0.5 → EcoTermico 2.0.6; não reutiliza 2.0.5 e não regride nenhuma feature, API, protocolo, persistência ou hardening temporal.
- Corrige as 3 falhas residuais observadas após
clean testda 2.0.5, mantendosrc/mainbyte-idêntico às baselines finais 2.0.4/2.0.5. - Torna
TemporalTestInfrastructure205ContractTesthistórico/forward-compatible: ele continua provando a existência da evidência 2.0.5 sem exigir que releases futuras permaneçam exatamente em 2.0.5 e passa a validar a redação real23 falhas de teste. - Corrige
ClientTemporalSnapshotTrackerTestpara modelar corretamente a identidade autoritativaepoch → gameTime → revision: o snapshot subsequente usarevision=2, preservando a regra de revision estritamente crescente dentro do epoch. - Corrige
TemporalEpochAuthorityContractTestpara distinguir tick de housekeeping de ticker temporal.LevelTickEvent.Postpermanece permitido exclusivamente para expirar/remover autorização single-use; o contrato proíbe nesse bloconewState,authorizeInternal,SEQUENCE.next,PacketDistributore qualquer writer de clocks. - Preserva
ServerLevel#setDayTime(long)observado emHEAD,beforeAbsoluteDayTimeWrite, rewind cumulativo,/time set,/time add, sleep skip, autorização consumível, epoch/revision/fingerprint, atomic commit, REBASE/HUD, zero-crossing, sign-flip stateful e Monotonic Presentation Guard. - Mantém
src/mainsem alterações; esta release corrige somente testes, gates, documentação, versão e baseline de release. - Adiciona
temporalCompatibility206aotemporalReleaseGatesem remover nenhuma matriz/gate 2.0.0–2.0.5. - Versionamento permanece manual; nenhum script de
set-version,bump-versionou promoção automática foi criado. - Nova linha mínima de manutenção: 2.0.6 → 2.0.7 → 2.0.8 → ....
2.0.5 — Temporal Test Suite & Mixin JUnit Infrastructure Hotfix — V1
- Promove manualmente EcoTermico 2.0.4 → EcoTermico 2.0.5; não reutiliza 2.0.4 e não regride nenhuma feature, API, protocolo, persistência ou hardening temporal.
- Corrige as 23 falhas de teste observadas após
clean testda 2.0.4, mantendosrc/main byte-idêntico à baseline 2.0.4. - Corrige contratos de fonte que assumiam o working directory do JUnit:
TemporalDeprecation204Stage5SourceContractTesteTemporalEpochAuthorityContractTestpassam a localizar explicitamente a raiz do projeto antes de ler arquivos. - Remove carregamento direto de classes
@Mixinpelos contratos JUnit de callback. Os testes agora separam corretamente owner/método mapped por reflexão de assinatura do callback por contrato de fonte, evitandoIllegalClassLoadError/NoClassDefFoundErrorsem enfraquecer a validação. - Atualiza o contrato residual 2.0.1 de sign-flip para a política stateful vigente (
SMALL_SIGN_FLIP_JITTER+advanceSignFlipPolicyState) em vez de exigir o helper histórico removidostabilizeNearZeroSignFlip. - Liga
TemporalHardening201Stage6StructuralContractTestde fato àtemporalMatrix201Residuale à lista obrigatória dotemporalReleaseGate. - Alinha
ClientTemporalSnapshotTrackerTestao ordering autoritativo atual: o primeiro snapshot éFIRST;localArrivalGameTimenão volta a ser relógio/estimador de latência e não reintroduzclientGameTime - serverGameTime. - Alinha o contrato de lifecycle à arquitetura centralizada em
ClientTemporalLifecycleCoordinator, que continua resetando snapshot, epoch, revision, rate, local tick clock e correção visual. - Alinha o contrato de
/time addao comportamento vigente: autorização consumível single-use preservando continuidade e sem epoch artificial, enquanto/time setcontinua autorizando a descontinuidade/epoch apropriada. - Preserva integralmente
LevelDayTimeDiscontinuityMixinemServerLevel#setDayTime(long)HEAD,beforeAbsoluteDayTimeWrite, rewind cumulativo, autorização consumível, epoch/revision/fingerprint, atomic commit, REBASE/HUD, zero-crossing, sign-flip stateful e Monotonic Presentation Guard. - Preserva as baselines 2.0.0–2.0.4 como histórico/evidência e adiciona a baseline estrutural 2.0.5.
- Nova linha mínima de manutenção: 2.0.5 → 2.0.6 → 2.0.7 → ....
- Versionamento permanece exclusivamente manual; nenhum script de promoção automática foi criado.
2.0.4 — ServerLevel DayTime Mixin Compatibility, JUnit Bootstrap Hardening e Temporal Test API Cleanup — V1
Estágio 7/7 — EcoTermico 2.0.4, Changelog e Nova Baseline
- Promove manualmente EcoTermico 2.0.3 → EcoTermico 2.0.4, sem reutilizar 2.0.3 e sem regressão para 2.0.2, 2.0.1, 2.0.0 ou 1.x.
- Corrige o target inválido de
LevelDayTimeDiscontinuityMixin: o observer deixa de mirarLevel#setDayTimee passa a mirar diretamenteServerLevel#setDayTime(long). - Preserva
TemporalEpochStateSync.beforeAbsoluteDayTimeWrite(level, attemptedDayTime)emHEAD, antes do write nativo, mantendo observer ≠ writer: o mixin não cancela o setter, não alteraattemptedDayTime, não escrevedayTime,gameTimeoudayTimePerTicke não cria segundo clock. - Preserva o rewind externo cumulativo de
ExternalTemporalRewindTracker, a distinção entre mudança autorizada e rewind externo inesperado e o avanço de epoch somente conforme a arquitetura temporal existente. - Preserva
/time set,/time add, sleep skip, autorizações consumíveis single-use, REBASE/HUD,STALE_EPOCH,OUT_OF_ORDER, epoch, revision, fingerprint, snapshot e atomic commit. - Audita todos os targets temporais críticos de Mixin, incluindo owner, método, descriptor, lado client/server, remap e assinatura dos callbacks para
ServerLevel,MinecraftServer,ClientLevele handler NeoForge. - Mantém
"required": truee"defaultRequire": 1; não introduzrequired=false,require=0, mixin opcional ou refmap artificial para mascarar target inválido. - Adiciona novo gate de bootstrap de Mixin e hardening por contratos, fazendo o gate falhar antes da release se reaparecer target/descriptor inválido, segundo writer, cancelamento do setter ou enfraquecimento da política de injeção.
- Migra os testes temporais ativos para as APIs atuais:
ClientTemporalReconciliation,validateReconciliation(...),tracker.classify(snapshot),TemporalReconciliationContexteTemporalSnapshotAge. - Preserva os shims deprecated necessários para compatibilidade binária/integração; testes de legacy API continuam deliberados e usam apenas
@SuppressWarnings("deprecation")localizado. - Remove os 25 warnings de APIs temporais deprecated dos testes ativos, sem suppress global e sem reintroduzir
clientGameTime - serverGameTime. - Preserva integralmente as matrizes e o hardening temporal 2.0.0–2.0.3, incluindo Physical Time × Presentation Time, zero-crossing hardening, sign-flip stateful e Monotonic Presentation Guard.
- Preserva o cenário 5 min / rate 4 / server 10 TPS / client 20 TPS / delay 0 com
visualRegressionCount = 0. - Cria a baseline final EcoTermico 2.0.4 em
docs/BASELINE_SRC_MAIN_SHA256_2.0.4_FINAL.txt,docs/FILE_MANIFEST_SHA256_2.0.4_FINAL.txt,docs/PROTECTED_CONTRACTS_SHA256_2.0.4_FINAL.txt,docs/BASELINE_STRUCTURAL_SHA256_2.0.4_FINAL.txtesrc/test/resources/baseline/2.0.4/. - As baselines 2.0.0, 2.0.1, 2.0.2 e 2.0.3 permanecem somente como histórico/evidência e não são reutilizadas como identidade da release atual.
- O
temporalReleaseGatecontinua cumulativo e passa a incluirtemporalRelease204Stage7, sem removertemporalMatrix200,temporalMatrix201Residual,temporalMatrix202MicroRewind,temporalCompatibility203ou os gates 2.0.4 dos Estágios 1–6. - Versionamento permanece exclusivamente manual; nenhum
set-version,bump-version,promote-versionou equivalente foi criado. - Nova linha mínima: 2.0.4 → 2.0.5 → 2.0.6 → ....
Gate de promoção revalidado antes da mudança de versão: Estágio 4 81/81, Estágio 5 58/58, Estágio 6 53/53, todos com ERRORS=0; contratos isolados 6/6, 11/11 e 21/21.
Progresso: 7/7 — concluído e promovido.
[Histórico pré-release] EcoTermico 2.0.4 — Candidato, Estágio 5/7 — Limpeza de APIs Temporais Deprecated — V1
- Naquele estágio pré-release, a release vigente ainda era 2.0.3 e a promoção para 2.0.4 permanecia reservada ao estágio final.
- Migra testes temporais ativos de
validateResolved(...)paraClientTemporalReconciliation + validateReconciliation(...). - Migra classificação normal para
tracker.classify(snapshot)e remove dependência delocalArrivalGameTimedos testes correntes. - Substitui usos normais de
packetAgeTicks(...)porTemporalReconciliationContext/TemporalSnapshotAge, sem reintroduzirclientGameTime - serverGameTime. - Migra projeções normais do overload deprecated
projectAuthoritativeSnapshot(long, snapshot)para o fluxo atual de contexto/metadados autoritativos. - Preserva os shims deprecated no código principal para compatibilidade binária e integração.
- Mantém chamadas deprecated apenas em testes explicitamente de compatibilidade legacy, com
@SuppressWarnings("deprecation")localizado no método; não existe supressão global. - Adiciona
temporalDeprecation204Stage5aotemporalReleaseGate, preservando todos os gates anteriores. src/mainpermanece byte-idêntico ao candidato do Estágio 4; nenhuma regra de gameplay, epoch, revision, fingerprint, snapshot, atomic commit ou mixin temporal foi alterada neste estágio.- O conjunto dos sete testes migrados compila com Java 21 e
-Xlint:deprecationsem warnings de depreciação.
Progresso do candidato 2.0.4: 5/7.
2.0.3 — NeoForge 1.21.1 Compile Compatibility Hotfix — V1
- Promove manualmente EcoTermico 2.0.2 → EcoTermico 2.0.3; não reutiliza 2.0.2 e não regride versão.
- Corrige falha de compilação em
TemporalSnapshotRevisionStateSync:GameRules.ADVANCE_TIMEnão existe na API usada pelo Minecraft 1.21.1 / NeoForge 21.1.248. - Usa a gamerule booleana nativa
GameRules.RULE_DAYLIGHTporgetBoolean(...), preservando exatamente o estadodoDaylightCycleincluído no fingerprint temporal. - Não altera
gameTime,dayTime,dayTimeFraction,dayTimePerTick, epoch, revision, fingerprint ordering, commit atômico ou a arquitetura Physical Time × Presentation Time. - Preserva integralmente monotonic presentation, zero-crossing hardening, sign-flip stateful, matrizes 2.0.0/2.0.1/2.0.2 e
temporalReleaseGate. - Nenhuma feature, API pública, persistência, fenologia, ecologia,
TemperatureAPI, WildVitals ou integração autoritativa foi removida. - Linha mínima futura: 2.0.3 → 2.0.4 → 2.0.5 → ....
- Versionamento permanece manual; nenhum script automático de promoção foi criado.
2.0.2 — Monotonic Presentation Time, Zero-Crossing Hardening e Temporal Gate Expansion — V1
Estágio 7/7 — EcoTermico 2.0.2, Changelog e Nova Baseline
- Promove manualmente EcoTermico 2.0.1 → EcoTermico 2.0.2, sem reutilizar 2.0.1, sem regressão para 2.0.0 e sem retorno à linha 1.x.
- Corrige o micro-recuo visual próximo de zero sem alterar o relógio físico, gameplay,
TemperatureAPI, fenologia, ecologia server-side ou integrações autoritativas. - Refatora
SIGN_FLIP_JITTERpara uma política stateful que distingueZERO_CROSSING_NORMAL,SMALL_SIGN_FLIP_JITTER,REAL_DIRECTION_CHANGE,AUTHORIZED_BACKWARD_JUMPeREBASE. - Adiciona dead-zone estável com histerese ao redor de zero, impedindo efeito mola e oscilações como
-0.5 → +0.4 → -0.3 → +0.2de produzirem movimento visual para trás. - Garante apresentação monotônica em sincronização normal: em timeline física forward,
presentation[n+1] >= presentation[n]. - Preserva a convergência de
correctionDebtem budget finito; clamps de apresentação não escondem dívida válida, não introduzem snap e não substituem a lógica de sincronização. - Adiciona
ClientMonotonicPresentationGuardusando representação contínua/carry-aware, sem comparar ingenuamente valores reduzidos módulo24000. - Preserva separados
presentationCelestialTimeepresentationAbsoluteDayTime; REBASE celestial não altera indevidamente o dia absoluto do HUD. - Corrige especificamente a regressão ciclo 5 min / rate 4 / server 10 TPS / client 20 TPS / delay 0, agora coberta por matriz automatizada com
visualRegressionCount = 0. - Amplia a matriz 2.0.2 para 360 combinações-base de ciclos 1/2/5/10/20 min, server TPS 20/18/15/12/10/5, client TPS 20/15/10 e delays 0/1/2/5 ticks, além de jitter, reorder, freeze curto, rate change, dívidas próximas de zero e cruzamentos de sinal.
- Corrige o Gate Temporal Definitivo: o
temporalReleaseGateagora executa obrigatoriamente a matriz temporal completa 2.0.0, a matriz residual 2.0.1 e a matriz de micro-recuo 2.0.2, em vez de apenas verificar a existência de fontes antigas. - Preserva integralmente o hardening 2.0.1: rewind cumulativo, autorizações consumíveis, sleep skip,
/time add, REBASE/HUD, epoch/revision/fingerprint,STALE_EPOCH, ordering, jitter/reorder handling e commit atômico. - Preserva a arquitetura Physical Time × Presentation Time, mantendo renderer/HUD read-only e impedindo segundo writer server-side, uso de
clientGameTime - serverGameTimecomo latência e uso de TPS estimado para modificar tempo físico. - Cria
docs/BASELINE_SRC_MAIN_SHA256_2.0.2_FINAL.txt,docs/FILE_MANIFEST_SHA256_2.0.2_FINAL.txt,docs/PROTECTED_CONTRACTS_SHA256_2.0.2_FINAL.txtesrc/test/resources/baseline/2.0.2/como nova baseline mínima. - As baselines 2.0.0 e 2.0.1 permanecem imutáveis como histórico/evidência de não regressão.
- Nova linha mínima de manutenção: 2.0.2 → 2.0.3 → 2.0.4 → ....
- Versionamento permanece exclusivamente manual; nenhum
set-version,bump-version,promote-versionou equivalente foi criado.
Gate de promoção revalidado antes da mudança de versão: Stage 5 53/53, ERRORS=0, runner comportamental 5/5; Stage 6 54/54, ERRORS=0; cenário obrigatório com visualRegressionCount = 0.
Progresso: 7/7 — concluído e promovido.
2.0.1 — Hardening Temporal Pós-2.0.0, Rewinds Externos e Coerência de Apresentação — V1
Estágio 8/8 — EcoTermico 2.0.1, Changelog e Nova Baseline
- Promove manualmente EcoTermico 2.0.0 → EcoTermico 2.0.1, sem reutilizar 2.0.0 e sem regressão para a linha 1.x.
- Consolida a detecção cumulativa de rewinds externos: pequenos rewinds repetidos acumulam evidência, enquanto ruído isolado continua tolerado.
- Impede tempestade de epochs para o mesmo burst por latch de incidente, liberado por recuperação, autorização/lifecycle ou inatividade real.
- Integra autorizações consumíveis com razão, epoch e validade curta para
/time set,/time add, sleep, rebuild, reset eTemporalDiscontinuityAPI.authorize(...), evitando falsos positivos e dupla epoch. - Adiciona convergência visual segura e limitada após sleep skip, grandes
/time adde mudanças administrativas para frente, sem snap, overshoot, efeito mola ou céu para trás. - Corrige divergência física × visual prolongada com budgets finitos de correção e mantém
correctionDebt → 0dentro de janela limitada. - Separa fase celestial de apresentação de dia absoluto de apresentação: REBASE pode remover ciclos completos da fase sem fazer o HUD perder o número absoluto do dia.
- Corrige a coerência de relógio, número do dia, Sol, Lua, estrelas e sky angle durante REBASE.
- Adiciona matrizes automatizadas para rewinds cumulativos, forward jumps e REBASE/HUD, além do Gate Temporal Definitivo 2.0.1.
- Mantém
STALE_EPOCH, ordering por epoch/revision/fingerprint, commit atômico e rejeição de snapshots antigos. - Preserva integralmente as features e contratos públicos da 2.0.0, incluindo protocolo de rede
8, API V1, persistência e ownership único dedayTimePerTick. - Não reintroduz segundo writer temporal server-side, renderer escrevendo clocks, estimativa
clientGameTime - serverGameTimeou TPS estimado modificando tempo físico. - Cria
docs/BASELINE_SRC_MAIN_SHA256_2.0.1_FINAL.txtesrc/test/resources/baseline/2.0.1/como nova baseline mínima para futuras hotfixes 2.0.2+. - Versionamento permanece exclusivamente manual; nenhum
set-version,bump-versionou script de promoção automática foi criado.
Progresso: 8/8 — concluído.
2.0.0 — Arquitetura Temporal Definitiva, Sincronização Autoritativa e Estabilidade de Ciclos Curtos — V1
Estágio 10/10 — EcoTermico 2.0.0, Changelog e Nova Base Temporal
- Promove oficialmente e manualmente EcoTermico 1.2.41 → EcoTermico 2.0.0 após os gates temporais definitivos demonstrarem
ERRORS=0; não cria 1.2.42, 1.3.0 ou 1.9.x para esta consolidação. - Encerra a arquitetura temporal 1.x e estabelece EcoTermico 2.0.0 como nova base mínima oficial. A versão 2.0.0 não deve ser reutilizada para correções posteriores: hotfixes compatíveis avançam para
2.0.1,2.0.2, ...; evoluções maiores seguem2.1.0,2.2.0, ...; nenhuma build nova deve voltar para 1.x. - Mantém autoridade temporal exclusiva server-side:
DayNightCycleManagercontinua como único writer interno da rate física e o servidor continua sem correções destrutivas dedayTimea cada tick. Snapshot e renderer nunca se tornam writers do servidor. - Corrige definitivamente a divergência entre ticks independentes de servidor e cliente. A simulação cliente passa a reproduzir
gameTime,dayTime,dayTimeFractionedayTimePerTickcom a mesma semântica de carry nativa usada peloClientLevel. - Modela a sincronização periódica na cadência real do servidor, aproximadamente 1 snapshot a cada 20 server ticks, separando server temporal advancement, sync interval, network delivery e client advancement; sincronizações extraordinárias legítimas continuam suportadas por revision/epoch.
- Remove o snap visual causado pela antiga política
abs(rawDebt) > 1200 → none. Dívidas grandes agora usam políticas explícitasNORMAL_CORRECTION,ACCELERATED_CORRECTION,REBASEe, somente para descontinuidade autorizada,AUTHORIZED_JUMP. - Consolida a nova política adaptativa de reconciliação visual, considerando dívida, rate, tempo local e histórico recente, com convergência matemática sem overshoot, efeito mola, oscilação ou retorno visual.
- Confirma estabilidade com TPS reduzido 20/18/15/12/10/5, inclusive períodos prolongados a 15/10/5 TPS, sem acumular dívida ilimitada e sem usar TPS estimado para alterar o tempo físico.
- Confirma estabilidade durante stalls/freeze de servidor e cliente de 1/2/3/5/10 s, inclusive congelamentos em momentos diferentes, sem snap para trás na retomada.
- Mantém projeção de trânsito de rede em zero por não existir fonte segura de one-way latency. Latência, jitter, pacote atrasado, reorder, burst e perda lógica de update intermediário são absorvidos pela reconciliação/ordering, sem reintroduzir
clientGameTime - serverGameTimecomo estimador. - Consolida estabilidade dos ciclos acelerados de 1, 2, 5, 10 e 20 minutos nos modos
TOTAL_CYCLEeSPLIT_DAY_NIGHT, incluindo mudanças rápidas de rate20→1,20→0.5,10→1,4→1,2→20e1→20. - Corrige descontinuidades legítimas via
/time set,minecraft:time sete comandos aninhadosexecute ... run time set, garantindo nova epoch antes da sincronização quando a linha temporal é alterada para trás./time adde sleep skip preservam continuidade monotônica quando aplicável. - Adiciona interoperabilidade explícita para mods externos por
TemporalDiscontinuityAPI, além de detecção defensiva de regressão absoluta significativa emLevel#setDayTime; pequenas diferenças não são promovidas indevidamente a nova epoch. - Unifica a apresentação temporal por
ClientPresentationTimeSource, mantendo Sol, Lua, estrelas, sky angle, sky darkening, atmosfera visual, HUD e instrumentos coerentes durante reconciliação. - Fecha a separação definitiva entre Physical Time e Visual/Presentation Time.
TemperatureAPI, WildVitals, fenologia, ecologia, gameplay e demais consumidores autoritativos permanecem no relógio físico; presentation time é client-side e read-only. - Preserva a API autoritativa e os contratos públicos usados por WildVitals, Sidereon e integrações futuras; adiciona a API pública de descontinuidade sem remover contratos da 1.2.41.
doDaylightCycle=falsepassa a usar política explícitaPAUSED_HOLD: a apresentação congela coerentemente, a dívida não fica presa nem cresce indefinidamente e a retomada converte a âncora em correção limitada/rebase sem backlog visual gigante.- Amplia os testes de clocks independentes e institui gates definitivos para TPS baixo, freezes, ciclos acelerados, latência, jitter, reorder, burst, lifecycle, comandos e snapshots atrasados.
- Gate de promoção revalidado antes da mudança de versão: Stage 9 38/38, matriz independente 46/46 + 19/19 Java 21 e runner definitivo 17/17, todos com
ERRORS=0. - O invariante principal da 2.0.0 está coberto diretamente: em sincronizações normais não administrativas, rendered celestial time permanece visualmente contínuo e não regressivo, mesmo quando o clock físico do cliente é realinhado à autoridade server-side.
- Nenhuma feature da 1.2.41 foi removida. O runtime final preserva a baseline funcional e adiciona apenas os deltas temporais explicitamente auditados dos Estágios 4–8; o Estágio 9 é exclusivamente de testes/gates.
- Cria
docs/BASELINE_SRC_MAIN_SHA256_2.0.0_FINAL.txte baseline estruturalsrc/test/resources/baseline/2.0.0/como identidade da nova linha mínima oficial. - Mantém Minecraft 1.21.1, NeoForge 21.1.248, API pública V1, Capability Contract V1, protocolo interno 8 e schema persistente V1.
- Versionamento permanece manual: não são criados
set-version,bump-version,promote-versionou equivalentes. - Progresso: 10/10 — concluída e promovida.
Estágio 9/10 — Gates Definitivos de Não Regressão Temporal
- Adiciona
TemporalRelease2DefinitiveGateStage9Testcomo gate comportamental final da candidata 2.0.0, modelando Server Tick Clock, Client Tick Clock e Network Delivery Clock como domínios independentes. - A matriz obrigatória cobre ciclos 1/2/5/10/20 min, modos
TOTAL_CYCLEeSPLIT_DAY_NIGHT, TPS 20/18/15/12/10/5 e atrasos 0/1/2/5/10/20 client ticks. - Cobre as seis transições de velocidade exigidas: 20→1, 20→0.5, 10→1, 4→1, 2→20 e 1→20, preservando rate final, ordering e continuidade visual.
- Cobre server freeze e client freeze de 1/2/3/5/10 s, além de congelamentos deslocados em momentos diferentes e posterior recuperação estável.
- Rede adversarial inclui jitter
1→5→1→10→2, reorder determinístico, burst de snapshots legítimos e perda lógica de update intermediário; snapshot obsoleto nunca substitui o estado mais novo. - Comandos cobertos:
/time set,minecraft:time set,execute ... run time set,/time adde sleep skip. Backward/time setexige nova epoch; time add/sleep permanecem avanços monotônicos no mesmo domínio quando aplicável. - Lifecycle cobre login, logout, respawn, mudança de dimensão e reload administrativo de rate. Hard boundaries resetam snapshot/epoch/revision/rate/correção/local clock; reload de configuração preserva ordering e compromete a nova rate atomicamente.
- A matriz mede diretamente
presentationRegressions == 0depois de client ticks e commits normais. Este é o gate executável do invariante principal da release: rendered celestial time contínuo e não regressivo em sincronização normal. - Adiciona
TemporalRelease2StaticInvariantStage9Testpara bloquear regressões estruturais: ownership único da rate server-side, writes cliente apenas no commit atômico, renderer/presentation sem writers, ausência declientGameTime - serverGameTimecomo latência e proibição do antigo descarte de dívida >1.200. build.gradleganha o task explícitotemporalReleaseGate;checkdepende dele e ele depende detest, fazendo os gates Stage 9 participarem da cadeia normalbuild -> check -> test. O task não altera versão nem promove release.- Validação consolidada do estágio: 38/38 checks, matriz independente 46/46 + 19/19 Java 21 e runner definitivo 17/17 (13 gates novos + 4 regressões de pausa/retomada herdadas).
- O runtime de produção permanece exatamente o do Estágio 8: 572 arquivos, delta cumulativo autorizado de 22 arquivos contra a baseline 1.2.41 e 0 alterações novas em
src/mainneste estágio. - Não promove 2.0.0 neste estágio;
mod_version=1.2.41permanece até o Estágio 10 confirmar a promoção final. - Progresso da checklist: 9/10.
Estágio 8/10 — Coerência Visual Completa: Céu, Sol, Lua, Estrelas e HUD
- Adiciona
ClientPresentationTimeSourcecomo fonte client-only única para tempo de apresentação. Ela deriva sempre doClientLevelfísico sincronizado + correção visual limitada; não avança relógio próprio e não é autoridade de gameplay. ClientCelestialVisualTimeSourcepassa a delegar à nova fonte comum. O override deLevelTimeAccess#getTimeOfDay(float)continua alimentando Sol, Lua, estrelas, sky angle, sky color, sky darkening e star brightness pela mesma fase final de frame.DigitalClockHudOverlaye a seção de relógio doUnifiedInstrumentHudOverlaydeixam de lerClientLevel#getDayTime()diretamente e passam a exibir o mesmo presentation time observado pelo céu durante reconciliações.SeasonalFoliageClientState,VegetationClimateResolvereClientPrecipitationVisualResolver, todos explicitamente render/client-only, usam a mesma referência de apresentação para janelas visuais de noite e modificadores diurnos visuais. Isso evita céu em uma fase e foliage/precipitação visual em outra durante amortização.- Sistemas físicos permanecem separados:
TemperatureAPI, WildVitals, fenologia/ecologia server-side, caches térmicos, calendário autoritativo e gameplay continuam consumindo o relógio Minecraft físico/autoritativo; nenhum pacote common/server importaClientPresentationTimeSource. - Introduz
PAUSED_HOLDparadoDaylightCycle=false. Ao pausar, a dívida ativa é consolidada em uma âncora visual congelada:sourceDebtTicks=0, amortização=0 e apresentação permanece estável sem dívida crescendo ou sendo paga artificialmente. - Enquanto pausado, snapshots normais podem atualizar o clock físico sem deslocar a apresentação congelada.
AUTHORIZED_DISCONTINUITYcontinua sendo o único caminho paraAUTHORIZED_JUMPe pode substituir explicitamente a âncora pausada. - Ao reativar
doDaylightCycle, a âncora congelada é convertida uma única vez em correção limitada normal/accelerated/rebase. Não existe backlog acumulado por tempo de pausa; discrepâncias de múltiplos dias continuam usando rebase por rotações completas de 24.000 ticks. - A retomada preserva velocidade visual para frente, sem snap, overshoot, retorno ou efeito mola; a dívida volta a convergir pela política adaptativa do Estágio 5.
- Adiciona
ClientPresentationPausePolicyStage8Testcom 4 regressões Java 21 para consolidação de pausa, retomada sem snap, rebase de discrepância muito grande e salto autorizado explícito. - O runtime passa a 572 arquivos: 568 da baseline 1.2.41 + três adições do Estágio 7 +
ClientPresentationTimeSource. O delta cumulativo autorizado contra a baseline fica restrito a 22 arquivos, sem remoções. - Não promove 2.0.0 neste estágio;
mod_version=1.2.41permanece até os gates temporais finais. - Progresso da checklist: 8/10.
Estágio 7/10 — Epoch, /time, Comandos Aninhados e Mods Externos
- Refatora
TemporalIntegrityCommandClassifierpara tokenização estrutural e resolução recursiva do comando executado apósexecute ... run, sem depender apenas do primeiro token bruto. - Reconhece
time set,minecraft:time set,execute run time set,execute as ... run time seteexecute positioned ... run minecraft:time setcomo a mesma descontinuidade administrativa absoluta. - Mantém
CommandEventcomo hook pré-execução:/time setautorizado recebe uma nova epoch antes de Vanilla/NeoForge alterardayTime, inclusive quando o novo valor é menor por poucos ticks. - Adiciona
LevelDayTimeDiscontinuityMixinnoHEADdeLevel#setDayTime(long)apenas como observador server-side. O mixin não escreve clocks e permite detectar uma regressão absoluta externa antes do commit da escrita. - Adiciona
TemporalExternalDayTimeDiscontinuityPolicy: alterações externas para trás só são elevadas a descontinuidade quando excedem tolerância pequena proporcional àdayTimePerTick, evitando criar epoch por ruído/correção mínima. - Autorizações explícitas mantêm um token curto e consumível por dimensão; quando o setter correspondente ocorre, esse token é consumido e impede uma segunda epoch para a mesma alteração.
- Uma regressão externa significativa sem autorização prévia recebe
EXTERNAL_MOD_TIME_CHANGE, nova epoch e payload de epoch antes da escrita nativa. O diagnóstico recebe origemEXTERNAL_MODem vez de mascarar a alteração como normal. - Adiciona
TemporalDiscontinuityAPIpública para integrações externas autorizaremADMINISTRATIVE_TIME_CHANGE,TIMELINE_REBUILD,SERVER_RESETouEXTERNAL_MOD_TIME_CHANGEimediatamente antes de alterar o relógio absoluto. - A API pública e o sistema de epoch permanecem metadata-only: não chamam
setDayTime,setGameTimenemsetDayTimePerTicke não viram uma segunda autoridade temporal. EXTERNAL_MOD_TIME_CHANGErecebe wire id aditivo5; o payload de epoch existente continua usando o mesmo formato/protocolo e apenas passa a compreender a nova razão.- Segurança contra snapshots atrasados permanece inalterada:
STALE_EPOCH,OUT_OF_ORDER,MONOTONICITY_VIOLATION, revision e fingerprint continuam decidindo ordering no cliente. - Adiciona 11 regressões puras Java 21 para comandos aninhados/namespaced, tolerância de regressão externa, extremos
long, reason wire e classificação diagnóstica de rewind externo. - O runtime passa de 568 para 571 arquivos por três adições explícitas. O delta cumulativo contra a baseline 1.2.41 fica restrito a 15 arquivos; nenhum writer temporal físico é adicionado.
- Não promove 2.0.0 neste estágio;
mod_version=1.2.41permanece até os gates temporais finais. - Progresso da checklist: 7/10.
Estágio 6/10 — Projeção Segura, Jitter e Atraso de Rede
- Audita
TemporalReconciliationContext,TemporalProjectionWindoweTemporalSnapshotAgee confirma que o runtime não possui fonte confiável de one-way network delay para o snapshot temporal. - Remove o campo morto
estimatedNetworkDelayTicksda infraestrutura temporal em vez de expor uma capacidade que produção sempre preenchia com zero. - Mantém a regra absoluta de não usar
clientGameTime - serverGameTimecomo latência; o shim legadopacketAgeTicks(...)continua retornando zero. - Um snapshot reconciliado imediatamente na chegada agora possui projection age = 0 por construção. Latência de trânsito, jitter e reorder não são convertidos em projeção temporal sintética.
TemporalProjectionWindowpassa a limitar exclusivamente tempo local monotônico realmente observado depois da chegada, como uma espera curta por metadata de rate. O padrão continua 4 client ticks e o teto absoluto continua 20.- A diferença causada por rede atrasada é absorvida pela política visual adaptativa dos Estágios 4/5 depois que ordering/epoch/revision aceitam o snapshot; isso não altera tempo físico nem cria autoridade cliente.
- Adiciona
TemporalNetworkJitterStage6Testcom 8 regressões Java 21 cobrindo atrasos fixos0/1/2/5/10/20, jitter1 → 5 → 1 → 10 → 2, pacote atrasado, reorder, burst, perda lógica de update intermediário e proibição deAUTHORIZED_JUMPpor rede comum. - Reorder continua protegido por
epoch/gameTime/revision/fingerprint: pacote antigo que chega depois de um mais novo é rejeitado e não sobrescreve a réplica. - Burst de atualizações legítimas mantém a ordem de revisão e preserva continuidade visual; jitter não produz movimento de vai-e-volta.
- O delta cumulativo de runtime contra a baseline 1.2.41 passa a 6/568 arquivos: os dois arquivos visuais dos Estágios 4/5 mais
ClientTemporalContinuityMath,TemporalProjectionWindow,TemporalReconciliationContexteTemporalSnapshotAge. Os outros 562/568 permanecem byte a byte congelados. - Nenhum writer server-side, protocolo, epoch/revision, cadência de snapshot ou ownership de
dayTimePerTické alterado. - Não promove 2.0.0 neste estágio;
mod_version=1.2.41permanece até os gates temporais finais. - Progresso da checklist: 6/10.
Estágio 5/10 — Correção Adaptativa para TPS Baixo sem Retorno Visual
- Substitui no runtime a amortização visual fixa como única decisão por uma política adaptativa baseada em faixa da dívida, rate comprometida, ticks locais transcorridos e histórico recente de reconciliação.
- Mantém o overload legado de
ClientVisualTemporalCorrectionState.forCommit(...)somente para compatibilidade determinística dos gates anteriores; oClientVisualTemporalCorrectionTrackerusa o novoAdaptiveContextem produção. - Introduz três faixas explícitas de apresentação:
SMALL(até 240 ticks),MEDIUM(até 1.200) eLARGE(acima de 1.200, respeitando a política de rebase do Estágio 4). - Mede
observedDebtPressureTicksPerLocalTicksomente pela dívida nova injetada entre duas reconciliações e pelo relógio local monotônico. Esse valor não é TPS estimado, não alteragameTime/dayTime/dayTimeFraction/dayTimePerTicke existe apenas na camada de apresentação. - O tracker mantém EWMA com
alpha=0.35da pressão recente para evitar reação brusca a um único pacote e manter resposta suficiente quando a degradação persiste. - Dívida positiva é quitada somente desacelerando a apresentação e preservando velocidade estritamente para frente. Os tetos por faixa são 80%, 88% e 92% da rate comprometida, permitindo acompanhar degradação prolongada sem inverter o céu.
- Dívida negativa usa catch-up limitado à própria rate e ao teto absoluto de 20 ticks/client tick; não há aceleração ilimitada.
- A demanda adaptativa combina piso suave da faixa, dívida/tempo-alvo, pressão observada atual e pressão recente suavizada;
offsetAt(...)continua clampado a zero, impedindo overshoot, oscilação de sinal e efeito mola. AUTHORIZED_JUMP,REBASEeIRRECOVERABLE_STATEdo Estágio 4 permanecem preservados; TPS baixo/stall continuam incapazes de criar salto autorizado.- Adiciona
ClientVisualTemporalAdaptiveCorrectionStage5Testcom 10 regressões Java 21, incluindo períodos prolongados em 15/10/5 TPS, rate 20, rate 1, retorno a 20 TPS, convergênciacorrectionDebt → 0, ausência de overshoot e preservação de movimento para frente. - O delta cumulativo de runtime em relação à baseline 1.2.41 fica restrito a 2/568 arquivos:
ClientVisualTemporalCorrectionState.javaeClientVisualTemporalCorrectionTracker.java; os demais 566/568 continuam byte a byte congelados. - Nenhum writer físico, protocolo, epoch/revision, cadência server-side ou ownership de
dayTimePerTické alterado. - Não promove 2.0.0 neste estágio;
mod_version=1.2.41permanece até os gates temporais finais. - Progresso da checklist: 5/10.
Estágio 4/10 — Reconstrução da Política de Correção Visual
- Remove a regra da 1.2.41 em que
abs(rawDebt) > 1200descartava a correção visual e podia expor o novo clock nativo como um snap para trás no mesmo frame. - Mantém 1.200 ticks somente como orçamento de
NORMAL_CORRECTION; discrepâncias acima disso passam aACCELERATED_CORRECTIONem vez denone. - Introduz política explícita
NORMAL_CORRECTION,ACCELERATED_CORRECTION,REBASE,AUTHORIZED_JUMPeIRRECOVERABLE_STATEdentro deClientVisualTemporalCorrectionState. - Garante que o caso crítico
14000 → 12799(dívida 1.201) preserve a âncora visual 14.000 no commit e converja, sem salto instantâneo para trás. - Correção grande usa convergência acelerada com teto absoluto de 20 ticks/client tick e limita pagamento de dívida positiva a 90% da taxa nativa, impedindo reversão de um céu que deveria avançar.
- Para discrepâncias de múltiplos dias,
REBASEremove somente rotações completas de 24.000 ticks e limita o offset retido a[-12000,+12000], preservando a fase celeste visível. - Entradas não finitas ou overflow da subtração são classificadas como
IRRECOVERABLE_STATE;NaN/Infinitynunca são persistidos como dívida visual. AUTHORIZED_JUMPcontinua exclusivo deAUTHORIZED_DISCONTINUITY; no ordering atual apenasEPOCH_ADVANCErecebe essa resolução. TPS baixo, stall,DELAYEDeSAME_TICK_NEWER_REVISIONpermanecem correções normais/acceleradas.- Mantém
/time set, alteração administrativa absoluta e reconstrução de timeline como caminhos server-side explícitos que autorizam nova epoch antes de qualquer salto intencional. - Amplia
ClientVisualTemporalCorrectionStateStage6Testpara 19 regressões Java 21, cobrindo threshold 1.201, convergência de dívida grande, rebase por dias completos, overflow e stall/rate baixo. - O único delta de runtime em relação à baseline final 1.2.41 fica confinado a
ClientVisualTemporalCorrectionState.java; nenhum writer, protocolo ou componente de autoridade é alterado. - Atualiza gates históricos para aceitar somente esse delta de runtime explicitamente aprovado, mantendo os outros 567/568 arquivos byte a byte congelados.
- Não promove 2.0.0 neste estágio;
mod_version=1.2.41permanece até os gates temporais finais. - Progresso da checklist: 4/10.
Estágio 3/10 — Cadência Real de Snapshots Temporais
- Corrige a simulação do Estágio 2 para que avanço temporal server-side e emissão de snapshot deixem de ser a mesma operação:
SimServer.tick()pode avançar sem produzir pacote. - Introduz cadência periódica explícita de 1 snapshot a cada 20 server ticks, sem gerar snapshot a cada server tick e sem usar tick do cliente como relógio da sincronização.
- Mantém
ServerTickClock,ClientTickClockeNetworkDeliveryClockindependentes; a cadência periódica é contada somente por ticks realmente executados pelo servidor. - Valida a frequência esperada em tempo de rede/parede: 20 TPS → ~1 s, 10 TPS → ~2 s, 5 TPS → ~4 s entre snapshots periódicos.
- Modela sincronizações extraordinárias para mudança de
dayTimePerTick, alteração administrativa monotônica e avanço deepoch, sem reiniciar a cadência periódica. - Permite que sync periódica e extraordinária ocorram legitimamente no mesmo server tick; cada emissão recebe
revisionprópria e a segunda é classificada comoSAME_TICK_NEWER_REVISION, não como duplicata. - Reseta a sequência de
revisionao avançar aepoch, preservando ordering dentro do novo domínio temporal. - Remove do teste a falsa garantia de convergência baseada em snapshot sintético no fim da simulação: o cliente pode terminar entre sincronizações com atraso autoritativo inferior a 20 server ticks.
- Mantém todo
src/mainbyte a byte igual à baseline final 1.2.41; este estágio altera somente simulação, gates e documentação. - A suíte temporal acumulada passa a executar 19 regressões Java 21 sem Gradle.
- Adiciona
validate-2-0-0-temporal-stability-stage3-v1.py, herdando integralmente os gates dos Estágios 1 e 2. - Não promove 2.0.0 neste estágio;
mod_version=1.2.41permanece como identidade da baseline congelada até o gate final. - Progresso da checklist: 3/10.
Estágio 2/10 — Simulação Temporal Realista de Cliente e Servidor
- Refatora
TemporalIndependentClockRegressionStage9Testpara que o cliente simulado não avance apenasclientNativeGameTime: cada client tick agora avançagameTimee, quandodoDaylightCycleestá ativo,dayTime/dayTimeFractionpela mesmaNativeDayTimeAdvanceMathusada para reproduzir o carryfloatnativo. - Passa a manter/aplicar
dayTimePerTickcommitado durante o avanço entre snapshots e cobre explicitamentedoDaylightCycle=false, ondegameTimecontinua avançando sem mover o relógio solar. - Corrige outra diferença da simulação antiga: snapshot aceito agora reproduz o commit atômico real e realinha
clientNativeGameTime,dayTime,dayTimeFractionedayTimePerTickantes de a predição nativa continuar. - Introduz
ServerTickClock,ClientTickClockeNetworkDeliveryClockcomo três domínios explícitos e independentes; entrega de rede não depende de tick do servidor nem do cliente. - Amplia a matriz de TPS server-side para 20/18/15/12/10/5 TPS, mantendo cliente a 20 TPS e provando por contadores separados que a simulação não pressupõe
1 client tick = 1 server tick. - Preserva e reforça server freeze, client freeze e congelamentos em janelas diferentes, enquanto o relógio de entrega de rede continua avançando.
- Mantém latência, rate changes,
SPLIT_DAY_NIGHT, ordering, epoch/revision, lifecycle e ciclos de 1/2/5/10 minutos sob o modelo corrigido. - Atualiza o gate histórico independente para 46 checks e 15 regressões Java 21, todas executadas sem Gradle.
- Adiciona
validate-2-0-0-temporal-stability-stage2-v1.py, que herda o congelamento do Estágio 1 e exige a nova simulação realista sem alterarsrc/main. - Não promove 2.0.0 neste estágio;
mod_version=1.2.41continua sendo somente a baseline de desenvolvimento congelada. - Progresso da checklist: 2/10.
Estágio 1/10 — Congelamento da Base Temporal 1.2.41 e Invariantes da 2.0.0
- Congela EcoTermico 1.2.41 como baseline obrigatória da linha de estabilização 2.0.0, com
src/mainverificado byte a byte contradocs/BASELINE_SRC_MAIN_SHA256_1.2.41_FINAL.txt(568/568 arquivos idênticos). - Formaliza por gate automatizado: servidor como autoridade temporal absoluta; cliente como réplica com previsão temporária; renderer apenas como apresentação; predição cliente incapaz de bloquear autoridade do servidor; snapshot antigo incapaz de substituir snapshot novo; correção visual incapaz de virar segunda autoridade.
- Preserva integralmente
revision,epoch, fingerprint, commit atômico, separação física/visual,ClientVisualTemporalCorrectionTracker,NativeDayTimeAdvanceMath, proteção dedayTimePerTicke lifecycle/reset client-side da 1.2.41. - Mantém
DayNightCycleManagercomo único writer server-side dedayTimePerTick, protegido porDayNightRateWriteGuarde pelo mixin de ownership. - Mantém o cliente sem
clientGameTime - serverGameTimecomo estimador de latência e semarrivalDayTimecomo autoridade temporal. - Mantém ordering por epoch/gameTime/revision/fingerprint e política de pending em que snapshot obsoleto/duplicado é rejeitado e snapshot comprovadamente mais novo pode superseder o anterior.
- Mantém correção visual somente após o commit dos clocks/taxa e sem setters de clocks no
ClientVisualTemporalCorrectionTracker. - Preserva
TOTAL_CYCLEeSPLIT_DAY_NIGHT;VANILLAcontinua somente como token legado migrado/normalizado e não pode voltar silenciosamente como controlador operacional. - Adiciona
TemporalStability200Stage1ContractTestcom 8 contratos code-only evalidate-2-0-0-temporal-stability-stage1-v1.py, sem Gradle e sem testes manuais. - Não promove 2.0.0 neste estágio:
mod_version=1.2.41permanece apenas como marcador da base congelada de desenvolvimento. A promoção manual para 2.0.0 continua bloqueada até os gates temporais finais. - Não cria
set-version,bump-versionou qualquer script de promoção automática. - Progresso da checklist: 1/10.
This mod has no additional files

