← Cycles
Design · c143

Loose Ends

parkedparked 2026-11-12 — the merge sweep of the week's threads: design #18 and #20, qnative #1, record commits and captures landed on main; cleanup where nothing was running; the longer-running loose ends in PICKUP.md. Later the same day: layer 0.9.38 released, the site deployed, the Monitor's shapes reconciled with the bridge, the bridge's config file made qcontrol's `config.yaml`, and everything outstanding pushed, qnative c8 and qmap includedcreated 2026-11-12· last activity 2026-11-13· mode: formula (the same sweep every time: survey, sort, merge, pull, clean up), with archaeology for the uncommitted work found in the trees.

Every thread's new work merged into main and pulled locally, across design, qnative, the layer and the sister repos, with conflicts untangled by hand, and one place that holds what is still open.

Why

The week ran many sessions in parallel: c130's program (c131–c139 and qnative c2–c7), c133's phases, cloud sessions for c139 and the c138 footprint page. In theory a cycle's work stays in its own folder and pages. In practice cycles edit the same shared files (cycles/CYCLES.md, page-registry.ts, the capture manifests, the story modules, qnative's shell.rs), so PRs conflicted, record commits sat on local branches, and captures sat uncommitted in the tree. Mark's rule for the sweep: get all the new work into main, untangle conflicts by hand, accept that a rare one may not untangle, and list cleanup and redo afterwards.

Objective

All of the week's threads merged into main and every local main even with origin; cleanup done where nothing is running; what is left written down where the next session finds it.

Scope

  • In: design, qnative, q-nuxt-layer, intents, market-analyst, qcontrol (feat/new-pages only), bob-wire, qflow, www.qpoint.io, qmap; open PRs, unpushed commits, unmerged branches, worktrees, uncommitted work.
  • Out: other people's PRs in qcontrol; app.qpoint.io (stale); merging into qcontrol main.

