Commit Graph
100 Commits
Author SHA1 Message Date
Magnus HedemarkandGitHub e10508b034 feat(bmad): add BMad control-plane protocol skill (#400)
* feat(bmad): add BMad control-plane protocol skill

New standalone methodology skill that lets any agent run the BMad method
(Breakthrough Method of Agile AI-Driven Development) as a harness-agnostic
control-plane protocol: five-field intent contracts, direct/bounded/initiative
classification, review-as-triage, failure routing by layer, and autonomy gating
with machine-readable spec status.

- SKILL.md protocol core with progressive disclosure + When not to use
- README.md human-facing install guide
- 9 references: protocol, classification, spec, lifecycle, project-context,
  review-and-failure-routing, autonomy, party-mode, adoption
- 4 templates: SPEC, INTENT, STORY, REVIEW
- scripts/check-spec.py + 16 tests (stdlib, deterministic spec validation)
- evals/evals.json: 9 output-quality cases
- Routing seams from bmad to adjacent skills and back from
  spec-driven-development, product-shaping, implementation-planning, neckbeard
- Catalog updates: root README, skill-triggers, marketplace/plugin/llms.txt

Closes #399

* fix(bmad): address droid-review findings

- check-spec.py: skip headings inside fenced/indented code blocks so a spec
  cannot PASS on section text that only appears in a code sample
- check-spec.py: catch UnicodeDecodeError on non-UTF-8 files and report FAIL
  instead of crashing
- STORY.md template: add created key for resumability/traceability parity
- SPEC.md template: split in-progress and in-review status bullets
- add 2 regression tests (heading-in-fence, non-UTF-8)

* fix(bmad): address droid-review round 2

- check-spec.py: read specs with utf-8-sig so a UTF-8 BOM cannot silently
  disable the frontmatter status check
- check-spec.py: handle standard YAML inline comments after status values
  (status: draft  # pending review) without a false FAIL
- references/protocol.md: make lifecycle phrasing consistent with
  lifecycle.md — four phases plus a learning closeout
- add 2 regression tests (BOM, inline comment)

* fix(bmad): tolerate trailing whitespace on frontmatter delimiters

A spec whose --- delimiter lines carry trailing spaces or tabs would silently
disable the status check and let an invalid status PASS. Relax the delimiter
pattern and add a regression test.

* fix(bmad): ignore inline comments in quoted status values

* fix(bmad): tolerate leading blank lines before frontmatter

* fix(bmad): fail closed on unparseable frontmatter, matching fence markers

Address droid-review round 5 and 6 findings as a single closed class:
- Fail closed when a file opens with a --- delimiter that cannot be parsed,
  so no whitespace/frontmatter permutation can silently disable the status
  check (previously: unparseable frontmatter was treated as 'no status'
  warning, letting an invalid status PASS).
- Track fence opener markers in collect_headings so a mismatched fence no
  longer closes a code block early (false-PASS on missing sections) and an
  unclosed fence no longer swallows real headings.
- Accept empty well-formed frontmatter (---\n---) and closing delimiters
  without a trailing newline.
- STORY.md template: parent-spec points at the sibling SPEC.md.
- README: status vocabulary is not a strict linear chain; blocked is a
  resumable routing signal.

Whitespace/frontmatter mutation sweep: 9 formatting variants x valid/invalid
status all verdict correctly; malformed delimiters fail closed. 29 tests.
2026-08-24 08:05:43 -04:00
Magnus HedemarkandGitHub e4cc9d7efd Merge pull request #398 from magnus919/docs/product-shaping-routing-seams
docs(skills): add product-shaping routing seams
2026-08-23 13:13:55 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> c0412b51bd docs(skills): add product-shaping routing seams (roadmapping bets boundary, neckbeard feature path)
- product-roadmapping-and-portfolio: name the bets boundary in "When Not
  to Use" — this skill sequences strategic bets across cycles; shaping a
  single bounded bet routes to product-shaping.
- product-shaping: sharpen the existing roadmapping boundary sentence to
  spell out bet vs. sequences (appetite + circuit breaker vs.
  continue/pause/kill across cycles).
- neckbeard README: route feature-sized work through product-shaping
  between discovery (product-discovery) and specification
  (spec-driven-development).

Docs-only routing seams per #394; no behavioral content changes.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-23 13:08:25 -04:00
Magnus HedemarkandGitHub af59c45bd5 Merge pull request #397 from magnus919/docs/neckbeard-cold-reader-contract
docs(neckbeard): require cold-reader issue bodies at the change-contract gate
2026-08-23 01:06:24 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> c568bac43e docs(neckbeard): require cold-reader self-contained issue bodies at the change-contract gate
Issue/ticket bodies emitted from a delivery run must be written for a cold
reader: a contributor with none of the session context and no access to the
agent's local artifacts. Encode this at the change-contract layer so any run
that emits tracker artifacts inherits it.

- templates/change-contract.md: new "Issue/ticket body (cold-reader
  requirement)" section listing the five requirements (background naming the
  investigation, complete inline evidence with file:line refs, reproduction
  commands runnable by a stranger, acceptance-criteria checkboxes, no
  agent-local paths or private-artifact references), plus a header-note
  pointer with the litmus test.
- references/journey.md: journey-level statement of the requirement plus
  pointers at phase 1 (intake output row) and phase 5 (verification-planning
  output row) where tracker artifacts are emitted.
- evals/evals.json: add case cold-reader-issue-body-gate covering a body draft
  that references off-repo artifacts ("artifact pyramid", local /tmp ledger,
  detail available on request) and must be rejected/rewritten by the gate.

Closes #385

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-23 01:02:16 -04:00
Magnus HedemarkandGitHub 864bb7d15b Merge pull request #396 from magnus919/docs/neckbeard-gate3-traceability
docs(neckbeard): require requester-outcome traceability at gate 3
2026-08-23 00:53:00 -04:00
Magnus HedemarkandGitHub 545f92a76a Merge pull request #393 from magnus919/feat/product-shaping-skill
feat(product-shaping): add Shape Up adaptation skill for bounded product work
2026-08-23 00:51:01 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 1cd5e19620 docs(neckbeard): require requester-outcome traceability at gate 3
Implements issue #378 (Finding F4 of the journey SDLC validation brief):
separate validation from verification in the change-request journey.

Gate 3 now requires that at least one SPEC.md acceptance criterion traces
to the requester's stated outcome/problem restated from primary evidence
in phase 2 - verification proves the build matches the spec; this
criterion proves it solves the requester's actual problem (15288/12207
validation vs. verification discipline).

- references/stages.md: authoritative new Gate 3 bullet (single source
  of truth for gate definitions)
- references/journey.md: phase 4 Output and Gate rows aligned, deferring
  to stages.md; phase-continuity and gate summary unchanged
- templates/change-contract.md: acceptance-criteria guidance requires a
  criterion tracing to the Problem section
- templates/delivery-packet.md: acceptance-criteria mapping field asks
  for the requester-outcome trace for the gate-3 verdict
- evals/evals.json: gate-3 assertions updated in four full-path cases;
  all 13 case IDs stable

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-23 00:48:12 -04:00
Magnus Hedemark 571acdffca chore(generated): refresh catalog artifacts after product-methodology description update 2026-08-23 00:45:30 -04:00
Magnus Hedemark 186e7d636a fix(product-methodology): start description with imperative verb
CI's changed-skill quality gate requires descriptions to begin with a
recognized imperative verb (repo AGENTS.md rule). The seam edit in this PR
made the file a changed skill, surfacing the pre-existing violation.
2026-08-23 00:45:30 -04:00
Magnus Hedemark 673335d21a feat(product-shaping): add Shape Up adaptation skill for bounded product work
New class-level methodology skill adapted from Ryan Singer's Shape Up
(Basecamp, 2019), extended for human+AI-agent build teams:

