Skip to content

Reconcile canonical docs with the 2026-08-24 v0.1.2 merge wave - #2081

Merged
Chris0Jeky merged 5 commits into
mainfrom
docs/1947-wave-sweep-2026-08-24
Aug 24, 2026
Merged

Reconcile canonical docs with the 2026-08-24 v0.1.2 merge wave#2081
Chris0Jeky merged 5 commits into
mainfrom
docs/1947-wave-sweep-2026-08-24

Conversation

@Chris0Jeky

Copy link
Copy Markdown
Owner

Part of #1947. Canonical-doc reconciliation for the 2026-08-24 v0.1.2 merge wave — six PRs merged to main today (6d45871aef45a1fbb0). Documentation only; no source, test, workflow, or config file is touched.

This is the sweep several of those PRs deferred to on-thread (#2077, #2076, #2069, #2025), so their canonical-doc obligation lands here rather than as per-PR churn on one file.

docs/STATUS.md — section edits inside the v0.1.2 Priority I burn-down block only

docs/IMPLEMENTATION_MASTERPLAN.md — roadmap impact

Evidence

  • node scripts/check-docs-governance.mjspassed (run before the base merge and again at this head).
  • node scripts/check-golden-principles.mjspassed at this head.
  • git diff --check — clean.
  • git diff --name-only origin/main..HEAD — exactly docs/STATUS.md and docs/IMPLEMENTATION_MASTERPLAN.md.
  • Every mechanism, SHA, and test count above was read out of the corresponding PR record or measured against the GitHub checks API; nothing is inferred from a branch name or a PR title.

Recorded, not smoothed over

Six slices land in the v0.1.2 Priority I burn-down section: the #1949
directive-attribute tokenization (#2072), the #1938 receipt localization and
announcement-role slice (#2037), the #2004 unbound-chat honesty notice (#2074),
the #1940 server-computed All/Mine membership contract (#2077), the #1973
archived-board history disclosure that closed the issue (#2076), and the #1967
applied read-only decision records (#2073).

Corrects the standing claim that #1940's All/Mine membership contract remains
outstanding, as committed on PR #2077's review thread. Records #2079 as an open,
maintainer-gated proposal carrying ADR-0059 as Proposed, retires the superseded
#2031 parked-lineage entry, and retires the saved-successor entry now that both
heads are published.

Part of #1947.
Adds a dated roadmap block for the six-slice wave: what merged, the milestone
impact (#1973 the only closure; #1949/#1938/#1967/#1940/#2004 each a merged
slice with recorded residuals; #1992's remaining question delivered as the
maintainer-gated PR #2079 with ADR-0059 Proposed; #1242 awaiting maintainer
record acceptance; #1947 the tracker), the three seeded residual issues
(#2075, #2078, #2080), and the evidence bounds - including the cancelled
Windows Frontend Unit lane at #2077's merged head and the absence of any
browser or Playwright verification in this wave.

Corrects three claims in the earlier same-day block that the wave made stale:
the #2031/#1973 parked lineage (superseded by #2076), the two saved successor
heads (published as #2072 and #2073), and cold-start steps 1-2. Also flags
#1973 as closed in the 2026-08-22 wave-2 open-issue list.

Part of #1947.
#2073 merged as f45a1fb with Required CI 21/21 after one E2E rerun cleared a
chat-surface timing flake unrelated to the changed seam. The entry is worded as
a merged slice of a still-open #1967, naming the residuals that keep it open:
the unpinned-legacy audit contract, historical-tense copy, the Dismissed
deep-link preference, list-population breadth, and the applied-actor
friendly-name contract.

Part of #1947.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 0361cf2ea9

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread docs/IMPLEMENTATION_MASTERPLAN.md Outdated
- **Six bounded slices merged in one wave, main `6d45871ae` -> `f45a1fbb0`.** `#1949`/PR `#2072` tokenizes opening-tag attributes in the dead-affordance guard so only real Vue event directives count as handler evidence; `#1938`/PR `#2037` localizes the persistent receipt controls in English, Italian, and Spanish and separates assertive-alert from polite-status toast announcements in both skins; `#2004`/PR `#2074` makes an unbound Automation Chat session say it cannot act instead of answering with prose that reads like completed work; `#1940`/PR `#2077` adds `GET /api/workspace/collaboration` and gates the Paper Review All/Mine pair on that server-computed membership contract; `#1973`/PR `#2076` discloses and exposes archived-board capture and decision history read-only; and `#1967`/PR `#2073` renders applied proposals as read-only decision records reachable from RECENTLY APPLIED and by hash deep link. `docs/STATUS.md` carries the per-slice mechanism, evidence, and residuals; this entry carries only the roadmap impact.
- **Milestone impact: `#1973` closed, and nothing else in the tranche did.** Of the nine `v0.1.2` milestone issues open at the start of the day, `#1973` is the single closure. `#1949`, `#1938`, `#1967`, `#1940`, and `#2004` each gained a merged slice and each retains an explicitly recorded residual set, so none of them may be treated as delivered - `#2004` most emphatically, because only its honesty half shipped and its redesign half (board binding from natural language, default-to-act, grounding-before-generation, clarification termination) remains an open maintainer decision. `#1992`'s outstanding wrong-verb question is now delivered as **open, maintainer-gated PR `#2079`**, whose ADR-0059 is filed `Proposed`: merging the PR is the ruling and closing it is the other, and neither an agent nor this document may infer it from the implementation or its tests. `#1242` is implemented and proven against the public artifact but stays open for maintainer acceptance of the redacted path/file-identity record plus the Explorer and clean-profile checks it shares with `#1876`. `#1947` is the sweep tracker, not a work item.
- **Three residual issues were seeded rather than deferred silently.** `#2075` collects the seven archived-history polish items that let `#1973` close; `#2078` records `docs/api/CHAT.md` documenting a chat message type that does not exist while omitting four that do; `#2080` records that **the service layer has no `IsArchived` write guard**, so an archived board still accepts card writes through a hand-edited board scope - pre-existing behavior that `#2076` neither introduced nor closed, and the first candidate for the next backend slice.
- **Evidence bounds to carry forward, not to round up.** Each slice passed its focused suites and hosted Required CI at its exact head - `#2073` at 21/21 after one E2E rerun cleared a chat-surface timing flake unrelated to its seam - **except `#2077`, whose Windows `Frontend Unit` lane concluded `cancelled` rather than completed, so `E2E Smoke` skipped**, while its Ubuntu lane and every other Required lane passed. No slice in this wave was browser- or Playwright-verified: the archived-history, membership, chat-honesty, and applied-record behaviors all rest on unit, integration, and component evidence. Several consecutive post-merge `main` runs were cancelled by the next merge landing, so the final synthetic desktop capture -> review -> explicit Apply journey and a blank-tag no-publish Windows candidate are still owed on the resulting exact main before any release deck.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Preserve #2073's Playwright evidence

When this block is used to plan the remaining release proof, the blanket claim that no slice received Playwright verification is incorrect for PR #2073: its successful Required E2E rerun invokes .github/workflows/reusable-e2e-smoke.yml, whose line 83 runs npx playwright test --project=chromium, and #2073 changed the capture-loop and edge-journey E2E specs to assert that the applied record remains visible and non-actionable. (npx playwright test --help defines --project as running tests from the specified project.) Narrow this gap instead of also leaving the applied-detail browser pass incorrectly outstanding at line 91.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@C:/Users/jekyt/AppData/Local/Temp/reply-a.md

Comment thread docs/IMPLEMENTATION_MASTERPLAN.md Outdated
- **Two review ceilings remain durable parked lineages, not fix cascades.** `#1967`/PR `#2025` preserves the earlier broad applied-proposal detail lineage at `a70f88ad`; its identity, diff, and unavailable-state blockers were extracted into merged PRs `#2034`, `#2056`, `#2066`, and `#2070`. `#1973`/PR `#2031` remains preserved at `ecf44ea2` after its single fix round still left Paper capture history without a full detail surface and allowed a retained proposal hash to escape the archived read-only boundary. Resume from the issue comments and preserved branches, not by reopening or rewriting those PR heads.
- **Two next-session successors are clean, rebased, and remotely preserved without claiming shipment.** `#1949` directive-aware attribute tokenization is `origin/issue-1949/directive-attribute-tokenization` at `d89bd7cc3`; `#1967` applied read-only decision records are `origin/issue-1967/applied-read-only-detail` at `010021a745`. Each is one commit over main `55dbf6e14`, has no open PR, and still owes its published review/hosted gate. The applied-detail slice additionally owes a full frontend/Playwright or manual browser pass.
- **One review ceiling remains a durable parked lineage; the other was superseded.** `#1967`/PR `#2025` still preserves the earlier broad applied-proposal detail lineage at `a70f88ad`; its identity, diff, and unavailable-state blockers were extracted into merged PRs `#2034`, `#2056`, `#2066`, and `#2070`, and the applied read-only record shipped separately as PR `#2073`. Resume from the issue comments and preserved branch, not by reopening or rewriting that PR head. *(Corrected later on 2026-08-24: `#1973`/PR `#2031`, previously recorded here as a second parked lineage at `ecf44ea2`, was superseded by PR `#2076`, which closed both of its confirmed HIGH paths, shipped the disclosure, and closed `#1973` - see the merge-wave update above.)*
- **Both saved successor heads have since been published and merged.** *(Corrected later on 2026-08-24.)* `#1949` directive-aware attribute tokenization (`origin/issue-1949/directive-attribute-tokenization`, `d89bd7cc3`) became PR `#2072`; `#1967` applied read-only decision records (`origin/issue-1967/applied-read-only-detail`, `010021a745`) became PR `#2073`. Neither is a saved-but-unpublished head any longer, and neither still owes a published review or hosted gate. The applied-detail slice still owes a full frontend/Playwright or manual browser pass.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Update the active routing snapshot with these merges

When a new Codex session follows the repository read order, .codex/memories/00_ACTIVE.md still reports main as 55dbf6e14, labels both of these heads as unshipped with no PR, instructs the agent to publish them, and lists the now-closed #1973 among the open gates. This reconciliation therefore makes the canonical roadmap conflict with the active routing checkpoint and can send the next coordinator back through already-completed work; update that snapshot in the same sweep.

AGENTS.md reference: AGENTS.md:L15-L19

Useful? React with 👍 / 👎.

Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@C:/Users/jekyt/AppData/Local/Temp/claude/C--Users-jekyt-source-Taskdeck/05546fd7-7099-44b0-a33e-2e0c1c3f80e6/scratchpad/reply-b.md

Codex review round on #2081, both findings accepted.

3846720003: the blanket "no slice was browser- or Playwright-verified" claim was
wrong for #2073. Required E2E Smoke runs reusable-e2e-smoke.yml's Playwright step
(playwright test --project=chromium) over testDir ./tests/e2e, so it exercised
the seven tests/e2e specs #2073 changed - capture-loop and edge-journeys now
assert the read-only review-applied-decision-record is visible and the Apply
control is gone - and that lane was SUCCESS at merged head cd96411. The claim
is narrowed to what is genuinely outstanding: the packaged-desktop spec
(testIgnored by playwright.config.ts, own config), the mobile and cross-browser
projects (grepInverted out of chromium), and screen-reader speech. The other five
slices remain unverified for their own new surfaces, and #2077 got no E2E run at
all. The incorrect "still owes a browser pass" item and the matching cold-start
clause are dropped.

3846720016: .codex/memories/00_ACTIVE.md still routed on main 55dbf6e, labelled
both former saved heads unshipped with no PR and told the next agent to publish
them, and listed closed #1973 among the open gates. Reconciled to main f45a1fb
with the six wave merges and their PRs, both heads marked shipped, #2079 recorded
as maintainer-gated, #2081 named, the wave residuals #2075/#2078/#2080 added, and
#1973 removed from the gate list. Format and conventions preserved.

Part of #1947.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 89e86ab95c

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread docs/STATUS.md
- **Review deep links resolve the exact proposal or an explicit unavailable state; they never silently substitute another actionable record (`#1967`, PRs `#2034`, `#2056`, `#2066`, and `#2070`; latest merge `55dbf6e14`).** Proposal-only identity matching is case-insensitive across hash resolution, loaded records, selection, Legacy diff state, and both Review skins; board/user/session identities retain their existing contracts. An empty Paper queue filter clears a retained hash. A requested proposal that returns 404, or whose single-proposal response carries a different ID, keeps the requested ID in an explicit unavailable state, inserts/selects no other proposal, exposes no decision controls, and clears the deep link only through `Back to Review`. Applied proposals then became reachable as explicit read-only decision records (PR `#2073`, merge `f45a1fbb0`): a dedicated `ReviewAppliedDecisionRecord` renders the applied record, RECENTLY APPLIED rows become real controls that open it, a hash deep link resolves to the same record, and a terminal record stays inspectable while exposing no decision controls - wired through both Paper and Legacy Review and all three shipped locales. At that head, 370 tests across the 19 touched-area spec files passed, typecheck was clean, and hosted Required CI finished 21/21 after one E2E rerun (the first attempt failed on a chat-surface timing flake unrelated to the changed seam). **This is a merged slice of a still-open `#1967`, not its closure:** the unpinned-legacy audit contract, historical-tense copy, the Dismissed deep-link preference, list-population breadth, the applied-actor friendly-name contract, and the remaining stale/terminal lifecycle cases stay recorded on the issue.
- **Paper Review retains truthful post-decision receipts instead of silently jumping to the next proposal (`#1940`, PR `#2069`, merge `3ab5da5d9`).** Approved, applied, rejected, and deferred outcomes remain at the decision locus; only an approved receipt offers explicit Apply, while terminal receipts and the global review keymap remain nonactionable. Receipts are board-scoped, and a late approval completion cannot replace a newer reviewer selection. `#1940` remains open for progressive disclosure, focus/lifecycle races, and the recorded non-blocking residuals. **The authoritative All/Mine membership contract is no longer among them - it shipped, and the next entry is its record.**
- **Paper Review's All/Mine pair is gated on a server-computed membership contract rather than a heuristic (`#1940`, PR `#2077`, merge `2bdc5d979`).** `GET /api/workspace/collaboration` returns `{ memberCount, hasCollaborators }`, where `memberCount` counts the distinct people who can reach at least one board the caller can reach - the union of `Board.OwnerId` and `BoardAccess.UserId` over every readable board, the caller included, never below 1, archived boards counted, and no other identity disclosed. Owners are read from `Board.OwnerId` and not from access rows, because a board owner deliberately holds no `BoardAccess` row; identity is claims-first and an unauthenticated call is 401. The recorded assumption holds: visibility is not derived from proposal authors, ACL rows alone, or online presence. On the client, `useWorkspaceCollaboration` exposes `idle | loading | ready | unavailable` and accepts an answer only when it is well-typed **and** internally consistent (`memberCount` a whole number of at least 1, and `hasCollaborators` equal to `memberCount > 1`); anything else is `unavailable`. The pair is withdrawn **only** on a positive single-member answer - loading, idle, unknown, malformed, and failed lookups all keep every control - and it is kept anyway whenever the pre-filter queue still contains a foreign-authored proposal, so a departed collaborator's left-behind records keep `Mine` meaningful. While the pair is hidden, Stale becomes a toggle instead of a one-way switch, and a partition that collapses while `Mine` is selected falls back to the unfiltered queue without rewriting a deep-linked hash. Reactivity is a mount-time read plus a 30-second-throttled refresh when the document becomes visible, because **there is no membership event to subscribe to**: `BoardsHub` publishes nothing when board access is granted or revoked, and `BoardAccessService` takes no realtime notifier at all. Evidence: a clean Release build, 30 `WorkspaceServiceTests`, 37 real-SQLite repository and API cases (owner-counted, second-member, no-double-count, archived, ownerless, and cross-user isolation), 26 architecture cases, focused Review/composable/API frontend runs, typecheck, and production build; three mutations were proven to fail the new tests (treating an unknown count as solo, disabling the Mine-to-All fallback, and reverting the consistency guard to a shape-only check). **Two evidence gaps are explicit:** there was no live browser pass - the visibility refresh is proven with synthetic events and a faked clock, not a real tab switch - and at the merged head the Windows `Frontend Unit` lane was **cancelled** rather than completed, so `E2E Smoke` skipped; the Ubuntu `Frontend Unit` lane and every other Required lane passed. A server-side membership broadcast, and the deliberate re-reveal of the pair after a failed refresh, are the recorded residuals.
- **Archiving a board no longer hides its captures and its applied-proposal ledger, and `#1973` is closed (PR `#2076`, merge `45a132f5f`).** The mechanism was confirmed by direct inspection before any fix: `board.Archive()` is a soft delete, captures use `DeleteBehavior.SetNull`, and `AutomationProposal.BoardId` is a bare indexed scalar with no foreign key - so archiving made those rows *unreachable*, never destroyed. Archive rows now carry the archived board id into scoped capture history (Inbox) and decision history (Review) through an explicit `history=archived` mode, and both Legacy and Paper archive confirmations state that captures and decision records are retained, hidden from the unfiltered active queues, and reachable from Workspace -> Archive. Archived history is read-only in both skins: capture triage/edit/batch controls and proposal approve/reject/apply/defer/dismiss controls are suppressed, the mode is announced in-surface, `Open Board` is withheld from archived decision history, Paper capture history expands into a full inspection panel (retained text, triage provenance, decision-record link) loaded through a non-caching `peekDetail`, and leaving archived scope drops the proposal deep link so an archived record cannot re-enter the live mutation-enabled queue. No backend source changed - the backend already scoped correctly - and the new `ArchivedBoardHistoryApiTests` pins unscoped omission and scoped retrieval for both a capture and an Applied proposal. Evidence: 44 files / 990 tests across the review/inbox/capture surface, 16 files / 578 tests across the touched seam, the locale-parity guard with the new history keys, clean typecheck and build, lint at its unchanged six-warning baseline, both new regressions mutation-checked against their reverted fixes, and hosted Required CI green at the exact head including E2E Smoke. **NOT verified:** no live browser or Playwright run - the archived-history journey rests on unit/integration tests plus a synthetic SQLite/API proof - and the `it`/`es` strings are machine-translated. Seven polish residuals are tracked on `#2075`. A distinct gap surfaced by the work is tracked on `#2080`: **the service layer has no `IsArchived` write guard**, so a hand-edited `?boardId=<archivedBoardId>` scope *without* `history=archived` still reaches the pre-existing mutation-enabled behavior. That path predates this change and is not closed by it.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Count successful E2E smoke as Playwright evidence

Fresh evidence after the earlier #2073 correction is that this new #2076 record still says both that Required CI passed “including E2E Smoke” and that there was “no live browser or Playwright run.” In .github/workflows/reusable-e2e-smoke.yml lines 76–83, that job runs npx playwright test --project=chromium; the CLI help confirms that --project runs tests from the selected Playwright project. A successful lane is therefore Playwright/Chromium browser evidence even if it lacks an archived-history-specific assertion, so narrow the gap to the missing dedicated journey/live validation instead of declaring all Playwright evidence absent.

AGENTS.md reference: AGENTS.md:L15-L19

Useful? React with 👍 / 👎.

Comment thread docs/STATUS.md
- **Lowercase machine-prefix routing is corrected in the installed PWA and split-container topology (`#1992`, PRs `#2029`, `#2030`, and `#2065`; latest merge `c7a34d55c`).** PWA navigation excludes lowercase `/hubs` and `/health`; both nginx templates route lowercase bare and descendant `/api`, `/hubs`, `/health`, and `/mcp` paths to the API, preserving URI, forwarded headers, hub WebSockets, and unbuffered MCP SSE. Required container CI runs the checked-in static/rendered reverse-proxy contract before compose validation and image builds. Case-insensitive parity, a live split-container request/SSE proof, and the explicit owner decision on wrong-verb 404 versus 405 remain on open `#1992`.
- **Review deep links resolve the exact proposal or an explicit unavailable state; they never silently substitute another actionable record (`#1967`, PRs `#2034`, `#2056`, `#2066`, and `#2070`; latest merge `55dbf6e14`).** Proposal-only identity matching is case-insensitive across hash resolution, loaded records, selection, Legacy diff state, and both Review skins; board/user/session identities retain their existing contracts. An empty Paper queue filter clears a retained hash. A requested proposal that returns 404, or whose single-proposal response carries a different ID, keeps the requested ID in an explicit unavailable state, inserts/selects no other proposal, exposes no decision controls, and clears the deep link only through `Back to Review`. Applied-proposal read-only detail/history and the remaining stale/terminal lifecycle cases remain on open `#1967`.
- **Paper Review retains truthful post-decision receipts instead of silently jumping to the next proposal (`#1940`, PR `#2069`, merge `3ab5da5d9`).** Approved, applied, rejected, and deferred outcomes remain at the decision locus; only an approved receipt offers explicit Apply, while terminal receipts and the global review keymap remain nonactionable. Receipts are board-scoped, and a late approval completion cannot replace a newer reviewer selection. `#1940` remains open for progressive disclosure, an authoritative All/Mine membership contract, focus/lifecycle races, and the recorded non-blocking residuals.
- **Failed quick captures keep their draft, shared error feedback is inspectable, and persistent toasts do not replay announcements after a skin remount (`#1938`, PRs `#2023`, `#2033`, and `#2067`; latest merge `e9b1390b6`).** Home and Paper Inbox distinguish a failed create from a post-create refresh failure, so a saved capture does not invite a duplicate retry. Default errors persist until dismissal; Legacy and Paper receipts can expand/copy existing detail text, and every Paper toast has a generic dismiss path. Each toast container now baselines the IDs already present when it mounts and announces only later non-error additions. An exact-main Paper-to-Legacy manual remount preserved the persistent toast while the announcer remained empty; actual screen-reader speech was not verified. Receipt localization and announcement roles then shipped as well (PR `#2037`, merge `a6f0dc998`): the persistent error-receipt controls and detail-region names are localized in English, Italian, and Spanish; each disclosure controller is associated with its details region only while that region is mounted; and error toasts announce as assertive alerts while non-error toasts announce as polite statuses, in both Legacy and Paper. The existing persistent-error lifetime and dismiss/copy behavior is unchanged. That slice passed typecheck, a production build, the full frontend suite (336 files, 4,752 tests), a focused Legacy/Paper/catalog run (3 files, 47 tests), lint, diff hygiene, and hosted Required CI at its exact head; it touched no backend file and ran no Playwright pass, and actual screen-reader speech is still unverified. Pinned-build root-cause reproduction, capture-input association/retention, receipt retention policy/ticker efficiency, stale per-toast state cleanup, clipboard-fallback hardening, and the remaining recorded a11y/state-cleanup gaps stay on open `#1938`; Italian and Spanish speaker review stays the human gate on `#1770`.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Advance the latest-merge anchors to the shipped slices

This rewritten family entry still labels e9b1390b6 as its “latest merge” while the same line records the later #2037 merge a6f0dc998; the rewritten #1967 entry at line 29 likewise retains 55dbf6e14 as “latest” while adding the later f45a1fbb0 slice. Agents using canonical STATUS for issue-lineage orientation can consequently anchor before the behavior this reconciliation says shipped; include the new PRs and SHAs in those parentheticals or label the old anchors as belonging only to the earlier phase.

AGENTS.md reference: AGENTS.md:L15-L19

Useful? React with 👍 / 👎.

- **Milestone impact: `#1973` closed, and nothing else in the tranche did.** Of the nine `v0.1.2` milestone issues open at the start of the day, `#1973` is the single closure. `#1949`, `#1938`, `#1967`, `#1940`, and `#2004` each gained a merged slice and each retains an explicitly recorded residual set, so none of them may be treated as delivered - `#2004` most emphatically, because only its honesty half shipped and its redesign half (board binding from natural language, default-to-act, grounding-before-generation, clarification termination) remains an open maintainer decision. `#1992`'s outstanding wrong-verb question is now delivered as **open, maintainer-gated PR `#2079`**, whose ADR-0059 is filed `Proposed`: merging the PR is the ruling and closing it is the other, and neither an agent nor this document may infer it from the implementation or its tests. `#1242` is implemented and proven against the public artifact but stays open for maintainer acceptance of the redacted path/file-identity record plus the Explorer and clean-profile checks it shares with `#1876`. `#1947` is the sweep tracker, not a work item.
- **Three residual issues were seeded rather than deferred silently.** `#2075` collects the seven archived-history polish items that let `#1973` close; `#2078` records `docs/api/CHAT.md` documenting a chat message type that does not exist while omitting four that do; `#2080` records that **the service layer has no `IsArchived` write guard**, so an archived board still accepts card writes through a hand-edited board scope - pre-existing behavior that `#2076` neither introduced nor closed, and the first candidate for the next backend slice.
- **Evidence bounds to carry forward, not to round up.** Each slice passed its focused suites and hosted Required CI at its exact head - `#2073` at 21/21 after one E2E rerun cleared a chat-surface timing flake unrelated to its seam - **except `#2077`, whose Windows `Frontend Unit` lane concluded `cancelled` rather than completed, so `E2E Smoke` skipped**, while its Ubuntu lane and every other Required lane passed.
- **`#2073` is the one slice with real browser evidence; the rest of the wave has none.** Required `E2E Smoke` runs `reusable-e2e-smoke.yml`, whose Playwright step is `npx playwright test --project=chromium` over `testDir: ./tests/e2e` - so it exercised the seven `tests/e2e` specs `#2073` changed, including `capture-loop` and `edge-journeys`, which now assert that after Apply the read-only `review-applied-decision-record` is visible **and** the `Apply to board` control is gone. That lane was `SUCCESS` at the merged head `cd964113f`, and the PR record additionally carries live local Playwright runs and a live-stack browser seam validation (dev stack from the branch worktree, isolated synthetic SQLite, synthetic account). **What remains outstanding for `#2073` is narrower than "a browser pass":** `packaged-desktop.spec.ts` is `testIgnore`d by `playwright.config.ts` and runs only under its own config, so the packaged-desktop journey stays a separate release-deck item; and the `@mobile` and cross-browser projects are `grepInvert`ed out of the chromium project, so real-phone and cross-engine coverage remain nightly/manual. The **other five slices** - `#2072`, `#2037`, `#2074`, `#2077`, `#2076` - were **not** browser- or Playwright-verified for their own new surfaces: the archived-history, membership, chat-honesty, and guard behaviors rest on unit, integration, and component evidence, and `#2077` got no E2E run at all. Screen-reader speech is unverified across the wave.

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Exclude the opt-in audit spec from E2E coverage

When this evidence is used to judge #2073, the statement that Required E2E “exercised the seven tests/e2e specs” overcounts the executed coverage. The PR changed eight E2E files; packaged-desktop.spec.ts is excluded by testIgnore, while every test in manual-audit.spec.ts is skipped unless TASKDECK_RUN_AUDIT=1, which .github/workflows/reusable-e2e-smoke.yml does not set. Required E2E therefore executed tests from only six of the changed specs, so revise the count and keep the opt-in manual-audit change outside the hosted evidence claim.

AGENTS.md reference: AGENTS.md:L15-L19

Useful? React with 👍 / 👎.

@Chris0Jeky
Chris0Jeky merged commit 9766edb into main Aug 24, 2026
17 checks passed
@github-project-automation github-project-automation Bot moved this from Pending to Done in Taskdeck Execution Aug 24, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: Done

Development

Successfully merging this pull request may close these issues.

1 participant