@attalabs/vinaya 0.9.0 → 0.16.0

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.
Files changed (117) hide show
  1. package/README.md +33 -7
  2. package/aeg-root/contracts/planner-brief.md +1 -1
  3. package/aeg-root/enforcement.md +7 -7
  4. package/aeg-root/glossary.md +4 -0
  5. package/aeg-root/roles/archivist.md +2 -2
  6. package/aeg-root/roles/developer.md +29 -5
  7. package/aeg-root/roles/planner.md +3 -3
  8. package/aeg-root/roles/reviewer.md +17 -4
  9. package/aeg-root/roles/security.md +16 -5
  10. package/aeg-root/roles/tranche-archivist.md +1 -1
  11. package/aeg-root/skills/aeg/SKILL.md +1 -1
  12. package/aeg-root/state-machine.md +8 -8
  13. package/aeg-root/templates/pr-report-template.md +8 -4
  14. package/aeg-root/tranche-model.md +34 -12
  15. package/dist/checks/bin/check-branch-topology.js +232 -120
  16. package/dist/checks/bin/check-brief-shape.js +232 -120
  17. package/dist/checks/bin/check-closes-n.js +232 -120
  18. package/dist/checks/bin/check-coherence.js +234 -121
  19. package/dist/checks/bin/check-dead-branch-push.js +232 -120
  20. package/dist/checks/bin/check-dispatch-readiness.js +234 -121
  21. package/dist/checks/bin/check-doc-coverage-push.js +261 -130
  22. package/dist/checks/bin/check-doc-coverage.js +263 -132
  23. package/dist/checks/bin/check-evidence-fresh.js +3196 -0
  24. package/dist/checks/bin/check-first-push-dispatch.js +234 -121
  25. package/dist/checks/bin/check-issue-assignment.js +232 -120
  26. package/dist/checks/bin/check-no-disk-state.js +232 -120
  27. package/dist/checks/bin/check-reader-resolvable-prose.js +232 -120
  28. package/dist/checks/bin/check-registry-gates.js +232 -120
  29. package/dist/checks/bin/check-review-gate.js +237 -123
  30. package/dist/checks/bin/check-single-plan-pr.js +232 -120
  31. package/dist/checks/bin/check-test-plan.js +232 -120
  32. package/dist/index.js +1232 -262
  33. package/package.json +1 -1
  34. package/studio-standalone/apps/vinaya-studio/web/.next/BUILD_ID +1 -1
  35. package/studio-standalone/apps/vinaya-studio/web/.next/build-manifest.json +3 -3
  36. package/studio-standalone/apps/vinaya-studio/web/.next/prerender-manifest.json +3 -3
  37. package/studio-standalone/apps/vinaya-studio/web/.next/required-server-files.json +3 -1
  38. package/studio-standalone/apps/vinaya-studio/web/.next/server/app/_global-error.html +1 -1
  39. package/studio-standalone/apps/vinaya-studio/web/.next/server/app/_global-error.rsc +1 -1
  40. package/studio-standalone/apps/vinaya-studio/web/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  41. package/studio-standalone/apps/vinaya-studio/web/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  42. package/studio-standalone/apps/vinaya-studio/web/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  43. package/studio-standalone/apps/vinaya-studio/web/.next/server/app/_not-found/page/server-reference-manifest.json +2 -2
  44. package/studio-standalone/apps/vinaya-studio/web/.next/server/app/_not-found/page.js.nft.json +1 -1
  45. package/studio-standalone/apps/vinaya-studio/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  46. package/studio-standalone/apps/vinaya-studio/web/.next/server/app/api/coherence/route.js.nft.json +1 -1
  47. package/studio-standalone/apps/vinaya-studio/web/.next/server/app/page/server-reference-manifest.json +2 -2
  48. package/studio-standalone/apps/vinaya-studio/web/.next/server/app/page.js.nft.json +1 -1
  49. package/studio-standalone/apps/vinaya-studio/web/.next/server/app/page_client-reference-manifest.js +1 -1
  50. package/studio-standalone/apps/vinaya-studio/web/.next/server/app/studio/backlog/page/server-reference-manifest.json +2 -2
  51. package/studio-standalone/apps/vinaya-studio/web/.next/server/app/studio/backlog/page.js.nft.json +1 -1
  52. package/studio-standalone/apps/vinaya-studio/web/.next/server/app/studio/backlog/page_client-reference-manifest.js +1 -1
  53. package/studio-standalone/apps/vinaya-studio/web/.next/server/app/studio/page/server-reference-manifest.json +2 -2
  54. package/studio-standalone/apps/vinaya-studio/web/.next/server/app/studio/page.js +3 -3
  55. package/studio-standalone/apps/vinaya-studio/web/.next/server/app/studio/page.js.nft.json +1 -1
  56. package/studio-standalone/apps/vinaya-studio/web/.next/server/app/studio/page_client-reference-manifest.js +1 -1
  57. package/studio-standalone/apps/vinaya-studio/web/.next/server/app/studio/projects/[name]/page/server-reference-manifest.json +2 -2
  58. package/studio-standalone/apps/vinaya-studio/web/.next/server/app/studio/projects/[name]/page.js.nft.json +1 -1
  59. package/studio-standalone/apps/vinaya-studio/web/.next/server/app/studio/projects/[name]/page_client-reference-manifest.js +1 -1
  60. package/studio-standalone/apps/vinaya-studio/web/.next/server/app/studio/projects/[name]/tranches/[slug]/page/server-reference-manifest.json +2 -2
  61. package/studio-standalone/apps/vinaya-studio/web/.next/server/app/studio/projects/[name]/tranches/[slug]/page.js +2 -3
  62. package/studio-standalone/apps/vinaya-studio/web/.next/server/app/studio/projects/[name]/tranches/[slug]/page.js.nft.json +1 -1
  63. package/studio-standalone/apps/vinaya-studio/web/.next/server/app/studio/projects/[name]/tranches/[slug]/page_client-reference-manifest.js +1 -1
  64. package/studio-standalone/apps/vinaya-studio/web/.next/server/app/studio/projects/[name]/tranches/[slug]/tasks/[taskId]/page/server-reference-manifest.json +2 -2
  65. package/studio-standalone/apps/vinaya-studio/web/.next/server/app/studio/projects/[name]/tranches/[slug]/tasks/[taskId]/page.js.nft.json +1 -1
  66. package/studio-standalone/apps/vinaya-studio/web/.next/server/app/studio/projects/[name]/tranches/[slug]/tasks/[taskId]/page_client-reference-manifest.js +1 -1
  67. package/studio-standalone/apps/vinaya-studio/web/.next/server/app/studio/projects/page/server-reference-manifest.json +2 -2
  68. package/studio-standalone/apps/vinaya-studio/web/.next/server/app/studio/projects/page.js.nft.json +1 -1
  69. package/studio-standalone/apps/vinaya-studio/web/.next/server/app/studio/projects/page_client-reference-manifest.js +1 -1
  70. package/studio-standalone/apps/vinaya-studio/web/.next/server/app/studio/tranches/page/server-reference-manifest.json +2 -2
  71. package/studio-standalone/apps/vinaya-studio/web/.next/server/app/studio/tranches/page.js.nft.json +1 -1
  72. package/studio-standalone/apps/vinaya-studio/web/.next/server/app/studio/tranches/page_client-reference-manifest.js +1 -1
  73. package/studio-standalone/apps/vinaya-studio/web/.next/server/chunks/[root-of-the-server]__0e95dv5._.js +1 -1
  74. package/studio-standalone/apps/vinaya-studio/web/.next/server/chunks/ssr/1q96_modules_@clerk_nextjs_dist_esm_app-router_client_keyless-creator-reader_0lom2js.js +1 -1
  75. package/studio-standalone/apps/vinaya-studio/web/.next/server/chunks/ssr/[root-of-the-server]__029-1ch._.js +1 -1
  76. package/studio-standalone/apps/vinaya-studio/web/.next/server/chunks/ssr/[root-of-the-server]__05t6482._.js +1 -1
  77. package/studio-standalone/apps/vinaya-studio/web/.next/server/chunks/ssr/[root-of-the-server]__0gw1_g2._.js +1 -1
  78. package/studio-standalone/apps/vinaya-studio/web/.next/server/chunks/ssr/[root-of-the-server]__0mdkphe._.js +3 -0
  79. package/studio-standalone/apps/vinaya-studio/web/.next/server/chunks/ssr/[root-of-the-server]__0plfbyn._.js +45 -0
  80. package/studio-standalone/apps/vinaya-studio/web/.next/server/chunks/ssr/[root-of-the-server]__0q56ohl._.js +1 -1
  81. package/studio-standalone/apps/vinaya-studio/web/.next/server/chunks/ssr/[root-of-the-server]__0rr_lq7._.js +51 -0
  82. package/studio-standalone/apps/vinaya-studio/web/.next/server/chunks/ssr/[root-of-the-server]__0zfjc2o._.js +1 -1
  83. package/studio-standalone/apps/vinaya-studio/web/.next/server/chunks/ssr/[root-of-the-server]__19jyp3m._.js +1 -1
  84. package/studio-standalone/apps/vinaya-studio/web/.next/server/chunks/ssr/[root-of-the-server]__1_ojzp1._.js +1 -1
  85. package/studio-standalone/apps/vinaya-studio/web/.next/server/chunks/ssr/[root-of-the-server]__1d_8nm4._.js +1 -1
  86. package/studio-standalone/apps/vinaya-studio/web/.next/server/chunks/ssr/{[root-of-the-server]__1p19382._.js → [root-of-the-server]__1qpl4m_._.js} +1 -1
  87. package/studio-standalone/apps/vinaya-studio/web/.next/server/chunks/ssr/[root-of-the-server]__1zkwtx8._.js +1 -1
  88. package/studio-standalone/apps/vinaya-studio/web/.next/server/chunks/ssr/[root-of-the-server]__210ehg9._.js +1 -1
  89. package/studio-standalone/apps/vinaya-studio/web/.next/server/chunks/ssr/_00yjcv1._.js +1 -1
  90. package/studio-standalone/apps/vinaya-studio/web/.next/server/chunks/ssr/_0o54suy._.js +1 -1
  91. package/studio-standalone/apps/vinaya-studio/web/.next/server/chunks/ssr/_0rix02i._.js +1 -1
  92. package/studio-standalone/apps/vinaya-studio/web/.next/server/chunks/ssr/_18-d2be._.js +1 -1
  93. package/studio-standalone/apps/vinaya-studio/web/.next/server/chunks/ssr/_1fqw88f._.js +5 -4
  94. package/studio-standalone/apps/vinaya-studio/web/.next/server/chunks/ssr/_1gw6vc9._.js +1 -1
  95. package/studio-standalone/apps/vinaya-studio/web/.next/server/chunks/ssr/apps_vinaya-studio_web_src_app_studio_projects_[name]_tranches_[slug]_20yap_f._.js +1 -1
  96. package/studio-standalone/apps/vinaya-studio/web/.next/server/chunks/ssr/node_modules_1vo08dj._.js +2 -2
  97. package/studio-standalone/apps/vinaya-studio/web/.next/server/middleware-build-manifest.js +3 -3
  98. package/studio-standalone/apps/vinaya-studio/web/.next/server/pages/500.html +1 -1
  99. package/studio-standalone/apps/vinaya-studio/web/.next/server/server-reference-manifest.js +1 -1
  100. package/studio-standalone/apps/vinaya-studio/web/.next/server/server-reference-manifest.json +3 -3
  101. package/studio-standalone/apps/vinaya-studio/web/.next/static/chunks/{3antrj5z0uf_c.js → 0ek6qlqhokys0.js} +1 -1
  102. package/studio-standalone/apps/vinaya-studio/web/.next/static/chunks/{1khy4oilrab6g.js → 0fm4p9os2lsom.js} +1 -1
  103. package/studio-standalone/apps/vinaya-studio/web/.next/static/chunks/{3zyedaek9nvr_.js → 0ywkq74falx-x.js} +1 -1
  104. package/studio-standalone/apps/vinaya-studio/web/.next/static/chunks/1s9ixp5nhnevp.js +1 -0
  105. package/studio-standalone/apps/vinaya-studio/web/.next/static/chunks/27sqffqm2wbxx.css +1 -0
  106. package/studio-standalone/apps/vinaya-studio/web/package.json +2 -2
  107. package/studio-standalone/apps/vinaya-studio/web/server.js +1 -1
  108. package/templates/custom-check.template.ts +5 -0
  109. package/studio-standalone/apps/vinaya-studio/web/.next/server/chunks/ssr/[root-of-the-server]__1s7kj3s._.js +0 -3
  110. package/studio-standalone/apps/vinaya-studio/web/.next/server/chunks/ssr/[root-of-the-server]__1tswrm4._.js +0 -9
  111. package/studio-standalone/apps/vinaya-studio/web/.next/server/chunks/ssr/_01jl99k._.js +0 -45
  112. package/studio-standalone/apps/vinaya-studio/web/.next/server/chunks/ssr/apps_vinaya-studio_web_src_20c6-3m._.js +0 -45
  113. package/studio-standalone/apps/vinaya-studio/web/.next/static/chunks/0qu0xgvifbacu.css +0 -1
  114. package/studio-standalone/apps/vinaya-studio/web/.next/static/chunks/2e68sbtdhi5dg.js +0 -1
  115. /package/studio-standalone/apps/vinaya-studio/web/.next/static/{pY8RKWuVAUZOjj2-bAYCY → R7xvB2iuNFp_jxENpL7xv}/_buildManifest.js +0 -0
  116. /package/studio-standalone/apps/vinaya-studio/web/.next/static/{pY8RKWuVAUZOjj2-bAYCY → R7xvB2iuNFp_jxENpL7xv}/_clientMiddlewareManifest.js +0 -0
  117. /package/studio-standalone/apps/vinaya-studio/web/.next/static/{pY8RKWuVAUZOjj2-bAYCY → R7xvB2iuNFp_jxENpL7xv}/_ssgManifest.js +0 -0
