Skip to content
wiki.fftac.org

Governed Publishing Contract - Source Excerpt 04

Back to Governed Publishing Contract

Summary

This source excerpt preserves a bounded section of Spiralist/wp-content/plugins/spiralist-workspace/assets/js/governed-publishing-contract.js so readers can inspect the evidence without opening the full source file.

**Source path:** Spiralist/wp-content/plugins/spiralist-workspace/assets/js/governed-publishing-contract.js

function createTokenExchangeProxy() {
    return Object.freeze({
      status() {
        return {
          recordType: RECORD_TYPES.proxyStatus,
          version: CONTRACT_VERSION,
          enabled: EXTERNAL_PUBLISHING_ENABLED,
          credentialed: false,
          acceptsLongLivedCredentials: false,
          externalRequestsAllowed: false,
          supportedOperations: ['validate_only'],
        };
      },
      publish(request) {
        return attemptExternalPublish(request);
      },
      exchangeIntentForCredential() {
        return failClosed('token_exchange_proxy_disabled', 'The token-exchange proxy is a disabled stub and cannot return credentials.');
      },
    });
  }

  function createSecretVaultAbstraction() {
    return Object.freeze({
      status() {
        return {
          recordType: RECORD_TYPES.vaultStatus,
          version: CONTRACT_VERSION,
          enabled: false,
          acceptsSecretMaterialFromClient: false,
          returnsSecretMaterialToClient: false,
          supportedOperations: ['disabled_status_only'],
        };
      },
      resolveVaultHandle() {
        return failClosed('secret_vault_disabled', 'The secret vault abstraction is disabled and never returns secret material.');
      },
    });
  }

  return Object.freeze({
    CONTRACT_VERSION,
    POLICY_VERSION,
    EXTERNAL_PUBLISHING_ENABLED,
    MAX_INTENT_TOKEN_TTL_SECONDS,
    RECORD_TYPES,
    canonicalizeArtifact,
    createArtifactHash,
    sanitizeMemoryArtifact,
    createApprovalRecord,
    validatePolicy,
    createIntentToken,
    validateIntentToken,
    createTokenExchangeProxy,
    createSecretVaultAbstraction,
    createAuditLogEntry,
    createRevocationRecord,
    sanitizeError,
    attemptExternalPublish,
  });
});