Skip to content

W2-bulk: the legacy prose frontier migrates onto the ticket contract (tranche 1: dispatch-lifecycle cluster) - #7240

Merged
briansrls merged 23 commits into
mainfrom
session/w2-bulk
Jul 25, 2026
Merged

briansrls merged 23 commits into
mainfrom
session/w2-bulk

Conversation

@briansrls

@briansrls briansrls commented Jul 25, 2026 •

Copy link
Copy Markdown
Contributor

Summary

The bulk half of remodel W2, complete: every AuthoredLine on the roadmap sheet is dispositioned. 158 TicketLine rows now carry the roadmap; 33 AuthoredLine remain, every one deliberate:

state count disposition
typed-held (w2_bulk_resweep_held) 13 the operator re-sweep worklist — witnessed, dissolve-on ts-pr-audit's sweep
declared by shape ~15 closed incident receipts + one-sentence standing rules — a ticket around a one-fact row is nine empty fields of costume
operator-signed 5 never edited under a signature (1-bics-design, 1-resolver-pathology-a, 3-audit-gate-inventory, 6-shell-slice0/1)

Twenty tranches, each a coherent cluster committed with its regenerated ROADMAP.md and its battery run before the commit.

The honesty rules (the migration's real content)

  • Fields carry only what the prose stated; empties are honest, never fabricated. Dates from the prose; last_verified_on only where a verification actually happened.
  • History and rulings on the updates axis with their dates — operator rulings verbatim; incident chains became dated update threads (deploy-tail's four waves incl. the credential-leak find; wave-reds' three collisions; ui-model's residue-discharge correction dated, not silently rewritten).
  • Accept lines map to red_control/first_slice; operator-owned decisions land as handback (the merge-gate pick, the org-tailnet, verdict vocabulary, don't-drop-the-tailscale-front).
  • Wrappers preserved: sign/owned/with_plan survive migration; ticket_doc/ticket_pp constructors added so pointer-carrying rows keep their doc-graph links (orphan witness green as the executing proof).
  • One-fact rows stay by declared shape; ambiguity stays counted, never guessed.

Defects caught by the machinery, owned in their commits

  • The brief-budget census fired twice (ts-obs-anchor=101, ts-ui-model=123), located node+count both times; trimmed.
  • One witness pinned a headline with its inline date and redded on the convention — the pin moved with the authority; the commit-before-battery chain that let it slip was split from that point (battery now blocks its commit).
  • One near-miss fabrication (an owner string patterned from a sibling where my read had truncated) caught by diffing the removed lines pre-commit and restored to the true value.
  • Count correction: early tranche messages tracked an initial grep that missed _pp/_doc constructors (~20 low); recounted exactly above.

Receipts

Per tranche and final: roadmap_page_keystone (incl. the 100-word brief census), roadmap_emit (the committed ROADMAP.md regenerated through the artifact gate every tranche), roadmap_authority, doc-graph orphans, the re-sweep hold witness, and on the final pass the composition-era witnesses (row archetype, state-response census).

Also riding this PR: the write-interface assessment recorded as a carrier row (typed TicketUpdate append is the interface's first API; belt verdicts / session write-backs / dissolution firings its first consumers).

🤖 Generated with Claude Code

Brian and others added 23 commits July 25, 2026 15:53
…icket contract (6 rows, 161 -> 155 legacy)

First tranche of the bulk migration (task queued behind the composition
session; the five exemplars are the contract, operator-signed on the
rendered archetype). Rows: ts-dispatch-lifecycle, ts-dispatch-verdict,
ts-dispatch-rework (ticket_row — unsized discipline rows), ts-wf-shape
(ticket_row), ts-wf-belt-refusals, ts-wf-progress (ticket_wi — sized,
sizing preserved).

Honesty rules applied, and they are the tranche's real content:
- fields carry ONLY what the prose stated; a field the prose never filled
  is an honest empty (the renderer omits it), never a fabrication;
- dates come from the prose itself (authored_on only where the row named
  one; last_verified_on stays empty — migration is not verification);
- history moves to the updates axis WITH its dates (ts-wf-shape's #7113
  reconciliation-seam note preserved as a dated update, marked since-landed,
  rather than deleted or left masquerading as current);
- Accept lines map to their honest fields (belt-refusals' became
  red_control; progress's became first_slice), each marked in the
  migration update;
- ambiguous rows stay on the counted legacy frontier rather than guessed —
  none in this cluster needed it.

ROADMAP.md regenerated through the generated-artifact gate (main_wet); the
md projects headline — brief per the signed W2 contract (full fields render
on the served page; the authority carries everything). Receipts by
execution: roadmap_page_keystone (including the 100-word brief-budget
census over the six new briefs), roadmap_emit, roadmap_authority all green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…ipt shape declared

Migrated: ts-loop-pattern (the named loop + the ask), ts-loop-selfheal (the
structural exit — both operator rulings preserved VERBATIM as dated updates,
mechanism notes preserved with the #7121 guard), ts-loop-buildretry (the
widening-arm masking row), ts-loop-falsifier (the 29-red narrative with its
exit condition as first_slice).

Shape ruling applied (operator-signed this session for ts-pr-*; extended
here by the same rule): one-fact receipt rows do NOT migrate — a ticket
around a narrative one-liner is nine empty fields of costume. Stays prose
by declared shape: ts-loop-fmt/docsonly/prepush/stale-roster (closed
incident receipts), ts-loop-deploy (pointer receipt). The parent ticket's
update row declares this so the frontier count reads honestly.

ROADMAP.md regenerated (main_wet); page keystone (brief budget over the new
briefs), emit, authority green by execution.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ts-obs-anchor (the five laws; reference implementation studied by
execution), ts-obs-model (P0 carriers), ts-obs-ci-renderer (P1, the pain
point), ts-obs-tty (P2), ts-obs-census-wall (P3), ts-observation-contract
(the equivalence bar). Accept lines and REDs mapped to red_control /
first_slice, marked per row.

The family's branch state recorded honestly: each row carries a dated
update — verified this session — that the lane's implementation lives on
 #7216's unmerged branch (supersedes #7162) and lands at its merge;
last_verified_on set only on those rows, because that verification actually
happened. The composition PR's altitude convergence row already watches the
same merge.

The brief-budget census fired mid-tranche (ts-obs-anchor=101, located node
+ count exactly as designed) and the brief was trimmed one word — the wall
working, recorded because a census that never fires is the one to distrust.

ROADMAP.md regenerated; page keystone, emit, authority green by execution.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… sharpening 1)

The 13 ts-pr-* children move from a prose flag to w2_bulk_resweep_held —
typed rows, counted, with ts-pr-audit's sweep as the declared dissolve-on —
so the legacy frontier decomposes honestly into not-yet-migrated vs
held-for-disposition, and the operator's re-sweep has a mechanical worklist.
ts-pr-audit itself migrates to a ticket (its sweep instruction is the
first_slice; the sweep is the handback — each child's disposition is the
operator's call).

The lighter one-fact row species is deliberately NOT minted (management
sharpening 2, second-consumer discipline): the sweep will disposition most
of these away, and the hold makes deferring that call cheap.

Witnesses by execution: every held id resolves to a live AuthoredLine (a
held id whose row was migrated, superseded, or deleted reds carrying the
id — the hold outlived its state); planted REDs on a nonexistent id AND on
an already-migrated ticket id. ROADMAP.md regenerated; page/emit/authority
green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ts-lens-endgame (the v2-door dependency named precisely, milestones
preserved), ts-lens-door (M-L1; the Accept T2->T5 block became red_control,
the three-compile-sites scope review became current_state), ts-lens-treewide
(M-L2; the W3 typed-module-store convergence preserved), ts-lens-
contract-truth (M-L3; the twice-verified counted state — 55 ids / 46
contracts / 9 missing including live Determinism — lands as current_state
with its verification date as last_verified_on, the one tranche row where
that field is honestly non-empty from the prose itself), ts-lens-
complexity-scope (M-L4; the red-by-design blockers and the space-complexity
re-home rider preserved), ts-lens-terminal (the 2c fan-in node).

ROADMAP.md regenerated; page keystone (brief budget over six new briefs),
emit, authority, and the re-sweep hold witness green by execution.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ts-group-u (the membership taxonomy — positional/derived/frontier/nickname
with the mint->frontier->query pipeline), ts-group-family (the #7069
re-key; the 744-rows-Derived sequencing fact preserved as an update),
ts-group-census (the swept roster ledger; landed items in the brief,
storage-grain residue as current_state), ts-group-dissolve-typed (the
OnRoadmapNode coupling; its lens became red_control), ts-group-
partition-drift (the incident receipt; both drift incidents in the brief,
the regen two-generation side receipt preserved dated).

ROADMAP.md regenerated; page/emit/authority green by execution.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ts-host-state (the parent gap — both 2026-07-22 tail incidents as
displaced_cost, the srv4 live-fire receipts as current_state, the 0-to-3
dispatch brief as first_slice with the operator's claims-intersection
ruling, TakeoverRuling as red_control), ts-host-frontier (the
Derived|OwnedMember|ForeignWithContract classification), ts-host-antientropy
(the host falsifier), ts-host-cdtransport (deploy from content, not the
runner workspace), ts-host-genlease (StaleDesiredState + subtree lease; the
21:49 overlap receipt as displaced_cost).

ROADMAP.md regenerated; page/emit/authority green by execution.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ts-native-bulk (the arc; operator re-pricing + sizing preserved dated),
ts-native-census (derived-denominator discipline made structural:
stale-on-arrival counts kept ONLY as dated snapshots in current_state, the
deleted-drifting-copies history preserved), ts-native-seams (the
measurement-settled crate grain), ts-native-flip (the three-section PR),
ts-native-flip-revert (the working-as-designed receipt; the twice-corrected
re-flip gate as current_state; the one-authority rule — the carrier's
dissolve_on strings, never a roadmap paraphrase — lands as handback, which
is exactly what that clause is).

ROADMAP.md regenerated; page/emit/authority green by execution.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ts-ci-definition (the three-clause functionality bar; today's failures as
current_state), ts-ci-claimed (the do-not-re-plan ledger; sequencing rule
preserved — a fast CI that lies is worse than a slow one), ts-ci-ergonomics
(the priced touchpoints; the inventory as first_slice), ts-ci-options (the
three merge-gate options; the pick is the operator's — handback),
ts-access-model (the transport-accident gap; grants shape), ts-access-
orgtailnet (operator-owned creation — handback), ts-access-dispatch-auth
(go-live precondition; do-NOT-drop-the-front as handback).

ROADMAP.md regenerated; page/emit/authority green by execution.

Rider: #7239 (the flips PR) merged on its green floor this tranche — the
gutter split and signed PROVISIONAL marks are on main.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ts-authority-converge (the sprint entry point; the parity-window carrier
contradiction as current_state, the option-b gating ruling dated),
ts-concat-class (the 2,798-site census with its atom-never-composition
ruling), ts-deploy-tail (the DONE incident — its four dated receipt waves,
including the credential-leak find and #7086's construction fix, become the
updates thread the blob never had), ts-doc-anchor (carrier-anchored
sessions), ts-effects-providers (the conflated-counts honesty catch as
current_state; the boundary-enforcement clause as red_control).

ts-branches stays: a closed all-dispositioned receipt, not a blob.

ROADMAP.md regenerated; page/emit/authority green by execution.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… rows, 112 -> 106 legacy)

ts-evaluator-complete (the two-typed-exits bar; refusal-never-fallback),
ts-executor-seams (critical slice, hollowing fenced to out_of_scope with
its stale-on-arrival count rule), ts-falsifier-nfr (DONE — root-cause and
landed rows as the updates thread; the NEW-find clause as red_control),
ts-floor-memory (the ceiling pin; confirm-caps as first_slice),
ts-interp-delete (the delete bar; the missing interpreter-file-only
milestone note as current_state), ts-interp-endgame (the three finish
lines named apart; the counted-fourth-role enrollment as first_slice).

ts-intake-discipline stays: a one-sentence standing rule, not a blob.

ROADMAP.md regenerated; page/emit/authority green by execution.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
ts-lying-stamp (the recurrence class; the 5th occurrence dated; the
decide-once as first_slice AND handback — it is a ruling), ts-material-ci
(the kernel row; the corrected sequencing as current_state; the
different-denominators watch-flag as red_control — land the fresh receipt
BEFORE repricing), ts-merge-gate (the re-evidence), ts-quarantine (the
link-grain dress rehearsal; the deletion-receipt clause as red_control),
ts-queue (ops hygiene; the zombie cancel as first_slice).

Stay by shape: ts-modeling-pass (a per-PR checklist rule), ts-overnight
(done accounting receipt).

ROADMAP.md regenerated; page/emit/authority green by execution.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…the ts-* sheet is done

ts-review-sweep (the operator checklist; falsifier-dark prioritization as
first_slice), ts-seed-interim (the 8-percent-in-33h receipt as
displaced_cost, counts dated by the wave snapshot), ts-seed-ratchet
(SeedGrowthJustification as the frontier pattern on the seed itself),
ts-seed-data-out (the landed roster move; the live dual-representation
mirror as current_state), ts-seed-intake (the thin-transport policy),
ts-standing-intent (the ask-once row — with the state-response census
recorded as its third idling consumer), ts-store-econ (the ForciblySerial
narrow point: three lanes converge, said out loud in displaced_cost; the
review-hardened RED battery preserved whole), ts-unconsumed (the sweep),
ts-wave-reds (DONE — the three-collision heal chain as dated updates,
including the opposite-way drift lesson), ts-wf-lens-walls (the roadmap
lens trio), ts-zero-hand (the terminal ruling; the third carrier
contradiction as current_state, the never-delay sequencing as out_of_scope).

Stay by shape: ts-roadmap-drift (done receipt), ts-sustainable-close
(one-sentence rule). With this tranche every ts-* row is dispositioned:
migrated, typed-held, or declared by shape.

ROADMAP.md regenerated; page/emit/authority + the hold witness green.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…eserving constructors

New constructors first, because the wall fired before the work: ticket_doc /
ticket_pp — the exact siblings authored_doc/authored_pp are to authored().
Without them, migrating a pointer-carrying row through ticket_row would
silently DROP its carriers (the doc-graph's inbound links) — content loss
the migration's own rules forbid. The doc-graph orphan witness runs green
over the migrated lane as the executing proof the pointers survived.

Migrated: 1-nightly (done, audit-dated) · 1-double-resolve ·
1-sccache-falsegreens (the cache-lies live-repro residue as current_state) ·
1-wallclock-measured (void profile numbers said so, dated) ·
1-placement-authority · 1-sched-resource-aware (the re-base ruling; tracker
link preserved inline) · 1-affected-set-defork(doc) · 1-budget-tree(pp,
both pointers kept) · 1-builtin-registry(pp) · 1-floor-right-things(doc) ·
1-g1-placement(doc) · 1-g2-runner (the modeled-envelope Accept as
red_control) · 1-g3-caps · 1-g4-dispatch(pp) · 1-g5-rust-selection(doc) ·
1-resolver-pathology-b(wi, sizing preserved).

NEW SHAPE RULE, applied and declared: an operator-SIGNED row does not get
edited under its signature — 1-bics-design and 1-resolver-pathology-a stay
as attested receipts (the signoff attests the node as signed; migrating the
line under it would change what was signed).

ROADMAP.md regenerated; page/emit/authority + doc-graph green by execution.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
3-audit-affected-set (done; the three-clause discharge with its live
discrimination receipt), 3-audit-artifact-freshness (green-on-branch is not
green-on-main; the operator ask preserved verbatim in the migration
update), 3-audit-cache-honesty, 3-enforcement-intent (the landed inventory
re-based; the state-response census recorded as its third idling consumer,
closing the loop management asked to watch), 3-cost-risk-benefit (the
2026-07-12 working-session capture — the argmax framing, the
deferred-and-detected invariant, the wet-is-sacred inversion, the
missing-pieces list highlighted not papered over; carriers preserved via
ticket_pp).

3-audit-gate-inventory stays: operator-signed attested receipt.

ROADMAP.md regenerated; page/emit/authority + doc-graph green by execution.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…aught and owned)

roadmap_authority_witnesses redded on tranche 14 — witness_audit_lane_present
pinned the affected-set headline WITH its inline audit date, which the
migration moved to a dated update per the convention every tranche has
applied. The pin moves with the authority (the slice-2 shape: the witness
reds on the change by design, then re-attests). The red was committed before
it was seen — the battery ran in the same chained command as the commit;
this fix commit is the stopped-line analysis, and the chain is split from
here on so a red blocks the commit it belongs to.

Forward note for lane 2: witness_fabric_design_rule pins lane-2 row
strings ("stateless frontend MVP on fabric" et al) — those pins update
alongside their rows' migration, deliberately, not as surprises.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Lane 5: 5-cargo-green-continuous (done — resolved-by-construction, the
unwritable failure mode stated), 5-regen-cutover (done — same discharge
class, migrated for consistency with 1-nightly/3-audit-affected-set),
5-defork (the shadowed-shell.Which incident as displaced_cost), 5-dissolve-
patches (the 7→25 regrowth re-measure dated), 5-emitted-crate-partition,
5-root-b, 5-seed-honesty (the fail-open-by-construction confession
preserved whole; FLAGs A–D as handback), 5-test-migration (wi; the
operator's scrutinize-first ruling as handback; the typed-retirement-path
as first_slice), 5-v1coupled (one-liner, migrated for its deferral field).

Lane 6: 6-shell-emission(doc), 6-shell-intent-phase1(doc — sign-off
PENDING as current_state, the flip instruction as handback),
6-shell-slice2(doc — same pattern, the FLAG discharge dates kept).

Stay signed: 6-shell-slice0, 6-shell-slice1 (operator-signed attested).

ROADMAP.md regenerated; page/emit/authority + doc-graph green by execution
BEFORE this commit (chain split per the tranche-14 lesson).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
The migration is not the interface's right first consumer (editorial half
irreducible; mechanical half already execution-verified per tranche). The
recurring consumer is typed TicketUpdate APPEND — belt verdicts, session
write-backs, dissolution firings — with the updates axis as the first API.
Assessment as a data row beside the constructors so it is not re-derived.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…tion (9 rows)

2-compile-clean-serial (lever a landed, the 37.6x receipt kept; lever c
residue as current_state), 2-compile-clean-shard-a (done, the OWNED wrapper
preserved — owner string survives migration), 2-compile-clean-shard-b (the
full Accept checklist as red_control with its planted RED), 2-admission-
model (the operator's 1-core-3GiB directive dated; derive-never-hand-set as
red_control), 2-cap-deconflation (three facts in three mechanisms; the
no-conflated-survivor receipt as first_slice), 2-burstlease (non-death
before utilization), 2-strictlease (four nouns no scheduler; the
read-back-never-asserted Accept), 2-provider-offer (the dormant design-break
probe with its four witnesses), 2-shape-labels (runs-on as projection; the
later-architecture fence as out_of_scope).

ROADMAP.md regenerated; battery green BEFORE commit.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
… (9 rows)

2-merge-admission(pp — HELD as current_state, the green-on-branch evidence
as displaced_cost), 2-cd-transport (done, owned wrapper preserved — the
placement-is-not-proof premise), 2-converge-reland (the landed inventory
in the brief, the full T4 accept as red_control, the ReadAbsent bind note
as current_state), 2-fleet-hardening (the ungated-return debt),
2-host-admission (two modes; the post-patch-values RED and the
counters-did-NOT-increase receipt), 2-live-read-seam (the no-mutation
fence; first-slice-does-not-close preserved), 2-live-read-runner-memory
(done, owned; stop-and-return as handback), 2-periodic-actuation (a timer
existing is not acceptance), 2-privilege-model (done, owned; typed refusal
BEFORE mutation).

ROADMAP.md regenerated; battery green BEFORE commit.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…s (10 rows)

The scm family (infra-econ with its cited GitLab 10-K carriers ·
node-merge's keyed-diff-over-identity core · publication-ladder with the
pick-two churn-blinding fence as out_of_scope · remote-realization's
protection-IS-billing · visibility-stage0, your 2026-07-25 plan, its T3
Accept as red_control), 2-stateless-frontend (milestone A landed, B + the
unmergedPages cutover as current_state), 2-emit-partition (owned; the four
leftovers a-d; the atom-never-composition wall as red_control), 2-p3,
2-session-slice (the humming apply-rule), 2-service-receipt (the T4
read-back Accept with its three NotConverged REDs).

with_plan and owned wrappers preserved throughout.

ROADMAP.md regenerated; battery green BEFORE commit.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…-install (15 rows)

2-ci-two-tier-placement(doc — the 5-second rule; fail-closed admission),
2-test-decomposition-wcf (with_plan; the W/C/F cut with attribute-before-
decompose), 2-host-effect-phases(doc), 2-keyed-delta-fold (accepts a+b met;
the (c) proof-by-consumption fork as first_slice — re-point or wire,
deliberately), 2-oom-consumer(doc — never EAGAIN-shaped), 2-runner-
allocation-v0 (the operational milestone; its full T4 Accept and RED
battery; not-complete-while-any-hand-edit preserved), 2-temporal-effect-
spine-a (done, owned), 2-resource-namespace-upsert-a (done),
2-os-install-deduction-a (done, owned), 2-srv3-install-reconcile-a (done),
2-srv3-osinstalled(doc), 2-install-media-generic-layer, 2-nbd-serve-held-
session-lease (done; the do-not-mint-a-parallel-lease-vocabulary rule),
2-srv3-boot-action-diagnostic, 2-os-install-generic-naming.

Near-miss, owned: the deduction-a owner string was fabricated from the
sibling's pattern where my read had truncated it — caught before commit by
diffing the removed lines, restored to the true value (zesty-bat-588, the
same dispatch batch). The rule stands: a field the source states is copied,
never patterned.

ROADMAP.md regenerated; battery green BEFORE commit (incl. hold witness).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
…igratable frontier CLOSES

The 6,223-char verdict specimen decomposed: the five phases + D1-D5 as the
brief (budget census fired at 123 words pre-commit — the split chain
working — trimmed under the bar), the candidate AcceptedWithResidue verdict
as current_state with MERGE IS NOT DONE preserved, the full receipt battery
as red_control, the named residues and arcs as out_of_scope, the verdict
itself as handback (the operator's three questions set the status).

One honest time-axis correction, dated rather than silently rewritten: the
P3 flex-container residue ("deferred, unverifiable without a browser") has
since been DISCHARGED — the remodel round-5 head line and #7234's
RoadmapRow archetype are its discharge, with the operator as the browser.

With this row every AuthoredLine on the sheet is dispositioned: MIGRATED
(the ticket corpus), TYPED-HELD (13, the re-sweep worklist, witnessed),
DECLARED BY SHAPE (closed receipts + one-sentence rules), or
OPERATOR-SIGNED (5, never edited under a signature).

ROADMAP.md regenerated; full battery green BEFORE commit.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@briansrls
briansrls marked this pull request as ready for review July 25, 2026 22:07
@briansrls
briansrls merged commit cdfc899 into main Jul 25, 2026
5 of 10 checks passed
@briansrls
briansrls deleted the session/w2-bulk branch July 25, 2026 23:36
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