[{"data":1,"prerenderedAt":736},["ShallowReactive",2],{"navigation":3,"docs:\u002Feos\u002Fadrs\u002F0005-use-lefthook-for-repository-git-hooks":214,"external-navigation":507},[4,8,201],{"title":5,"path":6,"stem":7},"Documentation","\u002F","README",{"title":9,"path":10,"stem":11,"children":12},"EOS","\u002Feos","eos\u002FREADME",[13,44,121,181],{"title":14,"collapsed":15,"path":16,"stem":17,"children":18,"page":43},"Adrs",true,"\u002Feos\u002Fadrs","eos\u002Fadrs",[19,23,27,31,35,39],{"title":20,"path":21,"stem":22},"Use Turborepo for the EOS monorepo","\u002Feos\u002Fadrs\u002F0001-use-turborepo-for-eos","eos\u002Fadrs\u002F0001-use-turborepo-for-eos",{"title":24,"path":25,"stem":26},"Use Oxc for linting and formatting","\u002Feos\u002Fadrs\u002F0003-use-oxc-for-linting-and-formatting","eos\u002Fadrs\u002F0003-use-oxc-for-linting-and-formatting",{"title":28,"path":29,"stem":30},"Lint Markdown and validate links in CI","\u002Feos\u002Fadrs\u002F0004-lint-markdown-in-ci","eos\u002Fadrs\u002F0004-lint-markdown-in-ci",{"title":32,"path":33,"stem":34},"Use Lefthook for repository-managed Git hooks","\u002Feos\u002Fadrs\u002F0005-use-lefthook-for-repository-git-hooks","eos\u002Fadrs\u002F0005-use-lefthook-for-repository-git-hooks",{"title":36,"path":37,"stem":38},"Use Commitlint's conventional configuration","\u002Feos\u002Fadrs\u002F0006-use-commitlint-conventional-configuration","eos\u002Fadrs\u002F0006-use-commitlint-conventional-configuration",{"title":40,"path":41,"stem":42},"Use Nx for EOS task execution","\u002Feos\u002Fadrs\u002F0007-use-nx-for-eos","eos\u002Fadrs\u002F0007-use-nx-for-eos",false,{"title":45,"path":46,"stem":47,"children":48},"Harbourmaster","\u002Feos\u002Fharbourmaster","eos\u002Fharbourmaster\u002FREADME",[49,58,71,96],{"title":50,"path":51,"stem":52,"children":53,"page":43},"Decisions","\u002Feos\u002Fharbourmaster\u002Fdecisions","eos\u002Fharbourmaster\u002Fdecisions",[54],{"title":55,"path":56,"stem":57},"AI-50: GitHub auth and fork pull request policy","\u002Feos\u002Fharbourmaster\u002Fdecisions\u002Fai-50-auth-and-fork-policy","eos\u002Fharbourmaster\u002Fdecisions\u002Fai-50-auth-and-fork-policy",{"title":59,"path":60,"stem":61,"children":62,"page":43},"Explanation","\u002Feos\u002Fharbourmaster\u002Fexplanation","eos\u002Fharbourmaster\u002Fexplanation",[63,67],{"title":64,"path":65,"stem":66},"The Harbourmaster review pipeline","\u002Feos\u002Fharbourmaster\u002Fexplanation\u002Freview-pipeline","eos\u002Fharbourmaster\u002Fexplanation\u002Freview-pipeline",{"title":68,"path":69,"stem":70},"The Harbourmaster shared-action trust boundary","\u002Feos\u002Fharbourmaster\u002Fexplanation\u002Fshared-action-trust-boundary","eos\u002Fharbourmaster\u002Fexplanation\u002Fshared-action-trust-boundary",{"title":72,"path":73,"stem":74,"children":75,"page":43},"How To","\u002Feos\u002Fharbourmaster\u002Fhow-to","eos\u002Fharbourmaster\u002Fhow-to",[76,80,84,88,92],{"title":77,"path":78,"stem":79},"How to add Harbourmaster reviews to a repository","\u002Feos\u002Fharbourmaster\u002Fhow-to\u002Fadd-harbourmaster-to-a-repository","eos\u002Fharbourmaster\u002Fhow-to\u002Fadd-harbourmaster-to-a-repository",{"title":81,"path":82,"stem":83},"How to build a pilot dashboard","\u002Feos\u002Fharbourmaster\u002Fhow-to\u002Fbuild-pilot-dashboard","eos\u002Fharbourmaster\u002Fhow-to\u002Fbuild-pilot-dashboard",{"title":85,"path":86,"stem":87},"How to configure model routing","\u002Feos\u002Fharbourmaster\u002Fhow-to\u002Fconfigure-model-routing","eos\u002Fharbourmaster\u002Fhow-to\u002Fconfigure-model-routing",{"title":89,"path":90,"stem":91},"How to request a Harbourmaster review","\u002Feos\u002Fharbourmaster\u002Fhow-to\u002Frequest-a-review","eos\u002Fharbourmaster\u002Fhow-to\u002Frequest-a-review",{"title":93,"path":94,"stem":95},"How to diagnose a Harbourmaster review failure","\u002Feos\u002Fharbourmaster\u002Fhow-to\u002Ftroubleshoot-a-review","eos\u002Fharbourmaster\u002Fhow-to\u002Ftroubleshoot-a-review",{"title":97,"path":98,"stem":99,"children":100,"page":43},"Reference","\u002Feos\u002Fharbourmaster\u002Freference","eos\u002Fharbourmaster\u002Freference",[101,105,109,113,117],{"title":102,"path":103,"stem":104},"Harbourmaster command-line interface","\u002Feos\u002Fharbourmaster\u002Freference\u002Fcli","eos\u002Fharbourmaster\u002Freference\u002Fcli",{"title":106,"path":107,"stem":108},"Harbourmaster configuration","\u002Feos\u002Fharbourmaster\u002Freference\u002Fconfiguration","eos\u002Fharbourmaster\u002Freference\u002Fconfiguration",{"title":110,"path":111,"stem":112},"Harbourmaster GitHub Action","\u002Feos\u002Fharbourmaster\u002Freference\u002Fgithub-action","eos\u002Fharbourmaster\u002Freference\u002Fgithub-action",{"title":114,"path":115,"stem":116},"Harbourmaster review behavior","\u002Feos\u002Fharbourmaster\u002Freference\u002Freview-behavior","eos\u002Fharbourmaster\u002Freference\u002Freview-behavior",{"title":118,"path":119,"stem":120},"Harbourmaster telemetry","\u002Feos\u002Fharbourmaster\u002Freference\u002Ftelemetry","eos\u002Fharbourmaster\u002Freference\u002Ftelemetry",{"title":72,"path":122,"stem":123,"children":124,"page":43},"\u002Feos\u002Fhow-to","eos\u002Fhow-to",[125,129,133,137,141,145,149,153,157,161,165,169,173,177],{"title":126,"path":127,"stem":128},"How to add an external documentation source","\u002Feos\u002Fhow-to\u002Fadd-external-documentation-source","eos\u002Fhow-to\u002Fadd-external-documentation-source",{"title":130,"path":131,"stem":132},"How to connect SDLC integrations","\u002Feos\u002Fhow-to\u002Fconnect-sdlc-integrations","eos\u002Fhow-to\u002Fconnect-sdlc-integrations",{"title":134,"path":135,"stem":136},"How to consume the EOS plugin marketplace","\u002Feos\u002Fhow-to\u002Fconsume-eos-marketplace","eos\u002Fhow-to\u002Fconsume-eos-marketplace",{"title":138,"path":139,"stem":140},"How to create a spike ticket","\u002Feos\u002Fhow-to\u002Fcreate-spike-ticket","eos\u002Fhow-to\u002Fcreate-spike-ticket",{"title":142,"path":143,"stem":144},"How to finalise a repository change","\u002Feos\u002Fhow-to\u002Ffinalise-change","eos\u002Fhow-to\u002Ffinalise-change",{"title":146,"path":147,"stem":148},"How to install the EOS Docs MCP server","\u002Feos\u002Fhow-to\u002Finstall-eos-docs-mcp","eos\u002Fhow-to\u002Finstall-eos-docs-mcp",{"title":150,"path":151,"stem":152},"How to resolve a spike ticket","\u002Feos\u002Fhow-to\u002Fresolve-spike-ticket","eos\u002Fhow-to\u002Fresolve-spike-ticket",{"title":154,"path":155,"stem":156},"How to run Git hook checks","\u002Feos\u002Fhow-to\u002Frun-git-hook-checks","eos\u002Fhow-to\u002Frun-git-hook-checks",{"title":158,"path":159,"stem":160},"How to use the AI-enabled SDLC","\u002Feos\u002Fhow-to\u002Fuse-ai-enabled-sdlc","eos\u002Fhow-to\u002Fuse-ai-enabled-sdlc",{"title":162,"path":163,"stem":164},"Use the Aikido plugin","\u002Feos\u002Fhow-to\u002Fuse-aikido-plugin","eos\u002Fhow-to\u002Fuse-aikido-plugin",{"title":166,"path":167,"stem":168},"How to use Compass","\u002Feos\u002Fhow-to\u002Fuse-compass","eos\u002Fhow-to\u002Fuse-compass",{"title":170,"path":171,"stem":172},"How to use Fallow","\u002Feos\u002Fhow-to\u002Fuse-fallow","eos\u002Fhow-to\u002Fuse-fallow",{"title":174,"path":175,"stem":176},"How to use incremental mutation tests","\u002Feos\u002Fhow-to\u002Fuse-incremental-mutation-tests","eos\u002Fhow-to\u002Fuse-incremental-mutation-tests",{"title":178,"path":179,"stem":180},"How to use Scout","\u002Feos\u002Fhow-to\u002Fuse-scout","eos\u002Fhow-to\u002Fuse-scout",{"title":97,"path":182,"stem":183,"children":184,"page":43},"\u002Feos\u002Freference","eos\u002Freference",[185,189,193,197],{"title":186,"path":187,"stem":188},"Compass CLI","\u002Feos\u002Freference\u002Fcompass-cli","eos\u002Freference\u002Fcompass-cli",{"title":190,"path":191,"stem":192},"EOS marketplace skills","\u002Feos\u002Freference\u002Fmarketplace-skills","eos\u002Freference\u002Fmarketplace-skills",{"title":194,"path":195,"stem":196},"Nx task execution and cache","\u002Feos\u002Freference\u002Fnx-task-execution","eos\u002Freference\u002Fnx-task-execution",{"title":198,"path":199,"stem":200},"Scout CLI","\u002Feos\u002Freference\u002Fscout-cli","eos\u002Freference\u002Fscout-cli",{"title":202,"path":203,"stem":204,"children":205},"Product engineering","\u002Fproduct-engineering","product-engineering\u002FREADME",[206],{"title":14,"collapsed":15,"path":207,"stem":208,"children":209,"page":43},"\u002Fproduct-engineering\u002Fadrs","product-engineering\u002Fadrs",[210],{"title":211,"path":212,"stem":213},"Codify Engineering Standards as Skills","\u002Fproduct-engineering\u002Fadrs\u002F0002-codify-engineering-standards-as-skills","product-engineering\u002Fadrs\u002F0002-codify-engineering-standards-as-skills",{"page":215,"surround":504},{"id":216,"title":32,"body":217,"config":499,"description":477,"extension":500,"meta":501,"navigation":15,"path":33,"seo":502,"stem":34,"__hash__":503},"docs\u002Feos\u002Fadrs\u002F0005-use-lefthook-for-repository-git-hooks.md",{"type":218,"value":219,"toc":476},"minimark",[220,225,235,239,242,245,248,252,288,292,297,300,303,307,310,313,315,318,321,324,327,330,334,337,340,344,351,358,372,376,380,397,401,415,419,433,436,439,442,445,448,452,455,473],[221,222,224],"h2",{"id":223},"status","Status",[226,227,228,229,234],"p",{},"Accepted. The ",[230,231,233],"a",{"href":232},"#nx-task-selection-amendment","Nx task selection amendment","\nsupersedes staged-file-only execution and the Turborepo references below.",[221,236,238],{"id":237},"context","Context",[226,240,241],{},"EOS uses pnpm workspaces and Turborepo to coordinate checks across applications,\nlibraries, and versioned plugin packages. Mise provides the development\ntoolchain. Linting, formatting, typechecking, testing, and documentation\nvalidation already have repository-level commands and authoritative CI jobs.",[226,243,244],{},"Git hooks can provide earlier feedback, but they introduce a separate local\nexecution boundary. A hook system must install reliably for contributors, select\nonly relevant staged files, handle paths across the monorepo, and avoid\nduplicating the task graph owned by Turborepo. It should also accommodate\nnon-Node tooling if EOS becomes more polyglot.",[226,246,247],{},"Running the complete workspace check before every commit would increase commit\nlatency and repeat work already performed by CI. Limiting hooks to fast checks\nrequires file filtering, conditional execution, and safe parallelism. These\ncapabilities can be supplied by a hook manager, composed from multiple Node.js\ntools, or implemented in repository-owned scripts.",[221,249,251],{"id":250},"decision-drivers","Decision Drivers",[253,254,255,259,262,265,268,271,279,282,285],"ul",{},[256,257,258],"li",{},"Fast feedback based on the files staged for the current commit.",[256,260,261],{},"One repository-level configuration for all pnpm workspaces.",[256,263,264],{},"Compatibility with the existing mise, pnpm, and Turborepo setup.",[256,266,267],{},"Conditional execution by path and file type without custom routing scripts.",[256,269,270],{},"Parallel execution of independent read-only checks.",[256,272,273,274,278],{},"Support for Git hook types beyond ",[275,276,277],"code",{},"pre-commit"," if they are needed later.",[256,280,281],{},"A language-neutral mechanism that can invoke future non-Node tooling.",[256,283,284],{},"Minimal overlap with Turborepo's package graph and CI's authoritative checks.",[256,286,287],{},"Low configuration and dependency overhead.",[221,289,291],{"id":290},"considered-options","Considered Options",[293,294,296],"h3",{"id":295},"lefthook","Lefthook",[226,298,299],{},"Lefthook is a standalone Git hook manager configured from a repository-level\nYAML file. It provides staged-file templates, glob and path filtering,\nper-command working directories, parallel jobs, and multiple Git hook types. It\ncan be installed as a pnpm development dependency while remaining neutral about\nthe languages and commands it executes.",[226,301,302],{},"Lefthook can perform the required staged-file routing without an additional tool\nsuch as lint-staged. Its configuration can invoke the repository's existing\nlocally installed tools and can add jobs for other ecosystems without changing\nhook managers.",[293,304,306],{"id":305},"husky-with-lint-staged","Husky with lint-staged",[226,308,309],{},"Husky provides a lightweight connection between Git hooks and repository-owned\nshell scripts. lint-staged adds staged-file filtering, command concurrency, and\nhandling for partially staged files.",[226,311,312],{},"Together they meet the functional requirements and are familiar within the\nNode.js ecosystem. They require two dependencies and two configuration layers,\nwith hook behavior divided between shell files and lint-staged configuration.\nHusky alone would require EOS to implement the staged-file orchestration that\nlint-staged or Lefthook already provides.",[293,314,277],{"id":277},[226,316,317],{},"pre-commit is a multi-language hook framework that can install tools into\nisolated environments and run them against matching files. It is well suited to\nrepositories that want the hook system to provision and version toolchains\nindependently of the repository's primary development environment.",[226,319,320],{},"EOS already uses mise for its development toolchain and pnpm for Node.js\ndependencies. Adding pre-commit would introduce a Python-managed installation,\ncache, and dependency lifecycle beside those existing mechanisms. The local\nchecks do not require that isolation.",[293,322,323],{"id":323},"simple-git-hooks",[226,325,326],{},"simple-git-hooks installs commands from package configuration with little\nadditional machinery. It would keep the dependency and installation surface\nsmall.",[226,328,329],{},"It does not provide the staged-file filtering, monorepo routing, or job\norchestration required by this decision. EOS would need to implement and\nmaintain those capabilities in scripts.",[293,331,333],{"id":332},"native-git-hooks-maintained-by-eos","Native Git hooks maintained by EOS",[226,335,336],{},"EOS could maintain hook scripts directly and configure Git to use them during\nrepository setup. This would avoid a hook-manager dependency and allow complete\ncontrol over execution.",[226,338,339],{},"The repository would then own cross-platform installation, updates, file\nselection, quoting, concurrency, and contributor opt-out behavior. Those\nresponsibilities are not specific to EOS and would add maintenance without\nchanging the checks being run.",[221,341,343],{"id":342},"decision-outcome","Decision Outcome",[226,345,346,347,350],{},"EOS will use ",[348,349,296],"strong",{}," to manage repository-provided Git hooks.",[226,352,353,354,357],{},"Lefthook will be installed as a development dependency at the pnpm workspace\nroot, and its required installation script will be explicitly allowed by the\nworkspace's dependency build policy. Hook behavior will be declared in a root\n",[275,355,356],{},"lefthook.yml"," file.",[226,359,360,361,363,364,367,368,371],{},"The initial ",[275,362,277],{}," hook will run fast, read-only formatting and linting\nchecks only for relevant staged files. Independent checks may run in parallel.\nIt will not run the complete ",[275,365,366],{},"pnpm check"," command or duplicate Turborepo's\nworkspace dependency graph. Builds, full typechecking, tests, and release\nvalidation remain authoritative in CI. A future ",[275,369,370],{},"pre-push"," hook may invoke\naffected-package Turbo tasks if commit-time checks prove insufficient, but that\nis outside this decision.",[221,373,375],{"id":374},"consequences","Consequences",[293,377,379],{"id":378},"positive","Positive",[253,381,382,385,388,391,394],{},[256,383,384],{},"Contributors receive formatting and linting feedback before creating a commit.",[256,386,387],{},"Staged-file selection, path filtering, and parallel execution are expressed in\none repository-level configuration.",[256,389,390],{},"EOS does not need lint-staged or custom shell orchestration for the initial\nhook set.",[256,392,393],{},"The hook configuration can cover multiple workspaces and future languages\nwithout changing managers.",[256,395,396],{},"Turborepo and CI retain clear ownership of package-level and complete\nrepository verification.",[293,398,400],{"id":399},"negative","Negative",[253,402,403,406,409,412],{},[256,404,405],{},"Lefthook adds a development dependency and runs an installation script that\nmust be permitted by pnpm's dependency build policy.",[256,407,408],{},"Contributors must reinstall or repair hooks if their local Git configuration\nis changed or the installation step is skipped.",[256,410,411],{},"Commands invoked by hooks still require their underlying tools to be\navailable; Lefthook does not provide isolated tool environments.",[256,413,414],{},"Contributors unfamiliar with Lefthook must learn its configuration and local\nopt-out mechanisms.",[293,416,418],{"id":417},"neutral","Neutral",[253,420,421,424,427,430],{},[256,422,423],{},"Git hooks remain bypassable and therefore provide feedback rather than the\nfinal enforcement boundary; CI continues to enforce repository policy.",[256,425,426],{},"Lefthook manages command execution but does not replace mise, pnpm, or\nTurborepo.",[256,428,429],{},"Commits made from terminals with mise active have the required Node.js and\npnpm commands. The implementation must validate hook behavior from Git GUI\nclients or shells without mise. These clients may require a documented setup\nstep.",[256,431,432],{},"The exact staged-file globs and commands will evolve with the repository's\nsupported file types while preserving the decision boundary described here.",[221,434,233],{"id":435},"nx-task-selection-amendment",[226,437,438],{},"Date: 2026-09-10",[226,440,441],{},"Nx replaces Turborepo as the task runner. Lefthook manages Git events and passes\nstaged or pushed filenames to Nx. Nx selects affected projects, runs the check\ntools, and manages parallel execution and the task cache.",[226,443,444],{},"The pre-commit hook runs lint, format, and Markdown checks for selected\nprojects. These checks read their full inputs in the working tree, including\nunstaged files. This replaces the initial staged-file-only scope. An unstaged\nerror in a selected project can therefore block a commit.",[226,446,447],{},"The pre-push hook runs the repository's offline link check when the push\nincludes Markdown changes. Builds, typechecks, tests, and release checks remain\nseparate from the commit hook. The finalise-change skill and CI use the same Nx\ntargets.",[221,449,451],{"id":450},"ultracite-amendment","Ultracite amendment",[226,453,454],{},"Date: 2026-09-15",[226,456,457,458,461,462,465,466,472],{},"The pre-commit hook first runs ",[275,459,460],{},"ultracite fix"," on supported staged source files.\nLefthook adds safe fixes to the Git index with ",[275,463,464],{},"stage_fixed",". The hook then runs\nthe Nx checks from the previous amendment. This step follows the\n",[230,467,471],{"href":468,"rel":469},"https:\u002F\u002Fwww.ultracite.ai\u002Fdocs\u002Fgit-hooks",[470],"nofollow","Ultracite Git hook guidance",".",[226,474,475],{},"The hook passes explicit staged filenames to Ultracite. It does not apply fixes\nto unrelated unstaged source files. Markdown keeps its separate repository\nchecks because the documentation workflow also uses Markdownlint. Lefthook adds\nthe complete fixed file, so a partially staged file needs index review.",{"title":477,"searchDepth":478,"depth":478,"links":479},"",3,[480,482,483,484,491,492,497,498],{"id":223,"depth":481,"text":224},2,{"id":237,"depth":481,"text":238},{"id":250,"depth":481,"text":251},{"id":290,"depth":481,"text":291,"children":485},[486,487,488,489,490],{"id":295,"depth":478,"text":296},{"id":305,"depth":478,"text":306},{"id":277,"depth":478,"text":277},{"id":323,"depth":478,"text":323},{"id":332,"depth":478,"text":333},{"id":342,"depth":481,"text":343},{"id":374,"depth":481,"text":375,"children":493},[494,495,496],{"id":378,"depth":478,"text":379},{"id":399,"depth":478,"text":400},{"id":417,"depth":478,"text":418},{"id":435,"depth":481,"text":233},{"id":450,"depth":481,"text":451},{},"md",{},{"title":32,"description":477},"kEDvZ60H3c6k69aztL_YUUnghNShJCPejZ5ec-WGHSk",[505,506],{"title":28,"path":29,"stem":30,"children":-1},{"title":36,"path":37,"stem":38,"children":-1},[508,561],{"nav":509,"source":558},[510],{"title":511,"path":512,"stem":513,"children":514,"page":-1},"Ember","\u002Fember","ember",[515,518,550,554],{"title":516,"path":512,"stem":517},"StoreFront Documentation","ember\u002Findex",{"title":14,"path":519,"stem":520,"children":521,"page":43},"\u002Fember\u002Fadrs","ember\u002Fadrs",[522,526,530,534,538,542,546],{"title":523,"path":524,"stem":525},"Add Infection as a non-blocking mutation testing tool for Ember","\u002Fember\u002Fadrs\u002F0001-infection-mutation-testing","ember\u002Fadrs\u002F0001-infection-mutation-testing",{"title":527,"path":528,"stem":529},"Process DELETE scheduled changes before CREATE_UPDATE at the same instant","\u002Fember\u002Fadrs\u002F0002-scheduled-change-processing-order","ember\u002Fadrs\u002F0002-scheduled-change-processing-order",{"title":531,"path":532,"stem":533},"Standard rate scheduling is permanent until overridden","\u002Fember\u002Fadrs\u002F0003-standard-rate-scheduling-is-permanent","ember\u002Fadrs\u002F0003-standard-rate-scheduling-is-permanent",{"title":535,"path":536,"stem":537},"Promotions require an existing standard rate","\u002Fember\u002Fadrs\u002F0004-promotions-require-existing-standard-rate","ember\u002Fadrs\u002F0004-promotions-require-existing-standard-rate",{"title":539,"path":540,"stem":541},"UTC datetime contract between Storefront and Hub","\u002Fember\u002Fadrs\u002F0005-utc-datetime-contract-between-storefront-and-hub","ember\u002Fadrs\u002F0005-utc-datetime-contract-between-storefront-and-hub",{"title":543,"path":544,"stem":545},"Elapsed unprocessed scheduled changes do not block rate changes","\u002Fember\u002Fadrs\u002F0006-stale-scheduler-rows-do-not-block-rate-changes","ember\u002Fadrs\u002F0006-stale-scheduler-rows-do-not-block-rate-changes",{"title":547,"path":548,"stem":549},"ADR-0007: Delete ConfigureTenantAuth routing command once OIDC setup migrates to Hub","\u002Fember\u002Fadrs\u002F0007-delete-configure-tenant-auth-routing-command","ember\u002Fadrs\u002F0007-delete-configure-tenant-auth-routing-command",{"title":551,"path":552,"stem":553},"Domain Overview","\u002Fember\u002Fdomain_overview","ember\u002Fdomain_overview",{"title":555,"path":556,"stem":557},"Main Flows","\u002Fember\u002Fkey_flows","ember\u002Fkey_flows",{"collectionName":559,"label":560,"prefix":513},"external_ember","StoreFront (Ember)",{"nav":562,"source":734},[563],{"title":564,"path":565,"stem":566,"children":567,"page":-1},"Core","\u002Fcore","core",[568,571,599,603,625,629,639,656,713,717],{"title":569,"path":565,"stem":570},"Documentation Index","core\u002Findex",{"title":14,"path":572,"stem":573,"children":574,"page":43},"\u002Fcore\u002Fadrs","core\u002Fadrs",[575,579,583,587,591,595],{"title":576,"path":577,"stem":578},"ADR-XXXX: Short, descriptive title","\u002Fcore\u002Fadrs\u002F0000-template","core\u002Fadrs\u002F0000-template",{"title":580,"path":581,"stem":582},"ADR-1: Promotions endpoint","\u002Fcore\u002Fadrs\u002F0001-add-promotions-endpoint","core\u002Fadrs\u002F0001-add-promotions-endpoint",{"title":584,"path":585,"stem":586},"ADR-2: EOM partner report job dispatch","\u002Fcore\u002Fadrs\u002F0002-eom-report-job-dispatch","core\u002Fadrs\u002F0002-eom-report-job-dispatch",{"title":588,"path":589,"stem":590},"ADR-3: Replace PB fee waive flag with a Zero scheme override","\u002Fcore\u002Fadrs\u002F0003-replace-pb-fee-waive-with-zero-scheme","core\u002Fadrs\u002F0003-replace-pb-fee-waive-with-zero-scheme",{"title":592,"path":593,"stem":594},"ADR-4: No processor Digital Top-up capability gate in Reloadable Commercials","\u002Fcore\u002Fadrs\u002F0004-no-processor-top-up-capability-gate","core\u002Fadrs\u002F0004-no-processor-top-up-capability-gate",{"title":596,"path":597,"stem":598},"ADR-5: Sparse polymorphic sale fee override reason stamp","\u002Fcore\u002Fadrs\u002F0005-sale-fee-override-reason-stamp","core\u002Fadrs\u002F0005-sale-fee-override-reason-stamp",{"title":600,"path":601,"stem":602},"Agent Workflow","\u002Fcore\u002Fai-workflow","core\u002Fai-workflow",{"title":604,"path":605,"stem":606,"children":607,"page":-1},"Backend Guide","\u002Fcore\u002Fbackend","core\u002Fbackend\u002Findex",[608,609,613,617,621],{"title":604,"path":605,"stem":606},{"title":610,"path":611,"stem":612},"Backend AI Tooling","\u002Fcore\u002Fbackend\u002Fai-tooling","core\u002Fbackend\u002Fai-tooling",{"title":614,"path":615,"stem":616},"Backend Linting and Formatting","\u002Fcore\u002Fbackend\u002Flinting-and-formatting","core\u002Fbackend\u002Flinting-and-formatting",{"title":618,"path":619,"stem":620},"Backend Setup","\u002Fcore\u002Fbackend\u002Fsetup","core\u002Fbackend\u002Fsetup",{"title":622,"path":623,"stem":624},"Backend Testing","\u002Fcore\u002Fbackend\u002Ftesting","core\u002Fbackend\u002Ftesting",{"title":626,"path":627,"stem":628},"Documentation Health","\u002Fcore\u002Fdoc-health","core\u002Fdoc-health",{"title":630,"path":631,"stem":632,"children":633,"page":-1},"Frontend Guide","\u002Fcore\u002Ffrontend","core\u002Ffrontend\u002Findex",[634,635],{"title":630,"path":631,"stem":632},{"title":636,"path":637,"stem":638},"Frontend Development","\u002Fcore\u002Ffrontend\u002Fdevelopment","core\u002Ffrontend\u002Fdevelopment",{"title":640,"path":641,"stem":642,"children":643,"page":43},"Modules","\u002Fcore\u002Fmodules","core\u002Fmodules",[644,648],{"title":645,"path":646,"stem":647},"Connect API","\u002Fcore\u002Fmodules\u002Fconnect-api","core\u002Fmodules\u002Fconnect-api",{"title":649,"path":650,"stem":651,"children":652,"page":43},"Secure Links","\u002Fcore\u002Fmodules\u002Fsecure-links","core\u002Fmodules\u002Fsecure-links",[653],{"title":649,"path":654,"stem":655},"\u002Fcore\u002Fmodules\u002Fsecure-links\u002Fsecure-links","core\u002Fmodules\u002Fsecure-links\u002Fsecure-links",{"title":657,"path":658,"stem":659,"children":660,"page":43},"Processors","\u002Fcore\u002Fprocessors","core\u002Fprocessors",[661,665,669,673,677,681,685,689,693,697,701,705,709],{"title":662,"path":663,"stem":664},"Amazon Processor and API","\u002Fcore\u002Fprocessors\u002Famazon","core\u002Fprocessors\u002Famazon",{"title":666,"path":667,"stem":668},"Amilon Processor and API","\u002Fcore\u002Fprocessors\u002Familon","core\u002Fprocessors\u002Familon",{"title":670,"path":671,"stem":672},"Cadooz Processor and API","\u002Fcore\u002Fprocessors\u002Fcadooz","core\u002Fprocessors\u002Fcadooz",{"title":674,"path":675,"stem":676},"Choice Digital Processor and API","\u002Fcore\u002Fprocessors\u002Fchoice-digital","core\u002Fprocessors\u002Fchoice-digital",{"title":678,"path":679,"stem":680},"Diggecard processor reference","\u002Fcore\u002Fprocessors\u002Fdiggecard","core\u002Fprocessors\u002Fdiggecard",{"title":682,"path":683,"stem":684},"ePay Processor and API","\u002Fcore\u002Fprocessors\u002Fepay","core\u002Fprocessors\u002Fepay",{"title":686,"path":687,"stem":688},"GoGift v2 Processor and API","\u002Fcore\u002Fprocessors\u002Fgo-gift-v2","core\u002Fprocessors\u002Fgo-gift-v2",{"title":690,"path":691,"stem":692},"InComm Processor and API","\u002Fcore\u002Fprocessors\u002Fincomm","core\u002Fprocessors\u002Fincomm",{"title":694,"path":695,"stem":696},"Ogloba Processor and API","\u002Fcore\u002Fprocessors\u002Fogloba","core\u002Fprocessors\u002Fogloba",{"title":698,"path":699,"stem":700},"SVSECard Processor and API","\u002Fcore\u002Fprocessors\u002Fsvs-ecard","core\u002Fprocessors\u002Fsvs-ecard",{"title":702,"path":703,"stem":704},"Vananam Processor and API","\u002Fcore\u002Fprocessors\u002Fvananam","core\u002Fprocessors\u002Fvananam",{"title":706,"path":707,"stem":708},"Vouchers Depot processor reference","\u002Fcore\u002Fprocessors\u002Fvouchers-depot","core\u002Fprocessors\u002Fvouchers-depot",{"title":710,"path":711,"stem":712},"You Got a Gift Processor and API","\u002Fcore\u002Fprocessors\u002Fyou-got-a-gift","core\u002Fprocessors\u002Fyou-got-a-gift",{"title":714,"path":715,"stem":716},"Development Quickstart","\u002Fcore\u002Fsetup","core\u002Fsetup",{"title":718,"path":719,"stem":720,"children":721,"page":43},"Workflows","\u002Fcore\u002Fworkflows","core\u002Fworkflows",[722,726,730],{"title":723,"path":724,"stem":725},"Hub Endpoint Workflow","\u002Fcore\u002Fworkflows\u002Fhub-endpoints","core\u002Fworkflows\u002Fhub-endpoints",{"title":727,"path":728,"stem":729},"OpenAPI Tooling","\u002Fcore\u002Fworkflows\u002Fopenapi-tooling","core\u002Fworkflows\u002Fopenapi-tooling",{"title":731,"path":732,"stem":733},"Processor Integration Workflow","\u002Fcore\u002Fworkflows\u002Fprocessors","core\u002Fworkflows\u002Fprocessors",{"collectionName":735,"label":564,"prefix":566},"external_core",1789777546826]