Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
40 changes: 31 additions & 9 deletions .codex/memories/00_ACTIVE.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Active Taskdeck Agent Context

Last updated: 2026-09-11
Last updated: 2026-09-21

This file is the active-gate pointer for every implementation agent on Taskdeck: Codex reaches it through `AGENTS.md` and `.codex/README.md`, Claude Code through the `CLAUDE.md` orient list (it is not auto-loaded for Claude). It intentionally summarizes routing only; the canonical state remains in `docs/STATUS.md`.

Expand All @@ -11,6 +11,8 @@ This file is the active-gate pointer for every implementation agent on Taskdeck:
- Tier and push/merge authority: `.agent-harness/tier.json` (re-read live; do not infer authority from this summary)
- Current shipped state: `docs/STATUS.md`
- Active release/wave sequencing: `docs/REVIVAL_PLAN.md`
- Current repository programme brief: `docs/analysis/2026-09-21-repository-direction-and-v0.3-programme.md`
- Live v0.3 gate: `docs/releases/V0_3_0_READINESS.md`
- Broader delivery/planning record: `docs/IMPLEMENTATION_MASTERPLAN.md`
- Stable invariants: `docs/GOLDEN_PRINCIPLES.md`
- Dependency-aware issue execution: `docs/ISSUE_EXECUTION_GUIDE.md`
Expand Down Expand Up @@ -57,14 +59,34 @@ issue and remote ref before resuming; this pointer does not claim current CI or

- Retired, do not resume: `origin/issue-1940/provenance-shortcut@c9135fef3b64da5d6c578bd4d9c76fe4fdb7eb65`. The ref still exists and is not an ancestor of `main`, but the slice it held shipped as PR `#2323` (merge `221aa88c8`), recorded in `docs/STATUS.md`. Recreating a worktree from it would redo landed work. `#1940` stays open for the two MEDIUM residuals named on the issue, not for this branch.

## Lane coordination (2026-09-04)

- Two implementation lanes run concurrently: `alpha-product-trust` (human work loop: Capture/Inbox, proposals, Review, Board/Paper/Legacy, a11y, product semantics) and `beta-platform-integrity` (runtime, security, delivery, CI, harness). An issue belongs to the lane that owns its primary acceptance outcome, not to whichever layer its files sit in. A programme coordinator session owns issue topology, milestones, Project state, this file, `autodoc/AGENT_INDEX.md` and `docs/releases/V0_3_0_READINESS.md`; it does not implement in a path a lane has leased, and it merges only its own coordination PRs under the ordinary tier gate (`.agent-harness/tier.json` is the authority, not this line).
- Claim before writing: post `[Claude lane claim v2]` on the issue (lane, base SHA, owned paths, shared-path leases, parallel-safe work, status) and `[Claude lane release v2]` with the exact head and result when done. `[Codex lane claim v2]` / `[Codex lane release v2]` are the same protocol with the same fields; search for both forms before claiming, because an existing open PR plus a current claim in either form outranks a new claim. A stale claim is one with no release and no branch activity; the coordinator reconciles it, not the other lane.
- One writer per canonical doc: the lane that merges a slice writes its own bounded `docs/STATUS.md` block and `OUTSTANDING_TASKS.md` tick; cross-lane reconciliation blocks and the readiness view are the coordinator's. Never edit a canonical doc that an open PR already edits without agreeing the order first.
- Control-plane PRs (`.github/workflows/**`, `ci/**`, `scripts/ci/**`, runner or branch-protection paths, and the `ci/policy.v1.json` control paths) merge only after the maintainer's own review plus one fresh-context review (ADR-0066 amendment 2026-09-03). Green is not authority. **SC-10 is closed** (all twelve PRs in that queue merged 2026-09-06), but the 2026-09-06 walkthrough ruling q-1 = A delegated **those twelve named PRs only**; it did not lift the amendment for a new control-plane PR. Practice has diverged three times, on 2026-09-08 (`#2772`, `#2787`) and again on 2026-09-10 (the CI-continuation train), and the divergence is an open human decision: `OUTSTANDING_TASKS.md` J.1, J.2 and J.3. Read J.3 before opening or merging a control-plane PR. A control-plane PR that is parked is recorded on J.2, which is where SC-10's role went when it closed.
- Codex review credits: SC-9 closed 2026-09-06 and the connector was reviewing normally when last observed (2026-09-10). **Read the connector's own comment on your PR rather than this line** - like milestone counts and CI colour, credit state is live GitHub, and this file's preamble says live GitHub outranks it. Standing rules either way: global law 2g, so a clean Codex outcome is the whole review gate for documentation-only or very-low-risk work and other work still gets one fresh-context independent review; and if a usage-limit notice does appear, it is informational, not a finding, and the gate falls back to one fresh-context review per PR. Do not spend a reviewer subagent on the assumption that the connector is unavailable without looking.
- Stacked PRs: a PR whose base is another PR's branch merges into that branch, not `main`. Merge the parent first, always; only after the parent has actually merged, re-target the child with `gh pr edit N --base main`, then confirm the new base via the API before merging it. Never re-target a child whose parent is still open, because that pulls the parent's unmerged commits into the child. Never `--delete-branch` a stacked base PR.
## Current programme routing (2026-09-21)