- SKILL.md: core loop (shape -> bet -> build -> move on) with entry-point
  routing and negative trigger boundaries
- 6 references: principles, shaping (incl. non-UI work), betting, building,
  hybrid-adaptation, anti-patterns (independent field record 2019-2026)
- 2 templates: PITCH.md (five ingredients), SCOPE_MAP.md (hill states)
- evals: 6 output-quality cases incl. hybrid and routing regression cases

Routing surfaces: catalog README entry, skill-triggers index row,
product-methodology seam (consume won bets; no pre-bet shredding).
Generated artifacts regenerated against current main.

Closes #387
2026-08-23 00:45:30 -04:00
Magnus HedemarkandGitHub b0f3a954de Merge pull request #395 from magnus919/docs/neckbeard-phase9-lesson-capture
docs(neckbeard): add skip-transparent lesson capture to phase 9 closeout
2026-08-23 00:41:04 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 7c0de4cb76 docs(neckbeard): add skip-transparent lesson capture to phase 9 closeout
Implements issue #377 (journey dossier F2, ADAPT verdict): phase 9 closeout
now records lesson capture per stages.md Stage 6 "Deliver and learn" — either
the reusable lesson(s) and their durable destination (skill, memory, or
project docs), or an explicit "no reusable lesson identified" determination.
Mirrors skip transparency: silent omission is prohibited. Terminal-state
semantics stay intact — lessons are recorded IN the terminal record; a fired
trigger or follow-up starts a new change request via phase 1 intake.