@@ -1,9 +0,0 @@
1
- module.exports=[500874,(a,b,c)=>{b.exports=a.x("buffer",()=>require("buffer"))},522734,(a,b,c)=>{b.exports=a.x("fs",()=>require("fs"))},193695,(a,b,c)=>{b.exports=a.x("next/dist/shared/lib/no-fallback-error.external.js",()=>require("next/dist/shared/lib/no-fallback-error.external.js"))},874533,(a,b,c)=>{b.exports=a.x("node:child_process",()=>require("node:child_process"))},812057,(a,b,c)=>{b.exports=a.x("node:util",()=>require("node:util"))},420705,a=>{"use strict";a.s(["TasksPanel",()=>b]);let b=(0,a.i(211857).registerClientReference)(function(){throw Error("Attempted to call TasksPanel() from the server but TasksPanel is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"[project]/apps/vinaya-studio/web/src/app/studio/_components/TasksPanel.tsx","TasksPanel")},975165,a=>{"use strict";var b=a.i(420705);a.n(b)},468816,a=>{"use strict";var b=a.i(907997),c=a.i(667382);a.i(730643);var d=a.i(898564),e=a.i(873863);a.i(819365);var f=a.i(538586);function g(a,b,c){let d=a.find(a=>a&&c.has(a));return d?`/studio/projects/${d}/tranches/${b}`:null}var h=a.i(78973),i=a.i(885623);a.i(579421);var j=a.i(79614);let k=(0,a.i(892277).default)("arrow-up-right",[["path",{d:"M7 7h10v10",key:"1tivn9"}],["path",{d:"M7 17 17 7",key:"1vkiza"}]]);function l({title:a,count:d,href:e,viewAllLabel:f,children:g}){return(0,b.jsxs)(j.Card,{className:"flex flex-col gap-2",children:[(0,b.jsx)(j.CardHeader,{className:"pb-0",children:(0,b.jsxs)(j.CardTitle,{className:"flex items-baseline justify-between gap-2 font-serif text-xl text-card-foreground",children:[(0,b.jsx)("span",{children:a}),null!==d&&(0,b.jsx)("span",{className:"font-mono text-sm text-muted-foreground",children:d})]})}),(0,b.jsxs)(j.CardContent,{className:"flex flex-1 flex-col gap-3",children:[(0,b.jsx)("div",{className:"flex-1 space-y-2",children:g}),e&&f?(0,b.jsxs)(c.NextLink,{variant:"link",href:e,className:"mt-auto inline-flex w-fit items-center gap-1 pt-1 text-card-foreground text-sm hover:text-primary",children:[f,(0,b.jsx)(k,{className:"h-3.5 w-3.5"})]}):null]})]})}var m=a.i(975165),n=a.i(731929),o=a.i(64400),p=a.i(197474);async function q(){let[a,b]=await Promise.all([(0,f.loadActiveTranches)(),(0,f.readRegistry)()]),c=new Set(b.map(a=>a.name));return(await Promise.all(a.map(async({fileSlug:a,tranche:b})=>{let d=[],e=await (0,o.loadTrancheSnapshot)(b,a),f=new Map(e.derived.tasks.map(a=>[a.task.id,a.status])),h=await (0,n.loadDispatchReadiness)(b,a,e);for(let i of b.tasks){let b=f.get(String(i.id)),j=e.repo&&null!=i.issue?`https://github.com/${e.repo.owner}/${e.repo.repo}/issues/${i.issue}`:null,k=g(i.projects,a,c),l={trancheSlug:a,trancheHref:k,taskId:String(i.id),title:i.title,issue:i.issue,issueUrl:j},m=null;if("todo"===b){let a=h.get(String(i.id));if(a){let b=(0,p.todoDispatchVisual)(a);m={category:a.ready?"ready":"blocked",badge:{label:b.label,badgeClass:b.badgeClass,title:b.title}}}}else if("blocked"===b){let a=(0,p.statusVisual)("blocked");m={category:"blocked",badge:{label:a.label,badgeClass:a.badgeClass,title:a.description}}}else if("in-flight"===b||"in-review"===b||"changes-requested"===b){let a=(0,p.statusVisual)(b);m={category:b,badge:{label:a.label,badgeClass:a.badgeClass}}}m&&d.push({...l,...m})}return d}))).flat()}async function r(a){let b=await (0,e.resolveRepo)();return b&&a?(0,h.fetchOpenIssuesWithoutTrancheLabel)(b.owner,b.repo,a):{issues:[],forge:{kind:"unreachable"}}}async function s(){var a;let e,h=await (0,d.resolveGithubToken)();h&&!process.env.GITHUB_TOKEN&&(process.env.GITHUB_TOKEN=h);let[j,k,n,o]=await Promise.all([(0,f.readRegistry)(),(0,f.listTranches)(),r(h),q()]),s=k.active,t=new Set(j.map(a=>a.name)),u=[...o,...(a=n.issues,e=(0,p.statusVisual)("backlog"),a.map(a=>({trancheSlug:null,trancheHref:null,taskId:`backlog-${a.number}`,title:a.title,issue:a.number,issueUrl:a.url,category:"backlog",badge:{label:e.label,badgeClass:e.badgeClass}})))],v="ok"!==n.forge.kind&&"ok"===k.forge.active.kind;return(0,b.jsxs)("div",{className:"space-y-8",children:[(0,b.jsxs)("header",{className:"space-y-2",children:[(0,b.jsx)("h1",{className:"font-serif text-3xl tracking-tight text-foreground",children:"Vinaya Studio"}),(0,b.jsx)("p",{className:"font-sans text-base text-muted-foreground",children:"Local governance for Vinaya artifacts — projects, tranches, backlog, and the tasks ready to pick up or already moving."})]}),(0,b.jsx)(i.ForgeBanners,{forge:k.forge}),v&&(0,b.jsx)(i.ForgeUnavailableBanner,{scope:"both",status:n.forge,detail:"The backlog cannot be listed right now."}),(0,b.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,b.jsx)(l,{title:"Projects",count:j.length,href:"/studio/projects",viewAllLabel:"All projects",children:0===j.length?(0,b.jsx)("p",{className:"font-sans text-xs text-muted-foreground/70",children:"No projects registered."}):j.slice(0,4).map(a=>(0,b.jsxs)(c.NextLink,{variant:"unstyled",href:`/studio/projects/${a.name}`,className:"group flex items-baseline justify-between gap-2 font-mono text-xs text-muted-foreground",children:[(0,b.jsx)("span",{className:"text-card-foreground group-hover:text-primary",children:a.name}),(0,b.jsx)("span",{className:"truncate text-muted-foreground/70",children:a.path})]},a.name))}),(0,b.jsx)(l,{title:"Tranches",count:s.length,href:"/studio/tranches",viewAllLabel:"All tranches",children:0===s.length?"ok"===k.forge.active.kind?(0,b.jsx)("p",{className:"font-sans text-xs text-muted-foreground/70",children:"No active tranches."}):null:s.slice(0,4).map(a=>{let d=g(a.projects,a.fileSlug,t),e=(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{className:"truncate text-card-foreground group-hover:text-primary",children:a.name}),(0,b.jsx)("span",{className:"shrink-0 text-muted-foreground/70",children:function(a){let{total:b,done:c,dropped:d,forgeAvailable:e}=a.taskCounts;if(!e)return`${a.taskCount}`;let f=b-d;return 0===f?`${d} dropped`:d>0?`${c}/${f} \xb7 ${d} dropped`:`${c}/${f}`}(a)})]}),f="group flex items-baseline justify-between gap-2 font-mono text-xs";return d?(0,b.jsx)(c.NextLink,{variant:"unstyled",href:d,className:f,children:e},a.fileSlug):(0,b.jsx)("div",{className:`${f} cursor-help`,title:"No board — no registered project for this tranche.",children:e},a.fileSlug)})})]}),(0,b.jsx)(l,{title:"Tasks",count:u.length,children:0===u.length?"ok"===n.forge.kind&&"ok"===k.forge.active.kind?(0,b.jsx)("p",{className:"font-sans text-xs text-muted-foreground/70",children:"No tasks or backlog Issues."}):null:(0,b.jsx)(m.TasksPanel,{tasks:u})})]})}a.s(["default",0,s,"dynamic",0,"force-dynamic","metadata",0,{title:"Vinaya Studio"}],468816)},290803,function(a){a.n(a.i(468816))},78973,885623,a=>{"use strict";a.i(730643);var b=a.i(106408),c=a.i(225566),d=a.i(882899);async function e(a,e,f){let g,h=d.graphql.defaults({headers:{authorization:`bearer ${f}`}}),i=`query OpenIssues($owner: String!, $repo: String!) {
2
- repository(owner: $owner, name: $repo) {
3
- issues(states: [OPEN], first: 100) {
4
- nodes { number title url body labels(first: 20) { nodes { name } } }
5
- }
6
- }
7
- }`;try{g=await h(i,{owner:a,repo:e})}catch(a){return console.warn(`[fetch-open-issues] backlog query failed: ${a.message}`),{issues:[],forge:{kind:"unreachable"}}}return{issues:(g.repository?.issues.nodes??[]).map(a=>({number:a.number,title:a.title,url:a.url,labels:a.labels?.nodes?.map(a=>a.name)??[],projects:(0,c.projectsFromBody)(a.body??"")})).filter(a=>!(0,b.hasLabel)("tranche",a.labels)&&!(0,b.hasLabel)("state-object",a.labels)),forge:{kind:"ok"}}}a.s(["fetchOpenIssuesWithoutTrancheLabel",0,e],78973);var f=a.i(907997),g=a.i(73774);function h({scope:a,status:b,detail:c}){if("ok"===b.kind)return null;if("unreachable"===b.kind)return(0,f.jsxs)("div",{className:"flex items-start gap-2 rounded-md border border-warning/40 bg-warning/10 px-3 py-2 text-warning",children:[(0,f.jsx)(g.AlertTriangle,{className:"size-4 shrink-0 translate-y-0.5 text-warning","aria-hidden":!0}),(0,f.jsxs)("p",{className:"font-sans text-xs text-warning",children:["Live forge state unavailable — GitHub could not be reached."," ",c??"Showing archived/legacy data only; active tranches cannot be listed right now."]})]});let d="both"===a?"tranches":`${a} tranches`,e=b.failed.map(a=>a.slug).join(", ");return(0,f.jsxs)("div",{className:"flex items-start gap-2 rounded-md border border-warning/40 bg-warning/10 px-3 py-2 text-warning",children:[(0,f.jsx)(g.AlertTriangle,{className:"size-4 shrink-0 translate-y-0.5 text-warning","aria-hidden":!0}),(0,f.jsxs)("p",{className:"font-sans text-xs text-warning",children:["Live forge state partially unavailable — ",b.failed.length," of ",b.total," ",d," could not be loaded (",e,"). Shown counts exclude them."]})]})}a.s(["ForgeBanners",0,function({forge:a}){return"unreachable"===a.active.kind&&"unreachable"===a.archived.kind?(0,f.jsx)(h,{scope:"both",status:a.active}):(0,f.jsxs)("div",{className:"space-y-2",children:["ok"!==a.active.kind&&(0,f.jsx)(h,{scope:"active",status:a.active}),"ok"!==a.archived.kind&&(0,f.jsx)(h,{scope:"archived",status:a.archived})]})},"ForgeUnavailableBanner",0,h],885623)},73774,a=>{"use strict";let b=(0,a.i(892277).default)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);a.s(["AlertTriangle",0,b],73774)},820213,a=>{"use strict";var b=a.i(612948),c=a.i(167436),d=a.i(594331);a.i(670408);let e=(0,b.instrumentModuleGetter)(()=>a.r(780287)),f=(0,b.instrumentModuleGetter)(()=>a.r(43619)),g=(0,b.instrumentModuleGetter)(()=>a.r(13718)),h=(0,b.instrumentModuleGetter)(()=>a.r(118198)),i=(0,b.instrumentModuleGetter)(()=>a.r(262212)),j=(0,b.instrumentModuleGetter)(()=>a.r(277101)),k=["",{children:["studio",{children:["__PAGE__",{},{metadata:{},page:[(0,b.instrumentModuleGetter)(()=>a.r(290803)),"[project]/apps/vinaya-studio/web/src/app/studio/page.tsx"]},[]]},{metadata:{},layout:[j,"[project]/apps/vinaya-studio/web/src/app/studio/layout.tsx"]},[]]},{layout:[e,"[project]/apps/vinaya-studio/web/src/app/layout.tsx"],"not-found":[f,"[project]/node_modules/next/dist/client/components/builtin/not-found.js"],forbidden:[g,"[project]/node_modules/next/dist/client/components/builtin/forbidden.js"],unauthorized:[h,"[project]/node_modules/next/dist/client/components/builtin/unauthorized.js"],"global-error":[i,"[project]/node_modules/next/dist/client/components/builtin/global-error.js"]},[]],l=a.r.bind(a),m=a.l.bind(a),n=(0,c.createAppPageEntrypoint)({tree:k,page:"/studio/page",pathname:"/studio",require:l,loadChunk:m,interopDefault:d.interopDefault}),o=n.__next_app__,p=n.routeModule,q=n.handler;a.s(["__next_app__",0,o,"handler",0,q,"routeModule",0,p],818696),a.i(818696);var r=a.i(722922);a.s(["ClientPageRoot",()=>r.ClientPageRoot,"ClientSegmentRoot",()=>r.ClientSegmentRoot,"Fragment",()=>r.Fragment,"HTTPAccessFallbackBoundary",()=>r.HTTPAccessFallbackBoundary,"InstantValidation",()=>r.InstantValidation,"LayoutRouter",()=>r.LayoutRouter,"LoadingBoundaryProvider",()=>r.LoadingBoundaryProvider,"Postpone",()=>r.Postpone,"RenderFromTemplateContext",()=>r.RenderFromTemplateContext,"RootLayoutBoundary",()=>r.RootLayoutBoundary,"SegmentViewNode",()=>r.SegmentViewNode,"SegmentViewStateNode",()=>r.SegmentViewStateNode,"__next_app__",0,o,"captureOwnerStack",()=>r.captureOwnerStack,"collectPrefetchHints",()=>r.collectPrefetchHints,"collectSegmentData",()=>r.collectSegmentData,"createElement",()=>r.createElement,"createMetadataComponents",()=>r.createMetadataComponents,"createPrerenderParamsForClientSegment",()=>r.createPrerenderParamsForClientSegment,"createPrerenderSearchParamsForClientPage",()=>r.createPrerenderSearchParamsForClientPage,"createServerParamsForServerSegment",()=>r.createServerParamsForServerSegment,"createServerSearchParamsForServerPage",()=>r.createServerSearchParamsForServerPage,"createTemporaryReferenceSet",()=>r.createTemporaryReferenceSet,"decodeAction",()=>r.decodeAction,"decodeFormState",()=>r.decodeFormState,"decodeReply",()=>r.decodeReply,"handler",0,q,"isEmptyHTMLPrelude",()=>r.isEmptyHTMLPrelude,"patchFetch",()=>r.patchFetch,"preconnect",()=>r.preconnect,"preloadFont",()=>r.preloadFont,"preloadStyle",()=>r.preloadStyle,"prerender",()=>r.prerender,"prerenderToNodeStream",()=>r.prerenderToNodeStream,"renderToPipeableStream",()=>r.renderToPipeableStream,"renderToReadableStream",()=>r.renderToReadableStream,"routeModule",0,p,"serverHooks",()=>r.serverHooks,"taintObjectReference",()=>r.taintObjectReference],820213)}];
8
-
9
- //# sourceMappingURL=%5Broot-of-the-server%5D__1tswrm4._.js.map
@@ -1,45 +0,0 @@
1
- module.exports=[197474,a=>{"use strict";a.i(205133);var b=a.i(106408);let c={backlog:{label:"Backlog",badgeClass:"bg-muted/40 text-muted-foreground",accentClass:"border-border",description:"Not dispatched yet."},todo:{label:"Todo",badgeClass:"bg-muted/40 text-foreground",accentClass:"border-border",description:"Assigned, awaiting branch."},"in-flight":{label:"In-flight",badgeClass:"bg-primary/10 text-primary",accentClass:"border-primary/40",description:"Branch open, no PR yet."},"in-review":{label:"In review",badgeClass:"bg-primary/25 text-primary",accentClass:"border-primary/70",description:"PR open, awaiting review."},"changes-requested":{label:"Changes requested",badgeClass:"bg-warning/10 text-warning",accentClass:"border-warning/40",description:"Reviewer asked for changes."},merged:{label:"Merged",badgeClass:"bg-success/25 text-success",accentClass:"border-success/70",description:"PR merged."},dropped:{label:"Dropped",badgeClass:"bg-muted/40 text-muted-foreground",accentClass:"border-border",description:"Issue closed NOT_PLANNED — legitimately abandoned. No action needed."},incoherent:{label:"Incoherent",badgeClass:"bg-destructive/30 text-destructive",accentClass:"border-destructive/80",description:"Closed COMPLETED but no merged PR — governance signal broken. Needs human investigation."},blocked:{label:"Blocked",badgeClass:"bg-destructive/20 text-destructive",accentClass:"border-destructive/60",description:`\`${(0,b.label)("blocked")}\` label set on the Issue.`}};a.s(["statusVisual",0,function(a){return c[a]},"todoDispatchVisual",0,function(a){if(a.ready)return{label:"Ready",badgeClass:"bg-success/10 text-success",title:"Dispatch gate passes — dispatchable right now."};let b=function(a){let b=new Set;for(let c of a)for(let a of c.matchAll(/#\d+/g))b.add(a[0]);return[...b]}(a.blockers);return{label:b.length>0?`Blocked \xb7 needs ${b.join(" ")}`:"Blocked",badgeClass:"bg-destructive/10 text-destructive",title:a.blockers.join("\n")}}])},731929,a=>{"use strict";a.i(205133);var b=a.i(812035);a.i(730643);var c=a.i(882899);let d=/^###\s+AEG provenance\b/im;function e(a,b){if(!d.test(a))return!1;let c=a.match(/^-\s*Issue:\s*#(\d+)/im);return null!==c&&Number(c[1])===b}async function f(a,b,d,f){let g,h=new Map;if(0===a.length)return h;let i=c.graphql.defaults({headers:{authorization:`bearer ${f}`}}),j=a.map(a=>`
2
- i_${a}: issue(number: ${a}) {
3
- timelineItems(first: 50, itemTypes: [CROSS_REFERENCED_EVENT]) {
4
- nodes {
5
- ... on CrossReferencedEvent {
6
- source {
7
- ... on PullRequest {
8
- number
9
- body
10
- comments(first: 50) { nodes { body } }
11
- }
12
- }
13
- }
14
- }
15
- }
16
- }`).join(""),k=`query ProvenanceCrossRef($owner: String!, $repo: String!) {
17
- repository(owner: $owner, name: $repo) {${j}
18
- }
19
- }`;try{g=await i(k,{owner:b,repo:d})}catch{return h}if(!g.repository)return h;for(let b of a){let a=g.repository[`i_${b}`],c=(a?.timelineItems?.nodes??[]).some(({source:a})=>!!a&&"number"==typeof a.number&&(!!e(a.body??"",b)||a.comments.nodes.some(a=>e(a.body,b))));h.set(b,c)}return h}async function g(a,b,e,g){let h,i=new Map;if(0===a.length)return i;let j=c.graphql.defaults({headers:{authorization:`bearer ${g}`}}),k=a.map(a=>`
20
- i_${a}: issue(number: ${a}) {
21
- timelineItems(last: 1, itemTypes: [CLOSED_EVENT]) {
22
- nodes {
23
- ... on ClosedEvent {
24
- closer {
25
- ... on PullRequest {
26
- number
27
- body
28
- comments(first: 50) {
29
- nodes { body }
30
- }
31
- }
32
- }
33
- }
34
- }
35
- }
36
- }`).join(""),l=`query Provenance($owner: String!, $repo: String!) {
37
- repository(owner: $owner, name: $repo) {${k}
38
- }
39
- }`;try{h=await j(l,{owner:b,repo:e})}catch{return i}if(!h.repository)return i;let m=[];for(let b of a){let a=h.repository[`i_${b}`];if(!a){i.set(b,!1);continue}let c=a.timelineItems?.nodes?.[0]?.closer??null;if(null===c||"number"!=typeof c.number){m.push(b);continue}let e=d.test(c.body??""),f=c.comments.nodes.some(a=>d.test(a.body));i.set(b,e||f)}if(m.length>0)for(let[a,c]of(await f(m,b,e,g)))i.set(a,c);return i}var h=a.i(898564);a.i(819365);var i=a.i(538586),j=a.i(113934);function k(a){let b=a.match(/#(\d+)/);return b?Number(b[1]):null}async function l(a,c,d){let e=new Map;if(d.unavailable||!d.repo)return e;let f=d.derived.tasks.filter(a=>"todo"===a.status).map(a=>a.task);if(0===f.length)return e;let i=await (0,h.resolveGithubToken)();if(!i)return e;let{owner:l,repo:o}=d.repo,p=new Map(a.tasks.map(a=>[a.id,a])),q=new Map;for(let b of f){let c=a.tasks.findIndex(a=>a.id===b.id);q.set(b.id,c>0?a.tasks[c-1]??null:null)}let r=[...new Set([...q.values()].map(a=>a?.issue).filter(a=>"number"==typeof a))],s=await m(c),t=[c,...s.map(a=>a.slug)],u=function(a,b){let c=new Set;for(let d of a)for(let a of d.dependsOn){if(b.has(a.trim()))continue;let d=a.match(/#(\d+)/);d&&c.add(Number(d[1]))}return[...c]}(f,p),[v,w,x]=await Promise.all([(0,b.fetchOpenIssuesByLabel)(t,l,o,i),g(r,l,o,i),n(u,l,o,i)]),y=new Map;for(let a of v.get(c)??[])y.set(a.number,a.body);let z=[...new Set(f.flatMap(a=>a.projects))],A=new Map;for(let a of z){let b=null;for(let c of s)if(c.tranche.tasks.some(b=>b.projects.includes(a))&&0===(v.get(c.slug)??[]).length){b={project:a,priorTrancheSlug:c.slug,archived:!1};break}A.set(a,b??{project:a,priorTrancheSlug:null,archived:!1})}let B=new Map;for(let a of f){let b=function(a){let{task:b}=a,c=null!==b.issue?a.facts.get(b.id):void 0,d=null!==b.issue?a.rationaleBodyByIssue.get(b.issue):void 0,e=a.priorTask?a.facts.get(a.priorTask.id):void 0;return{trancheSlug:a.trancheSlug,task:b,issue:null!==b.issue&&c?{number:b.issue,state:c.issueState}:null,issueRationalePass:void 0===d||"pass"===(0,j.checkIssueRationale)(d).status,dependsOn:a.task.dependsOn.map(b=>{let c=a.taskById.get(b.trim());if(c){let d=a.facts.get(c.id);if(!d)return{id:b,issue:c.issue,merged:!1};let e="merged"===d.prState||"open"!==d.prState&&"closed"===d.issueState;return{id:b,issue:c.issue,merged:e}}let d=k(b);return null!==d?{id:b,issue:d,merged:a.crossIssueClosed.get(d)??!1}:{id:b,issue:null,merged:!1}}),conflictsWith:a.task.conflictsWith.map(b=>{let c=a.taskById.get(b.trim());return c?{id:b,issue:c.issue,openOrInFlight:a.facts.get(c.id)?.prState==="open"}:{id:b,issue:k(b),openOrInFlight:!1}}),priorTask:a.priorTask?{id:a.priorTask.id,issue:a.priorTask.issue,issueClosed:e?.issueState==="closed",prMerged:e?.prState==="merged",hasProvenance:null!==a.priorTask.issue&&(a.provenanceByIssue.get(a.priorTask.issue)??!1)}:null,priorTrancheArchival:a.priorTrancheArchival}}({trancheSlug:c,task:a,facts:d.facts,taskById:p,rationaleBodyByIssue:y,provenanceByIssue:w,crossIssueClosed:x,priorTask:q.get(a.id)??null,priorTrancheArchival:a.projects.map(a=>A.get(a)).filter(a=>void 0!==a)});B.set(a.id,function(a){let{trancheSlug:b,task:c}=a,d=`task ${c.id} (tranche ${b})`,e=[];for(let b of(null===c.issue?e.push(`dispatch-gate issue-existence: ${d} has no Issue (#TBD or blank) in the topology — not dispatchable until the Planner cuts the Issue.`):null===a.issue&&e.push(`dispatch-gate issue-existence: ${d} names Issue #${c.issue}, but it does not resolve to a real GitHub Issue (phantom reference).`),null===a.issue||a.issueRationalePass||e.push(`dispatch-gate rationale: Issue #${a.issue.number} for ${d} fails the rationale gate (checkIssueRationale) — the Planner must complete the eight-field rationale before this task is dispatchable.`),a.dependsOn))if(!b.merged){let a=null!==b.issue?` (#${b.issue})`:"";e.push(`dispatch-gate depends-on: ${d} depends on ${b.id}${a}, whose PR is not merged yet — not dispatchable, it serializes behind it.`)}for(let b of a.conflictsWith)if(b.openOrInFlight){let a=null!==b.issue?` (#${b.issue})`:"";e.push(`dispatch-gate conflicts-with: ${d} conflicts with ${b.id}${a}, whose PR is open or in-flight — not dispatchable until it merges.`)}for(let b of a.priorTrancheArchival)null===b.priorTrancheSlug||b.archived||e.push(`dispatch-gate prior-tranche-archival: project \`${b.project}\`'s previous tranche \`${b.priorTrancheSlug}\` is not archived — the Tranche Archivist must run before new work on this product.`);return{ready:0===e.length,blockers:e}}(b))}return B}async function m(a){try{return(await (0,i.loadActiveTranches)()).filter(b=>b.fileSlug!==a).map(a=>({slug:a.fileSlug,tranche:a.tranche}))}catch{return[]}}async function n(a,b,d,e){let f,g=new Map;if(0===a.length)return g;let h=c.graphql.defaults({headers:{authorization:`bearer ${e}`}}),i=a.map(a=>`i_${a}: issue(number: ${a}) { state }`).join("\n "),j=`query IssueStates($owner: String!, $repo: String!) {
40
- repository(owner: $owner, name: $repo) {
41
- ${i}
42
- }
43
- }`;try{f=await h(j,{owner:b,repo:d})}catch{return g}if(!f.repository)return g;for(let b of a)g.set(b,f.repository[`i_${b}`]?.state==="CLOSED");return g}a.s(["loadDispatchReadiness",0,l],731929)},73774,a=>{"use strict";let b=(0,a.i(892277).default)("triangle-alert",[["path",{d:"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3",key:"wmoenq"}],["path",{d:"M12 9v4",key:"juzpu7"}],["path",{d:"M12 17h.01",key:"p32p05"}]]);a.s(["AlertTriangle",0,b],73774)}];
44
-
45
- //# sourceMappingURL=_01jl99k._.js.map
@@ -1,45 +0,0 @@
1
- module.exports=[197474,a=>{"use strict";a.i(205133);var b=a.i(106408);let c={backlog:{label:"Backlog",badgeClass:"bg-muted/40 text-muted-foreground",accentClass:"border-border",description:"Not dispatched yet."},todo:{label:"Todo",badgeClass:"bg-muted/40 text-foreground",accentClass:"border-border",description:"Assigned, awaiting branch."},"in-flight":{label:"In-flight",badgeClass:"bg-primary/10 text-primary",accentClass:"border-primary/40",description:"Branch open, no PR yet."},"in-review":{label:"In review",badgeClass:"bg-primary/25 text-primary",accentClass:"border-primary/70",description:"PR open, awaiting review."},"changes-requested":{label:"Changes requested",badgeClass:"bg-warning/10 text-warning",accentClass:"border-warning/40",description:"Reviewer asked for changes."},merged:{label:"Merged",badgeClass:"bg-success/25 text-success",accentClass:"border-success/70",description:"PR merged."},dropped:{label:"Dropped",badgeClass:"bg-muted/40 text-muted-foreground",accentClass:"border-border",description:"Issue closed NOT_PLANNED — legitimately abandoned. No action needed."},incoherent:{label:"Incoherent",badgeClass:"bg-destructive/30 text-destructive",accentClass:"border-destructive/80",description:"Closed COMPLETED but no merged PR — governance signal broken. Needs human investigation."},blocked:{label:"Blocked",badgeClass:"bg-destructive/20 text-destructive",accentClass:"border-destructive/60",description:`\`${(0,b.label)("blocked")}\` label set on the Issue.`}};a.s(["statusVisual",0,function(a){return c[a]},"todoDispatchVisual",0,function(a){if(a.ready)return{label:"Ready",badgeClass:"bg-success/10 text-success",title:"Dispatch gate passes — dispatchable right now."};let b=function(a){let b=new Set;for(let c of a)for(let a of c.matchAll(/#\d+/g))b.add(a[0]);return[...b]}(a.blockers);return{label:b.length>0?`Blocked \xb7 needs ${b.join(" ")}`:"Blocked",badgeClass:"bg-destructive/10 text-destructive",title:a.blockers.join("\n")}}])},731929,a=>{"use strict";a.i(205133);var b=a.i(812035);a.i(730643);var c=a.i(882899);let d=/^###\s+AEG provenance\b/im;function e(a,b){if(!d.test(a))return!1;let c=a.match(/^-\s*Issue:\s*#(\d+)/im);return null!==c&&Number(c[1])===b}async function f(a,b,d,f){let g,h=new Map;if(0===a.length)return h;let i=c.graphql.defaults({headers:{authorization:`bearer ${f}`}}),j=a.map(a=>`
2
- i_${a}: issue(number: ${a}) {
3
- timelineItems(first: 50, itemTypes: [CROSS_REFERENCED_EVENT]) {
4
- nodes {
5
- ... on CrossReferencedEvent {
6
- source {
7
- ... on PullRequest {
8
- number
9
- body
10
- comments(first: 50) { nodes { body } }
11
- }
12
- }
13
- }
14
- }
15
- }
16
- }`).join(""),k=`query ProvenanceCrossRef($owner: String!, $repo: String!) {
17
- repository(owner: $owner, name: $repo) {${j}
18
- }
19
- }`;try{g=await i(k,{owner:b,repo:d})}catch{return h}if(!g.repository)return h;for(let b of a){let a=g.repository[`i_${b}`],c=(a?.timelineItems?.nodes??[]).some(({source:a})=>!!a&&"number"==typeof a.number&&(!!e(a.body??"",b)||a.comments.nodes.some(a=>e(a.body,b))));h.set(b,c)}return h}async function g(a,b,e,g){let h,i=new Map;if(0===a.length)return i;let j=c.graphql.defaults({headers:{authorization:`bearer ${g}`}}),k=a.map(a=>`
20
- i_${a}: issue(number: ${a}) {
21
- timelineItems(last: 1, itemTypes: [CLOSED_EVENT]) {
22
- nodes {
23
- ... on ClosedEvent {
24
- closer {
25
- ... on PullRequest {
26
- number
27
- body
28
- comments(first: 50) {
29
- nodes { body }
30
- }
31
- }
32
- }
33
- }
34
- }
35
- }
36
- }`).join(""),l=`query Provenance($owner: String!, $repo: String!) {
37
- repository(owner: $owner, name: $repo) {${k}
38
- }
39
- }`;try{h=await j(l,{owner:b,repo:e})}catch{return i}if(!h.repository)return i;let m=[];for(let b of a){let a=h.repository[`i_${b}`];if(!a){i.set(b,!1);continue}let c=a.timelineItems?.nodes?.[0]?.closer??null;if(null===c||"number"!=typeof c.number){m.push(b);continue}let e=d.test(c.body??""),f=c.comments.nodes.some(a=>d.test(a.body));i.set(b,e||f)}if(m.length>0)for(let[a,c]of(await f(m,b,e,g)))i.set(a,c);return i}var h=a.i(898564);a.i(819365);var i=a.i(538586),j=a.i(113934);function k(a){let b=a.match(/#(\d+)/);return b?Number(b[1]):null}async function l(a,c,d){let e=new Map;if(d.unavailable||!d.repo)return e;let f=d.derived.tasks.filter(a=>"todo"===a.status).map(a=>a.task);if(0===f.length)return e;let i=await (0,h.resolveGithubToken)();if(!i)return e;let{owner:l,repo:o}=d.repo,p=new Map(a.tasks.map(a=>[a.id,a])),q=new Map;for(let b of f){let c=a.tasks.findIndex(a=>a.id===b.id);q.set(b.id,c>0?a.tasks[c-1]??null:null)}let r=[...new Set([...q.values()].map(a=>a?.issue).filter(a=>"number"==typeof a))],s=await m(c),t=[c,...s.map(a=>a.slug)],u=function(a,b){let c=new Set;for(let d of a)for(let a of d.dependsOn){if(b.has(a.trim()))continue;let d=a.match(/#(\d+)/);d&&c.add(Number(d[1]))}return[...c]}(f,p),[v,w,x]=await Promise.all([(0,b.fetchOpenIssuesByLabel)(t,l,o,i),g(r,l,o,i),n(u,l,o,i)]),y=new Map;for(let a of v.get(c)??[])y.set(a.number,a.body);let z=[...new Set(f.flatMap(a=>a.projects))],A=new Map;for(let a of z){let b=null;for(let c of s)if(c.tranche.tasks.some(b=>b.projects.includes(a))&&0===(v.get(c.slug)??[]).length){b={project:a,priorTrancheSlug:c.slug,archived:!1};break}A.set(a,b??{project:a,priorTrancheSlug:null,archived:!1})}let B=new Map;for(let a of f){let b=function(a){let{task:b}=a,c=null!==b.issue?a.facts.get(b.id):void 0,d=null!==b.issue?a.rationaleBodyByIssue.get(b.issue):void 0,e=a.priorTask?a.facts.get(a.priorTask.id):void 0;return{trancheSlug:a.trancheSlug,task:b,issue:null!==b.issue&&c?{number:b.issue,state:c.issueState}:null,issueRationalePass:void 0===d||"pass"===(0,j.checkIssueRationale)(d).status,dependsOn:a.task.dependsOn.map(b=>{let c=a.taskById.get(b.trim());if(c){let d=a.facts.get(c.id);if(!d)return{id:b,issue:c.issue,merged:!1};let e="merged"===d.prState||"open"!==d.prState&&"closed"===d.issueState;return{id:b,issue:c.issue,merged:e}}let d=k(b);return null!==d?{id:b,issue:d,merged:a.crossIssueClosed.get(d)??!1}:{id:b,issue:null,merged:!1}}),conflictsWith:a.task.conflictsWith.map(b=>{let c=a.taskById.get(b.trim());return c?{id:b,issue:c.issue,openOrInFlight:a.facts.get(c.id)?.prState==="open"}:{id:b,issue:k(b),openOrInFlight:!1}}),priorTask:a.priorTask?{id:a.priorTask.id,issue:a.priorTask.issue,issueClosed:e?.issueState==="closed",prMerged:e?.prState==="merged",hasProvenance:null!==a.priorTask.issue&&(a.provenanceByIssue.get(a.priorTask.issue)??!1)}:null,priorTrancheArchival:a.priorTrancheArchival}}({trancheSlug:c,task:a,facts:d.facts,taskById:p,rationaleBodyByIssue:y,provenanceByIssue:w,crossIssueClosed:x,priorTask:q.get(a.id)??null,priorTrancheArchival:a.projects.map(a=>A.get(a)).filter(a=>void 0!==a)});B.set(a.id,function(a){let{trancheSlug:b,task:c}=a,d=`task ${c.id} (tranche ${b})`,e=[];for(let b of(null===c.issue?e.push(`dispatch-gate issue-existence: ${d} has no Issue (#TBD or blank) in the topology — not dispatchable until the Planner cuts the Issue.`):null===a.issue&&e.push(`dispatch-gate issue-existence: ${d} names Issue #${c.issue}, but it does not resolve to a real GitHub Issue (phantom reference).`),null===a.issue||a.issueRationalePass||e.push(`dispatch-gate rationale: Issue #${a.issue.number} for ${d} fails the rationale gate (checkIssueRationale) — the Planner must complete the eight-field rationale before this task is dispatchable.`),a.dependsOn))if(!b.merged){let a=null!==b.issue?` (#${b.issue})`:"";e.push(`dispatch-gate depends-on: ${d} depends on ${b.id}${a}, whose PR is not merged yet — not dispatchable, it serializes behind it.`)}for(let b of a.conflictsWith)if(b.openOrInFlight){let a=null!==b.issue?` (#${b.issue})`:"";e.push(`dispatch-gate conflicts-with: ${d} conflicts with ${b.id}${a}, whose PR is open or in-flight — not dispatchable until it merges.`)}for(let b of a.priorTrancheArchival)null===b.priorTrancheSlug||b.archived||e.push(`dispatch-gate prior-tranche-archival: project \`${b.project}\`'s previous tranche \`${b.priorTrancheSlug}\` is not archived — the Tranche Archivist must run before new work on this product.`);return{ready:0===e.length,blockers:e}}(b))}return B}async function m(a){try{return(await (0,i.loadActiveTranches)()).filter(b=>b.fileSlug!==a).map(a=>({slug:a.fileSlug,tranche:a.tranche}))}catch{return[]}}async function n(a,b,d,e){let f,g=new Map;if(0===a.length)return g;let h=c.graphql.defaults({headers:{authorization:`bearer ${e}`}}),i=a.map(a=>`i_${a}: issue(number: ${a}) { state }`).join("\n "),j=`query IssueStates($owner: String!, $repo: String!) {
40
- repository(owner: $owner, name: $repo) {
41
- ${i}
42
- }
43
- }`;try{f=await h(j,{owner:b,repo:d})}catch{return g}if(!f.repository)return g;for(let b of a)g.set(b,f.repository[`i_${b}`]?.state==="CLOSED");return g}a.s(["loadDispatchReadiness",0,l],731929)}];
44
-
45
- //# sourceMappingURL=apps_vinaya-studio_web_src_20c6-3m._.js.map