- Taskdeck is in v0.3 release convergence. Read the current programme brief and live readiness view
before selecting work. The old alpha/beta lane names are historical coordination aids, not current
ownership authority.
- Live GitHub owns milestone counts, PR state, CI, review and branch ancestry. An open PR inventory is
not an admission list. Select work through the active plan, accepted ADRs, issue dependencies and
current ownership evidence.
- Claim before writing: search both `[Claude lane claim v2]` and `[Codex lane claim v2]`, open PRs,
branches and recent issue comments. An existing current claim or open PR outranks a new claim.
- One writer per canonical doc. The implementation owner writes the bounded shipped-truth update for
its merged slice; programme-wide reconciliation and the release readiness view remain
coordinator-owned. Do not edit a canonical document already touched by an open PR without an
explicit integration order.
- Stacked PRs are dependency graphs. Verify the actual base and parent head through GitHub. Merge the
parent first, refresh/retarget the child only after the parent lands, and rerun exact-head evidence.
Never infer that a mergeable stacked child is independently ready for `main`.
- Any base refresh, merge from `main`, stack collapse, review repair or generated-file change creates
a new exact head. Earlier green CI and review are historical until the current head is qualified.
- Current release-control state: merged foundations `#3156`/`#3167`; open parent `#3295` before
stacked child `#3296`; CI-17 inventory `#3297` before implementation `#3170`; post-merge Windows
timeout reconciliation after `#3162`; remaining `#2335` acceptance after merged `#2838`; corrected
runner work after FIX-FIRST recovery PR `#3261`.
- Control-plane work still follows ADR-0066 and `OUTSTANDING_TASKS.md` section J. Green is evidence,
not merge authority. The September directives are recorded per named wave; they do not silently
settle the standing rule for every future control-plane PR.
- Read the review connector's live result. A usage-limit notice is informational, not a finding. Use
the repository's documented fresh-context fallback when the connector cannot review.

## Start of session

Expand Down
25 changes: 25 additions & 0 deletions .github/docs-reviewfix.part-00
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
diff --git a/docs/STATUS.md b/docs/STATUS.md
index e9c828d..713e713 100644
--- a/docs/STATUS.md
+++ b/docs/STATUS.md
@@ -1,9 +1,19 @@
# Taskdeck Status (Source of Truth)

-Last Updated: 2026-09-20
+Last Updated: 2026-09-21

GitHub Pages (`https://chris0jeky.github.io/Taskdeck/`) now runs as a static demo: empty `VITE_API_BASE_URL` plus `VITE_DEMO_MODE=true`, runtime Pages+loopback detection, and an axios demo adapter so review, chat, and card parent/assignee reads never call `localhost:5000`. Home and Review share the same one pending demo proposal. Local Vite with `.env` still uses the real local API. This is not a hosted backend; that remains later work. Detection: `frontend/taskdeck-web/src/utils/apiBaseUrl.ts`. Operator notes: `docs/product/DEMO_PLAYBOOK.md`.

+## CI least-privilege delivery checkpoint (#2335)
+
+PR `#2838` merged on 2026-09-19 as `32e2374ef`. It delivered
+`persist-credentials: false` on all 48 checkout steps and scoped Pages write/OIDC permissions to the
+deployment boundary. Full-SHA action pinning and `sha_pinning_required: true` were already complete.
+This supersedes the 2026-09-10 historical block below that described `#2838` as parked and its
+checkout-credential work as open. Remaining `#2335` work is operational rather than a replay of the
+merged patch: retain/reconcile hosted-only control-path evidence, record the standing maintainer
+review rule for new control-plane PRs, and choose the v0.3 CodeQL posture.
+
## Local checklist bootstrap no longer holds an LLM quota slot (#1431 L3)