- references/journey.md: phase 9 Output row gains the lesson-capture field;
  phase-continuity row updated ("terminal; triggers and lessons recorded in
  the terminal record").
- references/delivery-packet.md: group (i) row gains lesson capture; terminal
  semantics cover lessons alongside triggers; skip-transparency doctrine
  cross-referenced for closeout lessons.
- templates/delivery-packet.md: section (i) fillable "Lessons captured" field
  with durable-destination note + example line.
- references/lifecycle.md: intro, terminal-states closeout note, and closeout
  row aligned with the extended group-(i) field set.
- evals/evals.json: expected_output + assertions extended in bug-fix-
  reproduction-regression and refactor-characterization-architecture-review
  (13 IDs stable).

stages.md untouched: Stage 6 already mandates lesson capture; journey/packet
now consume it. README table unchanged (still accurate).

Closes #377

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-23 00:36:25 -04:00
Magnus HedemarkandGitHub 11a5be93ef Merge pull request #392 from magnus919/docs/neckbeard-phase9-rollback-triggers
docs(neckbeard): record rollback/follow-up triggers at phase 9 closeout
2026-08-23 00:24:38 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 176086dc48 docs(neckbeard): record rollback/follow-up triggers at phase 9 closeout
Implements issue #376 (journey dossier F1, ADAPT-minimal verdict): phase 9
closeout now records rollback/follow-up triggers alongside terminal state +
release evidence, stating what would cause re-entry; operational discoveries
route to a NEW change request via phase 1 intake instead of resurrecting the
terminal packet. Terminal-state semantics stay intact.

- references/journey.md: phase 9 Output row gains trigger fields + new-CR
  routing; phase-continuity row updated ("terminal; triggers recorded in the
  terminal record").
- references/delivery-packet.md: group (i) row gains trigger fields; terminal
  semantics clarify triggers are recorded in, not re-opening, the packet.
- templates/delivery-packet.md: section (i) fillable field + example.
- references/lifecycle.md: intro, terminal-states note, closeout row aligned.
- evals/evals.json: assertions extended in bug-fix-reproduction-regression,
  schema-migration-rollback-release-readiness, release-authority-blocked-
  terminal-state (13 IDs stable).
- research brief: F1 citation of "SKILL.md step 6" corrected to step 5.

No phase added; stages.md untouched (lesson capture is issue #377).

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-23 00:20:42 -04:00
Magnus HedemarkandGitHub a855475258 Merge pull request #391 from magnus919/ci/skillevaluator-advisory-gate
ci(skillevaluator): add advisory SkillEvaluator quality gate
2026-08-23 00:11:28 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> aa19b692f9 ci(skillevaluator): add advisory SkillEvaluator quality gate
Add NVIDIA SkillEvaluator as an advisory (non-blocking) Tier 1 gate on
PRs and pushes touching skill-relevant paths. Runs the documented
keyless check set (schema,pii,license,quality,unicode,lint) pinned to
skillevaluator v0.1.0 per changed skill, uploads JSON reports as an
artifact, and posts one advisory summary line per skill to the job log.

SkillSpector is deliberately not installed: upstream still ships it
"separately installed and unpinned", so the security scan is excluded
by design until a documented compatible pair exists.

Closes #383

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-23 00:06:26 -04:00
Magnus HedemarkandGitHub 74dc86f61d Merge pull request #390 from magnus919/chore/polish-grade-c-skills-part2
chore(skills): polish grade-C skills (part 2 of 2)
2026-08-22 23:45:23 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> c628897b6f chore(catalog): regenerate artifacts for updated yc-weekly-growth-compass description
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 23:38:55 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 1a6d77972a chore(writers-helper): add Available Scripts table and Prerequisites/Limitations
Convert the prose Scripts list into the formal table with copy-pasteable
invocations verified against each script --help, and add factual
Prerequisites and Limitations.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 23:38:55 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 1f281206df chore(workflow-architect): add Prerequisites and Limitations sections
This resource-based skill ships no scripts, so instead of an Available
Scripts table, document the resources it loads (sub-skill protocols,
references, generation templates), the agent capabilities it needs, and
its real limitations (Hermes-runtime targeting, observation-mode turn
threshold, inference-only discovery).

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 23:38:55 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 82f740f12a chore(nous-branding): add Available Scripts table and Prerequisites/Limitations
Consolidate the two generation/post-processing scripts into the formal
Available Scripts table and add factual Prerequisites and Limitations,
slotting cleanly into the post-#382 references structure.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 23:38:43 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> cedf44c295 chore(data-cleaning): add Available Scripts table and Prerequisites/Limitations
Document both previously undocumented pytest suites alongside the profiler
and reconciler in the formal table, and add factual Prerequisites and
Limitations.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 23:38:43 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> dbec36cddd chore(yc-weekly-growth-compass): add Prerequisites/Limitations, fix description gate
Add factual Prerequisites and Limitations. Lead the description with an
imperative verb and add an explicit negative boundary to satisfy the
quality validator; keep trigger keywords intact.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 23:38:43 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> c9c4fc531b feat(yc-weekly-growth-compass): add eval manifest and fix stale script flags
Add schema-v1 evals/evals.json with six cases covering growth check-ins,
series trending with time-to-target, decision framing, projections, a
should-not-trigger case, and benchmark honesty. Fix documented flags that
do not exist in the script (--project-weeks/--target-revenue/--add-to-
weekly) to the real ones (--project-periods/--target-value/--dry-run).

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 23:38:43 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 249224507c feat(woodpecker-ci): add eval manifest for output quality
Add schema-v1 evals/evals.json with seven cases covering compose deployment,
pipeline YAML authoring, queued-pipeline diagnosis, secret safety for
untrusted PRs, forge-admin scope boundary, GitHub Actions should-not-
trigger, and upgrade/backup planning.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 23:38:29 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 62dd315520 chore(woodpecker-ci): add Available Scripts table and Prerequisites/Limitations
Formalize the woodpecker-doctor.py entry into an Available Scripts table,
add factual Prerequisites and Limitations, and normalize the negative-
boundary heading so the quality gate recognizes it.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 23:38:29 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 2069855ee8 chore(tailscale): add Available Scripts table and Prerequisites/Limitations
Convert the prose Root Scripts list into the formal Available Scripts table
with copy-pasteable invocations, and add factual Prerequisites and
Limitations from compatibility frontmatter and bundle behavior.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 23:38:29 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> f09efcdb8f feat(lastfm): add eval manifest for output quality
Add schema-v1 evals/evals.json with six cases covering listening stats,
discovery pipelines, scrobble auth requirements, geo charts, playback
should-not-trigger routing, and period/JSON handling.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 23:38:18 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 8675b765e5 chore(lastfm): add Available Scripts table and Prerequisites/Limitations
Convert the implicit CLI documentation into the formal table (including the
previously undocumented test-lastfm.sh), add factual Prerequisites and
Limitations from compatibility frontmatter and known gotchas, and add the
missing negative-boundary section required by the quality gate.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 23:38:18 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 49cdf1b533 feat(flaresolverr): add eval manifest for output quality
Add schema-v1 evals/evals.json with seven faithful cases covering challenge-
blocked retrieval, health checks, session POSTs, routing to flaresolverr-cli,
auth-bypass refusal, setup guidance, and a should-not-trigger bulk scrape.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 23:38:00 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> e1db555610 chore(flaresolverr): add Available Scripts table and Prerequisites/Limitations
Document the previously undocumented test-flaresolverr.sh alongside the CLI
in a formal Available Scripts table, and add factual Prerequisites and
Limitations derived from the skill real behavior.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 23:37:49 -04:00
Magnus HedemarkandGitHub d9afd1d396 Merge pull request #389 from magnus919/chore/polish-grade-c-skills-part1
chore(skills): polish grade-C skills (part 1 of 2)
2026-08-22 23:21:03 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 1a9df7c38a chore(catalog): regenerate artifacts for updated agent-council description
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 23:15:23 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 2812a927bb feat(agent-council): add eval manifest for output quality
Six schema-v1 eval cases grounded in real skill behavior: council
invocation and bootstrapping, convergence-diagnostic reading,
quick-mode selection, claims-verification discipline, profile-library
fallback, plus one should-not-trigger case for simple factual lookups.
Satisfies the eval-coverage ratchet for this modified skill.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 23:15:23 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 6efee5ce2b feat(agent-council): document bootstrap script, add Prerequisites/Limitations, fix description boundary
Add an Available Scripts table for scripts/bootstrap.py with invocation
and run-when guidance; add Prerequisites and Limitations covering the
single-model debate design and claims-verification guardrail. Lead the
frontmatter description with the imperative verb Run and add an explicit
negative boundary so the changed skill passes the CI quality gate; all
trigger keywords are preserved.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 23:15:23 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 077c5d0988 chore(actuarial-risk-modeling): add Available Scripts table and document test suite
Add an Available Scripts table covering risk_preflight.py,
temporal_split_audit.py, and the previously undocumented test_risk_scripts.py;
add Prerequisites and Limitations for the dependency-free first-pass scripts.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 23:15:06 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 8b02175bf7 chore(semantic-spacetime): add Available Scripts table and Prerequisites/Limitations
Document semantic-spacetime.py subcommands (lint/map/distance/trajectory/drift)
in an Available Scripts table with invocation and run-when guidance; add
Prerequisites and Limitations grounded in the CLI's read-only model analysis.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 23:15:06 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 3cc8c8f0f7 chore(promise-theory): add Available Scripts table and Prerequisites/Limitations
Document promise-contract.py (lint/render commands) in an Available
Scripts table with invocation and run-when guidance; add Prerequisites
and Limitations reflecting static validation scope and the not-contract-law boundary.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 23:15:06 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 9e079f70f5 chore(life-coach): add Available Scripts table and Prerequisites/Limitations
Document validate-capabilities.py in an Available Scripts table with
invocation and onboarding-timing guidance; add Prerequisites and
Limitations reflecting the no-capability fallback and nonclinical scope.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 23:14:57 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> ba7f05f490 chore(cncf-landscape): add Available Scripts table and Prerequisites/Limitations
Document landscape_query.py in an Available Scripts table with a
copy-pasteable invocation and run-when guidance; add Prerequisites and
Limitations grounded in the tool's snapshot-based, read-only design.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 23:14:57 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 81b104b826 chore(ascii-city-engine): add Available Scripts table and Prerequisites/Limitations
Document validate-city-pack.py in an Available Scripts table with
invocation and workflow-step timing; add Prerequisites and Limitations
covering v1 geometry bounds, CPU rendering, and offline validation scope.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 23:14:30 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 47cd4d430a chore(dsm5): add Available Scripts table and Prerequisites/Limitations
Document lookup.py in an Available Scripts table with invocation and
run-when guidance tied to the routing workflow; add Prerequisites and
Limitations reflecting the stdlib-only local-library search.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 23:14:30 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> a9e93c023a chore(aeo): add Available Scripts table and Prerequisites/Limitations
Convert the prose script list into an Available Scripts table covering
aeo_audit.py, build_prompt_matrix.py, and test_aeo_scripts.py with
copy-pasteable invocations and run-when guidance; add Prerequisites and
Limitations derived from the skill's compatibility notes.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 23:14:30 -04:00
Magnus HedemarkandGitHub ae96c47f81 Merge pull request #388 from magnus919/feat/token-budget-gate
feat(validation): add SKILL.md token-budget gate and split oversized skills
2026-08-22 22:52:20 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> c427762276 chore(catalog): regenerate artifacts for updated epub description
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 22:47:53 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> deb802fbb6 feat(epub): collapse SKILL.md sections and add eval manifest
Body was ~19.5k chars, past the new 20k token-budget gate. Collapses
Capability Discovery to a stub pointing at the existing
references/agent-capability-discovery.md, summarizes Apple Books
compatibility instead of duplicating its table, and moves the LLM
Configuration Convention plus the Knowledge Extraction Deep Dive into
references/llm-config-and-extraction.md. Keeps format essentials, the
script decision table, CLI examples, workflows, gotchas, and pitfalls,
and extends the references index with the two touched/new files; body
is now 16,261 chars.

Also adds evals/evals.json (6 output-quality cases incl. one
should-not-trigger case) to satisfy the eval-coverage ratchet.

The description previously started with "EPUB", which fails the
imperative-verb rule that CI enforces on every changed skill; it now
leads with "Read" while keeping all trigger keywords. Adds a
"When not to use" section (non-EPUB documents, DRM-locked books,
Kindle-native formats). Regenerates .claude-plugin/marketplace.json
and llms.txt accordingly.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 22:47:53 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 18f78a1c20 docs(migration-engineering): split SKILL.md into focused references
Body was ~20.5k chars, past the new 20k token-budget gate. Moves the
five migration-type classifications into
references/migration-types.md and the structured planning field tables
into references/planning-fields.md (cross-referencing
templates/migration-plan.md). SKILL.md keeps triggers, boundaries,
the workflow skeleton with summaries pointing at existing references,
the Loading Guide (now including both new files), and specialist
routing; body is now 11,432 chars.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 22:47:16 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> c8103784f8 feat(nous-branding): split SKILL.md into focused references
Body was ~24k chars, past the new 20k token-budget gate. Moves the
style-lane grammar + prompt cues + asset catalog into
references/style-lanes.md, the full visual system (palettes, mascot,
typography, textures, art style) into references/visual-system.md, and
post-processing modes/intensity calibration into
references/post-processing.md. SKILL.md keeps triggers, the negative
boundary, prompt templates, API notes, anti-patterns, compliance
checklist, and a Loading Guide table; body is now 12,042 chars.

Also adds evals/evals.json (6 output-quality cases incl. one
should-not-trigger case) to satisfy the eval-coverage ratchet, and adds
a "When not to use" section so the changed-skill quality gate passes.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 22:47:16 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 4006940e86 feat(validation): add SKILL.md token-budget gate to validate-skills.rb
Issue #382: the 500-line cap alone lets dense prose slip through, so
bodies are now measured in characters (~4 chars/token proxy for the
~5,000-token budget) after stripping YAML frontmatter. Bodies over
20,000 characters hard-error with split-into-references remediation,
mirroring the existing oversized-reference gate (#277).

Adds ReferenceFileScan.oversized_skill_md_errors next to
oversized_reference_errors, wired into the per-skill loop, with
Minitest coverage: under-limit passes, over-limit fails with path and
size, exactly-at-limit passes (strict >), huge-frontmatter/tiny-body
passes, missing-frontmatter stays silent (reported elsewhere), and
missing SKILL.md is ignored.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 22:46:58 -04:00
Magnus HedemarkandGitHub 9e40609768 Merge pull request #386 from magnus919/chore/pin-npx-versions
chore(docs): pin npx package versions in skill docs
2026-08-22 22:19:02 -04:00
Magnus Hedemark a880fc5be6 feat(hugo-theme): add eval manifest for output quality 2026-08-22 22:15:57 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> b0845776a1 chore(docs): pin npx package versions in skill docs (Fixes #381)
Pin copy-pasteable npx invocations to explicit versions so agents
executing them verbatim get reproducible behavior:

- playwright docs: npx playwright@1.62.1 (SKILL.md, README.md,
  references 02-selectors / 05-ci-integration / 07-accessibility)
- mermaid-diagrams: @mermaid-js/mermaid-cli@11.16.0 (SKILL.md,
  references/pdf-rendering-pipeline.md)
- hugo-theme seo-outputs-testing: @axe-core/cli@4.13.0
- agent-skills using-scripts.md: strengthen version-pinning bullet
  into a normative rule for copy-pasteable commands

Reword the anydoc cli-reference "Version pinning" prose so the
anti-pattern is explained didactically without presenting an unpinned
command as a recipe; the @0.1.6 house pin is unchanged.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 22:07:49 -04:00
Magnus HedemarkandGitHub 688611ec15 Merge pull request #379 from magnus919/docs/research-methodology-timeout-recovery
docs(research-methodology): add interruption and timeout recovery guidance
2026-08-22 18:39:16 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 7b70935ead feat(research-methodology): add eval manifest for output quality
Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 18:35:43 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933558+factory-droid[bot]@users.noreply.github.com> 78dc36e5e8 docs(research-methodology): add when-not-to-use negative boundary
Co-authored-by: factory-droid[bot] <138933558+factory-droid[bot]@users.noreply.github.com>
2026-08-22 18:26:40 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933558+factory-droid[bot]@users.noreply.github.com> 2c7c0d59ea docs(research-methodology): add interruption and timeout recovery guidance
Document that a delegated research worker timeout is an interruption, not a
result: recover partial artifacts, resume from the last durable checkpoint,
and judge completion by evidence completeness rather than elapsed time.

Co-authored-by: factory-droid[bot] <138933558+factory-droid[bot]@users.noreply.github.com>
2026-08-22 18:20:20 -04:00
Magnus HedemarkandGitHub ea26d12be3 Merge pull request #375 from magnus919/research/neckbeard-journey-sdlc-validation
research(neckbeard): nine-phase journey validation against SDLC frameworks (#372)
2026-08-22 18:15:09 -04:00
Magnus HedemarkandGitHub 02c807aa0b Merge branch 'main' into research/neckbeard-journey-sdlc-validation 2026-08-22 18:12:30 -04:00
Magnus HedemarkandGitHub 8e6d633a37 Merge pull request #330 from magnus919/dependabot/pip/types-jsonschema-gte-4.26.0.20260518
chore(deps-dev): update types-jsonschema requirement from >=4 to >=4.26.0.20260518
2026-08-22 18:12:02 -04:00
Magnus HedemarkandGitHub a4f3557e8f Merge pull request #329 from magnus919/dependabot/pip/ruff-gte-0.16.3
chore(deps-dev): update ruff requirement from >=0.16.1 to >=0.16.3
2026-08-22 18:11:55 -04:00
Magnus HedemarkandGitHub e48751af26 Merge pull request #328 from magnus919/dependabot/pip/pytest-xdist-gte-3.8.0
chore(deps-dev): update pytest-xdist requirement from >=3.0 to >=3.8.0
2026-08-22 18:11:49 -04:00
Magnus HedemarkandGitHub 743acc354c Merge pull request #285 from magnus919/dependabot/pip/deptry-gte-0.25.1
chore(deps-dev): update deptry requirement from >=0.20 to >=0.25.1
2026-08-22 18:11:42 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933558+factory-droid[bot]@users.noreply.github.com> b1412a313c research(neckbeard): validate nine-phase journey against SDLC and agentic frameworks (#372)
Comparative dossier mapping the nine-phase change-request journey against
ISO/IEC/IEEE 15288, ISO/IEC/IEEE 12207, CMMI-DEV V1.3, and ITIL 4, plus
Anthropic Building Effective Agents, the OpenAI practical guide to building
agents, and the Agent Skills specification.

Conclusion: no material structural gaps. Three ADAPT-class documentation
recommendations (phase-9 rollback/follow-up triggers, phase-9 lesson capture
aligned with stages.md Stage 6, requester-outcome traceability at gate 3);
retirement/decommissioning confirmed as deliberate scope boundary; gate
placement converges with published agentic practice.

Co-authored-by: factory-droid[bot] <138933558+factory-droid[bot]@users.noreply.github.com>
2026-08-22 18:09:22 -04:00
Magnus HedemarkandGitHub e27a510e6d Merge pull request #284 from magnus919/dependabot/pip/radon-gte-6.0.1
chore(deps-dev): update radon requirement from >=6.0 to >=6.0.1
2026-08-22 17:59:55 -04:00
Magnus HedemarkandGitHub 0e9c085a15 Merge branch 'main' into dependabot/pip/radon-gte-6.0.1 2026-08-22 17:56:45 -04:00
Magnus HedemarkandGitHub f21eeeda04 Merge pull request #252 from magnus919/release-please--branches--main
chore(main): release 0.7.0
2026-08-22 17:48:11 -04:00
Magnus HedemarkGitHubfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
1c6982f5e9 Merge pull request #373 from magnus919/feat/neckbeard-position-assessment
feat(neckbeard): position-assessment entry mode and tracker-neutral intake

Closes #371. Merged at head 5aee6fc after branch update from main; CI green at that SHA on the merged tree (validate, paired-eval-smoke, paired-eval-tests).

Six rounds of droid-review did not converge to zero findings; per the documented stop, the four remaining non-blocking prose-consistency findings (two touching trust-boundary doctrine) are recorded in the PR timeline as follow-up material for a separate reviewed change.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 17:43:05 -04:00
Magnus HedemarkandGitHub 5aee6fcf9d Merge branch 'main' into feat/neckbeard-position-assessment 2026-08-22 17:38:28 -04:00
Magnus HedemarkandGitHub fb8f5c8894 Merge pull request #374 from magnus919/feat/litellm-skill
feat(skill): add LiteLLM AI gateway operations skill
2026-08-22 15:35:58 -04:00
Magnus Hedemarkandfactory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com> 030e6dfd47 feat(skill): add LiteLLM AI gateway operations skill
Add litellm/, an operational tool skill for the LiteLLM AI gateway (proxy)
and Python SDK, in the same vein as the vllm and llama-cpp engine skills.

Contents:
- SKILL.md: operating contract, operating loop, verification boundaries,
  and hard boundaries; concise core sections routing depth to references
- README.md: human-facing install/use guide with required sections
- references/: nine dated, source-indexed references (source index,
  quickstart + SDK, config & routing, keys/teams/budgets/spend, caching &
  guardrails, observability & logging, deployment, security & public
  hosting, troubleshooting), researched against litellm 1.97.0
  (2026-08-22) including a live proxy probe of the health endpoints
- scripts/litellm-health: read-only GET-only probe (liveliness, readiness,
  /v1/models, /model/info); stdlib-only Python 3.9+, --json, --help
  without a server
- tests/test_litellm_health.py: 18 deterministic tests against a local
  stub HTTP server, including the observed-traffic GET-only contract
- templates/proxy-config-record.md and proxy-deployment.md: fillable
  records; the config record is the rollback unit
- evals/evals.json: schema_version 1, six output-quality cases

Also regenerates tracked catalog artifacts (.claude-plugin/marketplace.json,
.codex-plugin/plugin.json, llms.txt) and adds the root README catalog entry
plus the skill-triggers.md index row.

AI assistance: authored with AI assistance (Factory Droid) under human
direction; facts verified against litellm 1.97.0 and official docs dated
2026-08-22.

Co-authored-by: factory-droid[bot] <138933559+factory-droid[bot]@users.noreply.github.com>
2026-08-22 15:31:16 -04:00
Magnus HedemarkandGitHub f7d550bb6b fix(site-reliability): make recovery closure gate explicit (#370)
* fix(site-reliability): make recovery closure gate explicit

Signed-off-by: Magnus Hedemark <magnus919@pm.me>

* fix(site-reliability): close review gaps

Signed-off-by: Magnus Hedemark <magnus919@pm.me>

* fix(site-reliability): link closure evidence sequence

Signed-off-by: Magnus Hedemark <magnus919@pm.me>

* fix(site-reliability): link executive closure evidence

Signed-off-by: Magnus Hedemark <magnus919@pm.me>

* fix(site-reliability): close authorization and monitoring gaps

Signed-off-by: Magnus Hedemark <magnus919@pm.me>

* fix(site-reliability): close mutation and monitoring gaps

Signed-off-by: Magnus Hedemark <magnus919@pm.me>

* fix(site-reliability): gate detailed runbook mutations

Signed-off-by: Magnus Hedemark <magnus919@pm.me>

* fix(site-reliability): gate remaining operational paths

Signed-off-by: Magnus Hedemark <magnus919@pm.me>

* fix(site-reliability): make authorization evidence attributable

Signed-off-by: Magnus Hedemark <magnus919@pm.me>

* fix(site-reliability): close final review gaps

Signed-off-by: Magnus Hedemark <magnus919@pm.me>

* fix(site-reliability): require independent recovery confirmation

Signed-off-by: Magnus Hedemark <magnus919@pm.me>

* fix(site-reliability): close recovery evidence review gaps

Signed-off-by: Magnus Hedemark <magnus919@pm.me>

* fix(site-reliability): complete human recovery handoff

Signed-off-by: Magnus Hedemark <magnus919@pm.me>

* fix(site-reliability): normalize recovery status tokens

Signed-off-by: Magnus Hedemark <magnus919@pm.me>

* fix(site-reliability): require independent resolution approval

Signed-off-by: Magnus Hedemark <magnus919@pm.me>

* fix(site-reliability): close authorization consistency gaps

Signed-off-by: Magnus Hedemark <magnus919@pm.me>

* fix(site-reliability): normalize incident status guidance

Signed-off-by: Magnus Hedemark <magnus919@pm.me>

* fix(site-reliability): carry human confirmation through resolution

Signed-off-by: Magnus Hedemark <magnus919@pm.me>

* fix(site-reliability): complete incident closure evidence

Signed-off-by: Magnus Hedemark <magnus919@pm.me>

* fix(site-reliability): remove automated recovery claim

Signed-off-by: Magnus Hedemark <magnus919@pm.me>

* fix(site-reliability): normalize monitoring announcement

Signed-off-by: Magnus Hedemark <magnus919@pm.me>

---------

Signed-off-by: Magnus Hedemark <magnus919@pm.me>
2026-08-22 06:27:18 -04:00
Magnus HedemarkandGitHub 1291f9576e fix: SkillOpt optimize AI operating economics (#369)
* fix: SkillOpt epoch 1 for AI operating economics

Promote cold-load entry points, quick-start reference routing, the minimum decision-record contract, and trigger-oriented progressive disclosure.

Signed-off-by: Magnus Hedemark <magnus919@pm.me>

* fix: SkillOpt epoch 2 for AI operating economics

Add review-depth selection, evidence-to-disposition guidance, and scenario-led routing across adjacent skills.

Signed-off-by: Magnus Hedemark <magnus919@pm.me>

* fix: SkillOpt epoch 3 for AI operating economics

Expose a minimum claim ledger and explicit closure conditions for every bounded disposition.

Signed-off-by: Magnus Hedemark <magnus919@pm.me>

* fix: resolve SkillOpt review consistency findings

Align entry-point paths, canonical step routing, claim-ledger fields, and triage disposition wording.

Signed-off-by: Magnus Hedemark <magnus919@pm.me>

* fix: resolve final SkillOpt disposition wording

Keep review-depth outputs inside the canonical disposition set and distinguish supported claims from permitted language.

Signed-off-by: Magnus Hedemark <magnus919@pm.me>

* fix: complete SkillOpt routing correction

Route triage through the outcome-map step and identify the evidence-classification step explicitly.

Signed-off-by: Magnus Hedemark <magnus919@pm.me>

* fix: complete AI economics review template

Add the minimum decision-record fields required by the optimized skill routing contract.

Signed-off-by: Magnus Hedemark <magnus919@pm.me>

---------

Signed-off-by: Magnus Hedemark <magnus919@pm.me>
2026-08-21 16:21:23 -04:00
Magnus HedemarkandGitHub 94b7231147 feat: add AI operating economics skill (#368)
* feat: add AI operating economics skill

Add an evidence-led methodology for evaluating AI workflow value, cost, worker effects, quality guardrails, and authority expansion. Includes research references, durable decision templates, and six eval cases. AI assistance: Jasper, on behalf of Magnus Hedemark.

Signed-off-by: Magnus Hedemark <magnus919@pm.me>

* fix: resolve AI economics review findings

Align section numbering, evidence-language examples, and intervention-mode terminology identified by the exact-head review.

Signed-off-by: Magnus Hedemark <magnus919@pm.me>

---------

Signed-off-by: Magnus Hedemark <magnus919@pm.me>
2026-08-21 13:53:49 -04:00
Magnus HedemarkandGitHub 00e611ae88 fix(architecture): route distributed mechanisms to DDIA (#367)
Add progressive DDIA handoff and focused replication, partitioning, fencing, and isolation eval coverage.\n\nAI-assisted: Jasper orchestrated implementation and verification with OpenCode.

Signed-off-by: Magnus Hedemark <magnus919@pm.me>
2026-08-21 06:13:32 -04:00
Magnus HedemarkandGitHub f6dc2cea9f feat(diagrams): add communication quality gates (#364)
Add audience, narrative, hierarchy, representation, accessibility, uncertainty, review evidence, and eval coverage for C4 and Mermaid artifacts.\n\nAI-assisted: Jasper orchestrated implementation and verification with OpenCode.

Signed-off-by: Magnus Hedemark <magnus919@pm.me>
2026-08-21 05:32:35 -04:00
Magnus HedemarkandGitHub 05e6a038d2 feat(capacity): add tenant demand and unit cost (#363)
Add distribution, skew, headroom, fairness, cost allocation, representative evidence, templates, evals, and specialist routing.\n\nAI-assisted: Jasper orchestrated implementation and verification with OpenCode.

Signed-off-by: Magnus Hedemark <magnus919@pm.me>
2026-08-21 05:01:58 -04:00
Magnus HedemarkandGitHub 016be9c1e8 feat(security): deepen tenant boundary controls (#362)
Add plane separation, identity propagation, support access, resource isolation, lifecycle proof, exhaustion threats, evals, and specialist routing.\n\nAI-assisted: Jasper orchestrated implementation and verification with OpenCode.

Signed-off-by: Magnus Hedemark <magnus919@pm.me>
2026-08-21 04:32:29 -04:00
Magnus HedemarkandGitHub 79caa0bb25 feat(backend): add event and coexistence patterns (#361)
Add outbox/inbox implementation, idempotent message handling, migration coexistence seams, evals, and exact specialist routing.\n\nAI-assisted: Jasper orchestrated implementation and verification with OpenCode.

Signed-off-by: Magnus Hedemark <magnus919@pm.me>
2026-08-21 03:53:10 -04:00
Magnus HedemarkandGitHub 11381f89c3 feat: add multi-tenant SaaS architecture (#360)
Add tenant semantics, planes, tenancy models, lifecycle and commercial handoffs, operations, templates, evals, and specialist routing.\n\nAI-assisted: Jasper orchestrated implementation and verification with OpenCode.

Signed-off-by: Magnus Hedemark <magnus919@pm.me>
2026-08-21 03:13:16 -04:00
Magnus HedemarkandGitHub 8174e820e2 feat: add enterprise architecture methodology (#359)
Add capability and portfolio mapping, state transitions, operating models, decision rights, stakeholder information, templates, evals, and neighboring-owner routing.\n\nAI-assisted: Jasper orchestrated implementation and verification with OpenCode.

Signed-off-by: Magnus Hedemark <magnus919@pm.me>
2026-08-21 02:49:55 -04:00
Magnus HedemarkandGitHub 73a4250f74 feat: add software architecture methodology (#358)
Add system-level architecture design, tradeoff, distributed workflow, evolution, facilitation, template, eval, and adjacent-owner routing guidance.\n\nAI-assisted: Jasper orchestrated implementation and verification with OpenCode.

Signed-off-by: Magnus Hedemark <magnus919@pm.me>
2026-08-21 02:03:24 -04:00
Magnus HedemarkandGitHub cc70502f79 feat(radar): make architecture governance proportional (#357)
Replace board-centric defaults with consequence-driven governance modes, feedback loops, exceptions, and clear ownership boundaries.\n\nAI-assisted: Jasper orchestrated implementation and verification with OpenCode.

Signed-off-by: Magnus Hedemark <magnus919@pm.me>
2026-08-21 01:20:21 -04:00
Magnus HedemarkandGitHub a56360b9a2 feat(adr): deepen fitness-function evidence (#356)
Add a lifecycle method and reusable record for connecting architecture decisions to checks, evidence, review, exceptions, and retirement.\n\nAI-assisted: Jasper orchestrated implementation and verification with OpenCode.

Signed-off-by: Magnus Hedemark <magnus919@pm.me>
2026-08-21 00:51:46 -04:00
Magnus HedemarkandGitHub db2ad850be feat(architecture): deepen codebase analysis (#355)
Add evidence lenses for characteristics, coupling, decomposition, data authority, workflows, health reporting, and eval coverage.\n\nAI-assisted: Jasper orchestrated implementation and verification with OpenCode.

Signed-off-by: Magnus Hedemark <magnus919@pm.me>
2026-08-21 00:09:03 -04:00
Magnus HedemarkandGitHub cc0274f392 feat(api): add landscape governance and topology (#354)
Add portfolio, lifecycle, topology, policy-placement, assessment, and eval guidance while preserving contract ownership boundaries.\n\nAI-assisted: Jasper orchestrated implementation and verification with OpenCode.

Signed-off-by: Magnus Hedemark <magnus919@pm.me>
2026-08-20 23:44:27 -04:00
Magnus HedemarkandGitHub fe9b268db7 feat(migration): add service extraction guidance (#353)
Add evidence-first extraction patterns, assessment templates, modular-monolith retention criteria, and eval coverage.\n\nAI-assisted: Jasper orchestrated implementation and verification with OpenCode.

Signed-off-by: Magnus Hedemark <magnus919@pm.me>
2026-08-20 23:24:06 -04:00
Magnus HedemarkandGitHub 79629625fb docs(data-architect): complete README inventory (#352)
Document scripts and templates and add a concrete Quick Start command.\n\nAI-assisted: Jasper implemented and verified this late-review follow-up.

Signed-off-by: Magnus Hedemark <magnus919@pm.me>
2026-08-20 22:55:37 -04:00
Magnus HedemarkandGitHub f73162d176 feat: add GxP AI governance coverage (#348)
* feat: add GxP AI governance coverage

* fix: complete GxP governance attribution and evaluation coverage

* fix: complete GxP provenance references

* fix: expose GxP routing and complete research provenance

* chore: regenerate marketplace metadata

* chore: regenerate marketplace metadata

* chore: regenerate llms skill catalog
2026-08-20 22:48:41 -04:00
Magnus HedemarkandGitHub 3d8ad446b9 feat(data-architect): add mesh and event product guidance (#350)
Add readiness, governance, recovery, pattern, workshop, and eval coverage for operational data architecture decisions.\n\nAI-assisted: Jasper orchestrated research, implementation, and verification with OpenCode.

Signed-off-by: Magnus Hedemark <magnus919@pm.me>
2026-08-20 22:28:08 -04:00
Magnus HedemarkandGitHub 2c98cff6cc feat: enrich site reliability engineering skill from O'Reilly SRE books
Enrich SRE skill with source-grounded adoption, design, dependency, human-systems, documentation guidance, templates, and evals.
2026-08-20 22:07:39 -04:00
Magnus HedemarkandGitHub 639fdf6237 fix: optimize actuarial risk modeling navigation (#333) 2026-08-20 18:57:10 -04:00
Magnus HedemarkandGitHub c990f0531c feat(skill): add actuarial risk modeling methodology (#332)
* feat(skill): add actuarial risk modeling methodology

* fix(skill): refresh generated catalogs
2026-08-20 16:20:48 -04:00
Magnus HedemarkandGitHub ed68466e04 fix: optimize digital-twin through three SkillOpt epochs (#327)
Signed-off-by: Magnus Hedemark <magnus919@pm.me>
2026-08-19 15:13:13 -04:00
Magnus HedemarkandGitHub fe71295226 feat: add digital-twin skill (#326)
Signed-off-by: Magnus Hedemark <magnus919@pm.me>
2026-08-19 13:30:25 -04:00
Magnus HedemarkandGitHub b57fe513e8 feat: add dedicated AEO skill
Merge dedicated AEO skill with implementation references, templates, scripts, evals, and SEO routing.
2026-08-18 20:45:14 -04:00
Magnus HedemarkandGitHub dde5fa1020 feat: add data-cleaning skill bundle (#324)
Merge authorized after exact-head validation and paired evaluation checks passed. The follow-up Droid review run on head df31b25 stalled in the model step and ended with an automation error; its actionable findings from the prior review were fixed and independently verified.
2026-08-17 22:00:57 -04:00
Magnus HedemarkandGitHub 44809386a5 feat(ascii-city-engine): deep enrichment — street furniture, signage, dense Raleigh (#322)
* feat(ascii-city-engine): deep enrichment — street furniture, signage, dense Raleigh

Enriches the merged v0.1 skill with a dense, real-data streetscape.

Schema (backward-compatible): props gain optional label + provenance; new
optional signs layer for street-name text; buildings gain name/address/use.
world.schema.json admits signs; all v0.1 packs still validate.

Validator: per-kind prop glyph map with unknown-kind flag; sign validation;
signs included in content-bounds; v0.1 guards (isinstance crash-guard,
O(n^2) DoS caps) intact.

Engine: spatially-indexed prop billboards (signals, trees, crossings, transit
stops, bollards, benches, hydrants) depth-tested at terrain(x,y);
perspective-projected street-name sign text as an overlay pass; road
surface-material and lit ground styling; crosswalk bands; wayfinding HUD
naming the current street and the building faced. Reads spawn + first tile
from manifest.json.

Raleigh sample regenerated dense (same authoritative bbox): 159 buildings
(64 named, addresses, uses), 899 surfaces (86 named, surface/lit/lanes),
298 props across 7 kinds, 29 real street-name signs. 520K, under 2 MB.

Docs + evals: contract/engine-architecture/gis-ingestion/raleigh-poc updated
for the new layers and acceptance checks; 2 new evals (no fabricated signage;
props anchored to terrain).

Verified: validator 1410 PASS / 0 FAIL; broken fixture + AttributeError repro
exit 1; 5000-vertex DoS rejected in 31 ms; node --check OK; HTTP smoke 200
on engine/manifest/tile; validate-skills.rb 154 green; eval-coverage passes;
blocklist clean; headless-Chrome render shows readable in-world 'North
Wilmington Street' sign, signals, crosswalks, and on-street HUD.

AI-assisted contribution (Hermes Agent, spec-driven-development pipeline).

* fix(ascii-city-engine): address droid-review findings on PR #322

1. [P1] facingBuilding(): wrap the heading delta to [-pi,pi] before taking
   abs, so the Facing: HUD stops reporting a behind-the-camera building after
   the player turns past ~180 degrees.
2. [P2] buildIndices(): rasterize surface polyline edges into grid cells so
   long straight road segments register for surface styling and the On:
   HUD street name, instead of only indexing endpoint vertices.
3. [P1] validator: guard the new props kinds comprehension and the props/
   signs loops in all_points() against null, so 'props: null' or 'signs: null'
   produce a structured FAIL instead of an uncaught TypeError traceback.
4. [P3][security] validator: enforce the previously-declared
   MAX_FEATURES_PER_TILE (buildings+surfaces+props+signs) to keep the O(n^2)
   geometry and duplicate-ID paths bounded in aggregate.
5. [P3] engine: paint marked crossings as a distinct ground band (=) instead
   of a floating billboard, matching the documented crosswalk rendering.
6. [P3] eval: align prop-null-terrain expected_output with the render-time
   skip behavior actually implemented.

Verified: dense pack 1411/0 exit 0; broken/crash/dos/null packs all exit 1
with clean FAIL reports (no tracebacks); JS node --check OK; validate-skills
154 green; blocklist clean.

* fix(ascii-city-engine): address droid-review round 2 on PR #322

1. [P1] Engine: skip crossing props in the billboard loop so crosswalks
   render only as the documented ground band (no more floating '=' above
   each of the 168 crossings — a regression from the prior fix).
2. [P3] Engine: nearestStreet() filters to kind==='road' so the HUD 'On:'
   line names the street, not a named plaza/sidewalk ('Market Plaza' etc).
3. [P2] Validator: require each sign's text to be a recorded road name
   (collected from surfaces), enforcing the documented never-invented
   signage contract. A fabricated 'Made Up Avenue' sign now FAILs.
4. [P2][security] Validator: short-circuit the tile loop when
   MAX_FEATURES_PER_TILE is exceeded, and replace O(n^2) duplicate-id
   .count() scans with single-pass Counters, bounding the quadratic paths.

Verified: dense pack 1411/0 exit 0; fabricated-sign repro flags only the
injected sign and exits 1; broken/crash/dos/null packs all exit 1 with no
tracebacks; JS node --check OK; validate-skills 154 green; blocklist clean.

* fix(ascii-city-engine): address droid-review round 3 on PR #322

1. [P2] Validator: emit the signs rule unconditionally so a null/non-list
   'signs' value FAILs instead of passing silently (was gated on a truthy
   list check).
2. [P2] Validator: validate sign text against a pack-wide road-name set
   gathered across all tiles, so a sign in one tile may name a road whose
   surface lives in another (the documented multi-tile case).
3. [P2] Schema: require non-empty id/kind/text (minLength 1) on props and
   signs so the schema and validator agree on empty-string rejection.
4. [P3] Engine: drop dead signGrid/IX.key (the sign overlay iterates
   world.signs directly); cap edge-rasterization steps so a degenerate
   resolution (0) or pathologically long edge cannot spin unboundedly.
5. [P3] Validator: unknown prop kinds now pass with a reported fallback-'?'
   note instead of hard-failing, matching the documented fallback glyph and
   the engine's behavior.

Verified: dense pack 1411/0 exit 0; signs:null FAILs; fabricated sign FAILs;
multi-tile sign-to-road reference PASSes; broken/crash/dos/null all exit 1;
JS node --check OK; validate-skills 154 green; blocklist clean.

* fix(ascii-city-engine): address droid-review round 4 on PR #322

1. [P2] Engine: render props as once-per-frame perspective-projected one-cell
   billboards in an overlay pass (like signs) instead of during the ray march,
   eliminating the multi-row vertical streak a close prop produced. Verified in
   a live browser: signals/trees/crosswalks now render as discrete single cells.
2. [P3][security] Engine: bound aggregate rasterization in buildIndices() —
   cap surfaces (5000) and cells per surface (40000) so a crafted pack cannot
   freeze the tab on load (the validator's caps are not applied client-side).
3. [P2][security] Engine: guard sign text (missing/non-string text now skips
   the sign instead of throwing in the rAF loop and freezing the view).
4. [P3] Validator: still collect building/surface IDs for oversized tiles so
   pack-wide uniqueness detection runs even when the per-feature geometry checks
   are short-circuited (duplicates in an over-cap tile are no longer hidden).

Verified: dense pack 1411/0 exit 0; live browser render shows discrete props
(no streaks); broken/crash/dos/null/nullsign/fabric all exit 1, valid
multi-tile pack exit 0; JS node --check OK; validate-skills 154 green;
blocklist clean.

* fix(ascii-city-engine): address droid-review round 5 on PR #322

1. [P2][security] Engine: guard terrain() against non-finite x/y and guard the
   prop/sign overlay passes against non-array, non-object entries, so a
   malformed pack (missing y, signs=42, null entries) degrades gracefully
   instead of throwing in the rAF loop and freezing the view. Verified in a
   live browser: a pack with signs=42 + a prop missing y renders with the
   frame loop alive and no console errors beyond the favicon 404.
2. [P3] Engine: per-surface 'seen' set now dedupes cells across edges (was
   per-edge), eliminating the repeated linear includes() scan that made the
   rasterizer quadratic in the worst case.
3. [P3] Engine: raise the per-edge step cap to 20000 since the per-surface
   cell cap bounds total work, so long edges are fully sampled at the 2-5 m
   resolutions raleigh-poc.md recommends (fixes road-styling drops).
4. [P3] Validator: lower MAX_FEATURES_PER_TILE to 50,000 (shipped pack is
   1,385), bounding the quadratic pair tests more tightly.
5. [P3] raleigh-poc: correct walkthrough step 3 — East Hargett sign is ~141 m
   behind the spawn, not ahead; only North Wilmington is ahead. HUD count
   guards signs/props as arrays.

Verified: dense pack 1411/0 exit 0; broken/crash/dos/null/nullsign/fabric all
exit 1, valid multi-tile pack exit 0; malformed-pack live render survives;
JS node --check OK; validate-skills 154 green; blocklist clean.

* fix(ascii-city-engine): address droid-review round 6 on PR #322

1. [P1] Engine: props/signs overlay passes now use the corrected perpendicular
   distance (d*cos(ray_angle-heading)) for row projection, distance scaling,
   and the depth test — matching the ray march — so FOV-edge objects project to
   the right row and no longer falsely occlude or poison later depth tests.
2. [P2][security] Engine: terrain() guards malformed terrain metadata (missing
   terrain/resolution, non-positive resolution, missing origin, null elevations),
   so a crafted pack degrades to a clean error instead of freezing the tab.
   Verified live: a resolution-0/null-elevations pack shows 'Cannot load...'
   with no page errors.
3. [P3] raleigh-poc: walkthrough step 3 corrected — W/S only translate, so a
   167-deg-off sign needs A/D rotation, not 'hold S'.
4. [P3][security] Validator: all_points() guards buildings/surfaces/props/signs
   against truthy non-iterables (e.g. props=42), matching the other null guards,
   so malformed packs report structured FAIL instead of an uncaught TypeError.

Verified: dense pack 1411/0 exit 0; crash/dos/null/nullsign/fabric/props42/
broken all exit 1 (no tracebacks); valid multi-tile exit 0; malformed-terrain
live render shows clean error, no freeze; JS node --check OK; validate-skills
154 green; blocklist clean.

* fix(ascii-city-engine): address droid-review round 7 on PR #322

1. [P2] Engine: spatial-index buildings (footprint bbox -> grid cells) so the
   render loop and collision test find nearby buildings in O(nearby) instead of
   scanning the whole O(buildings) list per ray sample. Browser-measured frame
   cost dropped ~62ms (16 FPS) to 12.5ms mean (~80 FPS) on the dense pack.
2. [P2][security] Engine: terrain() guards null/ragged elevation rows, so a
   pack with a null row degrades to a clean error instead of freezing the tab
   (live-verified: null-row pack shows 'Cannot load...', no page errors).
3. [P2][security] Engine: cap sign text at 80 chars in the overlay pass, so a
   pathological pack-supplied sign cannot drive an unbounded per-frame loop.
4. [P3] Validator: reference FALLBACK_GLYPH constant (was dead) in the
   unknown-kinds report message.
5. [P3] raleigh-poc: fix stale expected validator tail (was 30/25; actual is
   159/899, rules_passed=1411).

Verified: dense pack 1411/0 exit 0; crash/dos/null/nullsign/fabric/props42/
broken all exit 1, valid multi-tile exit 0; null-row pack shows clean error,
no freeze; ~80 FPS browser-measured on dense pack; JS node --check OK;
validate-skills 154 green; blocklist clean.

* fix(ascii-city-engine): address droid-review round 8 on PR #322

1. [P1][security] Engine: bound the building spatial-index rasterization with
   MAX_BUILDING_PTS (2000) and MAX_BUILDING_CELLS (40000) and require >=3 finite
   footprint points, so a ~100-byte crafted footprint cannot drive a ~1e10-
   iteration synchronous hang on load (the surface rasterizer's cap, applied
   to the building index I added in round 7).
2. [P2][security] Engine: facingBuilding() filters footprints to finite points
   before reducing, so a building with a null element in its footprint no
   longer throws in the rAF loop on frame 1.
3. [P2][security] Engine: collides() and pointNearPolyline() filter footprints/
   polylines to valid array points before edge tests, so null footprint points
   no longer throw once the player enters those cells.
4. [P3] Validator: correct the feature-cap comment to 'buildings + surfaces +
   props + signs combined' (signs were already counted).

Verified: dense pack 1411/0 exit 0; ~85 FPS browser-measured (perf fix intact);
badfoot pack (null-point + missing-footprint buildings) renders with zero page
errors and frame loop alive; crash/dos/null/nullsign/fabric/props42/broken all
exit 1, valid multi-tile exit 0; JS node --check OK; validate-skills 154 green;
blocklist clean.
2026-08-16 05:51:25 -04:00
Magnus HedemarkandGitHub b6a96eb22e feat: add ascii-city-engine skill (#321)
* feat: add ascii-city-engine skill

New skill teaching portable first-person colored-ASCII city engines and
small GIS-derived city packs:

- references/engine-architecture.md: terrain height function, ground-
  attached pedestrian physics (feet_z=terrain(x,y), step/slope limits,
  building-footprint collision with wall sliding), fisheye-corrected
  raycast-to-ASCII pipeline, glyph density ladder, deterministic color.
- references/city-provider-contract.md: manifest + world-tile semantics,
  single-height-per-column v1 limit, reserved surface-graph extension.
- references/gis-ingestion.md: USGS 3DEP/OSM/municipal source classes,
  meter-CRS reprojection, unit checks, 3.2 m/floor height fallback,
  provenance/confidence recording.
- references/raleigh-poc.md: numeric downtown bbox, named sources with
  URLs, acquire/convert/validate commands, 4 human acceptance checks.
- templates/: city-pack-manifest + world JSON Schemas.
- scripts/validate-city-pack.py: pure-stdlib offline validator (78 rules).
- assets/raleigh-downtown-sample/: committed coarse pack (30 real OSM
  buildings, 25 road/path surfaces, 78x64 10 m terrain) <= 64K.
- assets/ascii-city-engine.html: dependency-free Canvas 2D engine.
- evals/evals.json: 6 schema-valid cases incl. runtime-specificity and
  large-GIS-commit refusal boundaries.
- README.md catalog entry.

AI-assisted contribution (Hermes Agent, spec-driven-development pipeline).

* chore: regenerate claude marketplace for ascii-city-engine

* chore: regenerate codex plugin and llms.txt for ascii-city-engine

* fix(ascii-city-engine): address droid-review findings on PR #321

1. [P2] Engine scaffold now reads manifest.json for spawn + first tile
   instead of hardcoding (315,385) — restores pack interchangeability.
2. [P2] Validator all_points() guards isinstance(dict) so structurally
   invalid tiles report FAIL instead of crashing with AttributeError.
3. [P2] raleigh-poc acceptance walk: correct duration/elevation math
   (~25s/~100m to ~100.9m at (315,505); ~95s to north edge ~103.0m).
4. [P3] known-limitations: match committed data — 5/30 explicit OSM
   height (0.88), 25 floor-estimated (0.72), not ~26%/0.55/0.35.
5. [P3] bbox: document tangent-plane 632x779m vs normalized 630x770m
   working extent instead of asserting 630x770 as the conversion result.
6. [P3][security] cap polygon vertices (2000), elevation cells (4M),
   feature count to prevent O(n^2) CPU-exhaustion on crafted packs.

Verified: sample pack 79/79 PASS exit 0; broken fixture exit 1; droid
AttributeError repro now FAILs cleanly; 5000-vertex footprint rejected
in 58ms; node --check OK; validate-skills.rb 154 green; blocklist clean.
2026-08-15 21:13:11 -04:00
Magnus HedemarkandGitHub cc2752111b Merge pull request #320 from magnus919/ci/run-epub-tests
ci(validate): run epub skill tests with their dependencies
2026-08-14 23:53:47 -04:00