@ornexus/neocortex 4.60.33 → 4.60.34

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -984,7 +984,7 @@
984
984
  "version": "1.26.0"
985
985
  },
986
986
  {
987
- "bom-ref": "@neocortex/client@4.60.33",
987
+ "bom-ref": "@neocortex/client@4.60.34",
988
988
  "group": "@neocortex",
989
989
  "name": "client",
990
990
  "properties": [
@@ -993,9 +993,9 @@
993
993
  "value": "node_modules/@neocortex/client"
994
994
  }
995
995
  ],
996
- "purl": "pkg:npm/%40neocortex/client@4.60.33",
996
+ "purl": "pkg:npm/%40neocortex/client@4.60.34",
997
997
  "type": "library",
998
- "version": "4.60.33"
998
+ "version": "4.60.34"
999
999
  },
1000
1000
  {
1001
1001
  "bom-ref": "@neocortex/core@0.1.0",
@@ -1012,7 +1012,7 @@
1012
1012
  "version": "0.1.0"
1013
1013
  },
1014
1014
  {
1015
- "bom-ref": "@neocortex/server@4.60.33",
1015
+ "bom-ref": "@neocortex/server@4.60.34",
1016
1016
  "group": "@neocortex",
1017
1017
  "name": "server",
1018
1018
  "properties": [
@@ -1021,12 +1021,12 @@
1021
1021
  "value": "node_modules/@neocortex/server"
1022
1022
  }
1023
1023
  ],
1024
- "purl": "pkg:npm/%40neocortex/server@4.60.33",
1024
+ "purl": "pkg:npm/%40neocortex/server@4.60.34",
1025
1025
  "type": "library",
1026
- "version": "4.60.33"
1026
+ "version": "4.60.34"
1027
1027
  },
1028
1028
  {
1029
- "bom-ref": "@neocortex/shared@4.60.33",
1029
+ "bom-ref": "@neocortex/shared@4.60.34",
1030
1030
  "group": "@neocortex",
1031
1031
  "name": "shared",
1032
1032
  "properties": [
@@ -1035,9 +1035,9 @@
1035
1035
  "value": "node_modules/@neocortex/shared"
1036
1036
  }
1037
1037
  ],
1038
- "purl": "pkg:npm/%40neocortex/shared@4.60.33",
1038
+ "purl": "pkg:npm/%40neocortex/shared@4.60.34",
1039
1039
  "type": "library",
1040
- "version": "4.60.33"
1040
+ "version": "4.60.34"
1041
1041
  },
1042
1042
  {
1043
1043
  "bom-ref": "@opentelemetry/api-logs@0.214.0",
@@ -9405,17 +9405,17 @@
9405
9405
  "dependsOn": [
9406
9406
  "@clack/prompts@1.0.1",
9407
9407
  "@modelcontextprotocol/sdk@1.26.0",
9408
- "@neocortex/client@4.60.33",
9408
+ "@neocortex/client@4.60.34",
9409
9409
  "@neocortex/core@0.1.0",
9410
- "@neocortex/server@4.60.33",
9411
- "@neocortex/shared@4.60.33",
9410
+ "@neocortex/server@4.60.34",
9411
+ "@neocortex/shared@4.60.34",
9412
9412
  "better-sqlite3@12.11.1",
9413
9413
  "execa@9.6.1",
9414
9414
  "node-cache@5.1.2",
9415
9415
  "picocolors@1.1.1",
9416
9416
  "zod@4.4.3"
9417
9417
  ],
9418
- "ref": "@ornexus/neocortex@4.60.33"
9418
+ "ref": "@ornexus/neocortex@4.60.34"
9419
9419
  },
9420
9420
  {
9421
9421
  "dependsOn": [
@@ -9456,7 +9456,7 @@
9456
9456
  "@fastify/jwt@10.2.2",
9457
9457
  "@fastify/rate-limit@10.3.0",
9458
9458
  "@fastify/static@10.1.3",
9459
- "@neocortex/shared@4.60.33",
9459
+ "@neocortex/shared@4.60.34",
9460
9460
  "@sentry/node@10.62.0",
9461
9461
  "bcryptjs@3.0.3",
9462
9462
  "drizzle-orm@0.45.2",
@@ -9469,7 +9469,7 @@
9469
9469
  "stripe@20.4.1",
9470
9470
  "yaml@2.9.0"
9471
9471
  ],
9472
- "ref": "@neocortex/server@4.60.33"
9472
+ "ref": "@neocortex/server@4.60.34"
9473
9473
  },
9474
9474
  {
9475
9475
  "dependsOn": [
@@ -9590,16 +9590,16 @@
9590
9590
  },
9591
9591
  {
9592
9592
  "dependsOn": [
9593
- "@neocortex/shared@4.60.33",
9593
+ "@neocortex/shared@4.60.34",
9594
9594
  "better-sqlite3@12.11.1",
9595
9595
  "jose@6.2.2",
9596
9596
  "keytar@7.9.0"
9597
9597
  ],
9598
- "ref": "@neocortex/client@4.60.33"
9598
+ "ref": "@neocortex/client@4.60.34"
9599
9599
  },
9600
9600
  {
9601
9601
  "dependsOn": [
9602
- "@neocortex/shared@4.60.33"
9602
+ "@neocortex/shared@4.60.34"
9603
9603
  ],
9604
9604
  "ref": "@neocortex/core@0.1.0"
9605
9605
  },
@@ -10653,7 +10653,7 @@
10653
10653
  "ref": "@lukeed/ms@2.0.2"
10654
10654
  },
10655
10655
  {
10656
- "ref": "@neocortex/shared@4.60.33"
10656
+ "ref": "@neocortex/shared@4.60.34"
10657
10657
  },
