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`