Opens in a new tab
Deliver toTennessee
0 0 0Cart
Get a Project Quote

Athenian Order Fulfillment

v0.2.1 October 7, 2026
WooCommerce-native task planning and operational controls for hybrid fulfillment.

Overview

Product overview

WooCommerce is strong at catalog, cart, checkout, payment, and order storage, but hybrid fulfillment introduces operational complexity that WooCommerce does not solve on its own. A single order may include items fulfilled by the merchant, items routed to a vendor, items that require special acknowledgement, products that can only ship by specific services, and out-of-stock products that need notification capture.

Athenian Order Fulfillment solves that gap by giving WooCommerce a fulfillment planning and control surface. The core AOF layer reads order line items, groups them by fulfillment source, persists those groups as private fulfillment tasks, and lets operations staff review, plan, reserve, pack, and hand off fulfillment work from a dedicated admin interface. The bundled modules extend that same workflow with configurable order-level fulfillment statuses, customer back-in-stock subscriptions, product acknowledgement requirements, and shipping-rule controls for heat-sensitive or otherwise restricted products.

For Athenian Platform builds, this plugin becomes the bridge between checkout and real-world fulfillment execution.

Persistent fulfillment tasks split by store, vendor, warehouse, and order context.
Admin queue for planning, reservation, packing, shipment handoff, and exceptions.
Bundled status, back-in-stock, acknowledgement, and shipping-rule modules.
Adapter hooks for warehouse discovery, inventory reservation, and release.

Use cases

  • Mixed store and vendor fulfillment
  • Warehouse and inventory planning
  • Shipment Manager handoff
  • Back-in-stock and product acknowledgement workflows

Developer

Developer starting point

This baseline was generated from the local athenian-order-fulfillment source folder and the linked product record. The source folder is the reviewed implementation boundary for this pass; runtime behavior remains deployment-dependent; the GitHub repository identity for this documentation baseline is verified.

Technical Architecture

Plugin identity

  • Plugin name: Athenian Order Fulfillment
  • Plugin slug: athenian-order-fulfillment
  • Version: 0.2.0
  • Primary file: athenian-order-fulfillment.php
  • Requires PHP: 8.0
  • Requires plugin: WooCommerce
  • Text domain: athenian-order-fulfillment
  • Core CPT: ath_fulfillment
  • Core capability: aof_manage

Main file structure

athenian-order-fulfillment.php
assets/admin/admin.css
assets/admin/admin.js
docs/aof-marketing-document.md
docs/athenian-platform-marketing.md
docs/athenian-platform-technical.md
includes/Plugin.php
includes/Setup.php
includes/Admin/Assets.php
includes/Admin/Menu.php
includes/Admin/Tabs.php
includes/Admin/Pages/Dashboard.php
includes/Admin/Pages/Queue.php
includes/Admin/Pages/Settings.php
includes/Ajax/Tasks.php
includes/Models/Fulfillment.php
includes/Services/Inventory.php
includes/Services/Planner.php
includes/Services/Shipping.php
modules/fulfillment-rules/
modules/notify-back-in-stock/
modules/order-fulfillment-statuses/
modules/product-acknowledgements/

Boot process

The main plugin file loads includes/Plugin.php and includes/Setup.php, initializes activation handling, and boots the singleton on plugins_loaded.

The Plugin class then:

  • Defines constants for AOF and bundled module paths/URLs.
  • Loads the core model, service, admin, and AJAX classes.
  • Includes consolidated module code.
  • Registers the ath_fulfillment CPT on init.
  • Registers the aof_manage capability on administrator and shop manager roles.
  • Adds the Fulfillment admin menu and submenus.
  • Registers AJAX task endpoints.
  • Hooks fulfillment planning into WooCommerce order lifecycle events.
  • Declares WooCommerce HPOS compatibility when WooCommerce’s FeaturesUtil class is available.

Namespaces and primary classes

Core namespaces:

  • Athenian\OrderFulfillment
  • Athenian\OrderFulfillment\Admin
  • Athenian\OrderFulfillment\Admin\Pages
  • Athenian\OrderFulfillment\Ajax
  • Athenian\OrderFulfillment\Models
  • Athenian\OrderFulfillment\Services

Bundled module namespaces:

  • Athenian\OrderFulfillmentStatus
  • ColumbiaCoatings\NotifyBackInStock
  • ColumbiaCoatings\NotifyBackInStock\Admin
  • ColumbiaCoatings\NotifyBackInStock\CLI
  • ColumbiaCoatings\HeatHold
  • CCPA
  • CCPA\Admin
  • CCPA\Frontend

