§6-Mint: ogar:Constrains/Onchange — TTL-Registry + Emitter-Arme in Lockstep (5+3-Council GO)#179
Merged
Merged
Conversation
SPEC-MINT-ARM-B-TTL §1: register the two Arm B KausalSpec variants in the ogar.ttl OWL registry in lockstep with the emitter (Council-S3 correction — there IS a separate registry, contra the earlier claim). Same pattern as the five pre-existing ogar:KausalKind instances and the ogar:kausalDependsPath/-Context precedent. Council-B1 nebenbefund folded in: ogar:Unknown was declared only as ogar:EnumSourceKind, never as ogar:KausalKind, even though the emitter's _ => ogar:Unknown wildcard has always emitted it as a kausalKind object — a pre-existing declaration gap, now closed alongside this mint.
SPEC-MINT-ARM-B-TTL §2: add KausalSpec::Constrains/Onchange match arms to kausal_triples, exactly the Depends shape (lib.rs:836-848) — one ogar:kausalKind triple plus one ogar:kausalConstrainsPath / ogar:kausalOnchangePath triple per field path. The `_ => ogar:Unknown` wildcard stays, now covering only genuine future variants. Council-S5 pathology: dotted paths (Odoo silently drops these in @api.constrains/@api.onchange, odoo/orm/decorators.py:106-108/213-215) are drop-with-no-triple for that path only; the kausalKind triple still emits. Filter applied to both new arms. Test-flip (§3): the characterization test kausal_constrains_onchange_currently_emit_unknown_pending_emitter_wiring is replaced by two tests — kausal_constrains_onchange_emit_declared_kinds_and_paths (positive kausalKind + path assertions, plus the Konflations-Fuse negative guards: no ogar:Unknown, no ogar:dependsPath, no ogar:kausalDependsPath) and kausal_constrains_onchange_drop_dotted_paths_without_triple. Also extends kausal_spec_variants_emit_distinct_kinds to cover both new variants. Roundtrip: verified ogar-adapter-ttl has no kausal-consumer/parser (its module doc lists ActionDef/KausalSpec under "Not yet supported"), so TTL remains write-only for kausal; no roundtrip case added.
Append-only correction paragraph on the existing 2026-07-06 entry, analogous to its HONEST CORRECTION sub-bullet: the emitter-debt P2 is closed by SPEC-MINT-ARM-B-TTL — kausal_triples arms + ogar.ttl registry now in lockstep, the characterization test flipped to a positive test as designed, 5+3-Council GO. No new ad-hoc tag, no deletion.
Bugbot couldn't run - usage limit reachedBugbot is counted against Cursor usage for this user or team, and this run hit a usage or spend limit. A user or team admin can review and increase usage limits in the Cursor dashboard. (requestId: serverGenReqId_3e7d1ef8-3ec7-42fd-8300-32d55ddf4616) |
AdaWorldAPI
pushed a commit
that referenced
this pull request
Jul 8, 2026
…migration shm race The parity tests shell out to dotnet on two threads. On a cold runner (~/.dotnet absent), each first dotnet process runs .NET's first-time-use NuGet migration, which opens a named mutex under /tmp/.dotnet/shm/session<N>. Two migrations racing lose with mkdir==EEXIST / stat==ENOENT — the intermittent failure seen on OGAR #179 (main was green on the same commit). A static Mutex gate serializes all dotnet invocations, so the migration completes once uncontended and later calls skip it. Verified with dotnet-sdk 8.0.128: cold-start (rm -rf /tmp/.dotnet before each run) x8 -> 8/8 green; the same stress on the unserialized code flakes ~4/6. Note: an earlier attempt isolated TMPDIR/HOME/DOTNET_CLI_HOME/NUGET_PACKAGES per test — that does NOT work; the shm dir stays at /tmp/.dotnet/shm regardless of those vars (empirically confirmed), so serialization, not env relocation, is the fix. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
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.
Was
Der governte §6-Mint (Operator-Ruling „spec" 2026-07-07, danach 5+3-Council: einstimmig GO), tilgt die in #170 gepinnte Emitter-Schuld —
@api.constrains/@api.onchange-Modelle emittieren nicht längerogar:Unknownmit verworfenen Pfaden.Vier Vokabeln, an BEIDEN Deklarationsorten in Lockstep (Council-S3-P0: die OWL-Registry
vocab/ogar.ttlexistiert und hätte sonst gedriftet):vocab/ogar.ttl:ogar:Constrains+ogar:Onchangealsogar:KausalKind-Instanzen,ogar:kausalConstrainsPath/ogar:kausalOnchangePathalsrdf:Property— exakt daskausalDependsPath-Muster. Plus Council-B1-Nebenbefund geschlossen:ogar:Unknownwar nie alsKausalKinddeklariert, obwohl der Wildcard ihn längst emittiert — jetzt deklariert.ogar-emitter::kausal_triples: zwei Arme vor dem Wildcard, exakt der Depends-Shape (kind-spezifische Pfad-Prädikate — Option b, verworfen: Prädikat-Reuse [konflatiert Recompute/Validierung/UI] und generisches kausalPath [erzwingt kausalKind-Joins]). Der_ => ogar:Unknown-Wildcard bleibt (unter#[non_exhaustive]zwingend) und deckt nur noch echte künftige Varianten.odoo/orm/decorators.py) — der Emitter spiegelt das: drop-with-no-triple pro Pfad, kausalKind-Triple bleibt, eigener Test.ogar:dependsPath/kausalDependsPathauf ActionDefs (Codex-Regel 2026-06-04 — sonst inferiert eine Action als ComputedField).Test-Flip (designtes Verhalten)
Der #170-Characterization-Test
…currently_emit_unknown_pending_emitter_wiringist GENAU DAFÜR gebaut worden, beim Wiring laut zu brechen — ersetzt durchkausal_constrains_onchange_emit_declared_kinds_and_paths(Positiv + Negativ-Guards) +…drop_dotted_paths_without_triple.kausal_spec_variants_emit_distinct_kindsum beide Varianten erweitert.Verifikation
ogar-emitter 29/0 (28→29: 1 ersetzt, 2 neu) · ogar-vocab 122/0 · clippy
-D warningsclean ·cargo build --workspaceFinished (1 pre-existing unused-import in ogar-from-elixir, unberührt).ogar-adapter-ttlparst kein kausal (verifiziert, Module-Doc „Not yet supported") — TTL bleibt write-only für kausal, dokumentiert statt still. Ledger: append-only DEBT-RESOLVED-Absatz am D-ATC2-KAUSAL-RUFF-GATED-Eintrag in Grade-Sprache.Downstream: odoo-rs' AT-CONSUME-Pin liest den Struct — unberührt (grüner Paritäts-Test existiert). SPOG-Mirror (RFC-DTO-LENS v3) konsumiert die Vokabeln, sobald er existiert. Py/C#-SDK emittiert kein kausal-TTL — kein Touch.
🤖 Generated with Claude Code
https://claude.ai/code/session_01Cg8DSUz1U4AvKqXiy9Xx2f