Resolve cross-repo edges by name join; schema-checked outputs; deeper interviews (6.4.0) - #18
Merged
Conversation
Parts 1, 7 and 8 of map check (staleness, ledger fragments, schema: stamps, headings, Site paths, secret shapes) are skills/core/scripts/map-check.sh, which prints the MAP CHECK: verdict and needs no API key; the CI template runs it. The model keeps pointer drift, absorption, re-vetting and coverage and ends with MAP REVIEW:, with a deterministic pointer sample. The content_hash recipe becomes git ls-files -s --full-name, since ls-tree never expanded wildcard globs. lint-sync gains a headings sync check and a git-fixture smoke run of the script.
One ### <Name> section per row with a Field | Type | Required table, the producer's from its serializer, the consumer's listing only the fields it dereferences. quarry check compares exactly these tables. map-check.sh reports a row without its section.
The interfaces pass fills known_as from the deploy sources the operations topic reads, writes To: unknown rather than guessing a consumer, and, with cross_repo auto and quarry on PATH, resolves To/From cells against quarry docs list --json. groom and plan treat a by_name deps row as a lead.
Under workspaces, <repo> for quarry calls is the workspace name, which is also the quarry target name.
redact names env-var patterns whose values the operations chapter never quotes. map-check.sh scans every generated file, markdown or not, for the six secret shapes shared with quarry and reports the pattern name only.
Manifests, template pin, README upgrade note, help text reconciled.
Found by an end-to-end run: a scalar or missing known_as passed the gate and then cost every alias-resolved edge on the quarry side. docs/commands.md lists the payload-section check part 8 performs.
… (6.3.0) No repository holds another repository name: a publisher holds a topic, a route holds a path, a client holds a base URL. So map writes kind, name, site and schema into 09-interfaces.md frontmatter and never writes to or from. Quarry joins two repos declarations on (kind, name) and supplies the far end; a person answers only where that join is ambiguous, through one digest read from quarry docs index --json. A to or from already in the block came from that answer and no run edits it, which is hard rule 3's second exception. Payload sections name a model instead of copying it: 02-models.md's Fields and types now pins one heading per entity with a Field, Type, Required table, and a Model: line in the interfaces chapter resolves against it, so a schema change lands in one place and quarry check reads it from there. The project config is committed and shared. capstone.json holds the settings every run on the repo follows, so a config on one machine is not a standard; the initializer un-ignores it and expertise and teaching_mode stay personal. map-check gains four findings over the block: a row with no site, an unverifiable site path, a schema whose entity is absent, and a payload section that is neither a table nor a model reference.
Chapter headings were the only thing the gate validated, and it held its own copy of them that a lint regenerated from topics.md and compared. Everything else capstone writes went unchecked: logic scenarios, uiux chapters and screens, mockup screens, the index. Table columns were prose, so capstone's writers and quarry's parsers could drift apart in silence. references/schema.txt is now the definition: one record per output type with its required frontmatter keys, its heading sequence, and the columns of the tables under those headings. map-check.sh reads it at runtime and keeps no copy, so the rule lives in two places rather than three, and lint checks 20 and 21 assert the prose still agrees with it. An unreadable schema degrades to the key check with a line saying so. Part 8 gains two findings beside the missing heading: a heading out of order, naming both positions, and a table missing a column. A heading with no table under it is still fine, since topics.md sanctions a None-found section; a ### entity section with no field table is not, since it has no such out.
…ed options uiux and standards finished when the model judged itself done, which it does early and silently. Both now gate on an inventory the way logic gates on its dimensions: 27 system and 11 screen items for uiux, 17 domains and 92 items for standards, each with a probe that makes the question and a statement of where the answer lands. Standards gains the eight domains an enterprise reader expects and no interview asked for: security, accessibility, API conventions, logging and privacy, performance budgets, documentation, versioning and release, CI gates. uiux renders a preview before its gate, one self-contained HTML file holding the flagship viewport and a style tile, published as an artifact where the harness has one, so the user steers before formalizing rather than after. Brand assets are asked for as SVG up front, listed in 02-system's Assets table with a status per file, committed under uiux/assets while rasters stay ignored, and moved into the tree by build once it scaffolds. stack derives its capability list from what the chapters already record rather than from a stock list, and always presents options ending in write it ourselves with its honest cost. The ladder recommends and names its rung; it no longer decides alone. A page with no globs now reports which capstone wrote it, since no refresh path regenerates standards.md or an interview-derived scenario and the version gap was otherwise invisible. It is informational, like a waiting changelog fragment: true, worth showing, and nobody's failed build. A page behind the current version skips the heading and table checks, so one root cause is one finding instead of ten.
…e readback The models chapter now pins a field table per entity and an interfaces row points at one by name, but the architecture interview never asked for the fields, so a prescriptive chapter was written from whatever the model inferred and the first quarry check compared against a guess. The Communication checklist now asks what each channel carries in both directions, and the entity checklist asks for fields with type and optionality and an enum's accepted values. The exhaustiveness criterion covers them, so it stays checkable. The readback gains a third half, run first: coverage. Every stage was gated on an inventory, so walking each inventory against that stage's final outputs finds the items nobody asked about. One digest, like misplacement, naming the stage, the item and the file the answer lands in. An empty digest is reported in one line rather than passed over, so the user knows it ran.
There was a problem hiding this comment.
Sorry @GentBajko, your pull request is larger than the review limit of 150,000 diff characters
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.
Capstone 6.1.0 → 6.4.0. Three things: the cross-repo edge design stops guessing, every generated file gets a machine-checked format, and the three shallow interviews gain the completion tests the other two already had.
Pairs with quarry 0.2.0, now on
main.Edges are resolved, not guessed
No repository contains another repository's name. A publisher holds a topic name, a route holds a path, a client holds a base URL. So
mapwriteskind,name,siteandschemainto09-interfaces.md's frontmatter and never writestoorfrom. Quarry joins two repos' declarations on(kind, name)and supplies the far end. A person answers only where that join is ambiguous, through one digest read fromquarry docs index --json. A name a person wrote is never edited by any run, which is hard rule 3's second exception.Payload sections name a model instead of copying it.
02-models.md's Fields and types now pins one### <Entity>heading per entity with aField | Type | Requiredtable, and aModel:line in the interfaces chapter resolves against it, so a schema change lands in one place andquarry checkreads it from there.One machine-readable output schema
references/schema.txtdefines every file capstone writes: required frontmatter keys, heading sequence, table columns.map-check.shreads it at runtime and keeps no copy, so the rule lives in two places rather than three, and lint checks 20 and 21 assert the prose still agrees with it.Coverage goes from chapters only to
logic/,uiux/,mockup/, the index and standards. Part 8 gains two findings beside the missing heading: a heading out of order, and a table missing a column. A page written by an older capstone reports that once instead of every heading at once, and a page with no globs now reports which capstone wrote it, informationally, since nothing else ever surfaced that gap.The interviews that stopped early
uiuxandstandardsfinished when the model judged itself done. Both now gate on an inventory the waylogicgates on its dimensions: 27 system and 11 screen items for uiux, 17 domains and 92 items for standards, each with a probe that makes the question and a statement of where the answer lands. Standards gains the eight domains an enterprise reader expects and no interview asked for: security, accessibility, API conventions, logging and privacy, performance budgets, documentation, versioning and release, CI gates.uiuxrenders a preview before its gate, one self-contained HTML file with the flagship viewport and a style tile, published as an artifact where the harness has one, so the user steers before formalizing rather than after. Brand assets are asked for as SVG up front, listed in02-system.md's Assets table with a status per file, committed underuiux/assets/while rasters stay ignored, and moved into the tree bybuildonce it scaffolds.stackderives its capability list from what the chapters already record rather than a stock list, and always presents options ending in write it ourselves with its honest cost. The ladder recommends and names its rung; it no longer decides alone.The architecture interview asks what each channel carries and what fields each entity has, so the first
quarry checkcompares against decisions rather than inference. The readback gains a third half, coverage, which walks each stage's inventory against its final outputs and names what nobody asked.Also
map checksplits into a bash gate that needs no API key and a model review printingMAP REVIEW:. Thecontent_hashrecipe becomesgit ls-files -s --full-name, sincegit ls-treenever expanded wildcard globs and every hash written over one was the empty-input hash.docs/capstone/capstone.jsonis committed and shared, since a config on one machine is not a standard;expertiseandteaching_modestay personal.Checks
bash skills/core/scripts/lint-sync.shendslint-sync: all invariants hold, with 24 numbered checks and a git-fixture suite covering the new findings. The gate runs clean against two real docs areas and the four-repo fixture estate in the quarry repo.Upgrading
Existing docs areas report
written by an older capstoneinformationally until each stage is re-run; nothing fails a build on it. The firststandardsre-run is a longer conversation than before, which is the point.