Primary classes:

  • Athenian\OrderFulfillment\Plugin
  • Athenian\OrderFulfillment\Setup
  • Athenian\OrderFulfillment\Models\Fulfillment
  • Athenian\OrderFulfillment\Services\Planner
  • Athenian\OrderFulfillment\Services\Inventory
  • Athenian\OrderFulfillment\Services\Shipping
  • Athenian\OrderFulfillment\Ajax\Tasks
  • Athenian\OrderFulfillment\Admin\Menu
  • Athenian\OrderFulfillment\Admin\Tabs
  • Athenian\OrderFulfillment\Admin\Assets
  • Athenian\OrderFulfillment\Admin\Pages\Dashboard
  • Athenian\OrderFulfillment\Admin\Pages\Queue
  • Athenian\OrderFulfillment\Admin\Pages\Settings
  • Athenian\OrderFulfillmentStatus\Plugin
  • ColumbiaCoatings\NotifyBackInStock\Plugin
  • ColumbiaCoatings\NotifyBackInStock\Repository
  • ColumbiaCoatings\NotifyBackInStock\StockWatcher
  • ColumbiaCoatings\NotifyBackInStock\Mailer
  • ColumbiaCoatings\HeatHold\Options
  • ColumbiaCoatings\HeatHold\Shipping
  • ColumbiaCoatings\HeatHold\Frontend
  • CCPA\Plugin
  • CCPA\Admin\Admin
  • CCPA\Frontend\Frontend
  • CCPA\Frontend\WC_AJAX

Data Model

Fulfillment task CPT

AOF stores fulfillment work as private WordPress posts using the ath_fulfillment post type.

The CPT is registered as:

  • public => false
  • show_ui => false
  • show_in_menu => false
  • supports => ['title', 'custom-fields']
  • rewrite => false

The queue and dashboard use custom admin pages rather than exposing the CPT’s native edit screen.

Fulfillment task meta schema

Each task stores operational metadata:

| Meta key | Type | Purpose | |---|---:|---| | _order_id | integer | Source WooCommerce order ID. | | _group_key | string | Idempotent task grouping key such as store:wh:default or vendor:123. | | _group_type | string | store or vendor. | | _vendor_id | integer | Vendor ID for vendor tasks; 0 for store tasks. | | _warehouse_id | string | Warehouse handle for store tasks. | | _status | string | Operational task status. | | _items_json | JSON string | Simplified fulfillment lines for the task. | | _shipment_id | integer | Shipment Manager shipment record ID, when created. | | _notes | string | Internal notes. |

Fulfillment line schema

The planner normalizes each order line into a compact structure:

| Field | Purpose | |---|---| | item_id | WooCommerce order item ID. | | product_id | Product or variation product ID. | | variation_id | Variation ID when the line is a variation. | | sku | Product SKU. | | name | Order item name. | | qty | Quantity to fulfill. |

The line array is filterable through aof_fulfillment_line.

Fulfillment task statuses

The model and queue support statuses such as:

  • pending
  • reserved
  • picking
  • packed
  • shipped
  • done
  • hold

The current UI exposes quick actions for packed, done, and shipment creation. Inventory reservation can move a store task to reserved; failed reservation moves it to hold.

Order fulfillment-status meta

The fulfillment-status module stores one or more values on the WooCommerce order under:

_cofs_fulfillment_status

The module deletes and re-adds this metadata when statuses are saved, allowing a single order to hold multiple operational status slugs.

Fulfillment-status option storage

Configured fulfillment statuses are stored in:

cofs_statuses

Each status definition contains a label and slug.

Back-in-stock custom table

The notify-back-in-stock module creates a custom database table:

{$wpdb->prefix}cc_nbis_signups

Table fields include:

| Column | Purpose | |---|---| | id | Signup ID. | | email | Subscriber email. | | user_id | Logged-in user ID, when available. | | product_id | Product ID. | | variation_id | Variation ID, when relevant. | | status | pending, confirmed, notified, unsubscribed, or related admin-managed states. | | token | Unique public confirm/unsubscribe token. | | created_at | Signup timestamp. | | confirmed_at | Double opt-in confirmation timestamp. | | notified_at | Back-in-stock notification timestamp. | | ip | Signup IP address. | | user_agent | Signup user agent. | | note | Admin note. |

