# Ship Workflow — $autoresearch ship Universal shipping workflow that applies autoresearch loop principles to the last mile — taking anything from "done" to "deployed/published/delivered." Works for code, content, marketing, sales, research, design, or any artifact that needs to reach its audience. **Core idea:** Shipping has a universal pattern regardless of domain. Identify → Checklist → Prepare → Dry-run → Ship → Verify → Log. ## Trigger - User invokes `$autoresearch ship` - User says "ship it", "deploy this", "publish this", "launch this", "release this" - User says "get this out the door", "push to prod", "send this out", "go live" ## Loop Support Works with bounded mode for iterative pre-ship preparation: ``` # Ship with automatic preparation loop $autoresearch ship # Bounded preparation — iterate N times before shipping $autoresearch ship Iterations: 10 # Ship specific artifact $autoresearch ship Target: src/features/auth/** Destination: production ``` ## PREREQUISITE: Interactive Setup (when invoked without flags) **CRITICAL — BLOCKING PREREQUISITE:** If `$autoresearch ship` is invoked without `--type` or target, you MUST scan for staged changes, open PRs, and recent commits, then use direct prompting to gather user input BEFORE proceeding to ANY phase. DO NOT skip this step. **Single batched call — all 3 questions at once:** You MUST call direct prompting with all 3 questions in ONE call: | # | Header | Question | Options (from context scan) | |---|--------|----------|----------------------------| | 1 | `What` | "What are you shipping?" | "Code PR", "Release / version tag", "Deployment to production", "Blog post / documentation" | | 2 | `Mode` | "How should I ship it?" | "Full workflow (checklist → dry-run → ship → verify)", "Dry-run only (validate without shipping)", "Checklist only (just check readiness)", "Auto-approve (ship if checklist passes)" | | 3 | `Monitor` | "Post-ship monitoring?" | "No monitoring", "5 minutes", "10 minutes", "30 minutes" | **IMPORTANT:** Always ask all questions in a single call — never one at a time. If `--type`, `--dry-run`, `--auto`, or `--checklist-only` flags are provided, skip interactive setup and proceed directly. ## Architecture ``` $autoresearch ship ├── Phase 1: Identify (what are we shipping?) ├── Phase 2: Inventory (what's the current state?) ├── Phase 3: Checklist (domain-specific pre-ship gates) ├── Phase 4: Prepare (autoresearch loop until checklist passes) ├── Phase 5: Dry-run (simulate the ship action) ├── Phase 6: Ship (execute the actual delivery) ├── Phase 7: Verify (post-ship health check) └── Phase 8: Log (record the shipment) ``` ## Phase 1: Identify — What Are We Shipping? Auto-detect the shipment type from context, or ask the user. **Detection algorithm:** ``` FUNCTION detectShipmentType(context): # Check explicit user input first IF user specifies type → USE IT # Auto-detect from context IF git diff has staged changes OR user mentions "deploy/release/merge": IF has Dockerfile/k8s/deploy configs → "deployment" IF has open PR or branch changes → "code-pr" ELSE → "code-release" IF context mentions "blog/article/post" OR target files are *.md in content/: → "content" IF context mentions "email/campaign/newsletter": → "marketing-email" IF context mentions "landing page/ad/social": → "marketing-campaign" IF context mentions "deck/proposal/pitch/quote": → "sales" IF context mentions "paper/report/analysis/findings": → "research" IF context mentions "assets/mockup/design/figma": → "design" # Default: ask user → ASK "What are you shipping? (code/content/marketing/sales/research/design/other)" ``` **Output:** `✓ Phase 1: Identified shipment — [type]: [brief description]` ## Phase 2: Inventory — Current State Assessment Scan the artifact and its environment to understand readiness. **For each shipment type, gather:** | Type | Inventory Checks | |------|-----------------| | code-pr | Changed files, test status, lint status, PR description, review status | | code-release | Version tag, changelog, migration status, dependency audit | | deployment | Build status, env vars, infra health, rollback plan | | content | Word count, links checked, images present, metadata/frontmatter | | marketing-email | Subject line, preview text, links, unsubscribe, CAN-SPAM compliance | | marketing-campaign | Assets ready, tracking pixels, UTM params, A/B variants | | sales | Pricing current, branding consistent, contact info, CTA clear | | research | Citations complete, methodology documented, data sources linked | | design | Formats exported, responsive variants, accessibility checked | **Output:** `✓ Phase 2: Inventory complete — [N] items assessed, [M] gaps found` ## Phase 3: Checklist — Domain-Specific Pre-Ship Gates Generate a mechanical checklist based on shipment type. Every item must be verifiable (pass/fail). ### Code Checklists **code-pr:** - [ ] All tests pass (`npm test` / `pytest` / language-specific) - [ ] Lint clean (no errors, warnings acceptable) - [ ] Type check passes (if applicable) - [ ] PR description explains the "why" - [ ] No secrets in diff (`git diff --cached | grep -i "password\|secret\|api_key"`) - [ ] No TODO/FIXME in new code (or documented as intentional) - [ ] Breaking changes documented (if any) - [ ] Reviewer assigned or review complete **code-release:** - [ ] All code-pr checks pass - [ ] Version bumped in package.json/pyproject.toml/Cargo.toml - [ ] CHANGELOG updated with release notes - [ ] Migration scripts tested (if DB changes) - [ ] Dependency audit clean (`npm audit` / `pip audit`) - [ ] Tag created matching version **deployment:** - [ ] All code-release checks pass - [ ] Build succeeds in CI - [ ] Environment variables set for target env - [ ] Health check endpoint responds - [ ] Rollback plan documented - [ ] Monitoring/alerting configured - [ ] Feature flags set correctly ### Content Checklists **content (blog/docs):** - [ ] Title present and descriptive - [ ] No broken links (internal or external) - [ ] Images have alt text - [ ] Meta description present (≤160 chars) - [ ] No placeholder text ("Lorem ipsum", "TODO", "TBD") - [ ] Grammar/spell check passes - [ ] Publish date set - [ ] Author attribution present ### Marketing Checklists **marketing-email:** - [ ] Subject line present (≤60 chars recommended) - [ ] Preview text set - [ ] All links working and tracked (UTM parameters) - [ ] Unsubscribe link present and functional - [ ] Physical address included (CAN-SPAM) - [ ] Responsive on mobile (test render) - [ ] Plain text fallback exists - [ ] Sender name and reply-to configured **marketing-campaign:** - [ ] All creative assets finalized - [ ] Tracking pixels/UTM parameters configured - [ ] Target audience defined and segmented - [ ] Budget allocated and approved - [ ] Landing page live and tested - [ ] A/B test variants set (if applicable) - [ ] Schedule confirmed ### Sales Checklists **sales (deck/proposal):** - [ ] Company/prospect name correct throughout - [ ] Pricing is current and approved - [ ] Contact information accurate - [ ] Branding consistent (logos, colors, fonts) - [ ] No competitor names misspelled - [ ] CTA is clear and actionable - [ ] Attached case studies/testimonials current - [ ] File format appropriate (PDF for external, editable for internal) ### Research Checklists **research (paper/report):** - [ ] Abstract/executive summary present - [ ] All citations properly formatted - [ ] Data sources linked and accessible - [ ] Methodology section complete - [ ] Figures/charts labeled and referenced - [ ] Conclusion addresses stated hypothesis - [ ] Acknowledgments included - [ ] No placeholder references ("[citation needed]") ### Design Checklists **design (assets/mockups):** - [ ] All requested formats exported (PNG, SVG, PDF) - [ ] Responsive variants provided (mobile, tablet, desktop) - [ ] Color contrast meets WCAG AA (4.5:1 for text) - [ ] No placeholder images or text - [ ] Source files organized and named - [ ] Brand guidelines followed - [ ] Handoff notes/specs documented **Output:** `✓ Phase 3: Checklist generated — [N] items, [P] passing, [F] failing` ## Phase 4: Prepare — Iterative Improvement Loop Apply the autoresearch loop to fix failing checklist items. ``` metric = count_passing_checklist_items / total_checklist_items * 100 direction = higher_is_better target = 100 (all items pass) LOOP (until all pass OR max iterations): 1. Read checklist status 2. Pick highest-priority failing item 3. Fix it (one atomic change) 4. Re-run checklist verification 5. IF item now passes → keep, log "fixed: [item]" 6. IF item still fails → revert, try different approach 7. IF all items pass → EXIT LOOP with "ready to ship" ``` **Priority order for fixes:** 1. **Blockers** — security issues, broken builds, missing critical content 2. **Required** — tests, lint, links, compliance items 3. **Recommended** — descriptions, documentation, polish **Auto-fix capabilities:** - Run test suites and fix failures - Fix lint errors automatically - Add missing meta descriptions - Generate changelog entries from git log - Check and fix broken links - Add alt text to images (describe or prompt user) - Format citations - Export missing design formats **Items that require human input:** - Pricing approval - Legal review sign-off - Brand approval - Strategic decisions (A/B test variants) - → Flag these and ask user, don't block on them **Output:** `✓ Phase 4: Preparation complete — [N/N] checklist items passing` ## Phase 5: Dry-Run — Simulate Before Shipping Execute a simulation of the ship action without side effects. | Type | Dry-Run Action | |------|---------------| | code-pr | `gh pr create --draft` or preview PR diff | | code-release | Create tag locally (don't push), preview changelog | | deployment | Build Docker image, run health checks locally | | content | Preview render, check all links resolve | | marketing-email | Send test email to sender's own address | | marketing-campaign | Preview in ad platform, estimate reach | | sales | Preview PDF render, check all pages | | research | Export to final format, check pagination | | design | Preview all exported formats, check dimensions | **Dry-run gate:** - Present dry-run results to user - `--auto` flag: auto-approve if no errors - Default: ask user "Ready to ship?" before proceeding - `--dry-run` flag: stop here, don't actually ship **Output:** `✓ Phase 5: Dry-run complete — [result summary]` ## Phase 6: Ship — Execute the Delivery The actual ship action. Domain-specific. | Type | Ship Action | |------|------------| | code-pr | `gh pr create` with full description, request reviewers | | code-release | `git tag`, `git push --tags`, create GitHub release | | deployment | `git push` to deploy branch, trigger CI/CD, or `kubectl apply` | | content | Publish via CMS API, or commit to content branch | | marketing-email | Send via ESP API (SendGrid, Mailchimp, etc.) | | marketing-campaign | Activate campaign in ad platform | | sales | Send email with attachment, or share link | | research | Upload to repository, submit to journal/platform | | design | Upload to asset library, share with stakeholders | **Safety rails:** - Confirm target (staging vs production, draft vs publish) - Log the exact command/action taken - Record timestamp - Capture any response/confirmation IDs **Output:** `✓ Phase 6: Shipped — [action taken] at [timestamp]` ## Phase 7: Verify — Post-Ship Health Check Confirm the shipment actually landed and is healthy. | Type | Verification | |------|-------------| | code-pr | PR created, CI running, link accessible | | code-release | Tag visible, release page published, assets attached | | deployment | Health endpoint returns 200, no error spike in logs | | content | Page loads, links work, appears in sitemap | | marketing-email | Delivery rate > 95%, no bounce spike | | marketing-campaign | Ads serving, landing page loading, tracking firing | | sales | Email delivered, link tracking active | | research | Accessible via URL/DOI, properly indexed | | design | Assets downloadable, correct dimensions | **Post-ship monitoring (with `--monitor N` flag):** ``` FOR N minutes: Check health metrics every 60 seconds IF anomaly detected → ALERT user immediately Log metrics to ship-log ``` **Output:** `✓ Phase 7: Verified — [health status summary]` ## Phase 8: Log — Record the Shipment Create a ship log entry for traceability. **Log format (append to `ship-log.tsv`):** ```tsv timestamp type target checklist_score dry_run shipped verified duration notes 2026-03-16T14:30:00Z code-pr #42 18/18 pass pass pass 4m32s auth feature PR ``` **Summary output:** ``` === Ship Complete === Type: [shipment type] Target: [where it went] Checklist: [P/T] items passed Duration: [total time] Status: SHIPPED ✓ ``` ## Flags | Flag | Purpose | |------|---------| | `--dry-run` | Run all phases except actual ship (stop at Phase 5) | | `--auto` | Auto-approve dry-run gate if no errors found | | `--force` | Skip non-critical checklist items (still enforce blockers) | | `--rollback` | Undo the last ship action (if reversible) | | `--monitor N` | Post-ship monitoring for N minutes | | `--type ` | Override auto-detection with explicit shipment type | | `--checklist-only` | Only generate and evaluate checklist (stop at Phase 3) | | `--chain ` | Chain to downstream tool(s) after completion. Comma-separated for multi-chain. Spaces after commas tolerated. | `--chain debug` or `--chain scenario,debug,fix` | ## Composite Metric For bounded loop mode, the ship readiness metric: ``` ship_score = (checklist_passing / checklist_total) * 80 + (dry_run_passed ? 15 : 0) + (no_blockers ? 5 : 0) ``` - **100** = fully ready to ship - **80-99** = ready with minor items (can ship with `--force`) - **<80** = not ready, continue preparing ## Rollback Protocol If `--rollback` is specified or post-ship verification fails: | Type | Rollback Action | |------|----------------| | code-pr | Close PR: `gh pr close` | | code-release | Delete tag: `git tag -d` + `git push --delete origin` | | deployment | Revert deploy: `git revert` or `kubectl rollback` | | content | Unpublish/revert to draft | | marketing-email | Cannot rollback (flag as "sent") | | marketing-campaign | Pause campaign in ad platform | | sales | Send correction/follow-up | | research | Request retraction or update | | design | Revert to previous version in asset library | **Non-reversible actions** (email, some publications) are flagged before Phase 6 ship action. ## Chain Conversion When `--chain` is specified, ship passes results forward after Phase 8 completes. Output includes: ship results, deployment status, monitoring data. #### `--chain learn` Document what was shipped for codebase learning — update docs to reflect the new deployed state. ``` $autoresearch learn Mode: update Context: Post-ship state from {shipment_type} — {target} shipped at {timestamp} Scope: {files changed in this ship} ``` #### `--chain security` Post-ship security verification — audit the newly deployed code or content. ``` $autoresearch security Scope: {files/artifacts shipped} Focus: Post-ship verification — confirm no regressions introduced during {shipment_type} delivery ``` #### `--chain debug` Post-ship monitoring revealed issues — investigate immediately. ``` $autoresearch debug Scope: {files shipped} Symptom: Post-ship anomaly detected — {health check failure or monitoring alert} Context: Shipped {shipment_type} at {timestamp}, verify phase result: {verify_result} ``` #### `--chain scenario` Post-ship edge case exploration — probe the deployed artifact under unusual conditions. ``` $autoresearch scenario Scenario: {shipment description} just deployed — explore edge cases and failure modes Domain: {inferred from shipment_type} Depth: standard ``` #### `--chain predict` Predict post-ship impact using swarm analysis on the newly shipped artifact. ``` $autoresearch predict Scope: {files shipped} Goal: Post-ship impact prediction — what issues might emerge after {shipment_type} delivery Depth: standard ``` #### `--chain fix` Post-ship issues need fixing — route findings directly to the fix workflow. ``` $autoresearch fix Target: {post-ship issue description} Scope: {files shipped} Context: Regression introduced during {shipment_type} delivery at {timestamp} ``` #### `--chain plan` Plan next iteration based on ship results and post-ship observations. ``` $autoresearch plan Goal: Next iteration planning after {shipment_type} delivery — {checklist_score} readiness score achieved Context: Ship log: {summary of this shipment} ``` #### `--chain reason` Reason about post-ship observations — adversarial refinement of next steps. ``` $autoresearch reason Task: Post-ship review — {shipment_type} delivered, observations: {verify_result} Domain: {inferred from shipment_type} ``` #### `--chain probe` Interrogate post-ship requirements for next cycle — surface hidden constraints before the next iteration. ``` $autoresearch probe Topic: Requirements for next iteration after shipping {target} Context: Ship results: {checklist_score}, verify: {verify_result} ``` ### Multi-Chain Execution `--chain scenario,debug,fix` executes sequentially: 1. Write `summary.md` after Phase 8 completes 2. Launch first chain target with ship results as context 3. Each stage's output feeds the next via handoff 4. All targets receive: shipment type, checklist score, dry-run result, verify status **Empirical evidence rule:** Downstream loop results ALWAYS override upstream findings. If a debug or fix loop disproves a post-ship assumption, log: `Ship observation [X] REVISED by empirical [tool] loop — [evidence]`. Do NOT revert to pre-loop assumptions. ## Output Directory Creates `ship/{YYMMDD}-{HHMM}-{ship-slug}/` with: - `checklist.md` — full checklist with pass/fail status - `ship-log.tsv` — iteration log (if preparation loop ran) - `summary.md` — final ship report