Skip to content

[WIP] Copilot Request - #3

Closed
vjvarada with Copilot wants to merge 1 commit into
mainfrom
copilot/fix-6223295-1249383041-162e53c9-dbfe-473b-9019-f02d766f356c
Closed

[WIP] Copilot Request#3
vjvarada with Copilot wants to merge 1 commit into
mainfrom
copilot/fix-6223295-1249383041-162e53c9-dbfe-473b-9019-f02d766f356c

Conversation

Copilot AI commented Jun 19, 2026

Copy link
Copy Markdown

Thanks for asking me to work on this. I will get started on it and keep this PR's description up to date as I form a plan and make progress.

Fix the failing GitHub Actions job "Deploy to Hostinger"
Analyze the Actions logs, identify the root cause of the failure, and implement a fix.
Check run ID: 82400587391
Job URL: https://github.com/FracktalWorks/CommandCenter/actions/runs/27841211068/job/82400587391

Copilot AI requested a review from vjvarada June 19, 2026 18:04
vjvarada added a commit that referenced this pull request Jul 2, 2026
Ships server-side context assembly (module map review #3). C2 grade B- -> A-.

The gap: per-turn INPUT context was assembled client-side and trusted verbatim
by the gateway. The executor then re-sliced the client-sent messages[] in SIX
places with different COUNT caps (12/16/20/50) + char-truncation, all
token-blind; the code itself documented the streaming/batch duplication. And a
non-chat caller (API/webhook) with a thread_id but no messages[] got NO history
because nothing rebuilt it server-side. The token-accounting utilities in
acb_llm/context.py existed but were email-only.

Fix: one acb_llm.assemble_run_context(system_context, history, current_message,
model, history_loader, max_turns):
  - DB-rebuild-when-empty via an injected history_loader (so acb_llm keeps no
    gateway dependency) -> non-chat callers get the SAME context a browser would.
  - Server-side current-turn dedup (the withoutCurrentTurn equivalent).
  - Two-stage token-budget fit: drop oldest WHOLE history turns until it fits
    the model window, THEN char-trim the longest survivor. The existing
    single-message trimmer alone couldn't converge on many-medium-turn chat
    transcripts (only the email single-huge-body shape).

Wired into BOTH executor structured-message sites (_compose_maf_run_input
streaming + the Tier-2 batch path) using _active_run_model for the budget, so
streaming and batch feed the model identically. agent.py injects a
_get_messages-backed loader into the payload for thread_id-carrying callers with
no client history.

Backward-compatible: browser clients still send messages[], so the loader is a
no-op then; the client keeps assembling for the UI context-ring (additive, no
longer trusted for correctness). The email path keeps its own string-flatten
assembler (app-scoped, out of core C2).

Tests: tests/unit/test_context_assembly.py (12),
evals/trajectories/test_context_assembly_trajectory.py (4, CI-blocking). Full
suite 646 green, zero regressions.

Next core module: B6 sandboxing (grade C, top safety lever).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@vjvarada

Copy link
Copy Markdown
Contributor

Closing as stale — WIP bot PR from 2026-06-19 with no stated intent and no activity since.

@vjvarada vjvarada closed this Jul 19, 2026
@vjvarada
vjvarada deleted the copilot/fix-6223295-1249383041-162e53c9-dbfe-473b-9019-f02d766f356c branch July 19, 2026 16:34
vjvarada pushed a commit that referenced this pull request Jul 22, 2026
… context colours in the filter

Two follow-ups from the status-pill work:

#2 — On the desktop columnar list, grouping by a lens (Priority/Energy/
Context/Suggestion) meant the section headers carried the lens, not the
stage, so status was invisible there. The status pill now rides as a
leading chip on the Name cell whenever the grouping isn't status — right
next to the title, where the eye associates it with the task, and without
eating a fixed column that would crush the name. Extracted the pill into a
shared StatusPill component (used by the card and the row). Also gave the
Name grid track a 140px floor so titles never collapse to nothing when
every column is shown on a narrow window.

#3 — The Filter popover and its active chips now speak the same visual
language as the cards: priority facets use the lucide priority icons and
@context facets show their per-context colour dot (menu options and the
removable chips both), replacing the emoji.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wr1QWV3yuk5fesuBgnMWy1
vjvarada added a commit that referenced this pull request Jul 22, 2026
…ority/suggestion icons in Next Actions (#142)

* feat(tasks): status pill on cards only where the surface doesn't group by stage; per-context colours; lucide priority/suggestion icons

The Next-Actions card's status control is now a single, unified status
indicator — no more "Done button". The last stage is just Done like any
other stage; the pill is coloured by the same stageAccent the board
columns and list headers use, so status reads the same everywhere, and
clicking it is the only way to change status.

Placement now follows the surface:
  • Kanban board — the column IS the stage, so the per-card pill was
    redundant; it's off there.
  • Status-grouped list — the section header IS the stage; pill off.
  • Everywhere the stage isn't shown structurally (Engage, Priority, a
    lens-grouped list, the flat Waiting/Someday/… lists) — the pill
    stays on the card so the status lives on the card itself.

Also:
  • Each @context carries its own stable colour (contextColors.ts) on
    the card chip and the list Context column, instead of every context
    sharing the one primary tint.
  • Priority levels and action-mode suggestions now use lucide icons
    (priorityIcons.ts) on the card badges, the list Priority/Suggestion
    columns, and the grouped section headers — replacing the emoji.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wr1QWV3yuk5fesuBgnMWy1

* feat(tasks): show status on lens-grouped desktop rows; lucide icons + context colours in the filter

Two follow-ups from the status-pill work:

#2 — On the desktop columnar list, grouping by a lens (Priority/Energy/
Context/Suggestion) meant the section headers carried the lens, not the
stage, so status was invisible there. The status pill now rides as a
leading chip on the Name cell whenever the grouping isn't status — right
next to the title, where the eye associates it with the task, and without
eating a fixed column that would crush the name. Extracted the pill into a
shared StatusPill component (used by the card and the row). Also gave the
Name grid track a 140px floor so titles never collapse to nothing when
every column is shown on a narrow window.

#3 — The Filter popover and its active chips now speak the same visual
language as the cards: priority facets use the lucide priority icons and
@context facets show their per-context colour dot (menu options and the
removable chips both), replacing the emoji.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Wr1QWV3yuk5fesuBgnMWy1

---------

Co-authored-by: Claude <noreply@anthropic.com>
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.

2 participants