The table includes indexes for email, product, variation, status, token, product/status, and variation/status lookups.

Product acknowledgement option storage

The product acknowledgements module stores settings in:

ccpa_settings

Settings include enable state, base CSS, and an ordered list of acknowledgement rules. Each rule can contain tag IDs, title, message, confirmation button text, custom CSS, and enabled state.

Fulfillment rules option storage

The fulfillment-rules module stores settings in:

cchh_settings

Settings include global enable state, accent color, and rule definitions. Each rule can define priority, active date range, product matchers, package handling, shipping action, service patterns, customer messaging, acknowledgement behavior, line-item labels, and internal notes.

AJAX, Admin Actions & Shortcodes

Core AOF AJAX actions

All core AOF AJAX actions require the aof_manage capability and verify the aof_nonce nonce.

| Action | Purpose | |---|---| | aof_lookup_order | Load order status, total, currency, shipping/billing address, line items, vendor IDs, and existing fulfillment tasks. | | aof_plan_order | Manually run fulfillment planning for an order. | | aof_list_tasks | Return recent fulfillment tasks for the dashboard or queue. | | aof_mark_done | Update a task status, commonly to done or packed. | | aof_create_shipment | Reserve inventory for store tasks, create Shipment Manager shipment, attach shipment ID, and open packing workflow. |

Notify Back In Stock AJAX and public actions

| Surface | Purpose | |---|---| | wp_ajax_cc_nbis_subscribe | Logged-in customer signup. | | wp_ajax_nopriv_cc_nbis_subscribe | Guest signup. | | ?cc_nbis_confirm={token} | Public confirmation endpoint. | | ?cc_nbis_unsub={token} | Public unsubscribe endpoint. |

Product acknowledgement AJAX actions

| Action | Purpose | |---|---| | ccpa_should_ack | Returns whether a product requires acknowledgement and provides modal payload. |

This endpoint is registered for both logged-in and logged-out customers. The add-to-cart validation also checks request data server-side so the confirmation requirement is not purely cosmetic.

Admin post actions

The bundled modules use admin-post handlers for exports and back-in-stock management:

| Action | Purpose | |---|---| | aofs_export_orders_csv | Export fulfillment-status-filtered orders to CSV. | | cofs_export_orders_csv | Legacy export action retained for compatibility. | | cc_nbis_save_settings | Save back-in-stock settings. | | cc_nbis_create | Create a back-in-stock signup from admin. | | cc_nbis_update | Update a signup. | | cc_nbis_delete | Delete a signup. | | cc_nbis_send | Manually send a notification. | | cc_nbis_bulk | Bulk-manage signup rows. |

Shortcodes

| Shortcode | Purpose | |---|---| | [cc_notify_back_in_stock] | Render a back-in-stock signup form for a product or variation. |

Supported shortcode attributes include product_id and variation_id.

WP-CLI commands

The notify-back-in-stock module registers a cc-nbis WP-CLI command when WP-CLI is available.

Examples:

wp cc-nbis dispatch 123
wp cc-nbis dispatch 123 --variation=456
wp cc-nbis list --status=pending
wp cc-nbis list [email protected]

WooCommerce Integration Points

Order lifecycle hooks

The core planner hooks into:

  • woocommerce_payment_complete
  • woocommerce_order_status_changed

These hooks allow automatic fulfillment task creation after payment or when an order enters configured statuses such as processing.

Order admin hooks

The fulfillment-status module integrates with both legacy and HPOS order admin experiences:

  • Adds order edit metaboxes.
  • Saves fulfillment statuses during order meta processing.
  • Adds fulfillment-status columns to order lists.
  • Adds order list filters.
  • Filters legacy and HPOS order queries.
  • Exports filtered order sets.

Product and cart hooks

The acknowledgement and fulfillment-rule modules integrate with product and cart flows through hooks such as:

  • woocommerce_single_product_summary
  • woocommerce_after_add_to_cart_form
  • woocommerce_loop_add_to_cart_link
  • woocommerce_add_to_cart_validation
  • woocommerce_get_item_data
  • woocommerce_before_cart
  • woocommerce_before_checkout_form

These hooks allow the plugin to display notices, inject acknowledgement payloads, and prevent add-to-cart when customer confirmation is missing.

Shipping hooks

The fulfillment-rules module modifies shipping behavior through:

  • woocommerce_cart_shipping_packages
  • woocommerce_package_rates
  • woocommerce_shipping_package_name

