Skip to content
quarry Check-in [c74cc272cb]
Login

Check-in [c74cc272cb]

Overview
Comment:Accepted. The fold reads a fact; the gate owns the guarantee.
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: c74cc272cb46670eb29b88dc6cf9e2c705c082235301d6f3db1954143147edb2
User & Date: dmestas on 2026-08-26 22:50:13.638
Other Links: manifest | tags
Context
2026-08-26
23:51
Landed phase 1: the policy table and the decision function. check-in: 4742a00a65 user: ai-local tags: trunk
22:54
RFC 0007 phase 1: branch_protection and MayJoin

Forge policy beside repo_caps: a repository names protected branches (name or glob) and their owners. No trace in the repository; edited under 'a'; empty by default so an imported store behaves as it did.

MayJoin answers may-this-account-change-this-branch's-membership. Every matching rule applies, so a glob and a narrower name on one branch can only narrow. Refused lists the globs an account does not own — the per-request rule the sync gate will hand its child. A store that cannot answer says no: silence is not consent. check-in: 70d043b2e7 user: dmestas tags: protect-1

22:50
Accepted. The fold reads a fact; the gate owns the guarantee. check-in: c74cc272cb user: dmestas tags: trunk
21:17
RFC 0007: fold reads the merge unconditionally; the gate owns fail-closed

Three amendments from review, now that zit#151 has shipped.

The fold's DAG-based reading applied only to protected targets, so adding or deleting a protection row re-judged every landing on that branch — the thing Disposability forbids. It is now unconditional: a DAG fact is the same fact under any policy. The merge is identified structurally (non-primary parent on the proposed branch, bounded by the open date), not by tip ancestry, which breaks for a branch merged and then continued.

zit#151 shipped with an absent header meaning no rule. Correct for a bare server; behind a front it means a gate bug silently disables protection. The RFC now records that and places three obligations on the gate: always set the header, strip the inbound one, prove both.

Test matrix gains the missing rows; What-this-is-not records the supersede interaction; build order marks phase 0 done. closed check-in: 2eff0c5d61 user: dmestas tags: rfc-0007-review

16:33
comments: render fossil links in the timeline, and three routes that were dropped

The timeline printed check-in comments as escaped text, so fossil's own bracket links showed as markup. commentHTML already existed and was wired to the check-in page only; the timeline now uses it for the lead line and each paragraph. Flat rows keep plain titles — theirs are drawn inside a link already, and an anchor cannot nest.

Surveying every link form fossil writes turned up three quarry HAS a page for and dropped anyway: /info, /artifact and /whatis (21 citations across the corpus) reach the same page a bare [hash] does, and /tktview reaches the ticket. A hex tail is required, so /info/2020-06-02T17:38z keeps its documented fate.

An unlabelled route printed its own path as the link text — markup leaking into prose, the one thing this renderer must not do. Those now read as prose.

/forumpost still aims at the forum index on purpose: measured against the fossil clone, 303 of 304 cited forum hashes are not present locally, so a deep link would 404. check-in: 51930149be user: dmestas tags: trunk

Changes