Skip to content

Commit ba3e21d

Browse files
committed
Define sustainable open maintenance model
1 parent b10f2d6 commit ba3e21d

14 files changed

Lines changed: 305 additions & 10 deletions

File tree

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
name: Independent adoption pilot
2+
description: Report a documentation-only pilot in a new domain
3+
title: "Pilot: "
4+
body:
5+
- type: markdown
6+
attributes:
7+
value: |
8+
Thanks for testing the public golden path. Do not include secrets or proprietary source material.
9+
- type: input
10+
id: domain
11+
attributes:
12+
label: Domain
13+
description: What kind of reference did you build?
14+
validations:
15+
required: true
16+
- type: input
17+
id: environment
18+
attributes:
19+
label: Environment
20+
description: Operating system and Node.js version
21+
validations:
22+
required: true
23+
- type: input
24+
id: elapsed
25+
attributes:
26+
label: Hands-on time
27+
description: Exclude domain research and DNS work.
28+
validations:
29+
required: true
30+
- type: checkboxes
31+
id: tasks
32+
attributes:
33+
label: Completed tasks
34+
options:
35+
- label: Initialized a clean project
36+
- label: Replaced the example with a new domain
37+
- label: Validation passed
38+
- label: Build passed
39+
- label: Verification passed
40+
- label: Link checking passed
41+
- label: Inspected the site and JSON API
42+
- label: Deployed or documented why deployment was not applicable
43+
- type: textarea
44+
id: blockers
45+
attributes:
46+
label: Blockers and misleading instructions
47+
description: Include the command, observed result, and what you expected.
48+
validations:
49+
required: true
50+
- type: textarea
51+
id: understanding
52+
attributes:
53+
label: What does this project do?
54+
description: Explain it in your own words, including what it does not do.
55+
validations:
56+
required: true
57+
- type: dropdown
58+
id: reuse
59+
attributes:
60+
label: Would you use the result again?
61+
options:
62+
- "Yes"
63+
- "Maybe"
64+
- "No"
65+
validations:
66+
required: true

‎ADOPTION.md‎

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# Independent Adoption Pilot
2+
3+
## Purpose
4+
5+
The adoption gate measures whether Knowledge-as-Code transfers to a new maintainer and domain without live interpretation from its author. It is a usability and product-fit test, not a promotion exercise.
6+
7+
Internal portfolio deployments, copied demos, repository stars, page views, and maintainer-led walkthroughs do not pass this gate.
8+
9+
## Pilot participant
10+
11+
The participant should be technically comfortable with Git, Markdown, YAML, and Node.js but should not have previously worked in this repository. They should bring a real reference domain with at least two stable concepts, one grouping or framework, one source authority, and one mapping.
12+
13+
## Rules
14+
15+
- Start from the public README and a clean checkout.
16+
- Do not receive live setup help from the maintainer.
17+
- Record questions and blockers as they occur instead of working around them silently.
18+
- Do not use the canonical security example as the pilot domain.
19+
- Stop if the process would require publishing confidential or regulated information.
20+
21+
## Tasks
22+
23+
1. Decide from the README whether the tool fits the domain.
24+
2. Create a clean project with `scripts/init.js`.
25+
3. Rename the four entity roles in plain domain language.
26+
4. Replace the example with at least two primaries, one container, one authority, and one secondary mapping.
27+
5. Attach an HTTPS evidence source and a truthful `last_verified` date.
28+
6. Run validation, build, verification, and internal link checking.
29+
7. Inspect the generated site and JSON API.
30+
8. Deploy to a temporary static URL or document why deployment is out of scope.
31+
9. File a pilot report using the GitHub issue template.
32+
33+
## Pass criteria
34+
35+
A pilot passes when:
36+
37+
- the participant correctly explains what the generator does and does not do
38+
- the initialized repository contains no canonical landing-site material
39+
- all required commands exit zero without source-code changes
40+
- the participant can trace a generated page and JSON record back to its source file and evidence
41+
- no live maintainer intervention is needed
42+
- setup through local inspection takes no more than 90 minutes, excluding domain research and DNS
43+
- every blocker and misleading instruction is captured
44+
45+
Deployment may be marked not applicable when organizational policy prevents it. All other criteria remain required.
46+
47+
## Decision rules
48+
49+
- One passing pilot establishes basic external transferability.
50+
- Three passing pilots in distinct domains establish a repeatable supported path.
51+
- A failure changes documentation or the golden path before another outreach attempt.
52+
- Repeated requests from three independent pilots may justify a core feature. One-off needs remain extensions.
53+
- Results are reported as pilots, not generalized adoption claims.
54+
55+
## Pilot report
56+
57+
Record the domain, environment, elapsed hands-on time, completed tasks, command output, blockers, unexpected concepts, and whether the participant would use the result again. Do not include secrets or proprietary source material.