This allows matching products to be split into their own packages, lets rules filter available package rates, and updates package names for customer clarity.

Stock hooks

The back-in-stock module listens for:

  • woocommerce_product_set_stock_status
  • woocommerce_variation_set_stock_status

When an item returns to stock, the module finds pending or confirmed signups and sends configured back-in-stock emails.

Inventory & Warehouse Adapter Layer

The Inventory service is deliberately hook-based. It does not assume a specific ERP, warehouse table, or inventory plugin.

Warehouse discovery

apply_filters('aof_get_warehouses', [])

Expected result examples:

[
    ['id' => 'main', 'name' => 'Main Warehouse'],
    ['id' => 'west', 'name' => 'West Coast Warehouse'],
]

String-only values are also normalized into id/name pairs.

Warehouse selection

apply_filters('aof_select_warehouse_for_order', $default, $order_id, $lines)

A warehouse integration can choose the best warehouse based on destination, stock availability, product type, or operational rules.

Inventory reservation

apply_filters('aof_reserve_inventory', null, $warehouse_id, $lines, $context)

Expected response:

[
    'ok' => true,
    'holds' => [],
    'message' => 'reserved'
]

If no integration handles the filter, the default behavior returns success with an empty hold list. This keeps the core planner usable even before a warehouse adapter is connected.

Inventory release

do_action('aof_release_inventory', $warehouse_id, $holds, $context)

The release action gives external inventory systems a path to clear holds when a task changes state, fails, or is cancelled.

Shipment Manager Integration

The Shipping service checks for:

Athenian\ShipmentManager\Shipment_Store
Athenian\ShipmentManager\Plugin

When available, AOF can call:

Athenian\ShipmentManager\Shipment_Store::create_from_order($order, $meta)

The current shipment creation path uses _status => packed by default, then attaches the returned shipment ID to the fulfillment task and opens the Shipment Manager packing page with the source order ID.

This makes AOF the planning layer and Shipment Manager the physical packing/shipment execution layer.

Extension Points

Core AOF filters and actions

| Hook | Type | Purpose | |---|---|---| | aof_fulfillment_line | Filter | Modify a normalized fulfillment line before grouping. | | aof_fulfillment_groups | Filter | Modify final fulfillment groups before tasks are created. | | aof_get_warehouses | Filter | Provide warehouse choices to the settings UI and planner. | | aof_select_warehouse_for_order | Filter | Select a warehouse for store-fulfilled lines. | | aof_reserve_inventory | Filter | Reserve inventory for a task before creating a shipment. | | aof_release_inventory | Action | Release inventory holds from an external system. |

Fulfillment status module hooks

| Hook | Type | Purpose | |---|---|---| | aofs/status_options | Filter | Modify normalized status options keyed by slug. | | aofs/status_definitions | Filter | Modify raw status definitions before normalization. | | aofs/default_status_definitions | Filter | Modify seeded default status definitions. | | aofs/order_fulfillment_statuses_updated | Action | Respond after statuses are updated on an order. |

Live fleet review — 2026-10-07

Order Fulfillment is not a single fleet version. Athenian Spa is active on 0.1.0 with installed main-file SHA-256 946b2f5c3c5210b1101efec9725490dcfdd64f644baec3ce7ce15a658cf78319; CatMilk is active on 0.2.1 with installed main-file SHA-256 cf9990cb83032e65d77ef47c1715f231fb97c22ce1163fce73a6307a45061354. The documented source baseline is baseline/devdocs-0.2.1-20261006 at commit 22700022a3a6c59fb76b247c215ed6c710d8e29c; its reviewed canonical main-file hash is 89ade71aeff498eabe072dd9737d15b18c38dca24f648864a70883bb027335ce.

Read-only runtime inspection found 418 ath_fulfillment records on Spa and 3 on CatMilk. Both variants expose the AOF AJAX actions for lookup, listing, planning, completion, and shipment creation. CatMilk also has aof_auto_plan_enabled=yes, a configured auto-plan status list, an empty default warehouse, and a scheduled license-check hook; Spa did not expose those AOF options in the captured option boundary.

The live main-file hashes differ from the documented canonical source and from each other. Treat Spa 0.1.0 and CatMilk 0.2.1 as separate variants; no shared promotion or fulfillment mutation was performed.

Normalized fleet parity — 2026-10-07

The canonical comparison used the reviewed baseline/devdocs-0.2.1-20261006 source at commit 22700022a3a6c59fb76b247c215ed6c710d8e29c. The comparison normalized text line endings and excluded vendor, cache, backup, archive, and site-generated log/task artifacts.

