feat: make self-hosting the standing delivery practice (phases 6–7 + plan 25) - #15
Open
darko-mijic wants to merge 25 commits into
Open
feat: make self-hosting the standing delivery practice (phases 6–7 + plan 25)#15darko-mijic wants to merge 25 commits into
darko-mijic wants to merge 25 commits into
Conversation
…c, generalized gates probe, portable skill Close the implementation-review findings on the phase-6 usage layer. The AGENTS.md repo map and the reading skill now name all eleven recipes and the sdp-authoring skill; the gates mutation test discovers the highest primary-numbered plan with the same convention as the guard instead of pinning plan 23; the reading skill separates the Protocol-checkout invocation (three mandatory exclusions) from the adopter form and is held to the recipes check's two-form contract; and the test-file impl: anchors for the two document-realized consumer Specs are relabeled under a recorded document-realization binding clause on spec:model.anchors — vocabulary only, no node, edge, or readiness change (121 specs, 213 nodes, 416 edges, zero findings). Plan 23 gains the post-close corrections section and the origin measurement addendum record (73.1% gross / 38.0% non-cached). Claude-Session: https://claude.ai/code/session_0158eQyLnKGzNZTPYcTehw5M
… as working guidance Plan 24 revision 2 re-derives every ground-truth number by graph query and restructures the phase around what the re-measurement found: the 64-row backlog is 51 example spaces + 13 laws (all verifier-bound), so S1 becomes one kind-level ruling on example implemented-semantics plus thirteen law dispositions; the 8 drift rows all derive ready, so their disposition is refusal re-argument, never enrichment. Names PR #15 as the delivery vehicle, states the self-hosted-setup milestone once, and carries the Vitest 2->4 debt as a named non-Spec chore. Plan 23 gains a supersession note: EXECUTED history only; origin-repo S1-S4 changes were reverted locally and survive solely in libar-ai/convex-event-sourcing#181. AGENTS.md status line moves with plan 24 (records gate green). Claude-Session: https://claude.ai/code/session_0158eQyLnKGzNZTPYcTehw5M
|
Want your agent to iterate on Greptile's feedback? Try greploops. |
…, and the plan selector - Document the recipe parameterization contract: recipes 3, 4, 6, and 9 open with a subject const naming this repository's corpus; the intro and recipe 9 now say so, closing the reported portability gap without breaking the run-verbatim recipe check. - Replace the tautological colliding-global-binary skill test: the collector only ever gathered pnpm-prefixed lines, so the assertion could not fail. The check now scans every shell-fenced line and reddens on any bare sdp or npx sdp invocation. - Mirror recipe 10's row predicate in its completeness expectation: a spec whose only binding is an off-contract, not-enabled verify edge lawfully produces no row, so the broader verifiers.length > 0 predicate was a latent false alarm. - Let zero-padded primary plans enter the gate's plan selector; letter-suffixed plans stay excluded because the hyphen must follow the digits directly. Full thirteen-leg npm run check green. Claude-Session: https://claude.ai/code/session_0158eQyLnKGzNZTPYcTehw5M
…en the temporal guard - Add the sdp package script so the full CLI resolves inside the source checkout (pnpm --silent sdp --help); document it in the README beside the exact failure signature pnpm exec sdp produces here (macOS resolves Apple's unrelated /usr/bin/sdp, which demands Xcode), and retitle the pnpm exec section as adopter-repository usage where the binary really is linked. - Anchor the temporal guard's repository root to the script's own directory instead of the caller's working directory, so the sweep reaches the same files from any cwd; enumeration and reads now go through that root. - Skip a tracked file symlink whose canonical file git enumerates on its own: CLAUDE.md -> AGENTS.md was being swept twice, and a link into an excluded genre would have been un-exempted by reading through the link. Full thirteen-leg npm run check green. Claude-Session: https://claude.ai/code/session_0158eQyLnKGzNZTPYcTehw5M
…n-ramp (plan 25) Re-home the seven PARTIAL items from the dissolution value-transfer audit (reviews/13) into their carrying Specs — the one-kind rule's split guidance, child-above-parent readiness independence, the typed-dependency rationale, the graph(A)/graph(B) diff framing, the no-duplicated-intent-on-Packs negative ruling, MD-1's recovered-surface gloss, and the softened curation claim — and rebuild the process layer as guidance without gates: a packaged sdp-sessions skill, owned by the new ready behavior spec:consumers.delivery-session-on-ramp, routes capture, design, implement, review, and close work shapes through the existing eleven graph recipes. sdp-authoring gains the cheap idea-capture template; CONTEXT.md declares the guidance-only labels; AGENTS.md turns graph-first with derived-never-quoted status; the README names the three shipped skills for adopters. Claude-Session: https://claude.ai/code/session_01TX4fxCUDfukBZo6LBNRKNw
… the guards The reader entry-map oracle stated matchedField "sections.behavior.rules" — an outcome the reader never emits and the authored concept-entry example contradicts — and nothing failed, because both oracle suites compared the oracle to literals hand-copied from the oracle itself. The suites now assert each expected outcome against the contract-recorded Then parameters, so an oracle that drifts from authored intent goes red (both mutation-probed). Also: align the gate test's plan-selector regex with the guard's zero-padded form, ban the general plan-status wording shape on the semantic surfaces instead of three frozen strings, and normalize the temporal guard's symlink dedup to git's forward-slash paths so it holds off-darwin. Claude-Session: https://claude.ai/code/session_01TX4fxCUDfukBZo6LBNRKNw
There was a problem hiding this comment.
Greptile has paused reviews on this repository — it used its 100 free open-source review credits for this billing period. Reviews resume automatically on August 12. To continue before then, an organization admin can keep reviews running past the free credits — those bill as normal usage.
…d drift Browsing generated/ in Finder drops .DS_Store files that the preflight compared as content against the clean regeneration, turning the gate red on any Mac. readTree now skips them and .gitignore excludes them repo-wide, so the drift and runtime-garbage checks keep policing real content only. Claude-Session: https://claude.ai/code/session_01TX4fxCUDfukBZo6LBNRKNw
…data races Finder and Spotlight can recreate metadata inside the preflight's temporary regeneration tree while rmSync is emptying it, crashing the gate with ENOTEMPTY. Retry the recursive removal instead of failing on the first race. Claude-Session: https://claude.ai/code/session_01TX4fxCUDfukBZo6LBNRKNw
Lint runs before generate:self-hosting, so type-aware template checks mis-fire when contract imports degrade; match the existing no-unsafe-* exemption for those suites.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Phases 6–7 and plan 25 make the Protocol usable as a delivery practice in both directions, then close the guidance debt above it:
sdp-sessions, that routes delivery work shapes through the existing graph recipes.The origin checkout was not modified during phase 7. Its phase-6 working-copy changes remain reverted and survive only in
libar-ai/convex-event-sourcing#181.Phase 6 — outward usage and adoption
sdp qrecipes in the adopter package.Phase 7 — inward self-hosting practice
implementedstays direct and anchor-derived.ready ∧ kind≠example ∧ ¬implemented, with excluded-example counts and verifier-health reporting. The raw-query caveat remains explicit.defined.spec:consumers.reader, consuming three existing points with three distinct expected outcomes. The technically eligible duplicate-ID target is explicitly refused as vacuous.spec:validation.oracle-target-eligibility.019d063(implementing Design),341ead6(implementation), and7ae8087(post-green slimming) without generalizing from one case..vscode/state, closes the four-column friction ledger without repeated friction, marks plan 24 EXECUTED, and removes the explicitly authorized superseded phase-6 plan file.Plan 25 — guidance recovery and the process layer (
5736877)reviews/13, 113 content units traced): zero GAP-class losses; seven PARTIAL guidance items survived only in git history.spec:model.core-model+ the authoring skill), child-above-parent readiness independence (spec:validation.readiness-floor), the typed-dependency rationale (spec:model.relations), thegraph(A)/graph(B)diff framing (spec:consumers.impact-graph, stillidea), the named no-duplicated-intent-on-Packs ruling (spec:validation.pack-coherence), MD-1's recovered-surface gloss (spec:decisions.executable-meta-model), and the softened curation claim (docs/concept/06).sdp-sessionsskill routes capture, design, implement, review, and close work shapes through the existing eleven recipes — advisory preflights only, no FSM, no scope enforcement, no new validators or reader verbs. It is owned by the new ready behaviorspec:consumers.delivery-session-on-ramp(refines the authoring on-ramp) with direct implementation and verifier anchors.sdp-authoringwith the cheap idea-capture template (theideafloor is the whole shape) and the promotion-preflight habit;CONTEXT.mddeclaresdelivery sessionandwork shapeas guidance-only labels.package.jsonfiles + package-smoke proof) and names all three skills in the README's adopter section.AGENTS.mdgraph-first: a "Query the graph first" section, derived-never-quoted corpus status, and the recovered gen-1 lineage lesson.Closing graph
modelsedges: 2Verification
npm run checkpasses in the normal tree and independently at committed checkpoints in a detached clean worktree.f8a50bb: installed Vitest 4.1.10, replaced removedsingleForkwith forks + one worker + isolation disabled, and migrated five deprecated matcher aliases without changing assertions.de3589892d25f40fe38af3b6be638514bc1d9f263b15811853e9770c8616823217a03acf584ebebdf20051f75ed774a1deac5ba3b7f578c3d59bba9ffa7aa790Deliberate boundaries
sdp-sessionspreflight informs; none authorizes, blocks, scopes, or advances work.Post-review follow-up (
454e9e9,4079825)A full review pass over the branch diff (engine changes read directly; test, spec, doc, and gate
surfaces swept independently) confirmed the kind-neutral oracle predicate is correct and
fail-closed and found four issues, all fixed:
subject
constnaming this repository's corpus. The catalog intro now states theparameterization contract explicitly, and recipe 9 names its
idline as the parameter — everybody still runs verbatim here, and an absent id returns
{ found: false }rather than failing.pnpm-prefixed lines and then asserted the pnpm prefix — true by construction. It now scans
every shell-fenced line and fails on any bare
sdp/npx sdpinvocation.verifiers.length > 0while the recipe emits rows only for example-declared or enabledbindings; the predicates now mirror each other exactly.
01-–09-) silently never entered thehighest-primary-plan selection; they now do, while letter-suffixed plans stay excluded.
A second polish pass (
4079825) closed the remaining low-severity items and a real usabilityfailure: the source checkout now has a working full-CLI entry (
pnpm --silent sdp --helpvia anew
sdppackage script) and the README documents the exactpnpm exec sdpfailure signature onmacOS (Apple's unrelated
/usr/bin/sdpdemands Xcode); the temporal guard anchors its sweep toits own directory instead of the caller's cwd, and skips tracked file symlinks whose canonical
file is independently enumerated —
CLAUDE.md → AGENTS.mdwas being swept twice on every run.Plan-25 review pass (
c945d80,9922cd6,6e76af5)A third review pass over the whole diff against
main— the plan-25 batch read line-by-line, theengine and test surfaces and the docs/specs/skills surfaces each swept by an independent
reviewer, and every plan-25 close-record claim re-derived from the tree — verified all seven
audit items landed faithfully and found one real defect plus four hardening items, all fixed:
matchedField: "sections.behavior.rules"— an outcome the reader never emits and the authoredconcept-entry example contradicts (
"sections.behavior") — and stayed green, because bothoracle suites compared the oracle to literals hand-copied from the oracle itself. The suites
now assert every expected outcome against the contract-recorded Then parameters, so oracle
drift from authored intent turns red; both suites were mutation-probed red and restored green.
selectors cannot silently disagree again.
CONTEXT.md/DECISIONS.md, not just three frozen historical strings.double-sweep exemption also holds off-darwin.
pointer, a born-
readyphrasing tension in plan 25, and the new skill's quote style werealigned.
environment races a piped
tailhad hidden — Finder's.DS_Storefiles insidegenerated/read as content drift (now skipped as OS metadata and git-ignored repo-wide), and the
preflight's scratch-tree removal crashed on a transient
ENOTEMPTYwhen Spotlight touched thetree mid-delete (now retried).
Full thirteen-leg
npm run checkre-run green (true exit 0, preflight clean) after the fixes.