‎CHANGELOG.md‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ pattern.
2525
- Expanded deterministic verification to fail on missing reviews, invalid or future dates, mapping gaps, and required evidence metadata.
2626
- Added a provider-independent external verifier contract using an explicit executable and JSONL input/output, with no shell or source-file mutation.
2727
- Re-verified the worked example against current ISO and NIST primary sources, corrected unsupported claims, and replaced the ambiguous data-quality mapping with information integrity.
28+
- Documented the internal-first operating model, bounded maintenance policy, security scope, viable open-repository end state, and independent adoption pilot gate.
29+
- Added a structured GitHub issue form for independent pilot reports.
2830

2931
## [1.0.2] — 2026-06-12
3032

‎CONTRIBUTING.md‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
This project follows a zero-dependency, config-driven approach. All domain-specific settings live in `project.yml`, and all scripts use only Node.js built-ins.
44

5+
Read [MAINTENANCE.md](MAINTENANCE.md) before proposing a feature. Reproducible defects in the supported golden path take priority over maintenance-surface expansion. New adopters can report a documentation-only trial through [ADOPTION.md](ADOPTION.md).
6+
57
## Adding Entities
68

79
### 1. Create the Markdown File

‎INTENT.md‎

Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
# Intent
2+
3+
## Status
4+
5+
Knowledge-as-Code is an internal-first open utility maintained by PAICE.work PBC. It is used inside the PAICE and Snap Synapse portfolios and published under MIT so others can inspect, reuse, and improve it.
6+
7+
The project is not pursuing broad developer mindshare as an end in itself. Public adoption is useful when it demonstrates that the generator transfers to a new domain without maintainer interpretation.
8+
9+
## Purpose
10+
11+
Maintain a small, portable generator for evidence-backed structured references that need:
12+
13+
- Git-tracked source files readable without proprietary tooling
14+
- a configurable Primary, Container, Authority, and Secondary entity model
15+
- deterministic validation, drift detection, and reproducible output
16+
- a static human-readable site and JSON API from the same source
17+
- an optional local MCP interface
18+
19+
## Intended users
20+
21+
The narrow primary audience is a technically capable maintainer who owns a reference dataset, needs evidence and review dates to remain visible, and wants to publish without a database or hosted application runtime.
22+
23+
The project is a poor fit for collaborative editing by nontechnical teams, transactional applications, high-volume ingestion, or knowledge domains without a stable ontology.
24+
25+
## Operating model
26+
27+
- Internal portfolio use funds the maintenance floor.
28+
- The clean initializer is the supported adoption path.
29+
- The example is a testable teaching fixture, not an authoritative security reference.
30+
- Public support is best effort with no response-time commitment.
31+
- Correctness, security, portability, and the supported golden path take priority over feature breadth.
32+
- Integrations belong behind documented provider-independent contracts.
33+
34+
## Viable open-repository end state
35+
36+
The repository is sustainable when it remains useful internally even if external adoption is zero, while an independent user can still understand, initialize, verify, build, and deploy it from public documentation alone.
37+
38+
A mature end state has:
39+
40+
- one stable 1.x generator and initializer
41+
- zero required runtime dependencies beyond supported Node.js
42+
- a bounded compatibility and security policy
43+
- reproducible tests for the public golden path
44+
- a small release surface driven by internal needs, security findings, and independently reproduced user problems
45+
- documented extension contracts instead of bundled vendor integrations
46+
- no implied service-level agreement, community roadmap, or obligation to accept features
47+
48+
## Adoption evidence
49+
50+
Repository traffic, stars, social engagement, and maintainer-assisted demos are weak signals. The meaningful gate is an external pilot completed without live maintainer help. See `ADOPTION.md`.
51+
52+
Until that gate is passed, claims should say the project is used internally and available for external reuse. They should not imply independent adoption.
53+
54+
## Recalibration gates
55+
56+
- If the initializer cannot create a working project from a clean checkout, stop feature work and restore the golden path.
57+
- If internal users stop using the generator, reassess whether the repository should enter maintenance-only status.
58+
- If three independent pilots complete the golden path and request the same extension, consider it for the core.
59+
- If an extension benefits only one deployment, keep it outside the core behind a documented contract.
60+
- If maintenance cost exceeds internal value, preserve the last working release and archive the repository transparently.
61+
62+
## Non-goals
63+
64+
- Becoming a general-purpose knowledge-management platform
65+
- Bundling an AI provider or hosted verification service
66+
- Maintaining domain data on behalf of downstream users
67+
- Optimizing for stars, launch traffic, or speculative integrations
68+
- Promising a fixed release cadence
69+
70+
## Exceptions to Repo Standards
71+
72+
None currently recorded.
73+
74+
## Changelog
75+
76+
- 2026-07-21: Recalibrated the project from adoption-seeking template to internal-first open utility; made independent transfer the public adoption gate.

