Skip to content

Rewrite the README for the revival beta - #1331

Merged
Chris0Jeky merged 8 commits into
mainfrom
issue-1302/readme-revival
Jul 13, 2026
Merged

Rewrite the README for the revival beta#1331
Chris0Jeky merged 8 commits into
mainfrom
issue-1302/readme-revival

Conversation

@Chris0Jeky

@Chris0Jeky Chris0Jeky commented Jul 13, 2026

Copy link
Copy Markdown
Owner

Summary

Closes #1302

Direction dependency: #1296
Related registration gate: #1297
Related licensing gate: #1299
Related release path: #1303
Related MCP security blocker: #1338

Verification

  • npx vitest --run tests/demo-seed.spec.ts tests/demo-shared.spec.ts - initial 19 passed.
  • Deterministic seeded director, client-onboarding, six queue turns, fixed RNG seed - passed; 40 events, six proposal executions, six applies, zero autopilot errors, 11 screenshots.
  • GIF inspection - 4 frames, 1000x720, 290,752 bytes; all four frames visually inspected.
  • After review fixes: npx vitest --run tests/demo-shared.spec.ts - 6 passed, including null, multi-page, and no-progress pagination cases.
  • After review fixes: npm run typecheck - passed.
  • After review fixes: npm run build - passed.
  • After review fixes: npx vitest --run - 297 files / 3,759 tests passed.
  • Shared-DB runtime proof: throwaway API user creation passed; separate stdio MCP initialize and taskdeck://boards read passed against the same absolute SQLite DB.
  • HTTP diagnostic: documented /mcp returned 404 while the accidental root route initialized outside the intended middleware boundary; no HTTP success is claimed, and [Bug] Map and authenticate HTTP MCP on the same /mcp route #1338 tracks the FULL-tier security repair.
  • Final MCP docs/config check: JSON parse, docs governance, README link check, and git diff --check passed.
  • node scripts/check-docs-governance.mjs - passed.
  • Local Markdown link verification for README and cloud guide - passed.
  • Earlier npx --yes markdown-link-check README.md --quiet - passed after it caught and prompted removal of a real 404 Discussions link.
  • git diff --check - passed.

Review fixes

Fresh independent review and bot feedback were handled in one batched push:

  • truthful shipped-vs-planned transcript positioning;
  • private-only cloud posture until registration is gated;
  • accurate MCP direct-write boundary and verified stdio setup; broken HTTP routing is explicitly unsupported;
  • deploy-time connector-key requirements and executable backup guidance;
  • removal of stale provider prices;
  • robust null-safe, all-page demo board discovery;
  • stable dev-up DB handoff for stdio MCP, with broken HTTP support claims removed and [Bug] Map and authenticate HTTP MCP on the same /mcp route #1338 tracked.

All eight inline bot threads were replied to with commit evidence and resolved. A consolidated finding-to-commit mapping is posted in the PR conversation.

Docs impact

Assumption / merge dependencies

Assumption: link the beta license statement to live tracker #1299 instead of adding or linking a nonexistent LICENSING.md. Reason: #1299 owns the complete licensing posture and follows this issue in the authorized queue; a partial legal-position document would collide with that scope, while a dead relative link fails this issue's link check. Reversible by: after #1299 lands, replace the tracker link with relative LICENSING.md and rerun link verification.

This PR is not merge-eligible until #1296 lands and #1299 supplies the final licensing link. Any public hosted evaluation additionally requires #1297 plus an explicitly safe registration mode.

Risks

  • The GIF is generated from seeded local data with LLM steps skipped; it proves the product loop and UI, not model quality.
  • Provider pricing and plan behavior are deliberately not frozen in the repo; operators must verify current provider terms.

CI status

Under the overnight zero-failing-check rule, that startup failure is real and this PR is not merge-eligible even apart from its #1296/#1299 content dependencies. Final-head required/Extended results must be accounted separately after completion.

Copilot AI review requested due to automatic review settings July 13, 2026 02:39

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot was unable to review this pull request because the user who requested the review has reached their quota limit.