10658
10658
  {
10659
10659
  "ref": "@opentelemetry/api@1.9.1"
@@ -11136,8 +11136,8 @@
11136
11136
  "metadata": {
11137
11137
  "component": {
11138
11138
  "author": "OrNexus Team",
11139
- "bom-ref": "@ornexus/neocortex@4.60.33",
11140
- "description": "Neocortex v4.60.33 - Orquestrador de Desenvolvimento de Epics & Stories para Claude Code",
11139
+ "bom-ref": "@ornexus/neocortex@4.60.34",
11140
+ "description": "Neocortex v4.60.34 - Orquestrador de Desenvolvimento de Epics & Stories para Claude Code",
11141
11141
  "externalReferences": [
11142
11142
  {
11143
11143
  "comment": "as detected from PackageJson property \"bugs.url\"",
@@ -11170,9 +11170,9 @@
11170
11170
  "value": ""
11171
11171
  }
11172
11172
  ],
11173
- "purl": "pkg:npm/%40ornexus/neocortex@4.60.33?vcs_url=git%2Bhttps%3A%2F%2Fgithub.com%2FOrNexus-AI%2Fneocortex.git",
11173
+ "purl": "pkg:npm/%40ornexus/neocortex@4.60.34?vcs_url=git%2Bhttps%3A%2F%2Fgithub.com%2FOrNexus-AI%2Fneocortex.git",
11174
11174
  "type": "application",
11175
- "version": "4.60.33"
11175
+ "version": "4.60.34"
11176
11176
  },
11177
11177
  "tools": {
11178
11178
  "components": [
@@ -11243,7 +11243,7 @@
11243
11243
  {
11244
11244
  "name": "npm",
11245
11245
  "type": "application",
11246
- "version": "10.9.8"
11246
+ "version": "11.10.1"
11247
11247
  }
11248
11248
  ]
11249
11249
  }
package/install.ps1 CHANGED
@@ -17,7 +17,7 @@ param(
17
17
  [string]$ServerUrl = ('https://{0}.{1}.{2}' -f 'api','neocortex','sh')
18
18
  )
19
19
 
20
- $VERSION = "4.60.33"
20
+ $VERSION = "4.60.34"
21
21
 
22
22
  # =============================================================================
23
23
  # CONFIGURACOES
package/install.sh CHANGED
@@ -4,7 +4,7 @@
4
4
  # Development Orchestrator
5
5
 
6
6
  # Versao do instalador
7
- VERSION="4.60.33"
7
+ VERSION="4.60.34"
8
8
 
9
9
  # Flags
10
10
  MIGRATION_DETECTED=false
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@ornexus/neocortex",
3
- "version": "4.60.33",
4
- "description": "Neocortex v4.60.33 - Orquestrador de Desenvolvimento de Epics & Stories para Claude Code",
3
+ "version": "4.60.34",
4
+ "description": "Neocortex v4.60.34 - Orquestrador de Desenvolvimento de Epics & Stories para Claude Code",
5
5
  "keywords": [
6
6
  "claude",
7
7
  "claude-code",
@@ -1,4 +1,4 @@
1
- import{execFile as ri,execFileSync as re}from"node:child_process";import{createHash as b,randomBytes as ye}from"node:crypto";import{lstat as be,open as ni,readFile as H,realpath as U,stat as ai}from"node:fs/promises";import{existsSync as q,lstatSync as Oe,readFileSync as Pe,realpathSync as we}from"node:fs";import{basename as R,dirname as M,isAbsolute as ne,join as y,relative as ci,resolve as p}from"node:path";import{promisify as oi}from"node:util";import{publicWriteSet as si}from"../../../shared/dist/yoloop/public-story-write-set.js";import{resolveBranchUnit as di}from"../../../shared/dist/yoloop/branch-unit.js";import{anchoredAtomicWriteFile as fi,anchoredCreateOwnedDirectory as Be,anchoredEnsureDirectory as Ne,anchoredExecuteGit as ui,anchoredExecuteNode as $e,anchoredRemoveDirectory as gi,anchoredRenameDirectory as ie}from"./secure-filesystem-boundary.js";import{GIT_LIFECYCLE_COMMIT_PUSH_STEP_ID as hi,GIT_LIFECYCLE_REVIEW_PR_STEP_ID as li}from"./git-lifecycle-step-ids.js";const P=oi(ri),de="neocortex-yoloop",fe="runtime.json",V="node scripts/test-root.mjs --gate complete",Ve=Object.freeze({"P174.03.029264":"339141be7339a0edf55710cbccb6e6558f514792"}),mi=Object.freeze({"P174.03.811759":Object.freeze({baseSha:"749c8fc732deaf26c81a8e08cc94b83c8cf0f5ba",headSha:"84162456d9cbe5000ffd0ed3eb3d0e88cfeba499",graphRevision:"60b343b4b810e6d5abc3159275012b9ab9ab517f9d780e7550fa5b49be740445",effectiveClaimRevision:"11f54704f5007f6139159419cfd7781f908b1502e117365c6d84011384579ed2",commitBodyDigest:"b4fc759a49765fd8c0b3d0f5d1c333c2a4bf28d324e83eedabb12f9530df3738",changedPathsDigest:"11f54704f5007f6139159419cfd7781f908b1502e117365c6d84011384579ed2",qaDigest:"f1100775e21f5d0d990f77303a2a06d936908f016983e32a63316d81aee6b9fc",reviewDigest:"50400bbcddb6f02408837cf99077de5d3af8c84822ab23a8b5499c338af7103a"}),"P174.03.685003":Object.freeze({baseSha:"84162456d9cbe5000ffd0ed3eb3d0e88cfeba499",headSha:"272a7fee89e4b9324d35701df1c83b671fa96299",graphRevision:"60b343b4b810e6d5abc3159275012b9ab9ab517f9d780e7550fa5b49be740445",effectiveClaimRevision:"6cc3c9033f1c4711dcbe3c676d1d7f9906614c7d6e95228e843d1c63cefbc641",commitBodyDigest:"e97966e26ce3ba31d5951b9fdac67808c88c1fd8be7ec1e73982f3f1cc7ffd81",changedPathsDigest:"6cc3c9033f1c4711dcbe3c676d1d7f9906614c7d6e95228e843d1c63cefbc641",qaDigest:"7439329a93321f39fb6b0de0a41c22e58373a399f9048e362dff4ffa6f1a7d89",reviewDigest:"1b2d12262e84acf9da7d06149a0effb11274ebdc986affbfd47635b855ec7135"}),"P174.03.029264":Object.freeze({baseSha:"272a7fee89e4b9324d35701df1c83b671fa96299",headSha:"339141be7339a0edf55710cbccb6e6558f514792",graphRevision:"60b343b4b810e6d5abc3159275012b9ab9ab517f9d780e7550fa5b49be740445",effectiveClaimRevision:"1053bb2baf487e38fa28d7e8cfb872c5c4da66802534ee226bbc2c7455a6a5ab",commitBodyDigest:"0f269a00dcd168a6f548ff10dfa667b193c948ac9c7211f5cb11a0561757c371",changedPathsDigest:"1053bb2baf487e38fa28d7e8cfb872c5c4da66802534ee226bbc2c7455a6a5ab",qaDigest:"ef0fd2c6e216557825cd8521ccb2f9960a3af48f18e7a5ada441bee8bfda400b",reviewDigest:"372d0f4a2f32978c8b39f20167637b3917187edb75d49875e93200c4c5a19d0d"}),"P174.03.913359":Object.freeze({baseSha:"339141be7339a0edf55710cbccb6e6558f514792",headSha:"4ccc90b85c49b27f718090bf25bc452f1b84e5e3",graphRevision:"60b343b4b810e6d5abc3159275012b9ab9ab517f9d780e7550fa5b49be740445",effectiveClaimRevision:"12b5cfba2667e8064309807776c1b323561dc8d853f9afe5f676007b8494b2b5",commitBodyDigest:"89a6653197509e75246a758d2706876b337770571a1cac47d9d85ec96c196459",changedPathsDigest:"12b5cfba2667e8064309807776c1b323561dc8d853f9afe5f676007b8494b2b5",qaDigest:"c7d3762ad30e4f9356243df17a1dd7123cbf1b660808d68176f44d1cd5da6449",reviewDigest:"e4ecf577e174fd66f31aa4a0113ab672ced16b12ee531f6831aa533795145ba1"}),"P174.03.724350":Object.freeze({baseSha:"4ccc90b85c49b27f718090bf25bc452f1b84e5e3",headSha:"568e9464fb086304146b9eb4594281f91302aef1",graphRevision:"60b343b4b810e6d5abc3159275012b9ab9ab517f9d780e7550fa5b49be740445",effectiveClaimRevision:"c8b8b6b96edf9cea78925e2f961bd74069d77af03783a5368b8ac8025bf1fefe",commitBodyDigest:"b3032338bfcd6c9dc460e9426220a1966dedeff9968c4064fdd36a315560721b",changedPathsDigest:"c8b8b6b96edf9cea78925e2f961bd74069d77af03783a5368b8ac8025bf1fefe",qaDigest:"91f2f5b00935b1b04bb5d400df500cbc97c412072078b713c6e5ba8fda669bd0",reviewDigest:"9bc92069d3b3a76cc8b02d339d432690258be1376464b69e152ed8fd3d682f05"}),"P174.03.011976":Object.freeze({baseSha:"568e9464fb086304146b9eb4594281f91302aef1",headSha:"195599b1a99a99a8416c4c26c9ab9990847338a4",graphRevision:"60b343b4b810e6d5abc3159275012b9ab9ab517f9d780e7550fa5b49be740445",effectiveClaimRevision:"49b7f2a0a967b2ba4249615c6d08834445a60df95045352838808eb4d6743b21",commitBodyDigest:"b8a28392fac663dd614b695a49c894b7cab116d45722a42850e3b24e2aaf36f4",changedPathsDigest:"49b7f2a0a967b2ba4249615c6d08834445a60df95045352838808eb4d6743b21",qaDigest:"6eb4459a7d80c4a268fc931297e8156ed2a320584f8775f0787d91b42c0929d4",reviewDigest:"98b21de29f7cceeec73da19000c6c144395cce6eb699c6a82dfab505d4ab7b44"}),"P174.03.686659":Object.freeze({baseSha:"195599b1a99a99a8416c4c26c9ab9990847338a4",headSha:"0db3681a5dad4e25ce37d967c636eb9d54915556",graphRevision:"60b343b4b810e6d5abc3159275012b9ab9ab517f9d780e7550fa5b49be740445",effectiveClaimRevision:"5c0fdbf820d677c288981b6f73f7d2d9a04ce7f4713687f12a2e984705244b8e",commitBodyDigest:"143257f4018ad773afc0c7280bd8aab8786851a9c20b65f8110881ff54656839",changedPathsDigest:"5c0fdbf820d677c288981b6f73f7d2d9a04ce7f4713687f12a2e984705244b8e",qaDigest:"6303dbf473e2815a3671aeb2c25528d8daba484b92a5a40d1eea5215e1f6763e",reviewDigest:"1bd6695846ed9340c8677cfa9b573880532187aeee487efaaa70577a0c94e7f2"})}),Se="neocortex-yoloop-runtime.json",pi="runtime.lock",Le=new WeakMap;async function lt(i,e){if(!_(e.headSha)||!h(e.graphRevision))throw new Error("p205-transient-binding-invalid");const t=e.anchoredWorkspace;if(t&&p(i)!==y(p(t.parent),t.name))throw new Error("p205-transient-anchor-binding-invalid");const r=async I=>t?(await ui(t.parent,t.name,t.identity,I)).toString("utf8"):String((await P("git",[...I],{cwd:i,encoding:"utf8",maxBuffer:8*1024*1024})).stdout),n=async()=>t?JSON.parse((await $e(t.parent,t.name,t.identity,["-e","const fs=require('node:fs');process.stdout.write(JSON.stringify({manifest:fs.readFileSync('config/release-gates.v2.json','utf8'),runner:fs.readFileSync('scripts/test-root.mjs','utf8')}));"])).toString("utf8")):{manifest:await H(y(i,"config","release-gates.v2.json"),"utf8"),runner:await H(y(i,"scripts","test-root.mjs"),"utf8")};if((await r(["rev-parse","HEAD"])).trim()!==e.headSha)throw new Error("p205-transient-head-mismatch");const{manifest:o,runner:d}=await n(),[u,c]=await Promise.all([r(["show",`${e.headSha}:config/release-gates.v2.json`]),r(["show",`${e.headSha}:scripts/test-root.mjs`])]);if(o!==u||d!==c)throw new Error("p205-transient-producer-dirty");const f=JSON.parse(o),v=Array.isArray(f.requiredCompleteClasses)?f.requiredCompleteClasses.filter(I=>typeof I=="string"&&/^[a-z0-9-]+$/.test(I)):[];if(f.contract!=="P205-CI-02"||v.length===0)throw new Error("p205-transient-manifest-invalid");const g=t?(await $e(t.parent,t.name,t.identity,["scripts/test-root.mjs","--gate","complete"])).toString("utf8"):String((await P(process.execPath,["scripts/test-root.mjs","--gate","complete"],{cwd:i,encoding:"utf8",maxBuffer:64*1024*1024})).stdout),{manifest:l,runner:w}=await n();if(l!==o||w!==d)throw new Error("p205-transient-producer-raced");if((await r(["rev-parse","HEAD"])).trim()!==e.headSha)throw new Error("p205-transient-head-raced");const $=b("sha256").update(o).digest("hex"),C=b("sha256").update(g).digest("hex"),J=ce(e.nowIso??new Date().toISOString()),S=b("sha256").update(["p205-transient-execution-v1",V,e.headSha,e.graphRevision,$,v.join(","),C,J].join("\0")).digest("hex"),m=Object.freeze({schemaVersion:1,kind:"p205_transient_execution_authority",contract:"P205-CI-02",command:V,executionHeadSha:e.headSha,graphRevision:e.graphRevision,manifestDigest:$,gateIds:Object.freeze(v),resultDigest:C,executedAt:J,executionEvidenceDigest:S}),F=Object.freeze(Object.create(null));return Le.set(F,m),F}async function ve(i,e={}){const t=await Ci(i);return We(t,e)}function yi(i,e={}){let t;try{const r=re("git",["rev-parse","--git-common-dir"],{cwd:i,encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim(),n=we(i),a=ne(r)?p(r):p(n,r),o=we(a);if(o!==a)throw new Error("git-lifecycle-common-dir-symlink");Vi(o);const d=y(o,de),u=y(d,fe);if(q(d)&&(Ye(d,"directory"),we(d)!==d))throw new Error("git-lifecycle-runtime-directory-symlink");t=q(u)?u:y(o,Se)}catch{if(e.required)throw new Error("git-lifecycle-common-dir-invalid");return Ee()}if(!q(t)){if(e.required)throw new Error("git-lifecycle-runtime-missing");return Ee()}return Ye(t,"file"),xe(JSON.parse(Pe(t,"utf8")))}async function mt(i){try{await ve(i,{required:!0});return}catch(e){if(!(e instanceof Error)||e.message!=="git-lifecycle-runtime-missing")throw e}try{await qe(i,()=>{},{expectedRevision:0})}catch(e){if(!(e instanceof Error)||e.message!=="git-lifecycle-runtime-revision-conflict")throw e;await ve(i,{required:!0})}}async function pt(i,e,t=new Date().toISOString()){if(!Xi(e))throw new Error("git-lifecycle-graph-authority-invalid");const r=y(p(i),".neocortex","state.json"),n=await H(r,"utf8"),a=s(JSON.parse(n));if(!a)throw new Error("git-lifecycle-tracked-state-invalid");const o=await ve(i),d=wi(a,o),u=s(s(d.epics)?.[e.epicId]),c=s(s(d.stories)?.[e.storyId]);if(!u)throw new Error("git-lifecycle-graph-authority-epic-invalid");if(!c||String(c.epic_id??e.storyId.split(".")[0])!==e.epicId)throw new Error("git-lifecycle-graph-authority-story-invalid");const f=Array.isArray(u.stories)?u.stories.filter(S=>typeof S=="string"):Object.keys(s(d.stories)??{}).filter(S=>{const m=s(s(d.stories)?.[S]);return String(m?.epic_id??S.split(".")[0])===e.epicId});if(Array.isArray(u.stories)&&!f.includes(e.storyId))throw new Error("git-lifecycle-graph-authority-story-invalid");const v=f.map(S=>{const m=s(s(d.stories)?.[S])??{};return{id:S,branch_name:typeof m.branch_name=="string"||m.branch_name===null?m.branch_name:void 0,pr_number:typeof m.pr_number=="number"||m.pr_number===null?m.pr_number:void 0,steps_completed:Array.isArray(m.steps_completed)?m.steps_completed.filter(F=>typeof F=="string"):[],checkpoint:s(m.checkpoint)}}),g=di({...u,id:e.epicId},v);if(g.mode!=="epic")throw new Error("git-lifecycle-graph-authority-epic-invalid");if(g.executionBranch!==e.executionBranch)throw new Error("git-lifecycle-graph-authority-branch-mismatch");if(g.originBranch!==void 0&&g.originBranch!==e.originBranch)throw new Error("git-lifecycle-graph-authority-origin-mismatch");const l=typeof s(o.epics[e.epicId])?.origin_branch=="string"?String(s(o.epics[e.epicId]).origin_branch):void 0;if(l!==void 0&&l!==e.originBranch)throw new Error("git-lifecycle-graph-authority-origin-mismatch");if(g.originBranch===void 0&&l===void 0){const{stdout:S}=await P("git",["branch","--show-current"],{cwd:i,encoding:"utf8",maxBuffer:1048576});if(String(S).trim()!==e.originBranch)throw new Error("git-lifecycle-graph-authority-origin-physical-mismatch")}const w=typeof u.graph_revision=="string"?u.graph_revision:void 0,B=typeof s(o.epics[e.epicId])?.graph_revision=="string"?String(s(o.epics[e.epicId]).graph_revision):void 0;if(w!==void 0&&!h(w))throw new Error("git-lifecycle-graph-revision-invalid");if(w===e.graphRevision&&B===e.graphRevision&&g.originBranch===e.originBranch&&l===e.originBranch)return{applied:!1,reused:!0,revision:o.revision,graphRevision:e.graphRevision};const $=Date.parse(t);if(!Number.isFinite($))throw new Error("git-lifecycle-graph-authority-time-invalid");const C=s(u.branch_lease);if(C&&Number.isFinite(Date.parse(String(C.expiresAt)))&&Date.parse(String(C.expiresAt))>$)throw new Error("git-lifecycle-graph-authority-writer-active");return{applied:!0,reused:!1,revision:(await qe(i,S=>{const m=Si(S,e.epicId);if(m.branch_mode!==void 0&&m.branch_mode!=="epic")throw new Error("git-lifecycle-graph-authority-epic-raced");const F=m.execution_branch;if(F!==void 0&&F!==e.executionBranch)throw new Error("git-lifecycle-graph-authority-branch-raced");const I=m.origin_branch;if(I!==void 0&&I!==e.originBranch)throw new Error("git-lifecycle-graph-authority-origin-raced");const X=m.graph_revision;if(X!==void 0&&X!==w)throw new Error("git-lifecycle-graph-authority-epoch-raced");const Q=s(m.branch_lease);if(Q&&Number.isFinite(Date.parse(String(Q.expiresAt)))&&Date.parse(String(Q.expiresAt))>$)throw new Error("git-lifecycle-graph-authority-writer-active");m.branch_mode="epic",m.execution_branch=e.executionBranch,m.origin_branch=e.originBranch,m.graph_revision=e.graphRevision},{expectedRevision:o.revision,preCommit:async()=>{if(await H(r,"utf8")!==n)throw new Error("git-lifecycle-graph-authority-tracked-state-raced")}})).document.revision,graphRevision:e.graphRevision}}async function qe(i,e,t={}){const r=await _e(i),n=await Ke(r),a=y(n,pi),o=await it(a);try{const d=y(n,fe),u=y(r,Se),c=await We(q(d)?d:u);if(t.expectedRevision!==void 0&&t.expectedRevision!==c.revision)throw new Error("git-lifecycle-runtime-revision-conflict");const f=structuredClone(c),v=e(f),g=xe({...f,schemaVersion:1,revision:c.revision+1});return await t.preCommit?.(g),await z(n,"directory"),await Ni(d),await fi(n,fe,`${JSON.stringify(g,null,2)}
2
- `),await z(d,"file"),await bi(n),{document:g,value:v}}finally{await tt(a,o).catch(()=>{})}}async function bi(i){let e;try{e=await ni(i,"r")}catch(t){if(process.platform==="win32"&&(k(t,"EPERM")||k(t,"EISDIR")||k(t,"EINVAL")))return;throw t}try{await e.sync()}finally{await e.close()}}function wi(i,e){const t=structuredClone(i),r=je(t,"epics"),n=je(t,"stories");for(const[a,o]of Object.entries(e.epics))r[a]={...s(r[a])??{},...structuredClone(o)};for(const[a,o]of Object.entries(e.stories))n[a]={...s(n[a])??{},...structuredClone(o)};return t}function je(i,e){const t=i[e];if(t===void 0){const a={};return i[e]=a,a}const r=s(t);if(r)return r;if(!Array.isArray(t))throw new Error(`git-lifecycle-tracked-${e}-invalid`);const n={};for(const a of t){const o=s(a),d=typeof o?.id=="string"?o.id.trim():"";if(!d||n[d]!==void 0)throw new Error(`git-lifecycle-tracked-${e}-ambiguous`);n[d]=o}return i[e]=n,n}function Si(i,e){return i.epics[e]??(i.epics[e]={})}function yt(i,e){return i.stories[e]??(i.stories[e]={})}function ze(i,e,t,r){const n=s(i);return!!(n&&n.epicId===t&&n.branch===r&&n.qaVerdict==="passed"&&n.reviewVerdict==="approved"&&Je(n,e))}async function bt(i,e,t,r,n,a,o=[]){return vi(i,e,t,r,n,a,o).verdict==="verified"}function vi(i,e,t,r,n,a,o=[],d=new Date().toISOString()){const u=()=>ki({storyId:t,epicId:r,executionBranch:n,value:e,verifiedAt:d,verdict:"rejected",reasonCode:"checkpoint-git-physical-invalid"});try{if(!ze(e,t,r,n))return u();const c=s(e),f=s(c.qaReceipt),v=s(c.reviewReceipt),g=String(c.headSha),l=String(c.baseSha),w=j(i,["rev-parse",`refs/heads/${n}`]).trim();re("git",["merge-base","--is-ancestor",g,w],{cwd:i,stdio:"ignore"});const B=j(i,["show","--no-patch","--format=%H%n%P%n%B",g]),$=j(i,["rev-parse",`${g}^`]).trim(),C=j(i,["rev-list","--count",`${l}..${g}`]).trim();if($!==l||C!=="1")return u();const J=new Set(B.split(`
3
- `).map(G=>G.trim())),m=[`Neocortex-Story: ${t}`,`Neocortex-Epic: ${r}`,`Neocortex-Execution-Branch: ${n}`,`Neocortex-Bundle-Digest: ${String(c.bundleDigest)}`,`Neocortex-Graph-Revision: ${String(c.graphRevision)}`,...c.dispatchId?[`Neocortex-Dispatch: ${String(c.dispatchId)}`]:[],...c.bundleId?[`Neocortex-Bundle: ${String(c.bundleId)}`]:[],...c.claimRevision?[`Neocortex-Claim-Revision: ${String(c.claimRevision)}`]:[]].every(G=>J.has(G));if(m){const Ce=[...J].find(ti=>ti.startsWith("Neocortex-Prepared-Base: "))?.slice(25)??"";if(!/^[a-f0-9]{40,64}$/i.test(Ce))return u();re("git",["merge-base","--is-ancestor",Ce,g],{cwd:i,stdio:"ignore"})}const I=j(i,["diff-tree","--no-commit-id","--name-only","-r","-z",g]).split("\0").filter(Boolean);if(I.length===0||I.some(G=>!ge(G)))return u();const X=b("sha256").update(B).digest("hex"),Q=b("sha256").update([...I].sort().join("\0")).digest("hex"),N=Ge({checkpoint:c,storyId:t,epicId:r,executionBranch:n,baseSha:l,headSha:g,commitBodyDigest:X,changedPathsDigest:Q,changedPaths:I,authorizedWriteSet:o.length>0?o:xi(i,t)});if(!N||f.receiptRef!==`story-qa:${String(f.sourceEvidenceDigest)}`)return u();const Re=Ri({storyId:t,baseSha:l,headSha:g,bundleDigest:String(c.bundleDigest),graphRevision:String(c.graphRevision),commitBody:B,changedPaths:I}),Ae=f.evidenceVersion==="p205-execution-v2"&&f.contract==="P205-CI-02"&&f.command===V&&h(f.manifestDigest)&&L(f.gateIds,32,!0)&&h(f.resultDigest)&&f.sourceEvidenceDigest===Ai({gitEvidenceDigest:Re,headSha:g,graphRevision:String(c.graphRevision),manifestDigest:String(f.manifestDigest),gateIds:f.gateIds,resultDigest:String(f.resultDigest)}),Xe=f.evidenceVersion==="git-immutable-v1"&&f.sourceEvidenceDigest===Re,ei=f.evidenceVersion===void 0&&N.mode==="legacy-migration"&&N.binding?.qaDigest===f.sourceEvidenceDigest,me=Di(a,w,String(c.graphRevision))&&(Ae||N.mode==="legacy-migration"&&(Xe||ei)),pe=a===void 0&&Ae;if(!me&&!pe)return u();const ke=b("sha256").update(["root-commit-range-review-v1",t,l,g,String(c.bundleDigest),String(c.graphRevision),String(f.receiptRef),b("sha256").update(B).digest("hex"),[...I].sort().join(",")].join("\0")).digest("hex");if(v.sourceEvidenceDigest!==ke||v.receiptRef!==`story-review:${ke}`||N.mode==="legacy-migration"&&N.binding?.reviewDigest!==void 0&&N.binding.reviewDigest!==v.sourceEvidenceDigest||!m&&(Ve[t]!==g||!Array.isArray(c.receiptRefs)||!c.receiptRefs.some(G=>typeof G=="string"&&G.startsWith("legacy-direct-yolo:"))))return u();const ii=b("sha256").update(["checkpoint-p205-transient-v1",t,r,n,l,g,String(c.bundleDigest),X,Q,N.mode,N.effectiveClaimRevision,String(f.sourceEvidenceDigest),String(v.sourceEvidenceDigest),ae(a)?.executionEvidenceDigest??(pe?"maintenance-git-verification":"legacy-bounded-authority")].join("\0")).digest("hex"),ee=me?ae(a):void 0;return Object.freeze({schemaVersion:1,kind:"story_checkpoint_physical_verification",producer:"client-p205-transient-v1",storyId:t,epicId:r,branch:n,baseSha:l,headSha:g,aggregateHeadSha:ee?.executionHeadSha??g,commitBodyDigest:X,changedPathsDigest:Q,claimVerification:N.mode,effectiveClaimRevision:N.effectiveClaimRevision,sourceEvidenceDigest:ii,command:V,manifestDigest:ee?.manifestDigest??"0".repeat(64),gateIds:ee?.gateIds??Object.freeze(["legacy-bounded"]),resultDigest:ee?.resultDigest??"0".repeat(64),graphRevision:String(c.graphRevision),executionEvidenceDigest:ee?.executionEvidenceDigest??"0".repeat(64),verifiedAt:ee?.executedAt??ce(d),verdict:"verified",reasonCodes:Object.freeze([me?"checkpoint-p205-transient-verified":pe?"checkpoint-git-maintenance-verified":"checkpoint-legacy-bounded-verified",...N.mode==="legacy-migration"?["checkpoint-legacy-migration-verified"]:[]]),publicSafe:!0})}catch{return u()}}function Di(i,e,t){const r=ae(i);return!!(r&&r.schemaVersion===1&&r.kind==="p205_transient_execution_authority"&&r.contract==="P205-CI-02"&&r.command===V&&r.graphRevision===t&&h(r.resultDigest)&&h(r.executionEvidenceDigest)&&r.executionHeadSha===e&&_(e))}function ae(i){return i&&typeof i=="object"?Le.get(i):void 0}function wt(i){const e=ae(i);return e?Object.freeze({executionHeadSha:e.executionHeadSha,graphRevision:e.graphRevision,manifestDigest:e.manifestDigest,gateIds:Object.freeze([...e.gateIds]),resultDigest:e.resultDigest,executedAt:e.executedAt,executionEvidenceDigest:e.executionEvidenceDigest}):void 0}function St(i,e,t){const r=ae(i);return!!(r&&r.executionHeadSha===e&&r.graphRevision===t&&r.command===V)}function Ge(i){const e=mi[i.storyId],t=typeof i.checkpoint.claimRevision=="string"?i.checkpoint.claimRevision:void 0,r=i.storyId==="P174.03.811759"||i.storyId==="P174.03.685003",n=_i(i.authorizedWriteSet),a=n.length>0&&n.length===i.authorizedWriteSet.length&&i.changedPaths.every(o=>n.some(d=>Ii(d,o)));if(e&&i.epicId==="P174"&&i.executionBranch==="epic/P174"&&i.baseSha===e.baseSha&&i.headSha===e.headSha&&i.checkpoint.graphRevision===e.graphRevision&&i.commitBodyDigest===e.commitBodyDigest&&i.changedPathsDigest===e.changedPathsDigest&&(r?t===void 0:t===e.effectiveClaimRevision))return i.authorizedWriteSet.length>0&&(!a||!He(e.effectiveClaimRevision,n))?void 0:Object.freeze({mode:"legacy-migration",effectiveClaimRevision:e.effectiveClaimRevision,binding:e});if(t!==void 0&&!(!t||!h(t))&&!(!a||!He(t,n)))return Object.freeze({mode:"canonical",effectiveClaimRevision:t})}function _i(i){const e=i.map(t=>t.replaceAll("\\","/").replace(/^\.\//,"").replace(/\/{2,}/g,"/"));return e.some(t=>!ge(t))?Object.freeze([]):Object.freeze([...new Set(e)].sort())}function xi(i,e){try{const t=JSON.parse(Pe(y(i,".neocortex","state.json"),"utf8")),r=s(t.stories),n=s(r?.[e]),a=yi(i),o=s(a.stories[e]?.checkpoint)??s(n?.checkpoint);return Ei(e,n,o)}catch{return[]}}function Ei(i,e,t){const r=Array.isArray(e?.files_to_modify)?e.files_to_modify.filter(n=>typeof n=="string"):[];if(!t?.dispatchId||!t.bundleId)return r;try{return si({...e,id:i,files_to_modify:r})}catch{return[]}}function He(i,e){return i===b("sha256").update(e.join("\0")).digest("hex")||i===b("sha256").update(JSON.stringify(e)).digest("hex")}function Ii(i,e){return i===e||i.endsWith("/")&&e.startsWith(i)}function vt(i,e,t,r,n,a){try{if(!ze(e,t,r,n))return!1;const o=s(e),d=s(o.qaReceipt),u=s(o.reviewReceipt),c=String(o.headSha),f=String(o.baseSha),v=j(i,["rev-parse",`refs/heads/${n}`]).trim();if(re("git",["merge-base","--is-ancestor",c,v],{cwd:i,stdio:"ignore"}),j(i,["rev-parse",`${c}^`]).trim()!==f||j(i,["rev-list","--count",`${f}..${c}`]).trim()!=="1")return!1;const g=j(i,["show","--no-patch","--format=%H%n%P%n%B",c]),l=j(i,["diff-tree","--no-commit-id","--name-only","-r","-z",c]).split("\0").filter(Boolean);if(l.length===0||l.some(B=>!ge(B)))return!1;const w=Ge({checkpoint:o,storyId:t,epicId:r,executionBranch:n,baseSha:f,headSha:c,changedPaths:l,authorizedWriteSet:a,commitBodyDigest:b("sha256").update(g).digest("hex"),changedPathsDigest:b("sha256").update([...l].sort().join("\0")).digest("hex")});return!(w?.mode!=="legacy-migration"||!w.binding||d.sourceEvidenceDigest!==w.binding.qaDigest||d.receiptRef!==`story-qa:${w.binding.qaDigest}`||u.sourceEvidenceDigest!==w.binding.reviewDigest||u.receiptRef!==`story-review:${w.binding.reviewDigest}`||u.qaReceiptRef!==d.receiptRef)}catch{return!1}}function Ri(i){return b("sha256").update(["local-yolo-tdd-git-immutable-v1",i.storyId,i.baseSha,i.headSha,i.bundleDigest,i.graphRevision,b("sha256").update(i.commitBody).digest("hex"),b("sha256").update([...i.changedPaths].sort().join("\0")).digest("hex")].join("\0")).digest("hex")}function Ai(i){return b("sha256").update(["local-yolo-tdd-p205-execution-v2",V,i.gitEvidenceDigest,i.headSha,i.graphRevision,i.manifestDigest,i.gateIds.join(","),i.resultDigest].join("\0")).digest("hex")}function ki(i){const e=s(i.value);return Object.freeze({schemaVersion:1,kind:"story_checkpoint_physical_verification",producer:"client-p205-transient-v1",storyId:i.storyId,epicId:i.epicId,branch:i.executionBranch,baseSha:_(e?.baseSha)?String(e?.baseSha):"0".repeat(40),headSha:_(e?.headSha)?String(e?.headSha):"0".repeat(40),aggregateHeadSha:"0".repeat(40),commitBodyDigest:"0".repeat(64),changedPathsDigest:"0".repeat(64),claimVerification:"canonical",effectiveClaimRevision:"0".repeat(64),command:V,manifestDigest:"0".repeat(64),gateIds:Object.freeze([]),resultDigest:"0".repeat(64),graphRevision:"0".repeat(64),executionEvidenceDigest:"0".repeat(64),sourceEvidenceDigest:"0".repeat(64),verifiedAt:ce(i.verifiedAt),verdict:i.verdict,reasonCodes:Object.freeze([i.reasonCode]),publicSafe:!0})}function j(i,e){return re("git",[...e],{cwd:i,encoding:"utf8",maxBuffer:32*1024*1024})}function ce(i){return Number.isFinite(Date.parse(i))?new Date(Date.parse(i)).toISOString():new Date().toISOString()}async function Dt(i,e){if(Ve[e.storyId]!==e.headSha)return;const t=[".neocortex/state.json",`.neocortex/stories/${e.storyId}/qa-gate-result.json`,`.neocortex/stories/${e.storyId}/validation-evidence.md`,`.neocortex/stories/${e.storyId}/review.md`,`docs/stories/${e.storyId}.story.md`];try{const r=(await P("git",["rev-parse",`refs/heads/${e.executionBranch}`],{cwd:i,encoding:"utf8",maxBuffer:1048576})).stdout.trim();if(await P("git",["merge-base","--is-ancestor",e.headSha,r],{cwd:i}),(await P("git",["rev-parse",`${e.headSha}^`],{cwd:i,encoding:"utf8",maxBuffer:1024*1024})).stdout.trim()!==e.baseSha)return;const a=String((await P("git",["diff","--binary","--full-index",`${e.baseSha}..${e.headSha}`],{cwd:i,encoding:"utf8",maxBuffer:32*1024*1024})).stdout);if(b("sha256").update(a).digest("hex")!==e.bundleDigest)return;const o=String((await P("git",["show","--no-patch","--format=%H%n%P%n%B",e.headSha],{cwd:i,encoding:"utf8",maxBuffer:4*1024*1024})).stdout);if(!String((await P("git",["show","--no-patch","--format=%s",e.headSha],{cwd:i,encoding:"utf8",maxBuffer:1024*1024})).stdout).trim().includes(e.storyId))return;const c=String((await P("git",["diff-tree","--no-commit-id","--name-only","-r","-z",e.headSha],{cwd:i,encoding:"utf8",maxBuffer:8*1024*1024})).stdout).split("\0").filter(Boolean);if(!t.every(S=>c.includes(S))||c.some(S=>!ge(S)))return;const f=await Promise.all(t.map(async S=>String((await P("git",["show",`${e.headSha}:${S}`],{cwd:i,encoding:"utf8",maxBuffer:16*1024*1024})).stdout))),v=JSON.parse(f[0]),g=s(v.stories),l=s(v.epics),w=s(g?.[e.storyId]),B=s(l?.[e.epicId]),$=Array.isArray(w?.steps_completed)?w.steps_completed:[],C=JSON.parse(f[1]);return w?.status!=="done"||!$.includes(hi)||!$.includes(li)||B?.branch_mode!=="epic"||B.execution_branch!==e.executionBranch||C.storyId!==e.storyId||C.status!=="qa-passed"||C.safeToContinueYoloop!==!0||!Array.isArray(C.blockingChecks)||C.blockingChecks.length!==0||!f[2].includes(e.storyId)||!/P205[\s\S]{0,80}(pass|aprov)/i.test(f[2])||!f[3].includes(e.storyId)||!/approved|aprovado/i.test(f[3])||!f[4].includes(e.storyId)?void 0:`legacy-direct-yolo:${b("sha256").update(["legacy-direct-yolo-recovery-v1",e.storyId,e.epicId,e.executionBranch,e.baseSha,e.headSha,e.bundleDigest,e.graphRevision,b("sha256").update(o).digest("hex"),b("sha256").update([...c].sort().join("\0")).digest("hex"),...f.map(S=>b("sha256").update(S).digest("hex"))].join("\0")).digest("hex")}`}catch{return}}async function Ci(i){const e=await _e(i),t=y(e,de),r=y(t,fe);if(q(t)&&(await z(t,"directory"),await U(t)!==t))throw new Error("git-lifecycle-runtime-directory-symlink");return q(r)?r:y(e,Se)}async function Te(i){return Ke(await _e(i))}async function Oi(i,e){if(!/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/.test(e)||e.includes(".."))throw new Error("git-lifecycle-private-child-invalid");const t=p(i);await K(t);const r=p(t,e);return te(t,r),q(r)||await Ne(t,e),await K(r,t),await K(t),r}async function D(i,e){const t=p(e),r=p(i);te(t,r),await K(t),await K(r,t)}async function _t(i,e){await W(i,e)}async function Z(i,e,t){const r=p(e),n=p(i);te(r,n);try{await D(n,r)}catch(o){if(k(o,"ENOENT"))return!1;throw o}const a=p(r,`${n.slice(r.length+1)}.remove.${process.pid}.${Date.now()}.${ye(4).toString("hex")}`);return te(r,a),await ie(r,R(n),R(a)),await D(a,r),t&&!await t(a)?(await oe(a,n,r).catch(()=>{}),!1):(await gi(r,R(a)),!0)}async function oe(i,e,t){await D(i,t);try{await be(e);return}catch(r){if(!k(r,"ENOENT"))throw r}await ie(t,R(i),R(e)),await D(e,t)}async function O(i){try{await D(i,M(i));const e=y(i,"owner.json");await W(e,i);const t=await H(e);return await W(e,i),b("sha256").update(t).digest("hex")}catch{return}}async function xt(i,e){const t=await Te(i),r=await Oi(t,"leases"),n=y(r,"integration"),a=`${n}.recovery`;if(q(a)){await D(a,r);const c=await Fe(a),f=await O(a);if(c===void 0||le(c))return{ok:!1,reasonCode:"git-lifecycle-integration-backpressure"};if(!f||!await Z(a,r,async v=>await O(v)===f))return{ok:!1,reasonCode:"git-lifecycle-integration-backpressure"}}const o=ce(e.createdAt??new Date().toISOString()),d=Object.freeze({schemaVersion:1,kind:e.kind,storyId:e.storyId,sessionId:e.sessionId,idempotencyKey:e.idempotencyKey,pid:process.pid,createdAt:o,expiresAt:ce(e.expiresAt),persistent:e.persistent,ownerNonce:e.ownerNonce??ye(16).toString("hex")});if(Date.parse(d.expiresAt)<=Date.parse(d.createdAt))return{ok:!1,reasonCode:"git-lifecycle-integration-lock-failed"};const u=async()=>{await K(r,t);try{return await Be(r,R(n),`${JSON.stringify(d)}
4
- `),await D(n,r),await W(y(n,"owner.json"),n),!0}catch(c){throw k(c,"EEXIST")||await Z(n,r).catch(()=>{}),c}};try{return await u(),{ok:!0,owner:d,path:n}}catch(c){if(!k(c,"EEXIST"))return{ok:!1,reasonCode:"git-lifecycle-integration-lock-failed"}}try{const c=await se(n),f=c?void 0:await Fe(n);if(c&&Me(c,d))return{ok:!0,owner:c,path:n};if(c&&Date.parse(c.expiresAt)>Date.now()&&(c.persistent||le(c.pid))||f!==void 0&&le(f)||!c&&f===void 0&&await Ue(n))return{ok:!1,reasonCode:"git-lifecycle-integration-backpressure"};const g=await O(n);if(!g)return{ok:!1,reasonCode:"git-lifecycle-integration-lock-failed"};const l=`${n}.stale.${process.pid}.${Date.now()}`;await ie(r,R(n),R(l));try{if(await D(l,r),await O(l)!==g)return await oe(l,n,r).catch(()=>{}),{ok:!1,reasonCode:"git-lifecycle-integration-backpressure"};await u()}finally{await Z(l,r,async w=>await O(w)===g).catch(()=>{})}return{ok:!0,owner:d,path:n}}catch(c){return{ok:!1,reasonCode:k(c,"EEXIST")||k(c,"ENOENT")?"git-lifecycle-integration-backpressure":"git-lifecycle-integration-lock-failed"}}}async function Et(i,e){const t=await se(i);return!!(t&&De(t,e)&&Date.parse(t.expiresAt)>Date.now())}async function Pi(i,e){try{const t=M(i);await D(i,t);const r=await se(i);if(!r||!De(r,e))return!1;const n=await O(i);if(!n)return!1;const a=`${i}.release.${process.pid}.${Date.now()}`;await ie(t,R(i),R(a)),await D(a,t);const o=await se(a);return!o||!De(o,e)||await O(a)!==n?(await oe(a,i,t).catch(()=>{}),!1):Z(a,t,async d=>await O(d)===n)}catch(t){if(k(t,"ENOENT"))return!1;throw t}}function Bi(i){return b("sha256").update(["git-lifecycle-physical-owner-v1",i.kind,i.storyId,i.sessionId,i.idempotencyKey,String(i.pid),i.createdAt,i.expiresAt,i.persistent?"persistent":"ephemeral",i.ownerNonce].join("\0")).digest("hex")}async function It(i,e){if(!Y(e.storyId)||!A(e.idempotencyKey)||!h(e.ownerDigest))return"foreign";const t=await Te(i),r=y(t,"leases"),n=y(r,"integration");if(!q(n))return"absent";try{await D(r,t),await D(n,r);const a=await se(n);return!a||a.kind!=="direct"||a.storyId!==e.storyId||a.sessionId!==e.idempotencyKey||a.idempotencyKey!==e.idempotencyKey||a.persistent!==!0||Bi(a)!==e.ownerDigest?"foreign":await Pi(n,a)?"released":"foreign"}catch{return"foreign"}}async function se(i){try{await D(i,M(i));const e=y(i,"owner.json");await W(e,i);const t=JSON.parse(await H(e,"utf8"));return t.schemaVersion!==1||t.kind!=="direct"&&t.kind!=="continuous"||!Y(t.storyId)||!A(t.sessionId)||!A(t.idempotencyKey)||!Number.isSafeInteger(t.pid)||Number(t.pid)<=0||!E(t.createdAt)||!E(t.expiresAt)||typeof t.persistent!="boolean"||typeof t.ownerNonce!="string"||!/^[a-f0-9]{32}$/.test(t.ownerNonce)?void 0:t}catch{return}}async function Fe(i){try{await D(i,M(i));const e=y(i,"owner.json");await W(e,i);const t=JSON.parse(await H(e,"utf8"));return Number.isSafeInteger(t.pid)&&Number(t.pid)>0?Number(t.pid):void 0}catch{return}}function Me(i,e){return i.kind===e.kind&&i.storyId===e.storyId&&i.sessionId===e.sessionId&&i.idempotencyKey===e.idempotencyKey&&i.expiresAt===e.expiresAt&&i.persistent===e.persistent}function De(i,e){return Me(i,e)&&i.schemaVersion===e.schemaVersion&&i.pid===e.pid&&i.createdAt===e.createdAt&&i.ownerNonce===e.ownerNonce}async function _e(i){const e=await U(i),r=(await P("git",["rev-parse","--git-common-dir"],{cwd:e,encoding:"utf8",maxBuffer:1024*1024})).stdout.trim(),n=ne(r)?p(r):p(e,r),a=await U(n);if(a!==n)throw new Error("git-lifecycle-common-dir-symlink");await $i(a);const d=(await P("git",["rev-parse","--git-common-dir"],{cwd:e,encoding:"utf8",maxBuffer:1024*1024})).stdout.trim();if((ne(d)?p(d):p(e,d))!==n)throw new Error("git-lifecycle-common-dir-raced");return a}async function Ke(i){const e=y(i,de);if(q(e)||await Ne(i,de),await z(e,"directory"),await U(e)!==e)throw new Error("git-lifecycle-runtime-directory-symlink");return e}async function We(i,e={}){try{return await z(i,"file"),xe(JSON.parse(await H(i,"utf8")))}catch(t){if(k(t,"ENOENT")){if(e.required)throw new Error("git-lifecycle-runtime-missing");return Ee()}throw t}}async function Ni(i){try{await z(i,"file")}catch(e){if(k(e,"ENOENT"))return;throw e}}async function z(i,e){const t=await be(i);if(t.isSymbolicLink())throw new Error(`git-lifecycle-${e}-symlink`);if(e==="file"?!t.isFile():!t.isDirectory())throw new Error(`git-lifecycle-${e}-invalid`);if(ue()&&t.uid!==process.getuid())throw new Error(`git-lifecycle-${e}-ownership-mismatch`);if(ue()&&(t.mode&63)!==0)throw new Error(`git-lifecycle-${e}-permissions-unsafe`)}function te(i,e){const t=p(i),r=p(e),n=ci(t,r);if(!n||n.startsWith("..")||ne(n)||M(r)!==t)throw new Error("git-lifecycle-private-path-escape")}async function K(i,e){const t=p(i);if(e&&te(p(e),t),await z(t,"directory"),p(await U(t))!==t)throw new Error("git-lifecycle-directory-substituted");if(e){const r=p(e);if(await z(r,"directory"),p(await U(r))!==r)throw new Error("git-lifecycle-directory-parent-substituted")}}async function W(i,e){const t=p(i);if(te(p(e),t),await K(p(e)),await z(t,"file"),p(await U(t))!==t)throw new Error("git-lifecycle-file-substituted")}function Ye(i,e){const t=Oe(i);if(t.isSymbolicLink())throw new Error(`git-lifecycle-${e}-symlink`);if(e==="file"?!t.isFile():!t.isDirectory())throw new Error(`git-lifecycle-${e}-invalid`);if(ue()&&t.uid!==process.getuid())throw new Error(`git-lifecycle-${e}-ownership-mismatch`);if(ue()&&(t.mode&63)!==0)throw new Error(`git-lifecycle-${e}-permissions-unsafe`)}async function $i(i){const e=await be(i);if(e.isSymbolicLink())throw new Error("git-lifecycle-common-dir-symlink");if(!e.isDirectory())throw new Error("git-lifecycle-common-dir-invalid")}function Vi(i){const e=Oe(i);if(e.isSymbolicLink())throw new Error("git-lifecycle-common-dir-symlink");if(!e.isDirectory())throw new Error("git-lifecycle-common-dir-invalid")}function ue(i=process.platform){return i!=="win32"&&typeof process.getuid=="function"}function xe(i){if(!i||typeof i!="object"||Array.isArray(i))throw new Error("git-lifecycle-runtime-invalid");const e=i;x(e,["schemaVersion","revision","epics","stories"],"git-lifecycle-runtime-unknown-field");const t=s(e.epics),r=s(e.stories);if(e.schemaVersion!==1||!Number.isSafeInteger(e.revision)||Number(e.revision)<0||!t||!r||Object.values(t).some(n=>!s(n))||Object.values(r).some(n=>!s(n)))throw new Error("git-lifecycle-runtime-invalid");for(const[n,a]of Object.entries(t))if(!Y(n)||!ji(a))throw new Error("git-lifecycle-runtime-epic-invalid");for(const[n,a]of Object.entries(r))if(!Y(n)||!n.includes(".")||!zi(a,n))throw new Error("git-lifecycle-runtime-story-invalid");return e}const Li=["branch_mode","execution_branch","origin_branch","branch_lease","origin_binding","graph_revision","aggregate_qa_receipt","terminal_git_receipt","physicalMergeStatus","pr_number","git_reconciliation_receipts","git_reconciliation_debt"],qi=["checkpoint","status","last_step","steps_completed"];function ji(i){return x(i,Li,"git-lifecycle-runtime-epic-unknown-field"),(i.branch_mode===void 0||i.branch_mode==="epic")&&(i.execution_branch===void 0||T(i.execution_branch))&&(i.origin_branch===void 0||T(i.origin_branch))&&(i.branch_lease===void 0||i.branch_lease===null||Gi(i.branch_lease))&&(i.origin_binding===void 0||i.origin_binding===null||Fi(i.origin_binding))&&(i.graph_revision===void 0||h(i.graph_revision))&&(i.aggregate_qa_receipt===void 0||i.aggregate_qa_receipt===null||Mi(i.aggregate_qa_receipt))&&(i.terminal_git_receipt===void 0||i.terminal_git_receipt===null||Ki(i.terminal_git_receipt))&&(i.physicalMergeStatus===void 0||["merged","pushed","denied_external_gate","blocked_local_or_repo","not_attempted"].includes(String(i.physicalMergeStatus)))&&(i.pr_number===void 0||i.pr_number===null||Number.isSafeInteger(i.pr_number)&&Number(i.pr_number)>0)&&(i.git_reconciliation_receipts===void 0||Ui(i.git_reconciliation_receipts))&&(i.git_reconciliation_debt===void 0||Zi(i.git_reconciliation_debt))}function zi(i,e){return x(i,qi,"git-lifecycle-runtime-story-unknown-field"),(i.checkpoint===void 0||i.checkpoint===null||Je(i.checkpoint,e))&&(i.status===void 0||A(i.status))&&(i.last_step===void 0||i.last_step===null||A(i.last_step))&&(i.steps_completed===void 0||L(i.steps_completed,128))}function Gi(i){const e=s(i);return e?(x(e,["schemaVersion","ownerStoryId","sessionId","idempotencyKey","acquiredAt","expiresAt","handoffGrant","handoffConsumption"],"git-lifecycle-runtime-lease-unknown-field"),e.schemaVersion===1&&Y(e.ownerStoryId)&&A(e.sessionId)&&A(e.idempotencyKey)&&E(e.acquiredAt)&&E(e.expiresAt)&&Date.parse(String(e.expiresAt))>Date.parse(String(e.acquiredAt))&&(e.handoffGrant===void 0||Hi(e.handoffGrant,e))&&(e.handoffConsumption===void 0||Ti(e.handoffConsumption,e))):!1}function Hi(i,e){const t=s(i);return t?(x(t,["schemaVersion","kind","storyId","fromSessionId","tokenDigest","bundleDigest","claimRevision","expiresAt"],"git-lifecycle-runtime-handoff-grant-unknown-field"),t.schemaVersion===1&&t.kind==="direct-yolo-setup-handoff"&&t.storyId===e.ownerStoryId&&t.fromSessionId===e.sessionId&&h(t.tokenDigest)&&h(t.bundleDigest)&&h(t.claimRevision)&&E(t.expiresAt)&&Date.parse(String(t.expiresAt))<=Date.parse(String(e.expiresAt))):!1}function Ti(i,e){const t=s(i);return t?(x(t,["schemaVersion","kind","state","storyId","fromSessionId","tokenDigest","bundleDigest","claimRevision","consumedBySessionId","consumedAt"],"git-lifecycle-runtime-handoff-consumption-unknown-field"),t.schemaVersion===1&&t.kind==="direct-yolo-setup-handoff-consumption"&&t.state==="consumed"&&t.storyId===e.ownerStoryId&&A(t.fromSessionId)&&h(t.tokenDigest)&&h(t.bundleDigest)&&h(t.claimRevision)&&t.consumedBySessionId===e.sessionId&&E(t.consumedAt)):!1}function Fi(i){const e=s(i);return e?(x(e,["schemaVersion","originBranch","originHeadSha","executionBranch","capturedFromCurrentCheckout","capturedAt"],"git-lifecycle-runtime-origin-unknown-field"),e.schemaVersion===1&&T(e.originBranch)&&T(e.executionBranch)&&e.originBranch!==e.executionBranch&&_(e.originHeadSha)&&e.capturedFromCurrentCheckout===!0&&E(e.capturedAt)):!1}function Mi(i){const e=s(i);if(!e)return!1;x(e,["schemaVersion","evidenceVersion","producer","contract","command","verdict","executionHeadSha","graphRevision","manifestDigest","resultDigest","checkedAt","receiptRef","gateIds"],"git-lifecycle-runtime-aggregate-qa-unknown-field");const t=e.evidenceVersion==="p205-execution-v2"&&e.producer==="local-yolo-tdd"&&e.contract==="P205-CI-02"&&e.command===V&&h(e.manifestDigest)&&h(e.resultDigest),r=e.evidenceVersion===void 0&&e.producer===void 0&&e.contract===void 0&&e.command===void 0&&e.manifestDigest===void 0&&e.resultDigest===void 0;return e.schemaVersion===1&&(t||r)&&e.verdict==="passed"&&_(e.executionHeadSha)&&h(e.graphRevision)&&E(e.checkedAt)&&he(e.receiptRef)&&L(e.gateIds,128,!0)}function Ki(i){const e=s(i);return e?(x(e,["schemaVersion","epicId","executionBranch","originBranch","baseSha","executionHeadSha","mergeSha","pushedSha","strategy","prNumber","physicalStatus","localGateReceiptRefs","idempotencyKey","attemptStartedAt","completedAt","retryEligible","reasonCodes","publicSafe","candidateQa","providerGuard"],"git-lifecycle-runtime-terminal-receipt-unknown-field"),e.schemaVersion===1&&Y(e.epicId)&&T(e.executionBranch)&&T(e.originBranch)&&_(e.baseSha)&&_(e.executionHeadSha)&&(e.mergeSha===void 0||_(e.mergeSha))&&(e.pushedSha===void 0||_(e.pushedSha))&&(e.strategy==="direct"||e.strategy==="single_pr")&&(e.candidateQa===void 0||Yi(e.candidateQa,e))&&(e.providerGuard===void 0||Wi(e.providerGuard,e))&&(e.prNumber===void 0||Number.isSafeInteger(e.prNumber)&&Number(e.prNumber)>0)&&["prepared","merged","pushed","denied_external_gate","blocked_local_or_repo"].includes(String(e.physicalStatus))&&L(e.localGateReceiptRefs,128,!0)&&A(e.idempotencyKey)&&E(e.attemptStartedAt)&&(e.completedAt===void 0||E(e.completedAt))&&typeof e.retryEligible=="boolean"&&L(e.reasonCodes,128)&&e.publicSafe===!0):!1}function Wi(i,e){const t=s(i);if(!t)return!1;x(t,["schemaVersion","provider","mode","source","prHeadSha","originHeadSha","checkedAt","publicSafe"],"git-lifecycle-runtime-provider-guard-unknown-field");const r=t.mode==="recovered_exact_tree"?t.source==="physical_recovery":t.mode==="strict_up_to_date_expected_head"&&["branch_protection","ruleset","branch_protection_and_ruleset"].includes(String(t.source));return t.schemaVersion===1&&t.provider==="github"&&r&&e.strategy==="single_pr"&&e.physicalStatus==="pushed"&&Number.isSafeInteger(e.prNumber)&&Number(e.prNumber)>0&&_(t.prHeadSha)&&t.prHeadSha===e.mergeSha&&_(t.originHeadSha)&&t.originHeadSha===e.baseSha&&E(t.checkedAt)&&t.publicSafe===!0}function Yi(i,e){const t=s(i);return t?(x(t,["schemaVersion","kind","contract","command","originHeadSha","executionHeadSha","mergeSha","treeSha","graphRevision","manifestDigest","resultDigest","gateIds","checkedAt","receiptRef"],"git-lifecycle-runtime-merge-candidate-unknown-field"),t.schemaVersion===1&&t.kind==="epic_merge_candidate_qa"&&t.contract==="P205-CI-02"&&t.command===V&&_(t.originHeadSha)&&t.originHeadSha===e.baseSha&&_(t.executionHeadSha)&&t.executionHeadSha===e.executionHeadSha&&_(t.mergeSha)&&t.mergeSha===e.mergeSha&&_(t.treeSha)&&h(t.graphRevision)&&h(t.manifestDigest)&&h(t.resultDigest)&&L(t.gateIds,128,!0)&&E(t.checkedAt)&&he(t.receiptRef)):!1}function Je(i,e){const t=s(i);if(!t)return!1;x(t,["schemaVersion","storyId","epicId","branch","baseSha","headSha","commits","idempotencyKey","dispatchId","bundleId","bundleDigest","graphRevision","claimRevision","receiptRefs","qaVerdict","reviewVerdict","qaReceipt","reviewReceipt","recordedAt"],"git-lifecycle-runtime-checkpoint-unknown-field");const r=String(e).split(".")[0];return t.schemaVersion===1&&t.storyId===e&&t.epicId===r&&T(t.branch)&&_(t.baseSha)&&_(t.headSha)&&t.baseSha!==t.headSha&&et(t.commits)&&t.commits.length===1&&t.commits[0]===t.headSha&&A(t.idempotencyKey)&&(t.dispatchId===void 0||h(t.dispatchId))&&(t.bundleId===void 0||h(t.bundleId))&&h(t.bundleDigest)&&h(t.graphRevision)&&(t.claimRevision===void 0||h(t.claimRevision))&&L(t.receiptRefs,256,!0)&&(t.qaVerdict==="passed"||t.qaVerdict==="blocked")&&["approved","changes-requested","pending"].includes(String(t.reviewVerdict))&&Ji(t.qaReceipt,t)&&(t.reviewVerdict==="pending"?t.reviewReceipt===void 0:Qi(t.reviewReceipt,t))&&E(t.recordedAt)}function Ji(i,e){const t=s(i);return t?(x(t,["schemaVersion","kind","producer","evidenceVersion","storyId","epicId","baseSha","headSha","bundleDigest","graphRevision","contract","command","manifestDigest","gateIds","resultDigest","sourceEvidenceDigest","verdict","checkedAt","receiptRef"],"git-lifecycle-runtime-story-qa-unknown-field"),t.schemaVersion===1&&t.kind==="story_qa_evidence"&&t.producer==="local-yolo-tdd"&&(t.evidenceVersion===void 0||t.evidenceVersion==="git-immutable-v1"||t.evidenceVersion==="p205-execution-v2"&&t.contract==="P205-CI-02"&&t.command===V&&h(t.manifestDigest)&&L(t.gateIds,32,!0)&&h(t.resultDigest))&&Qe(t,e)&&h(t.sourceEvidenceDigest)&&t.verdict===e.qaVerdict&&(t.verdict==="passed"||t.verdict==="blocked")&&E(t.checkedAt)&&he(t.receiptRef)&&e.receiptRefs.includes(t.receiptRef)):!1}function Qi(i,e){const t=s(i),r=s(e.qaReceipt);return!t||!r?!1:(x(t,["schemaVersion","kind","producer","storyId","epicId","baseSha","headSha","bundleDigest","graphRevision","sourceEvidenceDigest","qaReceiptRef","verdict","reviewedAt","receiptRef"],"git-lifecycle-runtime-story-review-unknown-field"),t.schemaVersion===1&&t.kind==="story_review_evidence"&&t.producer==="root-commit-range-review"&&Qe(t,e)&&h(t.sourceEvidenceDigest)&&t.qaReceiptRef===r.receiptRef&&t.receiptRef!==r.receiptRef&&(t.verdict==="approved"||t.verdict==="changes-requested")&&(t.verdict==="approved"?e.reviewVerdict==="approved":e.reviewVerdict==="changes-requested")&&E(t.reviewedAt)&&Date.parse(String(t.reviewedAt))>=Date.parse(String(r.checkedAt))&&he(t.receiptRef)&&e.receiptRefs.includes(t.receiptRef))}function Qe(i,e){return["storyId","epicId","baseSha","headSha","bundleDigest","graphRevision"].every(t=>i[t]===e[t])}function Ui(i){return!Array.isArray(i)||i.length>1024?!1:i.every(e=>{const t=s(e);return t?(x(t,["schemaVersion","resourceId","action","outcome","idempotencyKey","reasonCodes","recordedAt","publicSafe"],"git-lifecycle-runtime-reconciliation-receipt-unknown-field"),t.schemaVersion===1&&A(t.resourceId)&&["no_op","delete_local_branch","delete_remote_branch","close_pull_request"].includes(String(t.action))&&["applied","already_absent","dry_run","failed"].includes(String(t.outcome))&&A(t.idempotencyKey)&&L(t.reasonCodes,128)&&E(t.recordedAt)&&t.publicSafe===!0):!1})}function Zi(i){return!Array.isArray(i)||i.length>1024?!1:i.every(e=>{const t=s(e);return t?(x(t,["schemaVersion","resourceId","action","managed","reasonCodes","evidence","publicSafe"],"git-lifecycle-runtime-reconciliation-debt-unknown-field"),t.schemaVersion===1&&A(t.resourceId)&&t.action==="preserve"&&typeof t.managed=="boolean"&&L(t.reasonCodes,128)&&L(t.evidence,16)&&t.publicSafe===!0):!1})}function x(i,e,t){const r=new Set(e);if(Object.keys(i).some(n=>!r.has(n)))throw new Error(t)}function Y(i){return typeof i=="string"&&/^P[1-9][0-9]*(?:\.[0-9]+)*$/.test(i)}function Xi(i){const e=s(i);return e?Object.keys(e).length===10&&e.schemaVersion===1&&e.kind==="git_lifecycle_graph_authority"&&e.producer==="server-continuous-yoloop-v1"&&(e.source==="yolo"||e.source==="yoloop")&&Y(e.epicId)&&Y(e.storyId)&&String(e.storyId).startsWith(`${String(e.epicId)}.`)&&T(e.executionBranch)&&T(e.originBranch)&&e.originBranch!==e.executionBranch&&typeof e.graphRevision=="string"&&/^[a-f0-9]{64}$/.test(e.graphRevision)&&e.publicSafe===!0:!1}function T(i){return typeof i=="string"&&/^[A-Za-z0-9][A-Za-z0-9._/-]{0,239}$/.test(i)&&!i.includes("..")&&!i.includes("//")&&!i.includes("@{")&&!i.endsWith("/")&&!i.endsWith(".")&&!i.split("/").some(e=>!e||e.startsWith(".")||e.endsWith(".lock"))}function ge(i){return i.length>0&&i.length<=1024&&!ne(i)&&!i.includes("\0")&&!i.replaceAll("\\","/").split("/").includes("..")}function A(i){return typeof i=="string"&&i.length>0&&i.length<=240&&/^[A-Za-z0-9._:/#\-[\]]+$/.test(i)&&!i.includes("..")}function he(i){return A(i)}function _(i){return typeof i=="string"&&/^[a-f0-9]{40,64}$/i.test(i)}function h(i){return typeof i=="string"&&/^[a-f0-9]{64}$/i.test(i)}function E(i){return typeof i=="string"&&i.length<=64&&Number.isFinite(Date.parse(i))}function L(i,e,t=!1){return Array.isArray(i)&&i.length<=e&&(!t||i.length>0)&&i.every(A)}function et(i){return Array.isArray(i)&&i.length>0&&i.length<=256&&i.every(_)}function Ee(){return{schemaVersion:1,revision:0,epics:{},stories:{}}}async function it(i){const e=M(i),t={pid:process.pid,nonce:ye(16).toString("hex")},r=async()=>{await K(e),await Be(e,R(i),JSON.stringify(t));try{await D(i,e),await W(y(i,"owner.json"),i)}catch(n){throw await Z(i,e).catch(()=>{}),n}};try{await r()}catch(n){if(!k(n,"EEXIST"))throw n;await z(i,"directory");const a=await Ie(i);if(a!==void 0&&le(a.pid))throw new Error("git-lifecycle-runtime-lock-active");if(a===void 0&&await Ue(i))throw new Error("git-lifecycle-runtime-lock-active");const o=await O(i);if(!o)throw new Error("git-lifecycle-runtime-lock-owner-invalid");const d=`${i}.stale.${process.pid}.${Date.now()}`;await ie(e,R(i),R(d));try{if(await D(d,e),await O(d)!==o)throw await oe(d,i,e).catch(()=>{}),new Error("git-lifecycle-runtime-lock-owner-replaced");await r()}finally{await Z(d,e,async u=>await O(u)===o).catch(()=>{})}}return t}async function tt(i,e){const t=M(i);try{await D(i,t);const r=await Ie(i);if(!r||!Ze(r,e))return!1;const n=await O(i);if(!n)return!1;const a=`${i}.release.${process.pid}.${Date.now()}`;await ie(t,R(i),R(a)),await D(a,t);const o=await Ie(a);return!o||!Ze(o,e)||await O(a)!==n?(await oe(a,i,t).catch(()=>{}),!1):Z(a,t,async d=>await O(d)===n)}catch(r){if(k(r,"ENOENT"))return!1;throw r}}async function Ue(i){try{return Date.now()-(await ai(i)).mtimeMs<3e4}catch{return!0}}async function Ie(i){try{await D(i,M(i));const e=y(i,"owner.json");await W(e,i);const t=JSON.parse(await H(e,"utf8"));return Number.isSafeInteger(t.pid)&&Number(t.pid)>0&&(t.nonce===void 0||typeof t.nonce=="string"&&/^[a-f0-9]{32}$/.test(t.nonce))?{pid:Number(t.pid),...typeof t.nonce=="string"?{nonce:t.nonce}:{}}:void 0}catch{return}}function Ze(i,e){return i.pid===e.pid&&i.nonce!==void 0&&i.nonce===e.nonce}function le(i){try{return process.kill(i,0),!0}catch(e){return k(e,"EPERM")}}function s(i){return i&&typeof i=="object"&&!Array.isArray(i)?i:void 0}function k(i,e){return i instanceof Error&&"code"in i&&i.code===e}export{de as GIT_LIFECYCLE_RUNTIME_DIRECTORY,fe as GIT_LIFECYCLE_RUNTIME_FILE,Ve as LEGACY_DIRECT_YOLO_RECOVERY_COMMITS,mi as LEGACY_P174_CHECKPOINT_MIGRATIONS,V as P205_COMPLETE_COMMAND,xt as acquireGitLifecyclePhysicalIntegrationLock,wi as applyGitLifecycleRuntimeOverlay,D as assertGitLifecyclePrivateDirectory,_t as assertGitLifecyclePrivateFile,Bi as computeGitLifecyclePhysicalIntegrationLockOwnerDigest,Ri as computeImmutableStoryQaEvidenceDigest,Dt as computeLegacyDirectYoloRecoveryReceiptRef,Ai as computeP205StoryQaEvidenceDigest,Oi as ensureGitLifecyclePrivateChildDirectory,mt as ensureGitLifecycleRuntimeInitialized,Si as ensureRuntimeEpic,yt as ensureRuntimeStory,lt as executeP205TransientAuthority,Te as gitLifecycleRuntimeDirectory,Ei as gitLifecycleStoryWriteSet,ze as isAcceptedGitLifecycleStoryCheckpoint,qe as mutateGitLifecycleRuntime,St as p205TransientAuthorityMatchesAggregate,pt as persistGitLifecycleGraphAuthority,ue as posixSecurityAvailable,wt as projectP205TransientExecutionEvidence,ve as readGitLifecycleRuntime,yi as readGitLifecycleRuntimeSync,Pi as releaseGitLifecyclePhysicalIntegrationLock,It as releaseGitLifecyclePhysicalIntegrationLockForCheckpoint,Z as removeGitLifecyclePrivateDirectory,bt as verifyAcceptedGitLifecycleStoryCheckpoint,vi as verifyAcceptedGitLifecycleStoryCheckpointSync,Et as verifyGitLifecyclePhysicalIntegrationLock,vt as verifyLegacyCheckpointMigrationCandidateSync};
1
+ import{execFile as ni,execFileSync as re}from"node:child_process";import{createHash as b,randomBytes as ye}from"node:crypto";import{lstat as be,open as ai,readFile as H,realpath as U,stat as ci}from"node:fs/promises";import{existsSync as q,lstatSync as Oe,readFileSync as Pe,realpathSync as we}from"node:fs";import{basename as A,dirname as K,isAbsolute as ne,join as y,relative as oi,resolve as p}from"node:path";import{promisify as si}from"node:util";import{publicWriteSet as di}from"../../../shared/dist/yoloop/public-story-write-set.js";import{resolveBranchUnit as fi}from"../../../shared/dist/yoloop/branch-unit.js";import{anchoredAtomicWriteFile as ui,anchoredCreateOwnedDirectory as Ne,anchoredEnsureDirectory as Be,anchoredExecuteGit as gi,anchoredExecuteNode as $e,anchoredRemoveDirectory as hi,anchoredRenameDirectory as ie}from"./secure-filesystem-boundary.js";import{GIT_LIFECYCLE_COMMIT_PUSH_STEP_ID as li,GIT_LIFECYCLE_REVIEW_PR_STEP_ID as mi}from"./git-lifecycle-step-ids.js";const N=si(ni),de="neocortex-yoloop",fe="runtime.json",V="node scripts/test-root.mjs --gate complete",Ve=Object.freeze({"P174.03.029264":"339141be7339a0edf55710cbccb6e6558f514792"}),pi=Object.freeze({"P174.03.811759":Object.freeze({baseSha:"749c8fc732deaf26c81a8e08cc94b83c8cf0f5ba",headSha:"84162456d9cbe5000ffd0ed3eb3d0e88cfeba499",graphRevision:"60b343b4b810e6d5abc3159275012b9ab9ab517f9d780e7550fa5b49be740445",effectiveClaimRevision:"11f54704f5007f6139159419cfd7781f908b1502e117365c6d84011384579ed2",commitBodyDigest:"b4fc759a49765fd8c0b3d0f5d1c333c2a4bf28d324e83eedabb12f9530df3738",changedPathsDigest:"11f54704f5007f6139159419cfd7781f908b1502e117365c6d84011384579ed2",qaDigest:"f1100775e21f5d0d990f77303a2a06d936908f016983e32a63316d81aee6b9fc",reviewDigest:"50400bbcddb6f02408837cf99077de5d3af8c84822ab23a8b5499c338af7103a"}),"P174.03.685003":Object.freeze({baseSha:"84162456d9cbe5000ffd0ed3eb3d0e88cfeba499",headSha:"272a7fee89e4b9324d35701df1c83b671fa96299",graphRevision:"60b343b4b810e6d5abc3159275012b9ab9ab517f9d780e7550fa5b49be740445",effectiveClaimRevision:"6cc3c9033f1c4711dcbe3c676d1d7f9906614c7d6e95228e843d1c63cefbc641",commitBodyDigest:"e97966e26ce3ba31d5951b9fdac67808c88c1fd8be7ec1e73982f3f1cc7ffd81",changedPathsDigest:"6cc3c9033f1c4711dcbe3c676d1d7f9906614c7d6e95228e843d1c63cefbc641",qaDigest:"7439329a93321f39fb6b0de0a41c22e58373a399f9048e362dff4ffa6f1a7d89",reviewDigest:"1b2d12262e84acf9da7d06149a0effb11274ebdc986affbfd47635b855ec7135"}),"P174.03.029264":Object.freeze({baseSha:"272a7fee89e4b9324d35701df1c83b671fa96299",headSha:"339141be7339a0edf55710cbccb6e6558f514792",graphRevision:"60b343b4b810e6d5abc3159275012b9ab9ab517f9d780e7550fa5b49be740445",effectiveClaimRevision:"1053bb2baf487e38fa28d7e8cfb872c5c4da66802534ee226bbc2c7455a6a5ab",commitBodyDigest:"0f269a00dcd168a6f548ff10dfa667b193c948ac9c7211f5cb11a0561757c371",changedPathsDigest:"1053bb2baf487e38fa28d7e8cfb872c5c4da66802534ee226bbc2c7455a6a5ab",qaDigest:"ef0fd2c6e216557825cd8521ccb2f9960a3af48f18e7a5ada441bee8bfda400b",reviewDigest:"372d0f4a2f32978c8b39f20167637b3917187edb75d49875e93200c4c5a19d0d"}),"P174.03.913359":Object.freeze({baseSha:"339141be7339a0edf55710cbccb6e6558f514792",headSha:"4ccc90b85c49b27f718090bf25bc452f1b84e5e3",graphRevision:"60b343b4b810e6d5abc3159275012b9ab9ab517f9d780e7550fa5b49be740445",effectiveClaimRevision:"12b5cfba2667e8064309807776c1b323561dc8d853f9afe5f676007b8494b2b5",commitBodyDigest:"89a6653197509e75246a758d2706876b337770571a1cac47d9d85ec96c196459",changedPathsDigest:"12b5cfba2667e8064309807776c1b323561dc8d853f9afe5f676007b8494b2b5",qaDigest:"c7d3762ad30e4f9356243df17a1dd7123cbf1b660808d68176f44d1cd5da6449",reviewDigest:"e4ecf577e174fd66f31aa4a0113ab672ced16b12ee531f6831aa533795145ba1"}),"P174.03.724350":Object.freeze({baseSha:"4ccc90b85c49b27f718090bf25bc452f1b84e5e3",headSha:"568e9464fb086304146b9eb4594281f91302aef1",graphRevision:"60b343b4b810e6d5abc3159275012b9ab9ab517f9d780e7550fa5b49be740445",effectiveClaimRevision:"c8b8b6b96edf9cea78925e2f961bd74069d77af03783a5368b8ac8025bf1fefe",commitBodyDigest:"b3032338bfcd6c9dc460e9426220a1966dedeff9968c4064fdd36a315560721b",changedPathsDigest:"c8b8b6b96edf9cea78925e2f961bd74069d77af03783a5368b8ac8025bf1fefe",qaDigest:"91f2f5b00935b1b04bb5d400df500cbc97c412072078b713c6e5ba8fda669bd0",reviewDigest:"9bc92069d3b3a76cc8b02d339d432690258be1376464b69e152ed8fd3d682f05"}),"P174.03.011976":Object.freeze({baseSha:"568e9464fb086304146b9eb4594281f91302aef1",headSha:"195599b1a99a99a8416c4c26c9ab9990847338a4",graphRevision:"60b343b4b810e6d5abc3159275012b9ab9ab517f9d780e7550fa5b49be740445",effectiveClaimRevision:"49b7f2a0a967b2ba4249615c6d08834445a60df95045352838808eb4d6743b21",commitBodyDigest:"b8a28392fac663dd614b695a49c894b7cab116d45722a42850e3b24e2aaf36f4",changedPathsDigest:"49b7f2a0a967b2ba4249615c6d08834445a60df95045352838808eb4d6743b21",qaDigest:"6eb4459a7d80c4a268fc931297e8156ed2a320584f8775f0787d91b42c0929d4",reviewDigest:"98b21de29f7cceeec73da19000c6c144395cce6eb699c6a82dfab505d4ab7b44"}),"P174.03.686659":Object.freeze({baseSha:"195599b1a99a99a8416c4c26c9ab9990847338a4",headSha:"0db3681a5dad4e25ce37d967c636eb9d54915556",graphRevision:"60b343b4b810e6d5abc3159275012b9ab9ab517f9d780e7550fa5b49be740445",effectiveClaimRevision:"5c0fdbf820d677c288981b6f73f7d2d9a04ce7f4713687f12a2e984705244b8e",commitBodyDigest:"143257f4018ad773afc0c7280bd8aab8786851a9c20b65f8110881ff54656839",changedPathsDigest:"5c0fdbf820d677c288981b6f73f7d2d9a04ce7f4713687f12a2e984705244b8e",qaDigest:"6303dbf473e2815a3671aeb2c25528d8daba484b92a5a40d1eea5215e1f6763e",reviewDigest:"1bd6695846ed9340c8677cfa9b573880532187aeee487efaaa70577a0c94e7f2"})}),Se="neocortex-yoloop-runtime.json",yi="runtime.lock",Le=new WeakMap;async function mt(i,e){if(!_(e.headSha)||!h(e.graphRevision))throw new Error("p205-transient-binding-invalid");const t=e.anchoredWorkspace;if(t&&p(i)!==y(p(t.parent),t.name))throw new Error("p205-transient-anchor-binding-invalid");const r=async R=>t?(await gi(t.parent,t.name,t.identity,R)).toString("utf8"):String((await N("git",[...R],{cwd:i,encoding:"utf8",maxBuffer:8*1024*1024})).stdout),n=async()=>t?JSON.parse((await $e(t.parent,t.name,t.identity,["-e","const fs=require('node:fs');process.stdout.write(JSON.stringify({manifest:fs.readFileSync('config/release-gates.v2.json','utf8'),runner:fs.readFileSync('scripts/test-root.mjs','utf8')}));"])).toString("utf8")):{manifest:await H(y(i,"config","release-gates.v2.json"),"utf8"),runner:await H(y(i,"scripts","test-root.mjs"),"utf8")};if((await r(["rev-parse","HEAD"])).trim()!==e.headSha)throw new Error("p205-transient-head-mismatch");const{manifest:o,runner:d}=await n(),[u,c]=await Promise.all([r(["show",`${e.headSha}:config/release-gates.v2.json`]),r(["show",`${e.headSha}:scripts/test-root.mjs`])]);if(o!==u||d!==c)throw new Error("p205-transient-producer-dirty");const f=JSON.parse(o),v=Array.isArray(f.requiredCompleteClasses)?f.requiredCompleteClasses.filter(R=>typeof R=="string"&&/^[a-z0-9-]+$/.test(R)):[];if(f.contract!=="P205-CI-02"||v.length===0)throw new Error("p205-transient-manifest-invalid");const g=t?(await $e(t.parent,t.name,t.identity,["scripts/test-root.mjs","--gate","complete"])).toString("utf8"):String((await N(process.execPath,["scripts/test-root.mjs","--gate","complete"],{cwd:i,encoding:"utf8",maxBuffer:64*1024*1024})).stdout),{manifest:l,runner:w}=await n();if(l!==o||w!==d)throw new Error("p205-transient-producer-raced");if((await r(["rev-parse","HEAD"])).trim()!==e.headSha)throw new Error("p205-transient-head-raced");const P=b("sha256").update(o).digest("hex"),I=b("sha256").update(g).digest("hex"),Q=ce(e.nowIso??new Date().toISOString()),S=b("sha256").update(["p205-transient-execution-v1",V,e.headSha,e.graphRevision,P,v.join(","),I,Q].join("\0")).digest("hex"),m=Object.freeze({schemaVersion:1,kind:"p205_transient_execution_authority",contract:"P205-CI-02",command:V,executionHeadSha:e.headSha,graphRevision:e.graphRevision,manifestDigest:P,gateIds:Object.freeze(v),resultDigest:I,executedAt:Q,executionEvidenceDigest:S}),F=Object.freeze(Object.create(null));return Le.set(F,m),F}async function ve(i,e={}){const t=await Oi(i);return Ye(t,e)}function bi(i,e={}){let t;try{const r=re("git",["rev-parse","--git-common-dir"],{cwd:i,encoding:"utf8",stdio:["ignore","pipe","ignore"]}).trim(),n=we(i),a=ne(r)?p(r):p(n,r),o=we(a);if(o!==a)throw new Error("git-lifecycle-common-dir-symlink");Li(o);const d=y(o,de),u=y(d,fe);if(q(d)&&(Je(d,"directory"),we(d)!==d))throw new Error("git-lifecycle-runtime-directory-symlink");t=q(u)?u:y(o,Se)}catch{if(e.required)throw new Error("git-lifecycle-common-dir-invalid");return Ee()}if(!q(t)){if(e.required)throw new Error("git-lifecycle-runtime-missing");return Ee()}return Je(t,"file"),xe(JSON.parse(Pe(t,"utf8")))}async function pt(i){try{await ve(i,{required:!0});return}catch(e){if(!(e instanceof Error)||e.message!=="git-lifecycle-runtime-missing")throw e}try{await je(i,()=>{},{expectedRevision:0})}catch(e){if(!(e instanceof Error)||e.message!=="git-lifecycle-runtime-revision-conflict")throw e;await ve(i,{required:!0})}}function qe(i,e,t){if(!i||i.ownerStoryId!==e)return!1;const r=typeof i.sessionId=="string"?i.sessionId:"",n=Date.parse(String(i.expiresAt));return/^setup-[a-f0-9]{64}$/.test(r)&&i.idempotencyKey===r&&Number.isFinite(n)&&n>t}async function yt(i,e,t=new Date().toISOString()){if(!et(e))throw new Error("git-lifecycle-graph-authority-invalid");const r=y(p(i),".neocortex","state.json"),n=await H(r,"utf8"),a=s(JSON.parse(n));if(!a)throw new Error("git-lifecycle-tracked-state-invalid");const o=await ve(i),d=Si(a,o),u=s(s(d.epics)?.[e.epicId]),c=s(s(d.stories)?.[e.storyId]);if(!u)throw new Error("git-lifecycle-graph-authority-epic-invalid");if(!c||String(c.epic_id??e.storyId.split(".")[0])!==e.epicId)throw new Error("git-lifecycle-graph-authority-story-invalid");const f=Array.isArray(u.stories)?u.stories.filter(S=>typeof S=="string"):Object.keys(s(d.stories)??{}).filter(S=>{const m=s(s(d.stories)?.[S]);return String(m?.epic_id??S.split(".")[0])===e.epicId});if(Array.isArray(u.stories)&&!f.includes(e.storyId))throw new Error("git-lifecycle-graph-authority-story-invalid");const v=f.map(S=>{const m=s(s(d.stories)?.[S])??{};return{id:S,branch_name:typeof m.branch_name=="string"||m.branch_name===null?m.branch_name:void 0,pr_number:typeof m.pr_number=="number"||m.pr_number===null?m.pr_number:void 0,steps_completed:Array.isArray(m.steps_completed)?m.steps_completed.filter(F=>typeof F=="string"):[],checkpoint:s(m.checkpoint)}}),g=fi({...u,id:e.epicId},v);if(g.mode!=="epic")throw new Error("git-lifecycle-graph-authority-epic-invalid");if(g.executionBranch!==e.executionBranch)throw new Error("git-lifecycle-graph-authority-branch-mismatch");if(g.originBranch!==void 0&&g.originBranch!==e.originBranch)throw new Error("git-lifecycle-graph-authority-origin-mismatch");const l=typeof s(o.epics[e.epicId])?.origin_branch=="string"?String(s(o.epics[e.epicId]).origin_branch):void 0;if(l!==void 0&&l!==e.originBranch)throw new Error("git-lifecycle-graph-authority-origin-mismatch");if(g.originBranch===void 0&&l===void 0){const{stdout:S}=await N("git",["branch","--show-current"],{cwd:i,encoding:"utf8",maxBuffer:1048576});if(String(S).trim()!==e.originBranch)throw new Error("git-lifecycle-graph-authority-origin-physical-mismatch")}const w=typeof u.graph_revision=="string"?u.graph_revision:void 0,B=typeof s(o.epics[e.epicId])?.graph_revision=="string"?String(s(o.epics[e.epicId]).graph_revision):void 0;if(w!==void 0&&!h(w))throw new Error("git-lifecycle-graph-revision-invalid");if(w===e.graphRevision&&B===e.graphRevision&&g.originBranch===e.originBranch&&l===e.originBranch)return{applied:!1,reused:!0,revision:o.revision,graphRevision:e.graphRevision};const P=Date.parse(t);if(!Number.isFinite(P))throw new Error("git-lifecycle-graph-authority-time-invalid");const I=s(u.branch_lease);if(I&&Number.isFinite(Date.parse(String(I.expiresAt)))&&Date.parse(String(I.expiresAt))>P&&!qe(I,e.storyId,P))throw new Error("git-lifecycle-graph-authority-writer-active");return{applied:!0,reused:!1,revision:(await je(i,S=>{const m=vi(S,e.epicId);if(m.branch_mode!==void 0&&m.branch_mode!=="epic")throw new Error("git-lifecycle-graph-authority-epic-raced");const F=m.execution_branch;if(F!==void 0&&F!==e.executionBranch)throw new Error("git-lifecycle-graph-authority-branch-raced");const R=m.origin_branch;if(R!==void 0&&R!==e.originBranch)throw new Error("git-lifecycle-graph-authority-origin-raced");const X=m.graph_revision;if(X!==void 0&&X!==w)throw new Error("git-lifecycle-graph-authority-epoch-raced");const M=s(m.branch_lease);if(M&&Number.isFinite(Date.parse(String(M.expiresAt)))&&Date.parse(String(M.expiresAt))>P&&!qe(M,e.storyId,P))throw new Error("git-lifecycle-graph-authority-writer-active");m.branch_mode="epic",m.execution_branch=e.executionBranch,m.origin_branch=e.originBranch,m.graph_revision=e.graphRevision},{expectedRevision:o.revision,preCommit:async()=>{if(await H(r,"utf8")!==n)throw new Error("git-lifecycle-graph-authority-tracked-state-raced")}})).document.revision,graphRevision:e.graphRevision}}async function je(i,e,t={}){const r=await _e(i),n=await We(r),a=y(n,yi),o=await tt(a);try{const d=y(n,fe),u=y(r,Se),c=await Ye(q(d)?d:u);if(t.expectedRevision!==void 0&&t.expectedRevision!==c.revision)throw new Error("git-lifecycle-runtime-revision-conflict");const f=structuredClone(c),v=e(f),g=xe({...f,schemaVersion:1,revision:c.revision+1});return await t.preCommit?.(g),await z(n,"directory"),await $i(d),await ui(n,fe,`${JSON.stringify(g,null,2)}
2
+ `),await z(d,"file"),await wi(n),{document:g,value:v}}finally{await rt(a,o).catch(()=>{})}}async function wi(i){let e;try{e=await ai(i,"r")}catch(t){if(process.platform==="win32"&&(C(t,"EPERM")||C(t,"EISDIR")||C(t,"EINVAL")))return;throw t}try{await e.sync()}finally{await e.close()}}function Si(i,e){const t=structuredClone(i),r=ze(t,"epics"),n=ze(t,"stories");for(const[a,o]of Object.entries(e.epics))r[a]={...s(r[a])??{},...structuredClone(o)};for(const[a,o]of Object.entries(e.stories))n[a]={...s(n[a])??{},...structuredClone(o)};return t}function ze(i,e){const t=i[e];if(t===void 0){const a={};return i[e]=a,a}const r=s(t);if(r)return r;if(!Array.isArray(t))throw new Error(`git-lifecycle-tracked-${e}-invalid`);const n={};for(const a of t){const o=s(a),d=typeof o?.id=="string"?o.id.trim():"";if(!d||n[d]!==void 0)throw new Error(`git-lifecycle-tracked-${e}-ambiguous`);n[d]=o}return i[e]=n,n}function vi(i,e){return i.epics[e]??(i.epics[e]={})}function bt(i,e){return i.stories[e]??(i.stories[e]={})}function Ge(i,e,t,r){const n=s(i);return!!(n&&n.epicId===t&&n.branch===r&&n.qaVerdict==="passed"&&n.reviewVerdict==="approved"&&Qe(n,e))}async function wt(i,e,t,r,n,a,o=[]){return Di(i,e,t,r,n,a,o).verdict==="verified"}function Di(i,e,t,r,n,a,o=[],d=new Date().toISOString()){const u=()=>Ci({storyId:t,epicId:r,executionBranch:n,value:e,verifiedAt:d,verdict:"rejected",reasonCode:"checkpoint-git-physical-invalid"});try{if(!Ge(e,t,r,n))return u();const c=s(e),f=s(c.qaReceipt),v=s(c.reviewReceipt),g=String(c.headSha),l=String(c.baseSha),w=j(i,["rev-parse",`refs/heads/${n}`]).trim();re("git",["merge-base","--is-ancestor",g,w],{cwd:i,stdio:"ignore"});const B=j(i,["show","--no-patch","--format=%H%n%P%n%B",g]),P=j(i,["rev-parse",`${g}^`]).trim(),I=j(i,["rev-list","--count",`${l}..${g}`]).trim();if(P!==l||I!=="1")return u();const Q=new Set(B.split(`
3
+ `).map(G=>G.trim())),m=[`Neocortex-Story: ${t}`,`Neocortex-Epic: ${r}`,`Neocortex-Execution-Branch: ${n}`,`Neocortex-Bundle-Digest: ${String(c.bundleDigest)}`,`Neocortex-Graph-Revision: ${String(c.graphRevision)}`,...c.dispatchId?[`Neocortex-Dispatch: ${String(c.dispatchId)}`]:[],...c.bundleId?[`Neocortex-Bundle: ${String(c.bundleId)}`]:[],...c.claimRevision?[`Neocortex-Claim-Revision: ${String(c.claimRevision)}`]:[]].every(G=>Q.has(G));if(m){const Ce=[...Q].find(ri=>ri.startsWith("Neocortex-Prepared-Base: "))?.slice(25)??"";if(!/^[a-f0-9]{40,64}$/i.test(Ce))return u();re("git",["merge-base","--is-ancestor",Ce,g],{cwd:i,stdio:"ignore"})}const R=j(i,["diff-tree","--no-commit-id","--name-only","-r","-z",g]).split("\0").filter(Boolean);if(R.length===0||R.some(G=>!ge(G)))return u();const X=b("sha256").update(B).digest("hex"),M=b("sha256").update([...R].sort().join("\0")).digest("hex"),$=He({checkpoint:c,storyId:t,epicId:r,executionBranch:n,baseSha:l,headSha:g,commitBodyDigest:X,changedPathsDigest:M,changedPaths:R,authorizedWriteSet:o.length>0?o:Ei(i,t)});if(!$||f.receiptRef!==`story-qa:${String(f.sourceEvidenceDigest)}`)return u();const Re=Ai({storyId:t,baseSha:l,headSha:g,bundleDigest:String(c.bundleDigest),graphRevision:String(c.graphRevision),commitBody:B,changedPaths:R}),Ae=f.evidenceVersion==="p205-execution-v2"&&f.contract==="P205-CI-02"&&f.command===V&&h(f.manifestDigest)&&L(f.gateIds,32,!0)&&h(f.resultDigest)&&f.sourceEvidenceDigest===ki({gitEvidenceDigest:Re,headSha:g,graphRevision:String(c.graphRevision),manifestDigest:String(f.manifestDigest),gateIds:f.gateIds,resultDigest:String(f.resultDigest)}),ei=f.evidenceVersion==="git-immutable-v1"&&f.sourceEvidenceDigest===Re,ii=f.evidenceVersion===void 0&&$.mode==="legacy-migration"&&$.binding?.qaDigest===f.sourceEvidenceDigest,me=_i(a,w,String(c.graphRevision))&&(Ae||$.mode==="legacy-migration"&&(ei||ii)),pe=a===void 0&&Ae;if(!me&&!pe)return u();const ke=b("sha256").update(["root-commit-range-review-v1",t,l,g,String(c.bundleDigest),String(c.graphRevision),String(f.receiptRef),b("sha256").update(B).digest("hex"),[...R].sort().join(",")].join("\0")).digest("hex");if(v.sourceEvidenceDigest!==ke||v.receiptRef!==`story-review:${ke}`||$.mode==="legacy-migration"&&$.binding?.reviewDigest!==void 0&&$.binding.reviewDigest!==v.sourceEvidenceDigest||!m&&(Ve[t]!==g||!Array.isArray(c.receiptRefs)||!c.receiptRefs.some(G=>typeof G=="string"&&G.startsWith("legacy-direct-yolo:"))))return u();const ti=b("sha256").update(["checkpoint-p205-transient-v1",t,r,n,l,g,String(c.bundleDigest),X,M,$.mode,$.effectiveClaimRevision,String(f.sourceEvidenceDigest),String(v.sourceEvidenceDigest),ae(a)?.executionEvidenceDigest??(pe?"maintenance-git-verification":"legacy-bounded-authority")].join("\0")).digest("hex"),ee=me?ae(a):void 0;return Object.freeze({schemaVersion:1,kind:"story_checkpoint_physical_verification",producer:"client-p205-transient-v1",storyId:t,epicId:r,branch:n,baseSha:l,headSha:g,aggregateHeadSha:ee?.executionHeadSha??g,commitBodyDigest:X,changedPathsDigest:M,claimVerification:$.mode,effectiveClaimRevision:$.effectiveClaimRevision,sourceEvidenceDigest:ti,command:V,manifestDigest:ee?.manifestDigest??"0".repeat(64),gateIds:ee?.gateIds??Object.freeze(["legacy-bounded"]),resultDigest:ee?.resultDigest??"0".repeat(64),graphRevision:String(c.graphRevision),executionEvidenceDigest:ee?.executionEvidenceDigest??"0".repeat(64),verifiedAt:ee?.executedAt??ce(d),verdict:"verified",reasonCodes:Object.freeze([me?"checkpoint-p205-transient-verified":pe?"checkpoint-git-maintenance-verified":"checkpoint-legacy-bounded-verified",...$.mode==="legacy-migration"?["checkpoint-legacy-migration-verified"]:[]]),publicSafe:!0})}catch{return u()}}function _i(i,e,t){const r=ae(i);return!!(r&&r.schemaVersion===1&&r.kind==="p205_transient_execution_authority"&&r.contract==="P205-CI-02"&&r.command===V&&r.graphRevision===t&&h(r.resultDigest)&&h(r.executionEvidenceDigest)&&r.executionHeadSha===e&&_(e))}function ae(i){return i&&typeof i=="object"?Le.get(i):void 0}function St(i){const e=ae(i);return e?Object.freeze({executionHeadSha:e.executionHeadSha,graphRevision:e.graphRevision,manifestDigest:e.manifestDigest,gateIds:Object.freeze([...e.gateIds]),resultDigest:e.resultDigest,executedAt:e.executedAt,executionEvidenceDigest:e.executionEvidenceDigest}):void 0}function vt(i,e,t){const r=ae(i);return!!(r&&r.executionHeadSha===e&&r.graphRevision===t&&r.command===V)}function He(i){const e=pi[i.storyId],t=typeof i.checkpoint.claimRevision=="string"?i.checkpoint.claimRevision:void 0,r=i.storyId==="P174.03.811759"||i.storyId==="P174.03.685003",n=xi(i.authorizedWriteSet),a=n.length>0&&n.length===i.authorizedWriteSet.length&&i.changedPaths.every(o=>n.some(d=>Ri(d,o)));if(e&&i.epicId==="P174"&&i.executionBranch==="epic/P174"&&i.baseSha===e.baseSha&&i.headSha===e.headSha&&i.checkpoint.graphRevision===e.graphRevision&&i.commitBodyDigest===e.commitBodyDigest&&i.changedPathsDigest===e.changedPathsDigest&&(r?t===void 0:t===e.effectiveClaimRevision))return i.authorizedWriteSet.length>0&&(!a||!Te(e.effectiveClaimRevision,n))?void 0:Object.freeze({mode:"legacy-migration",effectiveClaimRevision:e.effectiveClaimRevision,binding:e});if(t!==void 0&&!(!t||!h(t))&&!(!a||!Te(t,n)))return Object.freeze({mode:"canonical",effectiveClaimRevision:t})}function xi(i){const e=i.map(t=>t.replaceAll("\\","/").replace(/^\.\//,"").replace(/\/{2,}/g,"/"));return e.some(t=>!ge(t))?Object.freeze([]):Object.freeze([...new Set(e)].sort())}function Ei(i,e){try{const t=JSON.parse(Pe(y(i,".neocortex","state.json"),"utf8")),r=s(t.stories),n=s(r?.[e]),a=bi(i),o=s(a.stories[e]?.checkpoint)??s(n?.checkpoint);return Ii(e,n,o)}catch{return[]}}function Ii(i,e,t){const r=Array.isArray(e?.files_to_modify)?e.files_to_modify.filter(n=>typeof n=="string"):[];if(!t?.dispatchId||!t.bundleId)return r;try{return di({...e,id:i,files_to_modify:r})}catch{return[]}}function Te(i,e){return i===b("sha256").update(e.join("\0")).digest("hex")||i===b("sha256").update(JSON.stringify(e)).digest("hex")}function Ri(i,e){return i===e||i.endsWith("/")&&e.startsWith(i)}function Dt(i,e,t,r,n,a){try{if(!Ge(e,t,r,n))return!1;const o=s(e),d=s(o.qaReceipt),u=s(o.reviewReceipt),c=String(o.headSha),f=String(o.baseSha),v=j(i,["rev-parse",`refs/heads/${n}`]).trim();if(re("git",["merge-base","--is-ancestor",c,v],{cwd:i,stdio:"ignore"}),j(i,["rev-parse",`${c}^`]).trim()!==f||j(i,["rev-list","--count",`${f}..${c}`]).trim()!=="1")return!1;const g=j(i,["show","--no-patch","--format=%H%n%P%n%B",c]),l=j(i,["diff-tree","--no-commit-id","--name-only","-r","-z",c]).split("\0").filter(Boolean);if(l.length===0||l.some(B=>!ge(B)))return!1;const w=He({checkpoint:o,storyId:t,epicId:r,executionBranch:n,baseSha:f,headSha:c,changedPaths:l,authorizedWriteSet:a,commitBodyDigest:b("sha256").update(g).digest("hex"),changedPathsDigest:b("sha256").update([...l].sort().join("\0")).digest("hex")});return!(w?.mode!=="legacy-migration"||!w.binding||d.sourceEvidenceDigest!==w.binding.qaDigest||d.receiptRef!==`story-qa:${w.binding.qaDigest}`||u.sourceEvidenceDigest!==w.binding.reviewDigest||u.receiptRef!==`story-review:${w.binding.reviewDigest}`||u.qaReceiptRef!==d.receiptRef)}catch{return!1}}function Ai(i){return b("sha256").update(["local-yolo-tdd-git-immutable-v1",i.storyId,i.baseSha,i.headSha,i.bundleDigest,i.graphRevision,b("sha256").update(i.commitBody).digest("hex"),b("sha256").update([...i.changedPaths].sort().join("\0")).digest("hex")].join("\0")).digest("hex")}function ki(i){return b("sha256").update(["local-yolo-tdd-p205-execution-v2",V,i.gitEvidenceDigest,i.headSha,i.graphRevision,i.manifestDigest,i.gateIds.join(","),i.resultDigest].join("\0")).digest("hex")}function Ci(i){const e=s(i.value);return Object.freeze({schemaVersion:1,kind:"story_checkpoint_physical_verification",producer:"client-p205-transient-v1",storyId:i.storyId,epicId:i.epicId,branch:i.executionBranch,baseSha:_(e?.baseSha)?String(e?.baseSha):"0".repeat(40),headSha:_(e?.headSha)?String(e?.headSha):"0".repeat(40),aggregateHeadSha:"0".repeat(40),commitBodyDigest:"0".repeat(64),changedPathsDigest:"0".repeat(64),claimVerification:"canonical",effectiveClaimRevision:"0".repeat(64),command:V,manifestDigest:"0".repeat(64),gateIds:Object.freeze([]),resultDigest:"0".repeat(64),graphRevision:"0".repeat(64),executionEvidenceDigest:"0".repeat(64),sourceEvidenceDigest:"0".repeat(64),verifiedAt:ce(i.verifiedAt),verdict:i.verdict,reasonCodes:Object.freeze([i.reasonCode]),publicSafe:!0})}function j(i,e){return re("git",[...e],{cwd:i,encoding:"utf8",maxBuffer:32*1024*1024})}function ce(i){return Number.isFinite(Date.parse(i))?new Date(Date.parse(i)).toISOString():new Date().toISOString()}async function _t(i,e){if(Ve[e.storyId]!==e.headSha)return;const t=[".neocortex/state.json",`.neocortex/stories/${e.storyId}/qa-gate-result.json`,`.neocortex/stories/${e.storyId}/validation-evidence.md`,`.neocortex/stories/${e.storyId}/review.md`,`docs/stories/${e.storyId}.story.md`];try{const r=(await N("git",["rev-parse",`refs/heads/${e.executionBranch}`],{cwd:i,encoding:"utf8",maxBuffer:1048576})).stdout.trim();if(await N("git",["merge-base","--is-ancestor",e.headSha,r],{cwd:i}),(await N("git",["rev-parse",`${e.headSha}^`],{cwd:i,encoding:"utf8",maxBuffer:1024*1024})).stdout.trim()!==e.baseSha)return;const a=String((await N("git",["diff","--binary","--full-index",`${e.baseSha}..${e.headSha}`],{cwd:i,encoding:"utf8",maxBuffer:32*1024*1024})).stdout);if(b("sha256").update(a).digest("hex")!==e.bundleDigest)return;const o=String((await N("git",["show","--no-patch","--format=%H%n%P%n%B",e.headSha],{cwd:i,encoding:"utf8",maxBuffer:4*1024*1024})).stdout);if(!String((await N("git",["show","--no-patch","--format=%s",e.headSha],{cwd:i,encoding:"utf8",maxBuffer:1024*1024})).stdout).trim().includes(e.storyId))return;const c=String((await N("git",["diff-tree","--no-commit-id","--name-only","-r","-z",e.headSha],{cwd:i,encoding:"utf8",maxBuffer:8*1024*1024})).stdout).split("\0").filter(Boolean);if(!t.every(S=>c.includes(S))||c.some(S=>!ge(S)))return;const f=await Promise.all(t.map(async S=>String((await N("git",["show",`${e.headSha}:${S}`],{cwd:i,encoding:"utf8",maxBuffer:16*1024*1024})).stdout))),v=JSON.parse(f[0]),g=s(v.stories),l=s(v.epics),w=s(g?.[e.storyId]),B=s(l?.[e.epicId]),P=Array.isArray(w?.steps_completed)?w.steps_completed:[],I=JSON.parse(f[1]);return w?.status!=="done"||!P.includes(li)||!P.includes(mi)||B?.branch_mode!=="epic"||B.execution_branch!==e.executionBranch||I.storyId!==e.storyId||I.status!=="qa-passed"||I.safeToContinueYoloop!==!0||!Array.isArray(I.blockingChecks)||I.blockingChecks.length!==0||!f[2].includes(e.storyId)||!/P205[\s\S]{0,80}(pass|aprov)/i.test(f[2])||!f[3].includes(e.storyId)||!/approved|aprovado/i.test(f[3])||!f[4].includes(e.storyId)?void 0:`legacy-direct-yolo:${b("sha256").update(["legacy-direct-yolo-recovery-v1",e.storyId,e.epicId,e.executionBranch,e.baseSha,e.headSha,e.bundleDigest,e.graphRevision,b("sha256").update(o).digest("hex"),b("sha256").update([...c].sort().join("\0")).digest("hex"),...f.map(S=>b("sha256").update(S).digest("hex"))].join("\0")).digest("hex")}`}catch{return}}async function Oi(i){const e=await _e(i),t=y(e,de),r=y(t,fe);if(q(t)&&(await z(t,"directory"),await U(t)!==t))throw new Error("git-lifecycle-runtime-directory-symlink");return q(r)?r:y(e,Se)}async function Fe(i){return We(await _e(i))}async function Pi(i,e){if(!/^[A-Za-z0-9][A-Za-z0-9._-]{0,127}$/.test(e)||e.includes(".."))throw new Error("git-lifecycle-private-child-invalid");const t=p(i);await W(t);const r=p(t,e);return te(t,r),q(r)||await Be(t,e),await W(r,t),await W(t),r}async function D(i,e){const t=p(e),r=p(i);te(t,r),await W(t),await W(r,t)}async function xt(i,e){await Y(i,e)}async function Z(i,e,t){const r=p(e),n=p(i);te(r,n);try{await D(n,r)}catch(o){if(C(o,"ENOENT"))return!1;throw o}const a=p(r,`${n.slice(r.length+1)}.remove.${process.pid}.${Date.now()}.${ye(4).toString("hex")}`);return te(r,a),await ie(r,A(n),A(a)),await D(a,r),t&&!await t(a)?(await oe(a,n,r).catch(()=>{}),!1):(await hi(r,A(a)),!0)}async function oe(i,e,t){await D(i,t);try{await be(e);return}catch(r){if(!C(r,"ENOENT"))throw r}await ie(t,A(i),A(e)),await D(e,t)}async function O(i){try{await D(i,K(i));const e=y(i,"owner.json");await Y(e,i);const t=await H(e);return await Y(e,i),b("sha256").update(t).digest("hex")}catch{return}}async function Et(i,e){const t=await Fe(i),r=await Pi(t,"leases"),n=y(r,"integration"),a=`${n}.recovery`;if(q(a)){await D(a,r);const c=await Me(a),f=await O(a);if(c===void 0||le(c))return{ok:!1,reasonCode:"git-lifecycle-integration-backpressure"};if(!f||!await Z(a,r,async v=>await O(v)===f))return{ok:!1,reasonCode:"git-lifecycle-integration-backpressure"}}const o=ce(e.createdAt??new Date().toISOString()),d=Object.freeze({schemaVersion:1,kind:e.kind,storyId:e.storyId,sessionId:e.sessionId,idempotencyKey:e.idempotencyKey,pid:process.pid,createdAt:o,expiresAt:ce(e.expiresAt),persistent:e.persistent,ownerNonce:e.ownerNonce??ye(16).toString("hex")});if(Date.parse(d.expiresAt)<=Date.parse(d.createdAt))return{ok:!1,reasonCode:"git-lifecycle-integration-lock-failed"};const u=async()=>{await W(r,t);try{return await Ne(r,A(n),`${JSON.stringify(d)}
4
+ `),await D(n,r),await Y(y(n,"owner.json"),n),!0}catch(c){throw C(c,"EEXIST")||await Z(n,r).catch(()=>{}),c}};try{return await u(),{ok:!0,owner:d,path:n}}catch(c){if(!C(c,"EEXIST"))return{ok:!1,reasonCode:"git-lifecycle-integration-lock-failed"}}try{const c=await se(n),f=c?void 0:await Me(n);if(c&&Ke(c,d))return{ok:!0,owner:c,path:n};if(c&&Date.parse(c.expiresAt)>Date.now()&&(c.persistent||le(c.pid))||f!==void 0&&le(f)||!c&&f===void 0&&await Ze(n))return{ok:!1,reasonCode:"git-lifecycle-integration-backpressure"};const g=await O(n);if(!g)return{ok:!1,reasonCode:"git-lifecycle-integration-lock-failed"};const l=`${n}.stale.${process.pid}.${Date.now()}`;await ie(r,A(n),A(l));try{if(await D(l,r),await O(l)!==g)return await oe(l,n,r).catch(()=>{}),{ok:!1,reasonCode:"git-lifecycle-integration-backpressure"};await u()}finally{await Z(l,r,async w=>await O(w)===g).catch(()=>{})}return{ok:!0,owner:d,path:n}}catch(c){return{ok:!1,reasonCode:C(c,"EEXIST")||C(c,"ENOENT")?"git-lifecycle-integration-backpressure":"git-lifecycle-integration-lock-failed"}}}async function It(i,e){const t=await se(i);return!!(t&&De(t,e)&&Date.parse(t.expiresAt)>Date.now())}async function Ni(i,e){try{const t=K(i);await D(i,t);const r=await se(i);if(!r||!De(r,e))return!1;const n=await O(i);if(!n)return!1;const a=`${i}.release.${process.pid}.${Date.now()}`;await ie(t,A(i),A(a)),await D(a,t);const o=await se(a);return!o||!De(o,e)||await O(a)!==n?(await oe(a,i,t).catch(()=>{}),!1):Z(a,t,async d=>await O(d)===n)}catch(t){if(C(t,"ENOENT"))return!1;throw t}}function Bi(i){return b("sha256").update(["git-lifecycle-physical-owner-v1",i.kind,i.storyId,i.sessionId,i.idempotencyKey,String(i.pid),i.createdAt,i.expiresAt,i.persistent?"persistent":"ephemeral",i.ownerNonce].join("\0")).digest("hex")}async function Rt(i,e){if(!J(e.storyId)||!k(e.idempotencyKey)||!h(e.ownerDigest))return"foreign";const t=await Fe(i),r=y(t,"leases"),n=y(r,"integration");if(!q(n))return"absent";try{await D(r,t),await D(n,r);const a=await se(n);return!a||a.kind!=="direct"||a.storyId!==e.storyId||a.sessionId!==e.idempotencyKey||a.idempotencyKey!==e.idempotencyKey||a.persistent!==!0||Bi(a)!==e.ownerDigest?"foreign":await Ni(n,a)?"released":"foreign"}catch{return"foreign"}}async function se(i){try{await D(i,K(i));const e=y(i,"owner.json");await Y(e,i);const t=JSON.parse(await H(e,"utf8"));return t.schemaVersion!==1||t.kind!=="direct"&&t.kind!=="continuous"||!J(t.storyId)||!k(t.sessionId)||!k(t.idempotencyKey)||!Number.isSafeInteger(t.pid)||Number(t.pid)<=0||!E(t.createdAt)||!E(t.expiresAt)||typeof t.persistent!="boolean"||typeof t.ownerNonce!="string"||!/^[a-f0-9]{32}$/.test(t.ownerNonce)?void 0:t}catch{return}}async function Me(i){try{await D(i,K(i));const e=y(i,"owner.json");await Y(e,i);const t=JSON.parse(await H(e,"utf8"));return Number.isSafeInteger(t.pid)&&Number(t.pid)>0?Number(t.pid):void 0}catch{return}}function Ke(i,e){return i.kind===e.kind&&i.storyId===e.storyId&&i.sessionId===e.sessionId&&i.idempotencyKey===e.idempotencyKey&&i.expiresAt===e.expiresAt&&i.persistent===e.persistent}function De(i,e){return Ke(i,e)&&i.schemaVersion===e.schemaVersion&&i.pid===e.pid&&i.createdAt===e.createdAt&&i.ownerNonce===e.ownerNonce}async function _e(i){const e=await U(i),r=(await N("git",["rev-parse","--git-common-dir"],{cwd:e,encoding:"utf8",maxBuffer:1024*1024})).stdout.trim(),n=ne(r)?p(r):p(e,r),a=await U(n);if(a!==n)throw new Error("git-lifecycle-common-dir-symlink");await Vi(a);const d=(await N("git",["rev-parse","--git-common-dir"],{cwd:e,encoding:"utf8",maxBuffer:1024*1024})).stdout.trim();if((ne(d)?p(d):p(e,d))!==n)throw new Error("git-lifecycle-common-dir-raced");return a}async function We(i){const e=y(i,de);if(q(e)||await Be(i,de),await z(e,"directory"),await U(e)!==e)throw new Error("git-lifecycle-runtime-directory-symlink");return e}async function Ye(i,e={}){try{return await z(i,"file"),xe(JSON.parse(await H(i,"utf8")))}catch(t){if(C(t,"ENOENT")){if(e.required)throw new Error("git-lifecycle-runtime-missing");return Ee()}throw t}}async function $i(i){try{await z(i,"file")}catch(e){if(C(e,"ENOENT"))return;throw e}}async function z(i,e){const t=await be(i);if(t.isSymbolicLink())throw new Error(`git-lifecycle-${e}-symlink`);if(e==="file"?!t.isFile():!t.isDirectory())throw new Error(`git-lifecycle-${e}-invalid`);if(ue()&&t.uid!==process.getuid())throw new Error(`git-lifecycle-${e}-ownership-mismatch`);if(ue()&&(t.mode&63)!==0)throw new Error(`git-lifecycle-${e}-permissions-unsafe`)}function te(i,e){const t=p(i),r=p(e),n=oi(t,r);if(!n||n.startsWith("..")||ne(n)||K(r)!==t)throw new Error("git-lifecycle-private-path-escape")}async function W(i,e){const t=p(i);if(e&&te(p(e),t),await z(t,"directory"),p(await U(t))!==t)throw new Error("git-lifecycle-directory-substituted");if(e){const r=p(e);if(await z(r,"directory"),p(await U(r))!==r)throw new Error("git-lifecycle-directory-parent-substituted")}}async function Y(i,e){const t=p(i);if(te(p(e),t),await W(p(e)),await z(t,"file"),p(await U(t))!==t)throw new Error("git-lifecycle-file-substituted")}function Je(i,e){const t=Oe(i);if(t.isSymbolicLink())throw new Error(`git-lifecycle-${e}-symlink`);if(e==="file"?!t.isFile():!t.isDirectory())throw new Error(`git-lifecycle-${e}-invalid`);if(ue()&&t.uid!==process.getuid())throw new Error(`git-lifecycle-${e}-ownership-mismatch`);if(ue()&&(t.mode&63)!==0)throw new Error(`git-lifecycle-${e}-permissions-unsafe`)}async function Vi(i){const e=await be(i);if(e.isSymbolicLink())throw new Error("git-lifecycle-common-dir-symlink");if(!e.isDirectory())throw new Error("git-lifecycle-common-dir-invalid")}function Li(i){const e=Oe(i);if(e.isSymbolicLink())throw new Error("git-lifecycle-common-dir-symlink");if(!e.isDirectory())throw new Error("git-lifecycle-common-dir-invalid")}function ue(i=process.platform){return i!=="win32"&&typeof process.getuid=="function"}function xe(i){if(!i||typeof i!="object"||Array.isArray(i))throw new Error("git-lifecycle-runtime-invalid");const e=i;x(e,["schemaVersion","revision","epics","stories"],"git-lifecycle-runtime-unknown-field");const t=s(e.epics),r=s(e.stories);if(e.schemaVersion!==1||!Number.isSafeInteger(e.revision)||Number(e.revision)<0||!t||!r||Object.values(t).some(n=>!s(n))||Object.values(r).some(n=>!s(n)))throw new Error("git-lifecycle-runtime-invalid");for(const[n,a]of Object.entries(t))if(!J(n)||!zi(a))throw new Error("git-lifecycle-runtime-epic-invalid");for(const[n,a]of Object.entries(r))if(!J(n)||!n.includes(".")||!Gi(a,n))throw new Error("git-lifecycle-runtime-story-invalid");return e}const qi=["branch_mode","execution_branch","origin_branch","branch_lease","origin_binding","graph_revision","aggregate_qa_receipt","terminal_git_receipt","physicalMergeStatus","pr_number","git_reconciliation_receipts","git_reconciliation_debt"],ji=["checkpoint","status","last_step","steps_completed"];function zi(i){return x(i,qi,"git-lifecycle-runtime-epic-unknown-field"),(i.branch_mode===void 0||i.branch_mode==="epic")&&(i.execution_branch===void 0||T(i.execution_branch))&&(i.origin_branch===void 0||T(i.origin_branch))&&(i.branch_lease===void 0||i.branch_lease===null||Hi(i.branch_lease))&&(i.origin_binding===void 0||i.origin_binding===null||Mi(i.origin_binding))&&(i.graph_revision===void 0||h(i.graph_revision))&&(i.aggregate_qa_receipt===void 0||i.aggregate_qa_receipt===null||Ki(i.aggregate_qa_receipt))&&(i.terminal_git_receipt===void 0||i.terminal_git_receipt===null||Wi(i.terminal_git_receipt))&&(i.physicalMergeStatus===void 0||["merged","pushed","denied_external_gate","blocked_local_or_repo","not_attempted"].includes(String(i.physicalMergeStatus)))&&(i.pr_number===void 0||i.pr_number===null||Number.isSafeInteger(i.pr_number)&&Number(i.pr_number)>0)&&(i.git_reconciliation_receipts===void 0||Zi(i.git_reconciliation_receipts))&&(i.git_reconciliation_debt===void 0||Xi(i.git_reconciliation_debt))}function Gi(i,e){return x(i,ji,"git-lifecycle-runtime-story-unknown-field"),(i.checkpoint===void 0||i.checkpoint===null||Qe(i.checkpoint,e))&&(i.status===void 0||k(i.status))&&(i.last_step===void 0||i.last_step===null||k(i.last_step))&&(i.steps_completed===void 0||L(i.steps_completed,128))}function Hi(i){const e=s(i);return e?(x(e,["schemaVersion","ownerStoryId","sessionId","idempotencyKey","acquiredAt","expiresAt","handoffGrant","handoffConsumption"],"git-lifecycle-runtime-lease-unknown-field"),e.schemaVersion===1&&J(e.ownerStoryId)&&k(e.sessionId)&&k(e.idempotencyKey)&&E(e.acquiredAt)&&E(e.expiresAt)&&Date.parse(String(e.expiresAt))>Date.parse(String(e.acquiredAt))&&(e.handoffGrant===void 0||Ti(e.handoffGrant,e))&&(e.handoffConsumption===void 0||Fi(e.handoffConsumption,e))):!1}function Ti(i,e){const t=s(i);return t?(x(t,["schemaVersion","kind","storyId","fromSessionId","tokenDigest","bundleDigest","claimRevision","expiresAt"],"git-lifecycle-runtime-handoff-grant-unknown-field"),t.schemaVersion===1&&t.kind==="direct-yolo-setup-handoff"&&t.storyId===e.ownerStoryId&&t.fromSessionId===e.sessionId&&h(t.tokenDigest)&&h(t.bundleDigest)&&h(t.claimRevision)&&E(t.expiresAt)&&Date.parse(String(t.expiresAt))<=Date.parse(String(e.expiresAt))):!1}function Fi(i,e){const t=s(i);return t?(x(t,["schemaVersion","kind","state","storyId","fromSessionId","tokenDigest","bundleDigest","claimRevision","consumedBySessionId","consumedAt"],"git-lifecycle-runtime-handoff-consumption-unknown-field"),t.schemaVersion===1&&t.kind==="direct-yolo-setup-handoff-consumption"&&t.state==="consumed"&&t.storyId===e.ownerStoryId&&k(t.fromSessionId)&&h(t.tokenDigest)&&h(t.bundleDigest)&&h(t.claimRevision)&&t.consumedBySessionId===e.sessionId&&E(t.consumedAt)):!1}function Mi(i){const e=s(i);return e?(x(e,["schemaVersion","originBranch","originHeadSha","executionBranch","capturedFromCurrentCheckout","capturedAt"],"git-lifecycle-runtime-origin-unknown-field"),e.schemaVersion===1&&T(e.originBranch)&&T(e.executionBranch)&&e.originBranch!==e.executionBranch&&_(e.originHeadSha)&&e.capturedFromCurrentCheckout===!0&&E(e.capturedAt)):!1}function Ki(i){const e=s(i);if(!e)return!1;x(e,["schemaVersion","evidenceVersion","producer","contract","command","verdict","executionHeadSha","graphRevision","manifestDigest","resultDigest","checkedAt","receiptRef","gateIds"],"git-lifecycle-runtime-aggregate-qa-unknown-field");const t=e.evidenceVersion==="p205-execution-v2"&&e.producer==="local-yolo-tdd"&&e.contract==="P205-CI-02"&&e.command===V&&h(e.manifestDigest)&&h(e.resultDigest),r=e.evidenceVersion===void 0&&e.producer===void 0&&e.contract===void 0&&e.command===void 0&&e.manifestDigest===void 0&&e.resultDigest===void 0;return e.schemaVersion===1&&(t||r)&&e.verdict==="passed"&&_(e.executionHeadSha)&&h(e.graphRevision)&&E(e.checkedAt)&&he(e.receiptRef)&&L(e.gateIds,128,!0)}function Wi(i){const e=s(i);return e?(x(e,["schemaVersion","epicId","executionBranch","originBranch","baseSha","executionHeadSha","mergeSha","pushedSha","strategy","prNumber","physicalStatus","localGateReceiptRefs","idempotencyKey","attemptStartedAt","completedAt","retryEligible","reasonCodes","publicSafe","candidateQa","providerGuard"],"git-lifecycle-runtime-terminal-receipt-unknown-field"),e.schemaVersion===1&&J(e.epicId)&&T(e.executionBranch)&&T(e.originBranch)&&_(e.baseSha)&&_(e.executionHeadSha)&&(e.mergeSha===void 0||_(e.mergeSha))&&(e.pushedSha===void 0||_(e.pushedSha))&&(e.strategy==="direct"||e.strategy==="single_pr")&&(e.candidateQa===void 0||Ji(e.candidateQa,e))&&(e.providerGuard===void 0||Yi(e.providerGuard,e))&&(e.prNumber===void 0||Number.isSafeInteger(e.prNumber)&&Number(e.prNumber)>0)&&["prepared","merged","pushed","denied_external_gate","blocked_local_or_repo"].includes(String(e.physicalStatus))&&L(e.localGateReceiptRefs,128,!0)&&k(e.idempotencyKey)&&E(e.attemptStartedAt)&&(e.completedAt===void 0||E(e.completedAt))&&typeof e.retryEligible=="boolean"&&L(e.reasonCodes,128)&&e.publicSafe===!0):!1}function Yi(i,e){const t=s(i);if(!t)return!1;x(t,["schemaVersion","provider","mode","source","prHeadSha","originHeadSha","checkedAt","publicSafe"],"git-lifecycle-runtime-provider-guard-unknown-field");const r=t.mode==="recovered_exact_tree"?t.source==="physical_recovery":t.mode==="strict_up_to_date_expected_head"&&["branch_protection","ruleset","branch_protection_and_ruleset"].includes(String(t.source));return t.schemaVersion===1&&t.provider==="github"&&r&&e.strategy==="single_pr"&&e.physicalStatus==="pushed"&&Number.isSafeInteger(e.prNumber)&&Number(e.prNumber)>0&&_(t.prHeadSha)&&t.prHeadSha===e.mergeSha&&_(t.originHeadSha)&&t.originHeadSha===e.baseSha&&E(t.checkedAt)&&t.publicSafe===!0}function Ji(i,e){const t=s(i);return t?(x(t,["schemaVersion","kind","contract","command","originHeadSha","executionHeadSha","mergeSha","treeSha","graphRevision","manifestDigest","resultDigest","gateIds","checkedAt","receiptRef"],"git-lifecycle-runtime-merge-candidate-unknown-field"),t.schemaVersion===1&&t.kind==="epic_merge_candidate_qa"&&t.contract==="P205-CI-02"&&t.command===V&&_(t.originHeadSha)&&t.originHeadSha===e.baseSha&&_(t.executionHeadSha)&&t.executionHeadSha===e.executionHeadSha&&_(t.mergeSha)&&t.mergeSha===e.mergeSha&&_(t.treeSha)&&h(t.graphRevision)&&h(t.manifestDigest)&&h(t.resultDigest)&&L(t.gateIds,128,!0)&&E(t.checkedAt)&&he(t.receiptRef)):!1}function Qe(i,e){const t=s(i);if(!t)return!1;x(t,["schemaVersion","storyId","epicId","branch","baseSha","headSha","commits","idempotencyKey","dispatchId","bundleId","bundleDigest","graphRevision","claimRevision","receiptRefs","qaVerdict","reviewVerdict","qaReceipt","reviewReceipt","recordedAt"],"git-lifecycle-runtime-checkpoint-unknown-field");const r=String(e).split(".")[0];return t.schemaVersion===1&&t.storyId===e&&t.epicId===r&&T(t.branch)&&_(t.baseSha)&&_(t.headSha)&&t.baseSha!==t.headSha&&it(t.commits)&&t.commits.length===1&&t.commits[0]===t.headSha&&k(t.idempotencyKey)&&(t.dispatchId===void 0||h(t.dispatchId))&&(t.bundleId===void 0||h(t.bundleId))&&h(t.bundleDigest)&&h(t.graphRevision)&&(t.claimRevision===void 0||h(t.claimRevision))&&L(t.receiptRefs,256,!0)&&(t.qaVerdict==="passed"||t.qaVerdict==="blocked")&&["approved","changes-requested","pending"].includes(String(t.reviewVerdict))&&Qi(t.qaReceipt,t)&&(t.reviewVerdict==="pending"?t.reviewReceipt===void 0:Ui(t.reviewReceipt,t))&&E(t.recordedAt)}function Qi(i,e){const t=s(i);return t?(x(t,["schemaVersion","kind","producer","evidenceVersion","storyId","epicId","baseSha","headSha","bundleDigest","graphRevision","contract","command","manifestDigest","gateIds","resultDigest","sourceEvidenceDigest","verdict","checkedAt","receiptRef"],"git-lifecycle-runtime-story-qa-unknown-field"),t.schemaVersion===1&&t.kind==="story_qa_evidence"&&t.producer==="local-yolo-tdd"&&(t.evidenceVersion===void 0||t.evidenceVersion==="git-immutable-v1"||t.evidenceVersion==="p205-execution-v2"&&t.contract==="P205-CI-02"&&t.command===V&&h(t.manifestDigest)&&L(t.gateIds,32,!0)&&h(t.resultDigest))&&Ue(t,e)&&h(t.sourceEvidenceDigest)&&t.verdict===e.qaVerdict&&(t.verdict==="passed"||t.verdict==="blocked")&&E(t.checkedAt)&&he(t.receiptRef)&&e.receiptRefs.includes(t.receiptRef)):!1}function Ui(i,e){const t=s(i),r=s(e.qaReceipt);return!t||!r?!1:(x(t,["schemaVersion","kind","producer","storyId","epicId","baseSha","headSha","bundleDigest","graphRevision","sourceEvidenceDigest","qaReceiptRef","verdict","reviewedAt","receiptRef"],"git-lifecycle-runtime-story-review-unknown-field"),t.schemaVersion===1&&t.kind==="story_review_evidence"&&t.producer==="root-commit-range-review"&&Ue(t,e)&&h(t.sourceEvidenceDigest)&&t.qaReceiptRef===r.receiptRef&&t.receiptRef!==r.receiptRef&&(t.verdict==="approved"||t.verdict==="changes-requested")&&(t.verdict==="approved"?e.reviewVerdict==="approved":e.reviewVerdict==="changes-requested")&&E(t.reviewedAt)&&Date.parse(String(t.reviewedAt))>=Date.parse(String(r.checkedAt))&&he(t.receiptRef)&&e.receiptRefs.includes(t.receiptRef))}function Ue(i,e){return["storyId","epicId","baseSha","headSha","bundleDigest","graphRevision"].every(t=>i[t]===e[t])}function Zi(i){return!Array.isArray(i)||i.length>1024?!1:i.every(e=>{const t=s(e);return t?(x(t,["schemaVersion","resourceId","action","outcome","idempotencyKey","reasonCodes","recordedAt","publicSafe"],"git-lifecycle-runtime-reconciliation-receipt-unknown-field"),t.schemaVersion===1&&k(t.resourceId)&&["no_op","delete_local_branch","delete_remote_branch","close_pull_request"].includes(String(t.action))&&["applied","already_absent","dry_run","failed"].includes(String(t.outcome))&&k(t.idempotencyKey)&&L(t.reasonCodes,128)&&E(t.recordedAt)&&t.publicSafe===!0):!1})}function Xi(i){return!Array.isArray(i)||i.length>1024?!1:i.every(e=>{const t=s(e);return t?(x(t,["schemaVersion","resourceId","action","managed","reasonCodes","evidence","publicSafe"],"git-lifecycle-runtime-reconciliation-debt-unknown-field"),t.schemaVersion===1&&k(t.resourceId)&&t.action==="preserve"&&typeof t.managed=="boolean"&&L(t.reasonCodes,128)&&L(t.evidence,16)&&t.publicSafe===!0):!1})}function x(i,e,t){const r=new Set(e);if(Object.keys(i).some(n=>!r.has(n)))throw new Error(t)}function J(i){return typeof i=="string"&&/^P[1-9][0-9]*(?:\.[0-9]+)*$/.test(i)}function et(i){const e=s(i);return e?Object.keys(e).length===10&&e.schemaVersion===1&&e.kind==="git_lifecycle_graph_authority"&&e.producer==="server-continuous-yoloop-v1"&&(e.source==="yolo"||e.source==="yoloop")&&J(e.epicId)&&J(e.storyId)&&String(e.storyId).startsWith(`${String(e.epicId)}.`)&&T(e.executionBranch)&&T(e.originBranch)&&e.originBranch!==e.executionBranch&&typeof e.graphRevision=="string"&&/^[a-f0-9]{64}$/.test(e.graphRevision)&&e.publicSafe===!0:!1}function T(i){return typeof i=="string"&&/^[A-Za-z0-9][A-Za-z0-9._/-]{0,239}$/.test(i)&&!i.includes("..")&&!i.includes("//")&&!i.includes("@{")&&!i.endsWith("/")&&!i.endsWith(".")&&!i.split("/").some(e=>!e||e.startsWith(".")||e.endsWith(".lock"))}function ge(i){return i.length>0&&i.length<=1024&&!ne(i)&&!i.includes("\0")&&!i.replaceAll("\\","/").split("/").includes("..")}function k(i){return typeof i=="string"&&i.length>0&&i.length<=240&&/^[A-Za-z0-9._:/#\-[\]]+$/.test(i)&&!i.includes("..")}function he(i){return k(i)}function _(i){return typeof i=="string"&&/^[a-f0-9]{40,64}$/i.test(i)}function h(i){return typeof i=="string"&&/^[a-f0-9]{64}$/i.test(i)}function E(i){return typeof i=="string"&&i.length<=64&&Number.isFinite(Date.parse(i))}function L(i,e,t=!1){return Array.isArray(i)&&i.length<=e&&(!t||i.length>0)&&i.every(k)}function it(i){return Array.isArray(i)&&i.length>0&&i.length<=256&&i.every(_)}function Ee(){return{schemaVersion:1,revision:0,epics:{},stories:{}}}async function tt(i){const e=K(i),t={pid:process.pid,nonce:ye(16).toString("hex")},r=async()=>{await W(e),await Ne(e,A(i),JSON.stringify(t));try{await D(i,e),await Y(y(i,"owner.json"),i)}catch(n){throw await Z(i,e).catch(()=>{}),n}};try{await r()}catch(n){if(!C(n,"EEXIST"))throw n;await z(i,"directory");const a=await Ie(i);if(a!==void 0&&le(a.pid))throw new Error("git-lifecycle-runtime-lock-active");if(a===void 0&&await Ze(i))throw new Error("git-lifecycle-runtime-lock-active");const o=await O(i);if(!o)throw new Error("git-lifecycle-runtime-lock-owner-invalid");const d=`${i}.stale.${process.pid}.${Date.now()}`;await ie(e,A(i),A(d));try{if(await D(d,e),await O(d)!==o)throw await oe(d,i,e).catch(()=>{}),new Error("git-lifecycle-runtime-lock-owner-replaced");await r()}finally{await Z(d,e,async u=>await O(u)===o).catch(()=>{})}}return t}async function rt(i,e){const t=K(i);try{await D(i,t);const r=await Ie(i);if(!r||!Xe(r,e))return!1;const n=await O(i);if(!n)return!1;const a=`${i}.release.${process.pid}.${Date.now()}`;await ie(t,A(i),A(a)),await D(a,t);const o=await Ie(a);return!o||!Xe(o,e)||await O(a)!==n?(await oe(a,i,t).catch(()=>{}),!1):Z(a,t,async d=>await O(d)===n)}catch(r){if(C(r,"ENOENT"))return!1;throw r}}async function Ze(i){try{return Date.now()-(await ci(i)).mtimeMs<3e4}catch{return!0}}async function Ie(i){try{await D(i,K(i));const e=y(i,"owner.json");await Y(e,i);const t=JSON.parse(await H(e,"utf8"));return Number.isSafeInteger(t.pid)&&Number(t.pid)>0&&(t.nonce===void 0||typeof t.nonce=="string"&&/^[a-f0-9]{32}$/.test(t.nonce))?{pid:Number(t.pid),...typeof t.nonce=="string"?{nonce:t.nonce}:{}}:void 0}catch{return}}function Xe(i,e){return i.pid===e.pid&&i.nonce!==void 0&&i.nonce===e.nonce}function le(i){try{return process.kill(i,0),!0}catch(e){return C(e,"EPERM")}}function s(i){return i&&typeof i=="object"&&!Array.isArray(i)?i:void 0}function C(i,e){return i instanceof Error&&"code"in i&&i.code===e}export{de as GIT_LIFECYCLE_RUNTIME_DIRECTORY,fe as GIT_LIFECYCLE_RUNTIME_FILE,Ve as LEGACY_DIRECT_YOLO_RECOVERY_COMMITS,pi as LEGACY_P174_CHECKPOINT_MIGRATIONS,V as P205_COMPLETE_COMMAND,Et as acquireGitLifecyclePhysicalIntegrationLock,Si as applyGitLifecycleRuntimeOverlay,D as assertGitLifecyclePrivateDirectory,xt as assertGitLifecyclePrivateFile,Bi as computeGitLifecyclePhysicalIntegrationLockOwnerDigest,Ai as computeImmutableStoryQaEvidenceDigest,_t as computeLegacyDirectYoloRecoveryReceiptRef,ki as computeP205StoryQaEvidenceDigest,Pi as ensureGitLifecyclePrivateChildDirectory,pt as ensureGitLifecycleRuntimeInitialized,vi as ensureRuntimeEpic,bt as ensureRuntimeStory,mt as executeP205TransientAuthority,Fe as gitLifecycleRuntimeDirectory,Ii as gitLifecycleStoryWriteSet,Ge as isAcceptedGitLifecycleStoryCheckpoint,je as mutateGitLifecycleRuntime,vt as p205TransientAuthorityMatchesAggregate,yt as persistGitLifecycleGraphAuthority,ue as posixSecurityAvailable,St as projectP205TransientExecutionEvidence,ve as readGitLifecycleRuntime,bi as readGitLifecycleRuntimeSync,Ni as releaseGitLifecyclePhysicalIntegrationLock,Rt as releaseGitLifecyclePhysicalIntegrationLockForCheckpoint,Z as removeGitLifecyclePrivateDirectory,wt as verifyAcceptedGitLifecycleStoryCheckpoint,Di as verifyAcceptedGitLifecycleStoryCheckpointSync,It as verifyGitLifecyclePhysicalIntegrationLock,Dt as verifyLegacyCheckpointMigrationCandidateSync};
@@ -1,4 +1,4 @@
1
- # 🧠 Neocortex v4.60.33 | OrNexus Team
1
+ # 🧠 Neocortex v4.60.34 | OrNexus Team
2
2
 
3
3
  This project uses Neocortex, a Development Orchestrator.
4
4
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: neocortex
3
- description: "🧠 Neocortex v4.60.33 | OrNexus Team"
3
+ description: "🧠 Neocortex v4.60.34 | OrNexus Team"
4
4
  ---
5
5
 
6
6
  <!--
@@ -4,7 +4,7 @@ agent:
4
4
  name: 'Neocortex Root Agent'
5
5
  title: 'Development Orchestrator (Root)'
6
6
  icon: '>'
7
- version: '4.60.33'
7
+ version: '4.60.34'
8
8
  architecture: 'thin-client'
9
9
  module: stand-alone
10
10
  hasSidecar: false
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: neocortex-root
3
- description: "🧠 Neocortex Root Agent v4.60.33 | OrNexus Team"
3
+ description: "🧠 Neocortex Root Agent v4.60.34 | OrNexus Team"
4
4
  model: opus
5
5
  color: blue
6
6
  tools:
@@ -108,7 +108,7 @@ SEMPRE que este agente for invocado, imprima o banner abaixo como PRIMEIRO outpu
108
108
  ┌────────────────────────────────────────────────────────────┐
109
109
  │ │
110
110
  │ ####### N E O C O R T E X │
111
- │ ### ######## v4.60.33 │
111
+ │ ### ######## v4.60.34 │
112
112
  │ ######### ##### │
113
113
  │ ## ############## Development Orchestrator │
114
114
  │ ## ### ###### ## OrNexus Team │
@@ -4,7 +4,7 @@ agent:
4
4
  name: 'Neocortex'
5
5
  title: 'Development Orchestrator'
6
6
  icon: '>'
7
- version: '4.60.33'
7
+ version: '4.60.34'
8
8
  architecture: 'thin-client'
9
9
  module: stand-alone
10
10
  hasSidecar: false
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: neocortex
3
- description: "🧠 Neocortex v4.60.33 | OrNexus Team"
3
+ description: "🧠 Neocortex v4.60.34 | OrNexus Team"
4
4
  model: opus
5
5
  color: blue
6
6
  permissionMode: bypassPermissions
@@ -104,7 +104,7 @@ SEMPRE que este agente for invocado, imprima o banner abaixo como PRIMEIRO outpu
104
104
  ┌────────────────────────────────────────────────────────────┐
105
105
  │ │
106
106
  │ ####### N E O C O R T E X │
107
- │ ### ######## v4.60.33 │
107
+ │ ### ######## v4.60.34 │
108
108
  │ ######### ##### │
109
109
  │ ## ############## Development Orchestrator │
110
110
  │ ## ### ###### ## OrNexus Team │
@@ -28,7 +28,7 @@ Codex built-in commands or actions.
28
28
 
29
29
  <!-- END: Plugin Conflict Prevention -->
30
30
 
31
- # Neocortex v4.60.33 | OrNexus Team
31
+ # Neocortex v4.60.34 | OrNexus Team
32
32
 
33
33
  You are a Development Orchestrator. All orchestration logic is delivered by the remote Neocortex server.
34
34
 
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: neocortex
3
- description: "🧠 Neocortex v4.60.33 | OrNexus Team"
3
+ description: "🧠 Neocortex v4.60.34 | OrNexus Team"
4
4
  model: inherit
5
5
  readonly: false
6
6
  is_background: false
@@ -64,7 +64,7 @@ SEMPRE que este agente for invocado, imprima o banner abaixo como PRIMEIRO outpu
64
64
  ┌────────────────────────────────────────────────────────────┐
65
65
  │ │
66
66
  │ ####### N E O C O R T E X │
67
- │ ### ######## v4.60.33 │
67
+ │ ### ######## v4.60.34 │
68
68
  │ ######### ##### │
69
69
  │ ## ############## Development Orchestrator │
70
70
  │ ## ### ###### ## OrNexus Team │
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: neocortex-root
3
- description: "🧠 Neocortex v4.60.33 | OrNexus Team"
3
+ description: "🧠 Neocortex v4.60.34 | OrNexus Team"
4
4
  kind: local
5
5
  tools:
6
6
  # File operations (Gemini CLI built-ins)
@@ -62,7 +62,7 @@ SEMPRE que este agente for invocado, imprima o banner abaixo como PRIMEIRO outpu
62
62
  ┌────────────────────────────────────────────────────────────┐
63
63
  │ │
64
64
  │ ####### N E O C O R T E X │
65
- │ ### ######## v4.60.33 │
65
+ │ ### ######## v4.60.34 │
66
66
  │ ######### ##### │
67
67
  │ ## ############## Development Orchestrator │
68
68
  │ ## ### ###### ## OrNexus Team │
@@ -58,7 +58,7 @@ explicit server opt-in rather than a local assumption.
58
58
  ┌────────────────────────────────────────────────────────────┐
59
59
  │ │
60
60
  │ ####### N E O C O R T E X │
61
- │ ### ######## v4.60.33 │
61
+ │ ### ######## v4.60.34 │
62
62
  │ ######### ##### │
63
63
  │ ## ############## Development Orchestrator │
64
64
  │ ## ### ###### ## OrNexus Team │
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: "neocortex"
3
- description: "Neocortex v4.60.33 | OrNexus Team"
3
+ description: "Neocortex v4.60.34 | OrNexus Team"
4
4
  tools:
5
5
  # Read / Edit (built-in tool sets)
6
6
  - read
@@ -68,7 +68,7 @@ SEMPRE que este agente for invocado, imprima o banner abaixo como PRIMEIRO outpu
68
68
  ┌────────────────────────────────────────────────────────────┐
69
69
  │ │
70
70
  │ ####### N E O C O R T E X │
71
- │ ### ######## v4.60.33 │
71
+ │ ### ######## v4.60.34 │
72
72
  │ ######### ##### │
73
73
  │ ## ############## Development Orchestrator │
74
74
  │ ## ### ###### ## OrNexus Team │