A Fase 5 de WorkflowAction esta concluida no
praxis-metadata-starter.
O eixo action-oriented ja esta implementado como camada
semantica derivada sobre operacoes HTTP reais, sem payload inline, sem
dispatcher generico e sem redefinir o contrato estrutural canonico.
@WorkflowAction como anotacao canonica para comandos de
negocio explicitosGET /schemas/actions?resource={resourceKey}GET /schemas/actions?group={openApiGroup}GET /{resource}/{id}/actionsGET /{resource}/actionsActionScope.ITEM e ActionScope.COLLECTION
publicados no mesmo modelo canonicooperationIdpathmethodrequestSchemaIdrequestSchemaUrlresponseSchemaIdresponseSchemaUrlActionAvailabilityRuleActionAvailabilityContextResolverDefaultActionAvailabilityEvaluatorResourceStateSnapshot e
ResourceStateSnapshotProvider promovidos para o pacote
neutro capability@UiSurface +
@WorkflowAction governado por
praxis.metadata.validation.surface-workflow-conflict=FAIL|WARN|IGNORE@WorkflowAction governado por
praxis.metadata.validation.workflow-action-shape=FAIL|WARN|IGNOREPOST /employees/{id}/actions/approvePOST /employees/actions/bulk-approveaction nao define fields, schema ou payload inlineaction sempre aponta para endpoint real tipado e
documentado(resourceKey, actionId)delete, filter, stats,
options e PATCH resource-oriented por intencao
nao entram no catalogo de actions@WorkflowAction nao entra no catalogo de
surfaces@WorkflowAction deve apontar para mapping canonico de
comando, com verbo POST ou PATCH e path
workflow-like (/actions/... ou alias
:action)ITEM actions em catalogo global sao discovery semantico
e nao affordance executavel sem resourceIdCOLLECTION actions podem ser avaliadas contextual e
canonicamente sem resourceIdCobertura focal validada no starter:
ActionCatalogE2ETestActionCatalogServiceTestAnnotationDrivenActionDefinitionRegistryTestDefaultActionAvailabilityEvaluatorTestDefaultActionAvailabilityContextResolverTestOpenApiUiSchemaAutoConfigurationActionAvailabilityTestSurfaceCatalogE2ETestAnnotationDrivenSurfaceDefinitionRegistryTestAbstractResourceControllerJpaWriteIntegrationTestRodada de hardening da availability:
BUILD SUCCESS50 testesresource-context-requiredmissing-authorityresource-state-blockedresource-state-unavailableRodada de fechamento de ActionScope.COLLECTION:
BUILD SUCCESS54 testesGET /{resource}/actions404 explicito para recurso sem actions de colecaoPOST /employees/actions/bulk-approveITEM e
COLLECTION sem regressao em surfacesGET /actions nas
colecoese2e-pg com PostgreSQL/TestcontainersEsses pontos nao bloqueiam o encerramento da Fase 5. Eles pertencem a hardening adicional ou a fases posteriores do plano.
Com a Fase 5 encerrada:
ITEM e COLLECTION