@Chris0Jeky

Copy link
Copy Markdown
Owner Author

Self-review — current head ed048266

Existing PR comments/reviews/threads checked after opening: none.

MEDIUM

  • None.

LOW — future feedback channel was presented as live

  • Finding: the first README draft linked GitHub Discussions, but Discussions currently returns HTTP 404. That would have violated the adopter-facing link-check acceptance criterion and overstated the current feedback surface.
  • Fix: commit ed048266 replaces it with the live issue tracker and keeps the feedback channel in the future roadmap.
  • Verification: npx --yes markdown-link-check README.md --quiet passes on the final content.

Open findings

None in the current diff. The explicit #1299 / LICENSING.md dependency is documented in the PR body and keeps this PR merge-ineligible until the final relative link can replace the live tracker link.

@gemini-code-assist gemini-code-assist 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.

Code Review

This pull request updates the project's documentation, including the README and the Cloud Deployment Guide, to align with the new revival roadmap (ADR-0044), shifting the project's posture from archiving to a v0.x free open beta. It also updates the demo-autopilot.mjs script to use extractListItems when retrieving boards. Feedback on the code changes highlights a potential runtime TypeError if the API returns a nullish response when fetching boards, suggesting the use of a nullish coalescing operator to default to an empty array.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment thread frontend/taskdeck-web/scripts/demo-autopilot.mjs Outdated

@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: ed0482664f

ℹ️ 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/platform/CLOUD_DEPLOYMENT_GUIDE.md Outdated
Comment thread README.md Outdated
Comment thread frontend/taskdeck-web/scripts/demo-autopilot.mjs Outdated
Comment thread README.md Outdated
Comment thread README.md Outdated
Comment thread README.md

Copy link
Copy Markdown
Owner Author

Fresh-eyes review — changes requested

Reviewed commit: ed0482664f482151a1cd52bb7d375d1c37059e01

Scope: every #1302 acceptance criterion, factual claims, links/commands, GIF provenance/legibility, and the deliberate #1299 licensing dependency. This was a read-only review; I made no branch changes.

HIGH

  1. The newly active hosted-deployment guide can expose anonymous registration before the registration-gating ship gate lands. The guide now tells adopters how to publish the SPA/API on Railway or Render, while the target tree still exposes POST /api/auth/register as [AllowAnonymous]. REVIVAL-01: Registration gating - Auth:Registration Mode (Open/InviteOnly/Closed) with first-user bootstrap #1297 explicitly exists to gate registration before a public beta instance, but this PR does not declare that dependency or warn operators to keep the deployment private. A public instance following this guide can accept arbitrary accounts and incur provider usage/cost.
    Required resolution: either sequence this PR after REVIVAL-01: Registration gating - Auth:Registration Mode (Open/InviteOnly/Closed) with first-user bootstrap #1297 and document a safe registration mode for hosted use, or scope the guide explicitly to private evaluation until REVIVAL-01: Registration gating - Auth:Registration Mode (Open/InviteOnly/Closed) with first-user bootstrap #1297 lands. Do not change auth conventions in this README PR.

MEDIUM

  1. The opening sentence overclaims the unshipped transcript/evidence engine. README line 5 says in the present tense that transcripts become evidence-linked proposals; only line 22 later says transcript-aware extraction with evidence spans is v0.2. That contradicts REVIVAL-06: README revival rewrite - positioning, demo GIF, MCP section, remove archive messaging #1302's explicit “do not promise the transcript engine yet” trap at the highest-visibility point.
    Required resolution: describe the shipped pasted-note/capture loop in the lead, and keep transcript-aware evidence linking clearly future-tense.

  2. “Proposal-only write tools” is not factual for the current MCP surface. create_capture writes an Inbox item immediately with no proposal, and dismiss_proposal directly changes terminal proposal state. The invariant is narrower: board-changing operations require proposals and an agent cannot approve them. README lines 87 and 106 currently imply every write is proposal-backed.
    Required resolution: state the board-mutation/approval invariant precisely and name the bounded direct-write exceptions.

  3. The promoted cloud backup commands rely on a binary absent from the production image. The Railway/Render steps instruct operators to run sqlite3 ... ".backup ..." inside the service shell, but deploy/Dockerfile.production installs only curl and gosu; it does not install sqlite3. The active recovery guidance therefore cannot be relied on with the shipped image.
    Required resolution: provide and verify a backup path available in the container, add the required runtime dependency in the appropriate deployment issue, or keep these steps explicitly non-executable/reference-only.

  4. Existing open review threads are confirmed and still need fixes/evidence:

LOW

  1. The freshly dated cloud cost table has stale Railway economics. It describes approximately $5 compute with bandwidth included, while Railway's current published pricing meters RAM, CPU, and egress separately. See Railway pricing and Railway pricing docs.
    Required resolution: update the estimate from current official pricing or label it illustrative with a verification date and direct pricing links.

Acceptance-criterion / evidence notes

Copy link
Copy Markdown
Owner Author

Review fix evidence for final head 4fe6cc41:

  • HIGH — cloud guide could enable public hosting while anonymous registration remained open -> 4fe6cc41 makes the path private-evaluation-only unless REVIVAL-01: Registration gating - Auth:Registration Mode (Open/InviteOnly/Closed) with first-user bootstrap #1297 is present and a safe mode is explicitly configured.
  • MEDIUM — README overclaimed shipped transcript/evidence behavior -> 4fe6cc41 limits shipped claims to pasted source text and marks transcript-aware evidence spans as v0.2.
  • MEDIUM — MCP was described as proposal-only -> 4fe6cc41 distinguishes review-gated board mutation from bounded direct workflow actions.
  • MEDIUM — backup commands assumed absent sqlite3 in the production image -> 4fe6cc41 replaces them with offline snapshot/admin-image/reviewed-job paths.
  • LOW — stale provider prices and bandwidth claims -> 4fe6cc41 removes frozen figures and requires current provider verification.
  • Bot: null response and incomplete board discovery -> 3cc414bc adds null-safe all-page collection plus no-progress protection and tests.
  • Bot: missing connector key, wrong Compose URL, missing HTTP API-key flow, unmerged ADR authority, and stdio prerequisites -> 4fe6cc41.

Verification after the batch:

  • targeted pagination tests: 6 passed;
  • typecheck/build: passed;
  • full frontend suite: 297 files / 3,759 tests passed;
  • docs governance, local Markdown links, and git diff --check: passed;
  • all 7 inline bot threads: replied and resolved.

Merge remains blocked on #1296 and #1299; public hosted use additionally depends on #1297.

Copy link
Copy Markdown
Owner Author

@codex review

Fresh round requested on final head 4fe6cc41 after the batched review fixes.

@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: 4fe6cc4117

ℹ️ 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 README.md Outdated

Copy link
Copy Markdown
Owner Author

Final-head CI accounting: required CI is 20/20 green, but CI Extended run 29220917062 is a real startup_failure caused by the shared workflow permission contract tracked in #1330. This PR remains merge-ineligible; the failed run is not dismissed or hidden by the check-rollup view.

@Chris0Jeky Chris0Jeky left a comment

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.

Fresh independent final-head review — changes required

Reviewed exact commit: 4fe6cc41173f50b006e94a1cf58883ff23700de4

CRITICAL

None.

HIGH

None.