Athenian Spa — reduced 0.1.0 variant

The live tree contains 16 comparable files versus 68 canonical files: 52 canonical files are absent, 11 common files have normalized content differences, and 5 differ only by line endings. This is a materially reduced 0.1.0 implementation, not a packaging-only fork. It does not include the license client bootstrap, consolidated-module boot, Batch Print/Tabs admin surfaces, fulfillment rules, back-in-stock notifications, order-fulfillment statuses, or product acknowledgements present in the 0.2.1 source baseline. The site currently contains 418 ath_fulfillment records.

CatMilk — full-tree fork with three content differences

The live tree has the same 68-file shape as the canonical comparison. 64 raw differences are line-ending-only; 3 normalized content forks remain:

  • includes/Plugin.php: the live internal version constant is 0.2.0 while the plugin header is active as 0.2.1; the CCPA constant is 1.2.2 versus the canonical 1.2.1; the Batch Print include is removed.
  • modules/product-acknowledgements/assets/frontend/popup.js: the live fork preserves the clicked submitter using requestSubmit() or a hidden fallback and carries that submitter through product-ID resolution and modal paths.
  • modules/product-acknowledgements/columbia-coatings-product-acknowledgements.php: the live module version is 1.2.2 versus the canonical 1.2.1.

CatMilk currently contains 3 ath_fulfillment records, exposes aof_auto_plan_enabled=yes with an auto-plan status list and empty default warehouse, and has the scheduled athenian-order-fulfillment_license_check hook. These differences require owner confirmation before treating the tree as a shared release identity.

Promotion boundary

The 0.2.1 GitHub source remains the authoritative documentation reference, but Spa 0.1.0 and CatMilk's live fork remain separate deployment variants. No plugin files, task records, options, queues, order statuses, shipment calls, or fulfillment data were changed during this parity review.

Install

Source and dependencies
  • Reviewed source folder: athenian-order-fulfillment
  • Plugin version reviewed: 0.2.1
  • Local source inventory: 69 files (vendor, temporary, and test fixtures excluded).
  • WordPress with PHP 8.0 or newer.
  • WooCommerce is required by the plugin header.
  • Optional Shipment Manager and Athenian vendor modules extend handoff and routing behavior.
  • Athenian Spa runtime: active 0.1.0, main-file SHA-256 946b2f5c3c5210b1101efec9725490dcfdd64f644baec3ce7ce15a658cf78319, with 418 stored ath_fulfillment records observed.

  • CatMilk runtime: active 0.2.1, main-file SHA-256 cf9990cb83032e65d77ef47c1715f231fb97c22ce1163fce73a6307a45061354, with 3 stored ath_fulfillment records observed.

  • Treat the two deployments as separate variants until normalized full-tree parity and queue/status behavior are proven.
Normalized parity and deployment variants — 2026-10-07
  • Canonical comparison scope: 68 normalized non-vendor/non-backup/non-archive/non-log source files.
  • Athenian Spa: 16 live files, 52 canonical files missing; retain as a reduced 0.1.0 variant until its support owner decides otherwise.
  • CatMilk: 68 live files with 3 normalized content forks and 64 line-ending-only raw differences; retain as a separate live fork.
  • Do not infer a fleet-wide upgrade from the CatMilk deployment or from the repository source baseline.

Configuration

Implementation areas
  • Technical Architecture — see the linked technical reference excerpt.
  • Data Model — see the linked technical reference excerpt.
  • AJAX, Admin Actions & Shortcodes — see the linked technical reference excerpt.
  • WooCommerce Integration Points — see the linked technical reference excerpt.
  • Inventory & Warehouse Adapter Layer — see the linked technical reference excerpt.
  • Shipment Manager Integration — see the linked technical reference excerpt.
  • Extension Points — see the linked technical reference excerpt.
Fleet deployment review — 2026-10-07
  • Athenian Spa runtime: active 0.1.0, main-file SHA-256 946b2f5c3c5210b1101efec9725490dcfdd64f644baec3ce7ce15a658cf78319, with 418 stored ath_fulfillment records observed.

  • CatMilk runtime: active 0.2.1, main-file SHA-256 cf9990cb83032e65d77ef47c1715f231fb97c22ce1163fce73a6307a45061354, with 3 stored ath_fulfillment records observed.

  • Treat the two deployments as separate variants until normalized full-tree parity and queue/status behavior are proven.

