docs(specs+board): post-#360 substrate-recognition sweep — 3 spec re-scopes + cross-source matrix + sprint prompt template + board hygiene#362
Conversation
…id + NamespaceRegistry::seed_defaults; reduce to ~150 LOC / 1 day
…s + woa-rs#2 + medcare-rs#110; reduce to ~80 LOC / ½ day
…ovenance + attach_provenance; reduce to ~250 LOC / 1-2 days; mark Pattern D PARTIALLY SHIPPED
… reclassified PARTIALLY SHIPPED
… .grok/ ↔ shipped substrate)
…ecklist + wrong-repo guardrail + pattern-letter discipline
…ables in INTEGRATION_PLANS.md
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 220a5a43d5
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| - Build OWL/RDF-XML reader (or use `oxttl` / `rio_xml`) → adapter that emits `MappingProposal` + `ProvenanceBundle` | ||
| - Adapter calls existing `OntologyRegistry::hydrate_once_sync` path |
There was a problem hiding this comment.
Correct the hydrate_once_sync reuse path
When implementing the FMA OWL/RDF-XML adapter as described here, the emitted MappingProposal and ProvenanceBundle cannot be passed to OntologyRegistry::hydrate_once_sync: I checked crates/lance-graph-ontology/src/registry.rs, and that method only accepts a ttl_root: &Path plus namespaces and then unconditionally calls parse_ttl_directory_with_provenance(...) internally. Following this spec still requires a new ingestion hook such as hydrate_from_proposals or a parser abstraction, so the "adapter calls existing hydrate_once_sync" and "only reader is new" scope will send implementers down a non-existent API path.
Useful? React with 👍 / 👎.
Summary
Post-PR #360 review pass surfaced 3 architectural defects in sprint-3 specs that recurred the very anti-pattern PR #358 named ("Designing What's Already Built"). Specs PR-A-1, PR-C-1, PR-D-1 over-scoped because they didn't sweep post-#355 substrate.
What this PR does
1. Re-scope 3 over-scoped specs (append-only corrections)
SpoQuadtype; ignored shippedSchemaPtr.ontology_context_id(namespace.rs) +NamespaceRegistry::seed_defaultscodebook (namespace_registry.rs)GenericBridgein callcenter; ignored shippedBridgeFromRegistrytrait + 3 impls (bridges/{woa,medcare,ogit}_bridge.rs) + 2 merged consumer scaffolds (woa-rs#2 ~150 LOC, medcare-rs#110 ~250 LOC)enumerate(namespace)projection;for_g(g)factory dispatches to existing bridges by namespace lookupparse_ttl_directory_with_provenance+OntologyRegistry::hydrate_once_sync+attach_provenance+MappingRow.attribute_sourcesMappingProposal+ProvenanceBundleand calls existinghydrate_once_sync. Mark Pattern D PARTIALLY SHIPPED.Critical-path compression: sprint-3 ~6 working days parallelized → ~3-4 days post-substrate-sweep. The genuinely-new ~5-pattern set (B/E/F/G/J) accounts for the majority of remaining design-phase work.
2. Tier-0 reclassifications
.claude/knowledge/tier-0-pattern-recognition.mdupdated with substrate-recognition sweep section:3. NEW: Cross-source pattern matrix
.claude/knowledge/pattern-recognition-cross-source.md— 4-taxonomy matrix mapping each architectural insight across:.grok/parallel-session epiphanies (22 entries already exist; never cross-referenced)file:symbolcitations for ~28 crates)Plus a "shipped consumer scaffolds" section listing woa-rs#2 / medcare-rs#110 / smb-office-rs#29 / medcare-rs#98 as the 4 real precedents that already validate Pattern C's LOC reduction claim. The W8 hypothetical hubspo-rs target re-targets to "verify woa-rs + medcare-bridge hit budget" (those are merged precedents).
4. NEW: CCA2A sprint prompt template
.claude/knowledge/cca2a-sprint-prompt-template.md— formalizes the lessons learned across sprints 2 and 3:5. Board hygiene — sprint-3 entries
W8 (INTEGRATION_PLANS) + W9 (LATEST_STATE) sprint-2 entries are on main; sprint-3 entries were missing. This PR appends them.
What this PR does NOT change
Files changed
.claude/specs/pr-a-1-spo-g-u32-slot.md.claude/specs/pr-c-1-generic-bridge.md.claude/specs/pr-d-1-fma-owl-hydrator.md.claude/knowledge/tier-0-pattern-recognition.md.claude/knowledge/pattern-recognition-cross-source.md.claude/knowledge/cca2a-sprint-prompt-template.md.claude/board/LATEST_STATE.md.claude/board/INTEGRATION_PLANS.mdTest plan
get_contents(SchemaPtr.ontology_context_id, NamespaceRegistry::seed_defaults, BridgeFromRegistry, WoaBridge, MedcareBridge, OgitBridge, parse_ttl_directory_with_provenance, RegistryState::append ctx_id stamping).grok/22-entry directory verifiedWhat you got right that's preserved
Per reviewer's "What you got right" section:
.claude/board/sprint-log-N/per-sprint coordination directory — preserved + formalized in templateNotes
.claude/knowledge/cca2a-sprint-prompt-template.mdto prevent recurrence of all 4 documented failure modes.🧠 Anti-Pattern "Designing What's Already Built" applied to sprint-3 itself — recognition all the way down.
🤖 Generated by Claude Code