MEDIUM

  1. The documented separate-process MCP quickstarts do not reuse the database created by this README's own source quickstart. (existing final-head bot thread)

    Location: README.md:91-99, mcp.example.json:1-10, and the standalone HTTP row at README.md:93.

    Risk: scripts/dev-up.ps1 -Seed starts the API with a process-scoped ConnectionStrings__DefaultConnection=Data Source=%LOCALAPPDATA%\Taskdeck\taskdeck-dev.db and restores the parent environment; scripts/dev-up.sh --seed similarly exports the pinned XDG path only inside the launcher process. The copied mcp.example.json sets only ASPNETCORE_ENVIRONMENT, so a later dotnet run ... -- --mcp process falls back to Data Source=taskdeck.db. Stdio then cannot find the user the README just told the evaluator to create, and standalone HTTP reads a different API-key store, so the key created through the web app is rejected. The new prerequisite paragraph is therefore still not executable from the advertised source quickstart.

    Required resolution: make the MCP config/instructions carry the same stable connection string printed by dev-up (cover Windows and XDG paths), or provide a startup/config path that persists and reuses it automatically. Verify both stdio user resolution and standalone HTTP Bearer-key auth after following the README source quickstart.

LOW

None beyond the medium finding above.

Acceptance criteria and evidence checked

  • Read #1302, the PR body, all 6 changed files/full diff, 5 conversation comments, 11 reviews, and all 8 inline threads (including the seven resolved/outdated threads). The thread above is the only unresolved inline thread.
  • README positioning now separates shipped pasted-text capture from planned v0.2 transcript evidence; the MCP direct-write exceptions, three modes, Docker/Compose URLs, connector-key requirements, private-only hosted posture, contribution/DCO wording, and archive-message removal otherwise match the final tree.
  • Demo pagination is null-safe, follows every page, advances by returned item count, and has tests for null, multi-page, and empty-progress responses.
  • GIF metadata at this SHA: 290,752 bytes, 1000×720, 4 frames, SHA-256 1C99C58585189421886882F8412E08F32E05F0417AAA503A65783AB16DDF991F. This matches the prior frame-by-frame review evidence. Seeded-generation provenance is available only through the PR narrative; no committed regeneration recipe was present in the diff.
  • #1302 remains intentionally incomplete until open PR #1296 establishes the revival direction and open issue #1299 supplies LICENSING.md and the permanent link. Public hosted evaluation additionally requires #1297 and an explicitly safe registration mode.
  • Final-head check rollup is 20/20 successful, but CI Extended run 29220917062 is a real startup_failure with zero jobs due to open #1330. Under the repository's zero-failing-CI rule, do not merge even after the documentation finding is fixed until a fresh Extended run is green.

Copy link
Copy Markdown
Owner Author

Final MCP review fix evidence on ac43e875: mcp.example.json now carries an explicit absolute shared-DB placeholder, and README documents dev-up's process-scoped override plus stable Windows/XDG paths. Throwaway runtime proof passed API registration, separate stdio initialize, and taskdeck://boards read against the same DB. HTTP proof instead exposed a pre-existing route/auth mismatch: /mcp returned 404 while the accidental root route initialized outside the intended middleware boundary. No backend security convention was changed here; Priority I #1338 tracks the FULL-tier fix, and README now marks HTTP MCP unsupported and warns not to expose the root route. JSON parse, docs governance, README links, and diff check pass. The inline DB-path thread was replied to and resolved.

Copy link
Copy Markdown
Owner Author

@codex review

Fresh final review requested on ac43e875 after the shared-DB stdio proof and removal of unsupported HTTP MCP claims. CI Extended #1330 remains a real blocker.

@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: ac43e8755f

ℹ️ 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 README.md Outdated
@Chris0Jeky

Copy link
Copy Markdown
Owner Author

Late connector finding fixed at 03554565:

  • persistent SQLite volume + regenerated secrets -> stable ignored deploy/.env.docker-run, created once with restrictive permissions and reused on every direct Docker restart;
  • operator warning now maps JWT rotation to session invalidation and connector-key loss to unrecoverable stored credentials;
  • command syntax (bash -n), ignore rule, docs governance, README links, and diff check all pass.

The inline P2 has a direct reply and is resolved. Fresh exact-head review/CI requested. #1296/#1299 sequencing, #1297 public-hosting dependency, #1338 HTTP MCP boundary, and CI Extended #1330 continue to block merge.

@Chris0Jeky

Copy link
Copy Markdown
Owner Author

