Skip to content

feat(docs): import versioned HubSpot docs and module catalog (ADR-065) - #724

Draft
seanspeaks wants to merge 4 commits into
nextfrom
feat/module-docs-publishing
Draft

seanspeaks wants to merge 4 commits into
nextfrom
feat/module-docs-publishing

Conversation

@seanspeaks

@seanspeaks seanspeaks commented Oct 25, 2026 •

Copy link
Copy Markdown
Contributor

Module docs currently have no dependable relationship to published package versions. This adds the ADR-065 receiver and a static module directory, with HubSpot as the sole pilot.

The receiver accepts an allowlisted package/version, retrieves the npm-embedded docs bundle, verifies sha512 package integrity and metadata, and builds immutable versioned pages, GitBook navigation and catalog JSON. A serialized aggregate docs PR replays pending releases from npm against current next; duplicate delivery is a no-op, conflicts fail, and older/prerelease versions cannot replace latest stable. Existing HubSpot configuration links and unrelated navigation are preserved. The directory consumes the same records and starts empty until a real bundled release is imported.

Validation: 14 focused receiver/transport tests pass; the producer's real npm tarball imports successfully and reimports without changes in an isolated copy; directory rendering and search checked in the local browser using an unpublished preview; workflow YAML parsed; shared contract/registry files match across repositories.

Activation is intentionally pending: merge the paired producer change, bootstrap the dispatch workflow on default main, configure the GitHub App/secret/variable, require the docs check, enable MODULE_DOCS_ENABLED in the module library, and publish a new HubSpot release. See tools/module-docs/README.md for the exact sequence. No package has been published and no GitBook or Netlify publication has been verified. Docs revisions and a live GitBook preview remain outside this pilot's completed checks.

Tooling commits and generated docs commits use [skip release] to keep npm publication separate from docs delivery while preserving contract checks.

Paired producer PR: friggframework/api-module-library#239. Both focused documentation contract workflows are green; the general Frigg CI is still pending.

@netlify

netlify Bot commented Oct 25, 2026 •

Copy link
Copy Markdown

✅ Deploy Preview for friggframework-org canceled.

Name Link
🔨 Latest commit 01016fd
🔍 Latest deploy log https://app.netlify.com/projects/friggframework-org/deploys/6add89561852fc13c5fd43b9

@sonarqubecloud

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
D Reliability Rating on New Code (required ≥ A)
C Security Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE


const repo = 'friggframework/frigg';
const branch = 'docs/module-releases';
const run = (program, args) => execFileSync(program, args, {encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe']}).trim();
await receive(JSON.parse(fs.readFileSync(process.env.GITHUB_EVENT_PATH, 'utf8')));
run('git', ['checkout', '-B', branch]);
run('git', ['add', '--', 'docs/SUMMARY.md', 'docs/api-modules', 'website/data/catalog']);
const diff = spawnSync('git', ['diff', '--cached', '--quiet']);
await receive(JSON.parse(fs.readFileSync(process.env.GITHUB_EVENT_PATH, 'utf8')));
run('git', ['checkout', '-B', branch]);
run('git', ['add', '--', 'docs/SUMMARY.md', 'docs/api-modules', 'website/data/catalog']);
const diff = spawnSync('git', ['diff', '--cached', '--quiet']);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants