Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
47a1e6d
docs: draft the local-first landing intent for private repositories
REPPL Oct 26, 2026
65bc793
docs: record the confirmed routing of the local-first landing draft
REPPL Oct 26, 2026
48011ba
docs: file the CI escapes and record the ruling to build them first
REPPL Oct 26, 2026
1457aa9
feat: hold a pull request's body and issue ids to the hosted checks b…
REPPL Oct 26, 2026
e8816fe
feat: refuse a bare issue mention at the commit, not at the preflight
REPPL Oct 26, 2026
2a794ef
feat: run CI's gitleaks and govulncheck scans in make preflight
REPPL Oct 26, 2026
56118a8
feat: compose the pull-request body when land finds none to queue
REPPL Oct 26, 2026
fa0f13b
fix: act on the review of the pre-push checks
REPPL Oct 26, 2026
92f0191
test: run the new tests' git through gittest and name the gate's fenc…
REPPL Oct 27, 2026
a3b90d7
Merge origin/main into fix/catch-ci-failures-before-push
REPPL Oct 27, 2026
5897b7b
chore: merge origin/main into the catch-ci-failures branch
REPPL Oct 28, 2026
c0e855f
chore: merge origin/main into the catch-ci-failures branch
REPPL Oct 28, 2026
a8b6a06
chore: merge origin/main into the catch-ci-failures branch again
REPPL Oct 28, 2026
17473c2
chore: merge origin/main into the CI-escape branch again
REPPL Oct 29, 2026
5034859
docs: keep AGENTS.md under the smallest reader's cap
REPPL Oct 29, 2026
6af9613
Merge remote-tracking branch 'origin/main' into fix/catch-ci-failures…
REPPL Oct 29, 2026
f15389c
test: give the scan tests' git a directory of its own on PATH
REPPL Oct 29, 2026
fb323e4
Merge remote-tracking branch 'origin/main' into fix/catch-ci-failures…
REPPL Oct 29, 2026
c57cc64
test: keep the machine's GitHub login out of reach of the tests
REPPL Oct 29, 2026
a2c704f
Merge remote-tracking branch 'origin/main' into fix/catch-ci-failures…
REPPL Oct 29, 2026
5d1fb16
chore: merge origin/main into the catch-ci-failures branch again
REPPL Oct 29, 2026
b173474
docs: keep AGENTS.md under the smallest reader's cap after main grew it
REPPL Oct 29, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .abcd/config.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@
"backend": "host-delegated"
},
"outbound": {
"declare_mentions": true,
"forge": true,
"hook": true
},
Expand Down
8 changes: 7 additions & 1 deletion .abcd/development/brief/04-surfaces/17-guard.md
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,13 @@ a checkout with more than one worktree), `interpreter-reads-stream` (a shell
handed its script through a pipe, as in `cat x | sh`) or `forge-text-outbound`
(a posting `gh pr` or `gh issue` command whose title or body carries a live
agent-session URL or a tool attribution footer, in a repository that opted into
the forge-text check, iss-2610142210511831), is enforced but not
the forge-text check, iss-2610142210511831), and its two pull-request checks,
`forge-text-disclosure` (a `gh pr create`, `new` or `edit` whose body carries no
`Assisted-by:` line in an accepted form, judged as the attribution gate's body
arm judges it, iss-2609061525437969) and `forge-text-mention` (a pull request
whose title and body name an issue id no `Resolves:` or `Refs:` line declares,
RS004 before the push, in a repository that also sets
`outbound.declare_mentions`, iss-2610261152125261), are enforced but not
taught; the scripts the guard reads, and the variable-built `bash -c` or `sh -c`
script that deletes, which the guard refuses as `shell-c-variable-delete`
(iss-2610161612200864), are taught by two rules the generator adds after the
Expand Down
6 changes: 5 additions & 1 deletion .abcd/development/brief/04-surfaces/38-land.md
Original file line number Diff line number Diff line change
Expand Up @@ -140,7 +140,11 @@ bound: the refusal says so and gives the push to run by hand.
says the pull request is now disarmed and gives the command that arms it.
With no
pull request the step stops with the `gh pr create` command; the verb never opens one (ruling R2), and the next run
queues it.
queues it. The command names a body land composed from the branch's commits (iss-220): each subject, then their
`Refs:`, `Resolves:` and `Delivers:` lines once each, then abcd's own `Assisted-by: abcd:<version>` label and the
models the commits' `Assisted-by:` lines name (ruling R4), written to the checkout's local tier (land makes none) and
judged with the shell guard's checks of a posted body, the failing check named in the stop's note, so the body
the hosted checks read was checked before it was posted.

