Skip to content

feat: reconcile open work and require delivery before completion - #45

Merged
MrGTV-love merged 13 commits into
mainfrom
fm/fm-open-loops-core
Oct 8, 2026
Merged

MrGTV-love merged 13 commits into
mainfrom
fm/fm-open-loops-core

Conversation

@MrGTV-love

@MrGTV-love MrGTV-love commented Oct 8, 2026 •

Copy link
Copy Markdown
Owner

Intent

"I need you to drive work to completion. we don't navigate around problems. We fix the root causes of problems. there are other examples of commits you have forgotten. How do we close the loop so I can trust that assigned work will not be lost or forgotten?" Also that morning: "I want work to get fucking done. No handicaps", and on red CI: "why is ci red? is it because the code is bad or the test is bad? We can't leave it red and work around it".

Known examples of lost or stalled work (2026-09-14 to 2026-09-30): the TeamClaude launcher commit 5bdf408e passed review on 2026-09-14, its push failed, and nothing followed up for 16 days; two API-key guard commits (958c95ed, 341b4d0c) sat unlanded in an old copy; the analytics lane kept 10 copies holding commits not on origin plus 5 not-carried copies archived as bundles in ~/vernant-archive/2026-09-29/; a steward question blocking the approved production engine upgrade went unanswered for 10 hours; a CI decision for a firstmate fix waited 4.5 hours; captain answers on Lavish pages went unseen; green PRs waited hours or days before anyone routed their review.

