@innofeight/global-workflow 0.0.1 → 0.0.2

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.
@@ -0,0 +1,653 @@
1
+ - Every imported/reconstructed ticket must pass `ENTRY REVIEW` before `IN PROGRESS`; repository architecture and requirements remain authoritative over ticket wording.
2
+ - Only genuine Human QA uses the native ClickUp checklist named `Human QA Acceptance Criteria`; Task Acceptance Criteria remain description-only.
3
+ - An agent must not move or recommend a ticket to `READY FOR REVIEW` until every applicable criterion, verification, evidence, and durable-documentation requirement is satisfied or an explicit not-applicable exception is recorded.
4
+ - `BLOCKED`, `READY FOR MERGE`, and `READY FOR RELEASE` are Active. They do not clear dependencies, and `READY FOR MERGE` never authorizes an agent merge.
5
+ - `COMPLETE` is the only closed and dependency-clearing status.
6
+ - An execution-authorizing prompt permits the stated operations after safety inspection; it is not answered with a preflight-only response unless an actual unsafe or contradictory state blocks execution.
7
+
8
+ These workflow states do not override human approval gates for architecture, dependency admission, milestone acceptance, merge, release, publication, security, or scope changes.
9
+ ## Repository-local scratch and neutral validation
10
+
11
+ Normal agent-authored project scratch belongs under the active repository's
12
+ ignored `.codex-tmp/` hierarchy. Agent-created neutral or disposable validation
13
+ workspaces also belong under `.codex-tmp/`, using a fresh isolated subdirectory.
14
+ Do not use `/tmp`, `/private/tmp`, `$TMPDIR`, Desktop, Downloads, or another
15
+ external location merely for convenience.
16
+
17
+ This rule improves filesystem and sandbox ergonomics; it is not permission
18
+ bypass authority and does not weaken sandboxing, filesystem controls, or shell
19
+ approval. Tool-owned internal temporary lifecycles remain permitted when a
20
+ package manager, compiler, test framework, library, or OS API owns creation and
21
+ cleanup, including legitimate `os.tmpdir()`, `mkdtemp()`, or equivalent use.
22
+
23
+ Repository-local scratch is disposable, non-authoritative, and Git-ignored. It
24
+ must not contain credentials, secrets, signing material, or sensitive PII.
25
+ Promote durable findings and evidence into proper repository or ClickUp
26
+ authority.
27
+
28
+ Neutral-validation isolation still applies. Do not silently use another real
29
+ customer, product, personal, or engineering repository merely because it is
30
+ available or convenient. A neutral workspace must not inherit unrelated source,
31
+ project-specific `AGENTS.md`, existing project context, or unrelated task
32
+ history.
33
+
34
+ A downstream project may use another already-authorized ignored
35
+ repository-local scratch directory only when its own authoritative policy
36
+ explicitly defines it. Otherwise, `.codex-tmp/` is the shared default.
37
+
38
+ ## Git and review
39
+
40
+ - Work on `codex/*` branches. Never modify or push directly to `main`.
41
+ - Codex task branches use `codex/CU-<real-clickup-task-id>-<short-kebab-slug>`; ClickUp's suggested name does not override the `codex/` namespace.
42
+ - A ticket pickup inspects the current branch and worktree before switching. Dirty files, untracked files, conflicts, unsafe Git operations, stale/divergent `main`, or branch collisions require a stop; never stash, clean, reset, discard, commit, resolve, or reuse automatically.
43
+ - Canonical-contract `AC READY` means Task AC is coherent, Human QA applicability and any required canonical HQA criteria are settled, and no known human-governance decision prevents pickup. A complete human-issued `grab ticket <task-id>` prompt then authorizes normal work through `READY FOR REVIEW`. Before branch creation, use the repository acceptance helper to revalidate canonical Task AC and HQA applicability from a complete connector-readable task description; a truncated read never authorizes pickup. Task AC remains description-only and never requires a native checklist or reusable mirror evidence. Only required HQA is mirrored in the sole native checklist named `Human QA Acceptance Criteria`; HQA `NONE` or `NOT APPLICABLE` correctly permits zero native checklists. Reuse unchanged valid HQA mirror evidence without another human stop. Missing, inaccessible, changed, malformed, or unconfirmed required HQA evidence stops Phase 1 for one complete fenced repair block containing the exact checklist name and all exact HQA items, followed by the exact reply `checklist added`. Historical `TASK_AC` mirror records remain readable audit history but never authorize or block new pickup. Every normal start prompt also supplies the exact previous governed ticket from fresh authority; Codex verifies but never guesses/substitutes it, and branch creation requires positive predecessor `COMPLETE` or completion of that exact safely resumable automatic closeout. After branch creation/push, always stop before Entry Review for human GitHub-panel verification and exact reply `branch confirmed`. Mandatory `ENTRY REVIEW` then occurs before `IN PROGRESS`; when it passes without a genuine human-controlled decision, blocker, scope conflict, missing artifact, or unsafe state, continue in the same governed run without a third routine authorization. PR merge is never automatic.
44
+
45
+ - Preserve unrelated and user-authored work. Do not discard, overwrite, stage, or reformat it.
46
+ - Do not merge, self-approve, publish production artifacts, or change repository security rules without explicit human approval.
47
+ ## Regression-first investigation
48
+
49
+ When a previously accepted feature regresses:
50
+
51
+ 1. Identify the exact last-known-good SHA and freeze the current failing worktree.
52
+ 2. Diff the last-known-good tree against the current worktree, including uncommitted changes and generated output as well as generator source.
53
+ 3. Classify relevant changes and produce ranked causal hypotheses before changing implementation code.
54
+ 4. For each hypothesis record its ID, exact changed files/diff, causal mechanism, fit to the observed platform/workflow matrix, predicted additional behavior, confidence, smallest falsifiable secondary experiment, and whether it was previously attempted or ruled out.
55
+ 5. Do not treat correlation as causation or repeat a disproven approach without new evidence.
56
+ 6. Do not close the regression until prevention coverage exists.
57
+ When ticket wording conflicts with repository authority, surface the discrepancy. Do not silently rewrite project requirements to match the ticket, and do not silently rewrite the ticket in a way that conceals the conflict.
58
+
59
+ ## Approved ClickUp statuses
60
+
61
+ | Group | Status | Meaning |
62
+ | ----------- | ---------------------------- | ------------------------------------------------------------------------------------------------------------------------- |
63
+ | Not Started | `TO DO` | Known backlog work. Entry review has not begun. |
64
+ | Active | `ENTRY REVIEW` | The ticket is being checked and refined against current authority before execution. |
65
+ | Active | `IN PROGRESS` | Authorized execution is underway. |
66
+ | Active | `READY FOR QA` | Every fail-closed engineering and tester-readiness gate for required Human QA has passed. |
67
+ | Active | `IN QA` | The human tester has started the governed Human QA battery. |
68
+ | Active | `QA FAILED` | The human tester stopped on a mismatch; evidence is preserved and remediation remains. |
69
+ | Active | `QA PASSED` | The human tester attested the complete required Human QA contract passed. |
70
+ | Active | `READY FOR REVIEW` | Every applicable Acceptance Criteria item and the review-entry gate are satisfied. |
71
+ | Active | `IN REVIEW` | Human/ChatGPT review of work, PR, verification, evidence, and Acceptance Criteria is active. |
72
+ | Active | `READY FOR ADMIN COMPLETION` | Independent administrative review passed for an eligible no-merge class; only trusted human finalizer invocation remains. |
73
+ | Active | `READY FOR MERGE` | Review and merge-gate evidence are complete; explicit human merge remains. |
74
+ | Active | `READY FOR RELEASE` | An actual human-controlled release or publishing operation remains. |
75
+ | Active | `BLOCKED` | Work cannot proceed without an identified decision, action, permission, or state change. |
76
+ | Closed | `COMPLETE` | Every requirement applicable to the ticket is actually finished. |
77
+
78
+ `COMPLETE` is the only closed status. `READY FOR ADMIN COMPLETION`, `READY FOR MERGE`, and `READY FOR RELEASE` remain Active and do not satisfy or clear downstream dependencies.
79
+
80
+ ## Lifecycle
81
+
82
+ For tickets with no Human QA requirement, the normal lifecycle is:
83
+
84
+ `TO DO → ENTRY REVIEW → IN PROGRESS → READY FOR REVIEW → IN REVIEW → READY FOR MERGE → COMPLETE`
85
+
86
+ For tickets with required Human QA, the success lifecycle is:
87
+
88
+ `TO DO → ENTRY REVIEW → IN PROGRESS → READY FOR QA → IN QA → QA PASSED → READY FOR REVIEW → IN REVIEW → READY FOR MERGE → COMPLETE`
89
+
90
+ The Human QA failure loop is:
91
+
92
+ `IN QA → QA FAILED → IN PROGRESS → READY FOR QA → IN QA`
93
+
94
+ An engineering agent may set `READY FOR QA` only after the fail-closed readiness
95
+ contract below passes. Only the human tester may set `IN QA`, `QA PASSED`, or
96
+ `QA FAILED`; an agent may never self-attest those states. After `QA FAILED`,
97
+ engineering may return the ticket to `IN PROGRESS`, must preserve failed
98
+ evidence, and must rerun affected QA against a new exact candidate after all
99
+ readiness gates pass again. `QA PASSED` is not merge, architecture, milestone,
100
+ dependency, release, or publication approval.
101
+
102
+ Use `READY FOR RELEASE` between the reviewed/merged state and `COMPLETE` only when the ticket has a real release or publishing gate. A ticket may enter `BLOCKED` from an Active state and return only to the appropriate Active state after its recorded unblock condition is satisfied.
103
+
104
+ Review may return a ticket from `IN REVIEW` to `IN PROGRESS` or `BLOCKED` when remediation or a decision is required. Status movement does not override architecture, dependency, security, acceptance, publication, or human-approval gates.
105
+ ## Mandatory ENTRY REVIEW
106
+
107
+ Every reconstructed or imported ticket must pass `ENTRY REVIEW` before execution. It may not move from `TO DO` through `ENTRY REVIEW` into `IN PROGRESS` until the review confirms or refines, as applicable:
108
+
109
+ - a human-readable task title;
110
+ - objective;
111
+ - current scope;
112
+ - explicit out-of-scope boundaries;
113
+ - authoritative architecture and requirement references;
114
+ - dependencies and blockers;
115
+ - Acceptance Criteria;
116
+ - required evidence;
117
+ - verification requirements;
118
+ - agent authorization;
119
+ - operations the agent may perform;
120
+ - human approval gates;
121
+ - stop conditions;
122
+ - whether an imported backlog assumption has become stale.
123
+
124
+ Entry review must compare the ticket with live repository/project state and current authority. Imported wording may be clarified or corrected for execution, but it cannot approve a product requirement, architecture change, dependency admission, milestone acceptance, merge, release, or other human-controlled decision.
125
+
126
+ If the review finds a conflict or missing human decision, record it and move or keep the ticket in the appropriate non-executing state. Do not begin implementation under an ambiguous authorization.
127
+
128
+ ## Acceptance Criteria checklist contract
129
+
130
+ ### Task Acceptance Criteria
131
+
132
+ Every normal executable ticket defines canonical, agent-readable Task Acceptance Criteria in its description. Each criterion has a stable ID (`TAC-01`, `TAC-02`, and so on), concrete ticket-specific wording, and evidence evaluable through source/diff inspection, automated or generated verification, CI, dependency/architecture checks, repository state, documentation/evidence review, or exact authoritative GitHub/ClickUp facts.
133
+
134
+ Codex implements against Task AC. Independent ChatGPT review accounts for every item explicitly as `PASS`, `FAIL`, `NOT APPLICABLE`, or `REQUIRES HUMAN EVIDENCE`, with evidence and any exception reason. The human does not perform a second engineering review merely to decide which Task AC boxes deserve checking.
135
+
136
+ ### Human QA Acceptance Criteria
137
+
138
+ Human QA AC exists only when repository or automated evidence is insufficient and a person must physically observe, operate, or judge something, such as physical-device behavior, visual UX, permission prompts, editor behavior, hardware, an inaccessible external UI, or explicitly required subjective acceptance.
139
+
140
+ Each Human QA criterion uses a stable ID (`HQA-01`, `HQA-02`, and so on) and defines the concrete tester action, exact expected observation, required evidence when applicable, and stop condition. Agents may prepare instructions and evaluate supplied evidence but may not self-attest a human observation.
141
+
142
+ ### Governance gates are separate
143
+
144
+ Merge, architecture approval, dependency admission, milestone acceptance, release authorization, security decisions, and other declared human governance decisions are not Task AC or Human QA AC. Criteria may require evidence that a gate occurred, but a checklist cannot grant or replace the decision.
145
+
146
+ ### Canonical descriptions and the Human QA checklist
147
+
148
+ The task description is the canonical acceptance contract. Task Acceptance Criteria are evaluated by the implementing agent and independent reviewer directly from that description. They do not use a native ClickUp checklist mirror. Only applicable Human QA criteria are mirrored, in exactly one native checklist named `Human QA Acceptance Criteria`. HQA `NONE` or `NOT APPLICABLE` requires no HQA fingerprint or checklist, so zero native checklists is a valid normal state. A native HQA mirror does not replace or redefine the canonical description.
149
+
150
+ Entry Review validates canonical Task AC and Human QA applicability. When HQA applies, it also compares the canonical HQA criteria with the native HQA checklist. Connector-observed exact name/body/state is the strongest normal evidence. When connector inspection is unavailable, matching fingerprint-bound durable HQA evidence may preserve an earlier human attestation without asking the human to repeat it. Checklist existence or count alone is never HQA acceptance evidence. Independent review supplies an explicit item-by-item Task AC disposition; no Task AC checkbox reconciliation follows. Any suspected HQA mismatch stops lifecycle advancement until the canonical description and HQA mirror are reconciled without silently changing meaning.
151
+
152
+ When ChatGPT asks the human to create or replace the HQA checklist, provide the exact checklist name and every complete `HQA-xx` criterion in one fenced code block for one-shot bulk paste, then request the exact reply `checklist added`. Keep explanation outside the block; never request or repair a Task AC checklist.
153
+
154
+ The Mechanical Documentation Fast Path still uses its explicit completion contract instead of normal Task AC. Outside that exception, zero native checklists is also correct whenever Human QA applicability is `NONE` or `NOT APPLICABLE`.
155
+ For each acceptance kind, extract complete stable-ID paragraphs from its exact level-two canonical heading through the next same-or-higher-level heading. HQA `NONE` or `NOT APPLICABLE` is declared under the exact level-two `Human QA Applicability` heading; nested explanatory headings do not create HQA. Normalize CRLF and CR to LF, remove trailing whitespace from every line and blank lines surrounding each criterion, preserve all remaining IDs/text/punctuation/Markdown/case/order, join criteria with exactly `LF LF`, and SHA-256 the UTF-8 bytes as lowercase hexadecimal prefixed by `sha256:`. Connector output containing a truncation marker is invalid canonical input and fails closed.
156
+
157
+ Preferred durable storage is an append-only ClickUp task comment, but only when the comment action succeeds and the record can be read back through the authoritative connector. Time entries are timing records only and MUST NOT store reusable acceptance-mirror authorization or evidence.
158
+ `HUMAN_QA_AC`, `Human QA Acceptance Criteria`, and `HQA-xx` IDs form the only reusable native-checklist evidence record in the current workflow. Valid strengths are `CONNECTOR-OBSERVED` and `HUMAN-ATTESTED`; never upgrade the latter. Historical Task AC records, including legacy label `AC`, remain readable audit history under the v1 parser but are never reused, repaired, or newly required by normal pickup.
159
+
160
+ ### Mandatory pre-start canonical acceptance readiness
161
+
162
+ Before ChatGPT gives the human a Codex ticket-start command (`grab ticket <task-id>`, `fast fix <task-id>`, or a successor), it reports one compact readiness result. This pre-start result concerns the canonical acceptance contract and prerequisite human governance decisions. A missing, stale, mismatched, incomplete, or unconfirmed required HQA checklist does not prevent ChatGPT from issuing the initial normal `grab ticket`; Codex intentionally validates and, when necessary, repairs that HQA checklist during Phase 1 before creating a branch.
163
+
164
+ - `AC READY` — canonical Task AC is present and coherent; Human QA applicability is decided; any required canonical Human QA criteria are present; and no known architecture, dependency, security, scope, or other human-governance decision prevents pickup. When HQA is `NONE`, zero native checklists is valid. When HQA is required, this result does not claim that its native HQA checklist is already confirmed.
165
+ - `AC NOT READY` — the canonical Task AC is missing or ambiguous, Human QA applicability is unresolved, required canonical Human QA criteria are missing, or another prerequisite human-governance decision prevents pickup. Identify the blocker and shortest human action; do not issue the start command yet. Native-mirror repair by itself is not `AC NOT READY`.
166
+ - `FAST-PATH AC READY` — the task contains an explicit mechanical completion contract and appears eligible; no native checklist should be added. Codex must still prove every fast-path condition after pickup.
167
+
168
+ ChatGPT may report a known HQA mirror gap as useful setup context, but still issues the initial normal `grab ticket` prompt when the canonical contract is `AC READY`. After that instruction, Codex revalidates description-only Task AC and Human QA applicability. If HQA applies, it computes the HQA fingerprint and inspects connector evidence plus durable v1 HQA records. A current valid HQA record reuses the unchanged mirror without `checklist added` or a human wait. If canonical criteria or applicability are missing or ambiguous, Codex stops and never invents them. If required HQA has no current connector proof or matching valid record, Codex stops before branch creation and returns one exact HQA-only repair block. After `checklist added`, it rereads the task and records new connector-observed or human-attested fingerprint-bound HQA evidence. Task AC never triggers checklist repair.
169
+
170
+ If Codex requests a synthetic checklist for a positively eligible fast fix, treat that as a workflow defect to investigate rather than asking the human to add one automatically.
171
+
172
+ The ticket description carries execution context such as:
173
+
174
+ - Objective;
175
+ - Scope;
176
+ - Guardrails and exclusions;
177
+ - Output and required evidence;
178
+ - Traceability and requirement references;
179
+ - estimation notes where useful.
180
+
181
+ The canonical Task AC and any Human QA AC state the concrete conditions that must be satisfied. Criteria should be independently checkable and identify required evidence or verification when that is not obvious.
182
+
183
+ If a criterion is genuinely not applicable, document the exception and reason explicitly. Do not silently skip, delete, or treat it as satisfied.
184
+
185
+ ## Governed ticket pickup and task branches
186
+
187
+ After ChatGPT reports `AC READY`, the human-issued complete prompt containing
188
+ `grab ticket <clickup-task-id>` authorizes all three normal phases through
189
+ `READY FOR REVIEW`, subject to the two declared preflight stops, mandatory Entry
190
+ Review, and every genuine stop gate below. It does not require a third routine
191
+ implementation-authorization prompt after branch confirmation.
192
+
193
+ ### Phase 1 — acceptance checklist preflight
194
+
195
+ 2. Revalidate canonical description-only Task AC and explicit Human QA applicability. If HQA applies, compute its current fingerprint and evaluate connector proof plus durable v1 HQA evidence. HQA `NONE` needs neither fingerprint nor checklist.
196
+ 3. Reuse unchanged valid HQA evidence without a stop. Fail closed before branch creation for canonical ambiguity or for missing, malformed, changed, or unconfirmed required HQA. Checklist count alone never passes. Return the exact HQA checklist name and all HQA items in one fenced repair block, followed by the exact reply `checklist added`. Task AC never enters this repair path. At that yield boundary, end AET and preserve the human-wait interval as specified below.
197
+ 4. After `checklist added`, reread and revalidate the task, record new fingerprint-bound connector-observed or human-attested HQA evidence, and proceed only when it passes. The completed human-wait and resumed occupied segment remain append-only v1 events.
198
+
199
+ ### Phase 2 — branch and ClickUp linkage preflight
200
+
201
+ 5. Inspect the **current** repository branch, index, worktree, and Git operation state before switching anything.
202
+ 6. Stop for tracked, staged, or untracked changes; conflicts; detached HEAD; merge, rebase, cherry-pick, or revert state; the wrong repository; or another unsafe condition. Never automatically stash, clean, reset, discard, commit, amend, resolve, delete, or force push.
203
+ 7. Fetch `origin`, switch safely to clean `main`, and compare it with `origin/main`.
204
+ 8. Continue when the refs are equal. When local `main` is strictly behind, update only with `git merge --ff-only origin/main`. Stop when local `main` is ahead, divergent, unsafe, or cannot fast-forward.
205
+ 9. Normalize the title and derive `codex/CU-<real-clickup-task-id>-<short-kebab-slug>`. The task ID is unchanged. The slug uses Unicode NFKD, lowercase ASCII alphanumerics, hyphens for other character runs, collapsed/trimmed hyphens, a 48-character maximum with a trailing hyphen removed, and `task` when empty.
206
+ 10. Check both local and remote branch collisions before creation. Do not silently reuse an existing branch.
207
+ 11. Create the task branch from verified current `main`, record the exact branch-cut timestamp and baseline SHA, push normally, and configure its upstream. Never create a top-level `CU-...` Codex task branch.
208
+ 12. Establish or allow the normal ClickUp/GitHub association and attempt automated/indexed verification. A valid-looking branch name is not itself linkage evidence.
209
+ 13. Always stop before Entry Review. Give the human the exact readable task title, direct ClickUp link, and exact branch; ask them to inspect the task's GitHub panel and reply exactly `branch confirmed`. The original complete prompt remains the authorization for Phase 3.
210
+ ### Phase 3 — continuous governed engineering
211
+
212
+ 15. With the resumed AET-v2 segment open, perform mandatory `ENTRY REVIEW`, including canonical Task AC, its exact native mirror, and the need for and presence of any Human QA AC/mirror.
213
+ The declaration intentionally may appear after already-persisted pickup segments and pre-Entry-Review waits in append order; semantic Calendar Cycle still begins at pickup, and no earlier interval is reconstructed. If Entry Review never succeeds, preserve the partial v1 evidence and fail closed from complete reporting and clean calibration rather than fabricating a declaration. If Entry Review passes and discovers no genuine stop gate, move `ENTRY REVIEW → IN PROGRESS` and continue the same governed run through implementation, verification, commit/push, Draft PR, exact-head CI, Task AC reconciliation, durable knowledge promotion, and `READY FOR REVIEW`.
214
+ A passing Entry Review is not itself a stop gate. Stop when progress requires an
215
+ unsafe Git/worktree repair; resolution of repository/task authority conflict;
216
+ reconciliation of missing or changed acceptance artifacts; an architecture,
217
+ dependency, security, acceptance-contract, milestone, release, publication, or
218
+ scope decision; Human QA or physical-device work/evidence; credentials or
219
+ permissions; an external blocker requiring human action; or another declared
220
+ human-only decision. The original `grab ticket` authorization never overrides
221
+ those boundaries.
222
+ Legacy tickets do not require a mass rename. Normalize one when it is next materially touched or before the human must act on it. If a requested ticket is hidden because it is a subtask or filtered from the current ClickUp view and the cause is already clear, give the shortest actionable UI fix first instead of continuing unnecessary investigation.
223
+
224
+ Opaque IDs remain required where machines need them: Codex execution prompts such as `grab ticket <task-id>` and `fast fix <task-id>`, connector calls, branch names, PR traceability, and optional secondary references. A human-facing instruction may include the ID parenthetically, but the readable title and link remain primary.
225
+
226
+ ### Orchestration roles and single-agent optimization
227
+
228
+ ChatGPT is the project orchestrator and independent reviewer. Codex is the governed ticket-pickup and repository-implementation agent. After `AC READY`, the human owns authorization of the complete normal `grab ticket <exact ClickUp task ID>` run through `READY FOR REVIEW`, plus merge, milestone acceptance, release, physical-device execution, and every other declared human gate. Codex performs acceptance-artifact preflight, stops for `checklist added` only when repair is required, creates the branch, always stops for `branch confirmed`, and then performs Entry Review and continuous engineering without a third routine authorization. ChatGPT must not silently substitute itself for Codex implementation merely because it can reach GitHub or ClickUp.
229
+
230
+ The current optimization phase is deliberately single-agent. Make normal single-agent work predictable and efficient across several measured tickets before proposing concurrency. Multi-agent and overnight execution are deferred and require separate governed approval; no current task may infer authorization for them.
231
+
232
+ Front-loading checklist and branch-confirmation gates allows predictable setup to be cleared before a future unattended window. That is design rationale only: it does not authorize parallel agents, concurrent task branches, multi-agent orchestration, or overnight execution under current policy.
233
+ ### Merge-to-complete safety
234
+
235
+ Any merge automation must require all three facts: the linked PR was merged, its base is `main`, and the task's current status is `READY FOR MERGE`; only then may it set `COMPLETE`. If native ClickUp automation cannot positively express the status condition, it is insufficient. Human-controlled completion after merge is the safe default. Do not add a secret-backed alternative or activate automation without separate human approval.
236
+
237
+ ## READY FOR REVIEW hard gate
238
+
239
+ An agent must not move or recommend moving a ticket to `READY FOR REVIEW` unless every Task AC item is accounted for with an evidence-backed result and every applicable item is satisfied or has an explicit approved exception. Native Task AC reconciliation may remain a clerical human action when connector limitations prevent agent inspection or mutation, but the review report—not human guesswork—determines the substantive result.
240
+
241
+ Before `READY FOR REVIEW`, also confirm:
242
+
243
+ - required verification has run;
244
+ - required evidence exists and is referenced;
245
+ - documentation changes associated with the work are present;
246
+ - known failures and blockers are surfaced;
247
+ - no material requirement, decision, blocker, acceptance boundary, or hard-won project fact remains only in chat.
248
+ ## IN REVIEW
249
+
250
+ `IN REVIEW` means a human/ChatGPT review is actively evaluating the work, PR, verification, evidence, and Acceptance Criteria.
251
+
252
+ Independent review reports every Task AC stable ID as `PASS`, `FAIL`, `NOT APPLICABLE`, or `REQUIRES HUMAN EVIDENCE`. It identifies Human QA AC separately and never promotes missing human observation into agent evidence.
253
+
254
+ Review may return the ticket to:
255
+
256
+ - `IN PROGRESS` when authorized remediation is required; or
257
+ - `BLOCKED` when a decision, approval, permission, external state, or other unblock action is required.
258
+
259
+ A review finding does not itself authorize remediation beyond the ticket's approved scope.
260
+
261
+ ## BLOCKED
262
+
263
+ `BLOCKED` is Active, not complete. Its durable task record must state:
264
+
265
+ - the exact blocker;
266
+ - evidence demonstrating the blocker where applicable;
267
+ - who or what can unblock it;
268
+ - the required decision or action;
269
+ - the next authorized action once unblocked.
270
+
271
+ Agents may not conceal or silently work around a blocker. Work may resume only when the recorded unblock condition and any applicable authorization boundary are satisfied.
272
+
273
+ ## READY FOR MERGE
274
+
275
+ `READY FOR MERGE` means:
276
+
277
+ - implementation/documentation review is complete;
278
+ - required verification and merge-gate evidence are satisfied;
279
+ - no known review blocker remains;
280
+ - every required Human QA AC has passed with its human evidence recorded, unless a later milestone/acceptance gate is explicitly its governed destination;
281
+ - the work is ready for explicit human merge.
282
+
283
+ It does not authorize an agent to merge. It remains Active and does not make the ticket—or downstream dependent work—complete.
284
+
285
+ ## READY FOR RELEASE
286
+
287
+ Use `READY FOR RELEASE` only for tickets with an actual release or publishing gate. It means implementation and merge requirements are satisfied but the required human-controlled release/publish operation remains.
288
+
289
+ It remains Active and is not completed work. Tickets without a release gate may proceed from the appropriate reviewed/merged state toward `COMPLETE` without using this status.
290
+
291
+ ## COMPLETE and dependency clearing
292
+
293
+ `COMPLETE` is the only closed project status. A ticket may become `COMPLETE` only when every applicable requirement is actually finished, including as applicable:
294
+
295
+ - Acceptance Criteria;
296
+ - required human review;
297
+ - PR merge;
298
+ - required release;
299
+ - acceptance evidence;
300
+ - milestone or acceptance records;
301
+ - project-state updates;
302
+ - durable documentation updates.
303
+
304
+ Only `COMPLETE` satisfies or clears a dependency relationship. A green build, `READY FOR REVIEW`, `READY FOR ADMIN COMPLETION`, `READY FOR MERGE`, or `READY FOR RELEASE` does not.
305
+
306
+ ## Agent execution-prompt contract
307
+
308
+ Prompts must distinguish planning/advisory work from authorized execution work. Planning may inspect, analyze, recommend, or draft, but it does not imply permission to mutate repository or external state.
309
+
310
+ For normal ticket execution, the complete human-issued prompt must visibly
311
+ contain `grab ticket <exact-task-id>` and explicitly authorize the governed run
312
+ through `READY FOR REVIEW`, subject to acceptance-artifact preflight, the
313
+ mandatory `branch confirmed` stop, mandatory Entry Review, and genuine stop
314
+ gates. It should establish:
315
+
316
+ 1. exact task identity and objective;
317
+ 2. explicit operations the agent may perform;
318
+ 3. hard scope boundaries;
319
+ 4. dependency, security, and governance constraints;
320
+ 5. verification requirements;
321
+ 6. genuine stop conditions;
322
+ 7. exact return and evidence expectations.
323
+
324
+ The prompt predeclares that a missing/stale native checklist produces one
325
+ one-shot replacement block and resumes only after exact reply `checklist added`;
326
+ after branch creation it always stops and resumes only after exact reply
327
+ `branch confirmed`. Those short replies clear the predictable setup gates. They
328
+ do not replace the original authorization or create a third implementation
329
+ handoff.
330
+
331
+ The generic phrase `EXECUTE THIS TASK NOW` is neither required nor sufficient
332
+ for normal pickup. Descriptive preamble outside the complete copy/paste block is
333
+ allowed; the executable prompt itself must remain self-contained.
334
+
335
+ Safety preflight is allowed. When the prompt already authorizes execution, safety inspection must not become a preflight-only response. Continue into the authorized work unless an actual unsafe, contradictory, or blocked repository state prevents execution; then report the exact blocker and stop.
336
+
337
+ Execution authorization never overrides repository governance. Preserve:
338
+
339
+ - no self-merge;
340
+ - no self-approval of architecture;
341
+ - no self-approval of dependency admission;
342
+ - no self-approval of milestone acceptance;
343
+ - no verification bypass;
344
+ - no speculative dependency mutation;
345
+ - no hidden remediation outside the authorized task;
346
+ - no silent expansion of task scope.
347
+
348
+ ### Complete replacement prompts
349
+
350
+ Whenever ChatGPT modifies, extends, corrects, or supersedes a Codex prompt that the human is expected to paste, ChatGPT must provide the complete replacement prompt in one fenced code block and state that it supersedes the earlier prompt. The replacement carries forward every still-valid instruction and all modifications.
351
+
352
+ Do not ask the human to append, insert, replace individual paragraphs, combine an addendum with an earlier prompt, or otherwise assemble prompt fragments. Do not provide only a delta when the next action is copy/paste into Codex. This keeps authorization boundaries auditable and prevents omissions and copy/paste assembly errors across current and future sessions.
353
+ Do not infer unavailable boundaries from chat, Git, CI, PR, ClickUp, browser, or other activity timestamps. When only a human-attested duration or bound exists, record exactly that weaker evidence. Report raw Calendar Cycle Time unchanged; any availability-adjusted value is secondary calibration only. A separately labeled availability contingency may inform wall-clock forecasts but never changes engineering estimates, actuals, Human Attention, billable labor, or commercial effort calibration.
354
+
355
+ The pre-merge gate freshly verifies the exact
356
+ task-bound PR, base, open/non-Draft/unmerged state, reviewed head, successful
357
+ exact-head `verify` check, independent-review PASS, canonical Task AC, HQA PASS
358
+ or `NONE`, live `READY FOR MERGE`, and absence of a genuine unresolved human
359
+ gate. Human merge is the only merge operation.
360
+
361
+ The trusted push workflow then resolves the exact merged PR and task from
362
+ immutable GitHub facts. It freshly requires successful `verify` and independent
363
+ review PASS on the actual merged head before the first completion mutation.
364
+ Only the exact task still at `READY FOR MERGE` may be written to `COMPLETE`;
365
+ the result is positively reread, an uncertain write is reread before one
366
+ bounded retry, and an exact already-`COMPLETE` replay is idempotent. AET,
367
+ estimates, calibration, packet graphs, staging records,
368
+ eligibility records, terminal timing, and finalizer records are telemetry or
369
+ historical audit evidence and never gate this transition.
370
+ Every normal start prompt names both `NEXT GOVERNED TASK` and the exact
371
+ `PREVIOUS GOVERNED TICKET`. ChatGPT establishes that predecessor from fresh
372
+ repository, GitHub, and ClickUp authority before emitting the prompt. Unknown
373
+ identity stops prompt construction; it is never guessed from chat recency or
374
+ delegated to Codex. A no-predecessor case must be positively stated as `NONE`.
375
+
376
+ Before branch creation, Codex freshly verifies the supplied predecessor. An
377
+ already-`COMPLETE` task permits pickup. An exact merged
378
+ `AUTO_AFTER_MERGE` candidate may first resume its trusted idempotent closeout
379
+ and must be reread `COMPLETE`. Wrong, stale, conflicting, human-gated, or
380
+ unsafe state stops with one exact reason/action; Codex never substitutes a
381
+ different predecessor. Any missing, ambiguous, inaccessible, inconsistent, out-of-location, non-main,
382
+ unmerged, or non-`READY FOR MERGE` state causes no mutation. Merge alone never
383
+ changes task status. An automatic candidate reaches `COMPLETE` only through
384
+ the complete durable finalizer chain. The workflow never merges a PR.
385
+ When policy is `AUTO_AFTER_MERGE`, the same pre-merge gate creates and
386
+ positively rereads closed `POST_MERGE_AUTOMATIC_ELIGIBILITY_V1`. It binds the
387
+ exact reviewed head, acceptance fingerprint, HQA, remaining human-gate
388
+ classification, debt, next action, and request template. Any live
389
+ identity/head/CI/acceptance/HQA/debt/gate drift invalidates readiness. Unknown
390
+ classification defaults to `POST_MERGE_HUMAN_GATE`, never automatic.
391
+ Every automatic-path evidence write uses deterministic content and bounded
392
+ read-before-retry behavior: an uncertain mutation response triggers exhaustive
393
+ authoritative readback, exact state is reused, absent state is retried only
394
+ after reread, and conflict or persistent provider failure remains non-COMPLETE.
395
+ Pre-existing automatic authorization does not bypass lifecycle admission. The
396
+ trusted finalizer applies the same fresh task/status, exhaustive closed-world,
397
+ typed-authority, eligibility, staging, packet, and authorization check before
398
+ each missing terminal or finalized write. Exact partial states may resume only
399
+ while the task remains `READY FOR MERGE`; a human `BLOCKED` or other unexpected
400
+ Active transition stops before new terminal evidence is written.
401
+ Trusted post-merge paths exhaust task-comment history using ClickUp `start` and
402
+ `start_id`; newest-page evidence is never complete history. The request is
403
+ closed-world over every valid task AET-v2 event before finalization, so an
404
+ omission or newly arrived event makes it stale. Typed calibration and durable
405
+ reconciliation bind comment ID, fingerprint, task, and asserted result. Retry
406
+ success revalidates packet, staging, authorization, deterministic terminal
407
+ events, finalized outcome, and live `COMPLETE` as one exact chain.
408
+ Every independent clock is itself closed-world: measured and unknown
409
+ classifications retain the complete known event-ID set, while `NOT APPLICABLE`
410
+ requires none. Local preparation canonicalizes the supplied event set through
411
+ the same serializer as trusted ClickUp reconstruction.
412
+ # Engineering Time and Efficiency
413
+
414
+ > Timing, estimates, calibration, and AET-v2 are operational telemetry. Missing,
415
+ > malformed, incomplete, or conflicting telemetry must be reported truthfully
416
+ > but never blocks an otherwise valid governed merge-to-`COMPLETE` transition.
417
+ > Historical finalizer-specific instructions below remain measurement/audit
418
+ > compatibility, not normal completion authority.
419
+
420
+ ## Purpose
421
+
422
+ This document defines the project's durable estimation and timing model. It separates active engineering effort from human interaction and elapsed delivery time so estimates, reviews, and commercial calibration do not compare unlike measurements.
423
+
424
+ ## Measurement regimes
425
+
426
+ ### AET-v2 — Agent-Occupied Engineering Time
427
+
428
+ `AET-v2` is the prospective authoritative agent-effort metric. In the current
429
+ single-agent model it is elapsed wall-clock time while the engineering agent
430
+ retains the governed execution slot and is occupied by the ticket. It includes
431
+ orientation, reading, search, reasoning, investigation, implementation,
432
+ generation, verification, documentation, review/remediation, commit/PR work,
433
+ and post-merge reconciliation.
434
+
435
+ An enclosing AET-v2 segment stays open across synchronous commands, tests,
436
+ package-manager operations, builds, native compilation, simulator/emulator
437
+ preparation, diagnostics, and log collection when the agent cannot use its
438
+ execution slot for another governed ticket. CPU or tool runtime does not turn
439
+ occupied capacity into External/System Wait.
440
+
441
+ Close the segment only when the agent actually yields for a human decision,
442
+ branch/checklist gate, credential or permission, physical Human QA, human
443
+ merge/release action, or a genuinely unattended external wait with no useful
444
+ authorized work remaining. If useful engineering continues during an external
445
+ wait, that interval remains AET-v2. Never double-count overlapping segments.
446
+
447
+ ## Three clocks
448
+
449
+ ### Agent Engineering Time (AET-v2 for new work)
450
+
451
+ Use the AET-v2 definition above. The older active-effort definition is retained
452
+ only to interpret explicitly labeled AET-v1 history.
453
+
454
+ ### Human Attention Time
455
+
456
+ The amount of the human's actively consumed working session attributable to the ticket. It includes active interaction with ChatGPT or Codex; ChatGPT-to-Codex handoffs; reading agent output; copying/pasting governed prompts and results; reviewing PRs, diffs, CI, or test results; ClickUp, GitHub, and editor interaction; decisions, answers, and authorization; physical QA; merge/release actions; and normal short sequential waits when the human remains tied to the ticket and cannot reasonably disengage.
457
+
458
+ It excludes explicit breaks, meals, sleep, deliberate work on another project, periods when the human is genuinely free to disengage, and long external waits requiring no human attention. Do not infer Human Attention Time from message timestamps when it was not actually measured.
459
+
460
+ ### Calendar Cycle Time
461
+
462
+ Elapsed wall-clock time from governed pickup to the ticket's required terminal outcome. It includes work, CI, reviews, pauses, and waiting. Report it separately; it is not engineering effort.
463
+
464
+ ## Reported elapsed-time categories
465
+
466
+ The three clocks above remain the primary measures. The following categories explain portions of raw Calendar Cycle Time without redefining or subtracting from it.
467
+
468
+ ### External/System Wait Time
469
+
470
+ Waiting caused by CI, provider systems, permissions, unavailable resources, or another external constraint after the agent has yielded. It is not AET-v2 unless active engineering continues, and it is Human Attention Time only for a short attended wait that keeps the human tied to the ticket.
471
+
472
+ ### Distraction / Human-Unavailable Time
473
+
474
+ Known time when the human is unavailable for reasons unrelated to active ticket attention: a planned break, meeting, personal call, household interruption, unrelated conversation or work, meal, or other disengagement. Record a reason/category and the evidence strength.
475
+
476
+ Distraction / Human-Unavailable Time remains inside raw Calendar Cycle Time, is excluded from Human Attention Time, and does not reduce Agent Engineering Time when an agent continues independently. Report it separately when known so availability latency is not mistaken for engineering or process inefficiency.
477
+ ### Human Attention Time segments
478
+
479
+ Measure Human Attention Time with explicitly bounded append-only intervals, independently of Agent Engineering Time:
480
+
481
+ 1. Preserve the exact Human Attention start boundary when the human begins actively working the ticket with ChatGPT or Codex. Establish a new start boundary when the human returns with `I am back` or `resume`, or begins an active review, merge, release, editor-confirmation, or physical-QA interaction on an already-running ticket.
482
+ 2. Keep a short sequential wait inside the segment when the human remains tied to the ticket and cannot reasonably disengage.
483
+ 3. Preserve the exact Human Attention end boundary and reason when the human says `I am taking a break` or `take a break`, explicitly disengages for other work, enters a long unattended external wait, reaches a point where no human attention is currently required, or finishes the active merge, release, completion, review, or QA session.
484
+ 5. A later re-engagement establishes a new start boundary; it does not reopen or rewrite the previous interval. Sum only explicitly bounded completed intervals.
485
+ 6. Agent Engineering Time may continue while no Human Attention interval is open. Conversely, human review or QA may consume Human Attention while AET-v2 is closed.
486
+ 7. Historical human-attention intervals without contemporaneous boundaries remain unknown. Do not reconstruct them from chat, comment, commit, CI, or task-update timestamps.
487
+
488
+ Human-unavailable and attention boundaries are both preserved, then emitted as completed `AET_V2_NON_AET_RECORDED` JSON through `record-non-aet`: the unavailable start coincides with the applicable attention end, and re-engagement after the unavailable end begins a new attention interval. Legacy `HUMAN_UNAVAILABLE_*`, `HUMAN_ATTENTION_*`, and `HUMAN_BREAK_*` records remain historical aliases only. An unavailable period may end without starting attention when the human has not re-engaged.
489
+
490
+ ### Human-unavailable recording
491
+
492
+ Record unexpected or planned human unavailability append-only:
493
+
494
+ 1. Preserve the exact unavailable-start timestamp when known, category (`planned break`, `unexpected distraction`, `unrelated work`, `meeting`, or `other`), reason, and evidence classification. End any active Human Attention interval at the same boundary.
495
+ 3. If contemporaneous boundaries were not recorded, preserve only the human-attested duration, approximate bound, reason/category, and evidence strength. Never derive exact boundaries from chat, comments, commits, CI, PR, task, browser, or other activity timestamps.
496
+ 4. Agent Engineering Time continues independently when authorized. An agent closes its segment only upon reaching its own human or external blocker.
497
+
498
+ ## Authoritative AET-v2 execution ledger
499
+
500
+ The authoritative event model is:
501
+
502
+ - `AET_V2_LEDGER_DECLARED`: task identity, Work Class, frozen Original
503
+ Execution Estimate, and calendar start;
504
+ - `AET_V2_SEGMENT_STARTED`: task, execution/session identity, exact timestamp,
505
+ category, reason, and evidence source;
506
+ - `AET_V2_SEGMENT_ENDED`: matching start, exact timestamp, and end reason;
507
+ - `AET_V2_ESTIMATE_REVISED`: append-only scope delta, revised total, reason,
508
+ approval source, and timestamp; it never replaces the original estimate;
509
+ - `AET_V2_NON_AET_RECORDED`: explicitly bounded Human Attention, HQA,
510
+ Human-Unavailable, human-wait, or unattended External/System Wait evidence;
511
+ - `AET_V2_MILESTONE_RECORDED`: first PR-ready, merge, or completion evidence;
512
+ - `AET_V2_CORRECTION_RECORDED`: append-only replacement of one earlier event,
513
+ retaining the target event ID and recording the reason/source. Never delete
514
+ or rewrite the original record.
515
+
516
+ Corrections may repair segment, wait, or milestone evidence, but they cannot
517
+ target `AET_V2_LEDGER_DECLARED`; the frozen Original Execution Estimate is
518
+ immutable. Estimate changes use `AET_V2_ESTIMATE_REVISED`, preserving the
519
+ complete estimate history.
520
+ The transition command captures one current boundary by default and uses it as
521
+ both the wait's `endedAt` and the resumed segment's `timestamp`. It accepts
522
+ `--boundary-at`, `--wait-event-id`, `--start-event-id`, and
523
+ `--recorded-at` for deterministic fixtures or connector reconciliation. The
524
+ other commands accept explicit `--event-id` and `--recorded-at` values for
525
+ deterministic fixtures or connector reconciliation; otherwise the CLI creates
526
+ those envelope values.
527
+
528
+ The closed event shapes reject unknown properties and deliberately minimize
529
+ the evidence surface. Allowed text fields still accept caller-supplied text:
530
+ never place credentials, tokens, raw sensitive URLs, logs, secrets, or
531
+ client-sensitive content in `source`, `reason`, `evidence`, `taskTitle`,
532
+ `approvalSource`, or any other ledger field.
533
+ When repeated merge or completion records exist, the report selects the latest
534
+ timestamp of the applicable milestone, independent of ledger order. Any
535
+ completion record supersedes merge as the reporting boundary. The report
536
+ exposes both `mergedAt` and `completedAt`; a stale earlier event can never
537
+ shorten required coverage. A completion timestamp before the latest merge is
538
+ an invalid lifecycle order and fails closed.
539
+
540
+ One lifecycle domain governs both completeness and aggregation. Semantic task
541
+ evidence may not precede `calendarStartedAt`. First PR-ready cannot follow the
542
+ first merge; completion requires merge and cannot precede the latest merge.
543
+ When completion exists it is terminal: occupied segments, non-AET intervals,
544
+ estimate revisions, and lifecycle milestones outside
545
+ `calendarStartedAt..completedAt` fail closed. A nonterminal ordinary report
546
+ extends its boundary through its latest semantic evidence. A final
547
+ `--post-merge` report aggregates exactly the continuously covered
548
+ pickup-through-completion domain, so pre-start or post-terminal evidence can
549
+ never affect a report that claims complete measurement.
550
+
551
+ Ordinary reports remain available before completion and state their evidence
552
+ strength through `lifecycleStatus`, `lifecycleFinal`, and
553
+ `reportingBoundaryAt`. A merge-only ordinary report is
554
+ `intermediate-post-merge`, never a final closeout. `measurementComplete` means
555
+ the stated aggregation boundary is continuously covered; only
556
+ `lifecycleFinal: true` means the terminal completion domain is present. Open
557
+ segments are always rejected—there is no relaxed complete-report mode.
558
+
559
+ Estimate reporting preserves two distinct comparisons. The legacy
560
+ `estimateRatio` and `estimateVarianceMilliseconds` fields, plus explicit
561
+ `originalEstimateRatio` and `originalEstimateVarianceMilliseconds`, compare
562
+ actual AET-v2 with the immutable Original Execution Estimate. The report also
563
+ uses the latest approved revision by timestamp to expose
564
+ `latestApprovedEstimateMinutes`, `latestApprovedEstimateRatio`, and
565
+ `latestApprovedEstimateVarianceMilliseconds`. Thus original-estimate
566
+ accountability remains stable while an approved scope revision remains
567
+ operationally visible. Revisions are ordered by timestamp and event ID, and
568
+ each scope delta must reconcile the preceding approved total to the new total.
569
+
570
+ ClickUp native timers/time entries may be convenience mirrors only. Timer
571
+ disagreement or outage never changes the JSON event ledger or computed AET-v2.
572
+ Time entries remain timing evidence and never acceptance-mirror storage.
573
+
574
+ ## Durable ClickUp execution ledger
575
+
576
+ The ClickUp task record is the recoverable, append-only execution ledger. Prefer append-only task comments and time entries; when those are unavailable, append a timestamped task-description section without rewriting earlier events. Preserve exact timestamps, event type, reason, and relevant SHA or estimate. Never overwrite history merely to produce cleaner totals.
577
+
578
+ Legacy records keep these event names where applicable:
579
+
580
+ - `PICKUP_STARTED`, `BRANCH_CREATED`, `BASELINE_SHA`, `ORIGINAL_ESTIMATE`;
581
+ - `AGENT_SEGMENT_STARTED`, `AGENT_SEGMENT_ENDED`;
582
+ - `HUMAN_ATTENTION_STARTED`, `HUMAN_ATTENTION_ENDED`;
583
+ - `HUMAN_UNAVAILABLE_STARTED`, `HUMAN_UNAVAILABLE_ENDED` (with category, reason, and evidence classification);
584
+ - `HUMAN_WAIT_STARTED`, `HUMAN_RESPONSE_RECEIVED`;
585
+ - historical `HUMAN_BREAK_STARTED`, `HUMAN_BREAK_ENDED` as planned-break aliases;
586
+ - `PR_READY`, `REVIEW_STARTED`, `REVIEW_FINDINGS`, `REMEDIATION_STARTED`;
587
+ - `READY_FOR_MERGE`, `MERGED`, `COMPLETE`.
588
+
589
+ A future session reconstructs new-ticket measured totals from the AET-v2 event
590
+ wire contract. Legacy events/time entries remain AET-v1 evidence unless a
591
+ contemporaneous explicit AET-v2 record says otherwise. Report gaps as unknown;
592
+ never translate aliases or incomplete history into synthetic AET-v2 segments.
593
+ Contemporaneous prose explicitly labeled AET-v2 but not conforming to the wire
594
+ contract is bootstrap/manual AET-v2 boundary evidence only—not AET-v1 and not
595
+ validator-consumable v1 JSON.
596
+
597
+ ## Immutable estimate history
598
+
599
+ Never overwrite the original estimate. When scope materially expands, append:
600
+
601
+ - original estimate;
602
+ - scope delta;
603
+ - revised total estimate;
604
+ - reason and approval/source for the expansion;
605
+ - timestamp of the revision.
606
+
607
+ Ordinary variance within the approved scope is not a scope expansion; explain it in the completion comparison.
608
+
609
+ ## Review and completion reporting
610
+
611
+ An AET-v2 review/completion report includes:
612
+
613
+ - original and every revised estimate;
614
+ - actual-versus-original and actual-versus-latest-approved estimate variance
615
+ and ratio as distinct comparisons;
616
+ - total and category AET-v2, measurement completeness, ledger gaps, and correction events;
617
+ - estimate variance and ratio only when the ledger is complete;
618
+ - number/cost of review-remediation cycles;
619
+ - the main cause of material variance;
620
+ - Human Attention Time when measured or explicitly supplied;
621
+ - raw Calendar Cycle Time;
622
+ - Distraction / Human-Unavailable Time and External/System Wait Time separately when known, including evidence strength;
623
+ - waiting categories separately from active engineering;
624
+ - first PR-ready and merge timing when useful, without mislabeling either as final task effort;
625
+ - next calibration disposition.
626
+
627
+ Commercial calibration starts a fresh cohort containing only complete,
628
+ representative AET-v2 tickets. Do not mix AET-v1 samples, partial ledgers, or
629
+ stale ClickUp timers into AET-v2 ratios. Do not automatically rescale the
630
+ remaining backlog when the mechanism first becomes live; wait for enough
631
+ representative completions under one regime.
632
+
633
+ Raw Calendar Cycle Time is always the canonical elapsed measure. An availability-adjusted interval may be shown only as secondary calibration or planning information; it never replaces raw Calendar Cycle Time, Agent Engineering Time, Human Attention Time, or engineering labor.
634
+
635
+ Wall-clock forecasts may include a separately labeled human-availability/distraction contingency. That contingency must not modify Estimated Agent Engineering Time, Agent Engineering actuals, Human Attention actuals, billable engineering labor, or commercial engineering-effort calibration.
636
+
637
+ ## Per-ticket and Problem / Outcome Resolution metrics
638
+
639
+ Per-ticket metrics measure one governed ticket: original and revised estimates, Agent Engineering Time, Human Attention Time, Calendar Cycle Time, and review/remediation cycles. They do not necessarily measure how long the underlying problem took to solve.
640
+
641
+ Problem / Outcome Resolution metrics span from the initial governed pickup or recorded problem start through accepted resolution. Report the outcome start, every ticket required, cumulative measured Agent Engineering Time, cumulative measured Human Attention Time, total outcome Calendar Cycle Time, and final accepted-resolution timestamp.
642
+
643
+ Review findings that are defects, omissions, contradictions, or incomplete implementation inside the original objective stay on the same ticket and, wherever reasonably possible, the same branch and PR. Preserve its original estimate history and continue all three clocks and the outcome clock. Do not create a remediation ticket merely to close the original sooner, improve apparent cycle time, reduce estimate variance, or hide review cost.
644
+
645
+ A new ticket is justified only for genuinely out-of-scope work: a new feature, separate architecture/dependency/security decision, separately governed human decision, or independently valuable work that should not be silently absorbed. If the original outcome depends on that ticket, each ticket retains its own metrics while the overall outcome stays open or blocked and accumulates the required tickets' measured effort and elapsed time until accepted resolution.
646
+
647
+ ## Review efficiency
648
+
649
+ Independent ChatGPT review should be exhaustive wherever reasonably possible before returning a remediation handoff. Consolidate known findings into one evidence-backed review rather than intentionally serializing fix → CI → rediscovery loops. New findings discovered after remediation remain valid, but earlier review should not be described as exhaustive if material areas were knowingly deferred.
650
+
651
+ ## Single-agent phase
652
+
653
+ The current calibration phase measures and improves normal single-agent execution. Multi-agent concurrency and overnight execution are deferred. They require separate governance, measurement definitions, and human approval before use; results from concurrent agents must not be mixed into the single-agent baseline.