# Inter-repo contracts. Festipod publishes no interface of its own — what it lists under # `publish:` is its own consumer-side DECLARATION, the channel a provider pulls to learn # what this app calls, what it needs and what blocks it. It consumes three — the SDK # surface `@ng-eventually/polyfill` engages toward the applications built on it, the # indexing layer `ng-helpers` engages toward the applications that need to make things # findable, and the Refine data providers `@activitypods/refine-providers`, which engage # nothing at all. # # The pulled copy under `into:` IS the specification Festipod codes against. An agent # working here reads that copy and never opens the provider's own source: a gap is raised # upstream (see `data-layer/rule_app-uses-sdk-surface-only`), never peeked around. # # Each interface gets its own FOLDER inside the concept that owns it, holding the pulled # engagement and — once Festipod actually consumes the interface — the `usage_festipod.md` # declaration beside it. All three land in `data-layer`: it is the concept that owns # how Festipod uses an external data surface, including the machinery behind discovery # (`functional-domain` owns the product intent of discovery and explicitly delegates its # technical how to the data SDK). # # `pullFrom:` names the canonical identity of the provider (its git remote URL + the # repo-relative path of the leaf), so the manifest travels with the branch. Per-developer # access to a local checkout lives in `.project/contracts.local.yaml`, which is never # committed. publish: # Both declarations are named `usage_festipod.md`, so the keys are qualified by their # interface — publish keys must stay unique, and the bare subject no longer says which. # Listing a declaration here is what lets its provider re-find it with `list --from` # after it moves; it sends nothing on its own. polyfill-surface--festipod: concepts/data-layer/polyfill-surface/usage_festipod.md activitypods-providers--festipod: concepts/data-layer/activitypods-providers/usage_festipod.md consume: - contract: polyfill-surface into: concepts/data-layer/polyfill-surface/ type: git # BLOCKED on the provider: it has moved this leaf into its own interface folder # (`.../app-contract/polyfill-surface/contract_polyfill-surface.md`) and has NOT pushed # that move. The path below is the only one that resolves at a pushed commit, and it is # the path the local copy's stamp came from — so it stays until the move is pushed. # Until then `pull` and `check` both fail on this entry (the file no longer exists at # this path in a working copy that has the move). Adopt the new path and re-pull the # moment the provider pushes; the pulled copy's basename does not change. pullFrom: https://gitea.reconnexion.apps.gueraud.net/Reconnexion/ng-eventually.git/.project/concepts/app-contract/contract_polyfill-surface.md # The contract is published from the branch that carries it while that branch is still # in flight; it moves to `main` once the provider lands it there. Flip this line then, # and re-pull — the stamp records which commit the local copy actually came from. ref: a8d53010c227462cc9317e9be499c2100ca8d533 - contract: indexing-layer into: concepts/data-layer/indexing-layer/ type: git pullFrom: https://gitea.reconnexion.apps.gueraud.net/Sylvain/ng-helpers.git/.project/concepts/indexing/indexing-layer/contract_indexing-layer.md # Pinned on the TAG, never on a branch: a branch moves under us and the pin would stop # naming a state anyone can go back to. Re-pin to the next tag at each upgrade. ref: v1.0.1 - contract: activitypods-providers into: concepts/data-layer/activitypods-providers/ # `@activitypods/refine-providers` publishes NO engagement: no contract document, no # stated change policy, not even a git tag. So this entry is `type: reconstruct` — the # one bounded crossing this protocol allows, made once at adoption time: the leaf under # `into:` is OUR observation of that package, authored here and pinned to the commit it # was read at. It is not a promise anyone made us, and every upgrade has to re-observe # it. Once reconstructed, that leaf IS the specification this app codes against. type: reconstruct # Canonical identity: the package's git remote plus the repo-relative folder the # observation was made from. Per-developer access to a checkout of it lives in # `.project/contracts.local.yaml`, which is never committed. reconstructFrom: https://github.com/activitypods/refine-providers.git/src # The branch the observation was read from. A tag would be the better pin, but this # repository publishes none — the resolver turns this into the commit actually read, # which is what `built_version` records. ref: master