Usage

Detected extension surface
  • Shortcodes detected in local PHP source: 1
  • Static action/filter hooks detected in local PHP source: 79
  • REST route registrations detected in local PHP source: 0

Shortcodes

Detected shortcodes
  • cc_notify_back_in_stock — modules/notify-back-in-stock/includes/Frontend.php

REST Endpoints

Detected REST routes
  • No register_rest_route calls were detected by the baseline scanner.

Hooks

Detected hooks
  • add_meta_boxes — modules/order-fulfillment-statuses/includes/class-cofs-plugin.php
  • admin_enqueue_scripts — includes/Plugin.php
  • admin_enqueue_scripts — modules/fulfillment-rules/includes/Admin.php
  • admin_enqueue_scripts — modules/notify-back-in-stock/includes/Admin/AdminController.php
  • admin_enqueue_scripts — modules/order-fulfillment-statuses/includes/class-cofs-plugin.php
  • admin_enqueue_scripts — modules/product-acknowledgements/includes/admin/class-ccpa-admin.php
  • admin_init — modules/fulfillment-rules/includes/Admin.php
  • admin_init — modules/order-fulfillment-statuses/includes/class-cofs-plugin.php
  • admin_init — modules/product-acknowledgements/includes/admin/class-ccpa-admin.php
  • admin_menu — includes/Plugin.php
  • admin_menu — modules/fulfillment-rules/includes/Admin.php
  • admin_menu — modules/notify-back-in-stock/includes/Admin/AdminController.php
  • admin_menu — modules/order-fulfillment-statuses/includes/class-cofs-plugin.php
  • admin_menu — modules/product-acknowledgements/includes/admin/class-ccpa-admin.php
  • admin_notices — modules/order-fulfillment-statuses/includes/class-cofs-plugin.php
  • admin_post_cc_nbis_bulk — modules/notify-back-in-stock/includes/Admin/AdminController.php
  • admin_post_cc_nbis_create — modules/notify-back-in-stock/includes/Admin/AdminController.php
  • admin_post_cc_nbis_delete — modules/notify-back-in-stock/includes/Admin/AdminController.php
  • admin_post_cc_nbis_save_settings — modules/notify-back-in-stock/includes/Admin/AdminController.php
  • admin_post_cc_nbis_send — modules/notify-back-in-stock/includes/Admin/AdminController.php
  • admin_post_cc_nbis_update — modules/notify-back-in-stock/includes/Admin/AdminController.php
  • admin_post_ — modules/order-fulfillment-statuses/includes/class-cofs-plugin.php
  • before_woocommerce_init — includes/Plugin.php
  • before_woocommerce_init — modules/fulfillment-rules/columbia-coatings-heat-hold.php
  • before_woocommerce_init — modules/notify-back-in-stock/columbia-coatings-notify-back-in-stock.php
  • before_woocommerce_init — modules/order-fulfillment-statuses/custom-order-fulfillment-statuses.php
  • init — includes/Plugin.php
  • init — includes/Setup.php
  • init — modules/notify-back-in-stock/includes/Plugin.php
  • init — modules/product-acknowledgements/includes/class-ccpa-plugin.php
  • manage_edit-shop_order_columns — modules/order-fulfillment-statuses/includes/class-cofs-plugin.php
  • manage_shop_order_posts_custom_column — modules/order-fulfillment-statuses/includes/class-cofs-plugin.php
  • manage_woocommerce_page_wc-orders_columns — modules/order-fulfillment-statuses/includes/class-cofs-plugin.php
  • manage_woocommerce_page_wc-orders_custom_column — modules/order-fulfillment-statuses/includes/class-cofs-plugin.php
  • plugins_loaded — athenian-order-fulfillment.php
  • plugins_loaded — modules/fulfillment-rules/columbia-coatings-heat-hold.php
  • plugins_loaded — modules/notify-back-in-stock/columbia-coatings-notify-back-in-stock.php
  • plugins_loaded — modules/order-fulfillment-statuses/custom-order-fulfillment-statuses.php
  • plugins_loaded — modules/product-acknowledgements/columbia-coatings-product-acknowledgements.php
  • plugin_action_links_ — modules/order-fulfillment-statuses/includes/class-cofs-plugin.php
  • pre_get_posts — modules/order-fulfillment-statuses/includes/class-cofs-plugin.php
  • restrict_manage_posts — modules/order-fulfillment-statuses/includes/class-cofs-plugin.php
  • woocommerce_add_to_cart_validation — modules/fulfillment-rules/includes/Frontend.php
  • woocommerce_add_to_cart_validation — modules/product-acknowledgements/includes/frontend/class-ccpa-frontend.php
  • woocommerce_after_add_to_cart_form — modules/notify-back-in-stock/includes/Frontend.php
  • woocommerce_before_cart — modules/fulfillment-rules/includes/Frontend.php
  • woocommerce_before_checkout_form — modules/fulfillment-rules/includes/Frontend.php
  • woocommerce_cart_shipping_packages — modules/fulfillment-rules/includes/Shipping.php
  • woocommerce_get_item_data — modules/fulfillment-rules/includes/Frontend.php
  • woocommerce_loop_add_to_cart_link — modules/fulfillment-rules/includes/Frontend.php
  • woocommerce_loop_add_to_cart_link — modules/product-acknowledgements/includes/frontend/class-ccpa-frontend.php
  • woocommerce_order_list_table_prepare_items_query_args — modules/order-fulfillment-statuses/includes/class-cofs-plugin.php
  • woocommerce_order_list_table_restrict_manage_orders — modules/order-fulfillment-statuses/includes/class-cofs-plugin.php
  • woocommerce_order_status_changed — includes/Plugin.php
  • woocommerce_package_rates — modules/fulfillment-rules/includes/Shipping.php
  • woocommerce_payment_complete — includes/Plugin.php
  • woocommerce_process_shop_order_meta — modules/order-fulfillment-statuses/includes/class-cofs-plugin.php
  • woocommerce_product_set_stock_status — modules/notify-back-in-stock/includes/StockWatcher.php
  • woocommerce_shipping_package_name — modules/fulfillment-rules/includes/Shipping.php
  • woocommerce_single_product_summary — modules/fulfillment-rules/includes/Frontend.php
  • woocommerce_single_product_summary — modules/notify-back-in-stock/includes/Frontend.php
  • woocommerce_variation_set_stock_status — modules/notify-back-in-stock/includes/StockWatcher.php
  • wp_ajax_aof_create_shipment — includes/Plugin.php
  • wp_ajax_aof_list_tasks — includes/Plugin.php
  • wp_ajax_aof_lookup_order — includes/Plugin.php
  • wp_ajax_aof_mark_done — includes/Plugin.php
  • wp_ajax_aof_plan_order — includes/Plugin.php
  • wp_ajax_ccpa_should_ack — modules/fulfillment-rules/includes/Frontend.php
  • wp_ajax_ccpa_should_ack — modules/product-acknowledgements/includes/frontend/class-ccpa-wc-ajax.php
  • wp_ajax_cc_nbis_subscribe — modules/notify-back-in-stock/includes/Frontend.php
  • wp_ajax_nopriv_ccpa_should_ack — modules/fulfillment-rules/includes/Frontend.php
  • wp_ajax_nopriv_ccpa_should_ack — modules/product-acknowledgements/includes/frontend/class-ccpa-wc-ajax.php
  • wp_ajax_nopriv_cc_nbis_subscribe — modules/notify-back-in-stock/includes/Frontend.php
  • wp_enqueue_scripts — modules/fulfillment-rules/includes/Frontend.php
  • wp_enqueue_scripts — modules/notify-back-in-stock/includes/Frontend.php
  • wp_enqueue_scripts — modules/product-acknowledgements/includes/frontend/class-ccpa-frontend.php
  • wp_footer — modules/fulfillment-rules/includes/Frontend.php
  • wp_footer — modules/product-acknowledgements/includes/frontend/class-ccpa-frontend.php
  • wp_mail_failed — modules/notify-back-in-stock/includes/Mailer.php