A deterministic checklist-bootstrap chat turn never reaches a provider, but `ChatService` used to
22 changes: 22 additions & 0 deletions .github/docs-reviewfix.part-01
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
diff --git a/docs/ci/PRIVATE_REPO_CUTOVER_CHECKLIST.md b/docs/ci/PRIVATE_REPO_CUTOVER_CHECKLIST.md
index f1a1538..56582bc 100644
--- a/docs/ci/PRIVATE_REPO_CUTOVER_CHECKLIST.md
+++ b/docs/ci/PRIVATE_REPO_CUTOVER_CHECKLIST.md
@@ -115,10 +115,12 @@ actions. Never infer a human action from repository state or an issue comment.
- [x] Every external `uses:` is pinned to a full commit SHA and the pin inventory guard is green.
- [x] `sha_pinning_required: true` is enabled and read back from GitHub.
- [ ] Default workflow tokens are read-only; every elevated job is justified and scoped.
-- [ ] `persist-credentials: false` is present wherever a checkout does not need push credentials.
+- [x] `persist-credentials: false` is present wherever a checkout does not need push credentials;
+ merged PR `#2838` delivered the 48-step inventory and Pages permission scoping.
- [ ] No `pull_request_target` path checks out or executes untrusted head code.
-- [ ] CI-control changes have a hosted-only trust fixture.
-- [ ] PR `#2838` is current-head qualified and passes the ADR-0066/J.3 maintainer gate.
+- [ ] CI-control changes have a hosted-only trust fixture and the current evidence is reconciled.
+- [x] PR `#2838` is merged; do not replay or re-park its delivered checkout/Pages patch.
+- [ ] The maintainer records the standing review/merge rule for new ADR-0066 control-plane PRs.
- [ ] CodeQL is re-enabled in an approved lane or the current scanner posture and residual are recorded.

