Amvionlie CMS
Where the Future Begins

Sample Manifest

Use this as the compact copyable manifest for a simple governed addon.

This sample matches the current contract-provider pattern: the manifest identifies the package and points to the real contract files. It does not copy permission catalogs, route tables, admin target lists, or public target records.

Before Packaging

  • Replace both UUIDs.
  • Replace every `example_notes` key, route, handler, namespace, permission, and path.
  • Confirm `product_uuid` is unchanged when releasing an update.
  • Confirm `package_uuid` is unique for this package artifact.
  • Confirm every provider path exists in the package.
  • Confirm the install contract and schema contract can run from inside the deployed addon folder.

Related pages: Addon Development/Manifest Contract, Addon Development/Install Contract, Reference Samples/Manifest Instructions.

<?php
declare(strict_types=1);

if (!defined('HC_ACCESS')) {
    exit;
}

return [
    'placeholder' => false,
    'product_uuid' => '11111111-2222-4333-8444-555555555555',
    'package_uuid' => 'aaaaaaaa-bbbb-4ccc-8ddd-eeeeeeeeeeee',
    'addon_key' => 'example_notes',
    'display_name' => 'Example Notes',
    'slug' => 'example-notes',
    'version' => 'v0.0001 Alpha',
    'addon_type' => 'application',
    'status' => 'ready_for_review',
    'classification' => [
        'home' => 'extenders',
        'bucket' => 'content',
    ],
    'contract_providers' => [
        'install_contract' => [
            'path' => 'addons/example_notes/bootstrap/install_contract.php',
            'trusted_by' => 'installer',
        ],
        'schema_contract' => [
            'path' => 'addons/example_notes/src/schema_contract.php',
            'trusted_by' => 'installer',
        ],
        'permissions_contract' => [
            'path' => 'addons/example_notes/src/permissions_contract.php',
            'function' => 'amv_example_notes_permissions_contract',
            'trusted_by' => 'installer_aem',
        ],
        'route_contract' => [
            'path' => 'addons/example_notes/routes/routes.php',
            'function' => 'amv_example_notes_routes_contract',
            'trusted_by' => 'admin_aem',
        ],
        'admin_controller' => [
            'path' => 'addons/example_notes/src/admin_runtime.php',
            'handler' => 'amv_example_notes_admin_route',
            'trusted_by' => 'admin_runtime_after_route_acceptance',
        ],
        'public_targets' => [
            'path' => 'addons/example_notes/src/public_targets.php',
            'function' => 'amv_example_notes_public_target_provider',
            'trusted_by' => 'menu_manager_aem_frontend_target_selection',
        ],
    ],
    'summary' => 'Example Notes owns example note records, admin management, and optional frontend note display.',
    'risk_declarations' => [
        'filesystem_write' => false,
        'database_schema' => true,
        'database_data' => true,
        'public_surface' => true,
        'admin_surface' => true,
        'external_network' => false,
        'destructive_actions' => true,
        'notes' => 'Owns example note tables and public note routes.',
    ],
    'note' => 'Manifest describes the package and points to contracts. Permissions, routes, schema, and public targets are owned by their contract files.',
];

Where The Detailed Truth Lives

  • Full permissions: `addons/example_notes/src/permissions_contract.php`
  • Full route contract: `addons/example_notes/routes/routes.php`
  • Installer pointers: `addons/example_notes/bootstrap/install_contract.php`
  • Public target records/access metadata: `addons/example_notes/src/public_targets.php`
  • Schema SQL/apply behavior: `addons/example_notes/src/schema_contract.php`

Updated: 2026-05-07 20:06:59