Goals end at achieved, not at an empty board: the goal-review loop

The board draining to 280/280 done left the company idle under a
still-active goal, with 24 markdown files and zero code as its life's work.
Two structural gaps caused it: goals had no lifecycle (status was written
once as 'active' and never read again — nothing re-engages anyone when the
last task closes), and nothing anywhere distinguished plans from product,
so every "engineering" objective closed on documents.

The loop, closed:
- tasks.origin (migration 055) records provenance: chat_wake for mention
  vehicles (backfilled from their runs), goal_review for checkpoints, null
  for real work. Chatter and checkpoints can therefore never count as
  progress.
- spawnGoalReviews (each worker tick): an active goal with zero open tasks
  and real progress since the last review gets ONE review task for the goal
  owner. The review demands evidence — list the workspace, read the code,
  run the tests; documents are how work starts, not proof it happened — and
  must end in exactly one of: complete_goal, or the next wave of tasks with
  requires_filesystem engineering. A review closed with neither spawns
  nothing: termination is structural, not a counter.
- complete_goal (CEO or goal owner) finally lets someone say a goal is
  achieved, audited.
- CEO and department-head voices now state the doctrine: a goal that
  promises software closes on code that builds and passes tests in the
  workspace, and implementation is delegated with requires_filesystem: true.

On the live profile this arms one review: the active platform goal has 0
open tasks and 21 real completed ones, so the CEO gets the checkpoint on
next launch and the company starts building instead of stopping.
This commit is contained in:
ZacharyZhang-NY committed 2026-07-09 20:29:42 -04:00
1 parent 291816aa06
commit 26de3129b1
14 files changed
+365 -4

No files matched your search

+36
View File
@@ -0,0 +1,36 @@
import { AuditService } from "./audit-service";
import type { AgentToolContext, AgentToolDeps } from "./agent-tools";
import type { ToolDefinition } from "./provider-tool-turn";
export const GOAL_TOOLS: ToolDefinition[] = [
{
name: "complete_goal",
description: "Mark the goal your current task belongs to as achieved. CEO or the goal's owner only. Call it only when the evidence shows the goal is genuinely delivered — for software, that means code in the workspace that builds and passes its tests, not documents about it.",
parameters: { type: "object", additionalProperties: false, properties: {}, required: [] },
},
];
export function completeGoalTool(deps: AgentToolDeps, ctx: AgentToolContext): string {
if (!ctx.taskGoalId) return "ERROR: this task is not attached to a goal, so there is nothing to complete.";
const goal = deps.db.prepare("select id, title, status, owner_agent_id from goals where id = ? and org_id = ?")
.get(ctx.taskGoalId, ctx.orgId) as { id: string; title: string; status: string; owner_agent_id: string | null } | undefined;
if (!goal) throw new Error("Goal was not found.");
const acting = deps.db.prepare("select role_level from agents where id = ? and org_id = ?")
.get(ctx.agent.id, ctx.orgId) as { role_level: string } | undefined;
if (acting?.role_level !== "c_suite" && ctx.agent.id !== goal.owner_agent_id) {
return "ERROR: Only the CEO or the goal's owner can complete a goal. Report your evidence to them instead.";
}
if (goal.status !== "active") return `Goal "${goal.title}" is already ${goal.status}.`;
deps.db.prepare("update goals set status = 'achieved', updated_at = ? where id = ? and org_id = ?")
.run(new Date().toISOString(), goal.id, ctx.orgId);
new AuditService(deps.db).record({
orgId: ctx.orgId,
entityType: "goal",
entityId: goal.id,
actorType: "agent",
actorId: ctx.agent.id,
action: "status_changed",
payload: { status: "achieved" },
});
return `Goal "${goal.title}" is marked achieved. Tell the team.`;
}