docs(phase-4): record linkedin-studio's two named requirements before the freeze
They named both on a live channel today, having withdrawn the half of their original question that turned out not to bind them. Recorded here rather than in a reply so the scope freeze has to answer them explicitly. `write_index` ownership was genuinely ambiguous in this plan — they read deliverable 4's "write" and asked which line owns it. It is deliverable 3, and the plan now says so. Their vocabulary requirement is already the Python half's shape: `TypePolicy(allowed=None)` is the default and rewrites nothing, so there is no DEFAULT_TYPE to snap to. The reference checker's collapse is a known deviation to resolve with the convention owner under step 1, not a behaviour to lift.
This commit is contained in:
parent
9436427520
commit
c5e6f083e6
1 changed files with 34 additions and 1 deletions
|
|
@ -46,7 +46,40 @@ code.
|
|||
parity.
|
||||
3. **linkedin-studio stays plugin-local.** Its `ingest/published/`
|
||||
provenance-record grammar has a different lifecycle by design and is NOT
|
||||
normalized into this library. Explicit non-goal, agreed up front.
|
||||
normalized into this library. Explicit non-goal, agreed up front, and
|
||||
confirmed by them on 2026-07-25 as their own fixed decision rather than
|
||||
something conceded to us.
|
||||
|
||||
Two requirements they named on 2026-07-25, before the scope freeze, which
|
||||
it must therefore answer explicitly rather than pass over. Both are about
|
||||
not breaking what they have, not about building toward them:
|
||||
|
||||
- **`write_index` must have a do-nothing mode.** They run a fourth index
|
||||
mode the spec does not describe: create-if-absent, no managed lines,
|
||||
the whole file hand-editable. Their scaffold never opens an existing
|
||||
index, so it cannot normalize one. The requirement is that this
|
||||
library's writer match that — against an existing index carrying no
|
||||
managed lines, write nothing, and do not normalize the frame "while it
|
||||
is open anyway". This is the writer-side sibling of the Phase 3
|
||||
decision that nothing enumerates a directory unless the profile says
|
||||
the index is derived. `write_index` is deliverable 3, not deliverable
|
||||
4's `write`; that was ambiguous in this plan and is now stated.
|
||||
- **An absent vocabulary means "do not snap", never "snap to default".**
|
||||
The reference checker collapses any non-matching type to a
|
||||
`DEFAULT_TYPE`, which would erase their Profile / Operations /
|
||||
PendingDiff distinction with zero byte change. Vocabulary is
|
||||
per-bundle, never spec-global. This is already the Python half's shape
|
||||
— `TypePolicy(allowed=None)` is the default and rewrites nothing — so
|
||||
the Node half inherits a design rather than adopting a constraint, and
|
||||
the collapse is a known deviation to resolve with the convention owner
|
||||
under step 1 rather than lift.
|
||||
|
||||
They have offered a minimal tolerance fixture pair (a `brain/` hub whose
|
||||
`index.md` carries `okf_version` as markdown text, and an
|
||||
`ingest/published/` record: YAML-free five-line header terminated by
|
||||
`\n---\n`, no trailing newline). Take the bytes rather than the
|
||||
description — it is held as a tolerance case, never as a format this
|
||||
library emits.
|
||||
4. **Persist gate = guard-as-contract.** There is no Node guard today. The Node
|
||||
half documents and enforces the guard's *contract* at its persist seam
|
||||
(fail-closed hook point, no content-safety logic of its own) so a future Node
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue