Skip to content

Port Promachos mode #175

Description

@lukemaj

What: Promachos mode chats in bubbles on v2, with his persona loaded from his home.
Why: Upstream has no chat mode; the fork's start hook and timeline filter use deleted code (#166 assessment g3).
So what: An agent ports it into fork/v2 after the Prism service and thread people.

Part of #166 (port 9 of 11). Plan and decision table: #166.

Contribution to the Objective

Promachos mode chats in bubbles, with his persona loaded from his home.

Acceptance criteria

Non-goals

Blockers

Earlier port Issues per the order in #166 (D3').

Proof

Focused launch test; web logic tests.

Elon record

  • Requirements and who asked: Objective item (Promachos mode); user approved per-feature port (Absorb upstream main (533 commits behind) #166).
  • Deleted: none.
  • Bottleneck: Prism service, child threads, thread people.
  • Checked myself: upstream launchThread at ws.ts:1949.

Activity

  1. lukemaj commented on Oct 8, 2026

    @lukemaj
    ContributorAuthor

    What: #175 is owned by one dispatcher/writer in the assigned clean worktree, created from landed foundation 6e1653b6719565db2cc5094670e19e6efd3fc1ce.
    Why: Promachos home, launch routing and bubble timeline need the approved V2 port; upstream has no Promachos implementation.
    So what: Implement and prove against exact WIP dependencies, keep blockers open, then rebase after their landing and deliver one independently reviewed #175-only PR into fork/v2.

    Durable state

    Workspace /Users/lukaszmaj/dev/toolboxmd/chromeria-worktrees/175-v2, branch feat/175-promachos-v2; sole writer is this dispatcher. Created through the full clone's exact fetch/worktree-add commands; no files changed in 166-absorb or any main checkout. Foundation #178 is merged; live fork/v2 verified at 6e1653b. Live #168 WIP 90c5381 and #169 WIP e49d356 are not reviewed landed dependencies. #170 has no live remote branch/PR yet; its local clean committed checkpoint is available read-only. Blockers remain open.

    Read full PORT-BRIEF, #175, #166 with all comments, g3 assessment, repo AGENTS, fork docs and glossary. Upstream search: git grep on upstream/main finds no Promachos references; GitHub open-PR and Issue searches for Promachos return no results. No candidate adopted. Keep #125 initial-only restriction and D5′ shared Prism service/launch-time kit. Native V2 lineage replaces old prefix helper; no old thread tools are ported.

    Visible read-only worker sub.sub.sub.thread-9c8e27a973f0.dispatcher-c1e9a4151064.dispatcher-1f9eb305fe57.worker-4e2a3c513c00 inspects UI seams only, never authors. Router chose its model/effort. Independent exact-head reviewer will be a separate visible T3 reviewer.

    Authority: #175 implementation, Issue record, task commits/push and one fork/v2 PR. No merge/main push/version bump/install/deploy/browser/computer use/desktop build. UI images and integrated pass deferred to planner; no visual-proof claim. Focused behavior tests and scoped lint/typecheck in host-neutral supported Node24 environment. Receipts/effect drains only, no sleeps. Dependencies will be staged for local proof only and removed from the final diff by rebase onto landed fork/v2. Any consequential choice or non-trivial conflict pauses for options/evidence/choice and user reply.

    Requirements and who asked: User/#175 and #166 approved home ProjectService port, initial launchThread Prism selection/kit and V2 run-based bubble timeline, one PR and focused proof.
    Deleted: V1 orchestration/dispatch hook and queued-message assumptions; no duplicate Prism router, hidden agent runs, versions or UI proof claim.
    Bottleneck: Published WIP dependency composition followed by their reviewed landing; UI integration can proceed against checkpoints without clearing blockers.
    Checked myself: Required records and source seams read, exact full-clone worktree creation/base and live dependency refs checked, upstream searches empty, assigned workspace initially clean.

  2. lukemaj commented on Oct 8, 2026

    @lukemaj
    ContributorAuthor

    What: Dependency staging is paused before resolving #168/#169 non-trivial conflicts.
    Why: The published Prism checkpoint predates the latest child retirement/cross-project contract and the landed typed/opaque settings boundary.
    So what: Await the user’s A/B decision; do not resolve or continue the cherry-pick until approved.

    Canonical continuation state

    Assigned worktree /Users/lukaszmaj/dev/toolboxmd/chromeria-worktrees/175-v2, sole-owned branch feat/175-promachos-v2. Foundation base 6e1653b6719565db2cc5094670e19e6efd3fc1ce; all #168-only commits staged cleanly, HEAD 83af2a38ce (last source checkpoint 90c538120e). In-progress cherry-pick sequence 367ac77965, then e49d356bf2. Eight unresolved files: OrchestratorMcpService.ts, its activity/test/integration fixtures, core.test.ts, Orchestrator.ts, orchestratorMcp.ts, settings.ts. No conflict resolution or #175 implementation authored yet. No push/PR/review/proof claim. Dependency deltas are temporary local proof staging, never final #175 scope.

    Decision requested in this T3 thread:

    • A (recommended): compose already-approved behaviors locally. forkPlans: [...(plan.forkPlans ?? []), ...prismRecovery.commitPlans(command)] in the one approved list, retirement first; keep destination project/workspace forwarding and use Prism kit plus task prompt; union service/test dependencies; preserve foundation autoUpdateProviders/wightModes while overriding only opaque prismRoles with typed PrismRoleKits. Rebase away all predecessor deltas after their merges.
    • B: abort current Port Prism as a service behind upstream delegation #169 cherry-pick and wait for its published rebased dependency.
      Evidence: actual combined diff has competing forkPlans, task/input fields and settings schema plus layer fixtures. D5′/D14/D16 already approve their behavior and shared seam, but PORT-BRIEF requires decision review before non-trivial resolution. User reply is pending.

    Setup uses existing pnpm store, no downloads observed, no tracked lockfile diff. Disk after setup is 2.3 GiB free; no clone or desktop build. Scoped proof will use installed Node24.13.1 from ~/.nvm/versions/node/v24.13.1/bin with the prescribed host-neutral environment. UI evidence remains deferred to planner. Read-only UI worker is still active; it cannot author changes.

    Requirements and who asked: User requires local dependency proof and final #175-only PR; PORT-BRIEF requires waiting for non-trivial conflict decisions.
    Deleted: No dependency behavior dropped and no decision acted on; no duplicate commit seam or router proposed.
    Bottleneck: User choice A/B before dependent staging continues.
    Checked myself: Inspected actual eight-file conflict output and source APIs, preserved all staged predecessor code and confirmed only task workspace was changed.

  3. lukemaj commented on Oct 8, 2026

    @lukemaj
    ContributorAuthor

    What: PR187 is refreshed onto merged recovery-history base 4c2b38436f at 73435bedda993ddc954347ce79072caad93ba1c9, preserving all approved #175 behavior.
    Why: A real-receipt regression found kit loss between accepted creation and initial-message acceptance; the successor restores the current kit without changing the stored model.
    So what: Current734 affected server proof and exact-head review pass; CI is running; unchanged proof is reused, and planner owns the deferred UI/live-provider pass and merge/cutover.

    Current durable handoff, 2026-10-09

    Implementation and authorized decisions

    • Home creation uses ProjectService, stable identity/retry registration, preserves existing persona files, and creates the absent CLAUDE persona link. Environment-scoped homes and native people/child lineage filtering retained; saved multiple-model choices restore on return to standard mode.
    • Initial-only Promachos bootstrap calls upstream launchThread. Shared Prism resolves configured model/effort and D5′ launch-time kit once; receipt replay preserves accepted model/message and avoids new routing. No eligibility duplication or persisted routing state.
    • Timeline approved A: retain HTML-render/MCP-app outputs and runtime-error/usage-limit notices, collapse technical work and reasoning, retain upstream queue controls. Actual V2 error work entries are retained; paragraphs use the real Markdown parser. Inline question/approval hosts preserve upstream handlers and scope to the displayed thread.
    • Dependency composition approved B: abort only this dispatcher's old cherry-pick; no self-composition or dependency repair. Consumer approved A: use corrected shared Prism.validateLaunchSelection through existing resolve.validate, providing BOTH ProviderAdapterRegistryV2 and ProviderRegistry. First unavailable candidate falls back before any thread creation. This now consumes merged feat(server): route native agents through shared Prism service #183, not speculative heads.
    • MODULAR rule applied: fork behavior/RPC/error mapping/fanout/scroll/test cases live in owned modules; upstream has small hooks. PR lists all 16 upstream-owned file +/- counts and explains the three MessagesTimeline hunks exceeding about 15 lines with context. No copied upstream implementation. Full Port the Prism stream clock and stale-turn detector #172/Port Promachos mode #175 append-only feature-map/allowlist entries retained mechanically during rebase, no product/policy choice.
    • Routine Port Promachos mode #175 CI fixes: authorization test primary owner/allowlist registration, then removal of three unused export modifiers in owned modules. No body/caller/API changes; current Fork Stack Model and Lint succeed.
    • Original upstream search found no upstream Promachos implementation in main or matching Issues/PRs. Full Port Promachos mode #175/Absorb upstream main (533 commits behind) #166/comments/PORT-BRIEF/g3-promachos, repo rules/fork docs/MODULAR and current triad inspected. This advances the Promachos Objective; no feature cut for patch size.

    Explicit partial-launch decision A

    Planner expressly approvedA before implementation: accepted thread.create + initial message NOT accepted =>existing shared Prism.resolve with stored model as explicit selection rebuilds the current Promachos kit. No validation, fallback, reroute, model change or new durable routing state. Accepted initial-message receipt =>receipt-only retry. Settings when the first message is submitted/accepted are acceptable. B, durable immutable first-preparation kit snapshot, was not selected. Original PORT-BRIEF consequential gate satisfied; no extra authority inferred.
    Implementation reads ${commandId}:initial-message receipt inside the accepted-create branch. Stored model is always returned. Current kit is loaded only if that message has not been accepted. Upstream launch and accepted-message dedupe remain unchanged.

    Executed and reused proof

    Supported Node24.13.1, ELECTRON_RUN_AS_NODE unset, physical TMPDIR, no Homebrew proof PATH. Each batch checked immediate uptime; current-base proof loads6.30/6.63/5.24/6.20/6.65/6.83/7.59, retry proof loads3.58red/2.58green/2.91initialtypes/3.43greentypes/7.62lint+finaltests, all below8 and serial. Logs append exit codes; /tmp/175-port paths are scratch, this Issue retains reproducible commands/results.

    • Current-base seven-file command: pnpm exec vp test run apps/server/src/promachos/PromachosHome.test.ts apps/server/src/auth/RpcAuthorization.test.ts apps/web/src/components/promachos/promachosBubbles.test.tsx apps/web/src/components/promachos/promachosConversations.test.ts apps/web/src/components/promachos/promachosStart.test.ts apps/web/src/components/promachos/promachosTimeline.test.ts packages/client-runtime/src/operations/commands.test.ts --maxWorkers 1:72 pass/7 files, exit0 on840 with unchanged relevant inputs in5315, reused. Covers home/filesystem, authorization, actual parser, native people filtering, initial-only/saved-fanout behavior, real V2 error projection and client mapping.
    • Fresh pnpm exec vp test run apps/server/src/orchestration-v2/ThreadLaunchService.test.ts -t 'Promachos launch' --maxWorkers 1:5 pass,47 unrelated skipped, exit0 after approved fix. Together77 focused cases. Real SQL/Prism/upstream receipts prove model/effort/kit, no eligible-model creation, initial-only refusal, adapter fallback BEFORE creation, full accepted replay and partial-create recovery.
    • Partial receipt regression RED before fix: accepted real create/absent initial-message receipt, original input retry persistsHello instead ofpersona+Hello;1 failed/51 skipped, exit1. Green extends the same boundary with changed kit/model preferences: current kit, stored model preserved; subsequent kit change/accepted replay remains one message/run. The initial exact-optional test fixture error was fixed by omitting initialMessage rather than settingundefined; server types and final5 tests rerun green. No oracle weakening.
    • pnpm --dir apps/server exec tsc --noEmit:fresh exit0 after retry fix. apps/web,packages/contracts,packages/client-runtime same command each exit0 oncurrent base840, reused with unchanged relevant inputs. Effect suggestions are non-failing.
    • Fresh pnpm exec vp lint apps/server/src/promachos/PromachosLaunch.ts apps/server/src/promachos/PromachosLaunch.tests.ts:exit0 afterfix. Changed contract index/orchestrationV2 lint exit0 onbase840; other30 unchanged TS/TSX lint receipts reused.34 changed TS/TSX files covered. Commit hook only wraps formatting after proof, no semantic/input change; reviewer inspected exact committed result.
    • node scripts/fork-features.mjs check:21 features pass; git diff --check:pass. Earlier typed-error projection regression2 red→5 green retained historically.
    • New tests use typed receipts, no sleeps/polling; provider execution is disabled by harness. No live-provider verification. Scoped local proof is feedback, not repo-wide coverage; CI owns full checks.
    • Integrated UI, screenshots/video and live-provider proof explicitly deferred by user to planner. Web/desktop share the web presentation; mobile stays standard view as authorized. Remote/environment identity and native people/provider contracts retained.

    Independent exact-head review

    READ-ONLY visible Prism-routed GPT-6-Luna/Codex reviewer thread sub.sub.sub.thread-9c8e27a973f0.dispatcher-c1e9a4151064.dispatcher-1f9eb305fe57.reviewer-3ddbf2b39baf, no authoring or proof reruns. Exact5315 PASS, no other material findings. Findings relayed unchanged on PR first: #187 (comment). Newest review/independent success bylukemaj on5315, target those PR findings. Prior840 requestchanges/failure recorded #187 (comment); historical pending-choice wording superseded by approvedA and successorfix, not waived.

    PASS: 5315c2a7a96d42183fbbacf9c04a40b0277df706 on base c87ee8c84eb901f5c8abbd24b54a6a7becdecea7

    The two-file successor fixes the partial-receipt gap: after an accepted create with no accepted initial-message receipt, it resolves the current kit using the stored model; once the message receipt is accepted, replay does not reload the kit or change the model. The real-receipt regression covers both paths and passes (5 tests); the server typecheck and focused lint also pass. The earlier red receipt reproduces the missing-kit failure.

    No other material findings in the reviewed scope. Previous unchanged proof is reused; CI for this head is still rerunning, and UI/live-provider verification remains deferred.

    Current recovery-history base maintenance and delivery

    Rootconditionalapplied:927 TestServer2 stillRUNNING atactualstatecheck when192mergeinstructionarrived, so samePRrebased onto verifiedlive4c, newhead734. Allseven175commits preserved, no conflicts. Only2PRblobs incorporatebasechanges (docsmap,orchestrationV2); other36identical. No192repair/sourceincludedin175diff,16upstreamcountsunchanged.
    Inspectedfullmergedhooks: normalPromachos initial-message has no forkPrismRetryOfRunId/usageLimitContinuationOfRunId, so continuationRunFields{} / continuationAdmissionnull. ProjectionStorekeepContinuationSource preservesonlyexistingfield. SharedPrismService/validator/ThreadLaunch unchanged; recoveryreaderAPI unchanged. CommonOrchestrator/ProjectionStore/run schema inputs changed, so fresh5launchcases+server/contracts types PASS after174actualrelease/freshload<8; noactive175heavy. Logs4c-launch.txt,4c-server-types.txt,4c-contracts-types.txt exit0. Otherunchangedmoduleproof/scopedlint reused; currentCITypecheck will freshlycoverallpackages rather thanclaimoldweb/clienttypes currentunderchangedschema.
    Current734 independent READ-ONLY reviewer PASS; unchanged findings #187 (comment) posted before newest review/independent success by lukemaj, linked to those PR findings. Automatic CI running. Costrepublishfor734; body/handoffcurrentbase/headupdated. Prior5315/927PASS andCIproof historical, notcurrent734status. No current readiness claim pending full CI. No newproductchoice beyondalreadyapprovedpartialkitA/timelineA; no sourceauthoringneededforbasechange.
    Next finishaffectedfeedback, reportactualslotrelease, exactheadfindings/status, currentCI/cost/body/handoff finalstate. PlannerUI/liveproviderpass remainsdeferred; no merge/version/localbuild/install/browser/mainpush authority.
    Websiteimpact:none. Model/harness GPT-6.1-Sol/Codex inT3Code; independentvisiblePrism-routedGPT-6-Luna/Codex reviewer.

    Requirements and who asked: User/root authorizedsamePRlatest4cbase, affectedrevalidation, approvedkitAandalloriginal175behavior, exactheadreview/CI/modularity/cost/handoff.
    Deleted: No192repair, newdurablestate orrouting/eligibilityduplication; no localrepo-wide runs.
    Bottleneck: Current734CI completion; plannerUI/liveproviderpass deferred.
    Checked myself: Verifiedlive4c/refandconditionalstill-running927CI, inspectedmergedcontinuation/ProjectionStore/contracthooks, exact36unchangedblobs/sevenownpatches andno175diffexpansion; fresh affected proof completed serial after actual174release; load3.42/3.55/3.56, actualreleaseposted.

    Current734 reviewer verdict relayed unchanged

    PASS for 73435bedda993ddc954347ce79072caad93ba1c9 on base 4c2b38436fda0fef5bb2b101d52f90d7ed831df0. The worktree is clean, local and remote heads match, and all seven rebased patches compare equal; the fresh launch and server/contracts typechecks pass.

    The new continuation marker is inert for Promachos’s ordinary initial dispatch: it supplies neither source ID, so the run fields are empty and recovery admission returns null. Projection storage preserves the marker only when a run already has one; Prism and ThreadLaunch APIs are unchanged across the base update. No new findings; CI is still running, and the approved UI/live-provider deferral remains.

  4. lukemaj commented on Oct 8, 2026

    @lukemaj
    ContributorAuthor

    Delivered into fork/v2 by #187 (reviewed head 73435bedda). Pending outside this Issue: integrated UI pass and the landing on main in #177.

  5. lukemaj commented on Oct 8, 2026

    @lukemaj
    ContributorAuthor

    What: #175 is merged through #187 and its task resources are retired.
    Why: The delivered branch is fully published and the task is closed.
    So what: No #175 work remains active; integrated UI verification continues under the planner’s existing acceptance scope.

    Finalization verified:

    • PR feat(promachos): port persona home and bubble chats to v2 #187 merged as 6eb69fe607c3940f20faa6ee9a8c4c9457e91af5.
    • Before cleanup, worktree status was clean, HEAD and remote task branch were both 73435bedda993ddc954347ce79072caad93ba1c9, and divergence was 0 0. Nothing was unpushed.
    • Removed /Users/lukaszmaj/dev/toolboxmd/chromeria-worktrees/175-v2 and disposable scratch /tmp/175-port; verified both absent.
    • Deleted local and remote feat/175-promachos-v2; verified absence from branch/worktree listings and the exact remote ref query.
    • No task snapshot copies were found. No live userdata, shared pnpm store, or unrelated worktrees were removed.
    • Child subtree was intentionally stopped after merge. No heavy task process remains active.

    Implementation, proof and review remain preserved in #187 and the durable handoff.

  6. lukemaj commented on Oct 8, 2026

    @lukemaj
    ContributorAuthor

    What: #175 is delivered and merged through the single PR #187 into fork/v2.
    Why: The final Promachos port preserves the approved launch, kit recovery and timeline behavior on the merged dependency base.
    So what: No #175 source or CI blocker remains; integrated UI/live-provider acceptance stays with the planner, and task resources are already retired.

    Final state supersedes the running-CI/open-worktree wording in the earlier durable handoff:

    • Reviewed head: 73435bedda993ddc954347ce79072caad93ba1c9; reviewed base: 4c2b38436fda0fef5bb2b101d52f90d7ed831df0.
    • PR feat(promachos): port persona home and bubble chats to v2 #187 merged as 6eb69fe607c3940f20faa6ee9a8c4c9457e91af5; Issue closed. Seven Port Promachos mode #175-only commits, 38 files; modularity counts and larger hook justifications are in the PR body.
    • Current-head CI passes, including Check, all six server shards, Web, Typecheck, Lint, Build and Fork Stack Model: https://github.com/toolboxmd/chromeria/actions/runs/37852574222. Configured skipped jobs are not waived failures.
    • Independent exact-head PASS and success status point to PR findings: feat(promachos): port persona home and bubble chats to v2 #187 (comment).
    • 77 focused behavior cases are covered by executed/reused proof; five launch cases and server/contracts typechecks were refreshed on the final base. Detailed commands, red/green receipt regression and reuse limits remain in the earlier handoff and PR.
    • Approved choices remain timeline A, shared Prism validator consumer A, abort self-composition B, and partial-launch recovery A: current kit only before initial-message acceptance, stored explicit model, no validation/fallback/reroute/new durable state; accepted-message replay remains receipt-only.
    • Cost report publication succeeded: feat(promachos): port persona home and bubble chats to v2 #187 (comment). Attribution is incomplete, so cost remains unknown, not zero.
    • Cleanup was independently recorded at Port Promachos mode #175 (comment); the task worktree and scratch paths are now absent. No additional cleanup or heavy proof was run during this final reconciliation.

    Requirements and who asked: User requires one #175-only PR, approved behavior, exact-head review, proof, modularity accounting and durable handoff.
    Deleted: No dependency repair, duplicate eligibility logic, persistent kit snapshot or additional PR.
    Bottleneck: Only the explicitly deferred planner UI/live-provider acceptance remains outside this delivered Issue.
    Checked myself: Rechecked live merged PR/closed Issue, exact reviewed head, all current-head check results, PR findings/status, published cost report and recorded resource retirement.

    Model/harness: GPT-6.1-Sol through Codex in T3 Code; independent visible Prism-routed reviewer.

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions