Ir para o conteúdo
KAMOUniverse

Changelog

O que há de novo.

Cada melhoria para a plataforma, como ele envia.

  1. · kamo-shared-library

    §6.1 Grãos de parede legal RON (WORM congelado) + Evento fechado

    O estado da propriedade é identidade congelada no pacote de fechamento (uma propriedade de fechamento faz não movimento) e é o grão o §6.1 RON estado-eligibilidade legal parede lê. FECHAMENTO COLOCADO é o sinal durável que a fila de exceção de fechamento-steward reage quando RON é paredes.

  2. · kamo-shared-library

    Closing MERS SUBMITTED event key (doc 05 §6.3)

    O sinal MERS: um MersRegistration **************** foi anexado para o empréstimo (somente apêndice, MIN nunca substituído). Tecla de texto aberta aditiva (sem DDL).

  3. · SecurityService

    Adicionar kamp- apps, VectorService, kamolos, kamo- singer- monorepo ao changelog público

  4. · kamo-shared-library

    CLOSING STEP RETRIED event key (doc 05 §6.4)

    O sinal de recuperação: um pacote BLOCKED STEWARD foi desbloqueado e um novo nó PENDING materializado para o Subsistema repetido. Tecla de texto aberta aditiva (sem DDL).

  5. · kamo-shared-library

    Chave de evento FECHADO STEP FAILED (doc 05 §6.4)

    O sinal de falha de drive-loop: uma etapa de fechamento falhou/bloqueado, o pacote é mantido BLOCKED STEWARD; o A fila de exceções de fechamento-barro reage. Tecla de texto aberta aditiva (sem DDL).

  6. · kamo-shared-library

    CLOSING STEP COMPLETED + CLOSING PACKAGE COMPLETED chaves de eventos (doc 05 §6.4)

    Os sinais do drive-loop: um EncerramentoArtifact atingiu COMPLETED (próximo adaptador), e todas as etapas necessárias feitas (investidor-entrega/serviço de bordo). Teclas de texto abertas aditivas (sem DDL).

  7. · InitializerService

    NULLs-safe unique index for EncerramentoWorkflowTemplate versions (doc 05 §6.3)

    Uma versão por grão (organização id, escopo nível, escopo ref id). CRDB é NULLs-distinto, por isso dividir para o nulable scope ref id (mirrors mlos aiptp *): mlos closing wft version uniq (scope ref id NÃO É NULL) + ************* em (org, scope level, versão) (scope ref id IS NULL). A O editor de leitura- e- escrita do MLOSDocOrchestration (versionNumber=max+1) backstop: a concorrente dup-version publicar perde para um 409 (ou seja, o montador resolve 409s no dup, conjunto de tijolos).

  8. · kamo-shared-library

    **************** ****** chave do evento (doc 05 §6.3)

    O sinal durável que o editor template doc-orchestration emite em uma nova versão do EncerramentoWorkflowTemplate. Tecla de texto aberta aditiva (sem DDL).

  9. · kamo-shared-library

    CLOSING PACKAGE ASSEMBLED event key (doc 05 eFechar)

    O sinal durável que o montador doc-orchestration emite quando um pacote de fechamento é criado a partir de um resolvido EncerramentoWorkflowTemplate + seu primeiro nó de artefato. Tecla de texto aberta aditiva (sem DDL).

  10. · kamo-internal

    Remover a fase "Publicar no Mundo"; corrigir Executar Tudo

    Geradores agora escrever telhas diretamente para a unidade de serviço, assim que o worldgen O gasoduto já não tem uma fase de publicação/empurra. - worldgenNats.ts + universo/tipos.ts: drop 'push' de WorldgenStageId, WORLDGEN STAGES e STAGE ORDER (pipeline = ************************************************************************************************************************************************************************************************************************************* - components.tsx: remova a entrada push STAGE META + CloudUploadIcon não utilizado. - services/[stage]/start: aceita 'all' como alvo de comando para que "Run All" funcione (expande-se para preparar->hidro->flora->transport no agente) em vez de 400ing.

  11. · kamo-shared-library

    PULL THROugh POLICY PUBLISHED event key + null-safe AiPTP backstop doc (doc 09 §8)

    Adiciona a chave canônica do tipo evento (o sinal durável do Pull-Through motor recarrega sua política ativa em) para o avião de governança AiPullThrough Policy publisher. Atualiza o AiPullThrough Policy WORM javadoc para documentar o backstop monoativo dividido (por mercado + NULLs-distinto-seguro org-wide grão) e o escritor de requerido demote-então-inserir ordem.

  12. · kamo-shared-library

    EmpréstimoIdentifierEntidade de auditoria apenas em anexo (doc 11 §5.3/§10)

    O EmpréstimoIdentificadorEvento metade do doc 11 §5.3 passo-4 / §10 "completude da auditoria" (cada hortelã/supersede emite um Linha de eventos WORM). Nova ************************* EmpréstimoIdentifierEventType, EmpréstimoIdentifierEventRepository}: uma entidade WORM apenas para apêndices de bloco total (a AiDecision/Decision Língua de entrada — todos os campos updatable=false, @PreUpdate arremessos, ocorreramAt = Data DBCriada) gravando org/loanFileUid/ identificadorId (a nova linha activa, ref UUID macio)/supersedesIdentifierId (o anterior substituído, nulo para um hortelã)/eventoTipo **************** +um aiDecisionId nulo para o par Metade da decisão do WORM (deferido — ainda não existe nenhuma função de registo). Apenas refs suaves por id (sem @ManyToOne), Long IDs serializado como String. A tabela cria automaticamente na execução do KamoInitializer (índices declarados por entidade sobre loan file uid + identifier id; nenhuma alteração SchemaCleanupRunner). Aditivo — versão compartilhamento-lib inalterada (1.5.0).

  13. · InitializerService

    (empréstimo file uid, tipo) índice nativo de unicidade parcial monoativo (doc 11 §5.3/§6.2)

    Fecha um buraco pré-existente de dupla atividade no registro do identificador de empréstimo da MLOS: índice (a) **************** apenas restrições (org, tipo, valor) para o 10 Registry-Native Tipos monoativos, então duas linhas nativas do SAME (empréstimo file uid, tipo) mas valores DIFERENTES poderiam ambos commit (por exemplo, uma renumeração de corridas num registoNativo com um valor diferente — chaves de valor distintas, não conflito). Novo índice único parcial (empréstimo file uid, tipo) status='ACTIVE' E externa system reference IS NULL AND type IN (os 10 tipos nativos) impõe no máximo um ID nativo ativo por (empréstimo, tipo) — o análogo (empréstimo, tipo) do índice (c) para os espelhos PRÓPRIOS ELSEWHERE. A tipo IN(...) list mirrors index (a); manter em sincronia com ************* (a deriva do § 6.2 guarda). CRIAR Idempotente ... SE NÃO EXISTE; o prod não possui linhas nativas duplicadas (verificadas).

  14. · kamo-shared-library

    Adicionar chave de tipo de evento IDENTIFIER SUPERSED

    Tecla de evento aditiva em linha aberta (doc 11 §5.3/§7.3) para o sinal de renumeração/supersessão do registo — o CONFIANÇA TIMER BREACHED precedente (sem enum/schema/KI). Consumido por MLOSIdentifierService.renumber.

  15. · kamo-shared-library

    ******************* - resolver o teto auto execute enabled ao lado do limiar da parede

    Adiciona eficáciaAutonomia(orgId, palco, piso) → EffectiveAutonomia{threshold, autoExecuteEnabled}: uma caminhada em cadeia (perfil → config → fase-override) que retorna ambos o limite de confiança de 6,2 pisos E o auto execute habilitado Interruptor mestre (consciente de sobreposição de palco). Autonomia eficaz Limiar agora deleita-o (única fonte de verdade). Deixa o portão de bloqueio RCE honrar um inquilino que vira auto-execução OFF como um auto-agir CEILING independentemente da autonomia da solicitação Nível. Vazio quando nenhuma configuração do inquilino (a chamada usa o padrão da plataforma; a solicitação governs). Aditivo; apenas o feijoeiro MlosActivationService é afetado. 4 testes.

  16. · InitializerService

    Índice único parcial antibloqueio duplo para registos de bloqueio RCE (doc 08 §7.3)

    SchemaCleanupRunner adiciona ********************** UNIQUE index on mlos lock record (organization id, loan scenario id) Where Status em ********************************************************************************************************************************************************************************************************************************************** No máximo uma taxa de bloqueio por empréstimo cenário: o backstop determinístico do DB para o nível de aplicação do MLOSCapitalMarketsService anti- Double-lock guard, fechando a corrida concorrente-compromete TOCTOU (uma duplicata live lock é corrupção de conformidade silenciosa — o livro de bloqueio não tem suplantações id). Idempotente (SE NÃO EXISTE); já aplicado para prod CRDB.

  17. · KlusterServices

    Bootstrap universe-minio secret + ugc bucket note (§14)

    Adicione o passo 6 ao bootstrap-universo.sh: cria o segredo universo-minio (ACCESS KEY/SECRET KEY a partir de credos de raiz do universo-backup-s3) e observa que O balde MinIO deve existir. Idempotente — salta se secreto Já presente.

  18. · DaemonService

    (BLOCKED→STALE)

    O consumidor metade do ciclo de violação de tempo de conformidade (doc 03 §2.8; emitir metade já navios). ComplianceTimerBreachConsumer assina (durável JetStream) para ************* e, por empréstimo violado, lança seus codificadores de orquestração BLOCKED para ESTALHAR via OrchestrationEscalation Serviço (mutable, idempotent — jan-stale/green/complete intocado). Acrescenta: para @EnableJpaRepositórios; habilita mlos.outbox (então a emissão da varredura é duravelmente escrita + retransmitida) e o * ************* bandeira.5 testes unitários.

  19. · InitializerService

    §2.4 índice anti-AUS-shopping parcial-único em mlos aus run

    Um ACTIVO (não supervisionado, não congelado) AusRun per (loan file uid, source label) — "duplicate look como AUS-shopping" (doc 10 §2.4/§2.5). Seguro para aterrar agora que o escritor da agência de contratação do MLOS gerencia o flip false→true substituído antes de inserir a nova execução ativa. Aplicado ao prod CRDB.

  20. · kamo-shared-library

    Persistido par flag em MlosPricedProductResult + OrchestrationStepStatus.STALE

    - MlosPricedProductResult ganha par flag (Boolean, padrão false): a célula §8.1-step-5 par Escada de período de bloqueio da linha, congelada à inserção (persistência de registo da bandeira de par apenas de resposta). - OrchestrationStepStatus ganha STALE: uma etapa BLOCKED cuja conformidade SLA temporizador violado + escalonado (criado pelo consumidor da DaemonService compliance-timer escalation; doc 03 §2.8). Ambos aditivos; ddl-auto:update adiciona a coluna e o genérico enum-CHECK varrimento admite ESTADO no próxima corrida KamoInitializer.

  21. · kamo-shared-library

    RateSheetSanityGate — §6.6 Porta de sanidade pré-publicada dura (intervalo + monotónico)

    Um puro-logic ungated @Component (o padrão PriceAssemblyEngine) validando uma taxa/preço candidato Escada ANTES de publicar uma versão da folha de taxas (doc 02 §6.6): banda de preços consciente da convenção [par±20] (par=100 PREÇO TO 100 / 0 PONTOS FROM PAR — Erros brutos de sinalização/convenção das capturas), Escada monotónica (preço não decrescente à medida que a taxa de notas sobe, por escada (lockPeriodDays,ioFlag), e bem-formação estrutural (taxa não vazia / positiva / bloqueio positivo / taxa não duplicada). Relatórios Todas as violações; falhas encerradas. Reutilizável pela fase de futuro candidato à ingestão (toma uma dissociação RateSheetLadderCell registro, não a entidade JPA). 2-agente avaliação adversa → FIX THEN SHIP (1 must-fix aplicado): removido a par-sanity perto-par-PRICE verific — it false-rejeted legal all-premium/all-discount cupon windows (par-RATE sanity needs rate rotulagem, diferido; a faixa já limita os preços a ±20 do par). Além disso: amoleceu a convenção de sinais javadoc (explicit sign-convention check DEFERRED, banda captura apenas erros de magnitude bruta), excluídos células de taxa nula da varredura duplicada/monotônica, e pular a comparação monotônica em taxas iguais. 18 testes no-DB (TDD). Nenhuma nova entidade → nenhuma execução KamoInitializer.

  22. · kamo-shared-library

    Lock PolicyVersionPublisher - §6.5 supersessão completa a tríade da coluna vertebral

    A versão de política de bloqueio de um irmão. keyed per INVESTOR (ux lock policy version active = (organization id, investor id) ONDE status='ACTIVE' E eficaz até É NULL). Mesmo atômico antes-janela fechar + saveAndFlush o prior's close ANTES do candidato INSERT (o Inserto Hibernate-antes-atualização da ordem flush-order Armadilha). Deltas vs taxa-folha: escopo investidor chaveId; sem revisãoLabel/emitidoAt; intraday chaves de sequência no dia de eficácia. Shared-lib @Component gated mlos.catalog. enabled + repo - Não. 11 no-DB Mockito ensaios (TDD). Com isso, §6.5 a supersessão de encontros efetivos é COMPLETA em todos os três WORM version spins (diretriz + guia + política de bloqueio). Espelho fiel → CRDB e2e é o portão. Nenhuma nova entidade/tabela → nenhuma execução KamoInitializer.

  23. · kamo-shared-library

    OrientaçãoVersionPublisher — Supersessão §6.5 para a coluna directriz

    O irmão diretriz-versão de RateSheetVersion Publisher, chaveado por PRODUTO (ux guideline version active = (organization id, product id) Where status='ACTIVE' E eficaz até É NULL). Mesmo fecho atômico da janela anterior: ACTIVO→SuPERIADO + effective til = succerter.effective from, suplantar id link, e saveAndFlush the prior's close ANTES do candidato INSERT (o Hibernate insert-before-update flush-order Armadilha). Deltas vs taxa-sheet: produto chave de escopoId; revisão de validaçãoLabel + fonteDocumentId (sem emitidoAt); teclas de sequência intradiária no dia de eficácia From. Lista compartilhada @Component gated mlos.catalog. enabled + repo finder 12 testes no-DB Mockito (TDD, incl. ordem de rush InOrder + WORM-guard re-run). Espelho fiel do editor de taxa-folha revisado inversamente → fechado pela e2e comportamental (guideline A supersessão inverte a elegibilidade dos preços). Nenhuma nova entidade/tabela → nenhuma execução KamoInitializer.

  24. · kamo-shared-library

    RateSheetVersionEditor — doc 02 §6.5

    A janela atômica anterior fecha o MLOScatalogService bootstrap bundle writer diferido. Publicação de uma nova versão da folha de taxa para um existente (org, investidor) o escopo agora fecha o antecessor (ACTIVE→SUPERSED + effective til = sucessor.effective from), liga o sucessor (supersedes id, próximo intraday sequence no) e lava o fechamento do anterior ANTES do candidato INSERT — Hibernate encomendas INSERTs antes de APDATEs em um flush, então saveAndFlush(prior) é obrigado a evitar uma violação ux rate sheet version active parcial-unique auto-infligida. Shared-lib @Component gated mlos.catalog.enabled (a Resolução de Versão Efetiva) padrão de irmão); o próximo é WORM-legal por construção contra a entidade @PreUpdate guard. 15 testes no-DB (Mockito) incl. ordem de rush InOrder + WORM-guard re-run. 2-agent adversarial review → FIX THEN SHIP (1 must-fix aplicado: sourceDocumentId validado na frente → limpo 400, não um pós-efeito 500). Nenhuma nova entidade/table/repo-interface → no KamoInitializer execute.

  25. · kamo-shared-library

    Adicione **************** para o evento EPI Run

  26. · kamo-shared-library

    ElegibilidadeCellMatcher atribuição de um código de razão de dimensão única (especificidade ECOA)

    Fecha o gap de alcance do código de razão o PriceAssemblyEngine review sinalizado: a cell miss on EXACTAMENTE uma dimensão de contenção torna-se agora Razão principal específica da ECOA (FICO BELOW MIN / ESTADO NÃO ELEGÍVEL / PROPRIEDADE TYPE NOT ELIGÍVEL / UNIDADES NOT ELIGÍVEL / ******************************************************************************************************************* em vez de colapsar para NO COVERAGE genérico — tornando os 9 códigos CELL inalcançáveis Atingível. Falhas multidimensionais/ambíguas e lacunas de catálogo numérico (FICO) acima de um limite máximo ou entre faixas; um montante de empréstimo entre faixas disjuntas), correctamente ficar NO COVERAGE (um §6.6 defeito de cobertura, nunca uma negação do mutuário). Substrato puro — Nenhum serviço ao vivo consome o fósforo ainda; nenhuma mudança de esquema, nenhuma execução do KamoInitializer. - ElegibilidadeResultado: carrega o principal MlosAdverseActionReasonCode (o fósforo possui-o — apenas detém o contexto dimensional). O 2-arg sem razão não elegível fábrica é REMOVED por isso razãoCode é nulo iff ELEGÍVEL — o produto MlosPricedResult @PrePersist invariante detém por construção para qualquer resultado construído pela fábrica. - ElegibilidadeCellMatcher: falhou Dims + atributo relaxar-uma-dimensãoNoCoverage; Direcção (BLOW/ABOVE/GAP) calculada apenas sobre as falhas de dimensão única (não toda a matriz) então um empréstimo muito grande em bandas desarticuladas nunca é erroneamente rotulado BELOW MIN, e um FICO acima do teto/gap é uma lacuna de cobertura, não uma "pontuação falsa" também baixo". Contrato de substrato documentado: um verdadeiro desqualificador; o consumidor LOE-Core re-atribui as razões up-to-4 NOAA. - PriceAssemblyEngine: motivo aditivo Or(cell, backback) — prefere o par código de propriedade; cellReasonCode(matrizType) mantido como o recuo de defesa bruto-resultado. Revisão adversarial de 2 agentes → FIX THEN SHIP; aplicado ambos os must-fixes (empréstimo-amount & Marcas incorretas de direção FICO, cada uma comprovada com um exemplo trabalhado) + correções de deve o registro invariante; substrato-contrato + documentos de direção). 19 fósforo + 33 motor teste verde (89 testes de catálogo verde).

  27. · kamo-shared-library

    ComplianceTimerService emite mlos.compliance.timer.breached on SLA violation (doc 03 §2.8)

    O acompanhamento com o nome javadoc aos timers Slice-2c enviados: "emissão de evento para um A fila de conformidade é um seguimento." expireBreached() agora emite uma COMPLIANCE TIMER BREACHED event per ARMED→ Timer EXPRED, escrito na caixa de saída A mesma transação como o flip (a garantia transacional-outbox: uma violação é iff aumentado é duravelmente gravado). O consumidor a jusante conduz o ALTO steward escalada + a orquestraçãoEstado BLOCADO→Abandonamento de ESTALE (uma fatia posterior). - Escrita injectada como dependência opcional. null desativa a emissão para que o serviço ainda expire os timers quando a caixa de saída substrato não é ligado no serviço de execução — gracioso, retrocompatível com A ligação automática atual do DaemonService (a costura de teste de 3 arg é preservada). - Envelope: domain=compliance, agregateId=loanFileId, payload carrega **************************** - Nova constante do tipo de evento aberto String **************************** (sem mudança de esquema → no KamoInitializer executar). - 14 ComplianceTimerService tests green (12 ensaios de emissões existentes inalterados + 2). Espelho fiel do produtor-produtor da caixa de saída da tomada de decisão enviada padrão (revisão- isenção).

  28. · kamo-shared-library

    CondiçãoTemplateExtension — mutuárioActionable flag for the portal (doc 09 §6.4)

    A nova dependência de dados do portal mutuário precisa da visão "O que é esquerda": o LoanCondition bloqueado carrega apenas IDs de membros da equipe/org, então o portal não pode dizer em que as condições abertas podem ser aplicadas. doc 09 § 6. 4 prescreve a EmpréstimoActionable flag on the LoanConditionTemplate as a sibling entity — never a coluna no núcleo bloqueado (doc 01 §1.1). A bandeira por condição é produzida service-side a partir desta bandeira de modelo + a categoria de condição. - ConditionTemplateExtension (com.kamo.z.shared.mlos.docs, mutable config/reference): Empréstimo suave FKCondiçãoTemplateId → LoanCondition Template.id (UUID), DB-UNIQUE 1:1; organização desnormalizadaId (Long, String-serialized); mutuário boolean @ColumnDefault false (fail-safe: interna-somente a menos que seja acionável com curadoria). - Está bem. (encontrarPeloEmpréstimoCondiçãoTemplateId + **************************** mlos.docs já em @EnableJpaRepositórios; o índice UNIQUE é declarado como entidade (sem SchemaCleanupRunner). - 3 testes sem BD em verde. Espelho fiel do DocumentRequirement soft-FK-to-locked padrão (revisão- isenção).

  29. · kamo-shared-library

    PriceAssemblyEngine — o núcleo determinístico §8.1 EPI (Fase 2 corte 13)

    A primeira fatia de mlos de lógica pura: a capstone que compõe o catálogo enviado resolvedores na matemática autoritária de preços do lado do servidor (doc 02 §8.1 passos 2-4). Sem Estado Ungated @Component (irmão do AjusteConditionEvaluator/ ******************* - repositório zero, nenhuma nova entidade, Sem mudança de esquema. O futuro MLOSPricingService repos + persistência + eventos. - mergeEligibility (): o filtro três-conjuntos §8.1 step-2/3 (diretriz AND da célula) E portão AUS) → ElegibilidadeVerdict, mais-severe-bloqueando precedência com um único principal MlosAdverseActionReasonCode (cell ************* → diretriz → AUS-quando-necessário → ELEGÍVEL). - assemblyPrice(): final price = base + √ ADITIVO + Π MULTIPILICATIVO(stack order) + margem, respeitando cap valor. Aditivo somado (→ total ajustes 9,6), então Fatores multiplicativos escalam o subtotal em execução em stack order ascendente (uid tie-break), então margem adicionada último / fora do Π; single final HALF UP para (9,4). - price (): orquestra ambos; a saída satisfaz o produto MlosPricedResult @PrePersist offerable-consistência invariante por construção. - cap value = clampe de magnitude de conservação de sinais apenas aditiva (cap = 0 contribuição, pretendido); um valor cap multiplicativo é um defeito de configuração alto (fracasso, nunca preço errado). AUS PASS/NÃO APLICÁVEL A não-bloquear (preço antes dos EUA; §8.2 lock-stage hard-stop é o serviço). - Novo: AusGateOutcome enum + **************************** PreçoProdutoComputação registros. 33 no-DB JUnit5 testes verde. Pesquisa Fluxo de trabalho (3-leitor + síntese) + 2-agente revisão adversarial (veredito FIX THEN SHIP, zero must-fix; aplicou os 5 itens de endurecimento que devem ser corrigidos: alto multiplicativo-cap guard, razão-code-coverage-gap doc, cap=0 + menor-ruleCode docs e 6 testes de cobertura).

  30. · InitializerService

    Registo pkg + RCE/pull-through DDL (docs 08/09)

    @ EnableJpaRepositórios += **************************** EsquemaCleanupRunner: **************************** (parcial-unique) + rce commit ai decision fk + rce commit lock record fk + rce commit pricing snapshot fk (o §7.4 instantâneo delete-guard) + mlos aiptp one active uniq (uma política de pull-through por mutuante profile+mercado). RCE tabela + restrições aplicadas + verificadas.

Seu universo está esperando.

Comece gratuitamente em minutos.Adicione produtos sempre que estiver pronto — sem migração, sem novos logins.

Gratuito para sempre — não é necessário cartão de crédito