Data Model

Persistence boundary
  • Data Model — described in the local technical reference.
  • WooCommerce Integration Points — described in the local technical reference.
  • Inventory & Warehouse Adapter Layer — described in the local technical reference.
  • Shipment Manager Integration — described in the local technical reference.

API Reference

Source inventory and provenance
  • Local source digest: def83bcd85c4b002c654b814b7b37ff5e05ebaa2381d67b9ae783b72dfe3fc7e
  • Repository commit: 22700022a3a6c59fb76b247c215ed6c710d8e29c (verified GitHub baseline branch baseline/devdocs-0.2.1-20261006).

  • Source files include: README.md, assets/admin/admin.css, assets/admin/admin.js, athenian-order-fulfillment-icon.png, athenian-order-fulfillment.php, athenian-order-fulfillment.zip, docs/aof-marketing-document.md, docs/athenian-platform-marketing.md, docs/athenian-platform-technical.md, docs/technical-marketing.md, includes/Admin/Assets.php, includes/Admin/Menu.php, includes/Admin/Pages/Batch_Print.php, includes/Admin/Pages/Dashboard.php, includes/Admin/Pages/Queue.php, includes/Admin/Pages/Settings.php, includes/Admin/Tabs.php, includes/Ajax/Tasks.php, includes/Models/Fulfillment.php, includes/Plugin.php, includes/Services/Inventory.php, includes/Services/Planner.php, …

