p-dev-harness 0.3.0 → 0.3.1
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.
- package/README.md +16 -5
- package/dist/github/client.d.ts +88 -1
- package/dist/github/client.d.ts.map +1 -1
- package/dist/github/client.js +98 -7
- package/dist/github/client.js.map +1 -1
- package/dist/github/rate-limit-metadata.d.ts +16 -0
- package/dist/github/rate-limit-metadata.d.ts.map +1 -0
- package/dist/github/rate-limit-metadata.js +73 -0
- package/dist/github/rate-limit-metadata.js.map +1 -0
- package/dist/p-dev/git-object-plumbing.d.ts +19 -0
- package/dist/p-dev/git-object-plumbing.d.ts.map +1 -0
- package/dist/p-dev/git-object-plumbing.js +196 -0
- package/dist/p-dev/git-object-plumbing.js.map +1 -0
- package/dist/p-dev/package-paths.d.ts +1 -0
- package/dist/p-dev/package-paths.d.ts.map +1 -1
- package/dist/p-dev/package-paths.js +3 -0
- package/dist/p-dev/package-paths.js.map +1 -1
- package/dist/p-dev/workspace-snapshot-digest.d.ts +12 -0
- package/dist/p-dev/workspace-snapshot-digest.d.ts.map +1 -0
- package/dist/p-dev/workspace-snapshot-digest.js +34 -0
- package/dist/p-dev/workspace-snapshot-digest.js.map +1 -0
- package/dist/p-dev/workspace-snapshot-generator.d.ts +15 -0
- package/dist/p-dev/workspace-snapshot-generator.d.ts.map +1 -0
- package/dist/p-dev/workspace-snapshot-generator.js +69 -0
- package/dist/p-dev/workspace-snapshot-generator.js.map +1 -0
- package/dist/p-dev/workspace-snapshot-git.d.ts +26 -0
- package/dist/p-dev/workspace-snapshot-git.d.ts.map +1 -0
- package/dist/p-dev/workspace-snapshot-git.js +151 -0
- package/dist/p-dev/workspace-snapshot-git.js.map +1 -0
- package/dist/p-dev/workspace-snapshot-manifest.d.ts +18 -0
- package/dist/p-dev/workspace-snapshot-manifest.d.ts.map +1 -0
- package/dist/p-dev/workspace-snapshot-manifest.js +292 -0
- package/dist/p-dev/workspace-snapshot-manifest.js.map +1 -0
- package/dist/p-dev/workspace-snapshot-policy.d.ts +16 -0
- package/dist/p-dev/workspace-snapshot-policy.d.ts.map +1 -0
- package/dist/p-dev/workspace-snapshot-policy.js +168 -0
- package/dist/p-dev/workspace-snapshot-policy.js.map +1 -0
- package/dist/p-dev/workspace-snapshot-types.d.ts +54 -0
- package/dist/p-dev/workspace-snapshot-types.d.ts.map +1 -0
- package/dist/p-dev/workspace-snapshot-types.js +7 -0
- package/dist/p-dev/workspace-snapshot-types.js.map +1 -0
- package/dist/p-dev/workspace-snapshot-validation.d.ts +17 -0
- package/dist/p-dev/workspace-snapshot-validation.d.ts.map +1 -0
- package/dist/p-dev/workspace-snapshot-validation.js +115 -0
- package/dist/p-dev/workspace-snapshot-validation.js.map +1 -0
- package/dist/setup/github-remote-provider.d.ts +129 -0
- package/dist/setup/github-remote-provider.d.ts.map +1 -1
- package/dist/setup/github-remote-provider.js +214 -3
- package/dist/setup/github-remote-provider.js.map +1 -1
- package/dist/setup/github-remote-setup-live.d.ts +46 -1
- package/dist/setup/github-remote-setup-live.d.ts.map +1 -1
- package/dist/setup/github-remote-setup-live.js +121 -4
- package/dist/setup/github-remote-setup-live.js.map +1 -1
- package/dist/setup/github-secret-encryption.d.ts.map +1 -1
- package/dist/setup/github-secret-encryption.js +3 -1
- package/dist/setup/github-secret-encryption.js.map +1 -1
- package/dist/setup/github-upload-rate-limit-gate.d.ts +17 -0
- package/dist/setup/github-upload-rate-limit-gate.d.ts.map +1 -0
- package/dist/setup/github-upload-rate-limit-gate.js +42 -0
- package/dist/setup/github-upload-rate-limit-gate.js.map +1 -0
- package/dist/setup/harness-managed-repo-marker.d.ts +28 -1
- package/dist/setup/harness-managed-repo-marker.d.ts.map +1 -1
- package/dist/setup/harness-managed-repo-marker.js +165 -2
- package/dist/setup/harness-managed-repo-marker.js.map +1 -1
- package/dist/setup/harness-provisioning-context.d.ts +14 -12
- package/dist/setup/harness-provisioning-context.d.ts.map +1 -1
- package/dist/setup/harness-provisioning-context.js +54 -42
- package/dist/setup/harness-provisioning-context.js.map +1 -1
- package/dist/setup/harness-provisioning-pending-state.d.ts +33 -22
- package/dist/setup/harness-provisioning-pending-state.d.ts.map +1 -1
- package/dist/setup/harness-provisioning-pending-state.js +49 -30
- package/dist/setup/harness-provisioning-pending-state.js.map +1 -1
- package/dist/setup/harness-repo-provisioning.d.ts +10 -5
- package/dist/setup/harness-repo-provisioning.d.ts.map +1 -1
- package/dist/setup/harness-repo-provisioning.js +403 -335
- package/dist/setup/harness-repo-provisioning.js.map +1 -1
- package/dist/setup/harness-snapshot-provisioning-helpers.d.ts +21 -0
- package/dist/setup/harness-snapshot-provisioning-helpers.d.ts.map +1 -0
- package/dist/setup/harness-snapshot-provisioning-helpers.js +55 -0
- package/dist/setup/harness-snapshot-provisioning-helpers.js.map +1 -0
- package/dist/setup/harness-snapshot-provisioning.d.ts +111 -0
- package/dist/setup/harness-snapshot-provisioning.d.ts.map +1 -0
- package/dist/setup/harness-snapshot-provisioning.js +684 -0
- package/dist/setup/harness-snapshot-provisioning.js.map +1 -0
- package/dist/setup/harness-workspace-snapshot-loader.d.ts +15 -0
- package/dist/setup/harness-workspace-snapshot-loader.d.ts.map +1 -0
- package/dist/setup/harness-workspace-snapshot-loader.js +80 -0
- package/dist/setup/harness-workspace-snapshot-loader.js.map +1 -0
- package/dist/setup/mock-git-repository-store.d.ts +43 -0
- package/dist/setup/mock-git-repository-store.d.ts.map +1 -0
- package/dist/setup/mock-git-repository-store.js +232 -0
- package/dist/setup/mock-git-repository-store.js.map +1 -0
- package/gui/.next/BUILD_ID +1 -1
- package/gui/.next/app-build-manifest.json +49 -49
- package/gui/.next/app-path-routes-manifest.json +15 -15
- package/gui/.next/build-manifest.json +2 -2
- package/gui/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/_not-found.html +1 -1
- package/gui/.next/server/app/_not-found.rsc +2 -2
- package/gui/.next/server/app/api/setup/apply-connect-services/route.js +1 -1
- package/gui/.next/server/app/api/setup/apply-connect-services/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/apply-connect-services/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/apply-harness-repo-provisioning/route.js +1 -1
- package/gui/.next/server/app/api/setup/apply-harness-repo-provisioning/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/apply-harness-repo-provisioning/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/apply-harness-secrets/route.js +1 -1
- package/gui/.next/server/app/api/setup/apply-harness-secrets/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/apply-harness-secrets/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/apply-linear-setup/route.js +1 -1
- package/gui/.next/server/app/api/setup/apply-linear-setup/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/apply-linear-setup/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/apply-local-files/route.js +1 -1
- package/gui/.next/server/app/api/setup/apply-local-files/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/apply-local-files/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/apply-target-workflow/route.js +1 -1
- package/gui/.next/server/app/api/setup/apply-target-workflow/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/apply-target-workflow/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/apply-vercel-bridge/route.js +1 -1
- package/gui/.next/server/app/api/setup/apply-vercel-bridge/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/apply-vercel-bridge/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/finalize-target-workflow/route.js +1 -1
- package/gui/.next/server/app/api/setup/finalize-target-workflow/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/finalize-target-workflow/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/harness-provisioning-summary/route.js +1 -1
- package/gui/.next/server/app/api/setup/harness-provisioning-summary/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/harness-provisioning-summary/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/linear-options/route.js +1 -1
- package/gui/.next/server/app/api/setup/linear-options/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/linear-options/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/linear-summary/route.js +1 -1
- package/gui/.next/server/app/api/setup/linear-summary/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/linear-summary/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/local-readiness/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/manual-harness-secret-values/route.js +1 -1
- package/gui/.next/server/app/api/setup/manual-harness-secret-values/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/manual-harness-secret-values/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/preview-connect-services/route.js +1 -1
- package/gui/.next/server/app/api/setup/preview-connect-services/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/preview-connect-services/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/preview-harness-repo-provisioning/route.js +1 -1
- package/gui/.next/server/app/api/setup/preview-harness-repo-provisioning/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/preview-harness-repo-provisioning/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/preview-harness-secrets/route.js +1 -1
- package/gui/.next/server/app/api/setup/preview-harness-secrets/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/preview-harness-secrets/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/preview-linear-setup/route.js +1 -1
- package/gui/.next/server/app/api/setup/preview-linear-setup/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/preview-linear-setup/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/preview-local-files/route.js +1 -1
- package/gui/.next/server/app/api/setup/preview-local-files/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/preview-local-files/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/preview-target-workflow/route.js +1 -1
- package/gui/.next/server/app/api/setup/preview-target-workflow/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/preview-target-workflow/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/preview-vercel-bridge/route.js +1 -1
- package/gui/.next/server/app/api/setup/preview-vercel-bridge/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/preview-vercel-bridge/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/remote-summary/route.js +1 -1
- package/gui/.next/server/app/api/setup/remote-summary/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/remote-summary/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/summary/route.js +1 -1
- package/gui/.next/server/app/api/setup/summary/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/summary/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/vercel-bridge-options/route.js +1 -1
- package/gui/.next/server/app/api/setup/vercel-bridge-options/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/vercel-bridge-options/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/vercel-bridge-redeploy-status/route.js +1 -1
- package/gui/.next/server/app/api/setup/vercel-bridge-redeploy-status/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/vercel-bridge-redeploy-status/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/vercel-summary/route.js +1 -1
- package/gui/.next/server/app/api/setup/vercel-summary/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/vercel-summary/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/verify-harness-repo/route.js +1 -1
- package/gui/.next/server/app/api/setup/verify-harness-repo/route.js.nft.json +1 -1
- package/gui/.next/server/app/api/setup/verify-harness-repo/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/verify-service/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/api/setup/verify-target-repo/route_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/index.html +1 -1
- package/gui/.next/server/app/index.rsc +2 -2
- package/gui/.next/server/app/page_client-reference-manifest.js +1 -1
- package/gui/.next/server/app/settings/configure/page.js +2 -2
- package/gui/.next/server/app/settings/configure/page.js.nft.json +1 -1
- package/gui/.next/server/app/settings/configure/page_client-reference-manifest.js +1 -1
- package/gui/.next/server/app-paths-manifest.json +15 -15
- package/gui/.next/server/chunks/477.js +2 -2
- package/gui/.next/server/chunks/647.js +82 -0
- package/gui/.next/server/chunks/900.js +1 -1
- package/gui/.next/server/pages/404.html +1 -1
- package/gui/.next/server/pages/500.html +1 -1
- package/gui/.next/static/css/781f3c93b6d7425a.css +3 -0
- package/gui/.next/trace +4 -4
- package/package.json +2 -1
- package/workspace-snapshot/files/.agents/skills/architecture-evolution-audit/SKILL.md +282 -0
- package/workspace-snapshot/files/.agents/skills/code-health-audit/SKILL.md +188 -0
- package/workspace-snapshot/files/.agents/skills/implementation/SKILL.md +279 -0
- package/workspace-snapshot/files/.agents/skills/issue-intake/SKILL.md +163 -0
- package/workspace-snapshot/files/.agents/skills/issue-intake/examples.md +112 -0
- package/workspace-snapshot/files/.agents/skills/planner/SKILL.md +253 -0
- package/workspace-snapshot/files/.agents/skills/security-audit/SKILL.md +270 -0
- package/workspace-snapshot/files/.env.example +37 -0
- package/workspace-snapshot/files/.github/CODEOWNERS +4 -0
- package/workspace-snapshot/files/.github/dependabot.yml +12 -0
- package/workspace-snapshot/files/.github/workflows/ci.yml +32 -0
- package/workspace-snapshot/files/.github/workflows/codeql.yml +35 -0
- package/workspace-snapshot/files/.github/workflows/harness-auto-runner.yml +561 -0
- package/workspace-snapshot/files/.harness/config.example.json +83 -0
- package/workspace-snapshot/files/AGENTS.md +130 -0
- package/workspace-snapshot/files/ARCHITECTURE.md +385 -0
- package/workspace-snapshot/files/CHANGELOG.md +166 -0
- package/workspace-snapshot/files/LICENSE +21 -0
- package/workspace-snapshot/files/README.md +110 -0
- package/workspace-snapshot/files/ROADMAP.md +50 -0
- package/workspace-snapshot/files/api/linear-webhook.ts +41 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/apply-connect-services/route.ts +21 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/apply-harness-repo-provisioning/route.ts +35 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/apply-harness-secrets/route.ts +42 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/apply-linear-setup/route.ts +23 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/apply-local-files/route.ts +42 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/apply-target-workflow/route.ts +49 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/apply-vercel-bridge/route.ts +26 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/finalize-target-workflow/route.ts +32 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/harness-provisioning-summary/route.ts +17 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/linear-options/route.ts +17 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/linear-summary/route.ts +15 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/local-readiness/route.ts +18 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/manual-harness-secret-values/route.ts +33 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/preview-connect-services/route.ts +17 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/preview-harness-repo-provisioning/route.ts +22 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/preview-harness-secrets/route.ts +19 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/preview-linear-setup/route.ts +20 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/preview-local-files/route.ts +17 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/preview-target-workflow/route.ts +25 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/preview-vercel-bridge/route.ts +23 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/remote-summary/route.ts +15 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/summary/route.ts +10 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/vercel-bridge-options/route.ts +29 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/vercel-bridge-redeploy-status/route.ts +22 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/vercel-summary/route.ts +15 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/verify-harness-repo/route.ts +31 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/verify-service/route.ts +41 -0
- package/workspace-snapshot/files/apps/gui/app/api/setup/verify-target-repo/route.ts +33 -0
- package/workspace-snapshot/files/apps/gui/app/layout.tsx +28 -0
- package/workspace-snapshot/files/apps/gui/app/page.tsx +5 -0
- package/workspace-snapshot/files/apps/gui/app/settings/configure/page.tsx +34 -0
- package/workspace-snapshot/files/apps/gui/components/custom/app-shell.tsx +39 -0
- package/workspace-snapshot/files/apps/gui/components/custom/configure-experience.tsx +671 -0
- package/workspace-snapshot/files/apps/gui/components/custom/configure-page-content.tsx +45 -0
- package/workspace-snapshot/files/apps/gui/components/custom/configure-workflow.tsx +1284 -0
- package/workspace-snapshot/files/apps/gui/components/custom/connected-status.tsx +30 -0
- package/workspace-snapshot/files/apps/gui/components/custom/environment-config-form.tsx +400 -0
- package/workspace-snapshot/files/apps/gui/components/custom/first-run-stepper.tsx +199 -0
- package/workspace-snapshot/files/apps/gui/components/custom/github-token-help-disclosure.tsx +142 -0
- package/workspace-snapshot/files/apps/gui/components/custom/guided-cloud-secrets-card.tsx +993 -0
- package/workspace-snapshot/files/apps/gui/components/custom/guided-linear-workspace-card.tsx +526 -0
- package/workspace-snapshot/files/apps/gui/components/custom/guided-local-readiness-card.tsx +132 -0
- package/workspace-snapshot/files/apps/gui/components/custom/guided-step-transition.tsx +60 -0
- package/workspace-snapshot/files/apps/gui/components/custom/guided-target-workflow-card.tsx +396 -0
- package/workspace-snapshot/files/apps/gui/components/custom/guided-vercel-bridge-card.tsx +861 -0
- package/workspace-snapshot/files/apps/gui/components/custom/local-write-confirmation.tsx +91 -0
- package/workspace-snapshot/files/apps/gui/components/custom/local-write-preview.tsx +52 -0
- package/workspace-snapshot/files/apps/gui/components/custom/preview-panel.tsx +19 -0
- package/workspace-snapshot/files/apps/gui/components/custom/primary-setup-task-card.tsx +65 -0
- package/workspace-snapshot/files/apps/gui/components/custom/readiness-banner.tsx +91 -0
- package/workspace-snapshot/files/apps/gui/components/custom/remote-action-confirmation.tsx +155 -0
- package/workspace-snapshot/files/apps/gui/components/custom/remote-action-preview.tsx +84 -0
- package/workspace-snapshot/files/apps/gui/components/custom/remote-secret-form.tsx +123 -0
- package/workspace-snapshot/files/apps/gui/components/custom/remote-setup-section.tsx +354 -0
- package/workspace-snapshot/files/apps/gui/components/custom/review-cloud-secrets-disclosure.tsx +59 -0
- package/workspace-snapshot/files/apps/gui/components/custom/review-generated-files-disclosure.tsx +67 -0
- package/workspace-snapshot/files/apps/gui/components/custom/section-card.tsx +33 -0
- package/workspace-snapshot/files/apps/gui/components/custom/service-icons.tsx +30 -0
- package/workspace-snapshot/files/apps/gui/components/custom/setup-apply-result.tsx +52 -0
- package/workspace-snapshot/files/apps/gui/components/custom/setup-checklist.tsx +206 -0
- package/workspace-snapshot/files/apps/gui/components/custom/setup-dashboard.tsx +124 -0
- package/workspace-snapshot/files/apps/gui/components/custom/setup-readonly-sections.tsx +210 -0
- package/workspace-snapshot/files/apps/gui/components/custom/status-badge.tsx +22 -0
- package/workspace-snapshot/files/apps/gui/components/custom/target-repo-config-form.tsx +647 -0
- package/workspace-snapshot/files/apps/gui/components/custom/target-workflow-pr-card.tsx +283 -0
- package/workspace-snapshot/files/apps/gui/components/custom/theme-provider.tsx +11 -0
- package/workspace-snapshot/files/apps/gui/components/custom/theme-toggle.tsx +44 -0
- package/workspace-snapshot/files/apps/gui/components/custom/workflow-install-pending-panel.tsx +116 -0
- package/workspace-snapshot/files/apps/gui/components/ui/badge.tsx +40 -0
- package/workspace-snapshot/files/apps/gui/components/ui/button.tsx +52 -0
- package/workspace-snapshot/files/apps/gui/components/ui/card.tsx +64 -0
- package/workspace-snapshot/files/apps/gui/components/ui/checkbox.tsx +21 -0
- package/workspace-snapshot/files/apps/gui/components/ui/input.tsx +22 -0
- package/workspace-snapshot/files/apps/gui/components/ui/label.tsx +20 -0
- package/workspace-snapshot/files/apps/gui/components/ui/separator.tsx +23 -0
- package/workspace-snapshot/files/apps/gui/components/ui/skeleton.tsx +13 -0
- package/workspace-snapshot/files/apps/gui/components/ui/textarea.tsx +22 -0
- package/workspace-snapshot/files/apps/gui/components.json +21 -0
- package/workspace-snapshot/files/apps/gui/lib/constants/breakpoints.ts +13 -0
- package/workspace-snapshot/files/apps/gui/lib/constants/form.ts +8 -0
- package/workspace-snapshot/files/apps/gui/lib/constants/index.ts +4 -0
- package/workspace-snapshot/files/apps/gui/lib/constants/layout.ts +9 -0
- package/workspace-snapshot/files/apps/gui/lib/constants/spacing.ts +8 -0
- package/workspace-snapshot/files/apps/gui/lib/guided-setup.ts +216 -0
- package/workspace-snapshot/files/apps/gui/lib/setup-json-response.ts +19 -0
- package/workspace-snapshot/files/apps/gui/lib/setup-server.ts +836 -0
- package/workspace-snapshot/files/apps/gui/lib/step6-remote-state.ts +43 -0
- package/workspace-snapshot/files/apps/gui/lib/utils.ts +6 -0
- package/workspace-snapshot/files/apps/gui/lib/vercel-bridge-polling-ui.ts +16 -0
- package/workspace-snapshot/files/apps/gui/lib/verification-state.ts +170 -0
- package/workspace-snapshot/files/apps/gui/next-env.d.ts +6 -0
- package/workspace-snapshot/files/apps/gui/next.config.ts +34 -0
- package/workspace-snapshot/files/apps/gui/postcss.config.mjs +8 -0
- package/workspace-snapshot/files/apps/gui/public/setup/github-token/github-pat-generate-classic.png +0 -0
- package/workspace-snapshot/files/apps/gui/public/setup/github-token/github-pat-generate-new-token.png +0 -0
- package/workspace-snapshot/files/apps/gui/public/setup/github-token/github-pat-verify-email.png +0 -0
- package/workspace-snapshot/files/apps/gui/styles/globals.css +86 -0
- package/workspace-snapshot/files/apps/gui/tsconfig.json +24 -0
- package/workspace-snapshot/files/apps/gui/tweetsodium.d.ts +14 -0
- package/workspace-snapshot/files/docs/architecture/linear-automation-state-machine.md +267 -0
- package/workspace-snapshot/files/docs/decisions/0001-cursor-first-v0.1.md +59 -0
- package/workspace-snapshot/files/docs/decisions/0003-automation-state-machine-and-auto-model-policy.md +65 -0
- package/workspace-snapshot/files/docs/decisions/0004-agent-provider-boundary.md +109 -0
- package/workspace-snapshot/files/docs/design/product-development-harness-gui.md +1024 -0
- package/workspace-snapshot/files/docs/getting-started.md +123 -0
- package/workspace-snapshot/files/docs/gui-local.md +151 -0
- package/workspace-snapshot/files/docs/gui-remote-setup.md +106 -0
- package/workspace-snapshot/files/docs/integration-repair.md +82 -0
- package/workspace-snapshot/files/docs/issue-intake.md +124 -0
- package/workspace-snapshot/files/docs/linear-watcher-setup.md +184 -0
- package/workspace-snapshot/files/docs/milestones/m1-runner-foundation.md +51 -0
- package/workspace-snapshot/files/docs/milestones/m2-planning-phase.md +129 -0
- package/workspace-snapshot/files/docs/milestones/m3-implementation-phase.md +158 -0
- package/workspace-snapshot/files/docs/milestones/m4-handoff-phase.md +122 -0
- package/workspace-snapshot/files/docs/milestones/m5-revision-phase.md +101 -0
- package/workspace-snapshot/files/docs/milestones/m6-merge-phase.md +143 -0
- package/workspace-snapshot/files/docs/milestones/m7-issue-intake.md +72 -0
- package/workspace-snapshot/files/docs/milestones/m8-linear-watcher.md +80 -0
- package/workspace-snapshot/files/docs/npm-packaging-spike.md +52 -0
- package/workspace-snapshot/files/docs/operator-config.md +187 -0
- package/workspace-snapshot/files/docs/p-dev.md +213 -0
- package/workspace-snapshot/files/docs/production-sync-automation.md +176 -0
- package/workspace-snapshot/files/docs/provider-portability.md +131 -0
- package/workspace-snapshot/files/docs/releases/release-process.md +272 -0
- package/workspace-snapshot/files/docs/releases/v0.2.0.md +193 -0
- package/workspace-snapshot/files/docs/releases/v0.3.0.md +188 -0
- package/workspace-snapshot/files/docs/releases/v0.3.1.md +102 -0
- package/workspace-snapshot/files/docs/research/001-manual-run-retrospective.md +64 -0
- package/workspace-snapshot/files/docs/research/002-linear-cursor-integration-smoke-test.md +64 -0
- package/workspace-snapshot/files/docs/research/003-cursor-automation-planning-router-spike.md +104 -0
- package/workspace-snapshot/files/docs/research/README.md +26 -0
- package/workspace-snapshot/files/docs/security.md +190 -0
- package/workspace-snapshot/files/docs/skills/README.md +7 -0
- package/workspace-snapshot/files/docs/skills/skill-architecture.md +197 -0
- package/workspace-snapshot/files/docs/target-repo-branch-setup.md +80 -0
- package/workspace-snapshot/files/evals/README.md +31 -0
- package/workspace-snapshot/files/examples/README.md +32 -0
- package/workspace-snapshot/files/examples/runs/001-target-app-github-link/README.md +49 -0
- package/workspace-snapshot/files/examples/runs/001-target-app-github-link/eval-scorecard.md +63 -0
- package/workspace-snapshot/files/examples/runs/001-target-app-github-link/implementation-plan.md +79 -0
- package/workspace-snapshot/files/examples/runs/001-target-app-github-link/linear-issue.md +74 -0
- package/workspace-snapshot/files/examples/runs/001-target-app-github-link/pr-readiness-report.md +92 -0
- package/workspace-snapshot/files/examples/runs/m5.5-live-sandbox-smoke/README.md +73 -0
- package/workspace-snapshot/files/gpt/issue-intake/custom-gpt-instructions.md +112 -0
- package/workspace-snapshot/files/gpt/issue-intake/knowledge.md +278 -0
- package/workspace-snapshot/files/gpt/issue-intake/setup-guide.md +115 -0
- package/workspace-snapshot/files/gpt/issue-intake/smoke-test.md +119 -0
- package/workspace-snapshot/files/harness.config.json +92 -0
- package/workspace-snapshot/files/harness.config.schema.json +352 -0
- package/workspace-snapshot/files/package-lock.json +3716 -0
- package/workspace-snapshot/files/package.json +60 -0
- package/workspace-snapshot/files/packages/p-dev/LICENSE +21 -0
- package/workspace-snapshot/files/packages/p-dev/README.md +64 -0
- package/workspace-snapshot/files/packages/p-dev/gui.next.config.mjs +13 -0
- package/workspace-snapshot/files/packages/p-dev/package.json +63 -0
- package/workspace-snapshot/files/prompts/issue-intake-chatgpt.md +264 -0
- package/workspace-snapshot/files/scripts/generate-config-schema.ts +16 -0
- package/workspace-snapshot/files/scripts/prepare-p-dev-package.ts +155 -0
- package/workspace-snapshot/files/skills/README.md +7 -0
- package/workspace-snapshot/files/skills/issue-intake/README.md +5 -0
- package/workspace-snapshot/files/src/agents/cursor-provider.ts +109 -0
- package/workspace-snapshot/files/src/agents/index.ts +68 -0
- package/workspace-snapshot/files/src/agents/provider.ts +7 -0
- package/workspace-snapshot/files/src/agents/types.ts +85 -0
- package/workspace-snapshot/files/src/artifacts/events.ts +31 -0
- package/workspace-snapshot/files/src/artifacts/manifest-fields.ts +9 -0
- package/workspace-snapshot/files/src/artifacts/manifest.ts +20 -0
- package/workspace-snapshot/files/src/artifacts/paths.ts +145 -0
- package/workspace-snapshot/files/src/artifacts/redact.ts +50 -0
- package/workspace-snapshot/files/src/artifacts/run-id.ts +4 -0
- package/workspace-snapshot/files/src/artifacts/snapshot.ts +13 -0
- package/workspace-snapshot/files/src/artifacts/summary.ts +116 -0
- package/workspace-snapshot/files/src/cli/commands/diagnose-vercel-bridge.ts +25 -0
- package/workspace-snapshot/files/src/cli/commands/doctor.ts +205 -0
- package/workspace-snapshot/files/src/cli/commands/inspect.ts +46 -0
- package/workspace-snapshot/files/src/cli/commands/operator-init.ts +39 -0
- package/workspace-snapshot/files/src/cli/commands/redact-output.ts +19 -0
- package/workspace-snapshot/files/src/cli/commands/resolve-route.ts +81 -0
- package/workspace-snapshot/files/src/cli/commands/run.ts +53 -0
- package/workspace-snapshot/files/src/cli/commands/sync-production.ts +207 -0
- package/workspace-snapshot/files/src/cli/commands/validate-issue.ts +72 -0
- package/workspace-snapshot/files/src/cli/exit-codes.ts +4 -0
- package/workspace-snapshot/files/src/cli/finalize-exit.ts +9 -0
- package/workspace-snapshot/files/src/cli/program.ts +200 -0
- package/workspace-snapshot/files/src/config/defaults.ts +33 -0
- package/workspace-snapshot/files/src/config/load-config.ts +80 -0
- package/workspace-snapshot/files/src/config/load-dotenv.ts +11 -0
- package/workspace-snapshot/files/src/config/resolve-config.ts +127 -0
- package/workspace-snapshot/files/src/config/schema.ts +129 -0
- package/workspace-snapshot/files/src/config/status-names.ts +63 -0
- package/workspace-snapshot/files/src/config/types.ts +1 -0
- package/workspace-snapshot/files/src/cursor/agent-factory.ts +126 -0
- package/workspace-snapshot/files/src/cursor/errors.ts +18 -0
- package/workspace-snapshot/files/src/cursor/git-result.ts +87 -0
- package/workspace-snapshot/files/src/cursor/model.ts +47 -0
- package/workspace-snapshot/files/src/cursor/revision-git-result.ts +80 -0
- package/workspace-snapshot/files/src/cursor/run-cleanup.ts +30 -0
- package/workspace-snapshot/files/src/cursor/run-observer.ts +367 -0
- package/workspace-snapshot/files/src/cursor/urls.ts +19 -0
- package/workspace-snapshot/files/src/fixture/frontmatter.ts +56 -0
- package/workspace-snapshot/files/src/github/actions-url.ts +13 -0
- package/workspace-snapshot/files/src/github/base-branch.ts +120 -0
- package/workspace-snapshot/files/src/github/check-policy.ts +108 -0
- package/workspace-snapshot/files/src/github/client.ts +796 -0
- package/workspace-snapshot/files/src/github/commit-reachability.ts +184 -0
- package/workspace-snapshot/files/src/github/links.ts +23 -0
- package/workspace-snapshot/files/src/github/merge-result.ts +31 -0
- package/workspace-snapshot/files/src/github/pr-discovery.ts +55 -0
- package/workspace-snapshot/files/src/github/pr-inspector.ts +297 -0
- package/workspace-snapshot/files/src/github/pr-url.ts +23 -0
- package/workspace-snapshot/files/src/github/rate-limit-metadata.ts +105 -0
- package/workspace-snapshot/files/src/gui/configure-health.ts +160 -0
- package/workspace-snapshot/files/src/gui/dev-server-process.ts +213 -0
- package/workspace-snapshot/files/src/gui/port.ts +78 -0
- package/workspace-snapshot/files/src/gui/repo-root.ts +61 -0
- package/workspace-snapshot/files/src/gui/start-configure-stable.ts +139 -0
- package/workspace-snapshot/files/src/gui/start-gui.ts +126 -0
- package/workspace-snapshot/files/src/index.ts +10 -0
- package/workspace-snapshot/files/src/linear/client.ts +49 -0
- package/workspace-snapshot/files/src/linear/comment-card.ts +74 -0
- package/workspace-snapshot/files/src/linear/comments.ts +891 -0
- package/workspace-snapshot/files/src/linear/handoff-comment.ts +19 -0
- package/workspace-snapshot/files/src/linear/issue-query.ts +70 -0
- package/workspace-snapshot/files/src/linear/markers.ts +238 -0
- package/workspace-snapshot/files/src/linear/merge-source-comment.ts +46 -0
- package/workspace-snapshot/files/src/linear/parser.ts +101 -0
- package/workspace-snapshot/files/src/linear/phase-labels.ts +58 -0
- package/workspace-snapshot/files/src/linear/planning-comment.ts +19 -0
- package/workspace-snapshot/files/src/linear/pm-feedback-comment.ts +41 -0
- package/workspace-snapshot/files/src/linear/revision-comment.ts +19 -0
- package/workspace-snapshot/files/src/linear/states.ts +20 -0
- package/workspace-snapshot/files/src/linear/writer.ts +216 -0
- package/workspace-snapshot/files/src/p-dev/browser.ts +26 -0
- package/workspace-snapshot/files/src/p-dev/cli.ts +93 -0
- package/workspace-snapshot/files/src/p-dev/git-object-plumbing.ts +271 -0
- package/workspace-snapshot/files/src/p-dev/launch.ts +173 -0
- package/workspace-snapshot/files/src/p-dev/main.ts +10 -0
- package/workspace-snapshot/files/src/p-dev/next-bin.ts +8 -0
- package/workspace-snapshot/files/src/p-dev/node-version.ts +46 -0
- package/workspace-snapshot/files/src/p-dev/package-paths.ts +47 -0
- package/workspace-snapshot/files/src/p-dev/package-version.ts +63 -0
- package/workspace-snapshot/files/src/p-dev/runtime-mode.ts +28 -0
- package/workspace-snapshot/files/src/p-dev/shutdown.ts +66 -0
- package/workspace-snapshot/files/src/p-dev/workspace-snapshot-digest.ts +50 -0
- package/workspace-snapshot/files/src/p-dev/workspace-snapshot-generator.ts +112 -0
- package/workspace-snapshot/files/src/p-dev/workspace-snapshot-git.ts +221 -0
- package/workspace-snapshot/files/src/p-dev/workspace-snapshot-manifest.ts +336 -0
- package/workspace-snapshot/files/src/p-dev/workspace-snapshot-policy.ts +198 -0
- package/workspace-snapshot/files/src/p-dev/workspace-snapshot-types.ts +59 -0
- package/workspace-snapshot/files/src/p-dev/workspace-snapshot-validation.ts +137 -0
- package/workspace-snapshot/files/src/p-dev/workspace.ts +114 -0
- package/workspace-snapshot/files/src/preview/production-from-merge.ts +143 -0
- package/workspace-snapshot/files/src/preview/urls.ts +28 -0
- package/workspace-snapshot/files/src/preview/vercel-from-pr.ts +123 -0
- package/workspace-snapshot/files/src/prompts/branch-name.ts +22 -0
- package/workspace-snapshot/files/src/prompts/builder.ts +88 -0
- package/workspace-snapshot/files/src/prompts/implementation.md +77 -0
- package/workspace-snapshot/files/src/prompts/integration-repair-builder.ts +65 -0
- package/workspace-snapshot/files/src/prompts/integration-repair.md +111 -0
- package/workspace-snapshot/files/src/prompts/planning.md +64 -0
- package/workspace-snapshot/files/src/prompts/revision-builder.ts +61 -0
- package/workspace-snapshot/files/src/prompts/revision.md +71 -0
- package/workspace-snapshot/files/src/resolver/allowed-repos.ts +18 -0
- package/workspace-snapshot/files/src/resolver/errors.ts +14 -0
- package/workspace-snapshot/files/src/resolver/normalize-repo.ts +32 -0
- package/workspace-snapshot/files/src/resolver/target-repo.ts +118 -0
- package/workspace-snapshot/files/src/runner/building-recovery.ts +26 -0
- package/workspace-snapshot/files/src/runner/dry-run.ts +137 -0
- package/workspace-snapshot/files/src/runner/errors.ts +70 -0
- package/workspace-snapshot/files/src/runner/execution-environment.ts +179 -0
- package/workspace-snapshot/files/src/runner/fixture.ts +25 -0
- package/workspace-snapshot/files/src/runner/idempotency.ts +507 -0
- package/workspace-snapshot/files/src/runner/orchestrator.ts +182 -0
- package/workspace-snapshot/files/src/runner/phase-args.ts +49 -0
- package/workspace-snapshot/files/src/runner/phase-infer.ts +67 -0
- package/workspace-snapshot/files/src/runner/phases/handoff.ts +615 -0
- package/workspace-snapshot/files/src/runner/phases/implementation.ts +617 -0
- package/workspace-snapshot/files/src/runner/phases/integration-repair.ts +613 -0
- package/workspace-snapshot/files/src/runner/phases/merge.ts +1202 -0
- package/workspace-snapshot/files/src/runner/phases/planning.ts +456 -0
- package/workspace-snapshot/files/src/runner/phases/production-sync.ts +308 -0
- package/workspace-snapshot/files/src/runner/phases/revision.ts +795 -0
- package/workspace-snapshot/files/src/runner/preflight.ts +218 -0
- package/workspace-snapshot/files/src/runner/resolve-route.ts +154 -0
- package/workspace-snapshot/files/src/setup/config-builder.ts +117 -0
- package/workspace-snapshot/files/src/setup/config-local-editor.ts +260 -0
- package/workspace-snapshot/files/src/setup/config-writer.ts +173 -0
- package/workspace-snapshot/files/src/setup/control-plane-readiness-server.ts +16 -0
- package/workspace-snapshot/files/src/setup/control-plane-readiness.ts +291 -0
- package/workspace-snapshot/files/src/setup/control-plane-setup-state.ts +60 -0
- package/workspace-snapshot/files/src/setup/control-plane-types.ts +121 -0
- package/workspace-snapshot/files/src/setup/doctor-summary.ts +96 -0
- package/workspace-snapshot/files/src/setup/env-merge.ts +266 -0
- package/workspace-snapshot/files/src/setup/env-writer.ts +179 -0
- package/workspace-snapshot/files/src/setup/first-run-readiness.ts +1431 -0
- package/workspace-snapshot/files/src/setup/generated-instructions.ts +96 -0
- package/workspace-snapshot/files/src/setup/github-dispatch-token.ts +88 -0
- package/workspace-snapshot/files/src/setup/github-remote-provider.ts +983 -0
- package/workspace-snapshot/files/src/setup/github-remote-setup-live.ts +775 -0
- package/workspace-snapshot/files/src/setup/github-repo-slug.ts +31 -0
- package/workspace-snapshot/files/src/setup/github-secret-encryption.ts +16 -0
- package/workspace-snapshot/files/src/setup/github-upload-rate-limit-gate.ts +58 -0
- package/workspace-snapshot/files/src/setup/github-workflow-permissions.ts +174 -0
- package/workspace-snapshot/files/src/setup/gui-view-model.ts +566 -0
- package/workspace-snapshot/files/src/setup/guided-config-form.ts +52 -0
- package/workspace-snapshot/files/src/setup/harness-dispatch-repo.ts +158 -0
- package/workspace-snapshot/files/src/setup/harness-managed-repo-marker.ts +653 -0
- package/workspace-snapshot/files/src/setup/harness-provisioning-context.ts +331 -0
- package/workspace-snapshot/files/src/setup/harness-provisioning-pending-state.ts +282 -0
- package/workspace-snapshot/files/src/setup/harness-repo-provisioning.ts +1656 -0
- package/workspace-snapshot/files/src/setup/harness-secret-fingerprint.ts +51 -0
- package/workspace-snapshot/files/src/setup/harness-secret-setup.ts +439 -0
- package/workspace-snapshot/files/src/setup/harness-snapshot-provisioning-helpers.ts +92 -0
- package/workspace-snapshot/files/src/setup/harness-snapshot-provisioning.ts +1007 -0
- package/workspace-snapshot/files/src/setup/harness-template-identity.ts +151 -0
- package/workspace-snapshot/files/src/setup/harness-workspace-snapshot-loader.ts +105 -0
- package/workspace-snapshot/files/src/setup/linear-setup-apply.ts +270 -0
- package/workspace-snapshot/files/src/setup/linear-setup-client.ts +276 -0
- package/workspace-snapshot/files/src/setup/linear-setup-plan.ts +353 -0
- package/workspace-snapshot/files/src/setup/linear-setup-summary.ts +33 -0
- package/workspace-snapshot/files/src/setup/linear-status-contract.ts +110 -0
- package/workspace-snapshot/files/src/setup/linear-webhook-env-local.ts +104 -0
- package/workspace-snapshot/files/src/setup/linear-webhook-secret.ts +441 -0
- package/workspace-snapshot/files/src/setup/local-apply-actions.ts +524 -0
- package/workspace-snapshot/files/src/setup/local-readiness-checks.ts +334 -0
- package/workspace-snapshot/files/src/setup/mock-git-repository-store.ts +291 -0
- package/workspace-snapshot/files/src/setup/mock-target-workflow-finalization.ts +445 -0
- package/workspace-snapshot/files/src/setup/model-settings.ts +73 -0
- package/workspace-snapshot/files/src/setup/permission-model.ts +79 -0
- package/workspace-snapshot/files/src/setup/redact-secrets.ts +85 -0
- package/workspace-snapshot/files/src/setup/remote-actions.ts +214 -0
- package/workspace-snapshot/files/src/setup/remote-apply-actions.ts +390 -0
- package/workspace-snapshot/files/src/setup/remote-preview-fingerprint.ts +37 -0
- package/workspace-snapshot/files/src/setup/remote-setup-summary.ts +143 -0
- package/workspace-snapshot/files/src/setup/secret-change-token.ts +14 -0
- package/workspace-snapshot/files/src/setup/service-verification.ts +549 -0
- package/workspace-snapshot/files/src/setup/setup-actions.ts +183 -0
- package/workspace-snapshot/files/src/setup/setup-github-auth.ts +15 -0
- package/workspace-snapshot/files/src/setup/setup-state.ts +74 -0
- package/workspace-snapshot/files/src/setup/stale-smoke-repo.ts +141 -0
- package/workspace-snapshot/files/src/setup/sync-downstream-summaries.ts +105 -0
- package/workspace-snapshot/files/src/setup/target-workflow-finalization-lock.ts +95 -0
- package/workspace-snapshot/files/src/setup/target-workflow-finalization-types.ts +55 -0
- package/workspace-snapshot/files/src/setup/target-workflow-finalization.ts +897 -0
- package/workspace-snapshot/files/src/setup/target-workflow-setup.ts +247 -0
- package/workspace-snapshot/files/src/setup/test-only-provisioning-provider.ts +51 -0
- package/workspace-snapshot/files/src/setup/test-only-remote-setup-provider.ts +51 -0
- package/workspace-snapshot/files/src/setup/tweetsodium.d.ts +14 -0
- package/workspace-snapshot/files/src/setup/vercel-bridge-diagnostics.ts +510 -0
- package/workspace-snapshot/files/src/setup/vercel-bridge-options.ts +160 -0
- package/workspace-snapshot/files/src/setup/vercel-bridge-readiness.ts +150 -0
- package/workspace-snapshot/files/src/setup/vercel-bridge-redeploy-poll.ts +744 -0
- package/workspace-snapshot/files/src/setup/vercel-bridge-redeploy-state.ts +46 -0
- package/workspace-snapshot/files/src/setup/vercel-bridge-structured-log.ts +86 -0
- package/workspace-snapshot/files/src/setup/vercel-bridge-verification.ts +63 -0
- package/workspace-snapshot/files/src/setup/vercel-production-redeploy.ts +298 -0
- package/workspace-snapshot/files/src/setup/vercel-setup-apply.ts +1058 -0
- package/workspace-snapshot/files/src/setup/vercel-setup-client.ts +695 -0
- package/workspace-snapshot/files/src/setup/vercel-setup-plan.ts +672 -0
- package/workspace-snapshot/files/src/setup/vercel-setup-summary.ts +42 -0
- package/workspace-snapshot/files/src/setup/vercel-webhook-probe.ts +161 -0
- package/workspace-snapshot/files/src/setup/workflow-install-merge-errors.ts +166 -0
- package/workspace-snapshot/files/src/types/parsed-issue.ts +8 -0
- package/workspace-snapshot/files/src/types/run.ts +157 -0
- package/workspace-snapshot/files/src/validate/constants.ts +2 -0
- package/workspace-snapshot/files/src/validate/issue.ts +286 -0
- package/workspace-snapshot/files/src/validate/report.ts +68 -0
- package/workspace-snapshot/files/src/validate/types.ts +29 -0
- package/workspace-snapshot/files/src/webhook/dispatch-github.ts +44 -0
- package/workspace-snapshot/files/src/webhook/dispatch-statuses.ts +26 -0
- package/workspace-snapshot/files/src/webhook/extract-issue-key.ts +49 -0
- package/workspace-snapshot/files/src/webhook/filter.ts +41 -0
- package/workspace-snapshot/files/src/webhook/handle-linear-webhook.ts +201 -0
- package/workspace-snapshot/files/src/webhook/parse-linear-issue-event.ts +105 -0
- package/workspace-snapshot/files/src/webhook/redact-log.ts +26 -0
- package/workspace-snapshot/files/src/webhook/types.ts +75 -0
- package/workspace-snapshot/files/src/webhook/verify.ts +68 -0
- package/workspace-snapshot/files/src/webhook/workflow-command.ts +10 -0
- package/workspace-snapshot/files/src/workflow/dispatch-metadata.ts +59 -0
- package/workspace-snapshot/files/src/workflow/manifest-summary.ts +57 -0
- package/workspace-snapshot/files/src/workflow/production-sync-dispatch.ts +65 -0
- package/workspace-snapshot/files/src/workflow/summarize-manifest.ts +20 -0
- package/workspace-snapshot/files/src/workflow/validate.ts +43 -0
- package/workspace-snapshot/files/src/workflow/write-dispatch-metadata.ts +8 -0
- package/workspace-snapshot/files/templates/eval-scorecard.md +54 -0
- package/workspace-snapshot/files/templates/implementation-plan.md +59 -0
- package/workspace-snapshot/files/templates/linear-issue.md +53 -0
- package/workspace-snapshot/files/templates/pr-readiness-report.md +57 -0
- package/workspace-snapshot/files/tests/agents/cursor-provider.test.ts +238 -0
- package/workspace-snapshot/files/tests/artifacts/manifest.test.ts +54 -0
- package/workspace-snapshot/files/tests/artifacts/redact.test.ts +47 -0
- package/workspace-snapshot/files/tests/cli/doctor.test.ts +120 -0
- package/workspace-snapshot/files/tests/cli/finalize-exit.test.ts +28 -0
- package/workspace-snapshot/files/tests/cli/operator-init.test.ts +146 -0
- package/workspace-snapshot/files/tests/cli/sync-production-dispatch.test.ts +103 -0
- package/workspace-snapshot/files/tests/cli/validate-issue.test.ts +99 -0
- package/workspace-snapshot/files/tests/config/load-dotenv.test.ts +64 -0
- package/workspace-snapshot/files/tests/config/resolve-config.test.ts +273 -0
- package/workspace-snapshot/files/tests/config/schema.test.ts +107 -0
- package/workspace-snapshot/files/tests/cursor/agent-factory.test.ts +217 -0
- package/workspace-snapshot/files/tests/cursor/git-result.test.ts +77 -0
- package/workspace-snapshot/files/tests/cursor/model.test.ts +108 -0
- package/workspace-snapshot/files/tests/cursor/revision-git-result.test.ts +68 -0
- package/workspace-snapshot/files/tests/cursor/run-cleanup.test.ts +52 -0
- package/workspace-snapshot/files/tests/cursor/run-observer.test.ts +280 -0
- package/workspace-snapshot/files/tests/cursor/urls.test.ts +27 -0
- package/workspace-snapshot/files/tests/fixtures/config/minimal.json +16 -0
- package/workspace-snapshot/files/tests/fixtures/github/pr-4-vercel-comment.json +10 -0
- package/workspace-snapshot/files/tests/fixtures/issues/broad-for-direct-impl.md +28 -0
- package/workspace-snapshot/files/tests/fixtures/issues/context-target-repo.md +21 -0
- package/workspace-snapshot/files/tests/fixtures/issues/explicit-target-repo.md +21 -0
- package/workspace-snapshot/files/tests/fixtures/issues/gpt-broad-example.md +35 -0
- package/workspace-snapshot/files/tests/fixtures/issues/gpt-narrow-example.md +30 -0
- package/workspace-snapshot/files/tests/fixtures/issues/invalid-missing-task.md +16 -0
- package/workspace-snapshot/files/tests/fixtures/issues/invalid-no-ac-bullets.md +20 -0
- package/workspace-snapshot/files/tests/fixtures/issues/missing-acceptance-criteria.md +17 -0
- package/workspace-snapshot/files/tests/fixtures/issues/unknown-repo.md +20 -0
- package/workspace-snapshot/files/tests/fixtures/issues/valid-minimal.md +20 -0
- package/workspace-snapshot/files/tests/fixtures/issues/valid-project-only.md +17 -0
- package/workspace-snapshot/files/tests/fixtures/issues/valid-target-app.md +31 -0
- package/workspace-snapshot/files/tests/fixtures/linear/implementation-comment-wes-13.md +16 -0
- package/workspace-snapshot/files/tests/fixtures/linear/pm-feedback-wes-13.md +3 -0
- package/workspace-snapshot/files/tests/fixtures/webhook/issue-building-to-pr-open.json +27 -0
- package/workspace-snapshot/files/tests/fixtures/webhook/issue-pm-review.json +27 -0
- package/workspace-snapshot/files/tests/fixtures/webhook/issue-ready-for-planning.json +27 -0
- package/workspace-snapshot/files/tests/fixtures/webhook/issue-title-only-update.json +25 -0
- package/workspace-snapshot/files/tests/fixtures/workflows/harness-auto-runner-with-production-sync.yml +561 -0
- package/workspace-snapshot/files/tests/fixtures/workflows/trigger-harness-production-sync.yml +31 -0
- package/workspace-snapshot/files/tests/github/actions-url.test.ts +45 -0
- package/workspace-snapshot/files/tests/github/base-branch.test.ts +156 -0
- package/workspace-snapshot/files/tests/github/check-policy.test.ts +59 -0
- package/workspace-snapshot/files/tests/github/client.test.ts +226 -0
- package/workspace-snapshot/files/tests/github/commit-reachability.test.ts +148 -0
- package/workspace-snapshot/files/tests/github/merge-result.test.ts +26 -0
- package/workspace-snapshot/files/tests/github/pr-discovery.test.ts +55 -0
- package/workspace-snapshot/files/tests/github/pr-inspector.test.ts +393 -0
- package/workspace-snapshot/files/tests/github/pr-url.test.ts +30 -0
- package/workspace-snapshot/files/tests/github/rate-limit-metadata.test.ts +92 -0
- package/workspace-snapshot/files/tests/gui/configure-fix-loop.test.ts +460 -0
- package/workspace-snapshot/files/tests/gui/configure-health.test.ts +67 -0
- package/workspace-snapshot/files/tests/gui/design-system.test.ts +86 -0
- package/workspace-snapshot/files/tests/gui/dev-server-process.test.ts +22 -0
- package/workspace-snapshot/files/tests/gui/guided-setup.test.ts +186 -0
- package/workspace-snapshot/files/tests/gui/m6-configure-boundaries.test.ts +884 -0
- package/workspace-snapshot/files/tests/gui/packaged-harness-cloud-secrets-routes.test.ts +287 -0
- package/workspace-snapshot/files/tests/gui/packaged-harness-provisioning-routes.test.ts +212 -0
- package/workspace-snapshot/files/tests/gui/packaged-harness-target-workflow-routes.test.ts +227 -0
- package/workspace-snapshot/files/tests/gui/port.test.ts +74 -0
- package/workspace-snapshot/files/tests/gui/repo-root.test.ts +60 -0
- package/workspace-snapshot/files/tests/gui/setup-api.test.ts +181 -0
- package/workspace-snapshot/files/tests/gui/setup-json-response.test.ts +34 -0
- package/workspace-snapshot/files/tests/gui/step6-remote-state.test.ts +75 -0
- package/workspace-snapshot/files/tests/gui/sync-downstream-summaries.test.ts +198 -0
- package/workspace-snapshot/files/tests/gui/vercel-bridge-polling-ui.test.ts +25 -0
- package/workspace-snapshot/files/tests/gui/verification-state.test.ts +172 -0
- package/workspace-snapshot/files/tests/linear/comment-assertions.ts +24 -0
- package/workspace-snapshot/files/tests/linear/comment-card.test.ts +73 -0
- package/workspace-snapshot/files/tests/linear/comments.test.ts +185 -0
- package/workspace-snapshot/files/tests/linear/handoff-comment.test.ts +34 -0
- package/workspace-snapshot/files/tests/linear/markers.test.ts +97 -0
- package/workspace-snapshot/files/tests/linear/merge-comment.test.ts +61 -0
- package/workspace-snapshot/files/tests/linear/merge-source-comment.test.ts +49 -0
- package/workspace-snapshot/files/tests/linear/parser.test.ts +83 -0
- package/workspace-snapshot/files/tests/linear/planning-comment.test.ts +29 -0
- package/workspace-snapshot/files/tests/linear/pm-feedback-comment.test.ts +63 -0
- package/workspace-snapshot/files/tests/p-dev/browser.test.ts +38 -0
- package/workspace-snapshot/files/tests/p-dev/cli.test.ts +39 -0
- package/workspace-snapshot/files/tests/p-dev/git-object-plumbing.test.ts +139 -0
- package/workspace-snapshot/files/tests/p-dev/launch.test.ts +110 -0
- package/workspace-snapshot/files/tests/p-dev/next-bin.test.ts +16 -0
- package/workspace-snapshot/files/tests/p-dev/node-version.test.ts +20 -0
- package/workspace-snapshot/files/tests/p-dev/package-manifest.test.ts +47 -0
- package/workspace-snapshot/files/tests/p-dev/package-packed-artifact.test.ts +130 -0
- package/workspace-snapshot/files/tests/p-dev/package-paths.test.ts +43 -0
- package/workspace-snapshot/files/tests/p-dev/package-version.test.ts +55 -0
- package/workspace-snapshot/files/tests/p-dev/packaged-workspace-setup.test.ts +87 -0
- package/workspace-snapshot/files/tests/p-dev/runtime-mode.test.ts +18 -0
- package/workspace-snapshot/files/tests/p-dev/workspace-snapshot-digest.test.ts +61 -0
- package/workspace-snapshot/files/tests/p-dev/workspace-snapshot-generator.test.ts +76 -0
- package/workspace-snapshot/files/tests/p-dev/workspace-snapshot-policy.test.ts +35 -0
- package/workspace-snapshot/files/tests/p-dev/workspace-snapshot-validation.test.ts +158 -0
- package/workspace-snapshot/files/tests/p-dev/workspace.test.ts +80 -0
- package/workspace-snapshot/files/tests/preview/production-from-merge.test.ts +39 -0
- package/workspace-snapshot/files/tests/preview/vercel-from-pr.test.ts +120 -0
- package/workspace-snapshot/files/tests/prompts/builder.test.ts +58 -0
- package/workspace-snapshot/files/tests/prompts/implementation-builder.test.ts +76 -0
- package/workspace-snapshot/files/tests/prompts/issue-intake-chatgpt.test.ts +105 -0
- package/workspace-snapshot/files/tests/resolver/allowed-repos.test.ts +44 -0
- package/workspace-snapshot/files/tests/resolver/normalize-repo.test.ts +44 -0
- package/workspace-snapshot/files/tests/resolver/target-repo.test.ts +91 -0
- package/workspace-snapshot/files/tests/runner/building-recovery.test.ts +30 -0
- package/workspace-snapshot/files/tests/runner/dry-run.test.ts +128 -0
- package/workspace-snapshot/files/tests/runner/execution-environment.test.ts +114 -0
- package/workspace-snapshot/files/tests/runner/handoff.test.ts +312 -0
- package/workspace-snapshot/files/tests/runner/idempotency-handoff.test.ts +170 -0
- package/workspace-snapshot/files/tests/runner/idempotency-implementation.test.ts +143 -0
- package/workspace-snapshot/files/tests/runner/idempotency-merge.test.ts +118 -0
- package/workspace-snapshot/files/tests/runner/idempotency-revision.test.ts +111 -0
- package/workspace-snapshot/files/tests/runner/idempotency.test.ts +83 -0
- package/workspace-snapshot/files/tests/runner/implementation.test.ts +196 -0
- package/workspace-snapshot/files/tests/runner/integration-repair.test.ts +263 -0
- package/workspace-snapshot/files/tests/runner/merge.test.ts +760 -0
- package/workspace-snapshot/files/tests/runner/orchestrator.test.ts +301 -0
- package/workspace-snapshot/files/tests/runner/phase-args.test.ts +38 -0
- package/workspace-snapshot/files/tests/runner/planning.test.ts +160 -0
- package/workspace-snapshot/files/tests/runner/resolve-route.test.ts +249 -0
- package/workspace-snapshot/files/tests/runner/revision.test.ts +326 -0
- package/workspace-snapshot/files/tests/setup/config-builder.test.ts +136 -0
- package/workspace-snapshot/files/tests/setup/config-local-editor.test.ts +164 -0
- package/workspace-snapshot/files/tests/setup/connect-services-credential-availability.test.ts +151 -0
- package/workspace-snapshot/files/tests/setup/connect-services-env.test.ts +84 -0
- package/workspace-snapshot/files/tests/setup/control-plane-readiness.test.ts +59 -0
- package/workspace-snapshot/files/tests/setup/doctor-summary.test.ts +48 -0
- package/workspace-snapshot/files/tests/setup/env-merge.test.ts +177 -0
- package/workspace-snapshot/files/tests/setup/env-writer.test.ts +97 -0
- package/workspace-snapshot/files/tests/setup/first-run-readiness.test.ts +1099 -0
- package/workspace-snapshot/files/tests/setup/generated-instructions.test.ts +48 -0
- package/workspace-snapshot/files/tests/setup/github-dispatch-token.test.ts +111 -0
- package/workspace-snapshot/files/tests/setup/github-remote-provider.test.ts +66 -0
- package/workspace-snapshot/files/tests/setup/github-remote-setup-live.test.ts +59 -0
- package/workspace-snapshot/files/tests/setup/github-workflow-permissions.test.ts +71 -0
- package/workspace-snapshot/files/tests/setup/gui-remote-storage.test.ts +43 -0
- package/workspace-snapshot/files/tests/setup/gui-view-model.test.ts +251 -0
- package/workspace-snapshot/files/tests/setup/guided-config-form.test.ts +54 -0
- package/workspace-snapshot/files/tests/setup/harness-dispatch-repo.test.ts +105 -0
- package/workspace-snapshot/files/tests/setup/harness-managed-repo-marker.test.ts +141 -0
- package/workspace-snapshot/files/tests/setup/harness-provisioning-context.test.ts +89 -0
- package/workspace-snapshot/files/tests/setup/harness-provisioning-pending-state.test.ts +88 -0
- package/workspace-snapshot/files/tests/setup/harness-repo-provisioning.test.ts +897 -0
- package/workspace-snapshot/files/tests/setup/harness-secret-setup.test.ts +255 -0
- package/workspace-snapshot/files/tests/setup/harness-snapshot-default-branch.test.ts +73 -0
- package/workspace-snapshot/files/tests/setup/harness-snapshot-description-finalization.test.ts +136 -0
- package/workspace-snapshot/files/tests/setup/harness-snapshot-marker-tree.test.ts +61 -0
- package/workspace-snapshot/files/tests/setup/harness-snapshot-reconciliation.test.ts +132 -0
- package/workspace-snapshot/files/tests/setup/harness-snapshot-structured-errors.test.ts +137 -0
- package/workspace-snapshot/files/tests/setup/harness-snapshot-upload-rate-limit.test.ts +105 -0
- package/workspace-snapshot/files/tests/setup/linear-setup-apply.test.ts +131 -0
- package/workspace-snapshot/files/tests/setup/linear-setup-plan.test.ts +106 -0
- package/workspace-snapshot/files/tests/setup/linear-webhook-env-local.test.ts +95 -0
- package/workspace-snapshot/files/tests/setup/linear-webhook-secret.test.ts +256 -0
- package/workspace-snapshot/files/tests/setup/live-provisioning-error-preservation.test.ts +98 -0
- package/workspace-snapshot/files/tests/setup/local-apply-actions.test.ts +352 -0
- package/workspace-snapshot/files/tests/setup/local-readiness-checks.test.ts +175 -0
- package/workspace-snapshot/files/tests/setup/model-settings.test.ts +52 -0
- package/workspace-snapshot/files/tests/setup/packaged-provisioning-permissions.test.ts +41 -0
- package/workspace-snapshot/files/tests/setup/permission-model.test.ts +38 -0
- package/workspace-snapshot/files/tests/setup/redact-secrets.test.ts +78 -0
- package/workspace-snapshot/files/tests/setup/remote-actions.test.ts +45 -0
- package/workspace-snapshot/files/tests/setup/remote-apply-actions.test.ts +302 -0
- package/workspace-snapshot/files/tests/setup/remote-preview-fingerprint.test.ts +121 -0
- package/workspace-snapshot/files/tests/setup/service-verification.test.ts +312 -0
- package/workspace-snapshot/files/tests/setup/setup-actions.test.ts +96 -0
- package/workspace-snapshot/files/tests/setup/setup-form-defaults.test.ts +35 -0
- package/workspace-snapshot/files/tests/setup/setup-server-remote.test.ts +90 -0
- package/workspace-snapshot/files/tests/setup/stale-smoke-repo.test.ts +84 -0
- package/workspace-snapshot/files/tests/setup/step6-automatic-apply-outcome.test.ts +303 -0
- package/workspace-snapshot/files/tests/setup/target-workflow-finalization-lock.test.ts +51 -0
- package/workspace-snapshot/files/tests/setup/target-workflow-finalization-step-github.test.ts +435 -0
- package/workspace-snapshot/files/tests/setup/target-workflow-finalization.test.ts +222 -0
- package/workspace-snapshot/files/tests/setup/target-workflow-setup.test.ts +62 -0
- package/workspace-snapshot/files/tests/setup/test-workspace-snapshot-fixture.ts +100 -0
- package/workspace-snapshot/files/tests/setup/vercel-bridge-diagnostics.test.ts +429 -0
- package/workspace-snapshot/files/tests/setup/vercel-bridge-options.test.ts +135 -0
- package/workspace-snapshot/files/tests/setup/vercel-bridge-preview-fingerprint.test.ts +52 -0
- package/workspace-snapshot/files/tests/setup/vercel-bridge-redeploy-poll.test.ts +582 -0
- package/workspace-snapshot/files/tests/setup/vercel-bridge-structured-log.test.ts +45 -0
- package/workspace-snapshot/files/tests/setup/vercel-bridge-verification.test.ts +39 -0
- package/workspace-snapshot/files/tests/setup/vercel-endpoint-reachability.test.ts +60 -0
- package/workspace-snapshot/files/tests/setup/vercel-production-redeploy.test.ts +184 -0
- package/workspace-snapshot/files/tests/setup/vercel-setup-apply.test.ts +1282 -0
- package/workspace-snapshot/files/tests/setup/vercel-setup-client.test.ts +395 -0
- package/workspace-snapshot/files/tests/setup/vercel-setup-plan.test.ts +261 -0
- package/workspace-snapshot/files/tests/setup/vercel-webhook-probe.test.ts +78 -0
- package/workspace-snapshot/files/tests/setup/workflow-install-merge-errors.test.ts +38 -0
- package/workspace-snapshot/files/tests/validate-issue/report.test.ts +56 -0
- package/workspace-snapshot/files/tests/validate-issue/validate-issue.test.ts +202 -0
- package/workspace-snapshot/files/tests/webhook/dispatch-github.test.ts +193 -0
- package/workspace-snapshot/files/tests/webhook/extract-issue-key.test.ts +65 -0
- package/workspace-snapshot/files/tests/webhook/filter.test.ts +132 -0
- package/workspace-snapshot/files/tests/webhook/harness-auto-runner-workflow.test.ts +169 -0
- package/workspace-snapshot/files/tests/webhook/parse-linear-issue-event.test.ts +89 -0
- package/workspace-snapshot/files/tests/webhook/verify.test.ts +125 -0
- package/workspace-snapshot/files/tests/workflow/dispatch-metadata.test.ts +38 -0
- package/workspace-snapshot/files/tests/workflow/manifest-summary.test.ts +58 -0
- package/workspace-snapshot/files/tests/workflow/production-sync-dispatch.test.ts +101 -0
- package/workspace-snapshot/files/tests/workflow/validate.test.ts +70 -0
- package/workspace-snapshot/files/tests/workflow/workflow-shell-safety.test.ts +92 -0
- package/workspace-snapshot/files/tsconfig.json +22 -0
- package/workspace-snapshot/files/vercel.json +10 -0
- package/workspace-snapshot/files/vitest.config.ts +15 -0
- package/workspace-snapshot/manifest.json +4911 -0
- package/gui/.next/server/chunks/120.js +0 -81
- package/gui/.next/static/css/cc2acc71c03f3b4b.css +0 -3
- /package/gui/.next/static/{7x8X_k4tESvkyqRnNCC9E → ZGJuemeaiW4yT7CTlmjdG}/_buildManifest.js +0 -0
- /package/gui/.next/static/{7x8X_k4tESvkyqRnNCC9E → ZGJuemeaiW4yT7CTlmjdG}/_ssgManifest.js +0 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
# Getting started
|
|
2
|
+
|
|
3
|
+
Operator guide for the Product Development Harness.
|
|
4
|
+
|
|
5
|
+
**Current release:** v0.3.1 — see [`docs/releases/v0.3.1.md`](releases/v0.3.1.md)
|
|
6
|
+
|
|
7
|
+
## Choose your path
|
|
8
|
+
|
|
9
|
+
### Product managers — use p-dev (recommended)
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npx --yes p-dev-harness@0.3.1
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
- Node.js **22+** required
|
|
16
|
+
- Starts the guided Configure GUI
|
|
17
|
+
- Stores operator state under `~/.p-dev` (or `P_DEV_HOME` / `--workspace`)
|
|
18
|
+
- macOS validated for browser auto-launch; use `--no-open` elsewhere
|
|
19
|
+
|
|
20
|
+
Full guide: [`docs/p-dev.md`](p-dev.md)
|
|
21
|
+
|
|
22
|
+
### Contributors — clone the source repository
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
git clone https://github.com/weston-uribe/agentic-product-development-harness.git
|
|
26
|
+
cd agentic-product-development-harness
|
|
27
|
+
npm ci
|
|
28
|
+
npm run build
|
|
29
|
+
npm test
|
|
30
|
+
npm run harness:configure
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
GitHub Codespaces is supported for source-based development. See [`docs/gui-local.md`](gui-local.md) and [`docs/gui-remote-setup.md`](gui-remote-setup.md).
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Prerequisites
|
|
38
|
+
|
|
39
|
+
| Requirement | Notes |
|
|
40
|
+
|-------------|-------|
|
|
41
|
+
| Node.js 22+ | Required for source and `p-dev` |
|
|
42
|
+
| Linear account | Team with harness workflow statuses |
|
|
43
|
+
| GitHub account | Harness repo, target repos, and tokens |
|
|
44
|
+
| Cursor API key | For live cloud agent phases |
|
|
45
|
+
| Vercel account | For webhook bridge (cloud automation) |
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
## Source repository setup
|
|
50
|
+
|
|
51
|
+
### Configuration
|
|
52
|
+
|
|
53
|
+
Use private operator config — see [`docs/operator-config.md`](operator-config.md).
|
|
54
|
+
|
|
55
|
+
**Recommended local setup:**
|
|
56
|
+
|
|
57
|
+
1. `npm ci && npm run build`
|
|
58
|
+
2. `npm run harness:configure` — guided Configure GUI
|
|
59
|
+
3. Or `npm run harness:operator:init` — CLI scaffold
|
|
60
|
+
4. `npm run harness:doctor` — validates config
|
|
61
|
+
5. Base64-encode `.harness/config.local.json` for GitHub Actions secret `HARNESS_CONFIG_JSON_B64`
|
|
62
|
+
|
|
63
|
+
### Where secrets go
|
|
64
|
+
|
|
65
|
+
| Secret class | Store here |
|
|
66
|
+
|--------------|------------|
|
|
67
|
+
| `LINEAR_API_KEY`, `CURSOR_API_KEY`, `HARNESS_GITHUB_TOKEN` | GitHub Actions secrets |
|
|
68
|
+
| `LINEAR_WEBHOOK_SECRET`, `GITHUB_DISPATCH_TOKEN` | Vercel production env |
|
|
69
|
+
| Local dev tokens | Untracked `.env.local` |
|
|
70
|
+
|
|
71
|
+
Full matrix: [`docs/security.md`](security.md)
|
|
72
|
+
|
|
73
|
+
---
|
|
74
|
+
|
|
75
|
+
## Local validation before live automation
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
npm run harness:validate-issue -- --file draft.md --intended-phase planning
|
|
79
|
+
npm run harness:run -- --issue WES-FIXTURE --dry-run --fixture tests/fixtures/issues/valid-target-app.md
|
|
80
|
+
npm run harness:doctor
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Live setup (production automation)
|
|
86
|
+
|
|
87
|
+
| Component | Guide |
|
|
88
|
+
|-----------|-------|
|
|
89
|
+
| Guided Configure GUI | [`docs/gui-local.md`](gui-local.md), [`docs/gui-remote-setup.md`](gui-remote-setup.md) |
|
|
90
|
+
| p-dev packaged path | [`docs/p-dev.md`](p-dev.md) |
|
|
91
|
+
| Linear webhook + Vercel bridge | [`docs/linear-watcher-setup.md`](linear-watcher-setup.md) |
|
|
92
|
+
| Target repo branch strategy | [`docs/target-repo-branch-setup.md`](target-repo-branch-setup.md) |
|
|
93
|
+
| Production sync | [`docs/production-sync-automation.md`](production-sync-automation.md) |
|
|
94
|
+
| Security baseline | [`docs/security.md`](security.md) |
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## PM issue intake
|
|
99
|
+
|
|
100
|
+
1. Copy [`prompts/issue-intake-chatgpt.md`](../prompts/issue-intake-chatgpt.md) into ChatGPT, **or**
|
|
101
|
+
2. Use [`.agents/skills/issue-intake/SKILL.md`](../.agents/skills/issue-intake/SKILL.md) in Cursor
|
|
102
|
+
3. Validate: `npm run harness:validate-issue`
|
|
103
|
+
|
|
104
|
+
---
|
|
105
|
+
|
|
106
|
+
## What not to do
|
|
107
|
+
|
|
108
|
+
- Do not commit secrets
|
|
109
|
+
- Do not assume provider agnosticism — Cursor is the only implemented agent provider
|
|
110
|
+
- Do not create git tags or GitHub releases from doc PRs — follow [`docs/releases/release-process.md`](releases/release-process.md)
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## Troubleshooting
|
|
115
|
+
|
|
116
|
+
| Symptom | Check |
|
|
117
|
+
|---------|-------|
|
|
118
|
+
| `p-dev` ENOSPC from npm cache | Clear npm cache; do not delete `~/.p-dev` unless resetting operator state |
|
|
119
|
+
| Browser does not open | Use `--no-open` and open printed URL |
|
|
120
|
+
| `validate-issue` fails | Compare draft to [`templates/linear-issue.md`](../templates/linear-issue.md) |
|
|
121
|
+
| Auto-run does not trigger | Vercel env vars, Linear webhook URL, dispatch token scope |
|
|
122
|
+
|
|
123
|
+
Architecture: [`ARCHITECTURE.md`](../ARCHITECTURE.md) · Agents: [`AGENTS.md`](../AGENTS.md)
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
# Local GUI
|
|
2
|
+
|
|
3
|
+
Launch the Product Development Harness GUI for guided Settings / Configure setup.
|
|
4
|
+
|
|
5
|
+
**v0.3.1 paths:**
|
|
6
|
+
|
|
7
|
+
- **Product managers (packaged):** `npx --yes p-dev-harness@0.3.1` — see [`docs/p-dev.md`](p-dev.md)
|
|
8
|
+
- **Contributors (source):** `npm run harness:configure` — this document
|
|
9
|
+
|
|
10
|
+
The guided Configure flow has **seven steps** before the completion screen. See [`docs/gui-remote-setup.md`](gui-remote-setup.md) for remote setup and Step 7 workflow finalization.
|
|
11
|
+
|
|
12
|
+
## Canonical local testing (recommended)
|
|
13
|
+
|
|
14
|
+
Run the stable dev server in **your own terminal** (not a read-only agent terminal):
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
npm run harness:configure:stable
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Open:
|
|
21
|
+
|
|
22
|
+
**http://localhost:3000/settings/configure**
|
|
23
|
+
|
|
24
|
+
This is the operator-facing convention for M6 Configure GUI testing. `localhost` and `127.0.0.1` are equivalent loopback hosts, but this harness standardizes on **`localhost:3000`**.
|
|
25
|
+
|
|
26
|
+
`harness:configure:stable` will:
|
|
27
|
+
|
|
28
|
+
1. Stop stale Next.js GUI dev servers on ports **3000** and **3001** when they look like harness GUI processes.
|
|
29
|
+
2. Refuse to start if port **3000** is occupied by a **non-GUI** process (clear error instead of switching ports).
|
|
30
|
+
3. Start Next.js dev on **`localhost:3000`** without silently falling back to another port.
|
|
31
|
+
4. Run a lightweight health check on `/settings/configure` and verify Next.js CSS assets load.
|
|
32
|
+
5. If the page would render unstyled (missing `/_next/static` CSS), delete only **`apps/gui/.next`** and restart **once**.
|
|
33
|
+
|
|
34
|
+
### If the page looks unstyled
|
|
35
|
+
|
|
36
|
+
1. Stop the dev server (`Ctrl+C`).
|
|
37
|
+
2. Run `npm run harness:configure:stable` again — it cleans `apps/gui/.next` when the health check detects broken static assets.
|
|
38
|
+
3. Hard-refresh the browser on **http://localhost:3000/settings/configure**.
|
|
39
|
+
|
|
40
|
+
Do **not** delete source files, `.env`, `.env.local`, `.harness/config.local.json`, backups, or secrets.
|
|
41
|
+
|
|
42
|
+
## GitHub Codespaces
|
|
43
|
+
|
|
44
|
+
Keep the dev server running in one terminal (do not Ctrl+C it). In another terminal, verify:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
curl -I http://127.0.0.1:3000/settings/configure
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
That should return `HTTP/1.1 200 OK`.
|
|
51
|
+
|
|
52
|
+
Start the GUI for port forwarding:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
npm run harness:configure -- --host 0.0.0.0 --port 3000
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
Open the app from the **Ports** panel (globe icon on port **3000**), not by guessing the URL. Set port visibility to **Public** if the forwarded link fails. Append `/settings/configure` if needed.
|
|
59
|
+
|
|
60
|
+
Next.js 15 blocks unknown dev origins by default. This repo allows `*.app.github.dev` in `apps/gui/next.config.ts` (`allowedDevOrigins`). Restart the dev server after changing that file.
|
|
61
|
+
|
|
62
|
+
## Quick start (auto port fallback)
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
npm run harness:gui
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
Alias:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
npm run harness:configure
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
Default bind: `http://localhost:3000/settings/configure`
|
|
75
|
+
|
|
76
|
+
If port `3000` is busy, the quick launcher auto-picks the next available port. For repeatable operator testing, prefer **`npm run harness:configure:stable`** instead.
|
|
77
|
+
|
|
78
|
+
## Port configuration
|
|
79
|
+
|
|
80
|
+
- Stable canonical server: `npm run harness:configure:stable` (fixed `localhost:3000`)
|
|
81
|
+
- CLI override (quick launcher): `npm run harness:gui -- --port 3333`
|
|
82
|
+
- Env: `HARNESS_GUI_PORT=3333 npm run harness:gui`
|
|
83
|
+
- Host: `HARNESS_GUI_HOST=localhost` (default)
|
|
84
|
+
- Repo root: `HARNESS_REPO_ROOT` is set automatically by GUI launchers; setup files are resolved from the harness repo root, not `apps/gui`.
|
|
85
|
+
|
|
86
|
+
## Scope (Milestone 4+)
|
|
87
|
+
|
|
88
|
+
The GUI is local-first and supports guided local setup:
|
|
89
|
+
|
|
90
|
+
- setup state summary
|
|
91
|
+
- guided environment and target-repo forms
|
|
92
|
+
- redacted preview before apply
|
|
93
|
+
- explicit confirmation before local file writes
|
|
94
|
+
- apply `.env.local` and `.harness/config.local.json` through setup core only
|
|
95
|
+
- missing setup steps and local/static doctor summary
|
|
96
|
+
|
|
97
|
+
Ordinary guided steps do **not** write GitHub Actions secrets, target repo workflows, cloud workflow dispatches, or harness phases without explicit confirmation. Confirmation-gated remote setup is integrated into the seven-step flow:
|
|
98
|
+
|
|
99
|
+
- **Step 2:** Linear workspace setup (confirmation-gated)
|
|
100
|
+
- **Step 3:** Vercel webhook bridge setup (confirmation-gated)
|
|
101
|
+
- **Step 6:** harness repo GitHub Actions secret writes (confirmation-gated)
|
|
102
|
+
- **Step 7:** target workflow install branch/PR creation and guarded finalization (confirmation-gated)
|
|
103
|
+
|
|
104
|
+
The advanced **Remote setup** section also exposes the same remote actions — see [`docs/gui-remote-setup.md`](gui-remote-setup.md).
|
|
105
|
+
|
|
106
|
+
## Guided local setup flow
|
|
107
|
+
|
|
108
|
+
1. Open **Settings / Configure**.
|
|
109
|
+
2. Edit environment fields (`.env.local`) and target repo config fields (`.harness/config.local.json`).
|
|
110
|
+
3. Click **Generate preview** — required before apply.
|
|
111
|
+
4. Review redacted `.env.local` preview and config JSON preview.
|
|
112
|
+
5. Check the confirmation box and click **Apply local setup files**.
|
|
113
|
+
|
|
114
|
+
Existing secret values in `.env.local` are shown as **Set** / **Missing** only. Leave a secret field blank to preserve an existing value.
|
|
115
|
+
|
|
116
|
+
## API routes (local server only)
|
|
117
|
+
|
|
118
|
+
| Route | Method | Purpose |
|
|
119
|
+
|-------|--------|---------|
|
|
120
|
+
| `/api/setup/summary` | GET | Read-only setup summary |
|
|
121
|
+
| `/api/setup/preview-local-files` | POST | Dry-run preview with redaction |
|
|
122
|
+
| `/api/setup/apply-local-files` | POST | Confirmation-gated local file writes |
|
|
123
|
+
|
|
124
|
+
All writes go through setup core (`src/setup/local-apply-actions.ts`). Apply requires `confirmed: true` and a matching preview fingerprint.
|
|
125
|
+
|
|
126
|
+
## Security
|
|
127
|
+
|
|
128
|
+
- Secrets are never stored in browser `localStorage`, `sessionStorage`, or query params.
|
|
129
|
+
- Existing secret values are never returned to the browser — presence only.
|
|
130
|
+
- Newly entered secrets exist only in transient form state and POST bodies.
|
|
131
|
+
- Secret values are never printed in GUI logs or API error responses.
|
|
132
|
+
- Setup action previews use setup-core redaction before crossing the server boundary.
|
|
133
|
+
|
|
134
|
+
## Design system
|
|
135
|
+
|
|
136
|
+
The GUI uses Tailwind CSS v4 and shadcn/ui:
|
|
137
|
+
|
|
138
|
+
- `apps/gui/components/ui/` — generated shadcn primitives
|
|
139
|
+
- `apps/gui/components/custom/` — harness-specific reusable components
|
|
140
|
+
- `apps/gui/lib/constants/` — layout, spacing, form, and responsive tokens
|
|
141
|
+
- `apps/gui/styles/globals.css` — semantic theme variables
|
|
142
|
+
|
|
143
|
+
Use named token constants for layout and responsive patterns. Do not scatter arbitrary Tailwind values across page JSX.
|
|
144
|
+
|
|
145
|
+
## Related
|
|
146
|
+
|
|
147
|
+
- [`docs/p-dev.md`](p-dev.md) — canonical `p-dev` npm package guide
|
|
148
|
+
- [`docs/npm-packaging-spike.md`](npm-packaging-spike.md) — historical packaging spike notes
|
|
149
|
+
- [`docs/operator-config.md`](operator-config.md)
|
|
150
|
+
- [`docs/getting-started.md`](getting-started.md)
|
|
151
|
+
- [`docs/design/product-development-harness-gui.md`](design/product-development-harness-gui.md)
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
# Remote setup GUI
|
|
2
|
+
|
|
3
|
+
Guided remote setup for harness repo GitHub Actions secrets and target-repo production sync workflow install PRs.
|
|
4
|
+
|
|
5
|
+
**v0.3.1:** The seven-step Configure GUI includes remote setup in Steps 2–3, 6–7. Step 7 **automatically** validates, merges, and verifies system-owned workflow install PRs when checks pass — it does not leave manual merge as the only path. Ordinary product implementation PRs remain governed by Linear status gates.
|
|
6
|
+
|
|
7
|
+
Packaged launch: `npx --yes p-dev-harness@0.3.1` — see [`docs/p-dev.md`](p-dev.md).
|
|
8
|
+
|
|
9
|
+
**Related:** [`docs/gui-local.md`](gui-local.md), [`docs/security.md`](security.md), [`docs/operator-config.md`](operator-config.md), [`docs/production-sync-automation.md`](production-sync-automation.md)
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Start
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
npm run harness:configure
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
Open **Settings / Configure** and scroll to **Remote setup**.
|
|
20
|
+
|
|
21
|
+
Requires `GITHUB_TOKEN` in `.env.local` for live GitHub status checks and apply paths. Development and CI use mocked providers — no live remote writes during automated validation.
|
|
22
|
+
|
|
23
|
+
For **target workflow install PR** writes, the token must also be able to create or update `.github/workflows/*` files on the target repo. Classic PATs need the `workflow` scope in addition to `repo`. Fine-grained PATs need Actions/workflows write permission on the target repo. Without this scope, GitHub may return a misleading `404 Not Found` instead of a clear permission error.
|
|
24
|
+
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
## Scope (Milestone 5 PR 2)
|
|
28
|
+
|
|
29
|
+
The remote setup section supports:
|
|
30
|
+
|
|
31
|
+
- harness dispatch repo resolution and access status
|
|
32
|
+
- harness repo Actions secret status (`present` / `missing` / `unknown` only)
|
|
33
|
+
- per-target-repo workflow status (`present` / `missing` / `differs` / `unknown`)
|
|
34
|
+
- preview + confirmation-gated harness repo Actions secret writes
|
|
35
|
+
- preview + confirmation-gated target workflow branch/PR install per configured repo
|
|
36
|
+
- manual copy-paste instructions beside each automated action
|
|
37
|
+
|
|
38
|
+
It does **not**:
|
|
39
|
+
|
|
40
|
+
- write Linear issues or comments
|
|
41
|
+
- trigger harness phases or cloud workflow dispatch
|
|
42
|
+
- write directly to target repo `main` or production branches
|
|
43
|
+
- bundle local + remote actions into a single “do everything” button
|
|
44
|
+
- store secret values in browser storage
|
|
45
|
+
|
|
46
|
+
---
|
|
47
|
+
|
|
48
|
+
## Remote setup flow
|
|
49
|
+
|
|
50
|
+
### Harness repo Actions secrets
|
|
51
|
+
|
|
52
|
+
1. Confirm `GITHUB_TOKEN` is configured in `.env.local`.
|
|
53
|
+
2. Review harness dispatch repo and secret status badges.
|
|
54
|
+
3. Enter only the secrets you want to create or update:
|
|
55
|
+
- `LINEAR_API_KEY`
|
|
56
|
+
- `CURSOR_API_KEY`
|
|
57
|
+
- `HARNESS_GITHUB_TOKEN`
|
|
58
|
+
4. `HARNESS_CONFIG_JSON_B64` is generated server-side from validated `.harness/config.local.json` during apply — it is never shown in previews or API responses.
|
|
59
|
+
5. Click **Preview harness secrets** — required before apply.
|
|
60
|
+
6. Review the redacted plan (key names and actions only) and manual instructions.
|
|
61
|
+
7. Check the `remote-secret-write` confirmation and click **Apply harness secrets**.
|
|
62
|
+
|
|
63
|
+
### Target workflow install PR (per repo)
|
|
64
|
+
|
|
65
|
+
1. Open the card for each configured target repo.
|
|
66
|
+
2. Click **Preview workflow PR**.
|
|
67
|
+
3. Review the install branch name, workflow path, PR title, and manual instructions.
|
|
68
|
+
4. Check the `remote-repo-write` confirmation and click **Apply workflow PR**.
|
|
69
|
+
|
|
70
|
+
Branch name: `harness/setup-production-sync-<repoConfigId>`
|
|
71
|
+
|
|
72
|
+
Workflow path: `.github/workflows/trigger-harness-production-sync.yml`
|
|
73
|
+
|
|
74
|
+
PR title: `Install harness production sync workflow`
|
|
75
|
+
|
|
76
|
+
Base branch: `repos[].productionBranch` from harness config
|
|
77
|
+
|
|
78
|
+
If the workflow already matches on the production branch, apply returns `already-installed` and does not open a PR.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## API routes (local server only)
|
|
83
|
+
|
|
84
|
+
| Route | Method | Purpose |
|
|
85
|
+
|-------|--------|---------|
|
|
86
|
+
| `/api/setup/remote-summary` | GET | Remote status summary (no secret values) |
|
|
87
|
+
| `/api/setup/preview-harness-secrets` | POST | Dry-run harness secret write preview |
|
|
88
|
+
| `/api/setup/apply-harness-secrets` | POST | Confirmation-gated harness secret writes |
|
|
89
|
+
| `/api/setup/preview-target-workflow` | POST | Dry-run target workflow branch/PR preview |
|
|
90
|
+
| `/api/setup/apply-target-workflow` | POST | Confirmation-gated target workflow branch/PR install |
|
|
91
|
+
|
|
92
|
+
Route handlers parse input and delegate to `apps/gui/lib/setup-server.ts`. GitHub semantics live in setup-core provider code (`src/setup/github-remote-setup-live.ts`).
|
|
93
|
+
|
|
94
|
+
Apply requires `confirmed: true` and a matching preview `fingerprint`.
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Security
|
|
99
|
+
|
|
100
|
+
- `GITHUB_TOKEN` is loaded server-side from `.env.local` only.
|
|
101
|
+
- API responses never include raw tokens, generated `HARNESS_CONFIG_JSON_B64`, or existing GitHub Actions secret values.
|
|
102
|
+
- GitHub API errors are sanitized before returning to the GUI.
|
|
103
|
+
- Secret inputs are POST-only — never in GET routes, query params, or browser storage.
|
|
104
|
+
- Target workflow apply never writes directly to production or `main` branches.
|
|
105
|
+
|
|
106
|
+
See [`docs/security.md`](security.md).
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
# Integration repair
|
|
2
|
+
|
|
3
|
+
Integration repair automatically handles known merge-queue drift after a PR waits behind another issue targeting the same repo and base branch.
|
|
4
|
+
|
|
5
|
+
## What it does
|
|
6
|
+
|
|
7
|
+
When merge re-inspection finds a PR is `behind` or `dirty`, the issue stays **Merging** and the harness tries repair before blocking:
|
|
8
|
+
|
|
9
|
+
1. **Deterministic repair:** GitHub update-branch merges the latest base branch into the PR branch.
|
|
10
|
+
2. **Agent repair:** If GitHub cannot resolve conflicts automatically, a Composer 2.5 Cursor cloud agent starts on the PR branch, fetches the latest base branch, runs a local base-into-head merge, resolves conflicts, commits, validates, and pushes the PR branch.
|
|
11
|
+
3. **Return to merge:** The harness re-inspects the PR, waits for checks, and merges if validation passes.
|
|
12
|
+
|
|
13
|
+
The issue does not return to PM Review just because repair changed the PR branch.
|
|
14
|
+
|
|
15
|
+
## Safety boundaries
|
|
16
|
+
|
|
17
|
+
Repair may modify:
|
|
18
|
+
|
|
19
|
+
- Conflict files.
|
|
20
|
+
- Direct dependency-closure files required to compile and pass validation, such as importers, route registries, shared constants, shared type files, directly covering tests, or small adjacent files required by the resolution.
|
|
21
|
+
|
|
22
|
+
Repair must not:
|
|
23
|
+
|
|
24
|
+
- Push directly to `dev`, `main`, or any configured base/production branch.
|
|
25
|
+
- Make unrelated product changes.
|
|
26
|
+
- Make unrelated refactors.
|
|
27
|
+
- Run broad formatting sweeps.
|
|
28
|
+
- Expand scope beyond the issue acceptance criteria and behavior already merged into the base branch.
|
|
29
|
+
|
|
30
|
+
If the repair agent needs broader changes, the harness blocks with `repair_requires_product_judgment`. If the agent touches unrelated files, the harness blocks with `repair_scope_violation`.
|
|
31
|
+
|
|
32
|
+
## Required setup
|
|
33
|
+
|
|
34
|
+
`HARNESS_GITHUB_TOKEN` must be able to update PR branches in target repos.
|
|
35
|
+
|
|
36
|
+
- Classic PAT: `repo` scope.
|
|
37
|
+
- Fine-grained PAT: **Contents: Read and write** plus **Pull requests: Read and write** on each target repo.
|
|
38
|
+
|
|
39
|
+
`CURSOR_API_KEY` is required in the merge job because repair may need a cloud agent.
|
|
40
|
+
|
|
41
|
+
Validate setup:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
npm run harness:doctor -- --profile merge
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Doctor verifies configured base branches and target-repo write permission. If write is missing, repair blocks with setup instructions before trying to update the PR branch or launch an agent.
|
|
48
|
+
|
|
49
|
+
## Merge queue behavior
|
|
50
|
+
|
|
51
|
+
Merge jobs run in the GitHub Actions concurrency group:
|
|
52
|
+
|
|
53
|
+
```yaml
|
|
54
|
+
concurrency:
|
|
55
|
+
group: harness-merge-${{ needs.gate.outputs.merge_concurrency_group }}
|
|
56
|
+
cancel-in-progress: false
|
|
57
|
+
queue: max
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
This preserves multiple pending merge jobs for the same repo/base branch and processes them one at a time. Repair runs while the merge lock is held so another PR cannot merge into the same base branch during the repair.
|
|
61
|
+
|
|
62
|
+
## Recovery
|
|
63
|
+
|
|
64
|
+
If GitHub Actions is canceled while an issue is **Merging**, recover manually through **Harness Auto Runner**:
|
|
65
|
+
|
|
66
|
+
1. Open the workflow dispatch form.
|
|
67
|
+
2. Set `issue` to the Linear issue key.
|
|
68
|
+
3. Set `phase` to `merge`.
|
|
69
|
+
4. Set `force` to `true`.
|
|
70
|
+
|
|
71
|
+
v1 intentionally does not add a webhook trigger for **Merging** + incomplete repair markers. That extra automation surface is deferred until there is evidence it is needed.
|
|
72
|
+
|
|
73
|
+
## Blocking reasons
|
|
74
|
+
|
|
75
|
+
| Classification | Meaning |
|
|
76
|
+
|----------------|---------|
|
|
77
|
+
| `repair_head_branch_write_denied` | Token cannot update PR branches in the target repo |
|
|
78
|
+
| `repair_validation_failed` | Agent repair or post-repair validation failed |
|
|
79
|
+
| `repair_ambiguous` | Conflict resolution requires semantic judgment |
|
|
80
|
+
| `repair_scope_violation` | Agent touched files outside conflict + declared dependency closure |
|
|
81
|
+
| `repair_requires_product_judgment` | Repair needs broader product changes |
|
|
82
|
+
| `repair_base_branch_violation` | Agent attempted to modify the base branch |
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# Issue intake
|
|
2
|
+
|
|
3
|
+
How to turn a fuzzy product idea into a harness-compatible Linear issue before planning or implementation runs.
|
|
4
|
+
|
|
5
|
+
## When to use
|
|
6
|
+
|
|
7
|
+
- Starting new harness work from an unstructured idea
|
|
8
|
+
- Drafting a Linear issue description
|
|
9
|
+
- Checking whether an issue is ready for **Ready for Planning** or **Ready for Build**
|
|
10
|
+
|
|
11
|
+
## Paths
|
|
12
|
+
|
|
13
|
+
### ChatGPT copy-paste prompt (primary PM UX)
|
|
14
|
+
|
|
15
|
+
Product managers draft issues in a **normal ChatGPT thread**—no Custom GPT required:
|
|
16
|
+
|
|
17
|
+
1. Open [`prompts/issue-intake-chatgpt.md`](../prompts/issue-intake-chatgpt.md)
|
|
18
|
+
2. Copy the **entire file** into a new ChatGPT conversation
|
|
19
|
+
3. Answer the upfront intake form (**Linear project first**; target repo optional when project metadata includes `Harness metadata: Target repo: ...`)
|
|
20
|
+
4. Review the **proposed Linear issue** (title, status, labels, description)
|
|
21
|
+
5. Approve creation; ChatGPT creates the issue if Linear access is available in that thread, otherwise create it manually in Linear
|
|
22
|
+
6. Set the **status** and **labels** on the issue per the recommendation (not in the description)
|
|
23
|
+
7. Operator optionally validates the live issue with CLI (below)
|
|
24
|
+
|
|
25
|
+
### Cursor skill + CLI (operator path)
|
|
26
|
+
|
|
27
|
+
1. Invoke the **issue-intake** skill in Cursor ([`.agents/skills/issue-intake/SKILL.md`](../.agents/skills/issue-intake/SKILL.md))
|
|
28
|
+
2. Answer the upfront intake form (same eight fields as the ChatGPT prompt)
|
|
29
|
+
3. Save the description to a draft markdown file
|
|
30
|
+
4. Validate with route-specific flags:
|
|
31
|
+
|
|
32
|
+
```bash
|
|
33
|
+
# Recommended Ready for Planning
|
|
34
|
+
npm run harness:validate-issue -- --file draft.md --intended-phase planning
|
|
35
|
+
|
|
36
|
+
# Recommended Ready for Build (fails if issue is too broad)
|
|
37
|
+
npm run harness:validate-issue -- --file draft.md --intended-phase implementation
|
|
38
|
+
|
|
39
|
+
# General check (both routes reported; exit 0 if planning-valid)
|
|
40
|
+
npm run harness:validate-issue -- --file draft.md
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
5. Paste the description into Linear and set the **status** field per the recommendation (not in the description)
|
|
44
|
+
6. Re-validate after paste:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
npm run harness:validate-issue -- --issue TEAM-XX --intended-phase planning
|
|
48
|
+
# or
|
|
49
|
+
npm run harness:validate-issue -- --issue TEAM-XX --intended-phase implementation
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Deferred: Custom GPT package
|
|
53
|
+
|
|
54
|
+
A Custom GPT setup package exists at [`gpt/issue-intake/`](../gpt/issue-intake/) for future productization (OAuth, uploaded knowledge, dedicated GPT). **It is not the current operating path.** See [`gpt/issue-intake/setup-guide.md`](../gpt/issue-intake/setup-guide.md).
|
|
55
|
+
|
|
56
|
+
## Plan-first vs build-direct
|
|
57
|
+
|
|
58
|
+
| Route | Linear status | When |
|
|
59
|
+
|-------|---------------|------|
|
|
60
|
+
| Plan first | Ready for Planning | Broad, ambiguous, cross-cutting, high-risk, or >7 AC / task >240 chars |
|
|
61
|
+
| Build direct | Ready for Build | Narrow, low-risk, ≤7 AC, task ≤240 chars |
|
|
62
|
+
| Not ready | Backlog | Open questions remain |
|
|
63
|
+
|
|
64
|
+
**Routing is the Linear status field.** Labels (`requires-plan`, `skip-plan`) are operational hints only — the runner does not read them today.
|
|
65
|
+
|
|
66
|
+
## Narrow-issue thresholds
|
|
67
|
+
|
|
68
|
+
Direct implementation without a prior planning comment requires:
|
|
69
|
+
|
|
70
|
+
- Task ≤ 240 characters
|
|
71
|
+
- Acceptance criteria ≤ 7 hyphen bullets
|
|
72
|
+
|
|
73
|
+
Constants: [`src/validate/constants.ts`](../src/validate/constants.ts)
|
|
74
|
+
|
|
75
|
+
Full contract: [`prompts/issue-intake-chatgpt.md`](../prompts/issue-intake-chatgpt.md) (canonical) or [`gpt/issue-intake/knowledge.md`](../gpt/issue-intake/knowledge.md) (deferred GPT reference)
|
|
76
|
+
|
|
77
|
+
## File vs Linear validation
|
|
78
|
+
|
|
79
|
+
| Mode | Planning marker check |
|
|
80
|
+
|------|----------------------|
|
|
81
|
+
| `--file` | No — only narrow heuristic for build-direct |
|
|
82
|
+
| `--issue` | Yes — durable planning comment can satisfy build-direct for broad issues |
|
|
83
|
+
|
|
84
|
+
After a planning run completes, re-validate broad issues with `--issue` and `--intended-phase implementation`.
|
|
85
|
+
|
|
86
|
+
## Parser contract
|
|
87
|
+
|
|
88
|
+
Authoritative parser: [`src/linear/parser.ts`](../src/linear/parser.ts)
|
|
89
|
+
|
|
90
|
+
Template: [`templates/linear-issue.md`](../templates/linear-issue.md)
|
|
91
|
+
|
|
92
|
+
**Project-first intake:** assign the issue to a Linear project mapped in [`harness.config.json`](../harness.config.json) `repos[].linearProjects`. The runner resolves target repo from project when `## Target repo` is absent.
|
|
93
|
+
|
|
94
|
+
| Linear project (WES) | Resolved target repo |
|
|
95
|
+
|----------------------|----------------------|
|
|
96
|
+
| Example Target App | `owner/example-target-app` |
|
|
97
|
+
| Agentic Product Development Harness | `weston-uribe/agentic-product-development-harness` |
|
|
98
|
+
|
|
99
|
+
Project descriptions may include:
|
|
100
|
+
|
|
101
|
+
```text
|
|
102
|
+
Harness metadata:
|
|
103
|
+
Target repo: owner/repo
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Required description sections:
|
|
107
|
+
|
|
108
|
+
- `## Target repo` (include when known — derived from project metadata or PM override)
|
|
109
|
+
- `## Task`
|
|
110
|
+
- `## Acceptance criteria` (≥1 `-` bullet)
|
|
111
|
+
- `## Out of scope` (≥1 `-` bullet)
|
|
112
|
+
|
|
113
|
+
## Skill installation
|
|
114
|
+
|
|
115
|
+
The canonical skill lives at [`.agents/skills/issue-intake/`](../.agents/skills/issue-intake/). To use it as a Cursor project skill, symlink or copy to `.cursor/skills/issue-intake/` in this repo or your user skills directory. The `.cursor/skills` path is a Cursor adapter location, not the canonical source.
|
|
116
|
+
|
|
117
|
+
The legacy [`skills/issue-intake/`](../skills/issue-intake/) path is a compatibility pointer only.
|
|
118
|
+
|
|
119
|
+
## Related
|
|
120
|
+
|
|
121
|
+
- Canonical ChatGPT prompt: [`prompts/issue-intake-chatgpt.md`](../prompts/issue-intake-chatgpt.md)
|
|
122
|
+
- Deferred Custom GPT package: [`gpt/issue-intake/`](../gpt/issue-intake/)
|
|
123
|
+
- Milestone doc: [`docs/milestones/m7-issue-intake.md`](milestones/m7-issue-intake.md)
|
|
124
|
+
- State machine: [`docs/architecture/linear-automation-state-machine.md`](architecture/linear-automation-state-machine.md)
|