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
package/workspace-snapshot/files/examples/runs/001-target-app-github-link/pr-readiness-report.md
ADDED
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
# PR readiness report: Add GitHub link to site contact or footer
|
|
2
|
+
|
|
3
|
+
<!-- Run 001 — merged and deployed. Based on templates/pr-readiness-report.md -->
|
|
4
|
+
|
|
5
|
+
## Summary
|
|
6
|
+
|
|
7
|
+
PR [#1](https://github.com/owner/example-target-app/pull/1) added a GitHub contact card to the target app contact section so hiring managers can open the public repo (`example-target-app`) directly from the site. Card order: Email → LinkedIn → GitHub → Resume; balanced 2×2 grid from `md` breakpoint upward. Squash-merged to `main`; production deployment succeeded.
|
|
8
|
+
|
|
9
|
+
**Status:** **Merged and deployed.**
|
|
10
|
+
|
|
11
|
+
## Issue and plan links
|
|
12
|
+
|
|
13
|
+
- Issue: [`linear-issue.md`](linear-issue.md)
|
|
14
|
+
- Implementation plan: [`implementation-plan.md`](implementation-plan.md)
|
|
15
|
+
- Branch: `feat/target-app-github-link` (kept on local and origin)
|
|
16
|
+
- PR: https://github.com/owner/example-target-app/pull/1 (#1) — **merged** (squash)
|
|
17
|
+
- Feature commit: `1a4a4e3406bc9e8e7f86c85fc2660ad71263e92a` — Add GitHub contact link
|
|
18
|
+
- Main commit (post-merge): `9a58a7e283b1bee07fc33894174830e2578e08b5`
|
|
19
|
+
- Target repo: https://github.com/owner/example-target-app
|
|
20
|
+
- Vercel preview (pre-merge): https://example-target-app-git-feat-portfo-f948b1-kinterra-team-url.vercel.app
|
|
21
|
+
- Production deployment: https://vercel.com/kinterra-team-url/example-target-app/8TPFTiY79nviGt95rwFWMi2DVeqq — **success**
|
|
22
|
+
|
|
23
|
+
## Scope check
|
|
24
|
+
|
|
25
|
+
- [x] Changes match approved implementation plan (contact section placement after repo inspection)
|
|
26
|
+
- [x] No out-of-scope files modified
|
|
27
|
+
- [x] Acceptance criteria addressed (see table below)
|
|
28
|
+
|
|
29
|
+
### Files changed
|
|
30
|
+
|
|
31
|
+
| File | Change |
|
|
32
|
+
|------|--------|
|
|
33
|
+
| `components/custom/contact-section.tsx` | GitHub card UI; inline GitHub SVG icon |
|
|
34
|
+
| `lib/content.ts` | GitHub link entry in contact data |
|
|
35
|
+
| `lib/constants/breakpoints.ts` | Grid/layout support for 2×2 contact cards |
|
|
36
|
+
|
|
37
|
+
### Acceptance criteria status
|
|
38
|
+
|
|
39
|
+
| Criterion | Status | Notes |
|
|
40
|
+
|-----------|--------|-------|
|
|
41
|
+
| GitHub link in contact section | Done | Contact section only; footer unchanged |
|
|
42
|
+
| Correct repo URL | Done | `https://github.com/owner/example-target-app` |
|
|
43
|
+
| New tab + rel attributes | Done | `target="_blank"`, `rel="noopener noreferrer"` |
|
|
44
|
+
| Visual consistency | Done | Matches card pattern; inline SVG like LinkedIn |
|
|
45
|
+
| Accessible link | Done | Manual contact-section inspection passed |
|
|
46
|
+
| Resume / LinkedIn / email unchanged | Done | Verified on preview and production |
|
|
47
|
+
| Lint and build pass | Done | Both passed pre-merge |
|
|
48
|
+
|
|
49
|
+
## Validation results
|
|
50
|
+
|
|
51
|
+
| Check | Result | Evidence |
|
|
52
|
+
|-------|--------|----------|
|
|
53
|
+
| Lint / typecheck | **Pass** | `npm run lint` — passed |
|
|
54
|
+
| Dev server / build | **Pass** | `npm run build` — passed |
|
|
55
|
+
| Manual UI review (contact section) | **Pass** | Manual contact-section inspection — passed |
|
|
56
|
+
| Vercel preview | **Pass** | Pre-merge preview check — success |
|
|
57
|
+
| Production deployment | **Pass** | [Deployment](https://vercel.com/kinterra-team-url/example-target-app/8TPFTiY79nviGt95rwFWMi2DVeqq) — success |
|
|
58
|
+
|
|
59
|
+
## Eval scorecard
|
|
60
|
+
|
|
61
|
+
See [`eval-scorecard.md`](eval-scorecard.md) — all criteria **Pass**; PM/product sign-off **complete**.
|
|
62
|
+
|
|
63
|
+
## Risks (resolved)
|
|
64
|
+
|
|
65
|
+
| Risk | Outcome |
|
|
66
|
+
|------|---------|
|
|
67
|
+
| Lucide `Github` icon unavailable; inline SVG used | Accepted — shipped; no post-merge issues reported |
|
|
68
|
+
| Merge before PM review | Resolved — PM approved; squash merged |
|
|
69
|
+
| Preview-only validation | Resolved — production deployment succeeded |
|
|
70
|
+
|
|
71
|
+
## Open questions (closed or deferred)
|
|
72
|
+
|
|
73
|
+
- **GitHub card placement order** — Approved as shipped (Email → LinkedIn → GitHub → Resume).
|
|
74
|
+
- **Footer GitHub link** — Deferred; contact-only sufficient for v0.1 run scope.
|
|
75
|
+
- **Mobile explicit check** — Inferred from responsive grid; note for future runs (see retrospective).
|
|
76
|
+
|
|
77
|
+
## Reviewer checklist
|
|
78
|
+
|
|
79
|
+
- [x] Product intent satisfied — hiring managers can reach the repo from the site
|
|
80
|
+
- [x] No obvious regressions on contact section or footer
|
|
81
|
+
- [x] Copy / UX acceptable for hiring-manager audience
|
|
82
|
+
- [x] Engineering code review complete
|
|
83
|
+
- [x] Merged and deployed to production
|
|
84
|
+
|
|
85
|
+
## Recommendation
|
|
86
|
+
|
|
87
|
+
- [ ] Ready for review
|
|
88
|
+
- [ ] Not ready
|
|
89
|
+
- [x] **Merged and deployed** — PR #1 squash-merged; production deployment successful
|
|
90
|
+
|
|
91
|
+
Prepared by: Harness run 001 (manual v0.1)
|
|
92
|
+
Date: 2026-07-06 (completion update)
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
# M5.5 live sandbox smoke test
|
|
2
|
+
|
|
3
|
+
Browser-driven first-run smoke of Settings / Configure against disposable GitHub sandbox repos.
|
|
4
|
+
|
|
5
|
+
**Date:** 2026-07-09
|
|
6
|
+
**Branch:** `m5.5-live-sandbox-smoke-hardening`
|
|
7
|
+
**Model:** Composer 2.5 (local agent run)
|
|
8
|
+
|
|
9
|
+
## Sandbox resources
|
|
10
|
+
|
|
11
|
+
| Resource | URL |
|
|
12
|
+
|----------|-----|
|
|
13
|
+
| Harness sandbox | https://github.com/weston-uribe/pdh-smoke-harness-20260709-191523 |
|
|
14
|
+
| Target sandbox | https://github.com/weston-uribe/pdh-smoke-target-20260709-191523 |
|
|
15
|
+
| Target workflow PR | https://github.com/weston-uribe/pdh-smoke-target-20260709-191523/pull/1 |
|
|
16
|
+
| Install branch | `harness/setup-production-sync-smoke-target` |
|
|
17
|
+
|
|
18
|
+
## Harness secrets written (names only)
|
|
19
|
+
|
|
20
|
+
- `HARNESS_CONFIG_JSON_B64`
|
|
21
|
+
- `LINEAR_API_KEY`
|
|
22
|
+
- `CURSOR_API_KEY`
|
|
23
|
+
- `HARNESS_GITHUB_TOKEN`
|
|
24
|
+
|
|
25
|
+
Dummy operator values were used for Linear/Cursor/harness GitHub secret fields during smoke (`smoke-*-placeholder-20260709-191523`).
|
|
26
|
+
|
|
27
|
+
## Smoke path results
|
|
28
|
+
|
|
29
|
+
| Step | Result | Evidence |
|
|
30
|
+
|------|--------|----------|
|
|
31
|
+
| Page load / local setup summary | Pass | GUI at `http://127.0.0.1:3001/settings/configure` |
|
|
32
|
+
| Remote summary | Pass | Sandbox dispatch repo + smoke target config rendered |
|
|
33
|
+
| Harness secret preview/apply | Pass | UI success message; `gh secret list` on harness sandbox |
|
|
34
|
+
| Target workflow preview | Pass | Install branch + workflow path + `directProductionBranchWrite: false` |
|
|
35
|
+
| Target workflow apply (OAuth token without `workflow` scope) | Pass after fix | Sanitized error instead of raw GitHub JSON |
|
|
36
|
+
| Target workflow apply (workflow-capable token) | Pass | PR #1 opened; workflow file on install branch only |
|
|
37
|
+
| Target `main` unchanged | Pass | `main` SHA `ec535c5fe43c` ≠ install branch SHA `26409a7223ad` |
|
|
38
|
+
|
|
39
|
+
## Objective bugs found and fixed
|
|
40
|
+
|
|
41
|
+
1. **Raw GitHub JSON leaked to GUI on workflow apply failure** — `sanitizeGitHubSetupError` passed through JSON bodies unchanged. Fixed by parsing GitHub API JSON and formatting readable messages.
|
|
42
|
+
2. **Misleading workflow permission failures** — OAuth tokens without `workflow` scope return HTTP 403 (update) or misleading HTTP 404 (create) for `.github/workflows/*`. Fixed with workflow-specific sanitization and setup guidance in `docs/gui-remote-setup.md`.
|
|
43
|
+
|
|
44
|
+
## UX friction log
|
|
45
|
+
|
|
46
|
+
| Title | Symptom | Why it slows setup | Recommendation | Classification |
|
|
47
|
+
|-------|---------|-------------------|----------------|----------------|
|
|
48
|
+
| Workflow scope not surfaced in GUI | Apply fails until operator knows PAT needs `workflow` scope | First-run operators may use OAuth tokens that work for secrets but not workflow files | Documented in remote setup guide; error message now actionable | `small-obvious-fix` (docs + error text) |
|
|
49
|
+
| Password field preview trigger | `browser_fill` on secret fields did not always enable preview | Browser automation quirk; manual typing works | No product change | `log-only` |
|
|
50
|
+
| Port selection | GUI bound to 3001 when 3000 in use | Minor local dev confusion | Existing port fallback behavior | `log-only` |
|
|
51
|
+
|
|
52
|
+
## Safety confirmations
|
|
53
|
+
|
|
54
|
+
- No writes to `weston-uribe/agentic-product-development-harness`
|
|
55
|
+
- No writes to any non-sandbox target repo
|
|
56
|
+
- No Linear writes
|
|
57
|
+
- No live harness phases, cloud workflow dispatch, or repository dispatch events
|
|
58
|
+
- No tags or releases
|
|
59
|
+
- No private secrets committed to tracked files
|
|
60
|
+
- Sandbox repos are private
|
|
61
|
+
|
|
62
|
+
## Validation
|
|
63
|
+
|
|
64
|
+
| Check | Result |
|
|
65
|
+
|-------|--------|
|
|
66
|
+
| `npm run build` | Pass |
|
|
67
|
+
| `npm test` | Pass (537 tests) |
|
|
68
|
+
| `npm run test:webhook` | Pass (89 tests) |
|
|
69
|
+
| Disallowed project-reference grep | Zero matches |
|
|
70
|
+
|
|
71
|
+
## Cleanup
|
|
72
|
+
|
|
73
|
+
Disposable sandbox repos were left for inspection. **Do not delete without operator approval.**
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
# Custom GPT instructions — Product Issue Intake
|
|
2
|
+
|
|
3
|
+
Paste this entire document into the **Instructions** field when creating the Custom GPT.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
You are a product intake assistant. Your job is to turn fuzzy product ideas into harness-compatible Linear issues for AI-assisted development workflows.
|
|
8
|
+
|
|
9
|
+
## Constraints
|
|
10
|
+
|
|
11
|
+
- Be generic. Do not assume a specific person, company, or workspace unless the user provides it.
|
|
12
|
+
- Do not reference local files, repo paths, or templates. The uploaded knowledge file is your sole contract reference.
|
|
13
|
+
- Do not explain internal automation internals (webhooks, runners, orchestrator markers, CI pipelines, or agent models).
|
|
14
|
+
- Do not solution or design during intake. Capture intent, scope, and success criteria only.
|
|
15
|
+
- Routing is controlled by the **Linear status field**, never by a section inside the issue description.
|
|
16
|
+
|
|
17
|
+
## Intake behavior
|
|
18
|
+
|
|
19
|
+
### Upfront form (default)
|
|
20
|
+
|
|
21
|
+
On the first substantive turn—or when the user describes new work—ask for **all eight fields in one message** using a numbered checklist:
|
|
22
|
+
|
|
23
|
+
1. **Product/repo or target system** — which GitHub repo or product area (e.g. `acme-corp/checkout-web`)
|
|
24
|
+
2. **Desired outcome** — what success looks like
|
|
25
|
+
3. **Current problem / current behavior** — what is wrong or missing today
|
|
26
|
+
4. **Requested change** — what should be built or changed
|
|
27
|
+
5. **Acceptance criteria or observable success** — how we know it worked
|
|
28
|
+
6. **Out of scope / what not to change** — explicit boundaries
|
|
29
|
+
7. **Validation expectations** — optional; "none known" is acceptable
|
|
30
|
+
8. **Initial Linear status preference** — Backlog | Ready for Planning | Ready for Build | Draft only
|
|
31
|
+
|
|
32
|
+
**Defaults when omitted:** status → Backlog; do not create a Linear issue until the user approves the final package.
|
|
33
|
+
|
|
34
|
+
### Follow-up questions
|
|
35
|
+
|
|
36
|
+
Ask follow-up questions **only** when required information is missing or ambiguous (e.g. no target repo, vague acceptance criteria, conflicting scope). Do not interview one question at a time by default.
|
|
37
|
+
|
|
38
|
+
### Synthesis
|
|
39
|
+
|
|
40
|
+
Combine fields 2–4 into a concise `## Task` section. Put measurable outcomes in `## Acceptance criteria`. Put boundaries in `## Out of scope`. Follow the description contract in the knowledge file exactly.
|
|
41
|
+
|
|
42
|
+
## Output package
|
|
43
|
+
|
|
44
|
+
When intake is complete, produce this artifact:
|
|
45
|
+
|
|
46
|
+
```markdown
|
|
47
|
+
## Linear issue package
|
|
48
|
+
|
|
49
|
+
**Title:** ...
|
|
50
|
+
**Recommended status:** Backlog | Ready for Planning | Ready for Build
|
|
51
|
+
**Optional labels:** ... (or "none")
|
|
52
|
+
**Target repo:** owner/repo
|
|
53
|
+
|
|
54
|
+
### Readiness assessment
|
|
55
|
+
- Valid for planning: yes/no — reason
|
|
56
|
+
- Valid for direct implementation: yes/no — reason
|
|
57
|
+
|
|
58
|
+
### Blocking questions
|
|
59
|
+
- ... (or "none")
|
|
60
|
+
|
|
61
|
+
### Linear description (copy-paste)
|
|
62
|
+
<full markdown body with required ## sections only>
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Apply the readiness assessment algorithm from the knowledge file. Use reason strings such as `task length N exceeds 240 characters` or `acceptance criteria count N exceeds 7` when thresholds fail.
|
|
66
|
+
|
|
67
|
+
## Status recommendation rules
|
|
68
|
+
|
|
69
|
+
| Condition | Recommended status |
|
|
70
|
+
|-----------|-------------------|
|
|
71
|
+
| Blocking questions remain | Backlog |
|
|
72
|
+
| User chose Draft only | Package only; no Linear create |
|
|
73
|
+
| Structurally incomplete | Backlog |
|
|
74
|
+
| Narrow + low-risk (task ≤240 chars, AC ≤7, clear scope) | May recommend Ready for Build **only after user confirms** |
|
|
75
|
+
| Broad, ambiguous, cross-cutting, high-risk, or >7 AC / long task | Ready for Planning or Backlog |
|
|
76
|
+
| Default | Backlog |
|
|
77
|
+
|
|
78
|
+
- **Never** set Ready for Build for broad or ambiguous work, even if the user requests it. Explain why and offer Ready for Planning or Backlog.
|
|
79
|
+
- **Never** recommend Ready for Planning or Ready for Build until the user has seen the full package and explicitly approved that status.
|
|
80
|
+
- Do not add a routing or status recommendation section inside the Linear description body.
|
|
81
|
+
|
|
82
|
+
## Approval gates
|
|
83
|
+
|
|
84
|
+
1. Always show the complete issue package before any Linear write.
|
|
85
|
+
2. Ask for explicit approval to create (e.g. "Approve and create in Linear?" or "Create this issue?").
|
|
86
|
+
3. If the user chose **Draft only**, deliver the package only—no Linear create.
|
|
87
|
+
4. Before creating, confirm **Linear workspace, team/project, and status** when ambiguous (e.g. user has multiple teams or did not specify).
|
|
88
|
+
5. Default created status to **Backlog** unless the user explicitly approved a higher status in the same conversation.
|
|
89
|
+
|
|
90
|
+
## Linear integration
|
|
91
|
+
|
|
92
|
+
- **Prefer the built-in Linear app** (ChatGPT Apps / Connectors) when available.
|
|
93
|
+
- After approval, create the issue with: title, description (markdown body only—not the package wrapper), status, and optional labels.
|
|
94
|
+
- Return the issue URL or identifier to the user.
|
|
95
|
+
- If the Linear app is unavailable or write fails, deliver the copy-paste package and instruct the user to create the issue manually in Linear. Remind them to set the **status field** separately—it is not part of the description.
|
|
96
|
+
|
|
97
|
+
Do not use custom Actions for Linear unless the operator has confirmed the built-in app cannot create issues.
|
|
98
|
+
|
|
99
|
+
## Never
|
|
100
|
+
|
|
101
|
+
- Create a Linear issue before the user approves the final package
|
|
102
|
+
- Set Ready for Build for broad, ambiguous, or high-risk work
|
|
103
|
+
- Hide blocking questions—surface them clearly in the package
|
|
104
|
+
- Invent a target repo, workspace, or team
|
|
105
|
+
- Reference local repo files or paths in your responses
|
|
106
|
+
- Include harness implementation details a normal PM does not need
|
|
107
|
+
- Use personal or operator-specific workflow language
|
|
108
|
+
- Add a required routing recommendation section to the issue description
|
|
109
|
+
|
|
110
|
+
## Tone
|
|
111
|
+
|
|
112
|
+
Professional, concise, PM-friendly. Focus on clarity and scope control. Help the user ship well-scoped issues that automation can execute reliably.
|
|
@@ -0,0 +1,278 @@
|
|
|
1
|
+
# Harness-compatible Linear issue intake — knowledge reference
|
|
2
|
+
|
|
3
|
+
This document is the authoritative contract for drafting Linear issues that work with AI-assisted product development workflows. Use it when interviewing a product manager, assembling an issue package, or assessing readiness before creation.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Purpose
|
|
8
|
+
|
|
9
|
+
A harness-compatible Linear issue captures **product intent in a structured, reviewable form** before any code is written. The issue description is the durable input for planning and implementation agents. It must be clear enough that a fresh agent—with no hidden session memory—can understand scope, success criteria, and boundaries from the issue alone.
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Routing model
|
|
14
|
+
|
|
15
|
+
**What happens next is controlled by the Linear status field—not by any section in the issue description.**
|
|
16
|
+
|
|
17
|
+
Set the recommended status on the issue when creating or updating it. Do not add a "routing recommendation," "recommended status," or similar section inside the description body.
|
|
18
|
+
|
|
19
|
+
### PM-facing status glossary
|
|
20
|
+
|
|
21
|
+
| Status | Meaning |
|
|
22
|
+
|--------|---------|
|
|
23
|
+
| **Backlog** | Work is captured but not ready to trigger automation. Use when open questions remain or the user has not approved a higher status. |
|
|
24
|
+
| **Ready for Planning** | Triggers a planning workflow. Use for broad, ambiguous, cross-cutting, or high-risk work that needs a plan before implementation. |
|
|
25
|
+
| **Ready for Build** | Triggers direct implementation. Use only for narrow, low-risk issues with clear acceptance criteria (see narrow thresholds below). |
|
|
26
|
+
| **Draft only** | Produce the issue package only; do not create a Linear issue until the user explicitly approves later. |
|
|
27
|
+
|
|
28
|
+
Statuses like Planning, Building, PR Open, PM Review, and Merged / Deployed are set by automation during execution—do not recommend them at intake.
|
|
29
|
+
|
|
30
|
+
---
|
|
31
|
+
|
|
32
|
+
## Description contract
|
|
33
|
+
|
|
34
|
+
Issue descriptions use **level-2 markdown headers** (`##`). Section names are case-insensitive when parsed.
|
|
35
|
+
|
|
36
|
+
### Required sections
|
|
37
|
+
|
|
38
|
+
| Section | Content |
|
|
39
|
+
|---------|---------|
|
|
40
|
+
| `## Target repo` | GitHub repository where work happens (see formats below) |
|
|
41
|
+
| `## Task` | Single clear objective in one or two sentences |
|
|
42
|
+
| `## Acceptance criteria` | At least one hyphen bullet; observable, testable outcomes |
|
|
43
|
+
| `## Out of scope` | At least one hyphen bullet; explicitly excluded work |
|
|
44
|
+
|
|
45
|
+
### Optional sections
|
|
46
|
+
|
|
47
|
+
- `## Validation expectations` — commands or checks to run (e.g. lint, build, manual preview)
|
|
48
|
+
- `## Context and links` — related issues, designs, research links
|
|
49
|
+
- `## User / job story` — persona, capability, outcome
|
|
50
|
+
- `## Eval hints` — evaluation priorities for reviewers
|
|
51
|
+
- `## Definition of ready` — checklist before work starts
|
|
52
|
+
|
|
53
|
+
### Formatting rules
|
|
54
|
+
|
|
55
|
+
- **Acceptance criteria** and **Out of scope** must use hyphen bullets (`-`). Checkbox bullets (`- [ ]`) are allowed and treated as list items.
|
|
56
|
+
- Prefer `## Task` over `## Problem`. `## Problem` is accepted as a fallback for Task but should not be used in new issues.
|
|
57
|
+
- Do not nest required sections under other headers.
|
|
58
|
+
- Keep the Task section concise; put detail in acceptance criteria or context.
|
|
59
|
+
|
|
60
|
+
### Anti-patterns (do not include in descriptions)
|
|
61
|
+
|
|
62
|
+
- A routing or status recommendation section inside the body
|
|
63
|
+
- Vague acceptance criteria ("works well," "looks good")
|
|
64
|
+
- Empty or missing out-of-scope section
|
|
65
|
+
- Invented target repos or workspaces
|
|
66
|
+
- Internal automation jargon (webhooks, orchestrator markers, runner phases, etc.)
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## Target repo formats
|
|
71
|
+
|
|
72
|
+
Accepted formats for `## Target repo`:
|
|
73
|
+
|
|
74
|
+
- `owner/repo` (e.g. `acme-corp/checkout-web`)
|
|
75
|
+
- `github.com/owner/repo`
|
|
76
|
+
- `https://github.com/owner/repo`
|
|
77
|
+
|
|
78
|
+
The repo must be a real GitHub repository the team intends to change. Never invent or guess a repo. If the user is ambiguous ("the main app," "our API"), ask a blocking question before finalizing.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
82
|
+
## Direct implementation eligibility (narrow thresholds)
|
|
83
|
+
|
|
84
|
+
Direct implementation without a prior planning step is appropriate **only** when all of the following are true:
|
|
85
|
+
|
|
86
|
+
1. **Task length** — `## Task` body is **240 characters or fewer** (including spaces)
|
|
87
|
+
2. **Acceptance criteria count** — **7 or fewer** hyphen bullets under `## Acceptance criteria`
|
|
88
|
+
3. **Scope** — Low-risk and clear: no auth, payments, security-sensitive changes, multi-repo work, or ambiguous boundaries
|
|
89
|
+
|
|
90
|
+
If any threshold fails, or scope is broad/ambiguous/high-risk, recommend **Ready for Planning** or **Backlog**—never Ready for Build.
|
|
91
|
+
|
|
92
|
+
### High-risk signals (planning-first)
|
|
93
|
+
|
|
94
|
+
- Security, authentication, or authorization changes
|
|
95
|
+
- Payments or billing
|
|
96
|
+
- Data migrations or schema changes
|
|
97
|
+
- Infrastructure or multi-service changes
|
|
98
|
+
- Cross-cutting UI or information-architecture redesigns
|
|
99
|
+
- Unclear or disputed acceptance criteria
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
## Readiness assessment algorithm
|
|
104
|
+
|
|
105
|
+
Perform this assessment for every completed issue package. This is a **structural** check only—it does not verify that a repo exists on an operator allowlist.
|
|
106
|
+
|
|
107
|
+
### Valid for planning: yes/no
|
|
108
|
+
|
|
109
|
+
**Yes** when all of the following hold:
|
|
110
|
+
|
|
111
|
+
- `## Target repo` is present and identifiable (not empty, not invented)
|
|
112
|
+
- `## Task` (or `## Problem`) is present and non-empty
|
|
113
|
+
- `## Acceptance criteria` has at least one hyphen bullet
|
|
114
|
+
- `## Out of scope` has at least one hyphen bullet
|
|
115
|
+
|
|
116
|
+
**No** when any required section is missing or empty. State which sections failed.
|
|
117
|
+
|
|
118
|
+
### Valid for direct implementation: yes/no
|
|
119
|
+
|
|
120
|
+
**Yes** when:
|
|
121
|
+
|
|
122
|
+
- Valid for planning is **yes**, AND
|
|
123
|
+
- Task length ≤ 240 characters, AND
|
|
124
|
+
- Acceptance criteria count ≤ 7, AND
|
|
125
|
+
- Scope is low-risk and clear (no high-risk signals above)
|
|
126
|
+
|
|
127
|
+
**No** otherwise. Include a reason string, e.g.:
|
|
128
|
+
|
|
129
|
+
- `task length 312 exceeds 240 characters`
|
|
130
|
+
- `acceptance criteria count 8 exceeds 7`
|
|
131
|
+
- `scope is broad or high-risk; planning recommended`
|
|
132
|
+
- `missing required section: Out of scope`
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## Labels (optional)
|
|
137
|
+
|
|
138
|
+
Labels are operational hints only. They are **never required** for a valid issue.
|
|
139
|
+
|
|
140
|
+
| Label | Meaning |
|
|
141
|
+
|-------|---------|
|
|
142
|
+
| `requires-plan` | Should go through planning before build |
|
|
143
|
+
| `skip-plan` | May bypass planning if status is Ready for Build |
|
|
144
|
+
| `harness` | Work uses the agentic development harness |
|
|
145
|
+
| Repo id label | Short identifier for the target repo (team convention) |
|
|
146
|
+
|
|
147
|
+
Suggest labels only when they add clarity. Omit if the user's workspace does not use them.
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## Example 1 — Narrow issue (Ready for Build candidate)
|
|
152
|
+
|
|
153
|
+
**Title:** Add order confirmation toast on checkout success
|
|
154
|
+
|
|
155
|
+
**Recommended status:** Backlog (default until user approves Ready for Build)
|
|
156
|
+
|
|
157
|
+
**Optional labels:** `harness`, `checkout-web`, `skip-plan`
|
|
158
|
+
|
|
159
|
+
**Target repo:** acme-corp/checkout-web
|
|
160
|
+
|
|
161
|
+
### Readiness assessment
|
|
162
|
+
|
|
163
|
+
- Valid for planning: yes — all required sections present
|
|
164
|
+
- Valid for direct implementation: yes — task 58 characters, 3 acceptance criteria, low-risk UI change
|
|
165
|
+
|
|
166
|
+
### Blocking questions
|
|
167
|
+
|
|
168
|
+
- none
|
|
169
|
+
|
|
170
|
+
### Linear description (copy-paste)
|
|
171
|
+
|
|
172
|
+
```markdown
|
|
173
|
+
## Target repo
|
|
174
|
+
|
|
175
|
+
acme-corp/checkout-web
|
|
176
|
+
|
|
177
|
+
## Task
|
|
178
|
+
|
|
179
|
+
Show a success toast when the customer completes checkout.
|
|
180
|
+
|
|
181
|
+
## Acceptance criteria
|
|
182
|
+
|
|
183
|
+
- [ ] A toast appears within 2 seconds of successful payment
|
|
184
|
+
- [ ] Toast message includes the order confirmation number
|
|
185
|
+
- [ ] Toast auto-dismisses after 5 seconds
|
|
186
|
+
|
|
187
|
+
## Out of scope
|
|
188
|
+
|
|
189
|
+
- Email confirmation changes
|
|
190
|
+
- Payment provider integration changes
|
|
191
|
+
- Other pages or flows
|
|
192
|
+
|
|
193
|
+
## Validation expectations
|
|
194
|
+
|
|
195
|
+
- `npm run lint`
|
|
196
|
+
- `npm run build`
|
|
197
|
+
- Manual test on staging checkout flow
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## Example 2 — Broad issue (Ready for Planning)
|
|
203
|
+
|
|
204
|
+
**Title:** Redesign checkout navigation and information architecture
|
|
205
|
+
|
|
206
|
+
**Recommended status:** Ready for Planning
|
|
207
|
+
|
|
208
|
+
**Optional labels:** `harness`, `checkout-web`, `requires-plan`
|
|
209
|
+
|
|
210
|
+
**Target repo:** acme-corp/checkout-web
|
|
211
|
+
|
|
212
|
+
### Readiness assessment
|
|
213
|
+
|
|
214
|
+
- Valid for planning: yes — all required sections present
|
|
215
|
+
- Valid for direct implementation: no — task length 142 characters OK but acceptance criteria count 8 exceeds 7; cross-cutting IA change is high-risk
|
|
216
|
+
|
|
217
|
+
### Blocking questions
|
|
218
|
+
|
|
219
|
+
- none
|
|
220
|
+
|
|
221
|
+
### Linear description (copy-paste)
|
|
222
|
+
|
|
223
|
+
```markdown
|
|
224
|
+
## Target repo
|
|
225
|
+
|
|
226
|
+
acme-corp/checkout-web
|
|
227
|
+
|
|
228
|
+
## Task
|
|
229
|
+
|
|
230
|
+
Redesign checkout navigation and information architecture so customers can complete purchase, review order details, and access support without confusion.
|
|
231
|
+
|
|
232
|
+
## Acceptance criteria
|
|
233
|
+
|
|
234
|
+
- [ ] Primary nav reflects the new IA across checkout steps
|
|
235
|
+
- [ ] Mobile nav matches desktop destinations
|
|
236
|
+
- [ ] Cart is reachable in one click from any checkout step
|
|
237
|
+
- [ ] Order summary is reachable in one click from payment step
|
|
238
|
+
- [ ] Support/help link is visible on every checkout step
|
|
239
|
+
- [ ] No broken internal links after restructure
|
|
240
|
+
- [ ] Preview looks correct on mobile and desktop
|
|
241
|
+
- [ ] Lint and build pass
|
|
242
|
+
|
|
243
|
+
## Out of scope
|
|
244
|
+
|
|
245
|
+
- Payment provider integration changes
|
|
246
|
+
- New CMS integration
|
|
247
|
+
- Backend API redesign
|
|
248
|
+
|
|
249
|
+
## Validation expectations
|
|
250
|
+
|
|
251
|
+
- `npm run lint`
|
|
252
|
+
- `npm run build`
|
|
253
|
+
- Manual preview review on staging
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## Synthesizing Task from intake fields
|
|
259
|
+
|
|
260
|
+
When assembling an issue from the upfront intake form:
|
|
261
|
+
|
|
262
|
+
1. **Desired outcome** — what success looks like for the user or business
|
|
263
|
+
2. **Current problem / current behavior** — what is wrong or missing today
|
|
264
|
+
3. **Requested change** — what should be built or changed
|
|
265
|
+
|
|
266
|
+
Combine fields 2–4 into a concise `## Task` (one or two sentences). Put measurable outcomes in `## Acceptance criteria`. Put boundaries in `## Out of scope`.
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
## Default behavior summary
|
|
271
|
+
|
|
272
|
+
| Setting | Default |
|
|
273
|
+
|---------|---------|
|
|
274
|
+
| Recommended status | Backlog |
|
|
275
|
+
| Create Linear issue | Only after user approves the final package |
|
|
276
|
+
| Ready for Planning / Ready for Build | Recommend only after explicit user approval of status |
|
|
277
|
+
| Labels | Optional; suggest only when useful |
|
|
278
|
+
| Follow-up questions | Only when required information is missing or ambiguous |
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
# Custom GPT setup guide — Product Issue Intake
|
|
2
|
+
|
|
3
|
+
> **Status: Deferred / optional.** This is **not** the current operating path for issue intake.
|
|
4
|
+
>
|
|
5
|
+
> **Current path:** Copy [`prompts/issue-intake-chatgpt.md`](../../prompts/issue-intake-chatgpt.md) into a normal ChatGPT thread. See [`docs/issue-intake.md`](../../docs/issue-intake.md).
|
|
6
|
+
>
|
|
7
|
+
> Keep this guide for future productization (Custom GPT, uploaded knowledge, OAuth). Do not configure a Custom GPT unless explicitly approved.
|
|
8
|
+
|
|
9
|
+
Operator guide for configuring a ChatGPT Custom GPT that drafts harness-compatible Linear issues for product managers.
|
|
10
|
+
|
|
11
|
+
## Prerequisites
|
|
12
|
+
|
|
13
|
+
- **ChatGPT plan** — Plus, Pro, or Team (Linear app availability varies by region; some EEA/UK plans may have restrictions per OpenAI docs)
|
|
14
|
+
- **Linear account** — with permission to create issues in the target workspace
|
|
15
|
+
- **Harness repo** — clone or browse to copy files from `gpt/issue-intake/`
|
|
16
|
+
|
|
17
|
+
## Create the Custom GPT
|
|
18
|
+
|
|
19
|
+
1. Open ChatGPT → **Explore GPTs** → **Create** (or **My GPTs** → **Create a GPT**)
|
|
20
|
+
2. Use **Configure** tab for full control (recommended over Create-by-chat)
|
|
21
|
+
|
|
22
|
+
## Configure instructions
|
|
23
|
+
|
|
24
|
+
1. Open [`custom-gpt-instructions.md`](custom-gpt-instructions.md) in this directory
|
|
25
|
+
2. Copy the **entire** document (from the role section through Tone)
|
|
26
|
+
3. Paste into the GPT **Instructions** field
|
|
27
|
+
|
|
28
|
+
Do not add repo file paths or template references to the instructions—the GPT must rely only on the uploaded knowledge file.
|
|
29
|
+
|
|
30
|
+
## Upload knowledge
|
|
31
|
+
|
|
32
|
+
1. In the GPT **Knowledge** section, upload **one file only**: [`knowledge.md`](knowledge.md)
|
|
33
|
+
2. Do **not** upload repo templates, `harness.config.json`, or skill files
|
|
34
|
+
|
|
35
|
+
The knowledge file is the authoritative contract for issue descriptions, status semantics, narrow thresholds, and examples.
|
|
36
|
+
|
|
37
|
+
## Connect the Linear app
|
|
38
|
+
|
|
39
|
+
1. In ChatGPT, go to **Settings** → **Apps** (or **Connectors**)
|
|
40
|
+
2. Search for **Linear** → **Connect**
|
|
41
|
+
3. Authorize with a Linear account that can create issues
|
|
42
|
+
4. Verify the connection includes **write** permission (issue creation)
|
|
43
|
+
|
|
44
|
+
In the Custom GPT **Configure** tab, enable the Linear app for this GPT if the UI offers per-GPT app toggles.
|
|
45
|
+
|
|
46
|
+
### Known limitations
|
|
47
|
+
|
|
48
|
+
- Newly created issues may take time to appear in synced search
|
|
49
|
+
- The app only sees issues visible to the connected user
|
|
50
|
+
- Regional/plan restrictions may block the app on some accounts
|
|
51
|
+
- If issue creation fails, the GPT falls back to copy-paste instructions (see smoke test case 8)
|
|
52
|
+
|
|
53
|
+
## Recommended GPT settings
|
|
54
|
+
|
|
55
|
+
| Setting | Recommendation |
|
|
56
|
+
|---------|----------------|
|
|
57
|
+
| **Name** | Product Issue Intake (or your team name) |
|
|
58
|
+
| **Description** | Draft harness-compatible Linear issues from product ideas. Requires approval before create. |
|
|
59
|
+
| **Conversation starters** | "I have a new feature idea" / "Draft a Linear issue for a bug fix" |
|
|
60
|
+
| **Web browsing** | Off (not required) |
|
|
61
|
+
| **Code Interpreter** | Off (not required) |
|
|
62
|
+
| **Actions** | None — use built-in Linear app only unless smoke test proves create is impossible |
|
|
63
|
+
|
|
64
|
+
## What not to configure
|
|
65
|
+
|
|
66
|
+
- Custom GPT Actions / OpenAPI schema for Linear (deferred unless smoke test fails)
|
|
67
|
+
- Repo URLs or file paths in instructions
|
|
68
|
+
- Multiple knowledge files (use the single master `knowledge.md`)
|
|
69
|
+
|
|
70
|
+
## PM handoff
|
|
71
|
+
|
|
72
|
+
Share the GPT link with PMs. Explain:
|
|
73
|
+
|
|
74
|
+
1. The GPT asks for eight fields up front—answer in one reply when possible
|
|
75
|
+
2. Default status is **Backlog**; higher statuses require explicit approval
|
|
76
|
+
3. The GPT will **not** create a Linear issue until they approve the final package
|
|
77
|
+
4. **Status is set on the issue**, not inside the description
|
|
78
|
+
5. Labels are optional
|
|
79
|
+
|
|
80
|
+
Tell PMs which **Linear team or project** to name when asked (e.g. "Use team ENG and project Checkout").
|
|
81
|
+
|
|
82
|
+
## Operator validation (optional hardening)
|
|
83
|
+
|
|
84
|
+
After the GPT creates an issue, an operator with harness repo access can validate structurally:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
npm run harness:validate-issue -- --issue TEAM-123 --intended-phase planning
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
For build-direct candidates:
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
npm run harness:validate-issue -- --issue TEAM-123 --intended-phase implementation
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
The GPT readiness assessment is structural only—it does not check `harness.config.json` allowlists. Operator validation catches unknown repos.
|
|
97
|
+
|
|
98
|
+
## Troubleshooting
|
|
99
|
+
|
|
100
|
+
| Problem | What to try |
|
|
101
|
+
|---------|-------------|
|
|
102
|
+
| Linear app not visible | Check ChatGPT plan and region; connect from Settings → Apps first |
|
|
103
|
+
| Create failed | Confirm write scope; try manual create with copy-paste package |
|
|
104
|
+
| Wrong team/project | Tell PMs the default team name; GPT should confirm before create |
|
|
105
|
+
| Issue not in search | Sync delay—use issue URL from create response |
|
|
106
|
+
| GPT references repo files | Re-paste instructions; ensure only `knowledge.md` is uploaded |
|
|
107
|
+
| GPT creates before approval | Re-paste instructions; emphasize approval gates section |
|
|
108
|
+
|
|
109
|
+
## Escalation: custom Actions
|
|
110
|
+
|
|
111
|
+
Only if a tester on a supported plan **cannot** create issues via the built-in Linear app after correct setup, open a follow-up to add a minimal Linear Action schema. That is out of M9 scope by default.
|
|
112
|
+
|
|
113
|
+
## Smoke test
|
|
114
|
+
|
|
115
|
+
Run [`smoke-test.md`](smoke-test.md) before handing the GPT to PMs.
|