Skip to content

chore: migrate repo to TaraxioT org, free-tier CI, and deterministic re-probe test - #4

Closed
0xgeorgemathew wants to merge 311 commits into
review/base-pre-migrationfrom
main
Closed

chore: migrate repo to TaraxioT org, free-tier CI, and deterministic re-probe test#4
0xgeorgemathew wants to merge 311 commits into
review/base-pre-migrationfrom
main

Conversation

@0xgeorgemathew

@0xgeorgemathew 0xgeorgemathew commented Aug 20, 2026

Copy link
Copy Markdown
Member

Problem

The repo moved from 0xgeorgemathew/t3trade to the TaraxioT org, but 16+ tracked references still pointed at the old location, the install doc pointed users at upstream releases, release.yml hid GitHub-hosted macOS/Windows matrix entries that would burn non-free runner minutes if dispatched, and the ProviderRegistry codex re-probe test flaked on 2-vCPU CI runners (2 of 4 runs today).

What this does

  • 47ee6d903 — point all repo links (README, marketing constants, installer, server package metadata, upstream docs) at TaraxioT/t3trade; upstream pingdotgg/t3code attribution untouched.
  • 0a754c0fc — comment out release.yml's native-OS build matrix entries so a dispatch can't run paid GitHub-hosted macOS/Windows jobs. All 30 active runs-on across 12 workflows are now blacksmith-2vcpu-ubuntu-2404 (free tier); no cron schedules remain.
  • 348c5d923 — replace the re-probe test's budgeted poll with a Deferred awaited on the real spawn's exit; verified 15x locally plus CPU-pressure runs and green twice on the 2-vCPU runner.
  • 3f116f6ce — install doc: fork releases link + clarify winget/brew/AUR deliver upstream T3 Code.

Note: base branch review/base-pre-migration is pinned at the pre-migration commit a6cad93a2 so this PR shows exactly the migration diff; merge target in practice is keeping main as-is.

Work performed by GLM-5.3 via the ZCode harness.


View with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is enabled.

Note

Add full pull request system, mobile theming overhaul, and migrate repo to TaraxioT org

  • Introduces end-to-end pull request support: contracts in pullRequest.ts, provider implementations for GitHub/GitLab/Bitbucket/Azure DevOps, PullRequestService with caching and rate-limit handling, HTTP diff endpoint, client-runtime atom families, and a full web PR route with list/detail/timeline/summary tabs, review threads, reactions, and reviewer management
  • Overhauls mobile theming: replaces useColorScheme with useAppearancePreferences throughout, adds MobileThemeId selection with per-appearance light/dark themes, native diff/editor theming via createNativeReviewDiffTheme, and showcase capture theme coordination
  • Migrates repo identity from t3code to TaraxioT/t3trade: renames Electron protocol schemes, Linux WM class/desktop entries, SSH askpass dir, WSL markers, installer URLs, and shared T3_HOME_DIR_NAME constant
  • Adds desktop hold-to-quit (QuitHold), favicon capture pipeline, remote editor deep-link support (buildRemoteOpenUrl), and preview tab zoom/appearance defaults
  • Migrates relay infrastructure from Planetscale to self-hosted Postgres via Cloudflare Access tunnel with deploy-time migrations
  • Risk: sidebar-filter-button.tsx and sidebar-header-actions.tsx reference useThemeColor without importing it, causing runtime errors; trading-contracts/src/observation.ts renames funding fields (meanmeanPer8h, latestRatelatestRatePer8h) which is a breaking schema change for consumers; CloudCliOAuthConfig shape changes (authorizationEndpoint removed, loopbackPort added)

Macroscope summarized bdf852f.

extoci and others added 30 commits August 13, 2026 15:30
Co-authored-by: Julius Marminge <51714798+juliusmarminge@users.noreply.github.com>
…ngdotgg#6495)