@codex review

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. Keep them coming!

Reviewed commit: 0355456578

ℹ️ 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".

@Chris0Jeky

Copy link
Copy Markdown
Owner Author

CI Extended at exact head 03554565 ended in startup_failure before creating any jobs: https://github.com/Chris0Jeky/Taskdeck/actions/runs/29225261037. This is recorded on #1330 and remains a real merge blocker independent of required CI.

@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: 53359a8177

ℹ️ 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 mcp.example.json
"env": {
"ASPNETCORE_ENVIRONMENT": "Development"
"ASPNETCORE_ENVIRONMENT": "Development",
"ConnectionStrings__DefaultConnection": "Data Source=REPLACE_WITH_THE_ABSOLUTE_taskdeck-dev.db_PATH"

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 Escape Windows DB paths in the MCP example

When Windows users follow the README and paste the dev-up path (for example C:\Users\...\Taskdeck\taskdeck-dev.db) into this JSON string, the single backslashes are parsed as JSON escapes (\U is invalid, and \t can become a tab), so the MCP config either fails to load or points at the wrong database. Please make the example/guidance JSON-safe for Windows, e.g. require forward slashes or doubled backslashes when replacing this placeholder.

Useful? React with 👍 / 👎.

Comment on lines 70 to 73
-e Jwt__SecretKey=$(openssl rand -base64 48) \
-e Connectors__EncryptionKey=$(openssl rand -base64 32) \
-e Cors__AllowedOrigins=http://localhost:5000 \
-v taskdeck-data:/app/data \

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 Reuse cloud-guide secrets with the persistent volume

Fresh evidence after the earlier README fix: this cloud-guide command still generates a new Connectors__EncryptionKey each time while mounting the persistent taskdeck-data volume. If an evaluator reruns this local production test after storing connector credentials, the preserved SQLite database is paired with a different key and those credentials become undecryptable; use a reused env file like the README path or make this command explicitly throwaway by avoiding the persistent volume.

Useful? React with 👍 / 👎.

Comment thread README.md
- `TASKDECK_CONNECTORS_ENCRYPTION_KEY` (generate with: `openssl rand -base64 32`)
| Mode | Command / endpoint | Intended use |
|---|---|---|
| Local stdio | `dotnet run --project backend/src/Taskdeck.Api/Taskdeck.Api.csproj -- --mcp` | Local editor or agent client; zero network listener |

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 Keep dotnet launch chatter off MCP stdout

Because this command is now the copyable stdio MCP launch path, the project launch profile can corrupt the protocol before Taskdeck starts: backend/src/Taskdeck.Api/Properties/launchSettings.json enables dotnetRunMessages, and dotnet run with launch settings writes a startup banner to stdout (see dotnet/sdk#45640), which MCP clients parse as non-JSON before JSON-RPC begins. Use --no-launch-profile (and preferably a prebuilt/no-build launch) or a published executable for the stdio config.

Useful? React with 👍 / 👎.

Comment thread README.md
printf 'Jwt__SecretKey=%s\nConnectors__EncryptionKey=%s\n' \
"$(openssl rand -base64 48)" \
"$(openssl rand -base64 32)" \
> deploy/.env.docker-run

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 Keep Docker-run secrets out of the build context

This stores long-lived JWT and connector keys under deploy/, but the repo's .dockerignore does not exclude deploy/.env.docker-run or .env.*; after the first run, every later docker build ... . sends that secret file in the build context (and remote/buildx builders may retain it) even though Git ignores it. Put the file outside the Docker context or add an explicit .dockerignore exclusion before recommending this persistent path.

Useful? React with 👍 / 👎.

@Chris0Jeky
Chris0Jeky merged commit 25fb49d into main Jul 13, 2026
35 checks passed
@github-project-automation github-project-automation Bot moved this from Pending to Done in Taskdeck Execution Jul 13, 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.

REVIVAL-06: README revival rewrite - positioning, demo GIF, MCP section, remove archive messaging

2 participants