## H. Pre-cutover nightly and release contract (CI-10 `#2334`)
diff --git a/OUTSTANDING_TASKS.md b/OUTSTANDING_TASKS.md
index dac1418..de3047d 100644
24 changes: 24 additions & 0 deletions .github/docs-reviewfix.part-02
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
--- a/OUTSTANDING_TASKS.md
+++ b/OUTSTANDING_TASKS.md
@@ -212,6 +212,9 @@ September 18-21 implementation wave. It does not replace the detailed evidence a
- [ ] Record the standing review/merge rule for **new** ADR-0066 control-plane PRs after the named
September directives. J.3(b) remains unanswered; do not infer a permanent waiver from a completed
wave.
+- [ ] Choose and record the v0.3 CodeQL posture for `#2335`: re-enable CodeQL in an approved hosted
+ lane, or retain the current scanners with an explicit reason and residual. The merged `#2838`
+ least-privilege patch does not decide this.
- [ ] Review the current landed-verifier and CI-17 stacks in dependency order: parent `#3295` before
stacked child `#3296`, and non-activating inventory `#3297` before the actual `#3170` rehearsal
control. Automated green evidence is not the human approval.
diff --git a/docs/REVIVAL_PLAN.md b/docs/REVIVAL_PLAN.md
index a6a80a8..6a464d3 100644
--- a/docs/REVIVAL_PLAN.md
+++ b/docs/REVIVAL_PLAN.md
@@ -82,10 +82,11 @@ Sequence:
integration and rebuild the observation evidence.
3. **Finish CI-17.** Qualify the non-activating workflow inventory in `#3297`, then implement the
trusted, fail-closed Linux-only rehearsal owned by `#3170`.
-4. **Close release prerequisites.** Reconcile post-merge Windows timeout evidence after `#3162`,
- finish the remaining `#2335`/CodeQL acceptance after merged `#2838`, and complete storage
- (`#2333`), nightly/exact-tag qualification (`#2334`), runner proof (`#2328`), and mirror/GHCR
- continuity (`#2439`).
19 changes: 19 additions & 0 deletions .github/docs-reviewfix.part-03
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
+4. **Close pre-cutover release prerequisites.** Reconcile post-merge Windows timeout evidence
+ after `#3162`, finish the remaining `#2335`/CodeQL acceptance after merged `#2838`, and complete
+ storage (`#2333`), the nightly/release contract plus no-publish rehearsal (`#2334`), runner proof
+ (`#2328`), and mirror/GHCR continuity (`#2439`). Real-tag creation and exact-tag qualification
+ remain step 7, after privacy and the runner decision.
5. **Reconcile all open milestone issues.** Close on evidence, split real residuals, or record an
explicit maintainer ruling. Preserve `#2315`'s existing residual ruling unless changed.
6. **Execute the human cutover.** Follow `docs/ci/PRIVATE_REPO_CUTOVER_CHECKLIST.md`: public GHCR,
diff --git a/docs/analysis/2026-09-21-repository-direction-and-v0.3-programme.md b/docs/analysis/2026-09-21-repository-direction-and-v0.3-programme.md
index a2b9a27..0930382 100644
--- a/docs/analysis/2026-09-21-repository-direction-and-v0.3-programme.md
+++ b/docs/analysis/2026-09-21-repository-direction-and-v0.3-programme.md
@@ -121,7 +121,8 @@ priority. The controlling release sequence is:
1. finish admitted exact-identity correctness stacks without widening into adjacent refactoring;
2. finish Smart CI proof and authoritative landed-evidence integration;
3. implement and prove CI-17 after its non-activating inventory prerequisite;
-4. close Windows, least-privilege, storage, nightly, runner, and mirror/GHCR prerequisites;
+4. close Windows, least-privilege, storage, pre-cutover nightly/release-contract, runner, and
+ mirror/GHCR prerequisites;
25 changes: 25 additions & 0 deletions .github/docs-reviewfix.part-04
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
5. reconcile every open milestone issue on the resulting evidence, while doing obvious close-on-
evidence updates continuously rather than waiting for a final batch;
6. execute the human private-repository cutover in the canonical checklist order;
diff --git a/docs/releases/V0_3_0_READINESS.md b/docs/releases/V0_3_0_READINESS.md
index 572616b..0069a01 100644
--- a/docs/releases/V0_3_0_READINESS.md
+++ b/docs/releases/V0_3_0_READINESS.md
@@ -55,7 +55,8 @@ list. The controlling sequence is:
1. finish admitted exact-identity correctness stacks;
2. finish Smart CI proof and authoritative landed-evidence integration;
3. implement and prove CI-17;
-4. close Windows, least-privilege, storage, nightly, runner, and mirror/GHCR prerequisites;
+4. close Windows, least-privilege, storage, pre-cutover nightly/release-contract, runner, and
+ mirror/GHCR prerequisites;
5. reconcile every milestone issue on the resulting evidence, while applying obvious close-on-
evidence updates continuously;
6. execute the human cutover;
diff --git a/docs/IMPLEMENTATION_MASTERPLAN.md b/docs/IMPLEMENTATION_MASTERPLAN.md
index a7cd53a..c6b860b 100644
--- a/docs/IMPLEMENTATION_MASTERPLAN.md
+++ b/docs/IMPLEMENTATION_MASTERPLAN.md
@@ -24,10 +24,11 @@ Current release-control order:
2. landed receipt foundations are merged in `#3156` and `#3167`; qualify active parent `#3295`
before stacked child `#3296`, then add authoritative collector/workflow integration;
3. qualify non-activating CI-17 inventory `#3297`, then implement trusted rehearsal control `#3170`;
12 changes: 12 additions & 0 deletions .github/docs-reviewfix.part-05
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
-4. close release prerequisites: post-merge Windows timeout evidence and `#2378`/`#2588`, remaining
- `#2335`/CodeQL acceptance after merged `#2838`, storage `#2333`, nightly/exact-tag qualification
- `#2334`, corrected current-main runner preparation for `#2328`, and mirror/GHCR continuity
- `#2439`;
+4. close pre-cutover release prerequisites: post-merge Windows timeout evidence and
+ `#2378`/`#2588`, remaining `#2335`/CodeQL acceptance after merged `#2838`, storage `#2333`, the
+ nightly/release contract plus no-publish rehearsal for `#2334`, corrected current-main runner
+ preparation for `#2328`, and mirror/GHCR continuity `#2439`; real-tag creation and exact-tag
+ qualification remain step 7;
5. reconcile the milestone through `#2235`, preserving explicit residual rulings;
6. execute the human cutover `#2337`;
7. freeze the final head, create and qualify the real tag, publish the private Release, mirror it
Loading
Loading