Canonical factory copies: the specdsl skill (PRODUCT_SPEC.md contract + scorer + profile checker), seeded once and reinstalled into bot profiles from tags.
Find a file
specbot cfa75a87ba spec_score: score factory-bootstrap specs 0 via pinned marker check
Specs carrying the literal marker 'this is a factory bootstrap spec'
(lowercase match) return total 0 with failed=[BOOTSTRAP_SPEC] —
deterministic enforcement of SC-41's normal-factory intake refusal.
Known positional MISSING_SCENARIO defect (F-19 item 5) explicitly
deferred to the next tag move; recorded in factory/DECISIONS.md.
2026-10-14 08:13:32 +02:00
specdsl spec_score: score factory-bootstrap specs 0 via pinned marker check 2026-10-14 08:13:32 +02:00
README.md specdsl v0.1.0: three-way merge of the three live copies + the current profile_check.py 2026-10-13 20:11:13 +02:00

factory-materials

Shared, canonical copy of the factory's specdsl skill — the machine contract for PRODUCT_SPEC.md (grammar + deterministic scorer) and the execution-profile slot checker. Bots (SpecBot, ArchitectBot, EvalBot, EngineBot) install this skill into their profiles from this repo so all copies stay in lockstep: the 85-gate and the profile-check gate must mean the same thing in every hand.

Layout

  • specdsl/SKILL.md — the skill document (normative grammar + pitfalls).
  • specdsl/scripts/spec_score.py — deterministic spec scorer (stdlib only).
  • specdsl/scripts/profile_check.py — execution-profile slot checker (stdlib only; accepts list-form - slot: value and table-form | `slot` | value | fills, values/range/regex:/matches constraint forms, strips parenthesized annotations).

Install into a profile

mkdir -p <profile>/skills/software-development/specdsl
cp -R <this-repo>/specdsl/* <profile>/skills/software-development/specdsl/

After any change here: bump the tag, then reinstall into every bot profile and hash-compare. Divergent copies contradict each other's gate verdicts on the same artifacts (see the skill's Pitfalls).

Provenance

v0.1.0 (2026-10-13): seeded from the three live copies as they existed in the factory on 2026-10-13 — default-skills (sha 90e56d45…, base; owner of the current profile_check.py variant), specbot (sha c2a1549f…, source of the positional-failure-key and sync-in-lockstep notes), and architectbot (sha b2b23add…, source of the behavior-only Format rule and the scorer-source / tombstone / copy-drift pitfalls) — three-way merged, lossless against all three (verification: every normative clause of each source present verbatim; the only merged-only text is one lockstep parenthetical folded into the existing sync bullet). spec_score.py was byte-identical in every copy (a4467119…); profile_check.py is the default-skills variant (568d602d…). No teardown, no scoring-engine changes in this release.