chore: retag stand-ins removeBy=RC.8 #13
No files matched your search
@@ -8,7 +8,7 @@ Java 21, Maven wrapper 3.9.11, **QQQ 4.1.0-RC.6**.
|
||||
|
||||
RC.6 supplies core classifications, AI metadata, client channels, table-feature permissions and the UI API extension points. These are used directly; the UI API and its contract test are part of the main build. The installed middleware jar provides `UiApiContract`, but no `UiApiContractAssertions` facade, so the contract test calls that released API directly.
|
||||
|
||||
Field access (#1172) and audit-value protection (#1182) are not in RC.6. Field-access stand-ins and `CoreFieldAccessBridge` remain marked for RC.7. RC.6 **does not enforce field tiers**. Integration tests can use `4.1.0-SECUREDATA-SNAPSHOT`.
|
||||
Field access (#1172) and audit-value protection (#1182) are not in RC.6. Field-access stand-ins and `CoreFieldAccessBridge` remain until the first QQQ RC that ships both #1172 and #1182 (expected RC.8). RC.6 **does not enforce field tiers**. Integration tests can use `4.1.0-SECUREDATA-SNAPSHOT`.
|
||||
|
||||
## Install and register
|
||||
|
||||
@@ -243,11 +243,11 @@ Each is read from a JVM property or the environment and is never logged. Losing
|
||||
|
||||
### Core hooks
|
||||
|
||||
Audit-value protection (QRun-IO/qqq#1182) and the wipe audit flag need core classes that are not in RC.6. On RC.6 the qbit uses marked stand-ins (`removeBy=RC.7`), writes value-free wipe audit details itself, and core does not tokenise ordinary audits. Run the build with `-Dqqq.snapshot.version=4.1.0-SECUREDATA-SNAPSHOT` to exercise the real hooks, including the section 15 canary and wipe-proof tests (`RetentionProofTest`), which skip themselves when the hooks are absent.
|
||||
Audit-value protection (QRun-IO/qqq#1182) and the wipe audit flag need core classes that are not in RC.6. On RC.6 the qbit uses marked stand-ins (`removeBy=RC.8`), writes value-free wipe audit details itself, and core does not tokenise ordinary audits. Run the build with `-Dqqq.snapshot.version=4.1.0-SECUREDATA-SNAPSHOT` to exercise the real hooks, including the section 15 canary and wipe-proof tests (`RetentionProofTest`), which skip themselves when the hooks are absent.
|
||||
|
||||
## Remaining phases
|
||||
|
||||
RC.6 migration is complete; field-access compatibility types remain until RC.7. Phase (g) remains.
|
||||
RC.6 migration is complete; field-access and audit-token compatibility types remain until RC.8.
|
||||
|
||||
## License
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@ import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData;
|
||||
/*******************************************************************************
|
||||
** A single reflection boundary for #1182, failing closed for incompatible hooks.
|
||||
*******************************************************************************/
|
||||
// STAND-IN(core=QRun-IO/qqq#1182, removeBy=RC.7)
|
||||
// STAND-IN(core=QRun-IO/qqq#1182, removeBy=RC.8)
|
||||
public final class CoreAuditBridge
|
||||
{
|
||||
private static final String TOKENS = "com.kingsrook.qqq.backend.core.actions.permissions.fieldaccess.";
|
||||
|
||||
@@ -40,7 +40,7 @@ import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData;
|
||||
/*******************************************************************************
|
||||
** The only boundary between the temporary field-access API and unreleased core.
|
||||
*******************************************************************************/
|
||||
// STAND-IN(core=QRun-IO/qqq#1172, removeBy=RC.7)
|
||||
// STAND-IN(core=QRun-IO/qqq#1172, removeBy=RC.8)
|
||||
public final class CoreFieldAccessBridge
|
||||
{
|
||||
private static final String PACKAGE = "com.kingsrook.qqq.backend.core.actions.permissions.fieldaccess.";
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@ import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData;
|
||||
/*******************************************************************************
|
||||
** Application hook for audit tokens and effective classification. Never return plain values.
|
||||
*******************************************************************************/
|
||||
// STAND-IN(core=QRun-IO/qqq#1182, removeBy=RC.7)
|
||||
// STAND-IN(core=QRun-IO/qqq#1182, removeBy=RC.8)
|
||||
public interface AuditValueProtectorInterface
|
||||
{
|
||||
/*******************************************************************************
|
||||
|
||||
@@ -28,7 +28,7 @@ import java.util.Optional;
|
||||
/*******************************************************************************
|
||||
** Supplies instance keys and optional per-record, per-field shreddable keys.
|
||||
*******************************************************************************/
|
||||
// STAND-IN(core=QRun-IO/qqq#1182, removeBy=RC.7)
|
||||
// STAND-IN(core=QRun-IO/qqq#1182, removeBy=RC.8)
|
||||
public interface ClassifiedValueKeySource
|
||||
{
|
||||
/*******************************************************************************
|
||||
|
||||
@@ -40,7 +40,7 @@ import com.kingsrook.qqq.backend.core.utils.ValueUtils;
|
||||
/*******************************************************************************
|
||||
** Shared, versioned audit/email value tokens. The MAC input is UTF-8.
|
||||
*******************************************************************************/
|
||||
// STAND-IN(core=QRun-IO/qqq#1182, removeBy=RC.7)
|
||||
// STAND-IN(core=QRun-IO/qqq#1182, removeBy=RC.8)
|
||||
public final class ClassifiedValueTokens
|
||||
{
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ package com.kingsrook.qbits.secureddata.standin;
|
||||
/*******************************************************************************
|
||||
** RC.6's nested DMLType is package-private; #1182 makes it public.
|
||||
*******************************************************************************/
|
||||
// STAND-IN(core=QRun-IO/qqq#1182, removeBy=RC.7)
|
||||
// STAND-IN(core=QRun-IO/qqq#1182, removeBy=RC.8)
|
||||
public enum DMLType
|
||||
{
|
||||
INSERT, UPDATE, DELETE, OTHER
|
||||
|
||||
@@ -26,7 +26,7 @@ package com.kingsrook.qbits.secureddata.standin;
|
||||
/*******************************************************************************
|
||||
** A resolver decision; the reason must never contain a field value.
|
||||
*******************************************************************************/
|
||||
// STAND-IN(core=QRun-IO/qqq#1172, removeBy=RC.7): copy of com.kingsrook.qqq.backend.core.actions.permissions.fieldaccess.FieldAccessDecision; delete when the pin moves to RC.7.
|
||||
// STAND-IN(core=QRun-IO/qqq#1172, removeBy=RC.8): copy of com.kingsrook.qqq.backend.core.actions.permissions.fieldaccess.FieldAccessDecision; delete when the pin moves to the first QQQ RC with #1172 and #1182 (RC.8).
|
||||
public record FieldAccessDecision(FieldAccessTier tier, FieldMaskStyle maskStyle, String reason, boolean exactMatchAllowed)
|
||||
{
|
||||
public static final FieldAccessDecision FULL = new FieldAccessDecision(FieldAccessTier.FULL, null, null);
|
||||
|
||||
@@ -30,7 +30,7 @@ import java.util.List;
|
||||
/*******************************************************************************
|
||||
** Value-free audit notification. Primary key samples contain at most 50 keys.
|
||||
*******************************************************************************/
|
||||
// STAND-IN(core=QRun-IO/qqq#1172, removeBy=RC.7): copy of com.kingsrook.qqq.backend.core.actions.permissions.fieldaccess.FieldAccessEvent; delete when the pin moves to RC.7.
|
||||
// STAND-IN(core=QRun-IO/qqq#1172, removeBy=RC.8): copy of com.kingsrook.qqq.backend.core.actions.permissions.fieldaccess.FieldAccessEvent; delete when the pin moves to the first QQQ RC with #1172 and #1182 (RC.8).
|
||||
public class FieldAccessEvent
|
||||
{
|
||||
private FieldAccessEventType type;
|
||||
|
||||
@@ -26,7 +26,7 @@ package com.kingsrook.qbits.secureddata.standin;
|
||||
/*******************************************************************************
|
||||
** Kinds of field access reported to the resolver.
|
||||
*******************************************************************************/
|
||||
// STAND-IN(core=QRun-IO/qqq#1172, removeBy=RC.7): copy of com.kingsrook.qqq.backend.core.actions.permissions.fieldaccess.FieldAccessEventType; delete when the pin moves to RC.7.
|
||||
// STAND-IN(core=QRun-IO/qqq#1172, removeBy=RC.8): copy of com.kingsrook.qqq.backend.core.actions.permissions.fieldaccess.FieldAccessEventType; delete when the pin moves to the first QQQ RC with #1172 and #1182 (RC.8).
|
||||
public enum FieldAccessEventType
|
||||
{
|
||||
VIEW, EXACT_MATCH_FILTER, DENIED
|
||||
|
||||
@@ -26,7 +26,7 @@ package com.kingsrook.qbits.secureddata.standin;
|
||||
/*******************************************************************************
|
||||
** Outcome of an exact-match search.
|
||||
*******************************************************************************/
|
||||
// STAND-IN(core=QRun-IO/qqq#1172, removeBy=RC.7): copy of com.kingsrook.qqq.backend.core.actions.permissions.fieldaccess.FieldAccessOutcome; delete when the pin moves to RC.7.
|
||||
// STAND-IN(core=QRun-IO/qqq#1172, removeBy=RC.8): copy of com.kingsrook.qqq.backend.core.actions.permissions.fieldaccess.FieldAccessOutcome; delete when the pin moves to the first QQQ RC with #1172 and #1182 (RC.8).
|
||||
public enum FieldAccessOutcome
|
||||
{
|
||||
MATCH, NO_MATCH, REFUSED
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@ import com.kingsrook.qqq.backend.core.model.metadata.tables.QTableMetaData;
|
||||
/*******************************************************************************
|
||||
** Session-aware policy, reveal grants and value-free access notifications.
|
||||
*******************************************************************************/
|
||||
// STAND-IN(core=QRun-IO/qqq#1172, removeBy=RC.7): copy of com.kingsrook.qqq.backend.core.actions.permissions.fieldaccess.FieldAccessResolverInterface; delete when the pin moves to RC.7.
|
||||
// STAND-IN(core=QRun-IO/qqq#1172, removeBy=RC.8): copy of com.kingsrook.qqq.backend.core.actions.permissions.fieldaccess.FieldAccessResolverInterface; delete when the pin moves to the first QQQ RC with #1172 and #1182 (RC.8).
|
||||
public interface FieldAccessResolverInterface
|
||||
{
|
||||
/*******************************************************************************
|
||||
|
||||
@@ -27,7 +27,7 @@ import com.kingsrook.qqq.backend.core.model.actions.tables.query.QCriteriaOperat
|
||||
/*******************************************************************************
|
||||
** Effective field access, ordered from least to most restrictive.
|
||||
*******************************************************************************/
|
||||
// STAND-IN(core=QRun-IO/qqq#1172, removeBy=RC.7): copy of com.kingsrook.qqq.backend.core.actions.permissions.fieldaccess.FieldAccessTier; delete when the pin moves to RC.7.
|
||||
// STAND-IN(core=QRun-IO/qqq#1172, removeBy=RC.8): copy of com.kingsrook.qqq.backend.core.actions.permissions.fieldaccess.FieldAccessTier; delete when the pin moves to the first QQQ RC with #1172 and #1182 (RC.8).
|
||||
public enum FieldAccessTier
|
||||
{
|
||||
FULL, REVEALABLE, MASKED, HIDDEN;
|
||||
|
||||
@@ -26,7 +26,7 @@ package com.kingsrook.qbits.secureddata.standin;
|
||||
/*******************************************************************************
|
||||
** Presentation rules for a restricted value.
|
||||
*******************************************************************************/
|
||||
// STAND-IN(core=QRun-IO/qqq#1172, removeBy=RC.7): copy of com.kingsrook.qqq.backend.core.actions.permissions.fieldaccess.FieldMaskStyle; delete when the pin moves to RC.7.
|
||||
// STAND-IN(core=QRun-IO/qqq#1172, removeBy=RC.8): copy of com.kingsrook.qqq.backend.core.actions.permissions.fieldaccess.FieldMaskStyle; delete when the pin moves to the first QQQ RC with #1172 and #1182 (RC.8).
|
||||
public enum FieldMaskStyle
|
||||
{
|
||||
AUTO, EMAIL, LAST_4, FIRST_LAST, FULL
|
||||
|
||||
@@ -24,7 +24,7 @@ package com.kingsrook.qbits.secureddata.standin;
|
||||
/*******************************************************************************
|
||||
** Tokens and a value-free message supplied before an audit is inserted.
|
||||
*******************************************************************************/
|
||||
// STAND-IN(core=QRun-IO/qqq#1182, removeBy=RC.7)
|
||||
// STAND-IN(core=QRun-IO/qqq#1182, removeBy=RC.8)
|
||||
public record ProtectedAuditValues(String oldToken, String newToken, String message)
|
||||
{
|
||||
}
|
||||
@@ -78,7 +78,7 @@ class CoreFieldAccessBridgeIT
|
||||
{
|
||||
available = false;
|
||||
}
|
||||
Assumptions.assumeTrue(available, "QQQ RC.7 field-access core is not on this classpath");
|
||||
Assumptions.assumeTrue(available, "QQQ field-access core (#1172) is not on this classpath");
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user