Decision 2026-10-07, "Proceed as recommended": the earlier all-history version of this work did not converge in review (73 distinct findings over 10 review rounds, 3 to 8 new per round). Ship the smallest version of the ask first, and file each remaining history-proof family as its own later PR. The first PR is: a work item reaches Done only when its deliverable landed (PR merged, report written, or local merge) or the captain dropped it in his own words, and teardown refuses otherwise; one deterministic reconciler, run from the existing watcher heartbeat with no new daemon, that lists rows with an owner, a next action, and an age for workerless in-flight work, ready work not started, aged open questions, red or unreviewed PRs, stalled-but-alive workers (with the pane's last error signature), and unlanded commits; any row past its configurable age limit becomes a wake and a Bearings board row; and one degraded row when a source cannot be read. Archive bundles, stashes, recovery refs, canonical-PR landing in another repository, captured-answer routing proofs, and cross-home aggregation are not part of this PR.

What Changed

  • Add a deterministic home-local open-work ledger with owners, next actions, configurable ages, stalled-worker error evidence, and a single degraded-coverage row. Refresh it through the existing watcher and surface overdue obligations as durable wakes and Bearings rows without a new daemon.
  • Require landing evidence, a written scout report, or retained captain drop words before completing ordinary work; reject pushed-only ship teardown and keep dropped work out of recently landed results.
  • Serialize backlog lifecycle mutations, preserve drop history across restarts, and skip Orca worktree removal when the recorded copy is missing. Update configuration documentation and regression coverage for reconciliation, watcher delivery, completion, and teardown.

Risk Assessment

⚠️ Medium: The change spans completion gates, lifecycle custody, and asynchronous reconciliation, but the full source review found no substantiated material defect or contradiction of the binding scope decisions.

Testing

Both targeted regression scripts passed. Live isolated completion, reconciliation, real Claude, public GitHub, watcher acknowledgement/cooldown, stale-publication, and Bearings scenarios passed after resolving disposable setup/startup issues. CLI transcripts, persisted ledgers, rendered HTML, and a board screenshot were retained; all disposable resources were removed. No full suite, lint, formatter, push, PR, or CI phase was run.

  • Live validation: ✅ go - 18 of 18 scenarios driven live against the product
Scenario Result Live Evidence
Attempt ship completion without delivery proof ✅ pass live Completion CLI transcript
Complete a scout only with a written regular report ✅ pass live Completion CLI transcript
Drop work in the captain's exact words and explicitly reopen it ✅ pass live Completion CLI transcript
Complete genuinely delivered local or merged-PR work ✅ pass live Completion CLI transcript
Protect a running endpoint until completion or drop is authorized ✅ pass live Live endpoint teardown guard
Find workerless assignments and dependency-cleared ready work ✅ pass live Owned obligation ledger
Keep unanswered questions visible without confusing resolved questions ✅ pass live Owned obligation ledger; Reconciler live commands
Expose commits that have not landed ✅ pass live Owned obligation ledger
Observe a stalled-but-alive worker and preserve its last error-looking pane line ✅ pass live Actual Claude pane diagnostic fixture; Reconciler live commands; Bearings machine projection
Respect recent pipeline progress scoped to the task's relative store ✅ pass live Task-scoped progress comparison
Route red checks and unreviewed PRs from genuine forge evidence ✅ pass live Live public forge ledger
Discover recorded task PRs without a project-origin registration ✅ pass live Recorded-task-only forge discovery
Disclose unreadable sources and reject lookalike forge hosts ✅ pass live Unreadable inventory degradation; Reconciler live commands
Publish to the selected home with empty addressing overrides ✅ pass live Reconciler live commands
Collect a missing ledger even with a fourteen-day refresh interval ✅ pass live Watcher durable wake transcript
Acknowledge a wake without resolving its obligation or repeating it immediately ✅ pass live Watcher durable wake transcript
Wake when ledger publication stops ✅ pass live Watcher durable wake transcript
Show overdue obligations on the rendered Bearings board and machine views ✅ pass live Rendered Bearings obligation board; Generated Bearings board; Bearings machine projection
Evidence: Completion CLI transcript

Source: Completion CLI transcript


$ FM_HOME=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home TREEHOUSE_ROOT=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/pool ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/bin/fm-lab-home.sh create ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home
~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home

[exit 0]

$ FM_HOME=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home TREEHOUSE_ROOT=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/pool ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/bin/fm-tasks-axi.sh add ship-proof 'Ship no proof' --kind ship --repo lab
ok: added ship-proof (ship, repo lab) -> Queued
task:
  id: ship-proof
  title: Ship no proof
  state: queued
  blocked: no
  blocked_by: none
  held: no
  hold_reason: "-"
  hold_kind: "-"
  hold_until: "-"
  kind: ship
  repo: lab
  priority: "-"
  created: 2026-10-08
  closed: "-"
  deps: none
  links: none
  body: ""
help[2]:
  - Run `tasks-axi start ship-proof` to move it to in flight
  - Run `tasks-axi block ship-proof --by <other>` to record a dependency

[exit 0]

$ FM_HOME=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home TREEHOUSE_ROOT=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/pool ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/bin/fm-tasks-axi.sh done ship-proof
fm-tasks-axi: completion needs proof of the deliverable: --report (scout), a merged --pr (ship), or --drop-file with the captain's words

[exit 2]

$ FM_HOME=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home TREEHOUSE_ROOT=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/pool ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/bin/fm-tasks-axi.sh add scout-report 'Scout report' --kind scout --repo lab
ok: added scout-report (scout, repo lab) -> Queued
task:
  id: scout-report
  title: Scout report
  state: queued
  blocked: no
  blocked_by: none
  held: no
  hold_reason: "-"
  hold_kind: "-"
  hold_until: "-"
  kind: scout
  repo: lab
  priority: "-"
  created: 2026-10-08
  closed: "-"
  deps: none
  links: none
  body: ""
help[2]:
  - Run `tasks-axi start scout-report` to move it to in flight
  - Run `tasks-axi block scout-report --by <other>` to record a dependency

[exit 0]

$ FM_HOME=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home TREEHOUSE_ROOT=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/pool ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/bin/fm-tasks-axi.sh done scout-report --report data/scout-report/report.md
fm-tasks-axi: the report has not been written: ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/data/scout-report/report.md

[exit 2]

$ FM_HOME=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home TREEHOUSE_ROOT=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/pool ln -s ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/findings.txt ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/data/scout-report/report-link.md

[exit 0]

$ FM_HOME=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home TREEHOUSE_ROOT=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/pool ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/bin/fm-tasks-axi.sh done scout-report --report data/scout-report/report-link.md
fm-tasks-axi: the report has not been written: ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/data/scout-report/report-link.md

[exit 2]

$ FM_HOME=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home TREEHOUSE_ROOT=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/pool ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/bin/fm-tasks-axi.sh done scout-report --report data/scout-report/report.md
ok: done scout-report -> Done (report data/scout-report/report.md)
help[1]:
  - Run `tasks-axi ready` to dispatch work unblocked by this

[exit 0]

$ FM_HOME=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home TREEHOUSE_ROOT=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/pool ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/bin/fm-tasks-axi.sh done ship-proof --drop-file ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/captain-words.txt
ok: done ship-proof -> Done
help[1]:
  - Run `tasks-axi ready` to dispatch work unblocked by this

[exit 0]

$ FM_HOME=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home TREEHOUSE_ROOT=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/pool cmp ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/captain-words.txt ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/data/ship-proof/captain-drop.md

[exit 0]

$ FM_HOME=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home TREEHOUSE_ROOT=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/pool cat ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/data/backlog.md ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/data/ship-proof/captain-drop.md
# Backlog

## In flight
## Queued
## Done
- [x] ship-proof - Ship no proof (repo: lab) (kind: ship) (done 2026-10-08)
  dropped
- [x] scout-report - Scout report data/scout-report/report.md (repo: lab) (kind: scout) (reported 2026-10-08)
Drop this lab assignment: its premise is gone.
Keep these exact words, including punctuation.

[exit 0]

$ FM_HOME=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home TREEHOUSE_ROOT=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/pool ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/bin/fm-tasks-axi.sh reopen ship-proof
ok: reopen ship-proof -> Queued
help[1]:
  - Run `tasks-axi start ship-proof` to move it to in flight

[exit 0]

$ FM_HOME=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home TREEHOUSE_ROOT=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/pool cat ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/data/backlog.md
# Backlog

## In flight
## Queued
- [ ] ship-proof - Ship no proof (repo: lab) (kind: ship)
  Historical captain disposition: dropped
## Done
- [x] scout-report - Sc

... [39627 bytes truncated] ...

SQ9R3SMA5QQ4/.completion-live-home TREEHOUSE_ROOT=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/pool ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/bin/fm-teardown.sh scout-teardown
fm-gate-refuse: gate agent lifecycle permitted only against lab home ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home
WARNING: watcher still down (same stale episode; last beat: 108s ago, grace 300s) - full banner already printed this episode.
fm-captain-hold: origin scout-teardown has no completed captain-call inventory
REFUSED: scout task scout-teardown has not passed the captain-call completion gate.
Inventory its report and any visual review through bin/fm-captain-hold.sh before teardown.

[exit 1]

$ FM_HOME=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home TREEHOUSE_ROOT=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/pool cat ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/data/backlog.md
# Backlog

## In flight
- [ ] scout-teardown - Scout teardown (repo: lab) (kind: scout) (since 2026-10-08)
## Queued
- [ ] ship-proof - Ship no proof (repo: lab) (kind: ship)
  Historical captain disposition: dropped
  Historical captain disposition: dropped
- [ ] forced-drop - forced-drop (repo: lab) (kind: ship)
  Historical captain disposition: dropped
## Done
- [x] public-merged - Public merged PR proof https://github.com/cli/cli/pull/14616 (repo: lab) (kind: ship) (merged 2026-10-08)
- [x] missing-copy - missing-copy https://github.com/cli/cli/pull/14616 (repo: lab) (kind: ship) (merged 2026-10-08)
- [x] unlanded-ship - unlanded-ship (repo: lab) (kind: ship) (done 2026-10-08)
  local main
- [x] scout-report - Scout report data/scout-report/report.md (repo: lab) (kind: scout) (reported 2026-10-08)

[exit 0]

$ FM_HOME=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home TREEHOUSE_ROOT=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/pool ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/bin/fm-captain-hold.sh complete scout-teardown --none
complete: scout-teardown captain-call inventory reviewed

[exit 0]

$ FM_HOME=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home TREEHOUSE_ROOT=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/pool ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/bin/fm-teardown.sh scout-teardown
fm-gate-refuse: gate agent lifecycle permitted only against lab home ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home
WARNING: watcher still down (same stale episode; last beat: 127s ago, grace 300s) - full banner already printed this episode.
teardown scout-teardown complete (window none, worktree ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/scout-missing, legacy record accepted without spawn_gen: endpoint missing, incarnation legacy-20261008T061033Z-32486)
Backlog: scout-teardown is closed in ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/data/backlog.md. Run bin/fm-tasks-axi.sh ready for dependency-cleared candidates, check date gates, and dispatch only work whose blockers are gone and date is due.

[exit 0]

$ FM_HOME=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home TREEHOUSE_ROOT=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/pool cat ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/data/backlog.md
# Backlog

## In flight
## Queued
- [ ] ship-proof - Ship no proof (repo: lab) (kind: ship)
  Historical captain disposition: dropped
  Historical captain disposition: dropped
- [ ] forced-drop - forced-drop (repo: lab) (kind: ship)
  Historical captain disposition: dropped
## Done
- [x] scout-teardown - Scout teardown data/scout-teardown/report.md (repo: lab) (kind: scout) (reported 2026-10-08)
- [x] public-merged - Public merged PR proof https://github.com/cli/cli/pull/14616 (repo: lab) (kind: ship) (merged 2026-10-08)
- [x] missing-copy - missing-copy https://github.com/cli/cli/pull/14616 (repo: lab) (kind: ship) (merged 2026-10-08)
- [x] unlanded-ship - unlanded-ship (repo: lab) (kind: ship) (done 2026-10-08)
  local main
- [x] scout-report - Scout report data/scout-report/report.md (repo: lab) (kind: scout) (reported 2026-10-08)

[exit 0]

$ FM_HOME=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home TREEHOUSE_ROOT=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/pool cat ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/data/ship-proof/captain-drop.md ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/data/forced-drop/captain-drop.md ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/data/scout-teardown/report.md
Drop this lab assignment: its premise is gone.
Keep these exact words, including punctuation.
Drop this lab assignment: its premise is gone.
Keep these exact words, including punctuation.
# Completed scout findings
A real written nonempty report.

[exit 0]

SETUP: metadata fixtures were ordinary endpoint-less legacy records, created in marked disposable home using write tool; no executable doubles, no fake login. Real public merged PR was read-only https://github.com/cli/cli/pull/14616; it was recorded solely as fixture evidence, not asserted as lab authorship. All git pushes above targeted the local disposable origin.git only.

$ FM_HOME=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home TREEHOUSE_ROOT=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/pool ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/bin/fm-lab-home.sh teardown ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home

[exit 0]

$ FM_HOME=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home TREEHOUSE_ROOT=~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home/pool rm -rf ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.completion-live-home

[exit 0]

CLEANUP_HOME_EXISTS=False
SETUP ENV (every logged command): GIT_AUTHOR_NAME=Lab Captain; GIT_AUTHOR_EMAIL=lab@example.invalid; GIT_COMMITTER_NAME=Lab Captain; GIT_COMMITTER_EMAIL=lab@example.invalid; inherited FM_*_OVERRIDE variables removed.
FIXTURE WRITE CONTENT: captain-words.txt = 'Drop this lab assignment: its premise is gone.\nKeep these exact words, including punctuation.\n'
FIXTURE WRITE CONTENT: scout-report/report.md = '# Findings\nThe disposable lifecycle report is written.\n'
FIXTURE WRITE CONTENT: scout-teardown/report.md = '# Completed scout findings\nA real written nonempty report.\n'
FIXTURE METADATA TEMPLATE: backend=tmux\nwindow=\nworktree=<logged path>\nproject=<lab projects/lab>\nkind=<ship|scout>\nmode=local-only\n; missing-copy alternative appends pr=https://github.com/cli/cli/pull/14616\n. No spawn_gen: actual supported missing-endpoint legacy cleanup path.
REGRESSION: not run; live cases exercised completion behavior, targeted timeout regression left to main agent to avoid duplicate checks.
Evidence: Live endpoint teardown guard

Source: Live endpoint teardown guard

REFUSAL (endpoint retained):
fm-gate-refuse: gate agent lifecycle permitted only against lab home ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.livevalidation/home
WARNING: watcher still down (same stale episode; last beat: never, grace 300s) - full banner already printed this episode.
REFUSED: task primary has no recorded Git worktree; completion requires a recorded GitHub PR confirmed merged by the forge.
Restore its copy, land its recorded PR, or get the captain's own words to drop it and pass --force --drop-file.

exit=1
AUTHORIZED DROP:
teardown primary complete (window primary:fm-primary, worktree ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.livevalidation/missing-live-copy)
Backlog: primary is closed in ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.livevalidation/home/data/backlog.md. Run bin/fm-tasks-axi.sh ready for dependency-cleared candidates, check date gates, and dispatch only work whose blockers are gone and date is due.
fm-gate-refuse: gate agent lifecycle permitted only against lab home ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.livevalidation/home
WARNING: watcher still down (same stale episode; last beat: never, grace 300s) - full banner already printed this episode.

exit=0
CAPTAIN WORDS RETAINED:
I am dropping this disposable live validation task. Close its private endpoint.
Evidence: Owned obligation ledger

Source: Owned obligation ledger

{
  "schema": "fm-open-loops.v1",
  "generated_epoch": 1791439747,
  "home": "~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.livevalidation/home",
  "complete": true,
  "rows": [
    {
      "id": "62e7b6c1b3d1688e0feee8d4",
      "category": "missing_worker",
      "subject": "lost",
      "owner": "firstmate",
      "next_action": "recover the assigned worker without discarding work",
      "age_seconds": 22147,
      "limit_seconds": 0,
      "overdue": true,
      "evidence": ""
    },
    {
      "id": "c60952d2387dc33f612cd149",
      "category": "missing_worker",
      "subject": "unlanded",
      "owner": "firstmate",
      "next_action": "recover the assigned worker without discarding work",
      "age_seconds": 17,
      "limit_seconds": 0,
      "overdue": true,
      "evidence": ""
    },
    {
      "id": "7264d98fe599ee4a303fc9b4",
      "category": "ready_not_started",
      "subject": "ready",
      "owner": "firstmate",
      "next_action": "dispatch the dependency-cleared work",
      "age_seconds": 22147,
      "limit_seconds": 0,
      "overdue": true,
      "evidence": ""
    },
    {
      "id": "9ee728aa2095436c8875451c",
      "category": "unanswered_question",
      "subject": "asker:engine",
      "owner": "firstmate",
      "next_action": "answer or close this question, or record why it no longer applies",
      "age_seconds": 36043,
      "limit_seconds": 0,
      "overdue": true,
      "evidence": "needs-decision: production engine upgrade unanswered"
    },
    {
      "id": "1adf734c8bd95ba7da87fb92",
      "category": "unanswered_question",
      "subject": "held:captain-hold",
      "owner": "captain",
      "next_action": "resolve the captain hold or record its next decision date",
      "age_seconds": 22147,
      "limit_seconds": 0,
      "overdue": true,
      "evidence": "Approve the production engine upgrade"
    },
    {
      "id": "ef665d3501dd55fd85d374c8",
      "category": "unlanded_commit",
      "subject": "unlanded",
      "owner": "firstmate",
      "next_action": "land this work through its PR, or obtain the captain's drop",
      "age_seconds": 17,
      "limit_seconds": 0,
      "overdue": true,
      "evidence": "1 commit(s) not on refs/heads/main; newest: reviewed launcher fix; push failed"
    }
  ]
}
Evidence: Live public forge ledger

Source: Live public forge ledger

{
  "schema": "fm-open-loops.v1",
  "generated_epoch": 1791439902,
  "home": "~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.livevalidation/home",
  "complete": false,
  "rows": [
    {
      "id": "290c3248347cbb304703b3ab",
      "category": "coverage",
      "subject": "ledger degraded",
      "owner": "firstmate",
      "next_action": "restore the unreadable sources and rerun the reconciler",
      "age_seconds": null,
      "limit_seconds": 0,
      "overdue": true,
      "evidence": "worker current state primary: harness state unavailable (unknown missing); worker current state unlanded: harness state unavailable (unknown missing)"
    },
    {
      "id": "62e7b6c1b3d1688e0feee8d4",
      "category": "missing_worker",
      "subject": "lost",
      "owner": "firstmate",
      "next_action": "recover the assigned worker without discarding work",
      "age_seconds": 22302,
      "limit_seconds": 0,
      "overdue": true,
      "evidence": ""
    },
    {
      "id": "c60952d2387dc33f612cd149",
      "category": "missing_worker",
      "subject": "unlanded",
      "owner": "firstmate",
      "next_action": "recover the assigned worker without discarding work",
      "age_seconds": 172,
      "limit_seconds": 0,
      "overdue": true,
      "evidence": ""
    },
    {
      "id": "94cf91e54c03493d4e59f915",
      "category": "open_pr",
      "subject": "https://github.com/cli/go-gh/pull/177",
      "owner": "firstmate",
      "next_action": "monitor CI and route its result",
      "age_seconds": 48411762,
      "limit_seconds": 3600,
      "overdue": true,
      "evidence": ""
    },
    {
      "id": "76ab5c491d4aa27143062057",
      "category": "open_pr",
      "subject": "https://github.com/cli/go-gh/pull/178",
      "owner": "firstmate",
      "next_action": "monitor CI and route its result",
      "age_seconds": 21042427,
      "limit_seconds": 3600,
      "overdue": true,
      "evidence": ""
    },
    {
      "id": "d8dba9e3a37021c8aabce1b2",
      "category": "open_pr",
      "subject": "https://github.com/cli/go-gh/pull/209",
      "owner": "firstmate",
      "next_action": "monitor CI and route its result",
      "age_seconds": 19359899,
      "limit_seconds": 3600,
      "overdue": true,
      "evidence": ""
    },
    {
      "id": "0bfc6f372b5f25107b4dd150",
      "category": "open_pr",
      "subject": "https://github.com/cli/go-gh/pull/211",
      "owner": "firstmate",
      "next_action": "monitor CI and route its result",
      "age_seconds": 19358374,
      "limit_seconds": 3600,
      "overdue": true,
      "evidence": ""
    },
    {
      "id": "ea61b2e81f1fe8b326b5cdaf",
      "category": "open_pr",
      "subject": "https://github.com/cli/go-gh/pull/214",
      "owner": "BagToad",
      "next_action": "complete the requested PR review",
      "age_seconds": 12140759,
      "limit_seconds": 3600,
      "overdue": true,
      "evidence": ""
    },
    {
      "id": "bdfc1212f9caa0caeaf78dda",
      "category": "open_pr",
      "subject": "https://github.com/cli/go-gh/pull/218",
      "owner": "firstmate",
      "next_action": "route the green PR's review and obtain merge approval",
      "age_seconds": 16792696,
      "limit_seconds": 3600,
      "overdue": true,
      "evidence": ""
    },
    {
      "id": "71d0215d7bd2dd2912e123aa",
      "category": "open_pr",
      "subject": "https://github.com/cli/go-gh/pull/221",
      "owner": "firstmate",
      "next_action": "monitor CI and route its result",
      "age_seconds": 12757908,
      "limit_seconds": 3600,
      "overdue": true,
      "evidence": ""
    },
    {
      "id": "3a4d454f227e3ad563f61417",
      "category": "open_pr",
      "subject": "https://github.com/cli/go-gh/pull/222",
      "owner": "BagToad",
      "next_action": "complete the requested PR review",
      "age_seconds": 12758066,
      "limit_seconds": 3600,
      "overdue": true,
      "evidence": ""
    },
    {
      "id": "3345b12f2be05fe9fdb91187",
      "category": "open_pr",
      "subject": "https://github.com/cli/go-gh/pull/223",
      "owner": "firstmate",
      "next_action": "monitor CI and route its result",
      "age_seconds": 12479008,
      "limit_seconds": 3600,
      "overdue": true,
      "evidence": ""
    },
    {
      "id": "59737f8ea913ccdbc808d344",
      "category": "open_pr",
      "subject": "https://github.com/cli/go-gh/pull/255",
      "owner": "firstmate",
      "next_action": "monitor CI and route its result",
      "age_seconds": 9182278,
      "limit_seconds": 3600,
      "overdue": true,
      "evidence": ""
    },
    {
      "id": "59a4894f109d9cd7d9e1f97b",
      "category": "open_pr",
      "subject": "https://github.com/cli/go-gh/pull/274",
      "owner": "firstmate",
      "next_action": "monitor CI and route its result",
      "age_seconds": 56341,
      "limit_seconds": 3600,
      "overdue": true,
      "evidence": ""
    },
    {
      "id": "2101cb7265642ede70639d8b",
      "category": "open_pr",
      "subject": "https://github.com/cli/go-gh/pull/280",
      "owner": "babakks",
      "next_action": "complete the requested PR review",
      "age_seconds": 3503028,
      "limit_seconds": 3600,
      "overdue": true,
      "evidence": ""
    },
    {
      "id": "8474e6ceced462cbca0d6d90",
      "category": "open_pr",
      "subject": "https://github.com/cli/go-gh/pull/281",
      "owner": "BagToad",
      "next_action": "complete the requested PR review",
      "age_seconds": 2939010,
      "limit_seconds": 3600,
      "overdue": true,
      "evidence": ""
    },
    {
      "id": "c0424d467e358929b6852e7a",
      "category": "open_pr",
      "subject": "https://github.com/cli/go-gh/pull/298",
      "owner": "firstmate",
      "next_action": "route the green PR's review and obtain merge approval",
      "age_seconds": 507618,
      "limit_seconds": 3600,
      "overdue": true,
      "evidence": ""
    },
    {
      "id": "713515080bff2434d1d9ed3f",
      "category": "open_pr",
      "subject": "https://github.com/cli/go-gh/pull/300",
      "owner": "firstmate",
      "next_action": "monitor CI and route its result",
      "age_seconds": 1997092,
      "limit_seconds": 3600,
      "overdue": true,
      "evidence": ""
    },
    {
      "id": "fd2a61df8e5b491fcd8b9f4c",
      "category": "open_pr",
      "subject": "https://github.com/cli/go-gh/pull/302",
      "owner": "firstmate",
      "next_action": "monitor CI and route its result",
      "age_seconds": 1450602,
      "limit_seconds": 3600,
      "overdue": true,
      "evidence": ""
    },
    {
      "id": "00c3d7e5c6842a7b3251e61e",
      "category": "open_pr",
      "subject": "https://github.com/cli/go-gh/pull/304",
      "owner": "firstmate",
      "next_action": "monitor CI and route its result",
      "age_seconds": 1448431,
      "limit_seconds": 3600,
      "overdue": true,
      "evidence": ""
    },
    {
      "id": "7264d98fe599ee4a303fc9b4",
      "category": "ready_not_started",
      "subject": "ready",
      "owner": "firstmate",
      "next_action": "dispatch the dependency-cleared work",
      "age_seconds": 22302,
      "limit_seconds": 0,
      "overdue": true,
      "evidence": ""
    },
    {
      "id": "f2e37ad8c26b69c6a1d47b15",
      "category": "red_check",
      "subject": "https://github.com/cli/go-gh/pull/291",
      "owner": "firstmate",
      "next_action": "diagnose: code or test",
      "age_seconds": 2528921,
      "limit_seconds": 0,
      "overdue": true,
      "evidence": "lint"
    },
    {
      "id": "ae6365b523a0feee3dbba612",
      "category": "red_check",
      "subject": "https://github.com/cli/go-gh/pull/294",
      "owner": "firstmate",
      "next_action": "diagnose: code or test",
      "age_seconds": 2269679,
      "limit_seconds": 0,
      "overdue": true,
      "evidence": "lint"
    },
    {
      "id": "072a011d8abb6f63a45d72c2",
      "category": "red_check",
      "subject": "https://github.com/cli/go-gh/pull/295",
      "owner": "firstmate",
      "next_action": "diagnose: code or test",
      "age_seconds": 2269683,
      "limit_seconds": 0,
      "overdue": true,
      "evidence": "lint"
    },
    {
      "id": "9ee728aa2095436c8875451c",
      "category": "unanswered_question",
      "subject": "asker:engine",
      "owner": "firstmate",
      "next_action": "answer or close this question, or record why it no longer applies",
      "age_seconds": 36198,
      "limit_seconds": 0,
      "overdue": true,
      "evidence": "needs-decision: production engine upgrade unanswered"
    },
    {
      "id": "1adf734c8bd95ba7da87fb92",
      "category": "unanswered_question",
      "subject": "held:captain-hold",
      "owner": "captain",
      "next_action": "resolve the captain hold or record its next decision date",
      "age_seconds": 22302,
      "limit_seconds": 0,
      "overdue": true,
      "evidence": "Approve the production engine upgrade"
    },
    {
      "id": "ef665d3501dd55fd85d374c8",
      "category": "unlanded_commit",
      "subject": "unlanded",
      "owner": "firstmate",
      "next_action": "land this work through its PR, or obtain the captain's drop",
      "age_seconds": 172,
      "limit_seconds": 0,
      "overdue": true,
      "evidence": "1 commit(s) not on refs/heads/main; newest: reviewed launcher fix; push failed"
    }
  ]
}
Evidence: Actual Claude pane diagnostic fixture

Source: Actual Claude pane diagnostic fixture


 ▐▛███▛█   Claude Code v2.1.294
▝▜██████▀  Sonnet 5.5 with high effort · Claude Max
 ▝▝   ▝▝   ~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4


❯ Reply exactly "Error: lab diagnostic for stalled-worker evidence". This is a validation fixture, not a real provider
  error. Do not use tools, read files, or modify anything.

⏺ Error: lab diagnostic for stalled-worker evidence

✻ Worked for 8s · done 1:13 AM























────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
❯ 
────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────
  Sonnet 5.5 ░░░░░░░░░░ 6% 66k/1.0M 01M4D1H184R6TQSQ9R3SMA5QQ4:27dfda22
  ⏵⏵ auto mode on (shift+tab to cycle) · ← for agents
Evidence: Unreadable inventory degradation

Source: Unreadable inventory degradation

{
  "schema": "fm-open-loops.v1",
  "generated_epoch": 1791439787,
  "home": "~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.livevalidation/home",
  "complete": false,
  "rows": [
    {
      "id": "290c3248347cbb304703b3ab",
      "category": "coverage",
      "subject": "ledger degraded",
      "owner": "firstmate",
      "next_action": "restore the unreadable sources and rerun the reconciler",
      "age_seconds": null,
      "limit_seconds": 0,
      "overdue": true,
      "evidence": "state inventory: [Errno 13] Permission denied: '~/.no-mistakes/worktrees/32d18ed9638d/01M4D1H184R6TQSQ9R3SMA5QQ4/.livevalidation/unreadable-state'"
    },
    {
      "id": "62e7b6c1b3d1688e0feee8d4",
      "category": "missing_worker",
      "subject": "lost",
      "owner": "firstmate",
      "next_action": "recover the assigned worker without discarding work",
      "age_seconds": 22187,
      "limit_seconds": 0,
      "overdue": true,
      "evidence": ""
    },
    {
      "id": "7264d98fe599ee4a303fc9b4",
      "category": "ready_not_started",
      "subject": "ready",
      "owner": "firstmate",
      "next_action": "dispatch the dependency-cleared work",
      "age_seconds": 22187,
      "limit_seconds": 0,
      "overdue": true,
      "evidence": ""
    },
    {
      "id": "1adf734c8bd95ba7da87fb92",
      "category": "unanswered_question",
      "subject": "held:captain-hold",
      "owner": "captain",
      "next_action": "resolve the captain hold or record its next decision date",
      "age_seconds": 22187,
      "limit_seconds": 0,
      "overdue": true,
      "evidence": "Approve the production engine upgrade"
    }
  ]
}

Pipeline

Updates from git push no-mistakes

✅ **intent** - passed

✅ No issues found.

✅ **Rebase** - passed

✅ No issues found.

⚠️ **Review** - medium risk

✅ No issues found.

✅ **Test** - passed

✅ No issues found.

  • Live validation: ✅ go - 18 of 18 scenarios driven live against the product
Scenario Result Live Evidence
Attempt ship completion without delivery proof ✅ pass live Completion CLI transcript
Complete a scout only with a written regular report ✅ pass live Completion CLI transcript
Drop work in the captain's exact words and explicitly reopen it ✅ pass live Completion CLI transcript
Complete genuinely delivered local or merged-PR work ✅ pass live Completion CLI transcript
Protect a running endpoint until completion or drop is authorized ✅ pass live Live endpoint teardown guard
Find workerless assignments and dependency-cleared ready work ✅ pass live Owned obligation ledger
Keep unanswered questions visible without confusing resolved questions ✅ pass live Owned obligation ledger; Reconciler live commands
Expose commits that have not landed ✅ pass live Owned obligation ledger
Observe a stalled-but-alive worker and preserve its last error-looking pane line ✅ pass live Actual Claude pane diagnostic fixture; Reconciler live commands; Bearings machine projection
Respect recent pipeline progress scoped to the task's relative store ✅ pass live Task-scoped progress comparison
Route red checks and unreviewed PRs from genuine forge evidence ✅ pass live Live public forge ledger
Discover recorded task PRs without a project-origin registration ✅ pass live Recorded-task-only forge discovery
Disclose unreadable sources and reject lookalike forge hosts ✅ pass live Unreadable inventory degradation; Reconciler live commands
Publish to the selected home with empty addressing overrides ✅ pass live Reconciler live commands
Collect a missing ledger even with a fourteen-day refresh interval ✅ pass live Watcher durable wake transcript
Acknowledge a wake without resolving its obligation or repeating it immediately ✅ pass live Watcher durable wake transcript
Wake when ledger publication stops ✅ pass live Watcher durable wake transcript
Show overdue obligations on the rendered Bearings board and machine views ✅ pass live Rendered Bearings obligation board; Generated Bearings board; Bearings machine projection
  • env TMPDIR="$PWD/.livevalidation" bash tests/fm-open-loops.test.sh
  • env TMPDIR="$PWD/.livevalidation" bash tests/fm-backlog-read-bound.test.sh
  • bin/fm-lab-home.sh create &lt;home&gt; followed by real bin/fm-tasks-axi.sh add, start, hold, done, and reopen commands against isolated backlogs
  • bin/fm-teardown.sh &lt;id&gt; and bin/fm-teardown.sh &lt;id&gt; --force --drop-file &lt;words&gt; against disposable Git/treehouse records and an actual private Claude endpoint
  • Real local Git commit, branch push to a disposable bare origin, and local-main merge to distinguish recoverable work from landed delivery
  • bin/fm-open-loops.sh --json, default human output, and --heartbeat against actual backlog, status, Git, forge, and SQLite sources
  • Read-only public GitHub collection through real gh-axi, including origin-discovered and recorded-task-only PRs
  • Private 120×40 tmux Claude session with per-launch lifecycle hooks; observed real Stop publication and stalled-worker pane evidence
  • FM_POLL=1 FM_OPEN_LOOPS_INTERVAL=1209600 bin/fm-watch.sh with no initial ledger; bin/fm-wake-drain.sh presentation and acknowledgement
  • Watcher restart with an unchanged acknowledged obligation, followed by captain disposition and fresh reconciliation
  • FM_OPEN_LOOPS_INTERVAL=1 bin/fm-watch.sh with an aged missing publication and held collection lock
  • Unreadable state-directory permissions, a lookalike non-GitHub origin, empty addressing overrides, and relative task-scoped SQLite progress
  • bin/fm-bearings-snapshot.sh --json, default TOON output, and bin/fm-bearings-board.sh build &lt;payload&gt;; real browser rendering and screenshot of generated board HTML
  • Isolated Lavish session end and listener retirement, private tmux shutdown verification, evidence-server shutdown, and disposable-directory removal
✅ **Document** - passed

✅ No issues found.

🔧 **Lint** - 1 issue found → auto-fixed ✅
  • ⚠️ linter found issues (exit code 1)

🔧 Fix applied.
✅ Re-checked - no issues remain.

✅ **Push** - passed

✅ No issues found.

bin/fm-open-loops.sh reconciles what a home owes against its live records
and lists each unfinished obligation with an owner, a next action, and an
age: workers that are missing, failed, or stalled while alive (with the
pane's last error signature), ready work that never started, open
questions, open and red PRs, unlanded commits on live task copies, and
Done rows with no proof of delivery. A source that cannot be read becomes
one degraded row and complete:false, never an empty answer.

The watcher refreshes the ledger from its existing poll loop through a
detached helper, ahead of any signal or check exit, and wakes on a newly
overdue set. A ledger the helper stopped publishing is its own wake.
Bearings lists every overdue row from the effective state root.

A ship or scout reaches Done only with a merged PR, a written report, or
the captain's own words, retained at data/<id>/captain-drop.md. The tasks
wrapper normalizes the optional task noun and reads real argument tokens.
Teardown no longer treats a pushed branch as delivered, requires the
words for --force on ordinary work, and refuses a non-regular report.
…e six failing checks: successful teardown fixtures now provide hermetic landing proof; forced-drop recovery verifies the captain’s retained words and dropped outcome; remote retirement coverage matches lifecycle-lock refusal and safe retry; tmux fixtures expose live endpoints so generation-race checks exercise the intended path. Removed brittle hardcoded test-count guards from stock-Bash CI while preserving every test invocation and exit-status failure check. Updated contributor guidance; production completion gates remain unchanged. Verification passed: scratch teardown suite, all three affected public-cleanup cases, full stock-Bash Bearings and snapshot suites, full recovery suite with pinned Herdr 0.7.4, isolated remote spawn/retirement scenario including sibling preservation, remaining stock-Bash companion checks, 353-file Bash parse sweep, ShellCheck, actionlint, and documentation checks. Full remote and public-followup runs reached local timeouts; the affected scenarios passed separately. Temporary verification files were removed
…bin/fm-spawn.sh (exit 251, peak RSS 8,387,300 KiB). Removed redundant classifier, PR, and timeout imports from spawn and the duplicate configuration-inheritance import from the shared Claude-launcher library; spawn and control retain those dependencies through their existing owners. Updated lint ownership documentation. Full bin/fm-lint.sh analysis passed for spawn, control, and the launcher library with cache disabled; spawn measured 7,249,104 KiB peak RSS on Darwin. The full task-delivery suite, focused fresh-launch/relaunch/refusal scenarios through both callers, and documentation checks passed. Exact Linux CI-cap success remains unverified: local container attempts were killed in the 7.75 GiB Docker VM. Lint flags, diagnostics, and CI resource limits remain unchanged. Removed all temporary verification files
@MrGTV-love
MrGTV-love merged commit 38515fb into main Oct 8, 2026
21 checks passed
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