Commit Graph

134 Commits

Author SHA1 Message Date
nntrivi2001 57dd4ffcb7 feat(lanes): add Lanes section (skills install, housekeeping) to Settings (F4) 2026-08-06 10:22:58 +07:00
nntrivi2001 6d8c5399ea feat(lanes): add agents-install/mcp-sync/integration/sync-check to LaneCard (F4) 2026-08-06 09:59:33 +07:00
nntrivi2001 bc7c5e5431 feat(lanes): add client API methods for F4 lane actions (F4) 2026-08-06 09:47:10 +07:00
nntrivi2001 e32c684bf0 feat(lanes): add POST /api/lanes/gc route (F4) 2026-08-06 09:31:42 +07:00
nntrivi2001 e7ef7bcef9 feat(lanes): extract skills-install lib, add POST /api/skills/install (F4) 2026-08-06 09:26:43 +07:00
nntrivi2001 99465d2095 docs(lanes): plan F4 — lane actions UI (LaneCard + Settings)
6 tasks: skills-install lib extraction + route, gc route, client API
methods, LaneCard additions (agents install/mcp sync/integration
badges/sync-base check — read-only, no merge button), Settings
additions (skills install + housekeeping), and test coverage
(LaneCard.test.tsx cases + screens snapshot regen).
2026-08-06 09:17:37 +07:00
nntrivi2001 5f114d7c6f docs(lanes): design F4 — surface E1-F3c lane actions in the UI
LaneCard gets agents-install/mcp-sync buttons, integration status
badges, and a sync-base --check button (read-only preflight only — no
merge button, that stays a session/skill action). Settings gets
skills-install and housekeeping (gc) buttons, machine-wide. Two new
routes needed (POST /api/skills/install, POST /api/lanes/gc) since
those two primitives were CLI-only until now.
2026-08-06 09:09:30 +07:00
nntrivi2001 d0f42254ee docs(lanes): document ccam lanes gc (E, F3c) 2026-08-05 17:46:42 +07:00
nntrivi2001 5e620bd8ab feat(lanes): add ccam lanes gc — orphan MCP reap + log capping (E, F3c)
Ports the two pieces of Shipyard's lane-gc.sh that match CCAM's actual
architecture: kill Playwright MCP processes reparented to pid 1 (owning
session died), cap hook logs over 10MB back to their last 2MB in place.
Drops auto-removing stale worktrees by age (conflicts with the
never-automatic-destroy rule), state archiving, and scratch-debris
sweep (different storage architecture / files CCAM doesn't generate) —
see docs/superpowers/specs/2026-08-05-lane-gc-design.md.
2026-08-05 17:44:46 +07:00
nntrivi2001 e2d516f199 docs(lanes): design F3c — ccam lanes gc (E)
Scopes lane-gc.sh down to the two pieces that match CCAM's actual
architecture (orphan Playwright MCP reap, oversized-log capping).
Drops auto-removing stale worktrees by age — that's exactly the kind
of automatic destructive action this repo's own CLAUDE.md forbids
(destroy always goes through the three-check guard, never automatic).
State archiving and scratch-debris sweep don't apply either (different
storage architecture; CCAM doesn't generate those files).
2026-08-05 17:38:04 +07:00
nntrivi2001 f157977783 docs(lanes): document ccam skills install (E, F3b) 2026-08-05 17:19:11 +07:00
nntrivi2001 6d24f9d7ad feat(lanes): add ccam skills install (E, F3b)
Copies .claude/skills/ship-feature-lane/ into ~/.claude/skills/, so
/ship-feature-lane is discoverable from a session running inside any
lane's own working directory — not just inside this repo, which is
where it lived until now (Claude Code only auto-discovers .claude/
directories from the repo that owns them). Pure filesystem action,
same self-location REPO_ROOT already gives lanes profile init.
2026-08-05 17:16:38 +07:00
nntrivi2001 c781fcdb45 docs(lanes): design F3b — ccam skills install (E)
Found auditing E1-F3a for Shipyard parity: .claude/skills/ship-feature-lane/
only exists inside ccam-lanes' own repo, never installed globally, so
/ship-feature-lane is unreachable from its actual intended invocation
context (a session inside some OTHER lane's repo). Shipyard's own
install-claude-assets.sh solves this for its bundled skills the same way.
2026-08-05 17:12:37 +07:00
nntrivi2001 0006fabb4c docs(lanes): wire ship-feature-lane to the real integration toggle check (F3a) 2026-08-05 16:37:28 +07:00
nntrivi2001 32dc4e432a feat(lanes): add ccam lanes integration CLI + route (F3a) 2026-08-05 16:30:23 +07:00
nntrivi2001 8fc7a32490 feat(lanes): add isIntegrationEnabled toggle check (F3a) 2026-08-05 16:12:58 +07:00
nntrivi2001 36d66cda07 docs(lanes): plan F3a — ccam lanes integration toggle reader (F)
3 tasks: isIntegrationEnabled in lane-profile.js (reuses parseEnvFile),
the route + CLI, and wiring SKILL.md's hardcoded-off Setup text to the
real check (still no-op behaviorally — no ticketer/dev-qc agent exists
to act on an enabled toggle yet, but the check itself is now honest).
2026-08-05 16:07:33 +07:00
nntrivi2001 4b3a1e3d25 docs(lanes): design F3a — ccam lanes integration toggle reader (F)
Scopes down F3 to just the generic <name>_ENABLED toggle-check primitive
(ccam lanes integration <name>) — ticketer/dev-qc agents stay deferred,
same reasoning E3 already used for qc-local's credential gap: no tracker/
dev-QC MCP configured anywhere, no per-lane credential source to consume.
2026-08-05 16:04:39 +07:00
nntrivi2001 ef686454b9 docs(lanes): document ccam lanes mcp sync (F1) 2026-08-05 15:39:04 +07:00
nntrivi2001 60fb7cbaeb feat(lanes): add ccam lanes mcp sync CLI (F1) 2026-08-05 15:34:15 +07:00
nntrivi2001 8471b3a757 feat(lanes): add POST /:id/mcp/sync route (F1) 2026-08-05 15:28:31 +07:00
nntrivi2001 2731b7c8ce feat(lanes): add lane-mcp sync core (F1) 2026-08-05 15:20:25 +07:00
nntrivi2001 d25a20089a docs(lanes): plan F1 — ccam lanes mcp sync (F)
4 tasks: the lane-mcp.js sync core (relocate + pin + seed profiles, no
permission/settings writes per the design spec's scope decision), the
route, the CLI, and docs.
2026-08-05 15:14:31 +07:00
nntrivi2001 4da7ef0453 docs(lanes): design F1 — ccam lanes mcp sync (F)
Scopes the first of F's four pieces to .mcp.json relocation + Chromium
profile seeding only. Drops Shipyard's permission/auto-approval writes
(no existing CCAM pattern for a backend command granting permissions,
and the rules named agents not in scope: pr-reviewer has no driving
skill to port, ticketer is a later task) and the node-version wrapper
(environment-specific workaround, no evidence this repo needs it).
2026-08-05 15:10:42 +07:00
nntrivi2001 f6fa1ea42d fix(lanes): SKILL.md — unblock Stage 6/7, add PR-base guard at Stage 12 (E1)
Two gaps found via audit against Shipyard's source:

1. Stage 6/7 still said "this agent does not exist yet" and told a
   driving session to treat any lane reaching those stages as blocked —
   stale since E3 shipped qc-local + senior-gate-reviewer. Replaced with
   an unconditional launch plus a one-time "ccam lanes agents install"
   preflight note in Setup.

2. Stage 12's conflict-resolution path called `ccam lanes sync-base`
   directly on any CONFLICTING PR, with no check that the PR's base is
   actually `development` first. Shipyard's original has this guard
   (its own "legacy main-based PR" case) — ported here in general form:
   never auto-merge into a PR whose base drifted from `development`.
2026-08-05 14:40:57 +07:00
nntrivi2001 d2327408fb fix(lanes): mergeSync commits a fully rerere-auto-resolved merge instead of rethrowing (E2)
Root cause: the catch block only fell through to the auto-commit path when
`unmergedFiles().length && MERGE_HEAD exists` — but a merge rerere resolved
completely has ZERO unmerged files (git already staged the resolution), so
that guard was always false and the raw git error was rethrown instead.
Found via an audit against the Shipyard source this was ported from.

Fixed by checking MERGE_HEAD first (unconditionally — its absence means the
merge never started, a real failure), then branching on whether any files
are still unmerged. Added a real rerere fixture test (teach a resolution,
recreate the identical conflict, confirm mergeSync auto-commits) — the
existing test suite had no coverage for this path.
2026-08-05 14:39:02 +07:00
nntrivi2001 02b90292c0 docs(lanes): document ccam lanes agents install (E3) 2026-08-05 12:52:42 +07:00
nntrivi2001 727823d75e feat(lanes): add ccam lanes agents install CLI (E3) 2026-08-05 12:46:56 +07:00
nntrivi2001 3fb70a3fc1 feat(lanes): add POST /:id/agents/install route (E3) 2026-08-05 12:42:27 +07:00
nntrivi2001 4134b3d307 feat(lanes): add lane-agents install core (E3) 2026-08-05 12:37:40 +07:00
nntrivi2001 692ba65b0f feat(lanes): add qc-local + senior-gate-reviewer agent templates (E3) 2026-08-05 12:29:59 +07:00
nntrivi2001 39c6e1c920 docs(lanes): plan E3 — agents port (qc-local + senior-gate-reviewer) (E)
5 tasks: the two ported agent templates (every Shipyard placeholder/script
reference resolved at port time), the lane-agents.js install core (git-dir
vs git-common-dir correctness verified against a real worktree fixture,
same lesson E2 already learned for info/attributes), the route, the CLI,
and docs.
2026-08-05 11:52:28 +07:00
nntrivi2001 7606653537 docs(lanes): design E3 — agents port (qc-local + senior-gate-reviewer) (E)
Scopes the third of E's remaining pieces to the two agents the current
skill text actually invokes (Stage 6/7). ticketer/dev-qc (F-gated) and
pr-reviewer (unreferenced) stay out of scope; per-lane credential
embedding is deferred pending a seed-account system this repo doesn't
have yet.
2026-08-05 11:46:28 +07:00
nntrivi2001 ed884c6961 docs(lanes): document ccam lanes sync-base (E2) 2026-08-05 10:59:02 +07:00
nntrivi2001 5a127df709 feat(lanes): add ccam lanes sync-base CLI (E2) 2026-08-05 10:52:36 +07:00
nntrivi2001 40b1d0e0fb feat(lanes): add POST /:id/sync-base route (E2) 2026-08-05 10:47:02 +07:00
nntrivi2001 d12e9410e3 feat(lanes): add lane-sync core — check/merge/continue (E2) 2026-08-05 10:36:33 +07:00
nntrivi2001 a4246528fe feat(lanes): add MIGRATIONS_DIR + GENERATED_MERGE_PATHS profile declarations (E2) 2026-08-05 10:30:41 +07:00
nntrivi2001 77d79a59d7 docs(lanes): plan E2 — ccam lanes sync-base (E)
5 tasks: MIGRATIONS_DIR/GENERATED_MERGE_PATHS profile declarations, the
lane-sync.js git core (check/merge/continue, ported against a real
bare-origin fixture mirroring lane-sync-dev.sh's own test suite, plus a
dedicated git-worktree fixture to catch the git-dir vs git-common-dir
distinction MERGE_HEAD/info-attributes depend on), the sync-base route,
the CLI subcommand, and the SKILL.md/docs edits that turn three "if it
exists yet" conditionals into real instructions.
2026-08-05 09:49:56 +07:00
nntrivi2001 ea0cd3b455 docs(lanes): design E2 — ccam lanes sync-base (E)
Scopes the second of E's remaining pieces: migration-collision preflight,
keep-ours merge driver for generated files, and the single sanctioned
origin/development-into-feature-branch merge. Agents and F's integrations
stay out of scope, per the roadmap's own subsystem split.
2026-08-05 09:38:55 +07:00
nntrivi2001 80d49e2c24 docs(lanes): document ship-feature-lane skill + --qc flag (E1) 2026-08-04 18:13:06 +07:00
nntrivi2001 9377849ae0 feat(lanes): port ship-feature-lane skill (Stages 0-14, E1) 2026-08-04 18:02:45 +07:00
nntrivi2001 e600df236e feat(lanes): add ship-feature pipeline template (E1) 2026-08-04 17:56:38 +07:00
nntrivi2001 31f984c750 feat(lanes): add --qc boot flag + QC_BOOT_ENV for deterministic QC stacks (E1) 2026-08-04 17:51:03 +07:00
nntrivi2001 c37933adfe docs(lanes): plan E1 — ship-feature pipeline template + skill port
4 tasks: --qc boot flag + QC_BOOT_ENV, pipeline template JSON, the ported
skill text (Stages 0-14, integrations hardcoded off pending F), and a dry
run + docs. Corrected the pipeline-template task against the real node
schema (id/label/icon/gate/aliases, not the detect.stage sketch) and the
real getPipeline never-throws behavior during self-review.
2026-08-04 17:44:50 +07:00
nntrivi2001 b08504858c docs(lanes): design E1 — ship-feature pipeline template + skill port
Scopes the first of E's four independent pieces: --qc boot flag +
QC_BOOT_ENV, the pipeline template, and the ported skill text. Agents,
sync-base, and F's integrations are named but deliberately out of scope,
per the roadmap's own subsystem split.
2026-08-04 17:37:33 +07:00
nntrivi2001 5d5ea32db6 docs(lanes): document proof gallery (C) 2026-08-04 16:41:56 +07:00
nntrivi2001 6cb5fb356c fix(lanes): make proof gallery test assertion actually fail on missing panel 2026-08-04 16:34:44 +07:00
nntrivi2001 fccfa5ad17 feat(lanes): show proof gallery panel in the Workspace page (C) 2026-08-04 16:25:09 +07:00
nntrivi2001 a545230746 feat(lanes): add ccam lanes proof-link CLI (C) 2026-08-04 16:13:02 +07:00