[{"data":1,"prerenderedAt":1208},["ShallowReactive",2],{"navigation":3,"external-navigation":214,"docs:\u002Feos\u002Fharbourmaster\u002Freference\u002Fgithub-action":443},[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",[215,268],{"nav":216,"source":265},[217],{"title":218,"path":219,"stem":220,"children":221},"Ember","\u002Fember","ember",[222,225,257,261],{"title":223,"path":219,"stem":224},"StoreFront Documentation","ember\u002Findex",{"title":14,"path":226,"stem":227,"children":228,"page":43},"\u002Fember\u002Fadrs","ember\u002Fadrs",[229,233,237,241,245,249,253],{"title":230,"path":231,"stem":232},"Add Infection as a non-blocking mutation testing tool for Ember","\u002Fember\u002Fadrs\u002F0001-infection-mutation-testing","ember\u002Fadrs\u002F0001-infection-mutation-testing",{"title":234,"path":235,"stem":236},"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":238,"path":239,"stem":240},"Standard rate scheduling is permanent until overridden","\u002Fember\u002Fadrs\u002F0003-standard-rate-scheduling-is-permanent","ember\u002Fadrs\u002F0003-standard-rate-scheduling-is-permanent",{"title":242,"path":243,"stem":244},"Promotions require an existing standard rate","\u002Fember\u002Fadrs\u002F0004-promotions-require-existing-standard-rate","ember\u002Fadrs\u002F0004-promotions-require-existing-standard-rate",{"title":246,"path":247,"stem":248},"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":250,"path":251,"stem":252},"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":254,"path":255,"stem":256},"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":258,"path":259,"stem":260},"Domain Overview","\u002Fember\u002Fdomain_overview","ember\u002Fdomain_overview",{"title":262,"path":263,"stem":264},"Main Flows","\u002Fember\u002Fkey_flows","ember\u002Fkey_flows",{"collectionName":266,"label":267,"prefix":220},"external_ember","StoreFront (Ember)",{"nav":269,"source":441},[270],{"title":271,"path":272,"stem":273,"children":274},"Core","\u002Fcore","core",[275,278,306,310,332,336,346,363,420,424],{"title":276,"path":272,"stem":277},"Documentation Index","core\u002Findex",{"title":14,"path":279,"stem":280,"children":281,"page":43},"\u002Fcore\u002Fadrs","core\u002Fadrs",[282,286,290,294,298,302],{"title":283,"path":284,"stem":285},"ADR-XXXX: Short, descriptive title","\u002Fcore\u002Fadrs\u002F0000-template","core\u002Fadrs\u002F0000-template",{"title":287,"path":288,"stem":289},"ADR-1: Promotions endpoint","\u002Fcore\u002Fadrs\u002F0001-add-promotions-endpoint","core\u002Fadrs\u002F0001-add-promotions-endpoint",{"title":291,"path":292,"stem":293},"ADR-2: EOM partner report job dispatch","\u002Fcore\u002Fadrs\u002F0002-eom-report-job-dispatch","core\u002Fadrs\u002F0002-eom-report-job-dispatch",{"title":295,"path":296,"stem":297},"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":299,"path":300,"stem":301},"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":303,"path":304,"stem":305},"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":307,"path":308,"stem":309},"Agent Workflow","\u002Fcore\u002Fai-workflow","core\u002Fai-workflow",{"title":311,"path":312,"stem":313,"children":314},"Backend Guide","\u002Fcore\u002Fbackend","core\u002Fbackend\u002Findex",[315,316,320,324,328],{"title":311,"path":312,"stem":313},{"title":317,"path":318,"stem":319},"Backend AI Tooling","\u002Fcore\u002Fbackend\u002Fai-tooling","core\u002Fbackend\u002Fai-tooling",{"title":321,"path":322,"stem":323},"Backend Linting and Formatting","\u002Fcore\u002Fbackend\u002Flinting-and-formatting","core\u002Fbackend\u002Flinting-and-formatting",{"title":325,"path":326,"stem":327},"Backend Setup","\u002Fcore\u002Fbackend\u002Fsetup","core\u002Fbackend\u002Fsetup",{"title":329,"path":330,"stem":331},"Backend Testing","\u002Fcore\u002Fbackend\u002Ftesting","core\u002Fbackend\u002Ftesting",{"title":333,"path":334,"stem":335},"Documentation Health","\u002Fcore\u002Fdoc-health","core\u002Fdoc-health",{"title":337,"path":338,"stem":339,"children":340},"Frontend Guide","\u002Fcore\u002Ffrontend","core\u002Ffrontend\u002Findex",[341,342],{"title":337,"path":338,"stem":339},{"title":343,"path":344,"stem":345},"Frontend Development","\u002Fcore\u002Ffrontend\u002Fdevelopment","core\u002Ffrontend\u002Fdevelopment",{"title":347,"path":348,"stem":349,"children":350,"page":43},"Modules","\u002Fcore\u002Fmodules","core\u002Fmodules",[351,355],{"title":352,"path":353,"stem":354},"Connect API","\u002Fcore\u002Fmodules\u002Fconnect-api","core\u002Fmodules\u002Fconnect-api",{"title":356,"path":357,"stem":358,"children":359,"page":43},"Secure Links","\u002Fcore\u002Fmodules\u002Fsecure-links","core\u002Fmodules\u002Fsecure-links",[360],{"title":356,"path":361,"stem":362},"\u002Fcore\u002Fmodules\u002Fsecure-links\u002Fsecure-links","core\u002Fmodules\u002Fsecure-links\u002Fsecure-links",{"title":364,"path":365,"stem":366,"children":367,"page":43},"Processors","\u002Fcore\u002Fprocessors","core\u002Fprocessors",[368,372,376,380,384,388,392,396,400,404,408,412,416],{"title":369,"path":370,"stem":371},"Amazon Processor and API","\u002Fcore\u002Fprocessors\u002Famazon","core\u002Fprocessors\u002Famazon",{"title":373,"path":374,"stem":375},"Amilon Processor and API","\u002Fcore\u002Fprocessors\u002Familon","core\u002Fprocessors\u002Familon",{"title":377,"path":378,"stem":379},"Cadooz Processor and API","\u002Fcore\u002Fprocessors\u002Fcadooz","core\u002Fprocessors\u002Fcadooz",{"title":381,"path":382,"stem":383},"Choice Digital Processor and API","\u002Fcore\u002Fprocessors\u002Fchoice-digital","core\u002Fprocessors\u002Fchoice-digital",{"title":385,"path":386,"stem":387},"Diggecard processor reference","\u002Fcore\u002Fprocessors\u002Fdiggecard","core\u002Fprocessors\u002Fdiggecard",{"title":389,"path":390,"stem":391},"ePay Processor and API","\u002Fcore\u002Fprocessors\u002Fepay","core\u002Fprocessors\u002Fepay",{"title":393,"path":394,"stem":395},"GoGift v2 Processor and API","\u002Fcore\u002Fprocessors\u002Fgo-gift-v2","core\u002Fprocessors\u002Fgo-gift-v2",{"title":397,"path":398,"stem":399},"InComm Processor and API","\u002Fcore\u002Fprocessors\u002Fincomm","core\u002Fprocessors\u002Fincomm",{"title":401,"path":402,"stem":403},"Ogloba Processor and API","\u002Fcore\u002Fprocessors\u002Fogloba","core\u002Fprocessors\u002Fogloba",{"title":405,"path":406,"stem":407},"SVSECard Processor and API","\u002Fcore\u002Fprocessors\u002Fsvs-ecard","core\u002Fprocessors\u002Fsvs-ecard",{"title":409,"path":410,"stem":411},"Vananam Processor and API","\u002Fcore\u002Fprocessors\u002Fvananam","core\u002Fprocessors\u002Fvananam",{"title":413,"path":414,"stem":415},"Vouchers Depot processor reference","\u002Fcore\u002Fprocessors\u002Fvouchers-depot","core\u002Fprocessors\u002Fvouchers-depot",{"title":417,"path":418,"stem":419},"You Got a Gift Processor and API","\u002Fcore\u002Fprocessors\u002Fyou-got-a-gift","core\u002Fprocessors\u002Fyou-got-a-gift",{"title":421,"path":422,"stem":423},"Development Quickstart","\u002Fcore\u002Fsetup","core\u002Fsetup",{"title":425,"path":426,"stem":427,"children":428,"page":43},"Workflows","\u002Fcore\u002Fworkflows","core\u002Fworkflows",[429,433,437],{"title":430,"path":431,"stem":432},"Hub Endpoint Workflow","\u002Fcore\u002Fworkflows\u002Fhub-endpoints","core\u002Fworkflows\u002Fhub-endpoints",{"title":434,"path":435,"stem":436},"OpenAPI Tooling","\u002Fcore\u002Fworkflows\u002Fopenapi-tooling","core\u002Fworkflows\u002Fopenapi-tooling",{"title":438,"path":439,"stem":440},"Processor Integration Workflow","\u002Fcore\u002Fworkflows\u002Fprocessors","core\u002Fworkflows\u002Fprocessors",{"collectionName":442,"label":271,"prefix":273},"external_core",{"page":444,"surround":1205},{"id":445,"title":110,"body":446,"config":1199,"description":1200,"extension":1201,"meta":1202,"navigation":15,"path":111,"seo":1203,"stem":112,"__hash__":1204},"docs\u002Feos\u002Fharbourmaster\u002Freference\u002Fgithub-action.md",{"type":447,"value":448,"toc":1186},"minimark",[449,458,463,482,493,497,920,924,935,941,953,969,973,1033,1042,1046,1057,1072,1085,1089,1092,1102,1109,1116,1120,1135,1141,1145,1159,1162,1166,1183],[450,451,452,453,457],"p",{},"The composite action at ",[454,455,456],"code",{},"TilloTech\u002Feos\u002Fapps\u002Fharbourmaster"," runs a Harbourmaster\nreview for one GitHub pull request. It has no declared outputs.",[459,460,462],"h2",{"id":461},"runtime","Runtime",[450,464,465,466,469,470,473,474,477,478,481],{},"The action uses Bash steps, installs the repository-declared pnpm version with\nCorepack, and runs on Node.js ",[454,467,468],{},"24",". It also installs Bun ",[454,471,472],{},"1.4.2"," to run the\nbuilt CLI. Every pnpm command starts from the downloaded EOS action workspace so\nCorepack cannot select a consuming repository's package manager version. It\nrestores the pnpm store using the EOS lockfile, installs only Harbourmaster's\nworkspace dependency graph with a frozen lockfile, exposes its pinned OpenCode\nCLI, builds ",[454,475,476],{},"@eos\u002Fharbourmaster",", configures AWS, and starts the built runner\nwith the bundled ",[454,479,480],{},".opencode"," configuration.",[450,483,484,485,488,489,492],{},"Consumer repositories use ",[454,486,487],{},"TilloTech\u002Feos\u002Fapps\u002Fharbourmaster@main"," so they run\nthe latest Harbourmaster version merged to EOS. Package version ",[454,490,491],{},"0.5.0"," first\nsupported organization-shared use from the EOS source workspace.",[459,494,496],{"id":495},"inputs","Inputs",[498,499,500,519],"table",{},[501,502,503],"thead",{},[504,505,506,510,513,516],"tr",{},[507,508,509],"th",{},"Input",[507,511,512],{},"Required",[507,514,515],{},"Default",[507,517,518],{},"Description",[520,521,522,545,561,575,606,623,639,662,681,697,713,729,749,763,777,791,805,819,833,847,861,875,889,903],"tbody",{},[504,523,524,530,533,538],{},[525,526,527],"td",{},[454,528,529],{},"repo",[525,531,532],{},"No",[525,534,535],{},[454,536,537],{},"github.repository",[525,539,540,541,544],{},"Repository in ",[454,542,543],{},"owner\u002Fname"," form.",[504,546,547,552,555,558],{},[525,548,549],{},[454,550,551],{},"pull_number",[525,553,554],{},"Yes",[525,556,557],{},"none",[525,559,560],{},"Pull request number.",[504,562,563,568,570,572],{},[525,564,565],{},[454,566,567],{},"head_sha",[525,569,554],{},[525,571,557],{},[525,573,574],{},"Expected pull request head SHA. It must equal the checked-out workspace HEAD.",[504,576,577,582,584,589],{},[525,578,579],{},[454,580,581],{},"mode",[525,583,532],{},[525,585,586],{},[454,587,588],{},"comment",[525,590,591,592,595,596,595,599,601,602,605],{},"Run mode: ",[454,593,594],{},"silent",", ",[454,597,598],{},"check-only",[454,600,588],{},", or ",[454,603,604],{},"blocking",".",[504,607,608,613,615,620],{},[525,609,610],{},[454,611,612],{},"debug",[525,614,532],{},[525,616,617],{},[454,618,619],{},"false",[525,621,622],{},"Enables runner debug details.",[504,624,625,630,632,636],{},[525,626,627],{},[454,628,629],{},"strict_runtime",[525,631,532],{},[525,633,634],{},[454,635,619],{},[525,637,638],{},"Fails when degradation prevents real model execution.",[504,640,641,646,648,653],{},[525,642,643],{},[454,644,645],{},"auth_mode",[525,647,532],{},[525,649,650],{},[454,651,652],{},"github_token",[525,654,655,656,658,659,605],{},"GitHub authentication mode: ",[454,657,652],{}," or ",[454,660,661],{},"github_app",[504,663,664,668,670,675],{},[525,665,666],{},[454,667,652],{},[525,669,532],{},[525,671,672],{},[454,673,674],{},"github.token",[525,676,677,678,680],{},"Token for ",[454,679,652],{}," mode.",[504,682,683,688,690,692],{},[525,684,685],{},[454,686,687],{},"github_app_id",[525,689,532],{},[525,691,557],{},[525,693,694,695,680],{},"App ID for ",[454,696,661],{},[504,698,699,704,706,708],{},[525,700,701],{},[454,702,703],{},"github_app_private_key",[525,705,532],{},[525,707,557],{},[525,709,710,711,680],{},"PEM private key for ",[454,712,661],{},[504,714,715,720,722,724],{},[525,716,717],{},[454,718,719],{},"github_app_installation_id",[525,721,532],{},[525,723,557],{},[525,725,726,727,680],{},"Installation ID for ",[454,728,661],{},[504,730,731,736,738,742],{},[525,732,733],{},[454,734,735],{},"workspace_root",[525,737,532],{},[525,739,740],{},[454,741,605],{},[525,743,744,745,748],{},"Absolute path or path relative to ",[454,746,747],{},"GITHUB_WORKSPACE"," for the reviewed checkout.",[504,750,751,756,758,760],{},[525,752,753],{},[454,754,755],{},"aws_role_to_assume",[525,757,532],{},[525,759,557],{},[525,761,762],{},"IAM role ARN assumed through GitHub OIDC.",[504,764,765,770,772,774],{},[525,766,767],{},[454,768,769],{},"aws_profile",[525,771,532],{},[525,773,557],{},[525,775,776],{},"AWS profile for self-hosted runners.",[504,778,779,784,786,788],{},[525,780,781],{},[454,782,783],{},"aws_bearer_token_bedrock",[525,785,532],{},[525,787,557],{},[525,789,790],{},"Bedrock bearer token.",[504,792,793,798,800,802],{},[525,794,795],{},[454,796,797],{},"aws_access_key_id",[525,799,532],{},[525,801,557],{},[525,803,804],{},"AWS access key ID.",[504,806,807,812,814,816],{},[525,808,809],{},[454,810,811],{},"aws_secret_access_key",[525,813,532],{},[525,815,557],{},[525,817,818],{},"AWS secret access key.",[504,820,821,826,828,830],{},[525,822,823],{},[454,824,825],{},"aws_session_token",[525,827,532],{},[525,829,557],{},[525,831,832],{},"AWS session token.",[504,834,835,840,842,844],{},[525,836,837],{},[454,838,839],{},"bedrock_model",[525,841,532],{},[525,843,557],{},[525,845,846],{},"Override for all model tiers.",[504,848,849,854,856,858],{},[525,850,851],{},[454,852,853],{},"bedrock_fast_review_model",[525,855,532],{},[525,857,557],{},[525,859,860],{},"Fast-review tier override.",[504,862,863,868,870,872],{},[525,864,865],{},[454,866,867],{},"bedrock_deep_review_model",[525,869,532],{},[525,871,557],{},[525,873,874],{},"Deep-review tier override.",[504,876,877,882,884,886],{},[525,878,879],{},[454,880,881],{},"bedrock_editor_model",[525,883,532],{},[525,885,557],{},[525,887,888],{},"Editor tier override.",[504,890,891,896,898,900],{},[525,892,893],{},[454,894,895],{},"bedrock_fallback_model",[525,897,532],{},[525,899,557],{},[525,901,902],{},"Fallback tier override.",[504,904,905,910,912,917],{},[525,906,907],{},[454,908,909],{},"artifact_retention_days",[525,911,532],{},[525,913,914],{},[454,915,916],{},"1",[525,918,919],{},"Number of days to retain the downloadable OpenCode JSON event-log artifact.",[459,921,923],{"id":922},"supported-workflow-boundary","Supported workflow boundary",[450,925,926,927,930,931,934],{},"The supported setup uses one native pull request workflow. Its\n",[454,928,929],{},"Harbourmaster review"," job excludes forks and drafts, applies the\n",[454,932,933],{},"harbourmaster-review"," label, checks out the exact pull request head, and runs\nthe reviewer. GitHub therefore attaches the job to the pull request without a\ncustom check run.",[450,936,937,938,940],{},"Automatic pull request events run the job only when the label is absent. The job\nadds the label to record that review cycle. Later commits fail the native check\nwith a warning before review execution. A human removes and re-adds\n",[454,939,933],{}," to review the latest head and satisfy a required check;\nautomation must not request the re-review.",[450,942,943,944,946,947,952],{},"Consumer repositories invoke ",[454,945,487],{},". EOS itself\ninvokes its local action from the exact pull request head so Harbourmaster can\ntest changes to itself before merge. The\n",[948,949,951],"a",{"href":950},"..\u002Fexplanation\u002Fshared-action-trust-boundary#eos-self-review-is-an-invariant","self-review invariant","\ndefines this repository-specific boundary; consumer repositories must not copy\nthe exception.",[450,954,955,956,960,961,964,965,968],{},"The ",[948,957,959],{"href":958},"..\u002Fhow-to\u002Fadd-harbourmaster-to-a-repository","repository setup guide","\ncontains the complete workflow definition and its validation procedure. See\n",[948,962,89],{"href":963},"..\u002Fhow-to\u002Frequest-a-review"," for the\noperator path after setup. See\n",[948,966,93],{"href":967},"..\u002Fhow-to\u002Ftroubleshoot-a-review","\nwhen a job is skipped or fails.",[459,970,972],{"id":971},"permissions","Permissions",[498,974,975,985],{},[501,976,977],{},[504,978,979,982],{},[507,980,981],{},"Permission",[507,983,984],{},"Purpose",[520,986,987,997,1007,1020],{},[504,988,989,994],{},[525,990,991],{},[454,992,993],{},"contents: read",[525,995,996],{},"Load repository and pull request file context.",[504,998,999,1004],{},[525,1000,1001],{},[454,1002,1003],{},"pull-requests: write",[525,1005,1006],{},"Apply the review label and publish review feedback.",[504,1008,1009,1014],{},[525,1010,1011],{},[454,1012,1013],{},"issues: write",[525,1015,1016,1017,1019],{},"Create the ",[454,1018,933],{}," label when missing and read issue comments.",[504,1021,1022,1027],{},[525,1023,1024],{},[454,1025,1026],{},"id-token: write",[525,1028,1029,1030,1032],{},"Obtain an AWS OIDC token when ",[454,1031,755],{}," is set.",[450,1034,1035,1036,1038,1039,1041],{},"GitHub owns the native ",[454,1037,929],{}," job check. The action itself does\nnot create GitHub checks, and ",[454,1040,598],{}," mode controls review publication\nrather than the job status.",[459,1043,1045],{"id":1044},"authentication-behavior","Authentication behavior",[450,1047,1048,1050,1051,1053,1054,1056],{},[454,1049,652],{}," mode uses the explicit ",[454,1052,652],{}," input or the workflow\ntoken. ",[454,1055,661],{}," mode exchanges the app ID, private key, and installation ID\nfor an installation token before constructing Octokit.",[450,1058,1059,1060,1063,1064,1067,1068,1071],{},"If the selected mode lacks its required credentials, the action prints\n",[454,1061,1062],{},"GitHub token unavailable; skipping safely."," or\n",[454,1065,1066],{},"GitHub App credentials unavailable; skipping safely.",", sets\n",[454,1069,1070],{},"HARBOURMASTER_SKIP=true",", and leaves the job successful. Credential values are\nmasked before validation. Resolved GitHub credentials are removed from the\nambient runner environment. The runner passes the resolved token only to the\ncoordinator process; specialists receive neither the token nor GitHub tools.",[450,1073,1074,1075,1078,1079,1081,1082,1084],{},"GitHub App installations need contents read, pull requests read and write, and\nissues read so the action can load issue comments. The supported workflow still\nuses ",[454,1076,1077],{},"GITHUB_TOKEN"," with ",[454,1080,1013],{}," to create the ",[454,1083,933],{},"\nlabel. That label step does not use the App token.",[459,1086,1088],{"id":1087},"fork-and-draft-behavior","Fork and draft behavior",[450,1090,1091],{},"The runner skips drafts and pull requests whose source is a fork. The runner\nfork skip message is:",[1093,1094,1100],"pre",{"className":1095,"code":1097,"language":1098,"meta":1099},[1096],"language-text","Fork pull request skipped by policy.\n","text","",[454,1101,1097],{"__ignoreMap":1099},[450,1103,1104,1105,1108],{},"The supported workflow also skips both cases in the job ",[454,1106,1107],{},"if"," condition. That\nguard runs before checkout, dependency installation, OIDC, or action execution.\nGitHub then shows the job as skipped. The job does not print a skip message.",[450,1110,1111,1112,1115],{},"Do not run this action with ",[454,1113,1114],{},"pull_request_target"," against untrusted head code.\nDependabot pull requests from the same repository are not forks. They can start\na review unless a separate workflow guard excludes them. Fork pull requests need\na separate trusted rerun or an artifact-based workflow that does not expose\ncredentials to the pull request checkout.",[459,1117,1119],{"id":1118},"workspace-verification","Workspace verification",[450,1121,1122,1124,1125,1127,1128,1131,1132,1134],{},[454,1123,735],{}," is resolved relative to ",[454,1126,747],{}," when it is not\nabsolute. The action requires the directory to exist, contain a readable Git\ncheckout, and have a ",[454,1129,1130],{},"HEAD"," exactly equal to ",[454,1133,567],{},". A missing value or\nmismatch fails before OpenCode starts.",[450,1136,1137,1138,1140],{},"The CLI also receives ",[454,1139,747],{}," as its workspace boundary. Canonical\npath checks prevent a workspace symlink from redirecting read tools outside the\nselected checkout.",[459,1142,1144],{"id":1143},"opencode-and-model-behavior","OpenCode and model behavior",[450,1146,1147,1148,1150,1151,1154,1155,1158],{},"The action always uses Harbourmaster's bundled OpenCode agents and plugin. A\nconsumer repository's ",[454,1149,480],{}," directory is inert review context. Model\ninputs become ",[454,1152,1153],{},"HARBOURMASTER_*_MODEL"," environment variables; the\n",[948,1156,1157],{"href":107},"configuration reference"," defines their precedence and\ndefaults.",[450,1160,1161],{},"The action supports GitHub OIDC, named profiles, Bedrock bearer tokens, and the\nstandard AWS access-key variables. OIDC is the expected GitHub-hosted runner\nconfiguration. Provider credentials are only appropriate for trusted\nsame-repository runs.",[459,1163,1165],{"id":1164},"review-result","Review result",[450,1167,1168,1169,1172,1173,1176,1177,1180,1181,605],{},"The default asks the coordinator to publish one ",[454,1170,1171],{},"COMMENT"," pull request review.\nWhen no issues are found, the coordinator still publishes a concise no-issues\nreview. Harbourmaster then verifies that a new marked review was submitted for\nthe exact reviewed SHA. OpenCode logfmt diagnostics are streamed to the job log.\nIts raw JSON event stream is captured unchanged in the\n",[454,1174,1175],{},"harbourmaster-opencode-\u003Crun-id>-\u003Crun-attempt>"," artifact as\n",[454,1178,1179],{},"harbourmaster-opencode-events.jsonl","; it is not used as a publication payload.\nThe artifact is uploaded even when the reviewer fails and is retained for\n",[454,1182,909],{},[450,1184,1185],{},"The action never approves or requests changes on a pull request and does not\nreplace normal CI checks.",{"title":1099,"searchDepth":1187,"depth":1187,"links":1188},3,[1189,1191,1192,1193,1194,1195,1196,1197,1198],{"id":461,"depth":1190,"text":462},2,{"id":495,"depth":1190,"text":496},{"id":922,"depth":1190,"text":923},{"id":971,"depth":1190,"text":972},{"id":1044,"depth":1190,"text":1045},{"id":1087,"depth":1190,"text":1088},{"id":1118,"depth":1190,"text":1119},{"id":1143,"depth":1190,"text":1144},{"id":1164,"depth":1190,"text":1165},{},"The composite action at TilloTech\u002Feos\u002Fapps\u002Fharbourmaster runs a Harbourmaster\nreview for one GitHub pull request. It has no declared outputs.","md",{},{"title":110,"description":1200},"_YuSJ98zmwizzHobSPUK4C31lPe8d08gshp16otIeAs",[1206,1207],{"title":106,"path":107,"stem":108,"children":-1},{"title":114,"path":115,"stem":116,"children":-1},1789777548111]