Key Changes

  • sweep (2026-11-12):
    • design main: the c138 "call 14 closed" record rebased over #19 and pushed (a91731f0a7). Conflict in cycles/c138.developer-mode/CYCLE.md: the record's newer Review stop 3 line kept, and #19's footprint-page bullets kept below it. A local reorder of public/cycles/design/manifest.json with no content change was dropped to let the pull through.
    • design#18, c133 record sketch: rebased and merged (4453a8c085). Conflicts in app/data/stories/c133.ts and cycles/c133.remediation-training/CYCLE.md. Main's later story kept (Phases 3–5, record counts, pickup), with record-sketch added to the outcomes and recordSketch to the captures. The Documents line gained the Tyler walk link. Key Changes holds the Tyler walk bullet and main's Phase 3–4 bullets.
    • design#20, c139 Updates: a cloud session's branch with no PR. A PR was opened, rebased and merged (5e12709e36). Conflicts:
      • page-registry.ts: both collapse entries kept.
      • cycles/CYCLES.md: c139's entry placed above main's current c138 entry.
      • The design manifest: main's 786 entries plus c139's 17.
    • design main, c4 and c6 captures: 25 qnative captures (c4 inbox and messages settings, c6 info-panel toggles), their manifest entries and c6's shot program were left uncommitted by their threads; committed as 416de93c6a.
    • qnative main: c3's review-stop-3 record (7800b25, on local c3/phases only) cherry-picked as e609f42.
    • qnative#1, c7 Web Rail: rebased and merged as e3ffc94, squashed like #2. The ruleset wants a review, so it was merged through the owner bypass, as #2 was. Conflict in crates/app/src/shell.rs: c7's RailSection rail kept. c6's Dev-group cyan moved into it as a tint on the section, with extensions::shown passing each group's id. Workspace build and tests clean, lean check passed, CI green on Linux, macOS and Windows.
    • qnative local main: a live session in qnative had fast-forwarded local main to the unsquashed c7 branch. Its tree is identical to e3ffc94, so the main ref was moved there by compare-and-swap. No file or index entry changed under that session.
    • Pushed:
      • q-nuxt-layer main e7e1454: PolicyTag "Off". Not released.
      • The 0.9.36 lockfile bump on qdash feat/new-pages, bob-wire c16-agent-control-plane, qflow ai-ecosystem-visualizations and www disable-dark-mode.
    • Pulled:
      • intents (#6).
      • rulekit, qtap and firebase, by fast-forward.
      • The local main branches of qcontrol, qpoint, qflow and www.
  • cleanup (2026-11-12):
    • Remote branches deleted:
      • design: claude/funny-thompson-jy9h9x (#18), claude/brave-knuth-7qzxem (#20), claude/sleepy-maxwell-miy81p (#19), c81/phase1-pages (#13).
      • qnative: claude/bold-tesla-gpb6u1 (#1), claude/c6-lean-marker (#2).
    • Local branches deleted:
      • design: claude/jovial-dubinsky-36e37e (its c129 record is on main in a later form), c81/phase1-pages.
      • qcontrol: backup/feat-new-pages-pre-rebase, backup/feat-new-pages-pre-rebase-1005, and seven branches whose remotes were gone, each with a merged PR (#391, #465, #521, #616, #642, #648, #667).
      • qmap: the three April claude/* branches, all in main.
    • Worktrees removed: qcontrol-c112 (clean; its branch stays, local only) and three clean qmap worktrees.
    • Restore points for the deleted branches are in PICKUP.md.
    • Kept because something is running or something would be lost: listed in PICKUP.md.
  • quick wins, walked with Mark (2026-11-12, later):
    • The c133 record sketch captured (1d353daad0).
    • c112/demo-container and c113/baked-demo pushed to origin.
    • qcontrol#692 closed: feat/new-pages already carries the index.
    • app.qpoint.io #247, #238 and #166 closed as superseded.
    • The two old native app copies quit and the c6 session archived. Then the three qnative worktrees (~116 GB) and their branches were removed.
    • market-analyst's 19 internal calls kept local, hidden through .git/info/exclude.
    • design's nested c3 move reverted.
    • www's checkout moved to main, and disable-dark-mode deleted locally and on origin.
    • update-consumers.sh no longer bumps app.qpoint.io or www (layer db128d4, f581e09).
  • the Monitor's shapes reconciled (2026-11-12, later, on Mark's word): asked after a report on what of Kamal's monitor TUI reached the native app. c138's Guide page 4 had asked for richer copies of SensorState, Resources and LogLine than the bridge types, and for health and loaded targets beside facts D17's shapes already carry. Now one ask per route:
    • design app/data/worlds/bridge/types.ts (and its README): the Monitor's fields, all optional, on /api/sensor and /api/config;
    • qnative: crates/types/src/bridge.rs mirrors them, with two tests; guide/types/monitor.ts keeps only workers and processes, and monitor.rs is regenerated; Guide pages 3 and 4 rewritten; c3's record;
    • design records: c138's plan and CYCLE.md, c131's synthetic-data.md, c134's kamal-prep.md.
  • the bridge's config file made qcontrol's (2026-11-12, later, on Mark's word): the four bridge fixtures said ~/.config/qcontrol/config.toml with TOML keys (mode, plugins, egress) that qcontrol has never read. qcontrol main (8677b44ed) reads config.yaml from the same directory, and qconfig rejects any top-level key but include, sinks, ui, behaviors and targets.
    • minimal, meridian-day90 and pilot now carry a config.yaml in qconfig's schema: the stock document's audit behavior on an "All harnesses" target, and in pilot an OpenShell behavior for the egress allowlist plus the proposed it_contact, marked as proposed. effective.plugins names real plugins (io-events, llm-events, mcp, sentinel, openshell) in place of telemetry; fresh's log line names the stock document.
    • Checked by loading the texts with qconfig built from qcontrol main in a scratch worktree (since removed): minimal's and meridian-day90's load as written, pilot's once it_contact is taken out (qconfig: "unknown field it_contact"), so that key is part of the ask.
    • The lab's Sensor page says "No config.yaml" and shows what the stock document holds when there is no file; types.ts, bridge.rs and the bridge README say what each field means against qcontrol. Captures of the Sensor page taken before today still show the TOML.
  • everything outstanding pushed (2026-11-12, evening, on Mark's word: "push this and anything else outstanding. Be sure to update histories and push supporting app pages"):
    • Histories first: c138's story (it still said nothing was built), design's CYCLES.md lines for c138 and c143, qnative's CYCLES.md (c3 said "no code yet"; c8 pushed), c8's record, devmode's header (four pages, not two); the c130 PNG committed (b0979ad28d, qnative 9628a2a).
    • Pushed: design main (b0979ad28d), qnative main (9628a2a, with c8's five commits and the scorecard), qmap main (29b3de2, its 15); www fast-forwarded. qmap#4 closed as superseded.
    • Deployed twice: 23fed8856e (design 169e0b867a) after the pushes, and later af19753d92 (design e74e06fbe3, nothing uncommitted) once the evening's training work was in.
    • Left alone: older side branches whose unpushed commits are already in their main (design c123/owasp-agentic-tour, the layer's c1-figma-library-integration, market-analyst's board-analysis branch, bob-wire cycles.2-5 and deploy-readiness); qcontrol feat/qdash-nuxt-redesign, which tracks qcontrol main (never pushed there); the uncommitted work of other sessions.
  • trainings, the same evening (on Mark's word, before a demo): the trainings page links each training to its prototype; the quiz questions reworded; the trainings taken in the native app as qnative c9 (built to the lab mock, the scenes captured from the lab); all recorded in c133 and qnative c9, pushed (design e74e06fbe3, qnative 8f1222e) and deployed.

Outcome

Open. All of the week's threads are on main, and every local main is even with origin (qmap's 15 commits pushed later the same day). What is still open is in PICKUP.md. The cycle closes when that list is empty or each row is ruled.

The shape

  • The problem: work that is done but not on main is invisible to the next session, the deploy and the team.
  • The core idea: one sweep, repo by repo: open PRs, unpushed commits, branches with no PR, uncommitted work. Each one is merged, pushed, kept on purpose, or listed for a decision.
  • The pattern: conflicts in shared index files resolve by keeping both sides. Main's newer entry wins where both rewrote the same line, and the branch's addition goes beside it. Generated manifests merge by entry (keyed by file plus variant), never by text.
  • What stays open: everything in PICKUP.md.

Artifacts

Qpoint Brand Style Guide