"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.buildLicenseAndReminderCatalog = buildLicenseAndReminderCatalog;
const cli_constants_1 = require("./cli-constants");
function buildLicenseAndReminderCatalog(dependencies) {
    const { defineEntry, licenseSpecDescription, notWritable, commandOwned, printableDisplay, licenseCommandWriteRejection, licenseSourceSummaryDisplay, licensePathSummaryDisplay, stringValidation, integerValidation, booleanValidation, pathValidation, stateValidation, nonConfigInputValidation } = dependencies;
    return [
        defineEntry({
            key: "license.resolution_order",
            valueFamily: "local-state",
            valueType: "array",
            derivedValueDescription: "Resolution order: explicit command option, DAY_SHIFT_LICENSE_FILE, host-local automation path, user-local license directory, then unlicensed fallback.",
            mutability: "local-state",
            allowedSourceLayers: ["command-input", "environment", "host-state", "user-local-state", "product-policy"],
            sensitivity: "sensitive",
            owningCommandFamily: "license",
            validationRule: stateValidation,
            description: licenseSpecDescription("Inventory-visible license file and directory resolution order."),
            inventoryDisplay: { mode: "summary-only", summaryDescription: "Show provenance order and selected source, not raw license contents." },
            writePolicy: commandOwned()
        }),
        defineEntry({
            key: "license.effective_source",
            valueFamily: "derived-runtime-state",
            valueType: "enum",
            derivedValueDescription: "Effective license source: explicit command option, DAY_SHIFT_LICENSE_FILE, host-local automation path, user-local license directory, or unlicensed fallback.",
            mutability: "derived-runtime-state",
            allowedSourceLayers: ["command-input", "environment", "host-state", "user-local-state", "product-policy", "runtime-derived"],
            sensitivity: "public",
            owningCommandFamily: "license",
            validationRule: stateValidation,
            description: licenseSpecDescription("License source selected by the runtime resolver for config inventory and license status."),
            inventoryDisplay: printableDisplay,
            writePolicy: notWritable(licenseCommandWriteRejection)
        }),
        defineEntry({
            key: "license.configured_path_source",
            valueFamily: "derived-runtime-state",
            valueType: "enum",
            derivedValueDescription: "Configured license path source when supplied by --license-file, DAY_SHIFT_LICENSE_FILE, or host-local automation defaults.",
            mutability: "derived-runtime-state",
            allowedSourceLayers: ["command-input", "environment", "host-state", "runtime-derived"],
            sensitivity: "sensitive",
            owningCommandFamily: "license",
            validationRule: stateValidation,
            description: licenseSpecDescription("Inventory-safe configured-path provenance for license resolution."),
            inventoryDisplay: licensePathSummaryDisplay,
            writePolicy: notWritable(licenseCommandWriteRejection)
        }),
        defineEntry({
            key: "license.user_directories",
            valueFamily: "local-state",
            valueType: "array",
            derivedValueDescription: "Default user license directories: macOS ~/Library/Application Support/day-shift/licenses/, Linux ${XDG_CONFIG_HOME:-~/.config}/day-shift/licenses/, Windows %APPDATA%\\DayShift\\licenses\\.",
            mutability: "local-state",
            allowedSourceLayers: ["user-local-state", "product-policy"],
            sensitivity: "local-preference",
            owningCommandFamily: "license",
            validationRule: pathValidation,
            description: licenseSpecDescription("User-local installed license directory locations."),
            inventoryDisplay: { mode: "summary-only", summaryDescription: "Show directory-resolution status and readable installed-license count." },
            writePolicy: commandOwned()
        }),
        defineEntry({
            key: "license.readable_installed_license_count",
            valueFamily: "local-state",
            valueType: "count",
            derivedValueDescription: "Count of readable installed user license files discovered while evaluating the user-local license directory.",
            mutability: "local-state",
            allowedSourceLayers: ["user-local-state", "runtime-derived"],
            sensitivity: "public",
            owningCommandFamily: "license",
            validationRule: integerValidation,
            description: licenseSpecDescription("Non-secret multi-license directory diagnostic used to explain installed-license selection."),
            inventoryDisplay: printableDisplay,
            writePolicy: commandOwned()
        }),
        defineEntry({
            key: "license.installed_file_contents",
            valueFamily: "local-state",
            valueType: "object",
            derivedValueDescription: "Installed license file contents owned by license install/status commands.",
            mutability: "local-state",
            allowedSourceLayers: ["user-local-state", "host-state"],
            sensitivity: "secret",
            owningCommandFamily: "license",
            validationRule: stateValidation,
            description: licenseSpecDescription("Raw installed license content, including private license payload details."),
            inventoryDisplay: { mode: "omitted", omissionReason: "Raw license file contents, signatures, and private purchase metadata must not be printed." },
            writePolicy: commandOwned()
        }),
        defineEntry({
            key: "license.signature_payload",
            valueFamily: "local-state",
            valueType: "object",
            derivedValueDescription: "Raw signature and signed license payload material used internally for license verification.",
            mutability: "local-state",
            allowedSourceLayers: ["user-local-state", "host-state"],
            sensitivity: "secret",
            owningCommandFamily: "license",
            validationRule: stateValidation,
            description: licenseSpecDescription("Secret license signature payload material; inventory exposes only that this state is command-owned."),
            inventoryDisplay: { mode: "omitted", omissionReason: "Raw signed license payloads and signatures must not be printed." },
            writePolicy: commandOwned()
        }),
        defineEntry({
            key: "license.private_purchase_metadata",
            valueFamily: "local-state",
            valueType: "object",
            derivedValueDescription: "Private purchase metadata included in or associated with a signed license file.",
            mutability: "local-state",
            allowedSourceLayers: ["user-local-state", "host-state"],
            sensitivity: "secret",
            owningCommandFamily: "license",
            validationRule: stateValidation,
            description: licenseSpecDescription("Private purchase metadata is owned by license commands and excluded from printable config inventory."),
            inventoryDisplay: { mode: "omitted", omissionReason: "Private purchase metadata must not be printed by config inventory." },
            writePolicy: commandOwned()
        }),
        defineEntry({
            key: "license.verification_result_cache",
            valueFamily: "local-state",
            valueType: "object",
            derivedValueDescription: "Optional local verification result cache for parsed license status, if a future resolver stores one.",
            mutability: "local-state",
            allowedSourceLayers: ["user-local-state", "host-state", "runtime-derived"],
            sensitivity: "sensitive",
            owningCommandFamily: "license",
            validationRule: stateValidation,
            description: licenseSpecDescription("Command-owned verification cache placeholder kept outside repository and local TOML config."),
            inventoryDisplay: { mode: "summary-only", summaryDescription: "Show cache presence and reason-code summary only, not raw license payload details." },
            writePolicy: commandOwned()
        }),
        defineEntry({
            key: "license.selected_installed_license_id",
            valueFamily: "local-state",
            valueType: "string",
            derivedValueDescription: "Selected installed license ID when a license directory is used and a suppressing license is found.",
            mutability: "local-state",
            allowedSourceLayers: ["user-local-state", "host-state"],
            sensitivity: "sensitive",
            owningCommandFamily: "license",
            validationRule: stateValidation,
            description: licenseSpecDescription("Safe license selection provenance for inventory output."),
            inventoryDisplay: { mode: "redacted", redactionLabel: "license-id" },
            writePolicy: commandOwned()
        }),
        defineEntry({
            key: "license.selected_suppressing_license_id",
            valueFamily: "local-state",
            valueType: "string",
            derivedValueDescription: "Selected installed license ID when the user-local directory contains a license that suppresses reminders for the current CLI version.",
            mutability: "local-state",
            allowedSourceLayers: ["user-local-state", "host-state", "runtime-derived"],
            sensitivity: "sensitive",
            owningCommandFamily: "license",
            validationRule: stateValidation,
            description: licenseSpecDescription("Redacted selected suppressing license identity for multi-license directory diagnostics."),
            inventoryDisplay: { mode: "redacted", redactionLabel: "suppressing-license-id" },
            writePolicy: commandOwned()
        }),
        defineEntry({
            key: "license.effective_status",
            valueFamily: "local-state",
            valueType: "enum",
            derivedValueDescription: "Effective license status and reason code from day-shift license status.",
            mutability: "local-state",
            allowedSourceLayers: ["command-input", "environment", "host-state", "user-local-state", "product-policy"],
            sensitivity: "public",
            owningCommandFamily: "license",
            validationRule: stateValidation,
            description: licenseSpecDescription("Inventory-visible effective license status without raw license payloads."),
            inventoryDisplay: printableDisplay,
            writePolicy: commandOwned()
        }),
        defineEntry({
            key: "license.reason_code",
            valueFamily: "derived-runtime-state",
            valueType: "enum",
            derivedValueDescription: "Machine-readable license status reason code such as missing, malformed, invalid_signature, expired_trial, wrong_product, version_not_covered, or missing_required_feature.",
            mutability: "derived-runtime-state",
            allowedSourceLayers: ["runtime-derived", "command-input", "environment", "host-state", "user-local-state", "product-policy"],
            sensitivity: "public",
            owningCommandFamily: "license",
            validationRule: stateValidation,
            description: licenseSpecDescription("Machine-readable license status reason code for config inventory and future license status JSON."),
            inventoryDisplay: printableDisplay,
            writePolicy: notWritable(licenseCommandWriteRejection)
        }),
        defineEntry({
            key: "license.suppresses_reminders",
            valueFamily: "derived-runtime-state",
            valueType: "boolean",
            derivedValueDescription: "Whether the effective license state suppresses commercial reminders for the current CLI invocation.",
            mutability: "derived-runtime-state",
            allowedSourceLayers: ["runtime-derived", "product-policy"],
            sensitivity: "public",
            owningCommandFamily: "license",
            validationRule: booleanValidation,
            description: licenseSpecDescription("Non-secret reminder suppression decision derived from valid signature, product, entitlement, expiration, and feature checks."),
            inventoryDisplay: printableDisplay,
            writePolicy: notWritable(licenseCommandWriteRejection)
        }),
        defineEntry({
            key: "license.current_cli_version",
            valueFamily: "derived-runtime-state",
            valueType: "string",
            derivedValueDescription: "Current Day Shift CLI version used for license coverage checks.",
            mutability: "derived-runtime-state",
            allowedSourceLayers: ["runtime-derived"],
            sensitivity: "public",
            owningCommandFamily: "license",
            validationRule: stringValidation,
            description: licenseSpecDescription("Runtime CLI version included in license/reminder inventory."),
            inventoryDisplay: printableDisplay,
            writePolicy: notWritable("CLI version is runtime metadata and is not configurable.")
        }),
        defineEntry({
            key: "license.entitlement_kind",
            valueFamily: "derived-runtime-state",
            valueType: "enum",
            derivedValueDescription: "License entitlement kind when safely available: individual, company seat, automation host, company site, trial, internal, or unlicensed.",
            mutability: "derived-runtime-state",
            allowedSourceLayers: ["runtime-derived", "user-local-state", "host-state", "product-policy"],
            sensitivity: "public",
            owningCommandFamily: "license",
            validationRule: stateValidation,
            description: licenseSpecDescription("Non-secret license entitlement kind from commercial licensing policy."),
            inventoryDisplay: printableDisplay,
            writePolicy: notWritable(licenseCommandWriteRejection)
        }),
        defineEntry({
            key: "license.covered_release_line",
            valueFamily: "derived-runtime-state",
            valueType: "string",
            derivedValueDescription: "Covered Day Shift release line from the installed license entitlement when safely available.",
            mutability: "derived-runtime-state",
            allowedSourceLayers: ["runtime-derived", "user-local-state", "host-state", "product-policy"],
            sensitivity: "public",
            owningCommandFamily: "license",
            validationRule: stringValidation,
            description: licenseSpecDescription("Non-secret release-line entitlement field used to explain perpetual license coverage."),
            inventoryDisplay: printableDisplay,
            writePolicy: notWritable(licenseCommandWriteRejection)
        }),
        defineEntry({
            key: "license.current_version_coverage_state",
            valueFamily: "derived-runtime-state",
            valueType: "enum",
            derivedValueDescription: "Whether the current CLI version belongs to the installed license's covered release line.",
            mutability: "derived-runtime-state",
            allowedSourceLayers: ["runtime-derived", "user-local-state", "host-state", "product-policy"],
            sensitivity: "public",
            owningCommandFamily: "license",
            validationRule: stateValidation,
            description: licenseSpecDescription("Current-version coverage state for perpetual entitlement and version_not_covered diagnostics."),
            inventoryDisplay: printableDisplay,
            writePolicy: notWritable(licenseCommandWriteRejection)
        }),
        defineEntry({
            key: "license.temporary_expiration_state",
            valueFamily: "derived-runtime-state",
            valueType: "enum",
            derivedValueDescription: "Temporary-license expiration state from expires_at when applicable.",
            mutability: "derived-runtime-state",
            allowedSourceLayers: ["runtime-derived", "user-local-state", "host-state", "product-policy"],
            sensitivity: "public",
            owningCommandFamily: "license",
            validationRule: stateValidation,
            description: licenseSpecDescription("Non-secret trial or temporary-license expiration status, without exposing private purchase metadata."),
            inventoryDisplay: printableDisplay,
            writePolicy: notWritable(licenseCommandWriteRejection)
        }),
        defineEntry({
            key: "license.effective_coverage_path",
            valueFamily: "derived-runtime-state",
            valueType: "enum",
            derivedValueDescription: "Coverage path for the current run: individual machine, company seat, automation host, company site, trial, internal, or unlicensed.",
            mutability: "derived-runtime-state",
            allowedSourceLayers: ["runtime-derived", "user-local-state", "host-state", "product-policy"],
            sensitivity: "public",
            owningCommandFamily: "license",
            validationRule: stateValidation,
            description: licenseSpecDescription("Safe effective coverage path from commercial licensing and automation-host coverage policy."),
            inventoryDisplay: printableDisplay,
            writePolicy: notWritable(licenseCommandWriteRejection)
        }),
        defineEntry({
            key: "license.unlicensed_fallback",
            valueFamily: "derived-runtime-state",
            valueType: "object",
            derivedValueDescription: "Unlicensed fallback mode and fallback reason when no configured, host-local, or user-local license suppresses reminders.",
            mutability: "derived-runtime-state",
            allowedSourceLayers: ["runtime-derived", "product-policy"],
            sensitivity: "public",
            owningCommandFamily: "license",
            validationRule: stateValidation,
            description: licenseSpecDescription("Inventory-visible unlicensed fallback state that keeps normal CLI execution outside repository config."),
            inventoryDisplay: licenseSourceSummaryDisplay,
            writePolicy: notWritable(licenseCommandWriteRejection)
        }),
        defineEntry({
            key: "license.entitlement_summary",
            valueFamily: "local-state",
            valueType: "object",
            derivedValueDescription: "Safe summary of license entitlement kind, covered release line, current-version coverage, expiration status, and reminder suppression.",
            mutability: "local-state",
            allowedSourceLayers: ["user-local-state", "host-state", "product-policy"],
            sensitivity: "sensitive",
            owningCommandFamily: "license",
            validationRule: stateValidation,
            description: licenseSpecDescription("Safe inventory summary of license entitlement and reminder suppression."),
            inventoryDisplay: { mode: "summary-only", summaryDescription: "Print only non-secret status fields; omit signatures and private purchase metadata." },
            writePolicy: commandOwned()
        }),
        defineEntry({
            key: "license.previous_license_id_provenance",
            valueFamily: "local-state",
            valueType: "string",
            derivedValueDescription: "Previous license ID provenance for discounted upgrade keys, when present.",
            mutability: "local-state",
            allowedSourceLayers: ["user-local-state", "host-state"],
            sensitivity: "sensitive",
            owningCommandFamily: "license",
            validationRule: stateValidation,
            description: licenseSpecDescription("Upgrade provenance that must not expose private purchase metadata."),
            inventoryDisplay: { mode: "redacted", redactionLabel: "previous-license-id" },
            writePolicy: commandOwned()
        }),
        defineEntry({
            key: "license.discounted_upgrade_provenance",
            valueFamily: "local-state",
            valueType: "object",
            derivedValueDescription: "Discounted upgrade provenance from entitlement.upgrade_from_license_id, when present.",
            mutability: "local-state",
            allowedSourceLayers: ["user-local-state", "host-state", "runtime-derived"],
            sensitivity: "sensitive",
            owningCommandFamily: "license",
            validationRule: stateValidation,
            description: licenseSpecDescription("Upgrade provenance summary for discounted keys without printing the prior license ID or private purchase metadata."),
            inventoryDisplay: { mode: "summary-only", summaryDescription: "Show whether upgrade provenance exists; redact previous license IDs and private purchase metadata." },
            writePolicy: commandOwned()
        }),
        defineEntry({
            key: "license.automation_host_paths",
            valueFamily: "host-state",
            valueType: "array",
            derivedValueDescription: "Default automation-host license paths: macOS/Linux /etc/day-shift/license.json, Windows %PROGRAMDATA%\\DayShift\\license.json.",
            mutability: "host-state",
            allowedSourceLayers: ["host-state", "product-policy"],
            sensitivity: "host-identifying",
            owningCommandFamily: "license",
            validationRule: pathValidation,
            description: licenseSpecDescription("Host-owned automation license path inventory."),
            inventoryDisplay: { mode: "summary-only", summaryDescription: "Show host-path resolution status without printing license payloads." },
            writePolicy: commandOwned()
        }),
        defineEntry({
            key: "license.automation_host_label_source",
            valueFamily: "host-state",
            valueType: "enum",
            derivedValueDescription: "Automation host label source: hostname or DAY_SHIFT_HOST_LABEL.",
            mutability: "host-state",
            allowedSourceLayers: ["environment", "host-state", "runtime-derived"],
            sensitivity: "host-identifying",
            owningCommandFamily: "license",
            validationRule: stateValidation,
            description: licenseSpecDescription("Host-label provenance for automation host coverage diagnostics."),
            inventoryDisplay: { mode: "summary-only", summaryDescription: "Show host label source without printing sensitive host identity values." },
            writePolicy: commandOwned()
        }),
        defineEntry({
            key: "license.effective_automation_host_label",
            valueFamily: "host-state",
            valueType: "string",
            derivedValueDescription: "Automation host label source and effective value from hostname or DAY_SHIFT_HOST_LABEL.",
            mutability: "host-state",
            allowedSourceLayers: ["environment", "host-state"],
            sensitivity: "host-identifying",
            owningCommandFamily: "license",
            validationRule: stringValidation,
            description: licenseSpecDescription("Host-identifying automation license provenance."),
            inventoryDisplay: { mode: "summary-only", summaryDescription: "Show source and safe host label summary." },
            writePolicy: commandOwned()
        }),
        defineEntry({
            key: "reminder.terminal_eligibility",
            valueFamily: "derived-runtime-state",
            valueType: "object",
            derivedValueDescription: "Whether the current command family, output mode, and write summary are eligible for unlicensed terminal reminders.",
            mutability: "derived-runtime-state",
            allowedSourceLayers: ["runtime-derived", "product-policy"],
            sensitivity: "public",
            owningCommandFamily: "license",
            validationRule: stateValidation,
            description: licenseSpecDescription("Inventory-visible terminal reminder eligibility decision from command family and output-mode policy."),
            inventoryDisplay: { mode: "summary-only", summaryDescription: "Show eligibility and reason-code summary only." },
            writePolicy: notWritable(licenseCommandWriteRejection)
        }),
        defineEntry({
            key: "reminder.grace_period_state",
            valueFamily: "local-state",
            valueType: "object",
            derivedValueDescription: "Unlicensed grace-period status for the first three eligible commands or thirty minutes after first eligible command.",
            mutability: "local-state",
            allowedSourceLayers: ["user-local-state", "product-policy"],
            sensitivity: "local-preference",
            owningCommandFamily: "license",
            validationRule: stateValidation,
            description: licenseSpecDescription("Reminder grace-period state owned by license/reminder commands."),
            inventoryDisplay: { mode: "summary-only", summaryDescription: "Show eligibility and timing summary only." },
            writePolicy: commandOwned()
        }),
        defineEntry({
            key: "reminder.eligible_command_count",
            valueFamily: "local-state",
            valueType: "count",
            derivedValueDescription: "Total eligible unlicensed command count recorded in local reminder state since the state identity was initialized.",
            mutability: "local-state",
            allowedSourceLayers: ["user-local-state"],
            sensitivity: "local-preference",
            owningCommandFamily: "license",
            validationRule: integerValidation,
            description: licenseSpecDescription("Inventory-visible reminder eligible command count from local reminder state."),
            inventoryDisplay: printableDisplay,
            writePolicy: commandOwned()
        }),
        defineEntry({
            key: "reminder.eligible_commands_since_last_reminder",
            valueFamily: "local-state",
            valueType: "count",
            derivedValueDescription: "Eligible command count since the last terminal reminder, used to apply the two-command suppression and forced fifth-command reminder window.",
            mutability: "local-state",
            allowedSourceLayers: ["user-local-state"],
            sensitivity: "local-preference",
            owningCommandFamily: "license",
            validationRule: integerValidation,
            description: licenseSpecDescription("Inventory-visible command count since the last reminder without exposing raw reminder state payloads."),
            inventoryDisplay: printableDisplay,
            writePolicy: commandOwned()
        }),
        defineEntry({
            key: "reminder.last_reminder_at",
            valueFamily: "local-state",
            valueType: "timestamp",
            derivedValueDescription: "UTC RFC 3339 timestamp for the last terminal reminder, or null when no reminder has been shown.",
            mutability: "local-state",
            allowedSourceLayers: ["user-local-state"],
            sensitivity: "local-preference",
            owningCommandFamily: "license",
            validationRule: stateValidation,
            description: licenseSpecDescription("Inventory-visible last reminder timestamp from local reminder state."),
            inventoryDisplay: { mode: "summary-only", summaryDescription: "Show timestamp presence and age summary, not raw reminder state payloads." },
            writePolicy: commandOwned()
        }),
        defineEntry({
            key: "reminder.next_reminder_window",
            valueFamily: "derived-runtime-state",
            valueType: "object",
            derivedValueDescription: "Next terminal reminder window derived from grace-period state, eligible commands since last reminder, deterministic pseudo-random chance, and forced fifth-command policy.",
            mutability: "derived-runtime-state",
            allowedSourceLayers: ["runtime-derived", "user-local-state", "product-policy"],
            sensitivity: "public",
            owningCommandFamily: "license",
            validationRule: stateValidation,
            description: licenseSpecDescription("Inventory-visible next reminder window derived from local cadence state and product policy constants."),
            inventoryDisplay: { mode: "summary-only", summaryDescription: "Show next-window summary without exposing deterministic seed material or raw reminder payloads." },
            writePolicy: notWritable(licenseCommandWriteRejection)
        }),
        defineEntry({
            key: "reminder.state_location",
            valueFamily: "local-state",
            valueType: "file-path",
            derivedValueDescription: `Resolved ${cli_constants_1.REMINDER_STATE_FILE_NAME} location under local Day Shift user state, influenced by the effective OS user and state-directory override when supplied.`,
            mutability: "local-state",
            allowedSourceLayers: ["user-local-state", "host-state", "environment", "runtime-derived"],
            sensitivity: "host-identifying",
            owningCommandFamily: "license",
            validationRule: pathValidation,
            description: licenseSpecDescription("Inventory-safe reminder state location provenance for OS-user and Day Shift state-directory scoped cadence."),
            inventoryDisplay: { mode: "summary-only", summaryDescription: "Show state-location provenance without printing private user, host, or path contents." },
            writePolicy: commandOwned()
        }),
        defineEntry({
            key: "reminder.state_directory_override_influence",
            valueFamily: "derived-runtime-state",
            valueType: "object",
            derivedValueDescription: "Whether an environment or test state-directory override changes reminder state identity for the current invocation.",
            mutability: "environment-only",
            allowedSourceLayers: ["environment", "runtime-derived", "future-candidate"],
            sensitivity: "local-preference",
            owningCommandFamily: "license",
            validationRule: nonConfigInputValidation,
            description: licenseSpecDescription("Environment/test override influence on reminder state identity; this is not repository or local TOML config."),
            inventoryDisplay: { mode: "summary-only", summaryDescription: "Show override-active status without printing private state-directory paths." },
            writePolicy: notWritable("Reminder state-directory overrides are runtime inputs and are not config set targets.")
        }),
        defineEntry({
            key: "reminder.cadence_state",
            valueFamily: "local-state",
            valueType: "object",
            derivedValueDescription: "Reminder eligible command count, last reminder timestamp, next reminder window, and reminder state location.",
            mutability: "local-state",
            allowedSourceLayers: ["user-local-state", "product-policy"],
            sensitivity: "local-preference",
            owningCommandFamily: "license",
            validationRule: stateValidation,
            description: licenseSpecDescription("Reminder cadence state owned by license/reminder commands."),
            inventoryDisplay: { mode: "summary-only", summaryDescription: "Show state location and cadence summary without raw reminder payload details." },
            writePolicy: commandOwned()
        }),
        defineEntry({
            key: "reminder.invalid_license_banner_state",
            valueFamily: "local-state",
            valueType: "object",
            derivedValueDescription: "One-time invalid-license banner state.",
            mutability: "local-state",
            allowedSourceLayers: ["user-local-state"],
            sensitivity: "local-preference",
            owningCommandFamily: "license",
            validationRule: stateValidation,
            description: licenseSpecDescription("Local banner suppression state owned by reminder behavior."),
            inventoryDisplay: { mode: "summary-only", summaryDescription: "Show whether banner state exists, not raw state payloads." },
            writePolicy: commandOwned()
        }),
        defineEntry({
            key: "reminder.fallback_license_reminder_placement",
            valueFamily: "derived-runtime-state",
            valueType: "object",
            derivedValueDescription: "Fallback LICENSE-REMINDER.md placement rule for unlicensed material writes that have no eligible parent coordination artifact.",
            mutability: "derived-runtime-state",
            allowedSourceLayers: ["runtime-derived", "repository-state", "product-policy"],
            sensitivity: "public",
            owningCommandFamily: "license",
            validationRule: stateValidation,
            description: licenseSpecDescription("Inventory-visible fallback LICENSE-REMINDER.md placement policy for generated planning output."),
            inventoryDisplay: { mode: "summary-only", summaryDescription: "Show fallback placement rule, not generated reminder body payloads." },
            writePolicy: notWritable(licenseCommandWriteRejection)
        }),
        defineEntry({
            key: "reminder.managed_region_ownership",
            valueFamily: "read-only-metadata",
            valueType: "object",
            defaultValueDescription: "Stable Day Shift-managed license reminder region markers and fenced text body owned by reminder cleanup/replacement policy.",
            mutability: "read-only-metadata",
            allowedSourceLayers: ["repository-state", "product-policy"],
            sensitivity: "public",
            owningCommandFamily: "license",
            validationRule: stateValidation,
            description: licenseSpecDescription("Managed-region ownership contract for persisted artifact reminders and licensed cleanup."),
            inventoryDisplay: { mode: "summary-only", summaryDescription: "Show stable marker ownership without printing generated reminder body payloads." },
            writePolicy: notWritable(licenseCommandWriteRejection)
        }),
        defineEntry({
            key: "reminder.stale_region_refresh_policy",
            valueFamily: "read-only-metadata",
            valueType: "duration",
            defaultValueDescription: "Refresh managed reminder regions older than thirty days on the next eligible unlicensed material update.",
            mutability: "read-only-metadata",
            allowedSourceLayers: ["repository-state", "product-policy"],
            sensitivity: "public",
            owningCommandFamily: "license",
            validationRule: stateValidation,
            description: licenseSpecDescription("Product policy for stale managed reminder refresh without duplication or grace-period reset."),
            inventoryDisplay: printableDisplay,
            writePolicy: notWritable(licenseCommandWriteRejection)
        }),
        defineEntry({
            key: "reminder.cadence_policy_constants",
            valueFamily: "read-only-metadata",
            valueType: "object",
            defaultValueDescription: "Grace period is first three eligible commands or thirty minutes; after grace, suppress two eligible commands, use 40% deterministic chance on commands three and four, and force on the fifth.",
            mutability: "read-only-metadata",
            allowedSourceLayers: ["product-policy"],
            sensitivity: "public",
            owningCommandFamily: "license",
            validationRule: stateValidation,
            description: licenseSpecDescription("Inventory-visible reminder cadence product constants compiled into reminder policy."),
            inventoryDisplay: printableDisplay,
            writePolicy: notWritable(licenseCommandWriteRejection)
        }),
        defineEntry({
            key: "reminder.generated_fallback_files",
            valueFamily: "local-state",
            valueType: "array",
            derivedValueDescription: "Generated fallback LICENSE-REMINDER.md placement and managed reminder regions in planning artifacts.",
            mutability: "local-state",
            allowedSourceLayers: ["repository-state", "product-policy"],
            sensitivity: "public",
            owningCommandFamily: "license",
            validationRule: stateValidation,
            description: licenseSpecDescription("Generated reminder artifacts owned by license/reminder and planning commands."),
            inventoryDisplay: { mode: "summary-only", summaryDescription: "Show placement rule and managed-region status, not full reminder body payloads." },
            writePolicy: commandOwned()
        })
    ];
}
