Skip to content
quarry Today In History
Login

Today In History

This Day In History For 2027-09-13

1 Year Ago (more context)

2026-09-13
23:58
teams: the room is the chat log, the chat row and the chat composer closed check-in: 1f96540495 user: dmestas tags: team-conventions
23:16 • Edit [8b26d7a7fe]: Add "ci-pass" with value "26af9e17c5ebbf8527a68cd002292ee2". artifact: 75ae99704c user: quarry
23:14 • Post: teams: the team bar is chrome, drawn by the layout beside main like a repository's. artifact: bab259035d user: dmestas
23:14
teams: the team bar is chrome, drawn by the layout beside main like a repository's check-in: 8b26d7a7fe user: dmestas tags: team-conventions
22:38 • Edit [1fac09ff86]: Add "ci-pass" with value "e2ccbce469f058d13534eb58c6d26896". artifact: 0165221181 user: quarry
22:37 • Post: tickets: your tickets get the board too, read-only across trackers. The third surface on the shared card, and the last of dmestas's ask. The board was suppressed on /tickets in two places, both saying 'its lanes are one tracker's vocabulary, and K trackers do not share one' — a real argument, kept rather than deleted, but aimed one step too wide. The hazard belongs to the CONTROL: the Move menu offers every column the board draws and ticket.set does not police a status word (by design, or quarry could not edit trackers it can read), so a move there could write repository A's Review onto repository B's ticket and nothing would refuse it. The GRID is a reading, and reading K trackers needs no agreed vocabulary — this page already draws its chips and triage order from the defaults for the same reason. So the board renders with no move control, and moving happens on a repository's own board where the words are that tracker's. The old test now asserts the new rule instead of being removed. Found on the way: the column's drag and drop handlers were never gated on write at all — invisible on a repository board, where a reader who cannot write has nothing to drag and the POST is refused anyway, and visible here as a read-only column still carrying a move URL. Verified the repository board is UNCHANGED by rendering it from trunk's web.go and from this one and diffing the markup with relative times normalised: no diff. The pixel band I first saw was 3 hours ago becoming 4. artifact: 1355fb26fe user: dmestas
22:37
tickets: your tickets get the board too, read-only across trackers closed check-in: 1fac09ff86 user: dmestas tags: across-board
22:24 • Edit [8337fa6f19]: Add "ci-pass" with value "0d1f631445dc9dd522a3488830c35b7f". artifact: f76b03b1d9 user: quarry
22:24
land ticket-card-component check-in: 8eaa721755 user: dmestas tags: trunk
22:24 • Edit [8eaa721755]: Add "landing" with value "2d910693d2e598902666392396534e86884b9cab3367f9b8af5da9e5f2aaca6c". artifact: 69cdf6cc81 user: quarry
22:24 • Reply: tickets: one card component, and the team board is the board grouped by assignee. dmestas asked why the team board did not follow the conventions of the ticket pages, then said it plainly: a shared component beats a shared idiom. The first team board imitated the look and would have drifted from it. THE CARD IS NOW A COMPONENT: its only page-scope read was $.Repo, so giving ticketSummary its own Repo turned that into .Repo and the card could be extracted to read nothing but its own cardView (CanWrite, LaneBy, GroupBy, ColumnLabels travel with it). Three things moved so the BOARD is portable too: the dragged card publishes $heldBase — its repository's URL built by repoURL, not a hand-built path — so a drop knows which repository it is about; boardMove carries its own Repo for the undo form; and assignee became a board axis, which also gives a repository's own board grouping by assignee for free. ticket.set takes fossil's ten columns as named inputs and tracker-defined ones through a validated map, so the move handler splits on that — without it a move by assignee sent a key the op rejects. VERIFIED: the repository board renders pixel-identical before and after (diff bbox None), and every attribute on the card diffed against trunk (none lost, none added) — because the gate caught me dropping aria-label after rebuilding the Move button from a truncated terminal read, which pixel comparison cannot see. Not done: the personal /tickets board view, whose tab is still hidden from when the board was per-repository. addresses 8318bd2819ca artifact: 8ecf9a3235 user: dmestas
22:24 • Edit [d1ad9c4467]: Mark "Closed". artifact: 68926d64e8 user: quarry
22:23 • Edit [d1ad9c4467]: Add "ci-pass" with value "908d521ed288e66b5ab40d2887ea174f". artifact: f7acb8079d user: quarry
22:23
land fossil-paths check-in: 8337fa6f19 user: dmestas tags: trunk
22:23 • Edit [8337fa6f19]: Add "landing" with value "790616124dced32e27b6bd8eead9dcc6f0d3a07df529dd0e8653becfffc83cb9". artifact: 9b014a8960 user: quarry
22:23 • Reply: Fossil path compliance: relative links, and six verbs quarry was dropping artifact: 1a275fe5df user: dmestas
22:23 • Edit [1a0e3e3425]: Mark "Closed". artifact: 2b6fa1724a user: quarry
22:22
merge trunk: one Tickets tab, trunk's wording closed check-in: d1ad9c4467 user: dmestas tags: ticket-card-component
22:17 • Edit [1a0e3e3425]: Add "ci-pass" with value "28e304a1bf46c6ae5ab1cd5a71ad40b2". artifact: a02a0170f8 user: quarry
22:16 • Post: Fossil path compliance: relative links, and six verbs quarry was dropping artifact: 790616124d user: dmestas
22:16
Resolve relative links in documents against the document, not the page URL closed check-in: 1a0e3e3425 user: dmestas tags: fossil-paths
22:15 • Edit [249caf6074]: Add "ci-pass" with value "5ab6ad35f99c5748df4d271dae51568b". artifact: 85815de296 user: quarry
22:15 • Post: tickets: one card component, and the team board is the board grouped by assignee. dmestas asked why the team board did not follow the conventions of the ticket pages, then said it plainly: a shared component beats a shared idiom. The first team board imitated the look and would have drifted from it. THE CARD IS NOW A COMPONENT: its only page-scope read was $.Repo, so giving ticketSummary its own Repo turned that into .Repo and the card could be extracted to read nothing but its own cardView (CanWrite, LaneBy, GroupBy, ColumnLabels travel with it). Three things moved so the BOARD is portable too: the dragged card publishes $heldBase — its repository's URL built by repoURL, not a hand-built path — so a drop knows which repository it is about; boardMove carries its own Repo for the undo form; and assignee became a board axis, which also gives a repository's own board grouping by assignee for free. ticket.set takes fossil's ten columns as named inputs and tracker-defined ones through a validated map, so the move handler splits on that — without it a move by assignee sent a key the op rejects. VERIFIED: the repository board renders pixel-identical before and after (diff bbox None), and every attribute on the card diffed against trunk (none lost, none added) — because the gate caught me dropping aria-label after rebuilding the Move button from a truncated terminal read, which pixel comparison cannot see. Not done: the personal /tickets board view, whose tab is still hidden from when the board was per-repository. addresses 8318bd2819ca artifact: 2d910693d2 user: dmestas
22:14
tickets: one card component, and the team board is the board grouped by assignee check-in: 249caf6074 user: dmestas tags: ticket-card-component
22:13 • Edit [0b234b6ae4]: Add "ci-pass" with value "84b5ffdbd5c2fe27bb4ad1bc20c5d634". artifact: 44909c9139 user: quarry
22:13
Create new branch named "fossil-paths" check-in: 0b234b6ae4 user: dmestas tags: fossil-paths
21:44 • Edit [fffc2d6da9]: Add "ci-pass" with value "c5acf8651f68a976c823767d3308b6f5". artifact: d861429183 user: quarry
21:44
land outline-crash check-in: fffc2d6da9 user: dmestas tags: trunk
21:44 • Edit [fffc2d6da9]: Add "landing" with value "504735698d4343e5330ed66eadb29a3b30f11f99559fdcaf965112753fe6563f". artifact: 60d68116a0 user: quarry
21:44 • Reply: A crash serving pkgsrc's own documentation, from the exception panel: every reader of that page got a 500. artifact: 8ee66ee88c user: dmestas
21:44 • Edit [4479412416]: Mark "Closed". artifact: c54436f7bb user: quarry
21:42 • Edit [4479412416]: Add "ci-pass" with value "9563d1b00168e594c8d76f272dfc51b0". artifact: 5d6d3ee515 user: quarry
21:41 • Post: A crash serving pkgsrc's own documentation, from the exception panel: every reader of that page got a 500. artifact: 504735698d user: zeitgeist
21:41
a document that changes length when lowercased no longer crashes its page closed check-in: 4479412416 user: dmestas tags: outline-crash
21:30 • Edit [622be88815]: Add "ci-pass" with value "fe05346c0de7023cd9a0e833cccbf80e". artifact: 85f5c400e2 user: quarry
21:28
land forge-bucket-ui check-in: 622be88815 user: dmestas tags: trunk
21:28 • Edit [622be88815]: Add "landing" with value "99e80543cac0070d043a910a91c105331a8459365c8870a372df6856501247bb". artifact: d4ca53ad75 user: quarry
21:28 • Reply: The forge-supplied bucket had ops and no way to reach them, which made the feature real for anyone willing to call the API by hand and for nobody else. artifact: 256a3a05ac user: dmestas
21:28 • Edit [a0c09a925e]: Mark "Closed". artifact: 6a64fd4210 user: quarry
21:28
land check-name-one-rule check-in: 1b02671439 user: dmestas tags: trunk
21:28 • Edit [1b02671439]: Add "landing" with value "cde56d6c6249488b63c96e7c46cc2308e925aaee1b14199e07086a38252cd5f1". artifact: f8548f21c6 user: quarry
21:28 • Reply: checks: the panel and the accept ask one question with one rule. dmestas photographed a landing whose panel said 'Waiting for 1 required check - quarry ... no run yet' directly above the green run for ci/quarry.json, with a pass badge in the header and Accept enabled. Two implementations of 'is this required check green': when required-check names stopped being the workflow's registered name, unmetChecks learned to match the pipeline's stem and internal/web's MissingChecks did not — and pipelineStem was unexported, so the page could not have shared the rule. api.CheckNameMatches is now exported and states the three ways a name matches (the engine's own name, the full path, the stem); both callers use it, and the page holds no copy, because a copy is how this happened. The guard asserts the two AGREE across all three naming shapes rather than that either works, and that a required check with genuinely no run stays missing so the fix cannot paint everything green; verified it fails with the old matching, reproducing the screenshot's wording. artifact: 9241efe3f6 user: dmestas
21:28 • Edit [58989b59ea]: Mark "Closed". artifact: 98db6e3fab user: quarry
21:28
land accept-state-guard check-in: 091c09168b user: dmestas tags: trunk
21:28 • Edit [091c09168b]: Add "landing" with value "07c141dbf93fb47b07a1cb7cc4235c31eea61363a0712a810709d5281625b1fe". artifact: cba95489ae user: quarry
21:28 • Reply: landings: every accept state has a control, asserted on a hook not a word. No behaviour change — this is a guard for a bug I wrongly reported as present. I claimed AcceptState can return "protected" with no template branch, having grepped a window of the if-chain and missed the branch further down in a different chain; rendering that state shows the message and names the owners, as it should. The guard is still worth having: each control now carries data-accept=<state>, and a test asserts every state the function can return renders one, so a state added later without a branch fails here instead of silently rendering nothing. My first version of that test grepped for the word Accept and PASSED with the protected branch deleted, because the page says "accepts itself" elsewhere — found by deleting the branch to check the guard could fail, which is the only reason it is now asserted on the control's own tag. artifact: fd936f4d5c user: dmestas
21:28 • Edit [0b58e6f3d6]: Mark "Closed". artifact: 8be2fbc144 user: quarry
21:18 • Edit [a0c09a925e]: Add "ci-pass" with value "88576a50dcceb4d29fbd9ab3e9724f3f". artifact: bacd3343d5 user: quarry
21:18 • Post: The forge-supplied bucket had ops and no way to reach them, which made the feature real for anyone willing to call the API by hand and for nobody else. artifact: 99e80543ca user: zeitgeist
21:17
an operator can bind the forge's storage, and a repository can say whose it uses closed check-in: a0c09a925e user: dmestas tags: forge-bucket-ui
21:15 • Edit [58989b59ea]: Add "ci-pass" with value "26ddfbb2a4ac1dfd16a9e073ffdcd824". artifact: 815b719372 user: quarry
21:14 • Post: checks: the panel and the accept ask one question with one rule. dmestas photographed a landing whose panel said 'Waiting for 1 required check - quarry ... no run yet' directly above the green run for ci/quarry.json, with a pass badge in the header and Accept enabled. Two implementations of 'is this required check green': when required-check names stopped being the workflow's registered name, unmetChecks learned to match the pipeline's stem and internal/web's MissingChecks did not — and pipelineStem was unexported, so the page could not have shared the rule. api.CheckNameMatches is now exported and states the three ways a name matches (the engine's own name, the full path, the stem); both callers use it, and the page holds no copy, because a copy is how this happened. The guard asserts the two AGREE across all three naming shapes rather than that either works, and that a required check with genuinely no run stays missing so the fix cannot paint everything green; verified it fails with the old matching, reproducing the screenshot's wording. artifact: cde56d6c62 user: dmestas
21:14
checks: the panel and the accept ask one question with one rule closed check-in: 58989b59ea user: dmestas tags: check-name-one-rule
21:09 • Edit [729e581fc8]: Add "ci-pass" with value "eb97c078c5925631efd155ee40691068". artifact: 2fcc4c0c0a user: quarry
21:09
land forge-bucket check-in: 729e581fc8 user: dmestas tags: trunk
21:09 • Edit [729e581fc8]: Add "landing" with value "80a386d3bfcffb77f430ee47901c804613a9e90d91618ebead180bdcc19f0298". artifact: 42c98e8a1c user: quarry
21:09 • Reply: The first half of the layered substrate, and it repairs something already broken rather than preparing for something later. artifact: e56b63706a user: dmestas
21:09 • Edit [81cae7060a]: Mark "Closed". artifact: b8b551cd91 user: quarry
21:09 • Edit [81cae7060a]: Add "ci-pass" with value "6029ed2648ff38541251f61743d40a68". artifact: c2e99f7cbe user: quarry
21:08 • Post: The first half of the layered substrate, and it repairs something already broken rather than preparing for something later. artifact: 80a386d3bf user: zeitgeist
21:08
a forge may supply the storage, so bringing your own is a choice closed check-in: 81cae7060a user: dmestas tags: forge-bucket
21:07 • Edit [0b58e6f3d6]: Add "ci-pass" with value "8204e2e86aba6bba0ce1dcd99713e097". artifact: 611e14138a user: quarry
21:06 • Post: landings: every accept state has a control, asserted on a hook not a word. No behaviour change — this is a guard for a bug I wrongly reported as present. I claimed AcceptState can return "protected" with no template branch, having grepped a window of the if-chain and missed the branch further down in a different chain; rendering that state shows the message and names the owners, as it should. The guard is still worth having: each control now carries data-accept=<state>, and a test asserts every state the function can return renders one, so a state added later without a branch fails here instead of silently rendering nothing. My first version of that test grepped for the word Accept and PASSED with the protected branch deleted, because the page says "accepts itself" elsewhere — found by deleting the branch to check the guard could fail, which is the only reason it is now asserted on the control's own tag. artifact: 07c141dbf9 user: dmestas
21:06
landings: every accept state has a control, asserted on a hook not a word closed check-in: 0b58e6f3d6 user: dmestas tags: accept-state-guard
20:49 • Edit [137b3a5e1e]: Add "ci-pass" with value "7c97098d8debfd11372a2a6889ab5173". artifact: fb8ce502d6 user: quarry
20:47
land required-check-names check-in: 137b3a5e1e user: dmestas tags: trunk
20:47 • Edit [137b3a5e1e]: Add "landing" with value "fcc19e642ce634179bfe505c4ded4eb44441753c3ab9d34413c394f1c05a120e". artifact: e1887424f9 user: quarry
20:47 • Reply: A regression I introduced this afternoon, found by checking what the pipeline-name change actually touched rather than only that CI still ran. artifact: 66f55e3c31 user: dmestas
20:47 • Edit [574315ba71]: Mark "Closed". artifact: 617640665c user: quarry
20:47
land autoland-why check-in: 7a1d5873ff user: dmestas tags: trunk
20:47 • Edit [7a1d5873ff]: Add "landing" with value "4f3aa799ede28cdfe826b86e23b6ac334c213b6f1af26acf4bc13f2636502968". artifact: 89500ab7fe user: quarry
20:47 • Reply: auto-land: an armed landing says what it is waiting on, and how long it has waited. dmestas saw an armed record beside a green tick with an Accept button and asked why it had not landed; the answer was in the forge's log and nowhere a reader could reach, and the ordinary red-checks wait logs nothing by design so a stuck arm looked exactly like a working one. The sweep now RECORDS what it ran into (landing_auto.waiting) and the record shows it with its age — the age is the diagnostic, because the same words are the sweep working at twenty seconds and an arm that is stuck at four minutes. Recorded rather than recomputed: the page could ask the same predicates the deferred accept asks and would then be a second implementation of would-this-land, free to drift from the one that decides. Also fixes TestArtifactSizeStopsAtTheSizeLine, which failed this gate at exactly its 25s cutoff: readUntil consults its stop function on bytes already buffered and then blocks, so the fixture's printf-then-sleep child was waited for whenever the pipe split the prefix. The fixture now writes continuously, as a real summary does, and a new unit test asserts the property on BYTES rather than on a clock, because the continuous child made the timing test unable to tell stopping-at-the-line from reading-the-bound. artifact: 268aaad5c6 user: dmestas
20:47 • Edit [6a96c1a3aa]: Mark "Closed". artifact: 7f646a62e0 user: quarry
20:37 • Edit [574315ba71]: Add "ci-pass" with value "fe0195042fcf4958067475afef055972". artifact: 96d5539656 user: quarry
20:36 • Post: A regression I introduced this afternoon, found by checking what the pipeline-name change actually touched rather than only that CI still ran. artifact: fcc19e642c user: zeitgeist
20:36 • Edit [6a96c1a3aa]: Add "ci-pass" with value "cbf4be9d285262b14dfeca9e01d32bd7". artifact: 8b6bf108b5 user: quarry
20:36
a required check matches the pipeline's name, not the engine's closed check-in: 574315ba71 user: dmestas tags: required-check-names
20:35 • Post: auto-land: an armed landing says what it is waiting on, and how long it has waited. dmestas saw an armed record beside a green tick with an Accept button and asked why it had not landed; the answer was in the forge's log and nowhere a reader could reach, and the ordinary red-checks wait logs nothing by design so a stuck arm looked exactly like a working one. The sweep now RECORDS what it ran into (landing_auto.waiting) and the record shows it with its age — the age is the diagnostic, because the same words are the sweep working at twenty seconds and an arm that is stuck at four minutes. Recorded rather than recomputed: the page could ask the same predicates the deferred accept asks and would then be a second implementation of would-this-land, free to drift from the one that decides. Also fixes TestArtifactSizeStopsAtTheSizeLine, which failed this gate at exactly its 25s cutoff: readUntil consults its stop function on bytes already buffered and then blocks, so the fixture's printf-then-sleep child was waited for whenever the pipe split the prefix. The fixture now writes continuously, as a real summary does, and a new unit test asserts the property on BYTES rather than on a clock, because the continuous child made the timing test unable to tell stopping-at-the-line from reading-the-bound. artifact: 4f3aa799ed user: dmestas
20:35
auto-land: an armed landing says what it is waiting on, and how long it has waited closed check-in: 6a96c1a3aa user: dmestas tags: autoland-why
20:27 • Edit [660eba212b]: Add "ci-pass" with value "ba24a76e515288794476cd96b6ad6ad9". artifact: 0b10708e75 user: quarry
20:27
land cancelled-is-not-failed check-in: 660eba212b user: dmestas tags: trunk
20:27 • Edit [660eba212b]: Add "landing" with value "9e41bda8050321e6e62515eb558c7e027f66bb9e4f3b6e38fbe839009de42df4". artifact: d3f80720e4 user: quarry
20:27 • Reply: Superseding a run marked the check-in as having failed CI. Found while verifying the pipeline-name fix on production, by looking at what the runs actually recorded rather than at whether they ran. artifact: 2bdd6959db user: dmestas
20:27 • Edit [072dc15a00]: Mark "Closed". artifact: df1b795452 user: quarry
20:27 • Reply: Superseding a run marked the check-in as having failed CI. Found while verifying the pipeline-name fix on production, by looking at what the runs actually recorded rather than at whether they ran. artifact: ce71d6fce2 user: dmestas
20:26 • Edit [072dc15a00]: Add "ci-pass" with value "520eaaefb661830d3eb230a053a9c328". artifact: 8874ca6ad5 user: quarry
20:25
update cancelled-is-not-failed from trunk closed check-in: 072dc15a00 user: dmestas tags: cancelled-is-not-failed
20:25 • Reply: Superseding a run marked the check-in as having failed CI. Found while verifying the pipeline-name fix on production, by looking at what the runs actually recorded rather than at whether they ran. artifact: 5dbc5fdeef user: dmestas
20:23 • Edit [2d2b07401a]: Add "ci-pass" with value "86982ab734bbebf99cc4a99920b6ff6f". artifact: 605204577c user: quarry
20:22 • Post: Superseding a run marked the check-in as having failed CI. Found while verifying the pipeline-name fix on production, by looking at what the runs actually recorded rather than at whether they ran. artifact: 9e41bda805 user: zeitgeist
20:22
a superseded run is not a failed one check-in: 2d2b07401a user: dmestas tags: cancelled-is-not-failed
20:18 • Edit [b090cb9eec]: Add "ci-pass" with value "9f25dc0becf143ea3851fb59a128e25f". artifact: d56410193e user: quarry
20:17
land team-hands check-in: b090cb9eec user: dmestas tags: trunk
20:17 • Edit [b090cb9eec]: Add "landing" with value "d153407aa6ea4456320a0a46509b968b9624dff0da0e2019594e3c542f26f81f". artifact: e1ab44038e user: quarry
20:17 • Reply: teams: a repository changing hands tells the people it moved. account.caps raises RFC 0005's vocabulary and writes an inbox line when ONE account's access changes; the team path — which changes access for many at once, and on a private repository changes the whole of it — said nothing, on all three paths: add-as-move, remove, and dissolve (which does not go through remove). Fixed by reusing account.caps's own two functions per affected account, so a person reads the same words whichever way their access moved. Plus the warning at the right moment: RFC 0017 requires naming who loses access BEFORE the act, so team.get returns who would lose each repository and the Remove confirmation names them; the op's Warning says it after, which is the wrong moment for a control. The move stays allowed — whoever may add already holds a on the repository and may already remove it, so it grants no new authority; it just must not be quiet. Note: on a PUBLIC repository nothing is said, correctly — the categories already grant what the floor does, so no access moves. addresses 8318bd2819ca artifact: 6a675d1571 user: dmestas
20:17 • Edit [14017b2778]: Mark "Closed". artifact: 7bdab90537 user: quarry
20:16 • Edit [14017b2778]: Add "ci-pass" with value "1f91bb2a112aa7f6fcd6180cda5b49ff". artifact: 9b1f35d232 user: quarry
20:15 • Edit [0910cc1d55]: Add "ci-fail" with value "ed75c9061beacc06a3271bdd9589f37d". artifact: a27b6034dc user: quarry
20:15
land pipeline-names check-in: 7fed3f2dcc user: dmestas tags: trunk
20:15 • Edit [7fed3f2dcc]: Add "landing" with value "43490c0a436ef747bac85ab0f90187ca7b876ab404ea838b41e7db239d59a70e". artifact: b538144b85 user: quarry
20:15 • Reply: A live bug, found while working out how an owner would supply their own runners. artifact: 13b457d776 user: dmestas
20:15 • Edit [80556e1854]: Mark "Closed". artifact: 6c2656de30 user: quarry
20:15
land team-board check-in: 0910cc1d55 user: dmestas tags: trunk
20:15 • Edit [0910cc1d55]: Add "landing" with value "832a945deccc44ea420f3a1548954992b752cff157c36abf2071468ba6d47426". artifact: 0c6fd2cc67 user: quarry
20:15 • Reply: teams: assignee is a folded column, and the board is ticket.across scoped to a team. RFC 0018's fifth feature, data layer and op; the page follows. assignee is not one of fossil's ten — a tracker defines its own columns — but the ticket table's own comment already settled this: keeping a field out of the summary means a board has to join per ticket, so no board exists. Additive migration beside type/severity/priority, folded from the same field map. BACKFILLED rather than left to a reindex, which is the usual path but wrong here: an empty assignee is indistinguishable from unassigned, so every ticket on an existing forge would read as unassigned and the board would look broken rather than unpopulated. team.tickets scopes across to the team and adds the assignee axis, with nobody last and pickable — which needed AssigneeSet beside Assignee, because filterable()'s rule is that empty means do-not-narrow and under it the unassigned column would be unaskable. Visibility is per REPOSITORY, not team membership: a board has no team-own content, so the gate is the one each repository already applies. addresses 8318bd2819ca artifact: a5497a032c user: dmestas
20:15 • Edit [cf5270b504]: Mark "Closed". artifact: 0e8506843e user: quarry
20:14
merge trunk: the room's InRoom and this branch's Losing both stay closed check-in: 14017b2778 user: dmestas tags: team-hands
20:13 • Edit [80556e1854]: Add "ci-pass" with value "f4eaf8e2b0635bb4c0720a8bde37abd6". artifact: 7c3de94374 user: quarry
20:13 • Post: A live bug, found while working out how an owner would supply their own runners. artifact: 43490c0a43 user: zeitgeist
20:13
name a pipeline for its repository, not just its file closed check-in: 80556e1854 user: dmestas tags: pipeline-names
20:11 • Edit [ceb8a5abbf]: Add "ci-pass" with value "e71b0bd4ef172eb425dc492ad050006e". artifact: 97a9b21e04 user: quarry
20:10 • Edit [d4020a0f33]: Add "ci-fail" with value "66de836ad79e9677299ec2d94dc3ff3d". artifact: 03748d6199 user: quarry
20:10
land stream-debt check-in: ceb8a5abbf user: dmestas tags: trunk
20:10 • Edit [ceb8a5abbf]: Add "landing" with value "1fd43b2b98137689507b6ae80398827d17e36b3715fb03069d18c9d147553d79". artifact: 2fc57c284d user: quarry
20:10 • Reply: docs: track what does not stream, and RFC 0018's two amendments. Rung 2 on team-room, because it edits the section that landing adds. Files ticket 82b9615eaf3d for four surfaces that do not stream — the team room, forum threads, ticket pages, a team's settings — and records it against RFC 0011, which owns the live model, as a debt rather than a decision. RFC 0018's status line now says which of its five features are built and names both post-acceptance amendments, so a reader of the original text is not misled. artifact: ed1235bb97 user: dmestas
20:10 • Edit [bf1737fdf9]: Mark "Closed". artifact: 04c62a78c0 user: quarry
20:10
land team-room check-in: d4020a0f33 user: dmestas tags: trunk
20:10 • Edit [d4020a0f33]: Add "landing" with value "d33d5b53017886bfc2cdcdf738113738651b706d345e6ef0d334ff181b6b33d2". artifact: 324039bc8b user: quarry
20:10 • Reply: teams: a room that gathers the rooms its repositories already have. RFC 0018's fourth of five. Nothing is copied — every stored message already names the repository it was posted in, so the merged room is a read across channels in one order (chat.MergeBack, a k-way backward merge with a per-channel cursor). DEVIATES from the RFC's schema: team_chat is not built. A team's own lines are a chat CHANNEL keyed team-NAME, because the plane already carries durability, streaming, purge, bounds, unread and the robot log, and SQLite would have given team lines none of them. RFC amended to say so. The reply rule is the design: a new line goes to the team, replying to a repository's line goes back to that repository gated on THAT repository's chat capability — which is what keeps this a second place to read rather than the second place to talk that GitHub retired. Gate is membership, deliberately coarse rather than filtered per repository. Not streaming yet, stated in the RFC rather than left to be discovered. addresses 8318bd2819ca artifact: a7c90d2e31 user: dmestas
20:10 • Edit [f25d790dae]: Mark "Closed". artifact: 28995861bc user: quarry
20:10 • Reply: docs: track what does not stream, and RFC 0018's two amendments. Rung 2 on team-room, because it edits the section that landing adds. Files ticket 82b9615eaf3d for four surfaces that do not stream — the team room, forum threads, ticket pages, a team's settings — and records it against RFC 0011, which owns the live model, as a debt rather than a decision. RFC 0018's status line now says which of its five features are built and names both post-acceptance amendments, so a reader of the original text is not misled. artifact: 49b1ed46e4 user: dmestas
19:50 • Edit [cf5270b504]: Add "ci-pass" with value "938b2e043895e96369ea1f8ae232f020". artifact: 400862abf4 user: quarry
19:49 • Post: teams: assignee is a folded column, and the board is ticket.across scoped to a team. RFC 0018's fifth feature, data layer and op; the page follows. assignee is not one of fossil's ten — a tracker defines its own columns — but the ticket table's own comment already settled this: keeping a field out of the summary means a board has to join per ticket, so no board exists. Additive migration beside type/severity/priority, folded from the same field map. BACKFILLED rather than left to a reindex, which is the usual path but wrong here: an empty assignee is indistinguishable from unassigned, so every ticket on an existing forge would read as unassigned and the board would look broken rather than unpopulated. team.tickets scopes across to the team and adds the assignee axis, with nobody last and pickable — which needed AssigneeSet beside Assignee, because filterable()'s rule is that empty means do-not-narrow and under it the unassigned column would be unaskable. Visibility is per REPOSITORY, not team membership: a board has no team-own content, so the gate is the one each repository already applies. addresses 8318bd2819ca artifact: 832a945dec user: dmestas
19:49
teams: assignee is a folded column, and the board is ticket.across scoped to a team closed check-in: cf5270b504 user: dmestas tags: team-board
19:40 • Edit [bf6938551b]: Add "ci-pass" with value "890ddda7593eb580f49e4315cb4c7225". artifact: df9c007294 user: quarry
19:39 • Post: teams: a repository changing hands tells the people it moved. account.caps raises RFC 0005's vocabulary and writes an inbox line when ONE account's access changes; the team path — which changes access for many at once, and on a private repository changes the whole of it — said nothing, on all three paths: add-as-move, remove, and dissolve (which does not go through remove). Fixed by reusing account.caps's own two functions per affected account, so a person reads the same words whichever way their access moved. Plus the warning at the right moment: RFC 0017 requires naming who loses access BEFORE the act, so team.get returns who would lose each repository and the Remove confirmation names them; the op's Warning says it after, which is the wrong moment for a control. The move stays allowed — whoever may add already holds a on the repository and may already remove it, so it grants no new authority; it just must not be quiet. Note: on a PUBLIC repository nothing is said, correctly — the categories already grant what the floor does, so no access moves. addresses 8318bd2819ca artifact: d153407aa6 user: dmestas
19:39
teams: a repository changing hands tells the people it moved check-in: bf6938551b user: dmestas tags: team-hands
19:24 • Post: docs: track what does not stream, and RFC 0018's two amendments. Rung 2 on team-room, because it edits the section that landing adds. Files ticket 82b9615eaf3d for four surfaces that do not stream — the team room, forum threads, ticket pages, a team's settings — and records it against RFC 0011, which owns the live model, as a debt rather than a decision. RFC 0018's status line now says which of its five features are built and names both post-acceptance amendments, so a reader of the original text is not misled. artifact: 1fd43b2b98 user: dmestas
19:24 • Edit [bf1737fdf9]: Add "ci-pass" with value "6fb0e5fdabbf14a563fb4ad4d232e82e". artifact: 82d57b44ee user: quarry
19:24
docs: track what does not stream, and RFC 0018's two amendments closed check-in: bf1737fdf9 user: dmestas tags: stream-debt
19:23 • New ticket [82b9615eaf] Four surfaces do not stream: the team room, forum threads, ticket pages, team settings. artifact: 254d4ab8ea user: dmestas
19:18 • Edit [f25d790dae]: Add "ci-pass" with value "a5c5299eb31c9684b2243bf2825582c8". artifact: c1657364de user: quarry
19:17 • Post: teams: a room that gathers the rooms its repositories already have. RFC 0018's fourth of five. Nothing is copied — every stored message already names the repository it was posted in, so the merged room is a read across channels in one order (chat.MergeBack, a k-way backward merge with a per-channel cursor). DEVIATES from the RFC's schema: team_chat is not built. A team's own lines are a chat CHANNEL keyed team-NAME, because the plane already carries durability, streaming, purge, bounds, unread and the robot log, and SQLite would have given team lines none of them. RFC amended to say so. The reply rule is the design: a new line goes to the team, replying to a repository's line goes back to that repository gated on THAT repository's chat capability — which is what keeps this a second place to read rather than the second place to talk that GitHub retired. Gate is membership, deliberately coarse rather than filtered per repository. Not streaming yet, stated in the RFC rather than left to be discovered. addresses 8318bd2819ca artifact: d33d5b5301 user: dmestas
19:17
teams: a room that gathers the rooms its repositories already have closed check-in: f25d790dae user: dmestas tags: team-room
19:11 • Edit [59b3d7748b]: Add "ci-pass" with value "b866a5852a23b656935865f20cdaa8bb". artifact: 7036f67c65 user: quarry
19:10
land forge-journal check-in: 59b3d7748b user: dmestas tags: trunk
19:10 • Edit [59b3d7748b]: Add "landing" with value "a0dec77fa6395598f9d5500577aa806f536f0508272c6d1937353e5c417b3c2d". artifact: a0dfcc5d58 user: quarry
19:10 • Reply: The half of the operator promise that can be kept today. artifact: 3f4a99c800 user: dmestas
19:10 • Edit [1916c526fe]: Mark "Closed". artifact: 3d3730797f user: quarry
19:08 • Edit [1916c526fe]: Add "ci-pass" with value "aeb2be1388068eed8360cfea7dbaf592". artifact: 0414ff2178 user: quarry
19:07 • Post: The half of the operator promise that can be kept today. artifact: a0dec77fa6 user: zeitgeist
19:07
an operator reaching into somebody's repository leaves a receipt they can read closed check-in: 1916c526fe user: dmestas tags: forge-journal
18:34 • Edit [ddf544308c]: Add "ci-pass" with value "142d90a78ed5c2809ec658495d010b19". artifact: 24335e9e46 user: quarry
18:33 • Edit [7d6d584d58]: Add "ci-fail" with value "25e3264d914e64fb9f501831efd6c572". artifact: 6e841258b4 user: quarry
18:33 • Edit [ddf544308c]: Add "landing" with value "336bedde19b08b72cf02d8206a549a096e548219d023f7afa8c7507d5c970b18". artifact: af5a9fe572 user: quarry
18:33 • Reply: pkgsrc is owned by dmestas and still appears under zeitgeist. Re-running the hand-over did not fix it, which is how I found that the repair states the wrong thing. artifact: bfeecf9f54 user: dmestas
18:33
land ns-invariant check-in: ddf544308c user: dmestas tags: trunk
18:33 • Edit [c1c2b51389]: Mark "Closed". artifact: ef57bc83b4 user: quarry
18:32 • Closed ticket [085786dd87]: The Reader preset grants wiki and ticket editing plus 2 other changes artifact: aa55516458 user: dmestas
18:32 • Edit [ab7ee6b9ae]: Mark "Closed". artifact: 71d09ab7b2 user: quarry
18:32
land reader-reads check-in: 7d6d584d58 user: dmestas tags: trunk
18:32 • Edit [7d6d584d58]: Add "landing" with value "c6fd62c989d0ad3168bb2d3146d96ac92dd95167678957a3cb0408c55a9287f2". artifact: a9f7ad758a user: quarry
18:32 • Reply: Reader reads. The preset was u3bBC78, and the u expanded through fossil's shipped reader category kptw — so granting 'reads, asks, discusses' handed over wiki editing and ticket editing, and the admin granting it could not see that happen. Reader now spells its letters out. Three decisions recorded because each could look like an oversight: p is KEPT (quarry made it the signed-in marker on four cross-repo ops including me.feed, so dropping it with the category would have taken the API dashboard from every Reader); c without n (comment on a ticket, do not mint one — narrower than fossil's own anonymous category, per RFC 0017); Developer and Maintainer keep u, so a repository that widens its reader category still reaches the roles meant to grow with it. The category mechanism is untouched. The durable half is disclosure: the person editor now lists what an account holds that its string does not say, because a hand-written u will always carry this surprise. No migration — production holds no Reader grants, so nobody loses access. RFC 0008 amended; the now-stale reasoning in RFC 0018 and teamFloor corrected. closes 085786dd870e artifact: d0c5c65bac user: dmestas
17:55 • Edit [c1c2b51389]: Add "ci-pass" with value "97b669d7612db5c30da51733d5d2dd4a". artifact: d1fe1d2332 user: quarry
17:54 • Edit [ab7ee6b9ae]: Add "ci-pass" with value "22b3bd38539c9dc3514be93c1e8aef39". artifact: f06bb7566e user: quarry
17:54 • Post: pkgsrc is owned by dmestas and still appears under zeitgeist. Re-running the hand-over did not fix it, which is how I found that the repair states the wrong thing. artifact: 336bedde19 user: zeitgeist
17:54
a namespace is the team or the owner, and the repair says so closed check-in: c1c2b51389 user: dmestas tags: ns-invariant
17:54 • Post: Reader reads. The preset was u3bBC78, and the u expanded through fossil's shipped reader category kptw — so granting 'reads, asks, discusses' handed over wiki editing and ticket editing, and the admin granting it could not see that happen. Reader now spells its letters out. Three decisions recorded because each could look like an oversight: p is KEPT (quarry made it the signed-in marker on four cross-repo ops including me.feed, so dropping it with the category would have taken the API dashboard from every Reader); c without n (comment on a ticket, do not mint one — narrower than fossil's own anonymous category, per RFC 0017); Developer and Maintainer keep u, so a repository that widens its reader category still reaches the roles meant to grow with it. The category mechanism is untouched. The durable half is disclosure: the person editor now lists what an account holds that its string does not say, because a hand-written u will always carry this surprise. No migration — production holds no Reader grants, so nobody loses access. RFC 0008 amended; the now-stale reasoning in RFC 0018 and teamFloor corrected. closes 085786dd870e artifact: c6fd62c989 user: dmestas
17:53
Reader reads: the preset spells its letters out instead of expanding a category closed check-in: ab7ee6b9ae user: dmestas tags: reader-reads
17:49 • Edit [76346b858f]: Add "ci-pass" with value "5c9fa238b56b1aedb8da55cde7f4fbfc". artifact: 2ea9a20417 user: quarry
17:49
land namespaced-paths check-in: 76346b858f user: dmestas tags: trunk
17:49 • Edit [76346b858f]: Add "landing" with value "9999b9ea7b858316be428733da3e5e491a8e8c9fc4110dbe56ab22e3f8bce710". artifact: 156994d492 user: quarry
17:49 • Reply: Namespaced paths. A repository is now reachable at /r/{namespace}/{repo}, and the flat path sends you to wherever it appears. artifact: 99f6dd08da user: dmestas
17:49 • Edit [5a6ddf5d37]: Mark "Closed". artifact: 123d176769 user: quarry
17:49 • Edit [5a6ddf5d37]: Add "ci-pass" with value "11dfd6109c0258e4390028277053ed2b". artifact: 94a262766e user: quarry
17:48 • Post: Namespaced paths. A repository is now reachable at /r/{namespace}/{repo}, and the flat path sends you to wherever it appears. artifact: 9999b9ea7b user: zeitgeist
17:48
a repository can be reached where it appears closed check-in: 5a6ddf5d37 user: dmestas tags: namespaced-paths
17:34 • Edit [46573697cc]: Add "ci-pass" with value "2fb37aaa889b4d6fa7fc9a51b23f189e". artifact: 4e33cff511 user: quarry
17:33 • Edit [30c69bd096]: Add "ci-pass" with value "43cf58db44faec030086d4a154382f90". artifact: 6146a0140b user: quarry
17:33
land team-bounded check-in: 46573697cc user: dmestas tags: trunk
17:33 • Edit [46573697cc]: Add "landing" with value "911e6784ba83ea30e548e681b23b8b8a03feaac3d8add2ebf1fe471d6229eea1". artifact: 33b68ee754 user: quarry
17:33 • Reply: teams: bound every list, and make the three name pools disjoint. Two things. (1) All four team surfaces were unbounded. The People screen is fixed in SQL rather than with a pager — it returns everybody who reaches any of the team's repositories, so the cost grew with accounts AND repositories at once, and a pager would have bounded rendering and not work. The other three take windows. Three of my own count-vs-list bugs fixed on the way: Owners was counted from the page (a safety control correct only by coincidence of sort order), the Teams badge read len() of a window, and a filtered listing reported the forge's total. (2) AddTeam and AddAccount now refuse a name a repository holds, so the account/team/repository pools are disjoint at the top path segment — without it, creating a team re-points somebody else's existing URL once namespaced paths land, and team creation is an ordinary user action. Found by the session doing namespaced paths. addresses 8318bd2819ca artifact: 5e47390e69 user: dmestas
17:33 • Edit [edc233d0a5]: Mark "Closed". artifact: 4a7cb5c855 user: quarry
17:32
land ns-follows-deed check-in: 30c69bd096 user: dmestas tags: trunk
17:32 • Edit [30c69bd096]: Add "landing" with value "84985351ffe764bee5db28270ff5047ee8ad848ac3a434c452715c261da27d94". artifact: 87dcf5a146 user: quarry
17:32 • Reply: Found by using the op I landed an hour ago rather than by reading it. artifact: 52f858d1c7 user: dmestas
17:32 • Edit [b0bea39795]: Mark "Closed". artifact: 9f09b28274 user: quarry
17:28 • Edit [b0bea39795]: Add "ci-pass" with value "7a852ca87d741ffaca7a2a2c35331908". artifact: 7094168a93 user: quarry
17:27 • Post: Found by using the op I landed an hour ago rather than by reading it. artifact: 84985351ff user: zeitgeist
17:27
a personal namespace follows the deed; a team's does not closed check-in: b0bea39795 user: dmestas tags: ns-follows-deed
17:25 • Edit [edc233d0a5]: Add "ci-pass" with value "44c7cb8e0b787a1b5ba4a6d649e48068". artifact: 6521cebc52 user: quarry
17:24 • Post: teams: bound every list, and make the three name pools disjoint. Two things. (1) All four team surfaces were unbounded. The People screen is fixed in SQL rather than with a pager — it returns everybody who reaches any of the team's repositories, so the cost grew with accounts AND repositories at once, and a pager would have bounded rendering and not work. The other three take windows. Three of my own count-vs-list bugs fixed on the way: Owners was counted from the page (a safety control correct only by coincidence of sort order), the Teams badge read len() of a window, and a filtered listing reported the forge's total. (2) AddTeam and AddAccount now refuse a name a repository holds, so the account/team/repository pools are disjoint at the top path segment — without it, creating a team re-points somebody else's existing URL once namespaced paths land, and team creation is an ordinary user action. Found by the session doing namespaced paths. addresses 8318bd2819ca artifact: 911e6784ba user: dmestas
17:24
teams: bound every list, and make the three name pools disjoint closed check-in: edc233d0a5 user: dmestas tags: team-bounded
17:22 • Edit [b7b9ca4f39]: Add "ci-pass" with value "1d8670f41ad57f938d480c5b6e2a0db3". artifact: 1141b513b6 user: quarry
17:21
land hand-on-the-deed check-in: b7b9ca4f39 user: dmestas tags: trunk
17:21 • Edit [b7b9ca4f39]: Add "landing" with value "1522dec74133d82034153e1eb64e9d1c5e848a6a2f12037f2484a8b369ab09a7". artifact: f3aa8fdf63 user: quarry
17:21 • Reply: The transfer this build can honestly express, so a repository can change hands without editing the database by hand. artifact: f31e9ee04e user: dmestas
17:21 • Edit [10eee2beaf]: Mark "Closed". artifact: 7f27148578 user: quarry
17:21 • Edit [10eee2beaf]: Add "ci-pass" with value "6c01f54fd3ccded8915f8630364d175b". artifact: 3e06cf1ec2 user: quarry
17:20 • Post: The transfer this build can honestly express, so a repository can change hands without editing the database by hand. artifact: 1522dec741 user: zeitgeist
17:20
hand on a repository you hold, to somebody who already administers it closed check-in: 10eee2beaf user: dmestas tags: hand-on-the-deed
17:06 • Edit [c54d523283]: Add "ci-pass" with value "258eb90d7e01fd6b1460c4d4186cff45". artifact: e1e3d34b00 user: quarry
17:05 • Edit [323112d11f]: Add "ci-pass" with value "fa24aeded26464a148c531ae0ce88505". artifact: ea98527f29 user: quarry
17:05
land team-repos-ui check-in: c54d523283 user: dmestas tags: trunk
17:05 • Edit [c54d523283]: Add "landing" with value "c9009cae0660d7d4620a6254b12d407c2108ee4a1e9844ff331f2bc54ccbc891". artifact: 85ca8eda89 user: quarry
17:05 • Reply: teams: put a repository under a team from the web, and rename one. Until now a team could only be given a repository over the API, which made the whole feature inert: the membership floor, the People screen and the aggregation all only do something once a team holds one. The candidate list comes from team.get, not the page — the gate is the admin letter on that REPOSITORY, never the team, and a page that answered a friendlier question would render the escalation as a menu item. addresses 8318bd2819ca artifact: 01e5ac3fba user: dmestas
17:05 • Edit [cadba9f681]: Mark "Closed". artifact: 233651cc5e user: quarry
17:05
land deed-gates-delete check-in: 323112d11f user: dmestas tags: trunk
17:05 • Edit [323112d11f]: Add "landing" with value "20a7e0104b30ff94c2244d8620dd5a2cbdbc5c1fc157bff22147f268fb7f1e4a". artifact: b5fe6282ef user: quarry
17:05 • Reply: The deed starts authorising something. Until now repo.owner was recorded, populated and read in exactly one place -- the claim op -- and gated nothing. artifact: a3a34b6803 user: dmestas
17:05 • Edit [63053ac057]: Mark "Closed". artifact: d5863fa8d5 user: quarry
17:03 • Edit [63053ac057]: Add "ci-pass" with value "cfc18697162c5a2ec248e302bb0cc38f". artifact: 8f68782856 user: quarry
17:02 • Post: The deed starts authorising something. Until now repo.owner was recorded, populated and read in exactly one place -- the claim op -- and gated nothing. artifact: 20a7e0104b user: zeitgeist
17:02
destroying a repository belongs to the deed, not the role closed check-in: 63053ac057 user: dmestas tags: deed-gates-delete
17:00 • Edit [cadba9f681]: Add "ci-pass" with value "8846a5a4a34b3e086ed4a45605a834d2". artifact: 9e2ec2025a user: quarry
16:59 Note: Ownership: the deed, the namespace and the letters technote: [99b48223e8] user: zeitgeist
16:59
teams: the add list comes from the caller's grants, not the forge closed check-in: cadba9f681 user: dmestas tags: team-repos-ui
16:28 • Edit [8a9730c15f]: Add "ci-pass" with value "23e6345aaa094ce9be946243b9216a4e". artifact: ba0b90304d user: quarry
16:28 • Post: teams: put a repository under a team from the web, and rename one. Until now a team could only be given a repository over the API, which made the whole feature inert: the membership floor, the People screen and the aggregation all only do something once a team holds one. The candidate list comes from team.get, not the page — the gate is the admin letter on that REPOSITORY, never the team, and a page that answered a friendlier question would render the escalation as a menu item. addresses 8318bd2819ca artifact: c9009cae06 user: dmestas
16:27
teams: put a repository under a team from the web, and rename one check-in: 8a9730c15f user: dmestas tags: team-repos-ui
16:11 • Edit [25fb4e4990]: Add "ci-pass" with value "68b3d90904bdab919f1bfbc214b4b5e6". artifact: 62017eb785 user: quarry
16:09 • Edit [4ef1bcf788]: Add "ci-fail" with value "d208ed31d49e69f81276f044f935639f". artifact: 1d89a71cb7 user: quarry
16:09
land absent-means-keep check-in: 25fb4e4990 user: dmestas tags: trunk
16:09 • Edit [25fb4e4990]: Add "landing" with value "527f1dc6537cd03d03ca0dea4116c9612b5540cc4e4832e03c081903a8e56563". artifact: 4bab271c72 user: quarry
16:09 • Reply: team.member: an omitted field keeps what the member had. Two members added over the API landed silently unlisted because validate:"default=1" is unreachable for a bool and for a JSON body; the same shape in `owner` demoted an existing owner on any caps change. Found on production by another session. addresses 8318bd2819ca artifact: f63713efa0 user: dmestas
16:09 • Edit [7cde6433ab]: Mark "Closed". artifact: 45bdb4933a user: quarry
16:09 • Edit [1070ab12a2]: Add "ci-pass" with value "7d4b886270098251548a2d4c8ee3d9b0". artifact: 32dfac6aef user: quarry
16:09
land me-page-phone check-in: 4ef1bcf788 user: dmestas tags: trunk
16:09 • Edit [4ef1bcf788]: Add "landing" with value "1d3ba13cb1eacd41ccd094bfb5071e1185d0a068d13d37b3f69b0a7f2b7452f7". artifact: 76a57a0cee user: quarry
16:09 • Reply: /me on a phone: Sign out rendered one letter per line and the stacked card was 232px wide inside a 584px wrapper. Both were CSS specificity, neither was visible to a test. Also styles the push control and names its devices. artifact: b8e46a5738 user: dmestas
16:09 • Edit [a937cc7607]: Mark "Closed". artifact: ff56d222d0 user: quarry
16:09
land repo-url-helper check-in: 1070ab12a2 user: dmestas tags: trunk
16:09 • Edit [1070ab12a2]: Add "landing" with value "9ba29619e726fd2d3aaf7fe2ef4684546fb76ad1f70f9fd39d469551ab752c58". artifact: 33a9fc0fa8 user: quarry
16:09 • Reply: The prerequisite for namespaced paths. No URL changes; this only moves where they are built. artifact: de2613b1c1 user: dmestas
16:09 • Edit [fa08f1c11e]: Mark "Closed". artifact: 4f90ecaf5d user: quarry
15:37 • Edit [fa08f1c11e]: Add "ci-pass" with value "d71edabefd16d4b4b62b1fbe3159dfb9". artifact: a6507aaf73 user: quarry
15:36 • Post: The prerequisite for namespaced paths. No URL changes; this only moves where they are built. artifact: 9ba29619e7 user: zeitgeist
15:36
build a repository URL in one place instead of 316 closed check-in: fa08f1c11e user: dmestas tags: repo-url-helper
15:32 • Post: team.member: an omitted field keeps what the member had. Two members added over the API landed silently unlisted because validate:"default=1" is unreachable for a bool and for a JSON body; the same shape in `owner` demoted an existing owner on any caps change. Found on production by another session. addresses 8318bd2819ca artifact: 527f1dc653 user: dmestas
15:32 • Edit [7cde6433ab]: Edit check-in comment. artifact: 2658b39d3f user: dmestas
15:31 • New ticket [9e71cc1513] validate default= is published in op docs but never applied to a JSON body. artifact: 8b6b8ac5ec user: zeitgeist
15:31 • Edit [7cde6433ab]: Add "ci-pass" with value "dcf372ba1dc80a0f8e443c488932a09e". artifact: 42ef3a256e user: quarry
15:30
team.member: an omitted field keeps what the member had closed check-in: 7cde6433ab user: dmestas tags: absent-means-keep
15:25 • Edit [a937cc7607]: Add "ci-pass" with value "960916085d24ef25582da26cbd7df31e". artifact: 23ce0977a3 user: quarry
15:24 • Post: /me on a phone: Sign out rendered one letter per line and the stacked card was 232px wide inside a 584px wrapper. Both were CSS specificity, neither was visible to a test. Also styles the push control and names its devices. artifact: 1d3ba13cb1 user: dmestas
15:23
/me on a phone: the stacked sessions table, and the push control closed check-in: a937cc7607 user: dmestas tags: me-page-phone
15:22 • Edit [5849ea2569]: Add "ci-pass" with value "4c06407f778df69b5b27fcecdbbb04fa". artifact: 4eb1ef4abc user: quarry
15:21
land private-visible check-in: 641b1bdc40 user: dmestas tags: trunk
15:21 • Edit [641b1bdc40]: Add "landing" with value "6804d1e893dc1fcb2cec57882cd987f4c01211575912c87255d7b9bd25e923d4". artifact: 46e77ef812 user: quarry
15:21 • Reply: A private repository was invisible to its own owner on the web. Followed a link from the dashboard to /r/orchard and got 404. artifact: d60d3723f3 user: dmestas
15:21 • Edit [72b757fd97]: Mark "Closed". artifact: 7fa7796a21 user: quarry
15:21
Create new branch named "me-page-phone" check-in: 5849ea2569 user: dmestas tags: me-page-phone
15:19 • Edit [72b757fd97]: Add "ci-pass" with value "845e9706ef944f6c44c0681ec8f43b95". artifact: adce4be96a user: quarry
15:18 • Post: A private repository was invisible to its own owner on the web. Followed a link from the dashboard to /r/orchard and got 404. artifact: 6804d1e893 user: zeitgeist
15:18
name the reader to the ops layer so a private repository reaches its owner closed check-in: 72b757fd97 user: dmestas tags: private-visible
15:07 • Edit [1c733f091f]: Add "ci-pass" with value "9be7843323dd05a6a0ec67f83183c174". artifact: b1ac3f5245 user: quarry
15:06 • Edit [6a456b2394]: Add "ci-fail" with value "61bb162360d03444cdf0d5ab797ff584". artifact: 68f77df5a3 user: quarry
15:06
land rfc0018-namespace check-in: 1c733f091f user: dmestas tags: trunk
15:06 • Edit [1c733f091f]: Add "landing" with value "470ad9319a583877c2d9d52f5504979b3f8a72f91e3bfdcf1c739f1d056a9cb6". artifact: b97863df52 user: quarry
15:06 • Reply: RFC 0018 amendment: team_repo decides the path segment. Written against landing f7b186462ba9 (namespace-follows). addresses 8318bd2819ca artifact: 05f64daca1 user: dmestas
15:06 • Edit [929fca717c]: Mark "Closed". artifact: f42cdb9a0d user: quarry
15:06 • Edit [a474147f42]: Add "ci-fail" with value "e4d6b09bbaae95f106d04360d3e2c285". artifact: f636e1cacd user: quarry
15:06
land team-reach check-in: 6a456b2394 user: dmestas tags: trunk
15:06 • Edit [6a456b2394]: Add "landing" with value "4c16dd0097016f3462773a24d883946fbffc5b4e96c8f2e7d0752eee6cfdac98". artifact: 408abef497 user: quarry
15:06 • Reply: teams reach the dashboard and person pages artifact: 9113353156 user: dmestas
15:06 • Edit [4c48d95533]: Mark "Closed". artifact: cfc07d5e8b user: quarry
15:06
land namespace-follows check-in: a474147f42 user: dmestas tags: trunk
15:06 • Edit [a474147f42]: Add "landing" with value "f7b186462ba92599e495d8d8a62e610fc39dc798fa53cd9f8ff3616e4f299184". artifact: c5e0acd492 user: quarry
15:06 • Reply: A gap between the ownership slice and the teams slice, found by the session building teams and fixed here because it is mine. artifact: 677a2d9411 user: dmestas
15:06 • Edit [a17ab07edf]: Mark "Closed". artifact: 03a336aba4 user: quarry
14:14 • Edit [4c48d95533]: Add "ci-pass" with value "20d12fd4f86f62ff5eb7ae054e7e016c". artifact: ded152ebc8 user: quarry
14:13
teams: note why the member list carries no count closed check-in: 4c48d95533 user: dmestas tags: team-reach
13:25 • Edit [3cfff0bdfd]: Add "ci-pass" with value "6735dfbef225e25e1946b8197ef67f86". artifact: cf2b9bf7c5 user: quarry
13:24
teams: a member count describes the list beside it check-in: 3cfff0bdfd user: dmestas tags: team-reach
13:18 • Edit [929fca717c]: Add "ci-pass" with value "c996e1a969cff360b733bd0657e9320f". artifact: 93415caa83 user: quarry
13:18
RFC 0018: a placement record exists exactly when somebody placed it closed check-in: 929fca717c user: dmestas tags: rfc0018-namespace
13:18 • Edit [a17ab07edf]: Add "ci-pass" with value "a254d02d0dab10420e8545becee3dbe5". artifact: 0328d266cb user: quarry
13:17 • Reply: A gap between the ownership slice and the teams slice, found by the session building teams and fixed here because it is mine. artifact: b746dc3cd0 user: zeitgeist
13:17
dissolving a team returns its repositories to their owners closed check-in: a17ab07edf user: dmestas tags: namespace-follows
13:11 • Edit [3496d5b074]: Add "ci-pass" with value "16bb821c7e975e2dfd4fc34ffcc47da9". artifact: 000a7d8b90 user: quarry
13:11 • Post: RFC 0018 amendment: team_repo decides the path segment. Written against landing f7b186462ba9 (namespace-follows). addresses 8318bd2819ca artifact: 470ad9319a user: dmestas
13:11
RFC 0018: team_repo decides the path segment check-in: 3496d5b074 user: dmestas tags: rfc0018-namespace
13:11 • Edit [25989b738a]: Add "ci-pass" with value "83da55d028d878e745fb66555b091397". artifact: 4fb2f668fb user: quarry
13:11
Create new branch named "rfc0018-namespace" check-in: 25989b738a user: dmestas tags: rfc0018-namespace
13:10 • Edit [3b0a50a804]: Add "ci-pass" with value "b30d7164d573cf975003868392b4e5cd". artifact: 814aa28ec6 user: quarry
13:09 • Post: A gap between the ownership slice and the teams slice, found by the session building teams and fixed here because it is mine. artifact: f7b186462b user: zeitgeist
13:09
the path segment follows the team that holds the repository check-in: 3b0a50a804 user: dmestas tags: namespace-follows
13:02 • Edit [a06c187310]: Add "ci-pass" with value "455c826998c2c3edeba835bbbb420dc0". artifact: e8935d567b user: quarry
13:02
land xfer-log check-in: a06c187310 user: dmestas tags: trunk
13:02 • Edit [a06c187310]: Add "landing" with value "b5bbe14c32a99de6439c5d32f9e04382b850e65d762a030b14a2c987b65cccf5". artifact: 9dea84adad user: quarry
13:02 • Reply: A one-line follow-up to sync-starting, found by watching it work. artifact: 8de05bda5b user: dmestas
13:02 • Edit [8988353a3c]: Mark "Closed". artifact: 178a838a2b user: quarry
12:57 • Edit [5e3704174c]: Add "ci-pass" with value "8d2a42f78728ba795a9c87adf97955a2". artifact: 3d8953618d user: quarry
12:56 • Post: teams reach the dashboard and person pages artifact: 4c16dd0097 user: dmestas
12:56
teams reach the dashboard and person pages check-in: 5e3704174c user: dmestas tags: team-reach
12:49 • Edit [8988353a3c]: Add "ci-pass" with value "e585de266ca5f484bf5bfe2855ed68b9". artifact: 53933cdc45 user: quarry
12:48 • Post: A one-line follow-up to sync-starting, found by watching it work. artifact: b5bbe14c32 user: zeitgeist
12:48
log what the sync client was told, not what it was not closed check-in: 8988353a3c user: dmestas tags: xfer-log
12:47 • Edit [cbaa499852]: Add "ci-pass" with value "9079fc25eb3e260b3f96904f0cb28534". artifact: ca5724d334 user: quarry
12:47
Create new branch named "team-reach" check-in: cbaa499852 user: dmestas tags: team-reach
12:44 • Edit [5ce2d12264]: Add "ci-pass" with value "23c26038497f6c171a9dac092cfedd38". artifact: a3baa91466 user: quarry
12:44
land sync-starting check-in: 5ce2d12264 user: dmestas tags: trunk
12:44 • Edit [5ce2d12264]: Add "landing" with value "a017905875ea46ecdc73ba0c1f51cf6c0e5a2a411ae7d477f80183a785fd6b73". artifact: 27fca1eccc user: quarry
12:44 • Reply: The last of the three defects from the stuck-landing incident. artifact: 7ea0be6ecc user: dmestas
12:44 • Edit [f777b136a3]: Mark "Closed". artifact: adbacbb378 user: quarry
12:41 • Edit [f777b136a3]: Add "ci-pass" with value "43438f7656f55f31de1e62ef3936c769". artifact: fdf3632bec user: quarry
12:40 • Post: The last of the three defects from the stuck-landing incident. artifact: a017905875 user: zeitgeist
12:40
a sync during startup says starting, not missing closed check-in: f777b136a3 user: dmestas tags: sync-starting
12:37 • Edit [0bed40e20a]: Add "ci-pass" with value "21874d34f0302434eed208dca8f9bce8". artifact: 629e09f420 user: quarry
12:36 • Edit [36c9e3a04d]: Add "ci-fail" with value "584e67d7471b47fe33cf390672bc7c62". artifact: 1bbdeacf36 user: quarry
12:35
land team-people check-in: 0bed40e20a user: dmestas tags: trunk
12:35 • Edit [0bed40e20a]: Add "landing" with value "56f2ed99eaf77f329a2d203047495203a5a0de68565205a6452591e0dac23761". artifact: b3885cbe2c user: quarry
12:35 • Reply: teams: the People screen. addresses 8318bd2819ca artifact: d2b2fc70f5 user: dmestas
12:35 • Edit [ed8bd760b0]: Mark "Closed". artifact: 0e27d7257f user: quarry
12:35
land landing-retarget check-in: 36c9e3a04d user: dmestas tags: trunk
12:35 • Edit [36c9e3a04d]: Add "landing" with value "2b4d8273c9fc87d97053264712cf75479fe330326fe4473a8c53b5c56aec6933". artifact: e0b2ceba79 user: quarry
12:35 • Reply: The other half of last night's stuck landing: a way to act on the instruction. artifact: 98abda8d62 user: dmestas
12:35 • Edit [c744e569af]: Mark "Closed". artifact: 88b91b454a user: quarry
12:16 • Edit [c744e569af]: Add "ci-pass" with value "a9324d0348492aa7aeb9083493b08867". artifact: 696d7209a0 user: quarry
12:13 • Edit [ed8bd760b0]: Add "ci-pass" with value "9df5e0656885fd065bfed358e4b861ef". artifact: f4ebb05cb5 user: quarry
12:13 • Post: The other half of last night's stuck landing: a way to act on the instruction. artifact: 2b4d8273c9 user: zeitgeist
12:13
retarget an open landing from the forge, not only from a shell closed check-in: c744e569af user: dmestas tags: landing-retarget
12:12 • Edit [b86f7db053]: Add "ci-fail" with value "4cc0eac049f31ec925d0258750340c14". artifact: c5705e1978 user: quarry
12:12 • Post: teams: the People screen. addresses 8318bd2819ca artifact: 56f2ed99ea user: dmestas
12:12
teams: the People screen — everyone who reaches the team repositories, and how closed check-in: ed8bd760b0 user: dmestas tags: team-people
12:04
Create new branch named "team-people" check-in: b86f7db053 user: dmestas tags: team-people
12:03 • Edit [ac183d3748]: Add "ci-pass" with value "a74361537835379eb51ec5a0610981fc". artifact: 20cd2d9bad user: quarry
12:03
land refusal-text check-in: ac183d3748 user: dmestas tags: trunk
12:03 • Edit [ac183d3748]: Add "landing" with value "b1823e9437e00263ae1b4d4d72d7127ac075a633143d9e362e01e9902331ef95". artifact: 2d8c33b787 user: quarry
12:03 • Reply: When an op refuses, show what it said. artifact: 381b6c7881 user: dmestas
12:03 • Edit [943c246591]: Mark "Closed". artifact: 1ac4eaf863 user: quarry
01:33 • Edit [943c246591]: Add "ci-pass" with value "e54c992d4509cccb998e8169d1f59b01". artifact: cbbb163796 user: quarry
01:32 • Post: When an op refuses, show what it said. artifact: b1823e9437 user: zeitgeist
01:30
show an op's refusal instead of a blank apology closed check-in: 943c246591 user: dmestas tags: refusal-text
01:28 • Edit [92240303b4]: Add "ci-pass" with value "128a7bc0491de539054c10bf1ba3c706". artifact: 78075a10af user: quarry
01:26
land team-routes-2 check-in: 92240303b4 user: dmestas tags: trunk
01:26 • Edit [92240303b4]: Add "landing" with value "63f3a7ba5c18abc010007b5c03c5b18d636ca2423961d658fc6397f818c2b0d0". artifact: 94449dd956 user: quarry
01:26 • Reply: settings: the People section names the team route instead of hiding it. addresses 8318bd2819ca artifact: 9c874314e5 user: dmestas
01:26 • Edit [4de2442657]: Mark "Closed". artifact: 2de9fddf20 user: quarry
01:26 • Reply: settings: the People section names the team route instead of hiding it. addresses 8318bd2819ca artifact: 49b83b1503 user: zeitgeist
01:22 • Edit [ff5e45a2be]: Add "ci-pass" with value "0c6fb47c32333fb3c80126069e726006". artifact: 871e185010 user: quarry
01:22
land repo-claim check-in: ff5e45a2be user: dmestas tags: trunk
01:22 • Edit [ff5e45a2be]: Add "landing" with value "c23fb96ab5374014f7d4c574efbcb45e4c0198fb2bdd6518295c7699b379a2d5". artifact: 99c5d7a0ee user: quarry
01:22 • Reply: How a forge-held repository acquires an owner, and a correction to the backfill that shipped with repo-owner. artifact: 93f9aad1c1 user: dmestas
01:22 • Edit [2563163751]: Mark "Closed". artifact: 84163a008f user: quarry
01:20 • Edit [2563163751]: Add "ci-pass" with value "e8982fcfdcbfdea218e2e82fd32b11ce". artifact: e270b9b095 user: quarry
01:20 • Post: How a forge-held repository acquires an owner, and a correction to the backfill that shipped with repo-owner. artifact: c23fb96ab5 user: zeitgeist
01:19
claim a forge-held repository; mirrors stay forge-held closed check-in: 2563163751 user: dmestas tags: repo-claim
01:18 • Edit [4de2442657]: Add "ci-pass" with value "193b80927ded7d896ec82cfc4b12a92b". artifact: 0d1231e320 user: quarry
01:17 • Post: settings: the People section names the team route instead of hiding it. addresses 8318bd2819ca artifact: 63f3a7ba5c user: dmestas
01:17
settings: the People section names the team route instead of hiding it closed check-in: 4de2442657 user: dmestas tags: team-routes-2
01:14 • Edit [4d513982bb]: Add "ci-pass" with value "43c3cf38733a0d81399b7f81f8cfac54". artifact: c179a4a2bb user: quarry
01:13
Create new branch named "team-routes-2" check-in: 4d513982bb user: dmestas tags: team-routes-2
01:13 • Edit [c7d459755f]: Mark "Closed". artifact: cf37887069 user: dmestas
01:12 • Edit [584d505014]: Add "ci-pass" with value "3def8fe1b0b8728455ac91717b920684". artifact: a936663e13 user: quarry
01:11 • Edit [d3ff3b15c7]: Add "ci-fail" with value "fdcfa09430b4649d135736a2764d2356". artifact: a290858f30 user: quarry
01:11
land repo-owner check-in: 584d505014 user: dmestas tags: trunk
01:11 • Edit [584d505014]: Add "landing" with value "24b436e5e3740ef28a7e64e0b71a3eb0fc90de1273e55ede7380d3376b0a39b2". artifact: ef045e5f87 user: quarry
01:11 • Reply: The prerequisite for namespaced paths: ownership becomes a stored fact instead of something inferred from who happens to hold the `a` letter. artifact: 23bf0fcaf8 user: dmestas
01:11 • Edit [37653b4097]: Mark "Closed". artifact: 421bda54b4 user: quarry
01:11
land teams-pages check-in: d3ff3b15c7 user: dmestas tags: trunk
01:11 • Edit [d3ff3b15c7]: Add "landing" with value "117c9f03fb9240d382eacd443d45ac4c4e9939f9a9be43f77a0272de25c75bcf". artifact: 9e390a2b98 user: quarry
01:11 • Reply: teams: the public directory, one team page, and the third explore tab. addresses 8318bd2819ca artifact: 78909bb301 user: dmestas
01:11 • Edit [97ea1d1917]: Mark "Closed". artifact: 462d85e655 user: quarry
01:10 • Edit [c7d459755f]: Add "ci-pass" with value "0be54c30284038e67ffba18af566cedc". artifact: f03eee99d3 user: quarry
01:10
Create new branch named "team-routes" closed check-in: c7d459755f user: dmestas tags: team-routes
00:44 • Edit [37653b4097]: Add "ci-pass" with value "30bb4f07c6bc88c3f15ac2390c2c109c". artifact: 9b1c7bf5db user: quarry
00:43 • Post: The prerequisite for namespaced paths: ownership becomes a stored fact instead of something inferred from who happens to hold the `a` letter. artifact: 24b436e5e3 user: zeitgeist
00:43
record the repository deed and namespace as stored columns closed check-in: 37653b4097 user: dmestas tags: repo-owner
00:41 • Edit [97ea1d1917]: Add "ci-pass" with value "a9ee29338606b72fa4ceb8cb077646ce". artifact: 15b94f1c4a user: quarry
00:40 • Post: teams: the public directory, one team page, and the third explore tab. addresses 8318bd2819ca artifact: 117c9f03fb user: dmestas
00:40
teams: the public directory, one team page, and the third explore tab closed check-in: 97ea1d1917 user: dmestas tags: teams-pages
00:32 • Edit [e948a53a3c]: Add "ci-pass" with value "b949589323400f4d21b3c560a5d8f87e". artifact: 985eb70d3b user: quarry
00:32
Create new branch named "teams-pages" check-in: e948a53a3c user: dmestas tags: teams-pages
00:28 • Edit [d8137c2421]: Add "ci-pass" with value "21290f135692e868b8f1273b57b9b4b1". artifact: 12ab63c5be user: quarry
00:27 • Edit [d8137c2421]: Add "landing" with value "88d0a0dcf8fb1afd72f34b28c2df42b1344ae32dfb887e65aa44cc244f3e26f0". artifact: 54f59fa341 user: quarry
00:27 • Reply: teams: a single-team read fills its counts instead of leaving them zero. addresses 8318bd2819ca artifact: 166219b5db user: dmestas
00:27 • Edit [fc63cfbf44]: Mark "Closed". artifact: 98c869fa63 user: quarry
00:27
land team-counts check-in: d8137c2421 user: dmestas tags: trunk
00:27 • Edit [d8137c2421]: Add "landing" with value "88d0a0dcf8fb1afd72f34b28c2df42b1344ae32dfb887e65aa44cc244f3e26f0". artifact: b1bd8e9345 user: quarry
00:27 • Reply: teams: a single-team read fills its counts instead of leaving them zero. addresses 8318bd2819ca artifact: 37cf64333b user: dmestas
00:27 • Edit [fc63cfbf44]: Mark "Closed". artifact: 1c8a16b99f user: quarry
00:27 • Edit [fc63cfbf44]: Add "ci-pass" with value "5a44cbb62b0253201b59d218cebffc76". artifact: 174073aa74 user: quarry
00:26 • Post: teams: a single-team read fills its counts instead of leaving them zero. addresses 8318bd2819ca artifact: 88d0a0dcf8 user: dmestas
00:26
teams: a single-team read fills its counts instead of leaving them zero closed check-in: fc63cfbf44 user: dmestas tags: team-counts
00:24 • Edit [1c005f9133]: Add "ci-pass" with value "030b01a3f8b97deb5ba6a2118622b39d". artifact: 3004a6a3f4 user: quarry
00:24
Create new branch named "team-counts" check-in: 1c005f9133 user: dmestas tags: team-counts
00:21 • Edit [aebd12f1ab]: Add "ci-pass" with value "72ab7e47d4fc36807b9f8da2c8685e32". artifact: 3289161b39 user: quarry
00:20
land teams-1 check-in: aebd12f1ab user: dmestas tags: trunk
00:20 • Edit [aebd12f1ab]: Add "landing" with value "31ead909b7c5622544254ff47b145aed5775cff952fc8567f333c9fb57748639". artifact: c69a8ddf24 user: quarry
00:20 • Reply: teams: the tables, the membership floor, the union in EffectiveCaps, and nine ops. addresses 8318bd2819ca artifact: b9285f611f user: dmestas
00:20 • Edit [ad7357d37e]: Mark "Closed". artifact: ccdac551eb user: quarry
00:20 • Edit [ad7357d37e]: Add "ci-pass" with value "16cce689edb9aa391ffea07774202cc4". artifact: ea9ce6c9b1 user: quarry
00:19
update teams-1 from trunk closed check-in: ad7357d37e user: dmestas tags: teams-1
00:19 • Reply: teams: the tables, the membership floor, the union in EffectiveCaps, and nine ops. addresses 8318bd2819ca artifact: 0a7a23d44c user: dmestas
00:17 • Edit [c79a4832d7]: Add "ci-pass" with value "c72f911ff1000c594a6104261749ae6f". artifact: 5e896d093f user: quarry
00:16 • Post: teams: the tables, the membership floor, the union in EffectiveCaps, and nine ops. addresses 8318bd2819ca artifact: 31ead909b7 user: dmestas
00:16
teams: the ops, and a measured short-circuit for forges with no teams check-in: c79a4832d7 user: dmestas tags: teams-1
00:09 • Edit [488ce6f6f6]: Add "ci-pass" with value "8c2830421c3628c870818da4a456d965". artifact: 31c4ddb875 user: quarry
00:08
land owner-ops check-in: 488ce6f6f6 user: dmestas tags: trunk
00:08 • Edit [488ce6f6f6]: Add "landing" with value "95b7b1c5df3aa579d4ee7e39fd5f65a7eb5298d62f3eafe2c86a233741715035". artifact: 59d3041e5c user: quarry
00:08 • Reply: Finish the owner-ops split. Exactly two operations change gate, both verified against a full op scan of the merged tree rather than a report. artifact: 5c8548691a user: dmestas
00:08 • Edit [a4b1ccf8ff]: Mark "Closed". artifact: b9ccbbd228 user: quarry
00:04 • Edit [3e8bcc0b5f]: Add "ci-pass" with value "2efe6eda2bb7a8742a653fad2eba4f6b". artifact: 85cf4740b4 user: quarry
00:03
teams: the tables, the membership floor, and the union in EffectiveCaps check-in: 3e8bcc0b5f user: dmestas tags: teams-1
00:02 • Edit [a4b1ccf8ff]: Add "ci-pass" with value "baefb71882f36f1d758e81e10e281cbb". artifact: 9610ca64be user: quarry
00:01 • Post: Finish the owner-ops split. Exactly two operations change gate, both verified against a full op scan of the merged tree rather than a report. artifact: 95b7b1c5df user: zeitgeist
00:01 • Edit [77a81aaa38]: Add "ci-pass" with value "cc4a0eb0200b255fd9af0dbd431a026a". artifact: 36da1b7739 user: quarry
00:01
mirror.writes and chatbridge to the repository owner; reindex stays forge-side closed check-in: a4b1ccf8ff user: dmestas tags: owner-ops
00:01
Create new branch named "teams-1" check-in: 77a81aaa38 user: dmestas tags: teams-1