Add use-case-risk-tier.py, a stdlib-only CLI that classifies an AI use case
(data sensitivity, autonomy, exposure, decision impact) into a low/medium/high
governance tier and the controls that tier requires, with --json and --dry-run.
Ship test_use_case_risk_tier.py covering scoring, tier forcing, validation,
CLI exit codes, graceful failure, and deterministic/dry-run behavior.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 20:28:16 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Add the stdlib-only governance-maturity CLI (reads a JSON answers file of
governance dimensions scored 1-5, computes a maturity level and gap list,
supports --json and --dry-run, exits 0 on healthy input and 1 on critical
all-minimum gaps) with a pytest suite, plus a skill pytest.ini that overrides
the repo-wide coverage addopts for subprocess-based skill tests.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 20:24:31 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Add fillable third-party-due-diligence.md and board-ai-governance-report.md
templates implementing the procurement, third-party, and board oversight
reference, each with purpose, guided fields, sections, and completion notes.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 20:20:32 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Add NIST-aligned model-risk-assessment.md tiering worksheet and model-card.md
documentation template, each with title, purpose, guided fields, and a
completion section. Governing references already mention both slugs.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 20:19:11 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Add fillable governance-charter.md (council terms of reference) and
use-case-intake-form.md (intake/registry entry with risk classification)
templates, each with an H1 title, purpose statement, guided fields with
placeholders, and completion instructions, aligned with the operating-model
and risk/lifecycle references.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 20:17:30 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Consolidate the synthesized-from footers of the 10 domain references into a
source-index.md that names all 11 reference files, maps each to its book short
names and research notes, lists the full 12-book bibliography, and states the
paraphrase/synthesis idea-level attribution invariant.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 20:15:43 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Synthesizes the mission research note on the current AI regulatory
landscape (EU AI Act, GDPR, US federal/state, UK, China, sectoral rules,
enforcement, horizon scanning) into a dense jurisdiction-by-jurisdiction
reference. Book regulatory chapters are treated as historical context.
Flags the US federal/state position and the EU AI Act high-risk timing as
in-flux and to be verified at use time.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 20:08:38 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Author dense reference on transparency and explainability (XAI methods,
explainability requirements, disclosure, human-AI interaction,
auditability) synthesized from Responsible AI in the Enterprise, Platform
and Model Design for Responsible AI, and Introduction to Responsible AI.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 19:54:41 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Synthesizes stage gates, model inventory, lineage, drift detection, and
incident response across the AI lifecycle from the Platform and Model
Design, Designing Data Governance, and Data Governance Handbook sources
plus the technical-controls research note.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 19:48:03 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Teach the AI governance operating model: the six-step model, council and
steward roles, decision rights and RACI, federated vs centralized
structures, maturity, and culture. Synthesized from Designing Data
Governance from the Ground Up, the Data Governance Handbook, and the
org/board governance research note; original prose, no verbatim book
text.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 19:38:16 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Author the first ai-governance reference: what AI governance is, the six
core principles (fairness, accountability, transparency, privacy, safety,
human oversight), and the governance vs compliance vs risk distinction,
synthesized from the four primary books and current research.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
test_rejects_duplicate_catalog_names failed on case-sensitive CI
filesystems (Ubuntu ext4): the flat-layout fixture wrote both duplicate/
and Duplicate/ with frontmatter name: duplicate, so Duplicate/SKILL.md
tripped the name-match guard ('name must match directory name
"Duplicate"') before the duplicate-catalog check ran, hiding the
expected 'duplicate catalog name "duplicate"' error. Local macOS APFS
collapsed the two dirs and passed, concealing the defect.
Detect filesystem case-sensitivity with a Probe/probe probe. On
case-sensitive filesystems write duplicate/ (name: duplicate) and
Duplicate/ (name: Duplicate) so both pass the name-match guard and the
downcased-name collision fires the duplicate-catalog error. On
case-insensitive filesystems the dirs collapse into one, so write the
single dir with name: duplicate and assert the generator succeeds.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 17:44:11 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
The comment claimed docs/examples/ sat at "the same depth as a real
<name>/manifest.yaml". Under the flat layout a real manifest sits one
level below the repo root (resolving repo-root paths with ../), while
this example lives two levels below root (../../). Reword the comment
to describe the actual relationship without changing any path values,
field names, or schema content.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 17:05:47 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Rename the nested-skill fixture paths in test_nested_change_maps_to_nearest_skill_owner
from bundles/example to example so no tracked file (other than the OKF upstream
sample file) references the removed bundles/ directory, satisfying the final
repo-wide sweep (VAL-REF-017).
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 16:55:35 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Update the three hardcoded bundle manifest paths in run-corpus.sh and
validate-corpus-coverage.py from bundles/<name>/evals/evals.json to
<name>/evals/evals.json, refresh the coverage-index.json via --write-index,
and update the corpus prose (README, coverage-matrix, sources,
discovery-brief) to drop the bundles/ prefix.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 16:54:34 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Re-point promise-theory reference links to ../../workflow-architect/SKILL.md
(one level deeper than SKILL.md), drop the bundles/ prefix from the
pace-plan evidence-ledger path, and refresh the stale eval-coverage.py
comment to describe only the flat <root>/<skill-name>/SKILL.md shape.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 16:50:06 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Rewrite README.md Installation prose and references/skill-triggers.md to
drop the bundles/ depth and --full-depth guidance, relabel the architecture
diagram bundle node, and correct bundle-manifest-design.md to place manifests
at <skill>/manifest.yaml with the 8-umbrella count. Fix the example manifest
and schema descriptions, plus the production-excellence AGENTS.md depth note.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 16:48:49 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Author schema-valid evals/evals.json manifests (>=5 cases each) for the
tailscale sub-skills headscale-backup, headscale-deploy, headscale-derp,
headscale-node-lifecycle, headscale-routing, tailnet-policy, tailscale-client
and the workflow-architect sub-skills bundle-builder, interviewer, observer,
raising schema-valid coverage from 96/152 (63.2%) to 106/152 (69.7%). Remove
all 14 bundles/ entries from scripts/grandfathered-skills.txt now that the
8 umbrellas and 10 sub-skills all carry valid eval manifests.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 16:23:11 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Rework the description frontmatter of 4 moved skills (tailscale, and
workflow-architect sub-skills bundle-builder, interviewer, observer) so each
starts with a recognized imperative verb, and add "## When not to use" body
sections to all 13 moved skills surfaced by the flatten move (research-and-vault,
tailscale + its 7 sub-skills, workflow-architect + its 3 sub-skills) so every
one defines a negative boundary. Trigger vocabulary is preserved and every
description stays under 1024 chars. Regenerate llms.txt and
.claude-plugin/marketplace.json, which embed the tailscale description.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 16:13:32 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Update validate-skills.rb expected_catalog_paths to the flat */SKILL.md
glob (drop the bundles/ term), repoint the 8 README catalog headings to
<name>/SKILL.md, and fix the promise-theory and semantic-spacetime
workflow-architect links to ../workflow-architect/SKILL.md.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 16:07:01 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Update gen-lifecycle-matrix.rb and validate-lifecycle-matrix.rb to drop all
hardcoded bundles/ path references after the directory flatten:
- CANONICAL_BUNDLES now selects canonical bundles via */manifest.yaml (the
8 bundle dirs) instead of */SKILL.md (which would match every top-level
skill); keeps the 8-bundle invariant required by the validation contract.
- source strings, manifest paths, fallback frontmatter, and base dirs use
<name>/... at the repo root; the top-level JSON key stays "bundles".
- validate-lifecycle-matrix.rb re-anchors NESTED_HELPER_PATTERN to
%r{(?:^|/)skills/} so nested helpers (tailscale/skills/*,
workflow-architect/skills/*) are still detected in the catalogs, and
canonical_bundles matches the generator's */manifest.yaml glob.
- align the two matrix tests in test-validate-bundles.rb: canonical bundles
are manifest-having dirs (a manifest-less top-level skill is not a row),
and the missing-row rejection targets the demo manifest bundle.
- regenerate docs/lifecycle-capability-matrix.{md,json}.
gen check mode: "is current (8 bundles)"; validate:
"Validated lifecycle capability matrix (8 bundle(s)): complete, traceable, and current."
test-validate-bundles.rb: 14 runs, 307 assertions, 0 failures.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 15:53:43 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Drop the Dir.glob("#{ROOT}/bundles/*/SKILL.md") term from gen-llms-txt.rb,
gen-claude-marketplace.rb, and gen-codex-plugin.rb (the first glob */SKILL.md
now covers the 8 former bundle umbrellas) and refresh the header comments.
Regenerate llms.txt and .codex-plugin/plugin.json (./bundles/<name> ->
./<name>); .claude-plugin/marketplace.json is byte-identical. Update
test-gen-llms-txt.rb fixtures from bundles/zulu etc. to top-level zulu/ with
assertions [zulu](zulu/SKILL.md), and make the duplicate-guard test robust to
case-insensitive filesystems where case-variant dir names collapse.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 15:47:05 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Change bundle-manifest discovery from bundles/*/manifest.yaml to */manifest.yaml
and rebuild the tmpdir fixtures in test-validate-bundles.rb at the tmpdir root
so manifests live at <skill>/manifest.yaml and path fields use the flattened
relative depth. Refresh the validator's header comment.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-14 15:29:59 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Move the 8 directories under bundles/ to the repo root via git mv and
remove the now-empty bundles/ directory. Replace the "bundles" entry in
pyproject.toml [tool.deptry] extend_exclude with the 8 moved dir names so
the moved trees stay excluded from Python dependency analysis.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Add the M4 integration cross-links: a single reverse link in
promise-theory/references/foundations.md section 3.12 pointing to the
semantic-spacetime skill (the only promise-theory change), and one
FAILURE-MODE-INDEX.md row for semantic drift / meaning disagreement
following the file's concrete-trigger + real-skill-path rule. Refresh
stale milestone forward-references in semantic-spacetime/references/
foundations.md now that the M2 references and M3 tooling exist. Full
validate.yml-equivalent suite passes locally: 152 canonical skills, 96
eval manifests schema-valid, eval-coverage ratchet green (63.2%),
check-artifacts + jscpd + ruff/mypy/radon/deptry/bandit green, and the
fake-adapter eval smoke runs 6 trials with 0 failures.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-13 00:34:13 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
model lint now rejects anything outside the sst-model-v1 schema with exit 1
and a named violation: unknown top-level sections (e.g. 'regions:') and
unknown fields inside agents/promises/nodes/edges/acceptances/trajectories/
observations (e.g. 'bogus-field: 42' in a node). Violations name the unknown
key and its location, flow through the --json errors list, and never produce
a traceback. The template's RULES block documents the strictness, the
restricted-YAML subset boundary (anchors/aliases, block scalars, and
multi-document streams rejected exit 1; JSON accepted as an equivalent
representation), and the trajectory node-id reference rule (no edge-
connectivity check in v1). Adds a git-tracked malformed fixture
(tests/fixtures/invalid-model.yaml) and unit tests pinning both rejection
directions, plus unknown-field coverage in agent and edge entries.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-13 00:20:07 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Add scripts/semantic-spacetime.py, a stdlib-only Python 3.10+ CLI for
sst-model-v1 models: model lint (schema validation with coverage summary),
model map (gamma(3,4) text/mermaid/json rendering), model distance (weighted
hop distance, weight |link| + 1 per hop), model trajectory (simple-path
enumeration with cycle notes), and model drift (snapshot diff). Pins the
promise-contract.py conventions: exit codes 0/1/2, --json single-object
purity on dispatched paths, --dry-run no-op guard, never a traceback, module
import with no side effects.
Add the stdlib unittest suite (50 black-box subprocess cases), trigger
probes with the committed Load By Need routing and anti-trigger refusal
tables, and the tracked sample-model fixture materialized from the template's
delimited example. Update SKILL.md and README Quick Start to the real
--help command surface.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-12 23:49:54 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
Add the four application references completing the knowledge bundle:
applications-infrastructure.md (CFEngine mechanism set, convergence
semantics, descendant ecosystem, promise-keeping-as-data gap, SLOs,
record-of-time machinery, citable lessons), agent-coordination.md
(Burgess agent papers, SSTorytime/MCP-SST, drift and temporal-blindness
literature, MCP/A2A substrate, five [EXTRAPOLATION] synthesis patterns),
patterns.md (ten named patterns with when-to-use and anti-patterns), and
diagnosis-and-debugging.md (bounded three-pass procedure). Every claim is
provenance-marked; promise-theory content is linked, not restated.
SKILL.md Load By Need grows to 7 rows; gotchas 4/5 are grounded in
applications-infrastructure.md per VAL-ROUTE-019; README What You Get
lists the new references.
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>