## The merge gate

Expand Down
19 changes: 13 additions & 6 deletions .abcd/development/brief/05-internals/03-configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -43,13 +43,15 @@ file is gone. `attribution.hook` is written by `ahoy install --attribution`, and
one outbound switch; the shell guard reads `outbound.forge`, and an install
completes a repository that records only one of the two and leaves the other
absent, while a key set to `false` is the repository's choice and is left as it
is. The remaining nine —
is. The remaining ten —
whether abcd should enable the forge's own secret scanning, the rules loader's
refresh backstop, the filing-time match's threshold and compared fields,
whether `abcd land` pushes and queues, whether a reservation may be made on
an origin GitHub names a fork, and the GitHub settings the remote apply keeps
and the checks it requires — are hand-set: the binary reads them and never
writes them.
an origin GitHub names a fork, the GitHub settings the remote apply keeps
and the checks it requires, and whether the shell guard also holds a pull
request's title and body to RS004 (`outbound.declare_mentions`, a rule a
repository adopts, so no install sets it) — are hand-set: the binary reads them
and never writes them.

```json
{
Expand Down Expand Up @@ -96,8 +98,13 @@ writes them.
"hook": true, // the committed commit-msg gate refusing a session URL or a tool
// footer; runs only the abcd `git config --local abcd.binary` names,
// which --outbound sets, clone-local, to the copy it verified
"forge": true // the shell guard refuses a posting gh pr/issue command whose title,
// body or body file carries either shape (forge-text-outbound)
"forge": true, // the shell guard refuses a posting gh pr/issue command whose title,
// body or body file carries either shape (forge-text-outbound), and
// a gh pr create/new/edit whose body has no Assisted-by line in an
// accepted form (forge-text-disclosure)
"declare_mentions": true // beside forge only: the shell guard refuses a gh pr create/new/edit
// whose title and body name an iss-N with no Resolves:/Refs: line
// declaring it (forge-text-mention, RS004 before the push)
},
"rules": {
"force_refresh_every_n": 15 // prompt-router refresh backstop (itd-3). The primary refresh is
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ production_mode: hand-written

Graduated from `iss-2610161632245527`: abcd should find out what the forge can do instead of asking the person or assuming. On 2026-10-16, setting up a throwaway lab to test abcd land, the agent asked the product thinker whether the team organisation allowed private copies; the product thinker did not know and should not have to. A read-only query answered it (members_can_fork_private_repositories is false for the organisation's own repositories), and a real attempt showed a private fork of a repository the person owns works anyway. The general want: abcd tests the forge's functionality itself (can repositories be private, can they be forked privately, is a merge queue available) and goes with the route that delivers the wanted outcome; only when no route exists does it ask, offering the options. It needs a state-of-the-art pass on forge capability detection before planning. Read that issue record for the source observation.

itd-2610261025516272 builds on this intent: it chooses a managed repository's landing route from what the forge's plan allows (a merge queue, required checks, or nothing at all), and its research note records GitHub's tiers as read on 2026-10-26, among them that a private repository has a merge queue only when its organization is on Enterprise Cloud.

## Mechanism

> _Prompted (the claim-recording gradient): why the authors expect this to work, as a falsifiable "we expect X because Y" — not the outcome restated. Replace this line with the claim, or with the exact token `None stated.` alone on its line to record the claim as considered and declined._
Expand Down
Loading
Loading