‎MAINTENANCE.md‎

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
# Maintenance
2+
3+
## Support status
4+
5+
Knowledge-as-Code is actively used internally and maintained as an open utility. Public support is best effort. There is no guaranteed response time, release schedule, or commitment to implement requested features.
6+
7+
## Supported path
8+
9+
The maintained public path is:
10+
11+
1. Run the initializer from a clean checkout.
12+
2. Edit `project.yml` and the generated `data/` tree.
13+
3. Run validation, build, verification, evals where included, and link checking.
14+
4. Deploy the generated `docs/` artifact with the included GitHub Pages workflow or another static host.
15+
5. Optionally run the local MCP server over standard input and output.
16+
17+
The current supported runtime is Node.js 18 or later on macOS and Linux. Windows may work but is not part of the tested support promise.
18+
19+
## Maintenance priorities
20+
21+
Work is prioritized in this order:
22+
23+
1. Security vulnerabilities and unsafe generated output
24+
2. Incorrect validation or evidence results
25+
3. Breakage in the initializer, build, or deployment golden path
26+
4. Reproducibility and portability defects
27+
5. Documentation failures reproduced by an independent user
28+
6. Features needed by active internal deployments
29+
7. Other enhancements when maintainer capacity permits
30+
31+
## Compatibility
32+
33+
Patch releases may fix correctness, security, documentation, and generated output. Minor releases may add backward-compatible configuration or output. Breaking configuration, API, route, or MCP changes require a major version or a documented migration path.
34+
35+
Generated HTML appearance is not a stable API. JSON API fields, entity IDs, routes, configuration keys, and MCP tool contracts are compatibility surfaces.
36+
37+
## Contributions
38+
39+
Bug reports with a minimal reproduction are the most useful public contribution. Small fixes that preserve the zero-dependency core and supported path are welcome. A pull request may be correct and still remain unmerged if it expands the permanent maintenance surface beyond current capacity.
40+
41+
Domain-specific adapters and model integrations should generally live outside this repository and use the external verifier contract.
42+
43+
## Releases and deprecation
44+
45+
There is no fixed release cadence. Releases are cut when a coherent set of tested changes is ready. A deprecated compatibility surface should remain available for at least one minor release when practical and be called out in the changelog.
46+
47+
If the project becomes maintenance-only or archived, the README will say so plainly. The last working release and MIT license will remain available.
48+
49+
## Security
50+
51+
See `SECURITY.md` for private reporting and the supported security scope.