Live identity and runtime observation — 2026-10-07
  • Observed AOF AJAX actions: aof_lookup_order, aof_list_tasks, aof_plan_order, aof_mark_done, and aof_create_shipment.

  • The private ath_fulfillment CPT is registered on both sites with admin UI disabled; stored task counts differ materially between Spa and CatMilk.

  • CatMilk exposes aof_auto_plan_enabled=yes, an auto-plan status list, an empty aof_default_warehouse, and a scheduled athenian-order-fulfillment_license_check hook.

Normalized fleet parity — 2026-10-07
  • Canonical source: 68 comparable files; main-file SHA-256 89ade71aeff498eabe072dd9737d15b18c38dca24f648864a70883bb027335ce.
  • Spa live main-file SHA-256: 946b2f5c3c5210b1101efec9725490dcfdd64f644baec3ce7ce15a658cf78319; CatMilk live main-file SHA-256: cf9990cb83032e65d77ef47c1715f231fb97c22ce1163fce73a6307a45061354.

  • Common AOF AJAX actions observed on both sites: aof_lookup_order, aof_list_tasks, aof_plan_order, aof_mark_done, aof_create_shipment.
  • The complete normalized fork list is documented in the Fleet parity section above; version, CCPA, Batch Print, and submitter-preservation differences remain owner-review items.

Troubleshooting

Baseline review boundary
  • This is a published baseline generated from local source documentation and the linked WooCommerce product record.
  • Confirm the deployed plugin version, active dependencies, and current repository commit before using implementation details as a release contract.
  • Treat pricing, payment, vendor, shipment, inventory, and external-provider behavior as integration-dependent until exercised in the target environment.
Current fleet boundary — 2026-10-07
  • Do not use the newer CatMilk version as a fleet-wide upgrade recommendation; its live main-file hash does not match the recorded canonical source hash and its stored task population is different.

  • Planning, reserve, complete, shipment, queue, inventory, order-status, and vendor effects were not invoked during this review.
Parity-specific troubleshooting — 2026-10-07
  • If a feature is documented in the 0.2.1 source but absent on Spa, first confirm the site is still on the reduced 0.1.0 tree; do not treat the absence as a runtime outage without an owner-approved rollout.

  • If CatMilk reports a version mismatch, inspect both the plugin header and the internal Plugin.php constant; the live fork contains 0.2.0 internally while the active header reports 0.2.1.

  • Before reconciling either site, capture a new rollback archive and separately verify task counts, auto-plan settings, scheduled hooks, and shipment/provider boundaries.

FAQ

What is this page intended to establish?

A versioned, product-linked starting point for iterative developer documentation. It combines the local implementation reference with a compact detected-code inventory so later passes can refine exact contracts.

Is the linked repository commit verified?

Verified GitHub baseline: https://github.com/Athenian-Brands/athenian-order-fulfillment at branch baseline/devdocs-0.2.1-20261006 and commit 22700022a3a6c59fb76b247c215ed6c710d8e29c.

Which Order Fulfillment version is authoritative for the fleet?

None is promoted fleet-wide yet. The documentation keeps the GitHub 0.2.1 baseline authoritative for source reference while explicitly recording Spa 0.1.0 and CatMilk 0.2.1 as separate live variants requiring normalized parity and behavior review.

Which Order Fulfillment variant is authoritative?

The GitHub baseline/devdocs-0.2.1-20261006 source remains the authoritative documentation reference. Spa 0.1.0 and CatMilk remain separate live variants until their owners approve a shared release decision.

Does normalized parity mean the live sites should be upgraded now?

No. Spa is a reduced 0.1.0 tree and CatMilk has three normalized content forks. Parity evidence improves the documentation baseline; it does not authorize promotion, task migration, queue replay, or configuration changes.