@midhunxavier/code-flow 0.0.0-stage → 0.1.0-preview.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/LICENSE +21 -0
- package/README.md +122 -2
- package/bin/codeflow.mjs +8 -0
- package/bin/launcher.mjs +127 -0
- package/dist/remote-host.json +1 -0
- package/licenses/inter.txt +92 -0
- package/licenses/preact.txt +21 -0
- package/licenses/signals-core.txt +21 -0
- package/licenses/signals.txt +21 -0
- package/licenses/typescript-notices.txt +193 -0
- package/licenses/typescript.txt +55 -0
- package/licenses/uqr.txt +22 -0
- package/licenses/xterm-fit.txt +19 -0
- package/licenses/xterm.txt +21 -0
- package/package.json +34 -4
- package/public/assets/browser-7XI52A6V.js +8 -0
- package/public/assets/changes-EYFPASEI.js +1 -0
- package/public/assets/chunk-7H3ZLTKA.js +2 -0
- package/public/assets/chunk-L7TUCIYF.js +1 -0
- package/public/assets/chunk-LLMQG23J.js +163 -0
- package/public/assets/main-KIRM2OEK.js +1 -0
- package/public/assets/settings-QJZVW22Y.js +9 -0
- package/public/assets/styles-615EBB20.css +32 -0
- package/public/assets/terminal-A2FI2NAX.js +62 -0
- package/public/assets.json +1 -0
- package/public/bundle-meta.json +1 -0
- package/public/docs/.nojekyll +0 -0
- package/public/docs/accessibility.html +19 -0
- package/public/docs/acp-agents.html +117 -0
- package/public/docs/agent-containers.html +79 -0
- package/public/docs/api.html +1130 -0
- package/public/docs/app.js +342 -0
- package/public/docs/application-improvements.html +275 -0
- package/public/docs/architecture-explorer.html +19 -0
- package/public/docs/architecture.html +149 -0
- package/public/docs/auto-team.html +142 -0
- package/public/docs/automations.html +109 -0
- package/public/docs/checkpoint-review.html +37 -0
- package/public/docs/code-hosts.html +35 -0
- package/public/docs/code-intelligence.html +35 -0
- package/public/docs/configuration.html +346 -0
- package/public/docs/context-inspection.html +23 -0
- package/public/docs/coordinated-changes.html +28 -0
- package/public/docs/deferred-runs.html +25 -0
- package/public/docs/dependency-discovery.html +19 -0
- package/public/docs/documentation.html +84 -0
- package/public/docs/dynamic-teams-evaluation.html +174 -0
- package/public/docs/dynamic-teams-implementation-plan.html +882 -0
- package/public/docs/dynamic-teams-implementation-review-1.html +141 -0
- package/public/docs/dynamic-teams-plan-review-0.html +204 -0
- package/public/docs/extensions.html +42 -0
- package/public/docs/external-sources.html +96 -0
- package/public/docs/filesystem-policy.html +26 -0
- package/public/docs/filtered-tasks.html +44 -0
- package/public/docs/font-license.txt +92 -0
- package/public/docs/getting-started.html +118 -0
- package/public/docs/github-review-threads.html +26 -0
- package/public/docs/github.html +157 -0
- package/public/docs/help.html +69 -0
- package/public/docs/index.html +77 -0
- package/public/docs/installation.html +74 -0
- package/public/docs/launch-profiles.html +48 -0
- package/public/docs/maintenance.html +60 -0
- package/public/docs/memory-claims.html +31 -0
- package/public/docs/memory-storage.html +58 -0
- package/public/docs/notifications.html +39 -0
- package/public/docs/patterns.html +195 -0
- package/public/docs/performance-results.html +210 -0
- package/public/docs/performance.html +166 -0
- package/public/docs/project-conventions.html +22 -0
- package/public/docs/project-first-navigation-plan.html +587 -0
- package/public/docs/project-teams-implementation-plan.html +772 -0
- package/public/docs/project-teams.html +99 -0
- package/public/docs/provider-compatibility.html +20 -0
- package/public/docs/releasing.html +61 -0
- package/public/docs/remote-workers.html +64 -0
- package/public/docs/review-inbox.html +26 -0
- package/public/docs/run-storage.html +23 -0
- package/public/docs/runs.html +141 -0
- package/public/docs/search.json +1 -0
- package/public/docs/security.html +133 -0
- package/public/docs/shared-projects.html +31 -0
- package/public/docs/ssh-projects.html +60 -0
- package/public/docs/style.css +768 -0
- package/public/docs/task-reruns.html +30 -0
- package/public/docs/team-collaboration.html +379 -0
- package/public/docs/verification.html +22 -0
- package/public/docs/vscode.html +53 -0
- package/public/docs/worker-permission-verification.html +122 -0
- package/public/index.html +17 -0
- package/scripts/check-node.mjs +7 -0
- package/scripts/codeflow.mjs +55 -0
- package/scripts/pty.py +273 -0
- package/src/acp-connections.js +110 -0
- package/src/adapters/acp-presets.js +37 -0
- package/src/adapters/acp-types.js +0 -0
- package/src/adapters/acp.js +328 -0
- package/src/adapters/agy-auth.js +67 -0
- package/src/adapters/agy-isolation.js +223 -0
- package/src/adapters/agy.js +297 -0
- package/src/adapters/claude.js +220 -0
- package/src/adapters/codex-app-server.js +518 -0
- package/src/adapters/codex.js +299 -0
- package/src/adapters/errors.js +57 -0
- package/src/adapters/index.js +91 -0
- package/src/adapters/managed-permissions.js +37 -0
- package/src/adapters/model-discovery.js +100 -0
- package/src/adapters/process.js +418 -0
- package/src/adapters/team-tools.js +102 -0
- package/src/adapters/types.js +0 -0
- package/src/agent-container.js +155 -0
- package/src/approvals.js +121 -0
- package/src/architecture.js +456 -0
- package/src/assets.js +44 -0
- package/src/automation.js +901 -0
- package/src/certificate-renewal.js +75 -0
- package/src/chat-handoff.js +55 -0
- package/src/checkpoint-review.js +72 -0
- package/src/checks.js +303 -0
- package/src/code-host-git.js +102 -0
- package/src/code-hosts-api.js +99 -0
- package/src/code-hosts.js +482 -0
- package/src/code-intelligence-worker.mjs +452 -0
- package/src/code-intelligence.js +141 -0
- package/src/collab/api.js +365 -0
- package/src/collab/checkpoints.js +198 -0
- package/src/collab/connections.js +139 -0
- package/src/collab/host-execution.js +347 -0
- package/src/collab/hub-client.js +210 -0
- package/src/collab/link-api.js +229 -0
- package/src/collab/link.js +595 -0
- package/src/collab/model.js +496 -0
- package/src/collab/runner.js +1014 -0
- package/src/collab/store.js +1452 -0
- package/src/collab/terminals.js +361 -0
- package/src/collaboration-reviews.js +116 -0
- package/src/config.js +48 -0
- package/src/context-budget.js +14 -0
- package/src/context-inspection.js +204 -0
- package/src/context.js +154 -0
- package/src/conventions.js +283 -0
- package/src/coordinated-api.js +247 -0
- package/src/deferred-launch.js +82 -0
- package/src/deferred-runs.js +515 -0
- package/src/dependency-health.js +35 -0
- package/src/diff.js +43 -0
- package/src/docs-help.js +316 -0
- package/src/doctor.js +232 -0
- package/src/engine.js +4366 -0
- package/src/env.js +44 -0
- package/src/experience.js +50 -0
- package/src/extensions.js +144 -0
- package/src/filesystem-access.js +107 -0
- package/src/filesystem-policy.js +238 -0
- package/src/filtered-task-limits.js +93 -0
- package/src/filtered-tasks-api.js +53 -0
- package/src/filtered-tasks.js +576 -0
- package/src/fs.js +57 -0
- package/src/git.js +626 -0
- package/src/github-review-threads.js +181 -0
- package/src/github.js +538 -0
- package/src/http.js +69 -0
- package/src/improve-settings.js +38 -0
- package/src/improve.js +187 -0
- package/src/integrations.js +373 -0
- package/src/integrity.js +259 -0
- package/src/journey-api.js +77 -0
- package/src/journey-replay.js +65 -0
- package/src/journey-store.js +97 -0
- package/src/journeys.js +60 -0
- package/src/json.js +81 -0
- package/src/launch-profiles.js +292 -0
- package/src/learnings.js +80 -0
- package/src/log.js +39 -0
- package/src/maintenance.js +335 -0
- package/src/memory-analysis.js +182 -0
- package/src/memory-claims.js +153 -0
- package/src/memory-sqlite.js +236 -0
- package/src/memory.js +552 -0
- package/src/merge-validation.js +58 -0
- package/src/model-catalog.js +238 -0
- package/src/model-research.js +91 -0
- package/src/notes.js +176 -0
- package/src/notifications.js +413 -0
- package/src/patterns/auto-team-model.js +212 -0
- package/src/patterns/auto-team.js +659 -0
- package/src/patterns/council.js +199 -0
- package/src/patterns/debate.js +188 -0
- package/src/patterns/findings.js +141 -0
- package/src/patterns/index.js +19 -0
- package/src/patterns/loop.js +158 -0
- package/src/patterns/pipeline.js +125 -0
- package/src/patterns/prompts.js +181 -0
- package/src/patterns/race.js +147 -0
- package/src/patterns/schemas.js +40 -0
- package/src/patterns/solo.js +49 -0
- package/src/patterns/supervisor.js +235 -0
- package/src/patterns/task-draft.js +29 -0
- package/src/patterns/tdd.js +231 -0
- package/src/patterns/team-strategies.js +67 -0
- package/src/performance.js +43 -0
- package/src/persistence-status.js +35 -0
- package/src/phone-sessions.js +96 -0
- package/src/preview-overlay.js +383 -0
- package/src/preview.js +219 -0
- package/src/privacy.js +23 -0
- package/src/project-report.js +22 -0
- package/src/project-team-model.js +178 -0
- package/src/project-team-policy.js +42 -0
- package/src/project-team-store.js +213 -0
- package/src/project-teams-api.js +36 -0
- package/src/project-teams.js +551 -0
- package/src/projects.js +286 -0
- package/src/provider-eligibility.js +9 -0
- package/src/readiness.js +98 -0
- package/src/remote-tls.js +66 -0
- package/src/remote-workers/bundles.js +198 -0
- package/src/remote-workers/client.js +332 -0
- package/src/remote-workers/durability.js +37 -0
- package/src/remote-workers/protocol.js +68 -0
- package/src/remote-workers/stdio.js +138 -0
- package/src/remote-workers/worker.js +304 -0
- package/src/remote.js +204 -0
- package/src/repo-config.js +201 -0
- package/src/repo-coordination.js +732 -0
- package/src/repo-tree.js +106 -0
- package/src/retention-policy.js +466 -0
- package/src/review-inbox.js +38 -0
- package/src/routing.js +49 -0
- package/src/run-analysis.js +111 -0
- package/src/run-cold-store.js +231 -0
- package/src/run-environment.js +15 -0
- package/src/run-history.js +91 -0
- package/src/run-log.js +160 -0
- package/src/run-permissions.js +110 -0
- package/src/run-projection.js +75 -0
- package/src/run-recovery.js +53 -0
- package/src/run-status.js +54 -0
- package/src/serve.js +138 -0
- package/src/server.js +2738 -0
- package/src/shared-access.js +103 -0
- package/src/shared-accounts.js +301 -0
- package/src/shared-api.js +239 -0
- package/src/shell.js +346 -0
- package/src/ship.js +344 -0
- package/src/slots.js +74 -0
- package/src/snapshot.js +388 -0
- package/src/source-context.js +17 -0
- package/src/sse-writer.js +70 -0
- package/src/ssh-projects/bootstrap.mjs +95 -0
- package/src/ssh-projects/config.js +45 -0
- package/src/ssh-projects/gateway.js +143 -0
- package/src/ssh-projects/manager.js +320 -0
- package/src/ssh-projects/team-autostart.mjs +93 -0
- package/src/ssh-projects/team-remove.mjs +69 -0
- package/src/ssh-projects/team-status.mjs +39 -0
- package/src/ssh-projects/transport.js +116 -0
- package/src/stats.js +139 -0
- package/src/store.js +544 -0
- package/src/stream.js +91 -0
- package/src/sweeps.js +241 -0
- package/src/tailscale.js +101 -0
- package/src/task-draft.js +23 -0
- package/src/team-evaluation.js +242 -0
- package/src/team-mailbox.js +160 -0
- package/src/team-memory.js +84 -0
- package/src/team-rerun-graph.js +15 -0
- package/src/team-reruns.js +130 -0
- package/src/team-scheduler.js +121 -0
- package/src/team-template-store.js +98 -0
- package/src/team-templates.js +117 -0
- package/src/team-tool-client.mjs +79 -0
- package/src/team-tools.js +176 -0
- package/src/teams.js +0 -0
- package/src/templates.js +62 -0
- package/src/transcript.js +134 -0
- package/src/verification-integrity.js +27 -0
- package/src/verification.js +183 -0
- package/src/watch.js +195 -0
- package/src/work-queue.js +47 -0
- package/src/workflow-control.js +83 -0
- package/src/workspace-api.js +207 -0
- package/src/workspace-changes.js +61 -0
- package/src/workspace.js +146 -0
|
@@ -0,0 +1,772 @@
|
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en"><head><meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><meta name="description" content="Standing project teams implementation plan — code-flow guides and reference"><title>Standing project teams implementation plan · code-flow</title><link rel="icon" href="data:image/png;base64,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"><link rel="stylesheet" href="style.css"><script src="app.js" defer></script></head>
|
|
3
|
+
<body data-page="project-teams-implementation-plan"><a class="skip-link" href="#content">Skip to content</a>
|
|
4
|
+
<header class="topbar"><a class="brand" href="index.html"><img src="data:image/png;base64,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" width="30" height="30" alt=""><strong>Code Flow</strong><span>Docs</span></a><button class="search-trigger" id="open-search">Search documentation <kbd>⌘ K</kbd></button><div class="top-actions"><a href="https://github.com/midhunxavier/code-flow">GitHub ↗</a><button id="theme" aria-label="Change color theme">Theme</button><button id="open-help" class="primary" hidden aria-expanded="false" aria-controls="help-panel">Ask code-flow</button><button id="menu" aria-label="Toggle documentation navigation" aria-expanded="false" aria-controls="sidebar">☰</button></div></header>
|
|
5
|
+
<div class="layout"><nav class="sidebar" id="sidebar" aria-label="Documentation"><section><h2>Get started</h2><a href="index.html" >Overview</a><a href="installation.html" >Install Code Flow preview</a><a href="getting-started.html" >Getting started</a><a href="patterns.html" >Team patterns</a><a href="acp-agents.html" >ACP coding agents</a><a href="help.html" >Ask code-flow</a></section><section><h2>Work with agents</h2><a href="runs.html" >Runs and workspace</a><a href="auto-team.html" >Auto team</a><a href="project-teams.html" >Project missions (preview)</a><a href="review-inbox.html" >Review inbox</a><a href="verification.html" >Verification and review</a><a href="github.html" >GitHub, review and shipping</a><a href="github-review-threads.html" >GitHub review threads</a><a href="task-reruns.html" >Selective task reruns</a><a href="deferred-runs.html" >Deferred runs</a></section><section><h2>Your workspace</h2><a href="configuration.html" >Configuration</a><a href="context-inspection.html" >Context and budgets</a><a href="project-conventions.html" >Versioned project conventions</a><a href="checkpoint-review.html" >Checkpoints and reversions</a><a href="launch-profiles.html" >Service launch profiles</a><a href="code-intelligence.html" >Code intelligence</a><a href="architecture-explorer.html" >Architecture explorer</a><a href="memory-storage.html" >Project memory</a><a href="memory-claims.html" >Semantic claim review</a><a href="coordinated-changes.html" >Coordinated changes</a></section><section><h2>Connect and collaborate</h2><a href="team-collaboration.html" >Team collaboration</a><a href="shared-projects.html" >Shared project accounts</a><a href="ssh-projects.html" >SSH projects</a><a href="remote-workers.html" >Remote agent workers</a><a href="code-hosts.html" >GitLab and Bitbucket code workflows</a><a href="external-sources.html" >Read-only external sources</a><a href="automations.html" >Automations and away mode</a><a href="notifications.html" >Outbound notifications</a></section><section><h2>Operate safely</h2><a href="security.html" >Security, subscriptions and caveats</a><a href="filesystem-policy.html" >Project filesystem policy</a><a href="agent-containers.html" >Agent containers</a><a href="filtered-tasks.html" >Filtered Docker tasks</a><a href="dependency-discovery.html" >Dependency discovery</a><a href="maintenance.html" >Backup and maintenance</a></section><section><h2>Build and extend</h2><a href="architecture.html" >Architecture and development</a><a href="api.html" >Local API and command-line client</a><a href="extensions.html" >Provider and workflow extensions</a><a href="provider-compatibility.html" >Provider compatibility</a><a href="accessibility.html" >Accessibility acceptance</a><a href="performance.html" >Performance</a><a href="run-storage.html" >Run storage</a><a href="documentation.html" >Documentation and GitHub Pages</a><a href="releasing.html" >Preparing a preview release</a><a href="vscode.html" >Code Flow for VS Code</a></section><section><h2>Engineering records</h2><a href="application-improvements.html" >Application improvement program</a><a href="project-first-navigation-plan.html" >Project navigation review and implementation plan</a><a href="dynamic-teams-evaluation.html" >Dynamic teams: implementation evidence and rollout decision</a><a href="dynamic-teams-implementation-plan.html" >Dynamic teams, workflows, messaging, and memory</a><a href="dynamic-teams-implementation-review-1.html" >Review 1: the dynamic teams implementation</a><a href="worker-permission-verification.html" >Live worker permission verification</a><a href="dynamic-teams-plan-review-0.html" >Review 0: Dynamic teams implementation plan</a><a href="project-teams-implementation-plan.html" aria-current="page">Standing project teams implementation plan</a><a href="performance-results.html" >Measured performance: 19 October 2026</a></section><a class="app-link" id="back-app" hidden href="/">← Back to app</a></nav>
|
|
6
|
+
<main id="content" tabindex="-1"><div class="breadcrumb">Documentation <span>/</span> Engineering records</div><article><h1 id="standing-project-teams-implementation-plan">Standing project teams implementation plan</h1>
|
|
7
|
+
<blockquote>
|
|
8
|
+
<p>Engineering record. Status, measurements and decisions below describe the recorded implementation or review. For current usage, start with the <a href="index.html">documentation library</a>.</p>
|
|
9
|
+
</blockquote>
|
|
10
|
+
<p>Status: implemented as an opt-in preview on 19 October 2026, synchronized with <code>origin/main</code> at <code>7933ecf</code> before PR review. The requirements below retain the design context. The implementation record here and <a href="project-teams.html">the operating guide</a> describe the implemented interfaces and deliberate initial boundaries. Real-provider usefulness remains an unmeasured rollout gate.</p>
|
|
11
|
+
<h2 id="implementation-record">Implementation record</h2>
|
|
12
|
+
<div class="table-scroll" tabindex="0"><table>
|
|
13
|
+
<thead>
|
|
14
|
+
<tr>
|
|
15
|
+
<th>Phase</th>
|
|
16
|
+
<th>Implemented result</th>
|
|
17
|
+
</tr>
|
|
18
|
+
</thead>
|
|
19
|
+
<tbody><tr>
|
|
20
|
+
<td>P0</td>
|
|
21
|
+
<td>Strict mission/report/aggregate contracts, provider eligibility, immutable mission history, private atomic store, operation IDs, repository uniqueness and rolling reservations</td>
|
|
22
|
+
</tr>
|
|
23
|
+
<tr>
|
|
24
|
+
<td>P1</td>
|
|
25
|
+
<td>Managed Automations targets, stable scheduled occurrence IDs, shared timer, engine dispatch barrier, durable launch receipt, exact reconciliation and fail-closed unknown launches</td>
|
|
26
|
+
</tr>
|
|
27
|
+
<tr>
|
|
28
|
+
<td>P2</td>
|
|
29
|
+
<td>Existing Auto team investigation workers, coordinator report synthesis, independent report review, typed discovery receipts and no-diff preservation</td>
|
|
30
|
+
</tr>
|
|
31
|
+
<tr>
|
|
32
|
+
<td>P3</td>
|
|
33
|
+
<td>Deterministic ranking, verified source quotes, deduplication, one implementation child, enforced scope/size/call limits, final-commit checks/review and approval-bound publishing</td>
|
|
34
|
+
</tr>
|
|
35
|
+
<tr>
|
|
36
|
+
<td>P4</td>
|
|
37
|
+
<td>Project setup, provider/model choices, existing schedule editor, opportunity actions, run evidence links, inbox summaries, managed automation links and scoped shared stream</td>
|
|
38
|
+
</tr>
|
|
39
|
+
<tr>
|
|
40
|
+
<td>P5</td>
|
|
41
|
+
<td>Owner feedback and defer expiry, bounded recent local activity/commit context, unchanged-input detection, notification reuse/deduplication and conservative restore handling</td>
|
|
42
|
+
</tr>
|
|
43
|
+
<tr>
|
|
44
|
+
<td>P6</td>
|
|
45
|
+
<td>Fault/restart/scope/budget/privacy/compatibility tests, browser workflow and connection checks, bounded fake/real evaluation runner, documentation and an opt-in release flag</td>
|
|
46
|
+
</tr>
|
|
47
|
+
</tbody></table>
|
|
48
|
+
</div><p>Implementation choices relative to the proposed design:</p>
|
|
49
|
+
<ul>
|
|
50
|
+
<li><code>Trigger.target</code> identifies the managed team while <code>Trigger.run</code> retains a minimal display/routing projection for compatibility with existing automation screens. It contains no duplicated execution configuration. Trigger IDs are deterministic from team IDs.</li>
|
|
51
|
+
<li>The aggregate service is in <code>src/project-teams.ts</code>, scope guards in <code>src/project-team-policy.ts</code>, and the UI in <code>ui/project-teams.tsx</code>; separate context/discovery/state modules were unnecessary for the current bounded workflow.</li>
|
|
52
|
+
<li>Report synthesis is an explicit coordinator read turn followed by the existing independent reviewer. Discovery therefore requires at least eight allocated calls under Auto team's coordinator allowance. Report defects stop the cycle; an owner can start another bounded discovery rather than silently repair it.</li>
|
|
53
|
+
<li>Pausing between stages finishes discovery as proposals. After activation the owner can build a proposal explicitly. A changed base/configuration requires rediscovery; the initial preview does not attempt an automatic rebase or extra revalidation allocation.</li>
|
|
54
|
+
<li>Owner revision launches a new whole team from the pinned base, with previous-result references and feedback. It preserves scope and independent verification without relying on the generic single-writer follow-up route.</li>
|
|
55
|
+
<li>Initial evidence is local Git source/history, bounded owner-origin local run summaries, accepted memory through existing Auto team retrieval, and durable owner decisions. External issue/feedback ingestion and product analytics are not enabled sources in this preview.</li>
|
|
56
|
+
<li>Mission model choices reuse the existing model controls. Setup uses existing Safe/Standard/Trusted host execution; remote worker, agent-container, ACP and extension execution are excluded from managed cycles. Owner-chosen setup/check commands use the current host execution boundary.</li>
|
|
57
|
+
<li>APIs use <code>POST /:id</code> for pause/activate/edit, <code>GET /:id/preview</code>, and <code>POST /:id/opportunities/:opportunityId</code> for decisions; see the operating guide for the complete actual table.</li>
|
|
58
|
+
<li>Core tests and synthetic fixtures establish mechanics. The ten-cycle synthetic pilot across two fixtures produced two verified drafts and eight unchanged-input no-ops. It is not the proposed real-provider/owner-quality pilot below. The feature stays opt-in until that evidence is available.</li>
|
|
59
|
+
</ul>
|
|
60
|
+
<p>Code Flow will let an owner attach a standing agent team to a repository, give it a product mission, and choose a schedule. The team will discover opportunities, select worthwhile work, build bounded improvements, and bring concrete results back for review. The owner decides what becomes part of the product.</p>
|
|
61
|
+
<p>Build this as a project service above the existing Automations and Auto team systems. Automations owns the schedule. Auto team owns agent execution, worktrees, messaging, checks, and independent review. The new service owns the mission, opportunity backlog, cycle state, admission decisions, and feedback across runs.</p>
|
|
62
|
+
<h2 id="1-product-behavior">1 Product behavior</h2>
|
|
63
|
+
<p>The owner opens a project and selects <strong>Set up project team</strong>. Setup captures the repository and target branch, intended users, product mission, current priorities, excluded work, agent preferences, schedule, and budget. Code Flow may draft a product description from repository evidence, but that description becomes direction only when the owner saves it.</p>
|
|
64
|
+
<p>For example:</p>
|
|
65
|
+
<blockquote>
|
|
66
|
+
<p>Improve the first experience for developers using this product. Investigate confusing setup, broken flows, and small usability improvements. Work weekly. Build one small improvement that I can try, and explain why you chose it.</p>
|
|
67
|
+
</blockquote>
|
|
68
|
+
<p>A cycle produces up to three useful opportunities and, when permitted, one draft implementation. An opportunity contains the problem, affected users, supporting evidence, expected benefit, proposed solution, effort estimate, acceptance criteria, and uncertainties. An implementation adds a branch, verification evidence, and a way to inspect or try the result.</p>
|
|
69
|
+
<p>The project page shows <strong>Opportunities</strong>, <strong>In progress</strong>, <strong>Ready for review</strong>, and <strong>History</strong>. The existing run view remains the place to inspect individual agents, messages, tasks, checks, and changes. The existing review inbox receives actionable results and blockers.</p>
|
|
70
|
+
<p>The team remembers owner feedback. “Not relevant to our users” influences future selection; “later” defers an opportunity; “do not suggest this again” suppresses it. Feedback does not silently change the team's execution authority.</p>
|
|
71
|
+
<h3 id="initial-defaults">Initial defaults</h3>
|
|
72
|
+
<p>These are proposed defaults to validate in a pilot, not measured optimal settings.</p>
|
|
73
|
+
<div class="table-scroll" tabindex="0"><table>
|
|
74
|
+
<thead>
|
|
75
|
+
<tr>
|
|
76
|
+
<th>Setting</th>
|
|
77
|
+
<th>Initial value</th>
|
|
78
|
+
</tr>
|
|
79
|
+
</thead>
|
|
80
|
+
<tbody><tr>
|
|
81
|
+
<td>Scope</td>
|
|
82
|
+
<td>One repository and one explicitly selected base branch per standing team</td>
|
|
83
|
+
</tr>
|
|
84
|
+
<tr>
|
|
85
|
+
<td>Team count</td>
|
|
86
|
+
<td>One active standing team per canonical repository, including across projects</td>
|
|
87
|
+
</tr>
|
|
88
|
+
<tr>
|
|
89
|
+
<td>Cadence</td>
|
|
90
|
+
<td>Weekly at a user-selected local time, with an explicit IANA timezone</td>
|
|
91
|
+
</tr>
|
|
92
|
+
<tr>
|
|
93
|
+
<td>Other schedules</td>
|
|
94
|
+
<td>Daily, selected weekdays, or an interval using the existing schedule editor</td>
|
|
95
|
+
</tr>
|
|
96
|
+
<tr>
|
|
97
|
+
<td>Autonomy</td>
|
|
98
|
+
<td>Discover and build small improvements within saved scope; proposals only is also available</td>
|
|
99
|
+
</tr>
|
|
100
|
+
<tr>
|
|
101
|
+
<td>Visible output</td>
|
|
102
|
+
<td>At most three new opportunities and one new implementation per cycle</td>
|
|
103
|
+
</tr>
|
|
104
|
+
<tr>
|
|
105
|
+
<td>Active work</td>
|
|
106
|
+
<td>One active cycle per team; no overlapping standing-team builds for its repository</td>
|
|
107
|
+
</tr>
|
|
108
|
+
<tr>
|
|
109
|
+
<td>Review backlog</td>
|
|
110
|
+
<td>At most two unresolved implementations, including approved but unshipped work</td>
|
|
111
|
+
</tr>
|
|
112
|
+
<tr>
|
|
113
|
+
<td>Opportunity backlog</td>
|
|
114
|
+
<td>At most twelve open opportunities; defer discovery when the backlog needs triage</td>
|
|
115
|
+
</tr>
|
|
116
|
+
<tr>
|
|
117
|
+
<td>Cycle budget</td>
|
|
118
|
+
<td>At most 24 CLI invocations and 60 active run minutes</td>
|
|
119
|
+
</tr>
|
|
120
|
+
<tr>
|
|
121
|
+
<td>Allocation</td>
|
|
122
|
+
<td>Discovery: 8 invocations and 15 minutes; implementation: 16 invocations and 45 minutes</td>
|
|
123
|
+
</tr>
|
|
124
|
+
<tr>
|
|
125
|
+
<td>Rolling budget</td>
|
|
126
|
+
<td>At most 48 invocations and 120 active run minutes over seven days</td>
|
|
127
|
+
</tr>
|
|
128
|
+
<tr>
|
|
129
|
+
<td>Shipping</td>
|
|
130
|
+
<td>Owner action through existing PR or merge flows</td>
|
|
131
|
+
</tr>
|
|
132
|
+
</tbody></table>
|
|
133
|
+
</div><p>Changing cadence does not expand the rolling budget. Setup previews the next runs and explains when a chosen daily schedule can exhaust its allowance. The app must be running and its execution machine available, as with current automations.</p>
|
|
134
|
+
<h3 id="first-release-boundary">First release boundary</h3>
|
|
135
|
+
<p>Deliver persistent project responsibility, scheduled discovery, bounded automatic implementation, reviewed results, and feedback in the first release. Use local repositories and the installed providers eligible for unattended Auto team runs. Start with the validated built-in CLI adapters; a provider being connected or available for an interactive run does not make it eligible for a standing team. A minimal team is sufficient; additional specialists are created only when useful within the allocation.</p>
|
|
136
|
+
<p>Keep cross-repository initiatives, remote-worker execution, multiple standing teams on one repository, automatic shipping, autonomous external posting, analytics integrations, and an always-running agent process for later releases. A project containing several repositories can initially select one repository for its standing team.</p>
|
|
137
|
+
<p>ACP/OpenCode connections remain available through the existing interactive experience. Their current adapter requires Full access and rejects automated triggers, so the first standing-team release cannot use them for discovery, implementation, or <strong>Run now</strong>. Adding unattended ACP support is a separate adapter capability milestone; this feature must not bypass that restriction.</p>
|
|
138
|
+
<p>The team identity persists as mission, preferences, decisions, and knowledge. Provider sessions and private worker conversations remain scoped to individual runs. Persistent responsibility does not require a permanently running CLI process.</p>
|
|
139
|
+
<h2 id="2-existing-foundations-and-required-extensions">2 Existing foundations and required extensions</h2>
|
|
140
|
+
<div class="table-scroll" tabindex="0"><table>
|
|
141
|
+
<thead>
|
|
142
|
+
<tr>
|
|
143
|
+
<th>Existing component</th>
|
|
144
|
+
<th>Current behavior</th>
|
|
145
|
+
<th>Planned use or change</th>
|
|
146
|
+
</tr>
|
|
147
|
+
</thead>
|
|
148
|
+
<tbody><tr>
|
|
149
|
+
<td><a href="https://github.com/midhunxavier/code-flow/blob/main/src/projects.ts">Projects</a></td>
|
|
150
|
+
<td>Groups repository paths and remembers composer/team defaults</td>
|
|
151
|
+
<td>Link a standing team to explicit project membership; keep its mission separate from last-used composer defaults</td>
|
|
152
|
+
</tr>
|
|
153
|
+
<tr>
|
|
154
|
+
<td><a href="https://github.com/midhunxavier/code-flow/blob/main/src/automation.ts">Automations</a></td>
|
|
155
|
+
<td>Schedules, timezone handling, missed-run rules, manual runs, webhook history, per-trigger busy checks</td>
|
|
156
|
+
<td>Add a managed project-team target and cycle receipts; retain the existing clock and schedule computation</td>
|
|
157
|
+
</tr>
|
|
158
|
+
<tr>
|
|
159
|
+
<td><a href="https://github.com/midhunxavier/code-flow/blob/main/src/patterns/auto-team.ts">Auto team</a></td>
|
|
160
|
+
<td>Plans work, schedules dependencies, routes questions, integrates changes, checks and independently reviews them</td>
|
|
161
|
+
<td>Run discovery and implementation as separate Auto team runs with server-owned contracts</td>
|
|
162
|
+
</tr>
|
|
163
|
+
<tr>
|
|
164
|
+
<td><a href="https://github.com/midhunxavier/code-flow/blob/main/src/patterns/auto-team-model.ts">Auto team model</a></td>
|
|
165
|
+
<td>Validates plans, revisions, ownership and outcomes</td>
|
|
166
|
+
<td>Validate discovery-only plans, typed opportunity output, and implementation scope on initial plans and revisions</td>
|
|
167
|
+
</tr>
|
|
168
|
+
<tr>
|
|
169
|
+
<td><a href="https://github.com/midhunxavier/code-flow/blob/main/src/adapters/index.ts">Provider registry</a>, <a href="https://github.com/midhunxavier/code-flow/blob/main/src/routing.ts">routing</a> and <a href="https://github.com/midhunxavier/code-flow/blob/main/src/adapters/team-tools.ts">team capabilities</a></td>
|
|
170
|
+
<td>Registers built-in, extension and ACP provider IDs; resolves automatic choices and reports capabilities</td>
|
|
171
|
+
<td>Derive a restricted unattended inventory before resolving any team role; preserve dynamic provider IDs and validate them against that inventory</td>
|
|
172
|
+
</tr>
|
|
173
|
+
<tr>
|
|
174
|
+
<td><a href="https://github.com/midhunxavier/code-flow/blob/main/src/acp-connections.ts">ACP connections</a> and <a href="https://github.com/midhunxavier/code-flow/blob/main/src/adapters/acp.ts">shared ACP adapter</a></td>
|
|
175
|
+
<td>Settings-managed connections, discovered models, invocation fingerprints and local Full-access execution</td>
|
|
176
|
+
<td>Reuse connection discovery/display; show why ACP is currently ineligible for standing teams without changing its execution policy</td>
|
|
177
|
+
</tr>
|
|
178
|
+
<tr>
|
|
179
|
+
<td><a href="https://github.com/midhunxavier/code-flow/blob/main/src/engine.ts">Engine</a></td>
|
|
180
|
+
<td>Runs providers, limits invocations, manages worktrees, approvals, follow-ups and result triage</td>
|
|
181
|
+
<td>Add standing-team provenance, durable admission hooks, and guarded continuation/result handling</td>
|
|
182
|
+
</tr>
|
|
183
|
+
<tr>
|
|
184
|
+
<td><a href="https://github.com/midhunxavier/code-flow/blob/main/src/team-memory.ts">Team memory</a> and <a href="https://github.com/midhunxavier/code-flow/blob/main/src/memory.ts">memory store</a></td>
|
|
185
|
+
<td>Attributed private, team and project memory with revision and applicability checks</td>
|
|
186
|
+
<td>Supply accepted knowledge to later cycles; keep candidate ideas and product decisions in their own records</td>
|
|
187
|
+
</tr>
|
|
188
|
+
<tr>
|
|
189
|
+
<td><a href="https://github.com/midhunxavier/code-flow/blob/main/src/deferred-runs.ts">Deferred runs</a> and <a href="https://github.com/midhunxavier/code-flow/blob/main/src/repo-coordination.ts">repository coordination</a></td>
|
|
190
|
+
<td>Durable claims, bounded execution, explicit unknown states and recovery</td>
|
|
191
|
+
<td>Reuse their storage and launch-receipt patterns without adding a competing agent queue</td>
|
|
192
|
+
</tr>
|
|
193
|
+
<tr>
|
|
194
|
+
<td><a href="https://github.com/midhunxavier/code-flow/blob/main/src/coordinated-api.ts">Coordination API</a></td>
|
|
195
|
+
<td>Validates exact owned run identity, pinned verification and shipping evidence</td>
|
|
196
|
+
<td>Extract narrow receipt/result-validation helpers where genuinely shared</td>
|
|
197
|
+
</tr>
|
|
198
|
+
<tr>
|
|
199
|
+
<td><a href="https://github.com/midhunxavier/code-flow/blob/main/src/review-inbox.ts">Review inbox</a></td>
|
|
200
|
+
<td>Prioritizes questions, blocked work, failures and pending run results</td>
|
|
201
|
+
<td>Add opportunity decisions and group child-run attention under a project-team cycle</td>
|
|
202
|
+
</tr>
|
|
203
|
+
<tr>
|
|
204
|
+
<td><a href="https://github.com/midhunxavier/code-flow/blob/main/src/notifications.ts">Notifications</a></td>
|
|
205
|
+
<td>Configured deliveries with deduplication and retries</td>
|
|
206
|
+
<td>Reuse delivery handling for meaningful cycle changes and avoid duplicate child-run notifications</td>
|
|
207
|
+
</tr>
|
|
208
|
+
<tr>
|
|
209
|
+
<td><a href="https://github.com/midhunxavier/code-flow/blob/main/src/verification.ts">Verification</a></td>
|
|
210
|
+
<td>Required gates, criterion mappings, pinned reports and merge-result checks</td>
|
|
211
|
+
<td>Require real evidence for implementation readiness and revalidate moving results</td>
|
|
212
|
+
</tr>
|
|
213
|
+
<tr>
|
|
214
|
+
<td><a href="https://github.com/midhunxavier/code-flow/blob/main/ui/project.tsx">Project UI</a> and <a href="https://github.com/midhunxavier/code-flow/blob/main/ui/automations.tsx">automation UI</a></td>
|
|
215
|
+
<td>Project overview, schedules, review results and run navigation</td>
|
|
216
|
+
<td>Add the team workspace and expose its schedule as a managed automation</td>
|
|
217
|
+
</tr>
|
|
218
|
+
<tr>
|
|
219
|
+
<td><a href="https://github.com/midhunxavier/code-flow/blob/main/ui/stream.ts">Shared browser stream</a> and <a href="https://github.com/midhunxavier/code-flow/blob/main/src/stream.ts">stream server</a></td>
|
|
220
|
+
<td>Multiplexes run, Team inbox and terminal subscriptions across owner tabs</td>
|
|
221
|
+
<td>Carry project-team updates through the existing broker and preserve its connection and identity boundaries</td>
|
|
222
|
+
</tr>
|
|
223
|
+
</tbody></table>
|
|
224
|
+
</div><h3 id="behaviors-that-cannot-be-reused-unchanged">Behaviors that cannot be reused unchanged</h3>
|
|
225
|
+
<ol>
|
|
226
|
+
<li><code>RunManager.startResolved()</code> clears plan approvals for triggered runs. A saved team policy must authorize autonomous work before launch; “this is scheduled” is insufficient authority to implement any idea the model invents.</li>
|
|
227
|
+
<li><code>Automations.busy()</code> checks the most recent run for a trigger. A cycle can contain discovery and implementation, so durable cycle state must remain authoritative between those runs.</li>
|
|
228
|
+
<li><code>Automations.save()</code> currently logs persistence errors without rejecting the operation. Team activation and launch admission cannot depend on a successful-looking save that failed. Add a strict committed-write path and use it for managed triggers.</li>
|
|
229
|
+
<li><code>toInbox()</code> can archive unchanged automation results and remove their worktrees. Discovery findings must be durably imported before normal cleanup, and evidence-only results must not disappear because their Git diff is empty.</li>
|
|
230
|
+
<li><code>triage({decision: "revise"})</code> currently routes a revision to a writer follow-up. Project-team revisions must preserve or renew whole-team verification before becoming ready again.</li>
|
|
231
|
+
<li><code>Projects.place()</code> supports lenient placement for triggered runs. Standing-team children must use <code>requireProjectRepo</code> and explicit membership checks, with no fallback into another project after deletion or removal.</li>
|
|
232
|
+
<li>Current notification payloads and review grouping are run-oriented. A cycle with two child runs should present one coherent result while preserving direct access to child failures and questions.</li>
|
|
233
|
+
<li><code>validateRoles()</code> uses requested/repository trust when resolving providers, while <code>startResolved()</code> applies the unattended Full-to-Trusted cap later. Managed requests must calculate effective execution eligibility before role selection and validate explicit choices too; otherwise an ACP selection can pass preparation and fail only at engine launch.</li>
|
|
234
|
+
</ol>
|
|
235
|
+
<h3 id="provider-eligibility-on-the-current-baseline">Provider eligibility on the current baseline</h3>
|
|
236
|
+
<p>The updated Auto team schema accepts an exact provider ID from the eligible inventory instead of a fixed three-provider enum. Preserve that schema behavior in the new discovery contract. Validate IDs through the registry and host policy; do not restore a hard-coded schema enum or accept arbitrary strings merely because they match an <code>acp:</code> or <code>plugin:</code> prefix.</p>
|
|
237
|
+
<div class="table-scroll" tabindex="0"><table>
|
|
238
|
+
<thead>
|
|
239
|
+
<tr>
|
|
240
|
+
<th>Provider class</th>
|
|
241
|
+
<th>Initial standing-team treatment</th>
|
|
242
|
+
</tr>
|
|
243
|
+
</thead>
|
|
244
|
+
<tbody><tr>
|
|
245
|
+
<td>Built-in Claude, Codex and Antigravity CLI adapters</td>
|
|
246
|
+
<td>Eligible when installed, selected by the owner, compatible with the effective execution profile and within observed capacity; retain current adapter-specific limits</td>
|
|
247
|
+
</tr>
|
|
248
|
+
<tr>
|
|
249
|
+
<td>ACP/OpenCode connections</td>
|
|
250
|
+
<td>Ineligible for all managed phases because the current engine rejects automated triggers and requires Full access</td>
|
|
251
|
+
</tr>
|
|
252
|
+
<tr>
|
|
253
|
+
<td>Owner-installed provider extensions</td>
|
|
254
|
+
<td>Keep out of the initial standing-team pool until their unattended execution and structured-outcome behavior have explicit compatibility evidence; ordinary extension runs retain their existing behavior</td>
|
|
255
|
+
</tr>
|
|
256
|
+
</tbody></table>
|
|
257
|
+
</div><p>Add a small shared eligibility helper, proposed as <code>src/provider-eligibility.ts</code>, to compute provider IDs and rejection reasons from the execution context. Reuse current registry, availability and adapter restrictions. Keep the standing-team compatibility allowlist as an additional policy input, so factoring the helper does not change existing interactive or ordinary-automation behavior.</p>
|
|
258
|
+
<p>Resolve the effective unattended trust profile before invoking <code>resolveAuto()</code>. Apply the helper to coordinator selection, worker/reviewer pools, explicit IDs, omitted/default pools, inherited project presets, planning inventory, coordinator revisions and every later dispatch. Filter defaults with a visible explanation; reject an explicitly saved ineligible selection before activation. Recheck after Settings changes. A missing or changed selected provider blocks work or uses only an already-authorized eligible fallback; it cannot silently expand the pool or enable Full access.</p>
|
|
259
|
+
<p>Provider display names and model catalogs come from the existing registry/Settings flow. Preserve opaque model IDs and use the current provider-specific settings validators. A successful ACP connection probe establishes protocol/session/catalog observations, not available inference quota, sandboxing or unattended compatibility. Scoped live tools and constrained JSON are separate capabilities: structured outcomes can use prompt-and-validation fallback where supported, while an unavailable tool bridge stays unavailable.</p>
|
|
260
|
+
<p>A future ACP compatibility milestone must establish an accepted unattended execution/isolation policy, report validation and retries, cancellation/recovery and accurate usage accounting. Preserve <code>Run.acpConnections</code> fingerprints and <code>assertAcpBindings()</code> if that milestone is later delivered; fingerprints pin command/arguments, not executable bytes or external CLI configuration. Two connection IDs are not evidence of independent model vendors. Until that work is complete, no managed request may omit its trigger metadata to evade the engine's ACP restriction.</p>
|
|
261
|
+
<h2 id="3-architecture-and-execution-ownership">3 Architecture and execution ownership</h2>
|
|
262
|
+
<p>Add a <code>ProjectTeams</code> service. It performs deterministic state transitions, accepts validated model output, and prepares normal run requests. It does not invoke provider CLIs directly or implement a second task scheduler.</p>
|
|
263
|
+
<pre><code class="language-mermaid">flowchart TD
|
|
264
|
+
Owner[Owner saves mission and limits] --> Team[Standing project team]
|
|
265
|
+
Schedule[Existing Automations scheduler] --> Cycle[Durable cycle admission]
|
|
266
|
+
Team --> Cycle
|
|
267
|
+
Cycle --> Discovery[Auto team discovery run]
|
|
268
|
+
Discovery --> Opportunities[Validated opportunities and evidence]
|
|
269
|
+
Opportunities --> Selection[Policy and backlog checks]
|
|
270
|
+
Selection --> Proposal[Proposal for owner decision]
|
|
271
|
+
Selection --> Build[Auto team implementation run]
|
|
272
|
+
Build --> Verification[Existing checks and independent review]
|
|
273
|
+
Verification --> Inbox[Project workspace and review inbox]
|
|
274
|
+
Proposal --> Inbox
|
|
275
|
+
Inbox --> Decision[Owner feedback or shipping action]
|
|
276
|
+
Decision --> Team
|
|
277
|
+
Decision --> Opportunities
|
|
278
|
+
</code></pre>
|
|
279
|
+
<p>Use one managed automation for each team. A cycle contains a discovery child and zero or one implementation child. Completion events advance the cycle; periodic reconciliation through the existing automation tick recovers missed events. The cycle service subscribes to <code>RunManager.subscribeAll()</code> and treats events as wakeups, not as the authoritative record of completion.</p>
|
|
280
|
+
<p>Before advancing a child, reload its settled state and validate identity, evidence, and persistence. The run's <code>endedAt</code> and final bookkeeping must be present; an intermediate <code>status: done</code> event alone is insufficient.</p>
|
|
281
|
+
<p>The existing Auto team task scheduler remains responsible for members and task dependencies within each child. Existing global agent slots continue to govern capacity across manual and scheduled work.</p>
|
|
282
|
+
<p>Register the service with <code>startPolicyBackground()</code>, <code>pausePolicyBackground()</code> and shutdown in <code>src/server.ts</code>. Stop and drain in-flight preparation/launch work before filesystem-policy changes, as existing background services do. Reconciliation can use the existing tick and subscriptions; it needs no additional scheduling clock.</p>
|
|
283
|
+
<h2 id="4-data-model-and-persistence">4 Data model and persistence</h2>
|
|
284
|
+
<p>Add versioned types in <code>src/project-team-model.ts</code>. Keep the following objects distinct so that product feedback cannot accidentally become execution permission or a verified technical fact.</p>
|
|
285
|
+
<div class="table-scroll" tabindex="0"><table>
|
|
286
|
+
<thead>
|
|
287
|
+
<tr>
|
|
288
|
+
<th>Record</th>
|
|
289
|
+
<th>Required information</th>
|
|
290
|
+
</tr>
|
|
291
|
+
</thead>
|
|
292
|
+
<tbody><tr>
|
|
293
|
+
<td><code>ProjectTeam</code></td>
|
|
294
|
+
<td>ID, revision, project ID, canonical repository identity/path, name, status, managed trigger ID, current mission revision, creation/update times</td>
|
|
295
|
+
</tr>
|
|
296
|
+
<tr>
|
|
297
|
+
<td><code>ProjectTeamMission</code></td>
|
|
298
|
+
<td>Immutable revision, intended users, mission, priorities, exclusions, base branch, enabled evidence sources, provider/model preferences, autonomy mode, execution policy and budget settings</td>
|
|
299
|
+
</tr>
|
|
300
|
+
<tr>
|
|
301
|
+
<td><code>ProjectTeamCycle</code></td>
|
|
302
|
+
<td>ID, team ID, immutable mission snapshot/hash, trigger occurrence or manual operation ID, pinned base SHA, source manifest, eligible-provider snapshot with reasons and effective trust, child claims/runs, state, selection receipt, usage reservations and timestamps</td>
|
|
303
|
+
</tr>
|
|
304
|
+
<tr>
|
|
305
|
+
<td><code>ProjectOpportunity</code></td>
|
|
306
|
+
<td>ID/revision, team/repository identity, stable problem key, category, problem, affected workflow, evidence refs, hypothesis/observation distinction, proposal, benefit, effort/risk estimates, acceptance criteria, rank explanation, status and source cycle</td>
|
|
307
|
+
</tr>
|
|
308
|
+
<tr>
|
|
309
|
+
<td><code>ProjectTeamDecision</code></td>
|
|
310
|
+
<td>ID, opportunity and exact revision, authenticated actor, decision, optional reason, result commit/report hash where applicable, timestamp and operation ID</td>
|
|
311
|
+
</tr>
|
|
312
|
+
<tr>
|
|
313
|
+
<td><code>ProjectTeamLaunch</code></td>
|
|
314
|
+
<td>Cycle/stage/attempt, claim ID, input hash, reserved allowance, run ID if known, receipt state and reconciliation data</td>
|
|
315
|
+
</tr>
|
|
316
|
+
<tr>
|
|
317
|
+
<td><code>ProjectTeamResult</code></td>
|
|
318
|
+
<td>Opportunity revision, child run ID, owned result branch and SHA, verification/report references, independent-review identity, preview references, readiness and shipping receipts</td>
|
|
319
|
+
</tr>
|
|
320
|
+
</tbody></table>
|
|
321
|
+
</div><p><code>ProjectTeamMission</code> includes two autonomy modes: <code>propose</code> and <code>build-within-scope</code>. Store explicit allowed work categories, included/excluded relative paths, maximum change size, pinned verification profile, and the owner's chosen existing execution/isolation settings. Semantic judgments such as “small UX improvement” need an explanation and conservative escalation; they are not completely enforceable through a file count.</p>
|
|
322
|
+
<p>Add optional <code>Run.projectTeam</code> metadata containing <code>teamId</code>, <code>cycleId</code>, <code>missionRevision</code>, <code>phase</code>, <code>claimId</code>, <code>attempt</code>, and, for implementation, <code>opportunityId</code> and <code>opportunityRevision</code>. Preserve it in run snapshots, replay, exports, and UI types. The server constructs this metadata. Generic run-creation bodies, webhook payloads, agent messages, and collaboration tools cannot supply or alter it.</p>
|
|
323
|
+
<h3 id="store-design">Store design</h3>
|
|
324
|
+
<p>Use <code>CODEFLOW_HOME/project-teams/<team-id>.json</code> as one versioned aggregate per team for configuration revisions, opportunities, cycles, decisions and launch claims. Follow the strict atomic write pattern already used by deferred/coordinated services: serialize mutations, validate bounded input, write a private temporary file, sync it, rename it, and sync the directory where supported. Publish in-memory state only after the write succeeds. Use optimistic revisions and operation IDs for HTTP mutations.</p>
|
|
325
|
+
<p>A single team aggregate makes opportunity selection, budget reservation and stage claiming one atomic mutation. Use the existing single-server ownership model plus an in-process canonical-repository guard for the initial one-active-team constraint. Validate all teams at startup; duplicate active ownership is an explicit configuration blocker.</p>
|
|
326
|
+
<p>Bound the aggregate, history and payload sizes. Start with a 16 MiB file ceiling, 100 retained cycle summaries and 200 full opportunity records. Store large evidence in existing run artifacts or bounded evidence files with immutable digests, not in the aggregate. Preserve compact rejection/deduplication records separately within a fixed cap; reaching retention limits must not silently forget “do not suggest again.” Archive or request cleanup before that cap is exceeded.</p>
|
|
327
|
+
<p>Include the new aggregates and retained evidence in the existing backup/export and maintenance inventory. Evidence cleanup follows live references from opportunities and decisions, so archiving a discovery child cannot break a pending review card. Redaction and deletion must cover copied evidence as well as run links.</p>
|
|
328
|
+
<p>Persist provider references and execution-binding metadata, not copied ACP executable configuration or credentials. Keep <code>acp-connections.json</code> excluded from portable backups under the current maintenance policy. Restoring a team on another host leaves it paused until project paths, providers, referenced connections and execution settings are explicitly reconciled; portable mission data cannot authorize a new host invocation.</p>
|
|
329
|
+
<p>Do not automatically delete pending results, active claims, or owner decisions to meet a size limit. Keep all claims needed to account for unresolved work. A corrupt/unsupported aggregate blocks that team's launches while leaving ordinary runs and other teams usable.</p>
|
|
330
|
+
<h2 id="5-scheduling-and-launch-recovery">5 Scheduling and launch recovery</h2>
|
|
331
|
+
<h3 id="managed-trigger-contract">Managed trigger contract</h3>
|
|
332
|
+
<p>Extend the trigger model into an explicit union. Existing records without a discriminator remain saved-run triggers; existing sweeps retain their behavior. A new <code>kind: "project-team"</code> target stores <code>teamId</code>, <code>projectId</code>, name, enabled state and schedule, without a duplicated saved run configuration. Its execution configuration comes from the current saved mission.</p>
|
|
333
|
+
<p>Managed triggers initially reject webhooks. Schedule and <strong>Run now</strong> both call the same <code>ProjectTeams.requestCycle()</code> admission path. Add a managed-target callback to <code>Automations</code>; keep provider launching in <code>RunManager</code>. Update <code>FireResult</code>, event history and preview responses to include <code>cycleId</code>, child run IDs when available, and meaningful dispositions such as <code>accepted</code>, <code>skipped</code>, or <code>blocked</code>.</p>
|
|
334
|
+
<p>Use the existing <code>Schedule</code>, <code>validateSchedule()</code>, <code>previewSchedule()</code>, <code>nextFire()</code> and missed-run behavior. Supply a stable occurrence key from the trigger ID and the scheduled UTC <code>nextAt</code> captured before advancement. Manual requests use a client operation ID; retries reuse it. Repeated ticks, duplicate HTTP delivery or restart recovery return the same cycle for that key.</p>
|
|
335
|
+
<p>Creation spans two existing stores. Use a recoverable activation sequence: create a draft team, create a disabled managed trigger idempotently, save the linkage, then activate the linked pair. On restart, incomplete setup remains disabled until reconciliation verifies both records. A trigger with no valid team or a team with a missing trigger cannot launch. Managed-trigger enable, schedule changes and deletion route through the team service so Settings cannot bypass team state.</p>
|
|
336
|
+
<p>Update all trigger readers, previews, project filters, serializers and UI types that currently assume <code>trigger.run</code> exists. Preserve old saved-run/sweep payloads and their tests. Unknown target kinds remain disabled and diagnosable; they must never be interpreted as ordinary saved prompts. The managed-trigger persistence path commits or fails explicitly without overwriting the last committed state or poisoning subsequent writes.</p>
|
|
337
|
+
<h3 id="admission-and-advancement">Admission and advancement</h3>
|
|
338
|
+
<p>At cycle admission, check active status, exact project membership, canonical repository, configured branch, effective unattended provider eligibility/readiness, filesystem policy, remaining budget and backlog capacity. Pin the base commit, configuration and allowed provider choices. Never use whichever branch happens to be checked out later. Do not implicitly pull, rebase, or fetch; show the observed ref and last known freshness. Optional remote refresh belongs in a later explicit source setting.</p>
|
|
339
|
+
<p>Recheck these conditions before each child launch and continuation. A later restrictive policy change or repository removal blocks further work even though a historical mission snapshot exists. An expanded mission requires a new cycle or explicit revised request; it cannot enlarge an already-admitted allocation.</p>
|
|
340
|
+
<div class="table-scroll" tabindex="0"><table>
|
|
341
|
+
<thead>
|
|
342
|
+
<tr>
|
|
343
|
+
<th>Failure point</th>
|
|
344
|
+
<th>Required behavior</th>
|
|
345
|
+
</tr>
|
|
346
|
+
</thead>
|
|
347
|
+
<tbody><tr>
|
|
348
|
+
<td>Before a durable launch claim</td>
|
|
349
|
+
<td>No run starts; a later tick can retry admission</td>
|
|
350
|
+
</tr>
|
|
351
|
+
<tr>
|
|
352
|
+
<td>Claim saved, no dispatch attempted</td>
|
|
353
|
+
<td>Retry only when the service can prove dispatch never began</td>
|
|
354
|
+
</tr>
|
|
355
|
+
<tr>
|
|
356
|
+
<td>Dispatch started, receipt missing</td>
|
|
357
|
+
<td>Mark <code>unknown</code>; inspect exact owned run identities and retain reservations</td>
|
|
358
|
+
</tr>
|
|
359
|
+
<tr>
|
|
360
|
+
<td>One matching persisted child found</td>
|
|
361
|
+
<td>Attach the child idempotently and continue observing it</td>
|
|
362
|
+
</tr>
|
|
363
|
+
<tr>
|
|
364
|
+
<td>No conclusive match or multiple matches</td>
|
|
365
|
+
<td>Block automatic replay; expose recovery with the available evidence</td>
|
|
366
|
+
</tr>
|
|
367
|
+
<tr>
|
|
368
|
+
<td>Child finished before cycle state was updated</td>
|
|
369
|
+
<td>Import its validated result once, using run ID, report hash and input revision</td>
|
|
370
|
+
</tr>
|
|
371
|
+
<tr>
|
|
372
|
+
<td>State write fails</td>
|
|
373
|
+
<td>Stop dependent dispatch and expose a storage blocker</td>
|
|
374
|
+
</tr>
|
|
375
|
+
</tbody></table>
|
|
376
|
+
</div><p>Extract a narrowly scoped receipt helper from the existing coordination/deferred patterns. Add an internal admission barrier for managed child starts so the initial run identity and claim binding are synced before any CLI execution begins. Do not acknowledge an admitted launch based solely on best-effort event logging. Prove this ordering with an instrumented fake CLI.</p>
|
|
377
|
+
<p>This supports idempotent control transitions, not a promise of exactly-once external side effects. A process can act immediately before a crash. Preserve unknown states and existing execution-isolation limits.</p>
|
|
378
|
+
<h3 id="lifecycle-rules">Lifecycle rules</h3>
|
|
379
|
+
<p>Cycle states are <code>requested</code>, <code>discovering</code>, <code>selecting</code>, <code>building</code>, and terminal <code>completed</code>, <code>no-op</code>, <code>skipped</code>, <code>blocked</code>, <code>failed</code>, <code>cancelled</code>, or <code>unknown</code>. A cycle completes when its results are durably published; an opportunity can remain awaiting human review after the active-cycle lock is released.</p>
|
|
380
|
+
<p>Pause prevents new child starts and new cycles; running children can finish and publish their result. <strong>Stop current work</strong> also invokes existing cancellation and retains partial work. <strong>Resume</strong> rechecks policy and capacity. Automatic restart never grants a fresh budget to a blocked or interrupted child. An explicit resume is a new bounded allocation with cumulative usage visible.</p>
|
|
381
|
+
<p>A paused cycle waiting between stages keeps its last stage and a durable wait reason; it neither holds a provider slot nor silently becomes a new cycle. <strong>Run now</strong> requires an active team. Repeated failures with the same unresolved cause block further automatic attempts until the relevant configuration/input changes or the owner explicitly retries; a new scheduled date alone does not authorize repeating a failed build.</p>
|
|
382
|
+
<p>Project deletion or repository removal blocks pending dispatch and cancels active owned children through existing cancellation. Retain history and branches for inspection. Archiving a team disables its trigger without treating its unmerged results as shipped or silently deleting them.</p>
|
|
383
|
+
<h2 id="6-discovery-and-opportunity-selection">6 Discovery and opportunity selection</h2>
|
|
384
|
+
<h3 id="evidence-collection">Evidence collection</h3>
|
|
385
|
+
<p>Build a bounded source manifest from the selected repository, recent changes since the previous cycle, existing run findings, open opportunity/decision records, accepted project memory, and explicitly enabled issue/PR integrations already available in Code Flow. Also include known manual work so a team can avoid proposing work already underway.</p>
|
|
386
|
+
<p>Record source IDs, revisions, timestamps, branch/commit applicability, content digests, and omissions caused by limits or unavailable connections. Resolve evidence references in the host; the model cannot assert that an invented issue, path or test result is verified. External text retains its provenance and current untrusted-source treatment through summaries and candidate reports.</p>
|
|
387
|
+
<p>Repository access is sufficient for technical findings. Product feature ideas without user evidence are labeled hypotheses. Live app exploration is optional and uses an owner-configured launch profile and existing browser capability where available. Do not claim a workflow was exercised when the team only inspected source.</p>
|
|
388
|
+
<p>Skip expensive discovery when the input fingerprint is unchanged: base commit, mission revision, enabled source revisions, decisions and relevant memory revisions. Add a configurable full rescan interval, initially four weeks, so unchanged code can still receive a fresh review. A skipped or empty cycle is a successful outcome and creates no artificial improvement quota.</p>
|
|
389
|
+
<h3 id="auto-team-discovery-contract">Auto team discovery contract</h3>
|
|
390
|
+
<p>Add a server-owned discovery contract to Auto team rather than registering a new agent runtime. It must:</p>
|
|
391
|
+
<ul>
|
|
392
|
+
<li>Permit only <code>investigation</code> tasks in both the initial plan and every coordinator revision.</li>
|
|
393
|
+
<li>Designate one reporting task whose dependencies include all required investigations.</li>
|
|
394
|
+
<li>Use a discovery-specific plan/outcome schema with a versioned <code>project-opportunities/v1</code> report. Keep ordinary and legacy Auto team schemas compatible.</li>
|
|
395
|
+
<li>Preserve the current dynamic provider-ID schema and validate every initial or revised member against the recorded unattended inventory. Do not assume a provider supplies native constrained JSON, live steering or scoped team tools.</li>
|
|
396
|
+
<li>Bound candidate count, text lengths, source references and acceptance criteria; publish at most three new visible opportunities per cycle.</li>
|
|
397
|
+
<li>Collect the report from structured output and journal it. Never parse proposals from the final Markdown summary or scrape private memory.</li>
|
|
398
|
+
<li>Include the exact report and digest in independent review context; publish only the report revision that was reviewed.</li>
|
|
399
|
+
<li>Allow an empty report with an evidence-based reason.</li>
|
|
400
|
+
</ul>
|
|
401
|
+
<p>The reporter can be a worker or the coordinator when the allocation permits. Initial planning and coordinator synthesis both count against Auto team's existing coordination limit. Reserve the independent review turn before admitting optional investigation tasks. With the default eight discovery invocations, the coordinator ceiling remains two.</p>
|
|
402
|
+
<p>Persist a discovery review receipt binding the report digest, source manifest, run ID, reviewer step and acceptance verdict. The cycle imports exactly that report revision. A candidate is not approved simply because the same Git HEAD passed an unrelated review.</p>
|
|
403
|
+
<p>Discovery has no implementation repair turn. If review finds a report defect, bounded repairs remain read-only and may revise the report; the generic Auto team repair path must not introduce a write turn. Existing read-mode snapshot/restore, filesystem policy and adapter isolation still apply. Runtime-created worktrees and persisted report artifacts are allowed; source changes are not discovery output.</p>
|
|
404
|
+
<h3 id="deduplication-and-ranking">Deduplication and ranking</h3>
|
|
405
|
+
<p>First compare against active opportunities, rejected/deferred decisions, existing issues/PRs and recent manual runs. Use source keys plus normalized problem identity, affected paths/symbols and acceptance criteria. A repository commit changing must not by itself turn an old idea into a new one. Model similarity suggestions can assist grouping, but the host preserves distinct IDs and decision history.</p>
|
|
406
|
+
<p>For each eligible candidate, record mission alignment, expected impact, evidence confidence, estimated effort and risk with short explanations. Use a deterministic, versioned ranking policy over those estimates, with stable tie-breaking; do not present scores as measured user benefit. Preserve the selection receipt, including why other candidates were deferred.</p>
|
|
407
|
+
<p>Automatic implementation requires all of the following:</p>
|
|
408
|
+
<ul>
|
|
409
|
+
<li><code>build-within-scope</code> is enabled in the saved mission.</li>
|
|
410
|
+
<li>The problem and proposed work fit the allowed categories and paths.</li>
|
|
411
|
+
<li>Evidence is sufficient for the proposed action and has current applicability.</li>
|
|
412
|
+
<li>No active or suppressed matching work exists.</li>
|
|
413
|
+
<li>Acceptance criteria are testable with a configured verification profile.</li>
|
|
414
|
+
<li>The change fits budget, review capacity and size limits.</li>
|
|
415
|
+
<li>No unresolved product decision or excluded-risk change is needed.</li>
|
|
416
|
+
</ul>
|
|
417
|
+
<p>Otherwise keep the idea as a proposal with the reason it needs owner input. Initial exclusions should cover broad rewrites, schema migrations, authentication/permission changes and billing changes unless the owner explicitly authorizes the particular work. New feature experiments may be built when explicitly included in the mission, but their claimed benefit remains a hypothesis until evaluated.</p>
|
|
418
|
+
<h2 id="7-implementation-and-review">7 Implementation and review</h2>
|
|
419
|
+
<p>Convert the selected opportunity revision into a normal <code>auto-team</code> request containing the problem, evidence references, intended outcome, acceptance criteria, allowed paths, exclusions and pinned verification profile. Attach the immutable mission/cycle provenance through the server. Agent-generated report text is contextual evidence, not a new owner instruction.</p>
|
|
420
|
+
<p>Use fresh implementation worktrees from the selected base. If the target branch moved after discovery, mark applicability stale and use a bounded read-only revalidation before implementation; that turn consumes the same cycle budget. If the candidate or base must materially change, record a new candidate revision and selection receipt. Do not silently build an obsolete proposal or carry unused approval across a changed scope.</p>
|
|
421
|
+
<p>Apply saved scope constraints to initial planning, coordinator revisions, every write/integration/repair path, and the final diff. The Auto team validator must reject ownership outside allowed paths or tasks outside the approved goal. After write turns, inspect actual changed files, including untracked files and rename destinations. Excluded paths, changed verification commands, excessive changes or unresolved scope deviations stop automatic integration/readiness and produce an explicit result to inspect.</p>
|
|
422
|
+
<p>Enforce managed ownership at the engine boundary as well as in the new API. Resume, follow-up, revise-goal, whole-team continuation and selective-rerun actions on a managed run must obtain a fresh valid allocation from the team service, preserve lineage, and recheck pause/membership/scope. Generic run endpoints cannot bypass these checks. For an in-place resume, bind the new allocation in the existing run journal; keep the original launch identity intact. Linked new runs receive their own launch claim and receipt.</p>
|
|
423
|
+
<p>These are execution and result gates layered on existing sandbox policies; path checks do not create an OS security boundary. Agents do not gain wider shell/network privileges merely because they belong to a standing team. Check/setup isolation and agent isolation remain separate existing settings and are pinned for each allocation.</p>
|
|
424
|
+
<h3 id="readiness-conditions">Readiness conditions</h3>
|
|
425
|
+
<p>A result becomes <strong>Ready for review</strong> only when the implementation exists, required acceptance evidence is present, configured required checks pass, independent review approves the same final commit, and existing fail-to-pass proof succeeds when enabled. Validate branch ownership and current HEAD against the exact recorded evidence, as the coordinated-result path does today.</p>
|
|
426
|
+
<p>Missing checks, skipped required gates, stale reports, incomplete work or a failed review produce <strong>Needs attention</strong>, not a ready result. An investigation can finish with reviewed evidence without code checks; an implementation cannot borrow that exemption.</p>
|
|
427
|
+
<p>Each review card includes:</p>
|
|
428
|
+
<ul>
|
|
429
|
+
<li>What problem was addressed and why this opportunity was chosen.</li>
|
|
430
|
+
<li>A concise before/after description, with screenshots for visual changes when captured.</li>
|
|
431
|
+
<li>The result branch/commit and links to the diff, checks and independent review.</li>
|
|
432
|
+
<li>A preview action when a configured launch profile exists, otherwise concrete reproduction steps.</li>
|
|
433
|
+
<li>Expected benefit clearly separated from measured improvement.</li>
|
|
434
|
+
<li>Known limitations, usage, and the owner's available decisions.</li>
|
|
435
|
+
</ul>
|
|
436
|
+
<p>Previews are tied to the result worktree and commit. Reuse existing service-launch controls; do not leave previews running indefinitely between cycles. Missing previews do not become fabricated demonstrations.</p>
|
|
437
|
+
<h3 id="owner-decisions-and-shipping">Owner decisions and shipping</h3>
|
|
438
|
+
<div class="table-scroll" tabindex="0"><table>
|
|
439
|
+
<thead>
|
|
440
|
+
<tr>
|
|
441
|
+
<th>Action</th>
|
|
442
|
+
<th>Effect</th>
|
|
443
|
+
</tr>
|
|
444
|
+
</thead>
|
|
445
|
+
<tbody><tr>
|
|
446
|
+
<td>Build this proposal</td>
|
|
447
|
+
<td>Authorizes its exact revision and a displayed bounded allocation; uses the same admission and verification path</td>
|
|
448
|
+
</tr>
|
|
449
|
+
<tr>
|
|
450
|
+
<td>Request changes</td>
|
|
451
|
+
<td>Saves feedback and starts a linked whole-team continuation with a new explicit allocation</td>
|
|
452
|
+
</tr>
|
|
453
|
+
<tr>
|
|
454
|
+
<td>Approve result</td>
|
|
455
|
+
<td>Records product acceptance of the exact result commit; does not merge or publish</td>
|
|
456
|
+
</tr>
|
|
457
|
+
<tr>
|
|
458
|
+
<td>Open PR</td>
|
|
459
|
+
<td>Uses the existing owner-authorized PR flow and records the PR link</td>
|
|
460
|
+
</tr>
|
|
461
|
+
<tr>
|
|
462
|
+
<td>Merge</td>
|
|
463
|
+
<td>Uses existing merge validation and shipping controls against the current source and target</td>
|
|
464
|
+
</tr>
|
|
465
|
+
<tr>
|
|
466
|
+
<td>Later</td>
|
|
467
|
+
<td>Saves a defer-until value and keeps the opportunity out of selection until then</td>
|
|
468
|
+
</tr>
|
|
469
|
+
<tr>
|
|
470
|
+
<td>Reject</td>
|
|
471
|
+
<td>Saves the reason and suppression policy before any branch cleanup</td>
|
|
472
|
+
</tr>
|
|
473
|
+
</tbody></table>
|
|
474
|
+
</div><p>Record <code>accepted</code> and <code>shipped</code> separately. Approving a result or opening a PR is not evidence it reached the product. A local merge receipt or confirmed merged PR can mark it shipped. Moving the result branch invalidates its prior approval/readiness. Remote changes are considered observed only when an existing integration has actually refreshed them.</p>
|
|
475
|
+
<p>The full lifecycle is <code>proposed</code>, <code>selected</code>, <code>implementing</code>, <code>ready</code>, <code>accepted</code>, <code>shipped</code>, with explicit <code>deferred</code>, <code>rejected</code>, <code>blocked</code>, and <code>expired</code> alternatives. A new revision or failed continuation does not erase old result evidence or decisions.</p>
|
|
476
|
+
<h2 id="8-budgets-and-attention-limits">8 Budgets and attention limits</h2>
|
|
477
|
+
<p>Enforce cross-run budgets by reserving a child's complete maximum allocation atomically before launch, then use the existing per-run invocation/time ceilings. A reservation includes retries, schema repair and coordination; it is not only a count of tasks. This avoids adding a second per-provider dispatch counter.</p>
|
|
478
|
+
<p>At settlement, reconcile against durable invocation reservations/metrics, not model-reported usage. Retain the full reservation while a launch is unknown. Release unused allowance only when authoritative accounting proves it was unused; if reliable elapsed-active-time accounting is unavailable, retain the time reservation conservatively through its budget window.</p>
|
|
479
|
+
<p>Charge settled usage to a rolling seven-day window. Outstanding reservations count even when their creation time falls outside that window, so a stuck run cannot become free by aging out. Restart, reschedule, manual <strong>Run now</strong>, agent-requested continuation and schema failures cannot reset allowances. An owner-requested extra allocation is explicit, recorded, and shown beside cumulative use.</p>
|
|
480
|
+
<p>A weekly cycle can finish discovery without launching implementation if the remaining allowance cannot fund planning, work and independent review. Never use the remainder to build a result that cannot be reviewed. Known exhausted providers wait through existing readiness rules within a bounded window; do not silently choose providers outside the configured pool.</p>
|
|
481
|
+
<p>Stop new implementation while two earlier drafts await review or shipping. Accepted but unshipped work remains outstanding unless the owner explicitly parks it. Stop discovery when twelve open opportunities need triage. Suppressed and unchanged candidates do not generate repeat notifications.</p>
|
|
482
|
+
<p>Track provider-reported tokens and API-equivalent cost when available, with unknown values preserved. Invocation counts and active-run time are enforceable product limits; missing provider usage is not zero consumption or evidence that work was free.</p>
|
|
483
|
+
<h2 id="9-memory-and-feedback">9 Memory and feedback</h2>
|
|
484
|
+
<p>Assemble each cycle's context from the saved mission, current priorities, relevant decisions, bounded recent cycle summaries, existing work, and accepted project memory selected through the existing applicability rules.</p>
|
|
485
|
+
<p>Keep three kinds of information separate:</p>
|
|
486
|
+
<div class="table-scroll" tabindex="0"><table>
|
|
487
|
+
<thead>
|
|
488
|
+
<tr>
|
|
489
|
+
<th>Information</th>
|
|
490
|
+
<th>Authority and lifetime</th>
|
|
491
|
+
</tr>
|
|
492
|
+
</thead>
|
|
493
|
+
<tbody><tr>
|
|
494
|
+
<td>Product direction</td>
|
|
495
|
+
<td>Owner-authored mission and explicit revisions</td>
|
|
496
|
+
</tr>
|
|
497
|
+
<tr>
|
|
498
|
+
<td>Opportunity and decision history</td>
|
|
499
|
+
<td>Evidence and authenticated feedback for selection, with revision-specific provenance</td>
|
|
500
|
+
</tr>
|
|
501
|
+
<tr>
|
|
502
|
+
<td>Technical project knowledge</td>
|
|
503
|
+
<td>Existing memory proposals and acceptance rules, including branch/commit applicability</td>
|
|
504
|
+
</tr>
|
|
505
|
+
</tbody></table>
|
|
506
|
+
</div><p>A rejected idea does not become a technical convention. A merged implementation does not automatically accept every memory proposed by its workers. Unverified ideas never become accepted project facts merely because they appeared in several cycles.</p>
|
|
507
|
+
<p>Preserve source trust and allow the owner to inspect why a decision or memory influenced a proposal. Do not copy one worker's private checkpoints into future members as shared team knowledge. New child runs receive portable, attributed context and fresh member identities.</p>
|
|
508
|
+
<p>Feedback can adjust selection preferences within the saved mission. “Avoid this topic” should create an explicit suppression rule visible in team settings; an inferred preference remains a suggestion until the owner accepts it. Permission, budget and source-setting changes always use the mission revision path.</p>
|
|
509
|
+
<h2 id="10-api-and-user-interface">10 API and user interface</h2>
|
|
510
|
+
<p>Add <code>src/project-teams-api.ts</code> as an owner-only boundary consistent with current automation/coordinated execution APIs. Shared accounts must not fall through into it. Scope all read models and notifications to their project and existing permissions; support broader shared-team management separately later.</p>
|
|
511
|
+
<p>Register the new routes in <code>src/filesystem-access.ts</code> for both execution mutations and private evidence access. Owner authentication alone is insufficient when custom filesystem restrictions pause app-managed execution or unscoped private-data access. Apply the same restriction checks to readiness previews, source discovery and evidence reads as well as actual launches.</p>
|
|
512
|
+
<div class="table-scroll" tabindex="0"><table>
|
|
513
|
+
<thead>
|
|
514
|
+
<tr>
|
|
515
|
+
<th>Endpoint</th>
|
|
516
|
+
<th>Purpose</th>
|
|
517
|
+
</tr>
|
|
518
|
+
</thead>
|
|
519
|
+
<tbody><tr>
|
|
520
|
+
<td><code>GET /api/project-teams?project=<id></code></td>
|
|
521
|
+
<td>Team summaries and attention counts</td>
|
|
522
|
+
</tr>
|
|
523
|
+
<tr>
|
|
524
|
+
<td><code>POST /api/project-teams</code></td>
|
|
525
|
+
<td>Create a draft with an idempotency operation ID</td>
|
|
526
|
+
</tr>
|
|
527
|
+
<tr>
|
|
528
|
+
<td><code>GET /api/project-teams/:id</code></td>
|
|
529
|
+
<td>Mission, status, bounded backlog and recent cycles</td>
|
|
530
|
+
</tr>
|
|
531
|
+
<tr>
|
|
532
|
+
<td><code>PUT /api/project-teams/:id</code></td>
|
|
533
|
+
<td>Save a new mission/settings revision with optimistic concurrency</td>
|
|
534
|
+
</tr>
|
|
535
|
+
<tr>
|
|
536
|
+
<td><code>POST /api/project-teams/:id/activate</code></td>
|
|
537
|
+
<td>Validate and activate the linked managed automation</td>
|
|
538
|
+
</tr>
|
|
539
|
+
<tr>
|
|
540
|
+
<td><code>POST /api/project-teams/:id/pause</code></td>
|
|
541
|
+
<td>Prevent new launches</td>
|
|
542
|
+
</tr>
|
|
543
|
+
<tr>
|
|
544
|
+
<td><code>POST /api/project-teams/:id/stop</code></td>
|
|
545
|
+
<td>Pause and cancel current owned work</td>
|
|
546
|
+
</tr>
|
|
547
|
+
<tr>
|
|
548
|
+
<td><code>POST /api/project-teams/:id/resume</code></td>
|
|
549
|
+
<td>Revalidate and re-enable the schedule</td>
|
|
550
|
+
</tr>
|
|
551
|
+
<tr>
|
|
552
|
+
<td><code>POST /api/project-teams/:id/preview</code></td>
|
|
553
|
+
<td>Show readiness, schedule, budgets and current blockers without model calls</td>
|
|
554
|
+
</tr>
|
|
555
|
+
<tr>
|
|
556
|
+
<td><code>POST /api/project-teams/:id/cycles</code></td>
|
|
557
|
+
<td>Run now through normal admission</td>
|
|
558
|
+
</tr>
|
|
559
|
+
<tr>
|
|
560
|
+
<td><code>GET /api/project-teams/:id/cycles/:cycleId</code></td>
|
|
561
|
+
<td>Exact inputs, selection, children, claims, usage and result</td>
|
|
562
|
+
</tr>
|
|
563
|
+
<tr>
|
|
564
|
+
<td><code>POST /api/project-teams/:id/cycles/:cycleId/recover</code></td>
|
|
565
|
+
<td>Reconcile a reviewed unknown claim; never blindly replay it</td>
|
|
566
|
+
</tr>
|
|
567
|
+
<tr>
|
|
568
|
+
<td><code>POST /api/project-teams/:id/opportunities/:opportunityId/decisions</code></td>
|
|
569
|
+
<td>Build, revise, accept, defer or reject a specific revision</td>
|
|
570
|
+
</tr>
|
|
571
|
+
<tr>
|
|
572
|
+
<td><code>POST /api/project-teams/:id/archive</code></td>
|
|
573
|
+
<td>Disable future work and preserve history</td>
|
|
574
|
+
</tr>
|
|
575
|
+
</tbody></table>
|
|
576
|
+
</div><p>Mutation bodies have closed schemas, bounded strings/collections, an expected revision and an operation ID. Stale decisions return <code>409</code> with the current version. Result acceptance also supplies the exact current commit/report identity. A model response is never a substitute for this authenticated action.</p>
|
|
577
|
+
<p>Add <code>ui/project-team.tsx</code> and <code>ui/project-team-state.ts</code>; integrate them with <code>ui/project.tsx</code>, <code>ui/state.ts</code>, <code>ui/types.ts</code> and the current route machinery. Reuse the existing schedule editor and preview, provider/model controls, check-profile selector, run cards, diff panel, and memory inspector.</p>
|
|
578
|
+
<p>Use <code>loadAgents()</code> and existing catalog refresh behavior so the setup screen reflects connections added, disabled or removed in Settings. Show connected but ineligible ACP providers with the reason <strong>Unavailable for scheduled teams</strong> and a link to the existing Agents & models settings; do not offer connection configuration or an execution-policy override inside team setup. Saved interactive presets containing ACP require an eligible replacement before activation.</p>
|
|
579
|
+
<p>The setup screen ends with a concrete summary of what the team may build, when it will run, its budget and how results reach the owner. After activation, the project page shows its mission, next run, remaining budget, active work and review backlog. Keep protocol IDs and orchestration settings in details rather than the main product flow.</p>
|
|
580
|
+
<p>Generalize inbox presentation to <code>run</code> and <code>project-opportunity</code> items while preserving existing <code>prioritizedReviewRuns()</code> behavior for legacy callers. Group managed children under their opportunity/cycle, without counting the same blocker twice. Discovery proposals remain visible even if their child run has no diff. Opening or marking a card read does not approve it.</p>
|
|
581
|
+
<p>Publish project-team state through a scoped topic on the existing <code>src/stream.ts</code> / <code>ui/stream.ts</code> broker, using <code>subscribe()</code> and cleanup on unmount. Do not open a new <code>EventSource</code> per team, card or browser tab. Preserve the current Team inbox subscription and owner/shared-account separation. A server restart reloads authoritative team state; optimistic client updates cannot revive a paused team or replay a decision.</p>
|
|
582
|
+
<h3 id="notifications">Notifications</h3>
|
|
583
|
+
<p>Extend the existing notification candidate/payload model with a project-team subject, retaining old run payload compatibility. Use durable identities such as team/cycle/result-revision or blocker revision. Notify when a result is ready, an actionable proposal needs a decision, or execution fails/needs input. Suppress duplicate child completion alerts for the same published outcome.</p>
|
|
584
|
+
<p>No notification is needed for unchanged input, an empty successful cycle, normal waiting, or repeated identical blockers. Use only destinations already configured by the owner. A weekly digest and additional external integrations can follow after the core workflow works.</p>
|
|
585
|
+
<h2 id="11-delivery-phases">11 Delivery phases</h2>
|
|
586
|
+
<p>All new behavior remains behind <code>CODEFLOW_PROJECT_TEAMS_ENABLED</code> and explicit per-team activation. The existing <code>CODEFLOW_AUTO_TEAM_ENABLED</code> gate must also permit new child runs. Initial implementation proceeds in these dependent slices; implementing the plan does not require a database migration or a new Node baseline.</p>
|
|
587
|
+
<div class="table-scroll" tabindex="0"><table>
|
|
588
|
+
<thead>
|
|
589
|
+
<tr>
|
|
590
|
+
<th>Phase</th>
|
|
591
|
+
<th>Deliverables and main files</th>
|
|
592
|
+
<th>Completion criteria</th>
|
|
593
|
+
</tr>
|
|
594
|
+
</thead>
|
|
595
|
+
<tbody><tr>
|
|
596
|
+
<td>P0 Contracts and durable state</td>
|
|
597
|
+
<td><code>project-team-model.ts</code>, <code>project-team-store.ts</code>, <code>provider-eligibility.ts</code>, mission revisions, lifecycle reducer, budgets and operation receipts</td>
|
|
598
|
+
<td>Concurrent edits fail clearly; invalid/corrupt state cannot launch; dynamic IDs are preserved while ACP/ineligible extensions are rejected for managed work</td>
|
|
599
|
+
</tr>
|
|
600
|
+
<tr>
|
|
601
|
+
<td>P1 Managed scheduling and recovery</td>
|
|
602
|
+
<td><code>automation.ts</code>, <code>project-teams.ts</code>, <code>server.ts</code>, <code>filesystem-access.ts</code>, engine admission/receipt helper</td>
|
|
603
|
+
<td>One scheduled occurrence creates one cycle; effective provider eligibility precedes role resolution; two-store activation recovers; ambiguous launch blocks replay; ordinary automations/sweeps still behave as before</td>
|
|
604
|
+
</tr>
|
|
605
|
+
<tr>
|
|
606
|
+
<td>P2 Discovery on Auto team</td>
|
|
607
|
+
<td><code>patterns/auto-team.ts</code>, <code>patterns/auto-team-model.ts</code>, <code>teams.ts</code>, <code>project-team-discovery.ts</code>, engine report persistence</td>
|
|
608
|
+
<td>A fake-agent cycle yields independently reviewed typed opportunities or a no-op; no discovery path dispatches a write turn; reports survive no-diff cleanup</td>
|
|
609
|
+
</tr>
|
|
610
|
+
<tr>
|
|
611
|
+
<td>P3 Selection and bounded implementation</td>
|
|
612
|
+
<td><code>project-team-policy.ts</code>, <code>project-teams.ts</code>, engine scope/continuation hooks</td>
|
|
613
|
+
<td>A valid opportunity creates one implementation child; scope, backlog, budget and membership gates prevent ineligible launches; exact final evidence controls readiness</td>
|
|
614
|
+
</tr>
|
|
615
|
+
<tr>
|
|
616
|
+
<td>P4 Project workspace and decisions</td>
|
|
617
|
+
<td><code>project-teams-api.ts</code>, <code>ui/project-team.tsx</code>, <code>ui/project-team-state.ts</code>, <code>project.tsx</code>, <code>automations.tsx</code>, <code>review-inbox.ts</code>, existing stream broker</td>
|
|
618
|
+
<td>Owner can activate, inspect, approve, revise, defer, reject, pause and recover; provider availability/reasons refresh from Settings; project-team updates share the existing stream</td>
|
|
619
|
+
</tr>
|
|
620
|
+
<tr>
|
|
621
|
+
<td>P5 Feedback and notification integration</td>
|
|
622
|
+
<td><code>project-team-context.ts</code>, existing memory retrieval, notifications, UI history/usage</td>
|
|
623
|
+
<td>Next cycle respects rejected/deferred work; technical memory remains separately governed; one actionable change produces one notification candidate</td>
|
|
624
|
+
</tr>
|
|
625
|
+
<tr>
|
|
626
|
+
<td>P6 Reliability and pilot release</td>
|
|
627
|
+
<td>Fault tests, browser tests, bounded evaluation script and user docs</td>
|
|
628
|
+
<td>Restart, stale evidence, quota, cancellation, deletion, privacy and old-data compatibility pass; pilot results are recorded before expanding rollout</td>
|
|
629
|
+
</tr>
|
|
630
|
+
</tbody></table>
|
|
631
|
+
</div><p>P0–P2 provide an internal proposal-only milestone. P3–P5 deliver the first complete user promise, including an implemented improvement before owner acceptance. P6 is the release gate. Do not present the proposal-only milestone as completion of the feature.</p>
|
|
632
|
+
<h3 id="concrete-implementation-order">Concrete implementation order</h3>
|
|
633
|
+
<ol>
|
|
634
|
+
<li>Define types, reducers, store semantics and effective provider eligibility before connecting live launches.</li>
|
|
635
|
+
<li>Add managed automation previews and cycle admission using a fake launch adapter.</li>
|
|
636
|
+
<li>Establish durable engine admission and exact child ownership/recovery.</li>
|
|
637
|
+
<li>Add read-only discovery contracts and report capture; prove every repair path stays read-only.</li>
|
|
638
|
+
<li>Implement host validation, duplicate handling, selection and allocation.</li>
|
|
639
|
+
<li>Launch an ordinary Auto team implementation from one selected opportunity.</li>
|
|
640
|
+
<li>Validate final results, preserve discovery evidence and support verified whole-team revision.</li>
|
|
641
|
+
<li>Add project setup/workspace, inbox decisions and managed automation controls.</li>
|
|
642
|
+
<li>Add feedback context, notifications and meaningful usage/outcome reporting.</li>
|
|
643
|
+
<li>Complete fault/compatibility tests and run the opt-in pilot.</li>
|
|
644
|
+
</ol>
|
|
645
|
+
<p>Keep helper extraction small. Reuse deferred/coordinated persistence and receipt patterns where appropriate, but do not rewrite those services into a general workflow framework to deliver this feature.</p>
|
|
646
|
+
<h2 id="12-verification-strategy">12 Verification strategy</h2>
|
|
647
|
+
<p>Extend the current fake-provider and isolated Git-repository harnesses. Core CI must not spend real provider quota or require connected external services.</p>
|
|
648
|
+
<div class="table-scroll" tabindex="0"><table>
|
|
649
|
+
<thead>
|
|
650
|
+
<tr>
|
|
651
|
+
<th>Test area</th>
|
|
652
|
+
<th>Required cases</th>
|
|
653
|
+
</tr>
|
|
654
|
+
</thead>
|
|
655
|
+
<tbody><tr>
|
|
656
|
+
<td>Model/store</td>
|
|
657
|
+
<td>Mission revision conflicts; request idempotency with changed-body rejection; one-active-team constraint; malformed state; bounded retention; atomic claim/selection/budget writes</td>
|
|
658
|
+
</tr>
|
|
659
|
+
<tr>
|
|
660
|
+
<td>Provider eligibility</td>
|
|
661
|
+
<td>Explicit ACP selection, default pool, <code>auto</code> resolution, inherited Full-access preset and managed Run now are all rejected/filtered before launch; coordinator revisions cannot add an ineligible provider; unavailable permitted fallback blocks clearly; ordinary dynamic-ID behavior remains supported</td>
|
|
662
|
+
</tr>
|
|
663
|
+
<tr>
|
|
664
|
+
<td>Provider settings and restore</td>
|
|
665
|
+
<td>Settings refresh updates inventory/reasons; disabled/removed/changed bindings stop dependent dispatch; opaque catalog IDs survive validation; unknown usage stays unknown; portable team backups cannot restore executable authority</td>
|
|
666
|
+
</tr>
|
|
667
|
+
<tr>
|
|
668
|
+
<td>Scheduling</td>
|
|
669
|
+
<td>Daily/weekly/interval timezone previews; DST; missed-run policy; restart before/after occurrence advancement; concurrent manual/scheduled admission; no overlapping cycles</td>
|
|
670
|
+
</tr>
|
|
671
|
+
<tr>
|
|
672
|
+
<td>Activation</td>
|
|
673
|
+
<td>Crash after each cross-store write; missing/orphan trigger; activation persistence failure; managed-trigger edits cannot bypass pause or settings</td>
|
|
674
|
+
</tr>
|
|
675
|
+
<tr>
|
|
676
|
+
<td>Launch recovery</td>
|
|
677
|
+
<td>Failure before claim, before dispatch, during dispatch, before receipt, after child completion; one matching run, no matching run and conflicting matches</td>
|
|
678
|
+
</tr>
|
|
679
|
+
<tr>
|
|
680
|
+
<td>Discovery</td>
|
|
681
|
+
<td>All tasks and revisions stay investigations; write-mode repair rejected; malformed/oversized/empty reports; invented evidence; independent report review; no-diff preservation</td>
|
|
682
|
+
</tr>
|
|
683
|
+
<tr>
|
|
684
|
+
<td>Selection</td>
|
|
685
|
+
<td>Duplicate wording, same issue after new commit, rejected topic, defer expiry, existing manual/PR work, low evidence, stale source and insufficient budget</td>
|
|
686
|
+
</tr>
|
|
687
|
+
<tr>
|
|
688
|
+
<td>Implementation</td>
|
|
689
|
+
<td>Allowed paths and actual changed paths agree; untracked/renamed excluded files; changed check configuration; stale base; missing acceptance work; exact final-head review/proof</td>
|
|
690
|
+
</tr>
|
|
691
|
+
<tr>
|
|
692
|
+
<td>Continuation</td>
|
|
693
|
+
<td>Request changes uses whole-team verification; direct follow-up invalidates readiness; generic resume/follow-up cannot bypass team budget or paused state</td>
|
|
694
|
+
</tr>
|
|
695
|
+
<tr>
|
|
696
|
+
<td>Budget</td>
|
|
697
|
+
<td>Retries counted; concurrent reservations; unknown receipts retain allowance; rolling-window boundaries; restart/resume cannot reset usage; unknown token cost remains unknown</td>
|
|
698
|
+
</tr>
|
|
699
|
+
<tr>
|
|
700
|
+
<td>Human decisions</td>
|
|
701
|
+
<td>Stale revision/commit rejected; approval differs from merge; rejected reason retained before cleanup; accepted/unshipped work occupies review capacity</td>
|
|
702
|
+
</tr>
|
|
703
|
+
<tr>
|
|
704
|
+
<td>Access/lifecycle</td>
|
|
705
|
+
<td>Shared identities cannot dispatch; custom filesystem restrictions block new private/execution routes; removed project/repository blocks and cancels work; archive preserves results; global feature disable prevents new launches</td>
|
|
706
|
+
</tr>
|
|
707
|
+
<tr>
|
|
708
|
+
<td>Notifications</td>
|
|
709
|
+
<td>One actionable cycle alert; suppression of child duplicates; no-op quiet; new blocker revision alerts; restart deduplication; existing destinations/settings honored</td>
|
|
710
|
+
</tr>
|
|
711
|
+
<tr>
|
|
712
|
+
<td>Browser</td>
|
|
713
|
+
<td>Setup to ready result to revision/approval; propose-only path; failure/recovery; small screens, dark/light modes, keyboard navigation and axe accessibility checks</td>
|
|
714
|
+
</tr>
|
|
715
|
+
<tr>
|
|
716
|
+
<td>Browser connections</td>
|
|
717
|
+
<td>Project-team topic shares the existing broker with run/Team inbox/terminal topics; multiple tabs, leader loss and unmount release subscriptions; owner-to-shared identity changes cannot expose team evidence</td>
|
|
718
|
+
</tr>
|
|
719
|
+
</tbody></table>
|
|
720
|
+
</div><p>Proposed test files: <code>test/project-team-model.test.ts</code>, <code>test/project-team-store.test.ts</code>, <code>test/project-team-service.test.ts</code>, <code>test/project-team-discovery.test.ts</code>, <code>test/project-team-engine.test.ts</code>, <code>test/project-teams-api.test.ts</code>, and <code>test/e2e/project-teams.e2e.ts</code>.</p>
|
|
721
|
+
<p>Extend existing <code>automation.test.ts</code>, <code>auto-team.test.ts</code>, <code>auto-team-model.test.ts</code>, <code>team-memory.test.ts</code>, <code>review-inbox.test.ts</code>, <code>notifications.test.ts</code>, <code>projects.test.ts</code>, <code>acp-connections.test.ts</code>, <code>acp.test.ts</code>, <code>maintenance.test.ts</code>, <code>shared-access.test.ts</code>, and relevant deferred/coordinated regression tests. Add focused <code>provider-eligibility.test.ts</code> coverage. Fake-provider fixtures must cover both ordinary Auto team output and the mode-specific discovery schema; use <code>fake-acp.mjs</code> to assert incompatible managed requests fail without starting a provider process.</p>
|
|
722
|
+
<p>Extend <code>test/e2e/settings.e2e.ts</code> and <code>test/e2e/connections.e2e.ts</code> for the provider picker and shared-stream integration. The current connection tests already include the Team inbox topic in their subscription counts; include project-team subscriptions without regressing cross-tab sharing or removing existing topics. Preserve the streamed tool-update behavior in <code>ui/run.tsx</code> by reusing its transcript components.</p>
|
|
723
|
+
<p>For implementation validation, run focused tests for each slice, then <code>npm run typecheck</code>, <code>npm test</code>, <code>npm run build</code>, and the relevant browser tests. Run the broader end-to-end suite before release when shared routing or inbox changes warrant it. No runtime test result is claimed by this planning document.</p>
|
|
724
|
+
<p>The newly available <code>npm run test:acp:live</code> is a separately invoked, usage-consuming interactive compatibility check. It is not a CI prerequisite for standing teams and does not establish support for scheduled ACP work. Use fake protocol/process fixtures for this feature's ACP exclusion tests.</p>
|
|
725
|
+
<h2 id="13-pilot-and-rollout">13 Pilot and rollout</h2>
|
|
726
|
+
<p>Add <code>scripts/evaluate-project-teams.ts</code> using the established evaluation approach. Fake mode proves control flow. Real mode is explicitly invoked with a repository, provider pool and hard budget, and emits immutable reports without changing feature flags or shipping changes.</p>
|
|
727
|
+
<p>Use a small opt-in pilot on Code Flow and one other repository with known owner priorities. Record at least ten completed cycles across both, including unchanged input, a rejected proposal, a deferred idea, a failed check, an accepted implementation and a pause/restart. These are proposed observation requirements; they do not establish model quality by themselves.</p>
|
|
728
|
+
<p>Measure:</p>
|
|
729
|
+
<ul>
|
|
730
|
+
<li>Proposals the owner considered worth pursuing, and implementations actually accepted/shipped.</li>
|
|
731
|
+
<li>Review and correction time, repeat suggestions, and rejected-work recurrence.</li>
|
|
732
|
+
<li>Invocations and active time per accepted improvement, with unknown provider usage shown explicitly.</li>
|
|
733
|
+
<li>No-op/skip frequency, selection reasons, verification failures and stale-evidence rejections.</li>
|
|
734
|
+
<li>Time spent blocked on missing product context, configuration or human decisions.</li>
|
|
735
|
+
</ul>
|
|
736
|
+
<p>Require zero duplicate child launches in fault tests, zero bypasses of the explicit scope/budget/approval gates, and correct evidence for every ready result before the pilot. Keep the feature experimental until owner feedback shows that its output is worth the attention it consumes. Do not promote based on agent count, lines changed, or number of proposals generated.</p>
|
|
737
|
+
<p>Disabling the feature prevents new cycles and automatic stage advancement while preserving history and review access. Stopping active work remains a distinct explicit action. Existing ordinary automations, saved runs, and Auto team workflows retain their behavior.</p>
|
|
738
|
+
<h2 id="14-acceptance-example">14 Acceptance example</h2>
|
|
739
|
+
<ol>
|
|
740
|
+
<li>The owner connects a repository, selects its base branch, saves a mission to improve onboarding, and enables a weekly team with the default budget.</li>
|
|
741
|
+
<li>At the scheduled time, exactly one cycle pins the repository and source inputs.</li>
|
|
742
|
+
<li>Discovery returns three evidence-bearing opportunities and independent review accepts the report.</li>
|
|
743
|
+
<li>The service suppresses one duplicate, records why another is deferred, and selects one eligible improvement within budget.</li>
|
|
744
|
+
<li>Auto team builds it in isolated worktrees and verifies the final result.</li>
|
|
745
|
+
<li>The owner sees one ready card containing the problem, rationale, preview or reproduction steps, diff and real check/review evidence.</li>
|
|
746
|
+
<li>The owner requests a change. A bounded whole-team continuation produces a newly verified result; the old approval state is not carried forward.</li>
|
|
747
|
+
<li>The owner approves and separately merges or opens a PR through the existing controls.</li>
|
|
748
|
+
<li>The next cycle remembers the decision, avoids repeating the same work, and can return no new work when nothing warrants attention.</li>
|
|
749
|
+
</ol>
|
|
750
|
+
<p>The implementation is complete when this path works alongside the failure/recovery cases, and the owner can leave the team enabled without managing every agent turn or receiving an unbounded backlog.</p>
|
|
751
|
+
<h2 id="implementation-validation-record-19-october-2026">Implementation validation record (19 October 2026)</h2>
|
|
752
|
+
<ul>
|
|
753
|
+
<li>PR preparation synchronized the implementation with <code>7933ecf</code> (Kilo/Cline ACP connections). Review corrected newest-run selection, retained full revision feedback without dropping acceptance criteria, and made archived history immutable through API decisions and recovery. All three regression tests reproduced the issues before the fixes and pass afterward.</li>
|
|
754
|
+
<li>TypeScript typecheck and both UI/host builds pass.</li>
|
|
755
|
+
<li>Full regression run after synchronization and review fixes: 1,072 tests, 1,065 passed, seven environment-gated skips, zero failures.</li>
|
|
756
|
+
<li>Additional focused runs after implementation review cover the new lifecycle/fault cases, notification and automation regressions, restored records, shared access boundaries and exact-SHA publication. All pass; counts overlap the full suite and are not additive.</li>
|
|
757
|
+
<li>Browser regression selection: 23 tests passed across project teams, Auto team, automation controls, shared stream connection limits, shared projects, filesystem policy, notifications, settings and accessibility.</li>
|
|
758
|
+
<li>The later full browser run recorded 95 passes, one memory-graph refresh timing failure, and one shared-project Chrome teardown failure after its six assertions passed. The memory test now waits for the published graph node; its three-test file passes. The shared-project file also passes all six tests and exits normally on an isolated retry. The full browser command is not recorded as a clean pass; CI must confirm the complete run.</li>
|
|
759
|
+
<li>Shipping/GitHub regression selection: 40 tests passed.</li>
|
|
760
|
+
<li>PR #29 CI follow-up: both browser jobs timed out after the standing-team assertion passed. Its fixture now owns the Node server directly, drains stdout, waits for shutdown, and removes temporary data after exit; the isolated browser test passes and exits normally. The PR merge path also rechecks the managed-result approval gate. Regression tests reproduced rejected-result, changed-mission and archived-team merge bypasses before the fix; all three are blocked afterward, and an unchanged approved result still merges and becomes shipped. Typecheck and the 40-test project-team/GitHub selection pass after these fixes.</li>
|
|
761
|
+
<li>The next complete browser run exited normally with 95 passes and one Kilo/Cline settings-search timing failure. Settings now clears the search before the section becomes interactive, and the preset test waits for the destination section before typing. All seven settings browser tests and typecheck pass after that correction; the complete browser suite and CI are rerun for the final commit.</li>
|
|
762
|
+
<li>Final browser validation: all 96 tests pass locally, and both GitHub browser jobs pass at <code>7a100f5</code>. One Ubuntu Node 22 job exposed the cancellation fixture reading an in-flight launch revision; the test now waits for the durable running receipt and queued reconciliation before issuing its owner decision. Fixture teardown also shuts down run managers before deleting data. The corrected cancellation test passes three consecutive runs, the complete project-team file passes all 25 tests, and typecheck passes.</li>
|
|
763
|
+
<li>A later CI run reproduced the shared-project Chrome teardown stall after all six tests passed. That fixture now owns Chrome through <code>BrowserServer</code>, terminates the owned browser process during teardown, and waits for bounded server shutdown before deleting its files. Shared-project and SSH browser files pass together (seven tests), and typecheck passes. An isolated SSH fixture connection failure also passes on local retry; it remains covered by both complete CI browser jobs.</li>
|
|
764
|
+
<li>Synthetic pilot: ten cycles across two isolated fixtures; four child launches, 14 observed fake CLI calls, two verified drafts and eight no-ops. The redacted measurement summary is <a href="https://github.com/midhunxavier/code-flow/blob/main/docs/evaluations/project-teams-synthetic-2026-10-19.json">saved here</a>.</li>
|
|
765
|
+
<li>Real CLI/provider quality, real product usefulness and owner acceptance have not been measured. These remain explicit rollout gates, rather than inferred from synthetic output.</li>
|
|
766
|
+
</ul>
|
|
767
|
+
<p><a href="index.html">Documentation library</a> · <a href="architecture.html">Development guide</a></p>
|
|
768
|
+
</article><footer><a href="https://github.com/midhunxavier/code-flow/blob/main/docs/project-teams-implementation-plan.md">Edit this page on GitHub ↗</a><span>code-flow · 0.1.0-preview.1 · <a href="font-license.txt">Font license</a></span></footer><nav class="pagination" aria-label="Adjacent guides"><a href="dynamic-teams-plan-review-0.html"><small>← Previous</small>Review 0: Dynamic teams implementation plan</a><a href="performance-results.html"><small>Next →</small>Measured performance: 19 October 2026</a></nav></main>
|
|
769
|
+
<aside class="on-page" aria-label="On this page"><strong>On this page</strong><a class="depth-2" href="#implementation-record">Implementation record</a><a class="depth-2" href="#1-product-behavior">1 Product behavior</a><a class="depth-3" href="#initial-defaults">Initial defaults</a><a class="depth-3" href="#first-release-boundary">First release boundary</a><a class="depth-2" href="#2-existing-foundations-and-required-extensions">2 Existing foundations and required extensions</a><a class="depth-3" href="#behaviors-that-cannot-be-reused-unchanged">Behaviors that cannot be reused unchanged</a><a class="depth-3" href="#provider-eligibility-on-the-current-baseline">Provider eligibility on the current baseline</a><a class="depth-2" href="#3-architecture-and-execution-ownership">3 Architecture and execution ownership</a><a class="depth-2" href="#4-data-model-and-persistence">4 Data model and persistence</a><a class="depth-3" href="#store-design">Store design</a><a class="depth-2" href="#5-scheduling-and-launch-recovery">5 Scheduling and launch recovery</a><a class="depth-3" href="#managed-trigger-contract">Managed trigger contract</a><a class="depth-3" href="#admission-and-advancement">Admission and advancement</a><a class="depth-3" href="#lifecycle-rules">Lifecycle rules</a><a class="depth-2" href="#6-discovery-and-opportunity-selection">6 Discovery and opportunity selection</a><a class="depth-3" href="#evidence-collection">Evidence collection</a><a class="depth-3" href="#auto-team-discovery-contract">Auto team discovery contract</a><a class="depth-3" href="#deduplication-and-ranking">Deduplication and ranking</a><a class="depth-2" href="#7-implementation-and-review">7 Implementation and review</a><a class="depth-3" href="#readiness-conditions">Readiness conditions</a><a class="depth-3" href="#owner-decisions-and-shipping">Owner decisions and shipping</a><a class="depth-2" href="#8-budgets-and-attention-limits">8 Budgets and attention limits</a><a class="depth-2" href="#9-memory-and-feedback">9 Memory and feedback</a><a class="depth-2" href="#10-api-and-user-interface">10 API and user interface</a><a class="depth-3" href="#notifications">Notifications</a><a class="depth-2" href="#11-delivery-phases">11 Delivery phases</a><a class="depth-3" href="#concrete-implementation-order">Concrete implementation order</a><a class="depth-2" href="#12-verification-strategy">12 Verification strategy</a><a class="depth-2" href="#13-pilot-and-rollout">13 Pilot and rollout</a><a class="depth-2" href="#14-acceptance-example">14 Acceptance example</a><a class="depth-2" href="#implementation-validation-record-19-october-2026">Implementation validation record (19 October 2026)</a></aside>
|
|
770
|
+
<aside id="help-panel" hidden aria-labelledby="help-title"><div class="chat-heading"><div><span class="eyebrow">Your AI companion</span><h2 id="help-title">Ask code-flow</h2></div><button id="close-help" aria-label="Close AI companion">✕</button></div><div class="chat-toolbar"><span>Grounded in your docs</span><button id="new-chat">New chat</button></div><div id="help-messages" role="log" aria-label="Help conversation" aria-live="polite"><div id="chat-welcome"><span class="chat-mark" aria-hidden="true">✦</span><h3>What would you like to do?</h3><p>Let’s find your next step. Ask about setup, workflows or something that’s unclear.</p><div class="suggestions"><button type="button" data-question="How do I start my first run?">Start my first run ↗</button><button type="button" data-question="What should I do when a check fails?">Understand a failed check ↗</button></div></div></div><p id="help-status" role="status">Checking your installed CLIs…</p><button id="retry-help" hidden>Retry connection</button><form id="help-form" hidden><label class="sr-only" for="question">Your question</label><textarea id="question" rows="3" maxlength="4000" placeholder="Ask a question…" required></textarea><div class="composer-controls"><label class="sr-only" for="help-agent">Use your CLI</label><select id="help-agent"></select><button type="button" id="stop-help" hidden>Stop</button><button class="primary" id="send-help" aria-label="Send message">Send ↗</button></div><small>Uses your CLI login and quota. Shift + Enter for a new line.</small></form><a id="help-guide" href="help.html">About your local companion →</a></aside></div>
|
|
771
|
+
<dialog id="search-dialog" aria-labelledby="search-title"><div class="dialog-title"><h2 id="search-title">Search documentation</h2><button data-close="search-dialog" aria-label="Close search">✕</button></div><label class="sr-only" for="search">Search all guides</label><input id="search" type="search" placeholder="Search workflows, settings, troubleshooting…" autocomplete="off"><div id="search-results" aria-live="polite"></div></dialog>
|
|
772
|
+
</body></html>
|