‎MANIFEST.yaml‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ files:
4747

4848
- path: README.md
4949
role: protocol
50-
hash: sha256:5058024954c44dc3ea425f43ee3957ef5f7264f9357cb10808a512979e54cca5
50+
hash: sha256:f47e4560f3e9f15a7d6d9f934040bb597d662caeace3324f78768a7717e2ffd8
5151
note: Template overview
5252

5353
- path: assistant-guide.txt
@@ -77,7 +77,7 @@ files:
7777

7878
- path: scripts/init.js
7979
role: tooling
80-
hash: sha256:fd643cf6081cc4aaebf1d3ce6d673a0582de1f74cbf7f6222cd8a811f39bc9da
80+
hash: sha256:ad1fa4e19c0b6bf480b3d6782265268f4a70a00c84a50108c99576d39d3e7a65
8181
note: Clean-project initializer
8282

8383
- path: scripts/validate.js

‎README.md‎

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,13 @@ A zero-dependency generator for evidence-backed reference sites. Keep structured
44

55
This repository is an internal-first open utility maintained by [PAICE.work](https://paice.work/) PBC. It supports active reference projects inside the PAICE and Snap Synapse portfolios. Public issues and contributions are welcome on a best-effort basis.
66

7+
## Project status
8+
9+
- [Intent and viable end state](INTENT.md)
10+
- [Maintenance and compatibility](MAINTENANCE.md)
11+
- [Independent adoption pilot](ADOPTION.md)
12+
- [Security policy](SECURITY.md)
13+
714
## Who this is for
815

916
Maintainers of public registries, comparison databases, compliance maps, and other structured references where claims need sources, review dates, and machine-readable output.
@@ -194,7 +201,7 @@ node scripts/eval.js # Run smoke, link, API, parser, MCP, and docs evals (
194201
## Architecture
195202

196203
- **File-over-App** — data in markdown files, not a database
197-
- **Zero dependencies** — no npm install, no supply chain risk
204+
- **Zero dependencies** — no npm install and no third-party runtime packages in the core
198205
- **Bespoke static generation** — the build script _is_ the specification
199206
- **GitOps** — Git is the single source of truth
200207
- **Defensive output encoding** — data is treated as untrusted when emitted into HTML, CSS, URLs, or inline scripts
@@ -277,6 +284,8 @@ Two fixed tools are always present regardless of config: `get_matrix` and `get_m
277284

278285
See [VERIFICATION.md](VERIFICATION.md) for the deterministic checks, CI integration, and extension contract.
279286

287+
External transferability has a documented evidence gate. If you are evaluating the generator for a real new domain, follow [ADOPTION.md](ADOPTION.md) and submit the included pilot report instead of treating repository traffic or a maintainer-led demo as proof of adoption.
288+
280289
## Ecosystem
281290

282291
Knowledge as Code is part of a broader set of open standards:

‎SECURITY.md‎

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
# Security Policy
2+
3+
## Supported versions
4+
5+
Security fixes target the latest tagged release and the `main` branch. Older releases may receive guidance but are not guaranteed patches.
6+
7+
## Reporting a vulnerability
8+
9+
Report vulnerabilities privately through [GitHub Security Advisories](https://github.com/snapsynapse/knowledge-as-code-template/security/advisories/new). Do not open a public issue for an unpatched vulnerability.
10+
11+
Include the affected commit or version, reproduction steps, impact, and any proposed mitigation. Do not include real secrets or sensitive third-party data.
12+
13+
There is no guaranteed response-time SLA. The maintainer will assess credible reports as capacity permits and will prioritize issues that can execute code, escape intended output boundaries, expose secrets, or produce unsafe generated content.
14+
15+
## Scope
16+
17+
The security scope includes the initializer, parsers, validator, generator, verifier, link checker, MCP server, and included GitHub Actions workflows.
18+
19+
Domain accuracy, third-party source availability, downstream hosting configuration, external verifier implementations, and content added by forks are outside the repository's security guarantee.

0 commit comments

Comments
 (0)