Co-authored-by: Simone <185146821+Lucenx9@users.noreply.github.com>
Co-authored-by: t3-code[bot] <236186684+t3-code[bot]@users.noreply.github.com>
Co-authored-by: Wout Stiens <71498452+StiensWout@users.noreply.github.com>
)

Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: t3-code[bot] <269035359+t3-code[bot]@users.noreply.github.com>
Co-authored-by: maria <254055478+maria-rcks@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: codex <codex@users.noreply.github.com>
…sar (pingdotgg#5877)

Co-authored-by: tsouth89 <tsouth89@users.noreply.github.com>
Co-authored-by: t3-code[bot] <t3-code[bot]@users.noreply.github.com>
Co-authored-by: Utkarsh Patil <73941998+UtkarshUsername@users.noreply.github.com>
Co-authored-by: Shivam Sharma <91240327+shivamhwp@users.noreply.github.com>
…gg#6325)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
…the app bar (pingdotgg#6587)

Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Julius Marminge <julius0216@outlook.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>

@macroscopeapp macroscopeapp 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.

Reviewed the web UI surface of this sync against the shared component system and Tailwind/theme ownership rules.

What checks out:

  • MissionLivePanel's log rows and order legs now use Popover + PopoverTrigger openOnHover with the named tooltipStyle popup variant instead of a native title on a non-interactive element, so the detail is reachable by keyboard and touch — this resolves the finding from the previous run.
  • The remaining native title attributes in apps/web/src/components/trading/** carry explicit oxlint-disable-next-line t3code/no-native-title-tooltip directives with a stated reason, which is a documented deferral rather than a silent evasion.
  • BrowserDeviceToolbar moves its aspect-ratio hint from title to Tooltip/TooltipPopup while keeping the Button variant="ghost" size="icon-xs" primitive and aria-pressed.
  • The index.css restructure keeps the mask/fade contracts intact: topbar-scroll-fade and virtualized-scroll-fade both preserve the opaque scrollbar lane, and every retired selector (settings-page-scroll-fade, workspace-titlebar-controls, sidebar-brand) has its replacement consumer (data-settings-page-scroll, data-workspace-titlebar-controls, SidebarChrome/sidebar.tsx) in this diff.
  • The new _chat.pull-requests.tsx route composes ui/* primitives throughout — no raw button/input reconstructions.

One finding below, on the new fork-owned stylesheet.

Posted via Macroscope — UI Consistency

Comment thread apps/web/src/trading.css Outdated
Comment thread scripts/upstream-drift.sh Outdated
0xgeorgemathew and others added 2 commits August 20, 2026 18:49
…ink follows the theme

Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
…sync due

Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>

@macroscopeapp macroscopeapp 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.

Reviewed the changed web UI surfaces against the shared component system and Tailwind ownership rules.

The index.css → owner/utility split, trading.css (now on @variant dark/light), the new virtualized-scroll-fade contract, the source-level MenuPopup width defaulting, and the new compact/micro/icon-micro/ghost-muted/glass primitive variants all look consistent, and the previously native-title tooltips are now real Tooltips (with t3code/no-native-title-tooltip enforced).

Two findings in the new pull-request UI, where controls are hand-rolled instead of going through Button. Both matter beyond style: Tailwind v4's preflight gives a bare <button> cursor: default, and buttonVariants is what restores cursor-pointer, the pointer-coarse 44px hit target and disabled:opacity-64 — so these controls behave differently from every other control in the app.

Posted via Macroscope — UI Consistency

Comment thread apps/web/src/components/pullRequest/PullRequestChecksPopover.tsx Outdated
Comment thread apps/web/src/components/pullRequest/PullRequestReactions.tsx Outdated

@macroscopeapp macroscopeapp 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.

Reviewed the changed web UI surfaces against the shared component system and Tailwind ownership rules.

The index.css → owner/utility split, trading.css (now on @variant dark/light), the new virtualized-scroll-fade contract, the source-level MenuPopup width defaulting, and the new compact/micro/icon-micro/ghost-muted/glass primitive variants all look consistent, and the previously native-title tooltips are now real Tooltips (with t3code/no-native-title-tooltip enforced).

Two findings in the new pull-request UI, where controls are hand-rolled instead of going through Button. Both matter beyond style: Tailwind v4's preflight gives a bare <button> cursor: default, and buttonVariants is what restores cursor-pointer, the pointer-coarse 44px hit target and disabled:opacity-64 — so these controls behave differently from every other control in the app.

Posted via Macroscope — UI Consistency

Comment thread apps/web/src/components/pullRequest/PullRequestChecksPopover.tsx Outdated
Comment thread apps/web/src/components/pullRequest/PullRequestReactions.tsx Outdated
0xgeorgemathew and others added 13 commits August 20, 2026 18:58
Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
…ed origin

The relay's only expensive dependency was a retained PlanetScale PS_20
cluster with two read replicas, even though the relay is not in the data
path — it is touched at link time, at connect time, on status polls, and
on APNs delivery. The database now lives on our own Postgres 17 in Oracle
Ashburn, reached from the edge through Hyperdrive, Cloudflare Access and
an existing Cloudflare Tunnel.

`RelayHyperdrive` builds its origin from RELAY_DB_* config instead of a
PlanetScale runtime role. The Access origin carries no port — the tunnel's
TCP ingress owns it. `relayDatabaseMode`'s shared-database/stage-branch
split is gone with the branches it described; `relayDatabaseName` gives
every stage its own database on the one server. `RelaySchema` still runs
at deploy time so schema drift keeps regenerating migration SQL, and
`migrationsSnapshot` now reports its hash. Smart Placement is on, so the
connect path's sequential queries run beside the origin.

schema.ts, environments/, agentActivity/, auth/ and http/Api.ts are
untouched, which is the point: this keeps the fork's upstream syncs cheap.

Model: Claude Opus 5. Harness: Claude Code.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Planetscale.PostgresDatabase used to apply migrations/postgres on every
deploy, connecting from the deploy host. The self-hosted origin is only
reachable through Cloudflare Access, so scripts/migrate.ts opens a
short-lived `cloudflared access tcp` session with the admin service token,
runs the migrations as t3relay_owner, and lets the scope kill the session
on success, failure and interrupt alike.

The apply algorithm is upstream's, and it reuses alchemy's own
listSqlFiles so file ids and hashes keep upstream's semantics. The port is
ephemeral because CI runs concurrent jobs. planMigrations and
nextMigrationSeq are pure so the ordering and the skip rule are tested
without a database.

deploy.ts runs migrations before Apply, so the Worker cannot boot against
a database missing a table it queries, and a failed migration aborts the
deploy. --skip-migrations exists for Worker-only changes when the origin
is unreachable, and defaults to off so typing nothing is the safe path.

The relay gets no migrate route: it is an authentication service and does
not need a privileged DDL endpoint.

Model: Claude Opus 5. Harness: Claude Code.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The example still described PlanetScale-shaped configuration. It now covers
the six RELAY_DB_* keys: the Worker's read/write runtime role that Hyperdrive
connects with, and the schema owner that scripts/migrate.ts uses over
`cloudflared access tcp`.

Also records two things that otherwise look like mistakes: the origin has no
port because the tunnel's TCP ingress supplies it, and a deployment with no
mobile client still needs APNS_* values, so obviously-fake ids and a throwaway
key are the intended answer rather than lost credentials.

Model: Claude Opus 5. Harness: Claude Code.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The hero screenshot and the pinned console were an AI-generated fake and an
abstract diagram. Both are gone. One hand-built recreation of the desktop
cockpit (titlebar, thread sidebar, agent log, chart card, live position
panel) now sits under the hero and pins for the story: the page dims around
it while the log fills, the watch arms and fires, seventeen checks pass, the
stop rests, the drawdown holds, and the target prints, all on CSS scroll
timelines. Mobile plays the same beats un-pinned on a compressed cover pass.

Dark theme gains contrast and colour: the site now wears the app's own
profit/loss/armed inks, the primary button is profit green, and the hero
carries one accent glow. Metadata gains theme-color and OG tags.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Fact-checked against the trading harness rendering the real
MissionLivePanel: the invented console grammar is gone. The window now
carries the app's own arrangement - chart card with a price line over an
area wash, a projection wedge, level chips docked in the right gutter, a
POSITIONS card in the ledger's columns, the AGENT LOG card with its blue
progress rule, the status bar, and the composer with the model chips -
plus the sidebar and thread breadcrumb chrome. The price line, its wash,
and the live dot riding the stroke draw along keyframes generated from
the path's measured length, so every story beat lands on the exact
fraction of ink it owns. The live tape moved back under the hero.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Alchemy evaluates a Hyperdrive connection's dev origin while building the
plan, not only when running in dev mode, and it refuses an Access-fronted
origin that has none. Without this the prod deploy fails during planning
with "has an origin that requires Cloudflare Access. This is not supported
in development mode."

The dev origin points at loopback, which is where an operator's own
`cloudflared access tcp` session lands, so local development reaches the
same database by the same route the deploy does.

Model: Claude Opus 5. Harness: Claude Code.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The fork already owns its identity everywhere else - bundle id
com.t3trades.app, the name "T3 Trade (Alpha)", its own relay and hosted
app - but it still registered upstream's t3code:// scheme. Installed
beside an upstream build, both claim the same scheme and macOS picks a
winner, so a Clerk OAuth callback can be delivered to the wrong app.

The scheme is now t3trade:// (t3trade-dev:// in development). Both the
electron-builder protocol declarations and the launcher's runtime
registration had to change; the plist is generated from the former, so
patching only the latter leaves the packaged app on the old scheme.

The server keeps accepting the upstream renderer origins, so an
upstream-configured desktop build can still reach a local server.

Data-directory and window-class names keep the t3code spelling on
purpose: renaming those would orphan existing state for no benefit.

Model: Claude Opus 5. Harness: Claude Code.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Installing T3 Trade next to upstream T3 Code broke both. They shared
`~/.t3`, so one `state.sqlite` had two writers. They shared the Electron
user-data directory, which is where Electron keeps the single-instance
lock, so launching the second app just focused the first and yours
appeared not to start. Neither failure said anything; both hit a new user
on their first run.

The forked names now live in `packages/shared/src/forkPaths.ts` and the
call sites import them: `~/.t3trade` for data, `t3trade` / `t3trade-dev`
for `userData`. The same treatment goes to every other name that reaches
a shared namespace: the boot service unit and its launchd label, the
Linux desktop entry and WM class, the URL-handler entry, the ssh-askpass
directory and the WSL markers.

`T3CODE_HOME` deliberately keeps its name. It is opt-in, so a rename
would touch every call site and buy nothing. The ports need no fork
either: desktop already scans upward from 3773, the dev runner from
13773, and the desktop session cookie is already port-scoped.

Also fixes six desktop tests that had been failing since 02c98da3e,
which changed the URL scheme on a typecheck alone. One of them was
pointing at a real bug: the Linux URL-handler entry was still hardcoded
`t3code-url-handler.desktop`.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The root had grown five plan documents, a 566 KB soak report and two
verification write-ups. The three landed plans join the eleven already
archived under artifacts/plans/. The soak report moves to
artifacts/investigations/, which is ignored, and the two scripts that
write it now point there.

Plan 41 and its prompts stay at the root, where the existing ignore rule
already covers them: plan 41 is unfinished, and its notes map the fork's
own relay infrastructure. Agent briefs get the same rule for the same
reason, since this repository is public.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
…unning BTC

The replica approximated the app's trading cockpit; measured side by side
against the live panel and the Electron app it differed in glass material,
typography, geometry, ink, motion grammar, and app chrome. Rebuilt the
window as a 1:1 app surface with the app's computed values and font stacks,
coupled the chart animations to the app's beat table, added the missing
chrome (header controls, sidebar anatomy, minimap rail, glass composer),
moved the narrative to BTC at the current spot, and made the ticker a
compositor-smooth time-driven loop.

Done with ZCode (GLM-5.3) driving a multi-agent measure/fix/verify pipeline.
The archived plan documents and the two relocated server scripts were never run through the formatter, so the Check job failed on five files. Applying vp fmt leaves the content untouched.

Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
…heme

8c821d2 moved the electron-builder protocol declarations to t3trade://
and t3trade-dev:// but left both build-config assertions on the upstream
spelling, so the scripts suite failed on the mac and linux protocol lists.

Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>
Comment thread artifacts/plans/plan-40-upstream-sync.md Outdated
Comment thread artifacts/plans/plan-40-upstream-sync.md Outdated
Purpose: accumulate a corpus of decision-quirk, UI-bug, and discrepancy data
by running these prompts repeatedly; Claude analyzes the bundles later. Each
run appends one timestamped directory under `artifacts/investigations/`
(gitignored — the data never enters git). Shared rules live in

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟠 High plans/Executables.md:68

Every G1–G6 execution fails at mandatory step 0 because artifacts/investigations/G-RULES.md is required but is absent from the reviewed tree; workers therefore have no Protection rules before they are instructed to start isolated trading missions. Add and track the shared rules file (or provide it through a guaranteed bootstrap) before these prompts can be executed safely.

🚀 Reply "fix it for me" or copy this AI Prompt for your agent:
In file @artifacts/plans/Executables.md around line 68:

Every G1–G6 execution fails at mandatory step 0 because `artifacts/investigations/G-RULES.md` is required but is absent from the reviewed tree; workers therefore have no Protection rules before they are instructed to start isolated trading missions. Add and track the shared rules file (or provide it through a guaranteed bootstrap) before these prompts can be executed safely.

Evidence trail:
artifacts/plans/Executables.md:68-70, 97-100, 134-140, 186-190, 223-227, 270-274, 309-313, 353-357 @ a9ffeb09343e899d0f8f5738c65f8352bec436ff; repository lookup: artifacts/investigations/G-RULES.md at REVIEWED_COMMIT (not found); git grep "G-RULES|bootstrap" REVIEWED_COMMIT

Comment thread artifacts/plans/Executables.md
| `reserved` | `queued` | muted, no figures yet |
| `submitted` / `accepted` | `working` | armed amber, limit price live |
| filled `0 < f < size` | `partial` | armed amber + fill track |
| `filled`, opening leg, still held | `open` | info, **live** mark/P&L/fee |

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟡 Medium plans/plan-39-orders-in-positions.md:171

The planned open row cannot display truthful live P&L per opening leg: the available live position only provides aggregate P&L, so scaled entries at different prices have no basis for allocation (for example, $100 and $200 buys at a $150 mark are +$50 and -$50 while the aggregate is $0). Define a lot-allocation rule such as FIFO and expose the required per-lot entry data, or change the row requirement to show aggregate P&L.

🚀 Reply "fix it for me" or copy this AI Prompt for your agent:
In file @artifacts/plans/plan-39-orders-in-positions.md around line 171:

The planned `open` row cannot display truthful live P&L per opening leg: the available live position only provides aggregate P&L, so scaled entries at different prices have no basis for allocation (for example, $100 and $200 buys at a $150 mark are +$50 and -$50 while the aggregate is $0). Define a lot-allocation rule such as FIFO and expose the required per-lot entry data, or change the row requirement to show aggregate P&L.

Evidence trail:
artifacts/plans/plan-39-orders-in-positions.md:160-172 @ a9ffeb09343e899d0f8f5738c65f8352bec436ff
apps/web/src/components/trading/tradingPresentation.ts:2645-2665, 2680-2715, 2750-2776 @ a9ffeb09343e899d0f8f5738c65f8352bec436ff

If you can call the Agent tool you are the orchestrator: delegate the
steps below, make every spawn prompt self-contained, and copy the
Protection rules into each delegation verbatim.
1. Same setup and mission start as G1 steps 1-3 (agent-discretion mandate,

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟠 High plans/Executables.md:229

G3 can block forever before the audit loop, server shutdown, and report generation when its discretionary mission stands aside without publishing a plan. Add a bounded wait with a failure/NOT-EXERCISED path that still performs cleanup and writes the required report.

🚀 Reply "fix it for me" or copy this AI Prompt for your agent:
In file @artifacts/plans/Executables.md around line 229:

G3 can block forever before the audit loop, server shutdown, and report generation when its discretionary mission stands aside without publishing a plan. Add a bounded wait with a failure/`NOT-EXERCISED` path that still performs cleanup and writes the required report.

Evidence trail:
artifacts/plans/Executables.md:145-155, 217-231 at c2d2c9f698; git blame REVIEWED_COMMIT -- artifacts/plans/Executables.md -L 217,231

4. Let it run at least 60 minutes, at most 2 hours. Do not message the
thread again. The agent runs server-side on its own wakes; if no harness
run appears within 10 minutes of the first message, save the server log
to evidence/, record the failure, and go to step 8.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟡 Medium plans/Executables.md:155

When no harness run appears within 10 minutes, the executor jumps from step 4 to step 8, so it never stops the dev server or copies the isolated state.sqlite; failed runs therefore leak the server/process and omit the reproduction evidence. Route this failure path through explicit cleanup and database capture before reporting the failure.

🚀 Reply "fix it for me" or copy this AI Prompt for your agent:
In file @artifacts/plans/Executables.md around line 155:

When no harness run appears within 10 minutes, the executor jumps from step 4 to step 8, so it never stops the dev server or copies the isolated `state.sqlite`; failed runs therefore leak the server/process and omit the reproduction evidence. Route this failure path through explicit cleanup and database capture before reporting the failure.

Evidence trail:
artifacts/plans/Executables.md:152-173, c2d2c9f698

…t checks its PIDs

Plan 40's Prompt 2 merged the moving upstream/main while Prompt 3 tagged
beab688 as the new baseline, so any nightly landing mid-sync would have
dropped out of the recorded ancestry; the gate also read as all of Plan 39
when only Phase 0 precedes the sync. The soak-end checklist now verifies a
PID still belongs to the soak before stopping it.

Co-authored-by: Codesmith <codesmith-bot@users.noreply.github.com>

1. Stop the soak harness and monitor (PIDs 31356 / 58649).
2. Stop the WORKSPACE archiver (PID 8537 → .t3/userdata/market-archive.sqlite).
Keep the ~/.t3 archiver (PID 78836, restarted 2026-08-20) running — it is

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟡 Medium plans/Executables.md:425

Following this checklist keeps the ~/.t3 archiver running while potentially stopping T3 Trade's canonical ~/.t3trade archiver, so market data collection stops for this fork and an unrelated upstream process is retained. Update the preserved archiver path to ~/.t3trade.

🚀 Reply "fix it for me" or copy this AI Prompt for your agent:
In file @artifacts/plans/Executables.md around line 425:

Following this checklist keeps the `~/.t3` archiver running while potentially stopping T3 Trade's canonical `~/.t3trade` archiver, so market data collection stops for this fork and an unrelated upstream process is retained. Update the preserved archiver path to `~/.t3trade`.

Evidence trail:
artifacts/plans/Executables.md:414-427 (REVIEWED_COMMIT)
apps/server/src/trading/archive/config.ts:105-113 (REVIEWED_COMMIT)
packages/shared/src/forkPaths.ts:15-20 (REVIEWED_COMMIT)
README.md:137-164 (REVIEWED_COMMIT)

Investigation run G1 for the T3 Trades repo. Data first: every defect gets a
Finding with evidence before you fix it. Fixes are allowed per G-RULES.

0. Read artifacts/investigations/G-RULES.md and

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟡 Medium plans/Executables.md:134

The G1–G4/G6 prompts point executors to the nonexistent .claude/skills/test-t3-app/SKILL.md, so their mandatory first step fails and they never receive the isolation or browser-handling rules required by later steps. Update each reference to the versioned .agents/skills/test-t3-app/SKILL.md path.

🚀 Reply "fix it for me" or copy this AI Prompt for your agent:
In file @artifacts/plans/Executables.md around line 134:

The G1–G4/G6 prompts point executors to the nonexistent `.claude/skills/test-t3-app/SKILL.md`, so their mandatory first step fails and they never receive the isolation or browser-handling rules required by later steps. Update each reference to the versioned `.agents/skills/test-t3-app/SKILL.md` path.

Evidence trail:
artifacts/plans/Executables.md:134-135, 186-187, 223-224, 270-271, 353-354 at 885fad79a08c2a8ad96e900538e599d8da375e7a; repository glob at REVIEWED_COMMIT: `.agents/skills/test-t3-app/SKILL.md` exists and no `.claude/skills/test-t3-app/SKILL.md` match exists.

@macroscopeapp macroscopeapp 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.

Effect service conventions review, scoped to the Effect service code this PR adds under apps/**, packages/**, infra/**.

The new server-side pull-request stack (apps/server/src/pullRequest/*) and apps/desktop/src/wsl/DesktopWslServerTree.ts follow the canonical layout (subpath namespace imports, inline Context.Service interface, exported make, export const layer), so no findings there. Two deviations in the newly added client-runtime pull-request service module are noted inline.

Posted via Macroscope — Effect Service Conventions

export const pullRequestDiffLoaderLayer: Layer.Layer<

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

pullRequestDiffLoaderLayer erases the module namespace for what is otherwise a canonical single-service module. Suggest exporting the construction as make and the layer as layer, so consumers read PullRequestDiffHttp.PullRequestDiffLoader / PullRequestDiffHttp.layer.

This pairs with the individual re-export in state/pullRequests.ts (export { PullRequestDiffLoader, pullRequestDiffLoaderLayer } ...), which could become export * as PullRequestDiffHttp from "./pullRequestDiffHttp.ts" to keep the module shape intact.

Posted via Macroscope — Effect Service Conventions

Comment on lines +20 to +22
export class EnvironmentHttpConnectionNotReadyError extends Data.TaggedError(
"EnvironmentHttpConnectionNotReadyError",
)<{ readonly message: string }> {}

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

This new service failure stores an unstructured message as its only data. Consider declaring it with Schema.TaggedErrorClass and deriving message — the tag alone identifies this failure, so it needs no fields.

-export class EnvironmentHttpConnectionNotReadyError extends Data.TaggedError(
-  "EnvironmentHttpConnectionNotReadyError",
-)<{ readonly message: string }> {}
+export class EnvironmentHttpConnectionNotReadyError extends Schema.TaggedErrorClass<EnvironmentHttpConnectionNotReadyError>()(
+  "EnvironmentHttpConnectionNotReadyError",
+  {},
+) {
+  override get message(): string {
+    return "The environment HTTP connection is not ready.";
+  }
+}

That also needs import * as Schema from "effect/Schema", and the construction in the diff atom becomes new EnvironmentHttpConnectionNotReadyError({}).

Posted via Macroscope — Effect Service Conventions

Every workflow in this repo ran on Blacksmith runners and fed the
blacksmith-sh and macroscopeapp org installations. The repo now ships
no GitHub Actions definitions; the workflows were already disabled at
the GitHub level before this commit.
not a replica. A page that is 100% simulation is a fake-screenshot page no
matter how good the simulation is.
- `docs/media/t3trade-mission.png` is an AI-generated fake with gibberish text;
never ship it. `public/t3trade-screenshot.webp` was already removed from the

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟡 Medium marketing/DESIGN-CONTRACT.md:63

The claim that public/t3trade-screenshot.webp and docs/media/t3trade-mission.png have no remaining references is false: scripts/build-t3trade-themed-assets.py still generates both files. Running the asset rebuild therefore recreates the explicitly prohibited fake images, so remove or update those generator targets instead of only deleting the outputs.

🚀 Reply "fix it for me" or copy this AI Prompt for your agent:
In file @apps/marketing/DESIGN-CONTRACT.md around line 63:

The claim that `public/t3trade-screenshot.webp` and `docs/media/t3trade-mission.png` have no remaining references is false: `scripts/build-t3trade-themed-assets.py` still generates both files. Running the asset rebuild therefore recreates the explicitly prohibited fake images, so remove or update those generator targets instead of only deleting the outputs.

Evidence trail:
apps/marketing/DESIGN-CONTRACT.md:62-65 at REVIEWED_COMMIT; scripts/build-t3trade-themed-assets.py:7, 141-212 at REVIEWED_COMMIT; .gitignore:58-61 at REVIEWED_COMMIT; git diff MERGE_BASE..REVIEWED_COMMIT -- apps/marketing/DESIGN-CONTRACT.md

.macroscope/ arrived with the v0.0.34 sync as config for the
macroscopeapp check-run agents; the org is dropping Blacksmith and
Macroscope, so the directory is dead weight. Both this deletion and the
earlier workflow removal are now recorded in the patch ledger so the
next sync knows they are expected to conflict.
@0xgeorgemathew

Copy link
Copy Markdown
Member Author

Closing: this was a review-only PR (main → pinned review/base-pre-migration). All four migration commits (47ee6d903, 0a754c0fc, 348c5d923, 3f116f6ce) are already on main, so merging would only push main onto the pinned review base and destroy the diff window.

The free-tier-CI portion of the description is also stale — .github/workflows/ was removed entirely in bdf852fa2 and aa8c4780f after this PR was opened.

Outstanding review findings are on files outside the migration commits and will be handled separately.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.