Skip to content

feat(kanban): cards are born homed — unhomed sentinel, origin line, session-first list, --takeover, home-lint - #998

Closed
Kyzcreig wants to merge 2 commits into
mainfrom
feat/t_4de62657-kanban-born-homed
Closed

Kyzcreig wants to merge 2 commits into
mainfrom
feat/t_4de62657-kanban-born-homed

Conversation

@Kyzcreig

@Kyzcreig Kyzcreig commented Sep 24, 2026 •

Copy link
Copy Markdown
Collaborator

Kanban card t_4de62657. Builds on #951/#982 (guard + lineage).

  • create_task stamps session_id (explicit > homed parent > unhomed, never NULL) + origin line
  • unhomed hidden from Task.session_id (notify/wake unchanged); guard refuses chat sessions on it
  • --takeover REASON (alias of --foreign-ok) → takeover event + audit comment
  • kanban list THIS SESSION / OTHER SESSIONS; --this-session, --all
  • kanban home-lint (silent when green; --backfill [--dry-run])
  • transfer scrub → unhomed

Local: home_session+lineage 88 passed, tools/test_kanban_tools 63, test_kanban_transfer 20. Full suite → CI.


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

Kyzcreig and others added 2 commits September 24, 2026 12:33
…ession-first list, --takeover, home-lint

- create_task (single choke point: CLI, tool, swarm, dashboard) stamps
  session_id = explicit > first homed parent > 'unhomed' (never NULL) and
  prepends an 'origin: <platform> <chat> (<id>) · session <id> · <date>'
  line unless present. created_by falls back to HERMES_SESSION_PROFILE.
- 'unhomed' loads as Task.session_id=None + unhomed=True: notification/wake
  consumers unchanged. Guard refuses chat sessions on unhomed cards.
- --takeover REASON (alias of --foreign-ok) records a 'takeover' event +
  'takeover:' audit comment.
- kanban list: THIS SESSION / OTHER SESSIONS grouping when a caller session
  exists; --this-session (= --home), --all flat.
- kanban home-lint: silent/exit 0 when green, ids + exit 1 otherwise;
  --backfill [--dry-run] stamps homeless open cards 'unhomed' + comment.
- transfer scrub stamps 'unhomed' instead of NULL.

Verified locally: test_kanban_home_session + home_lineage 88 passed,
tools/test_kanban_tools 63 passed, test_kanban_transfer 20 passed.
…rst kanban_list tool

- backfill_notify_sub_user_ids normalizes the 'unhomed' sentinel to None at
  the raw-SQL reader, so notify-repair never adopts the lone human in a
  user-less card's chat (r1 BEHAVIOUR finding; born-sessionless and
  backfilled-legacy arms were adopting user_id on 4905838).
- kanban_list tool: with a caller session, this session's cards in full under
  tasks, others collapsed to {id,status,title[,unhomed]} under other_sessions;
  all=true (new schema bool) or no session = flat.
- docs: raw-reader rule, tool grouping, re-scope surfaces (specify guarded;
  dashboard PATCH is actor-less like every dashboard mutation).

Verified: new negative control over create_task/legacy NULL/backfilled with a
real 5-tuple index + raw-id positive control (red on revert of the fix);
tool grouping test (red on revert); Argus battery v1 3/4 with POSCTRL_raw_id
red by design; 99 + 67 passed on the touched suites.
@Kyzcreig

Copy link
Copy Markdown
Collaborator Author

🤖 merged-by: apollo · lane: discord · gate: BYPASS: FR paused by Ace ruling 09-22; Ace directed landing without further Argus rounds 09-24 12:45; r2 PASS on record · why: t_4de62657 r2 PASS (Argus, before the 12:45 waiver) @ c317808: create_task stamps session_id at birth (explicit > first homed parent > unhomed), grouped kanban_list, notify-repair no longer fabricates a human creator on user-less cards, null-session lint + backfill. CI 39/0. Apollo ruling: keep as built.

@Kyzcreig
Kyzcreig added this pull request to the merge queue Sep 24, 2026
Kyzcreig pushed a commit that referenced this pull request Sep 24, 2026
…carry home; task_events actor provenance; worker fan-out guard

Rebased onto #998 (born-homed). ONE birth-home implementation: #998's
_resolve_birth_session in create_task, extended with the worker-run
lineage (HERMES_KANBAN_TASK) and the inherited origin line; the separate
_apply_inherited_home hook is removed. Worker run with no homed lineage
-> 'unhomed', never its per-run session id. Parent home wins over an
explicit session_id (spec ':=').

Session-first list view is #998's; this PR's item-2 list code and its
tests are dropped, lineage test adapted to #998's grouped format.
Kept: ping/wake home line, task_events actor_profile/actor_session_id,
check_home_session worker fan-out exemption (up-walk only; created
event only) + boundary tests (Argus r3 C3/C4).
Kyzcreig pushed a commit that referenced this pull request Sep 24, 2026
… a worker run

The worker_env fixture sets HERMES_KANBAN_TASK to an unhomed card; under
item 1 a worker run with no homed lineage is born 'unhomed', never its
per-run session id. The test asserts the CHAT-session stamp, so it now
unsets HERMES_KANBAN_TASK. CI slice 12 failure on 77b235e.
@Kyzcreig
Kyzcreig removed this pull request from the merge queue due to a manual request Sep 24, 2026
@Kyzcreig

Copy link
Copy Markdown
Collaborator Author

🤖 merged-by: apollo · lane: claude-bridge-session · gate: BYPASS: FR PAUSED by Ace ruling 2026-09-22 · why: re-enqueue after merge-queue rebuild (CI_OVERFLOW_PLACEMENT_ENABLED=false: controller wrote no plans, local-pool fallback starved the queue); PR untouched

@Kyzcreig
Kyzcreig added this pull request to the merge queue Sep 24, 2026
@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to a conflict with the base branch Sep 25, 2026
@Kyzcreig

Copy link
Copy Markdown
Collaborator Author

🤖 merged-by: apollo · lane: kanban-merge-pass · gate: BYPASS: FleetReview paused by Ace 2026-09-22 (state/fleetreview-pause marker present) · why: t_f59538cf: kanban post-#951: worker-created cards inherit parent home; list default = home ; worker completed in place, CI green

@Kyzcreig
Kyzcreig enabled auto-merge September 25, 2026 01:49
@Kyzcreig

Copy link
Copy Markdown
Collaborator Author

Closed by Apollo (t_4de62657): fully absorbed by #987 (merged ec50416), which was stacked on this branch and carried its commits — main has _resolve_birth_session, the notify-repair user_id fix, and session-grouped kanban_list. Ejected from the merge queue as CONFLICTING at 01:10Z after #1002; a rebase would only re-land what is already there.

@Kyzcreig Kyzcreig closed this Sep 25, 2026
auto-merge was automatically disabled September 25, 2026 02:38

Pull request was closed

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.

1 participant