Commit graph

83 commits

Author SHA1 Message Date
claude-bot-andresmgsl
c4079ea37c test(labels): surface-level ruling contracts on both reconcilers
Issue side: invariant-1 composition, the reclaim clock stopping under a
pending ruling (with a flag-free reclaim control), the stale heal, label
churn invisible to the activity clock, the surface-level nudge reset, and
no edit anywhere naming the flag. PR side: the wired nudge riding the
stale sweep's activity computation, one nudge across two sweeps, #51's
stale skip intact.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 12:25:05 +00:00
claude-bot-andresmgsl
a40e42544e feat(labels): wire the ruling pass into both reconcilers + lib test suite
Issue side: the claim-reclaim clock stops under a pending ruling (the
decision still sees an unassigned claim), an already-applied stale heals
off, and reconcile_ruling runs for any flagged issue on any queue state.
PR side: reconcile_ruling rides the (#51) stale section's real-activity
computation. test/ruling.test.sh pins the window boundaries, newest-event
anchoring, per-event marker scoping, the markerless nudge reset, the
unreadable-timeline rule, and that no scenario writes a label.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 12:25:05 +00:00
claude-bot-andresmgsl
6a1d7ddac0 feat(labels): lib/ruling.sh — shared needs-ruling sweep decisions (#52)
One implementation for both surfaces: the stale exemption, the bare-flag
mechanical proxy (15-minute back-window against the newest labeled event),
the marker-scoped idempotency, the 7-day nudge with no marker (the comment
is the activity that resets its own window), and the one impure
orchestrator both reconcilers will source.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 12:25:05 +00:00
Daniel Marin
cf69d8ce9e
Merge pull request #60 from claude-bot-andresmgsl/build/58-runner-isolated
feat(guards): actions/runner-isolated — no pull_request-triggered job on a self-hosted runner
2026-07-23 13:24:41 +01:00
Daniel Marin
9c943f5f5d
Merge pull request #63 from codex-bot-andresmgsl/build/61-cross-repo-reference-guards
fix: guard cross-repo issue references
2026-07-23 13:24:21 +01:00
claude-bot-andresmgsl
44d0a79547 feat(guards): wire runner-isolated — self-guards step, consumer entry, changelog (#58) 2026-07-23 12:04:11 +00:00
claude-bot-andresmgsl
179cd0808b test(guards): runner-isolated fixture matrix — 12 spec rows plus the block-sequence cases (#58) 2026-07-23 12:03:55 +00:00
claude-bot-andresmgsl
fccdd409ff feat(guards): actions/runner-isolated — the scan, the two-condition rule, the exit codes (#58) 2026-07-23 12:03:55 +00:00
codex-bot-andresmgsl
3935bf82d9 test: pin cross-repo reconciliation contract 2026-07-23 11:40:55 +00:00
codex-bot-andresmgsl
bc099eb4e2 fix: guard cross-repo issue references 2026-07-23 11:38:14 +00:00
Daniel Marin
ca9a1a0bcd
Merge pull request #62 from codex-bot-andresmgsl/build/57-cross-repo-discovery-guards
docs: define cross-repo discovery guards
2026-07-23 12:37:31 +01:00
codex-bot-andresmgsl
5e283ec09e docs: define cross-repo discovery guards 2026-07-23 11:21:52 +00:00
Daniel Marin
66f1c08e1a
Merge pull request #32 from codex-bot-andresmgsl/build/18-issueflow-reconcile
feat: reconcile the issue work queue
2026-07-23 12:15:29 +01:00
codex-bot-andresmgsl
43092576ef fix: harden issueflow reconciliation edges 2026-07-23 10:49:36 +00:00
codex-bot-andresmgsl
70db91fa1a fix: wire dogfood issue reconciliation 2026-07-23 10:47:30 +00:00
codex-bot-andresmgsl
d0f1a43064 test: pin injected staleness boundary 2026-07-23 10:31:15 +00:00
codex-bot-andresmgsl
1030634b09 test: inject issue-flow staleness clock 2026-07-23 10:31:15 +00:00
codex-bot-andresmgsl
1532f22eb7 fix: parse live issue dependency shapes 2026-07-23 10:31:15 +00:00
codex-bot-andresmgsl
a811da8b4f fix: enforce triage author only on issue arrival 2026-07-23 10:31:15 +00:00
codex-bot-andresmgsl
cbb0fb5eee test: cover stale unassigned claims 2026-07-23 10:31:15 +00:00
codex-bot-andresmgsl
561b7a99ec fix: read linked issues through GraphQL 2026-07-23 10:31:15 +00:00
codex-bot-andresmgsl
8174080c9d feat: reconcile the issue work queue 2026-07-23 10:31:15 +00:00
Daniel Marin
2f0d3c65af
Merge pull request #54 from claude-bot-andresmgsl/build/51-needs-ruling
feat(labels): `needs-ruling` — the label, the doctrine, and the reconciler's exclusion rule (#51)
2026-07-23 02:23:03 +01:00
Daniel Marin
af2f83a2a7
Merge pull request #53 from claude-bot-andresmgsl/build/13-consumers-feedback
docs: CONSUMERS.md — the rig conversion's lessons (#13)
2026-07-23 02:01:47 +01:00
claude-bot-andresmgsl
ded7f9ac04 docs: needs-ruling doctrine — LABELS row + D5–D9 rationale, escalation mechanics in TRIAGE/BUILDER/REVIEWER, changelog (#51)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 00:49:21 +00:00
claude-bot-andresmgsl
6db45587ed test(labels): needs-ruling contract — exclusion not latch, never a blocker, sweep-proof, stale-exempt (#51)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 00:47:59 +00:00
claude-bot-andresmgsl
bd215b06f2 feat(labels): needs-ruling — bootstrap row, decide_state exclusion, staleness skip (#51)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 00:44:16 +00:00
claude-bot-andresmgsl
bd7670703a docs: CONSUMERS.md carries rig's conversion lessons — labels.conf takes no comments, machinery test files go whole, stale doc pointers swept (#13)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-23 00:34:26 +00:00
github-actions[bot]
4cfa3319ec chore: bump main to 0.1.1-dev — a dev install must not impersonate 0.1.0 2026-07-23 00:12:30 +00:00
Daniel Marin
24ed9ad05b
Merge pull request #49 from claude-bot-andresmgsl/build/11-ceremony
release: 0.1.0
2026-07-23 01:12:15 +01:00
Daniel Marin
682d80eddb
Merge pull request #48 from claude-bot-andresmgsl/build/12-docs-doctrine
docs: README doctrine + CONSUMERS.md adoption guide
2026-07-23 01:11:07 +01:00
claude-bot-andresmgsl
55d0384c22 docs: pin bumps update every ceremony reference; decide table is six rows
Round 1 (PR #48): codex-bot flagged the release-only bump described as a
one-line uses change while the same-tag rule two bullets up requires every
reference on one tag — a release-only setup has four (release caller +
three guards), so a one-line bump splits the consumer across versions.
The bump bullet and the pin-bump procedure now both require every ceremony
uses: reference updated together. Also the README called lib/decide.sh a
5-state table; the spec comment and rendered table have six rows.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 23:46:31 +00:00
claude-bot-andresmgsl
79261aa793 docs: CONSUMERS.md — prerequisites, bootstrap and convert checklists, pinning, changelog rule, team-flow adoption (#12)
Extends the existing release-workflow / artifact-hook / labels sections
(from #27 and #39, kept intact) with the remaining adoption guide: the
greenfield bootstrap path, the box/rig/cast conversion checklist, the
exact-tag pinning policy, the portable changelog contributor rule, and
the agent-team-flow adoption checklist with the pin-bump procedure
(docs-sync documented from #19's contract).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 23:46:31 +00:00
claude-bot-andresmgsl
4363f5ad22 docs: README.md — the doctrine, moved here once (#12)
What a release is (the three stamps, box#108's two-edit rule), the two
doors, the decide table rendered for operators, the three guards with
their incidents, the drill doctrine, the verbatim refusal catalog with
cause and remedy, and the design lineage. Condensed from the box/rig/cast
CONTRIBUTING essays per #1 D8; every workflow-behavior claim links the
line or the spec issue.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 23:45:07 +00:00
claude-bot-andresmgsl
bb3bbf150a chore: README → README.md — the doctrine document gets its real name
Issue #12 writes the doctrine into README.md; the extensionless
placeholder was the 12-byte stub triage's readiness note called out.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 23:45:07 +00:00
claude-bot-andresmgsl
af48581973 drill: the 0.1.0 record, and the first-release caveat in the doctrine
drills/0.1.0.md — six probes plus (g), run on the disposable scratch repo
against the candidate SHA, every refusal checked for droppings; the pin
deviation (fork ref, CEREMONY_SELF_REF -> candidate SHA in both carriers)
recorded under its own heading per triage's ruling on #11. drills/README.md
gains the first-release caveat that ruling asked for: the first drill can
never take the pure pinned consumer path, and must not fix that by putting
a tag-shaped branch in the canonical ref namespace.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 23:40:38 +00:00
claude-bot-andresmgsl
ff00a9cbcd release: 0.1.0
The ceremony PR — two edits, per the amended #11: VERSION 0.1.0-dev -> 0.1.0,
and the changelog stamp with the re-arm in the same edit (## Unreleased ->
## 0.1.0 — 2026-07-22, an empty ## Unreleased put back on top — box#108).
No third stamp: both CEREMONY_SELF_REF carriers already read "0.1.0", and
self-ref-check's bare-tree rule wants exactly that. drills/0.1.0.md follows
once the rehearsal runs.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 23:27:56 +00:00
Daniel Marin
dbf857a94a
Merge pull request #43 from claude-bot-andresmgsl/build/19-docs-sync
feat: actions/docs-sync — vendored doctrine, machine-verified
2026-07-23 00:18:28 +01:00
Daniel Marin
6305827a7d
Merge pull request #44 from claude-bot-andresmgsl/build/11-dogfood
feat: dogfood bootstrap — ceremony adopts its own ceremony
2026-07-23 00:17:16 +01:00
claude-bot-andresmgsl
9782687bd7 feat: dogfood bootstrap — ceremony adopts its own ceremony (#11)
VERSION at 0.1.0-dev, the armed CHANGELOG.md, drills/README.md (what a
drill means here), the self-callers (self-release.yml, self-labels.yml —
local uses:, the one form consumers must never copy), .github/labeler.yml
for the scope job, and the three self-guards in CI. labels.yml gains the
self-consumption bypass (release.yml's twin) so the label bootstrap can run
before any release tag exists; action-exercise's armed/drill-recorded
scratch steps move to self-guards per their own eviction note.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 22:19:50 +00:00
claude-bot-andresmgsl
85d4eb3770 fix: refuse non-regular nodes everywhere; machine-verify the mirror README
Round 1 (PR #43): codex-bot + kimi-bot reproduced cp writing through a
committed symlink and cmp/find resolving through or skipping link nodes —
both modes now refuse any non-regular node (.ceremony itself, anything
under it, the root AGENTS.md incl. dangling links and non-file nodes)
before touching the tree. kimi-bot also found .ceremony/README.md was
machine-written but never machine-verified: --check now cmps it against
the generated text (missing or drifted -> red). 22 regression rows; every
symlink row asserts the victim untouched.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 21:59:37 +00:00
Daniel Marin
91863259f9
Merge pull request #42 from claude-bot-andresmgsl/build/7-drill-recorded
feat: actions/drill-recorded — a release carries its evidence
2026-07-22 22:47:23 +01:00
claude-bot-andresmgsl
77f195a6ae ci: docs-sync-exercise job + CONSUMERS.md doctrine-mirror section
The fixture consumer is the workspace root (a uses: step cannot cd);
ceremony rides a subdirectory checkout serving as both the local action
ref and the --source override. CONSUMERS.md gains the wiring, bootstrap,
and pin-bump procedure (#12's section, amended in the same cycle).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 21:42:01 +00:00
claude-bot-andresmgsl
40fa216e8b test: docs-sync contract suite — 37 rows, offline via --source
Fake source trees (not the real five docs) so a hardcoded list fails;
consumer trees per pin shape, including the commented-pin row ceremony's
own release.yml header motivates. Also fixes the EXIT-trap exit-status
clobber the smoke run surfaced.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 21:40:49 +00:00
claude-bot-andresmgsl
dde67a95db feat: actions/docs-sync — manifest, script, composite wrapper
The materialization machinery for doctrine (issue #19): docs are vendored
into consumers at .ceremony/, machine-written (--fix) and machine-verified
(--check), keyed on the single release.yml pin line.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 21:38:53 +00:00
claude-bot-andresmgsl
71c45b7fe5 feat: actions/drill-recorded — a release carries its evidence
Port box's drill-recorded.sh (the origin of the three copies) as a
composite action on the #5 pattern: version read through lib/version.sh,
one file per version under drills/, whitespace-only records refused.
Keyed on the tree's version — -dev trees pass with a notice that says
why nothing was asserted; bare trees must show drills/<version>.md with
at least one non-whitespace character.

Closes #7

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 21:28:06 +00:00
Daniel Marin
093656adbe
Merge pull request #41 from claude-bot-andresmgsl/build/6-changelog-monotonic
feat: actions/changelog-monotonic — shipped release headings are append-only
2026-07-22 22:23:06 +01:00
Daniel Marin
e2828f5413
Merge pull request #39 from claude-bot-andresmgsl/build/9-release-workflow
feat: the reusable release workflow — both doors, one implementation
2026-07-22 22:22:48 +01:00
claude-bot-andresmgsl
a0bea573a1 ci: exercise changelog-monotonic with a real containment run
The action-exercise job commits a scratch base, marks it as an in-job
fixture branch, commits an insert-above edit, and runs the composite
action against that history — proving the wiring AND a genuine
merge-base comparison, not just an action.yml parse. Base ref passed
explicitly: the shallow PR checkout has no origin/main to resolve.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 21:12:44 +00:00
claude-bot-andresmgsl
7424ef21bf test: changelog-monotonic contract suite — constructed git histories
Every case from #6's test list: the documented-flow passes (insert-above,
the stamp, prose-only), the box#122 deletion shape, the box#118 duplicate
(proven to run before every history gate, the box#143 ordering), rc
distinctness, both STRICT degradations, the file-first-added edge, the
vacuous push-to-main shape, and the action's env wiring.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-22 21:11:46 +00:00